]> Cypherpunks repositories - gostls13.git/commitdiff
6l: move mapped symbol table lower in memory
authorAndrew Gerrand <adg@golang.org>
Thu, 4 Feb 2010 20:46:11 +0000 (12:46 -0800)
committerAndrew Gerrand <adg@golang.org>
Thu, 4 Feb 2010 20:46:11 +0000 (12:46 -0800)
Allows binary to run on some Linux system.

Fix for issue 365.

R=rsc
CC=golang-dev
https://golang.org/cl/199096

src/cmd/5l/asm.c
src/cmd/6l/asm.c
src/cmd/ld/lib.h
src/pkg/runtime/symtab.c

index bc8b322ab05097eca214382fc1769a4fd94b648d..498e71b5acf382478e05ac9302444cdd2111dbe0 100644 (file)
@@ -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;
index 00d7aca2e39e69e96b3df9975b0457b230b8719e..d3f3e358bfdeb4be29eafd8f270e1e4c1afc9ef1 100644 (file)
@@ -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;
index 7b08705af7e2c600494f8627553348f566a7b345..c89322e38d578af93c080ae147a1fdafd6fe6815 100644 (file)
@@ -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
 {
index ac4f45ce1e7d77c7a6fd26eeed7f731b97c3d58c..51d572595634a72d7e1f91354ff159fc51fb6c8f 100644 (file)
 
 // 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