diff options
author | Andrew Gerrand <adg@golang.org> | 2010-02-04 12:46:11 -0800 |
---|---|---|
committer | Andrew Gerrand <adg@golang.org> | 2010-02-04 12:46:11 -0800 |
commit | ab79ced8589eb3cdec9840cc94103e11fcbace3b (patch) | |
tree | 4744df5e5c1416fce6d3f4c0367febee92cab60e | |
parent | 1c5339070df7255ad5c95f93b2787b843703d009 (diff) | |
download | go-ab79ced8589eb3cdec9840cc94103e11fcbace3b.tar.gz |
6l: move mapped symbol table lower in memory
Allows binary to run on some Linux system.
Fix for issue 365.
R=rsc
CC=golang-dev
http://codereview.appspot.com/199096
-rw-r--r-- | src/cmd/5l/asm.c | 2 | ||||
-rw-r--r-- | src/cmd/6l/asm.c | 2 | ||||
-rw-r--r-- | src/cmd/ld/lib.h | 3 | ||||
-rw-r--r-- | src/pkg/runtime/symtab.c | 7 |
4 files changed, 6 insertions, 8 deletions
diff --git a/src/cmd/5l/asm.c b/src/cmd/5l/asm.c index bc8b322ab..498e71b5a 100644 --- a/src/cmd/5l/asm.c +++ b/src/cmd/5l/asm.c @@ -68,7 +68,7 @@ asmb(void) int np; vlong va, fo, w, symo; int strtabsize; - vlong symdatva = 0x99LL<<24; + vlong symdatva = SYMDATVA; Optab *o; strtabsize = 0; diff --git a/src/cmd/6l/asm.c b/src/cmd/6l/asm.c index 00d7aca2e..d3f3e358b 100644 --- a/src/cmd/6l/asm.c +++ b/src/cmd/6l/asm.c @@ -439,7 +439,7 @@ asmb(void) int a, dynsym; uchar *op1; vlong vl, va, startva, fo, w, symo, elfsymo, elfstro, elfsymsize, machlink; - vlong symdatva = 0x99LL<<32; + vlong symdatva = SYMDATVA; ElfEhdr *eh; ElfPhdr *ph, *pph; ElfShdr *sh; diff --git a/src/cmd/ld/lib.h b/src/cmd/ld/lib.h index 7b08705af..c89322e38 100644 --- a/src/cmd/ld/lib.h +++ b/src/cmd/ld/lib.h @@ -28,6 +28,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. +// This magic number also defined in src/pkg/runtime/symtab.c in SYMCOUNTS +#define SYMDATVA 0x99LL<<24 + typedef struct Library Library; struct Library { diff --git a/src/pkg/runtime/symtab.c b/src/pkg/runtime/symtab.c index ac4f45ce1..51d572595 100644 --- a/src/pkg/runtime/symtab.c +++ b/src/pkg/runtime/symtab.c @@ -18,13 +18,8 @@ // TODO(rsc): Move this *under* the text segment. // Then define names for these addresses instead of hard-coding magic ones. -#ifdef _64BIT -#define SYMCOUNTS ((int32*)(0x99LL<<32)) // known to 6l -#define SYMDATA ((byte*)(0x99LL<<32) + 8) -#else -#define SYMCOUNTS ((int32*)(0x99LL<<24)) // known to 8l +#define SYMCOUNTS ((int32*)(0x99LL<<24)) // known to 6l, 8l; see src/cmd/ld/lib.h #define SYMDATA ((byte*)(0x99LL<<24) + 8) -#endif typedef struct Sym Sym; struct Sym |