From 8ec6f7cd11ff9f376ef42a062295cd315ebc29af Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 17 Dec 2010 10:03:43 -0800 Subject: [PATCH] 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 --- src/cmd/ld/ldmacho.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cmd/ld/ldmacho.c b/src/cmd/ld/ldmacho.c index ba243245bf..f6095fb334 100644 --- a/src/cmd/ld/ldmacho.c +++ b/src/cmd/ld/ldmacho.c @@ -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; insym; 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 ? -- 2.50.0