summaryrefslogtreecommitdiff
path: root/src/liblink
diff options
context:
space:
mode:
authorShenghou Ma <minux@golang.org>2014-08-07 18:41:09 -0400
committerShenghou Ma <minux@golang.org>2014-08-07 18:41:09 -0400
commit4d0a2b27416e2cc87be30d198489d55db120d48b (patch)
tree957ba3922dcd9c44d6c127459c7454cc9d340096 /src/liblink
parent5c2185b02484d16637a42e0ae86fa240f8db316c (diff)
downloadgo-4d0a2b27416e2cc87be30d198489d55db120d48b.tar.gz
[dev.power64] liblink: handle $i64. symbols, add debug output for -S -v, show rel addend in hex for RISC arches
LGTM=rsc R=rsc, iant CC=golang-codereviews https://codereview.appspot.com/127770043
Diffstat (limited to 'src/liblink')
-rw-r--r--src/liblink/objfile.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/liblink/objfile.c b/src/liblink/objfile.c
index 22c9199d5..3b78571b7 100644
--- a/src/liblink/objfile.c
+++ b/src/liblink/objfile.c
@@ -138,6 +138,8 @@ writeobj(Link *ctxt, Biobuf *b)
edata = nil;
for(pl = ctxt->plist; pl != nil; pl = pl->link) {
for(p = pl->firstpc; p != nil; p = plink) {
+ if(ctxt->debugasm && ctxt->debugvlog)
+ print("obj: %p %P\n", p, p);
plink = p->link;
p->link = nil;
@@ -322,7 +324,10 @@ writesym(Link *ctxt, Biobuf *b, LSym *s)
name = "";
if(r->sym != nil)
name = r->sym->name;
- Bprint(ctxt->bso, "\trel %d+%d t=%d %s+%lld\n", (int)r->off, r->siz, r->type, name, (vlong)r->add);
+ if(ctxt->arch->thechar == '5' || ctxt->arch->thechar == '9')
+ Bprint(ctxt->bso, "\trel %d+%d t=%d %s+%llux\n", (int)r->off, r->siz, r->type, name, (vlong)r->add);
+ else
+ Bprint(ctxt->bso, "\trel %d+%d t=%d %s+%lld\n", (int)r->off, r->siz, r->type, name, (vlong)r->add);
}
}
@@ -725,7 +730,7 @@ rdsym(Link *ctxt, Biobuf *f, char *pkg)
s->type = SRODATA;
adduint32(ctxt, s, i32);
s->reachable = 0;
- } else if(strncmp(s->name, "$f64.", 5) == 0) {
+ } else if(strncmp(s->name, "$f64.", 5) == 0 || strncmp(s->name, "$i64.", 5) == 0) {
int64 i64;
i64 = strtoull(s->name+5, nil, 16);
s->type = SRODATA;