Commit 8ec6f7cd authored by Russ Cox's avatar Russ Cox

ld: ignore stab symbols

Makes 6l work better on OS X 10.5.

Fixes #1352.
Fixes #1353.

R=r
CC=golang-dev
https://golang.org/cl/3661042
parent 01464cf9
...@@ -32,6 +32,8 @@ enum { ...@@ -32,6 +32,8 @@ enum {
MACHO_FAKE_GOTPCREL = 100, // from macho.h MACHO_FAKE_GOTPCREL = 100, // from macho.h
N_EXT = 0x01, N_EXT = 0x01,
N_TYPE = 0x1e,
N_STAB = 0xe0,
}; };
typedef struct MachoObj MachoObj; typedef struct MachoObj MachoObj;
...@@ -596,6 +598,8 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn) ...@@ -596,6 +598,8 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn)
for(i=0; i<symtab->nsym; i++) { for(i=0; i<symtab->nsym; i++) {
int v; int v;
sym = &symtab->sym[i]; sym = &symtab->sym[i];
if(sym->type&N_STAB)
continue;
// TODO: check sym->type against outer->type. // TODO: check sym->type against outer->type.
name = sym->name; name = sym->name;
if(name[0] == '_' && name[1] != '\0') if(name[0] == '_' && name[1] != '\0')
...@@ -632,7 +636,7 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn) ...@@ -632,7 +636,7 @@ ldmacho(Biobuf *f, char *pkg, int64 len, char *pn)
Prog *p; Prog *p;
if(s->text != 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 // build a TEXT instruction with a unique pc
// just to make the rest of the linker happy. // just to make the rest of the linker happy.
// TODO: this is too 6l-specific ? // TODO: this is too 6l-specific ?
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment