diff options
| author | Akshat Kumar <seed@mail.nanosouffle.net> | 2012-05-29 12:32:42 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2012-05-29 12:32:42 -0400 |
| commit | 154c84cdacd00a12da7ec44fa34a5c7d01823827 (patch) | |
| tree | adadef9ac17c5fbe9fcaa850439f42f432a149c6 /src/cmd/ld | |
| parent | fefae6eed1df88397b4a53ed932e3cf3b32345ad (diff) | |
| download | go-154c84cdacd00a12da7ec44fa34a5c7d01823827.tar.xz | |
cmd/6l: Fixes for 64-bit Plan 9
Plan 9 versions for amd64 have 2 megabyte pages.
This also fixes the logic for 32-bit vs 64-bit Plan 9,
making 64-bit the default, and adds logic to generate
a symbols table.
R=golang-dev, rsc, rminnich, ality, 0intro
CC=golang-dev, john
https://golang.org/cl/6218046
Diffstat (limited to 'src/cmd/ld')
| -rw-r--r-- | src/cmd/ld/data.c | 2 | ||||
| -rw-r--r-- | src/cmd/ld/symtab.c | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/cmd/ld/data.c b/src/cmd/ld/data.c index 4eff24024e..1f64a84708 100644 --- a/src/cmd/ld/data.c +++ b/src/cmd/ld/data.c @@ -1058,7 +1058,7 @@ address(void) segdata.filelen = 0; if(HEADTYPE == Hwindows) segdata.fileoff = segtext.fileoff + rnd(segtext.len, PEFILEALIGN); - if(HEADTYPE == Hplan9x32) + if(HEADTYPE == Hplan9x64 || HEADTYPE == Hplan9x32) segdata.fileoff = segtext.fileoff + segtext.filelen; data = nil; noptr = nil; diff --git a/src/cmd/ld/symtab.c b/src/cmd/ld/symtab.c index 359a658e74..c43051a392 100644 --- a/src/cmd/ld/symtab.c +++ b/src/cmd/ld/symtab.c @@ -125,7 +125,7 @@ asmelfsym(void) static void putplan9sym(Sym *x, char *s, int t, vlong addr, vlong size, int ver, Sym *go) { - int i; + int i, l; USED(go); USED(ver); @@ -144,6 +144,11 @@ putplan9sym(Sym *x, char *s, int t, vlong addr, vlong size, int ver, Sym *go) case 'z': case 'Z': case 'm': + l = 4; + if(HEADTYPE == Hplan9x64 && !debug['8']) { + lputb(addr>>32); + l = 8; + } lputb(addr); cput(t+0x80); /* 0x80 is variable length */ @@ -164,7 +169,7 @@ putplan9sym(Sym *x, char *s, int t, vlong addr, vlong size, int ver, Sym *go) cput(s[i]); cput(0); } - symsize += 4 + 1 + i + 1; + symsize += l + 1 + i + 1; break; default: return; |
