]> Cypherpunks repositories - gostls13.git/commitdiff
ld: ignore stab symbols
authorRuss Cox <rsc@golang.org>
Fri, 17 Dec 2010 18:03:43 +0000 (10:03 -0800)
committerRuss Cox <rsc@golang.org>
Fri, 17 Dec 2010 18:03:43 +0000 (10:03 -0800)
Makes 6l work better on OS X 10.5.

Fixes #1352.
Fixes #1353.

R=r
CC=golang-dev
https://golang.org/cl/3661042

src/cmd/ld/ldmacho.c

index ba243245bfe3469717af6daaabe0a22b7b3258d6..f6095fb33496e49594a6acbccd26f8c351650945 100644 (file)
@@ -32,6 +32,8 @@ enum {
        MACHO_FAKE_GOTPCREL = 100,      // from macho.h
        
        N_EXT = 0x01,
+       N_TYPE = 0x1e,
+       N_STAB = 0xe0,
 };
 
 typedef struct MachoObj MachoObj;
@@ -596,6 +598,8 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn)
        for(i=0; i<symtab->nsym; i++) {
                int v;
                sym = &symtab->sym[i];
+               if(sym->type&N_STAB)
+                       continue;
                // TODO: check sym->type against outer->type.
                name = sym->name;
                if(name[0] == '_' && name[1] != '\0')
@@ -632,7 +636,7 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn)
                        Prog *p;
 
                        if(s->text != P)
-                               diag("%s: duplicate definition of %s", pn, s->name);
+                               diag("%s sym#%d: duplicate definition of %s", pn, i, s->name);
                        // build a TEXT instruction with a unique pc
                        // just to make the rest of the linker happy.
                        // TODO: this is too 6l-specific ?