diff options
| author | Russ Cox <rsc@golang.org> | 2010-12-10 11:32:48 -0800 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2010-12-10 11:32:48 -0800 |
| commit | 4324a31376c30aea31bba688bbc674dcc24c7413 (patch) | |
| tree | b3662f7dfa8a46b623bc4418956cdf97119ac07f /src/cmd/nm/nm.c | |
| parent | 71bd053ada2ec6ac5c8d37855e772ca7ec7fba04 (diff) | |
| download | go-4324a31376c30aea31bba688bbc674dcc24c7413.tar.xz | |
nm: silently ignore .o files in .a files
Update #1334.
R=r
CC=golang-dev
https://golang.org/cl/3553041
Diffstat (limited to 'src/cmd/nm/nm.c')
| -rw-r--r-- | src/cmd/nm/nm.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/cmd/nm/nm.c b/src/cmd/nm/nm.c index e57492d184..845b6c773a 100644 --- a/src/cmd/nm/nm.c +++ b/src/cmd/nm/nm.c @@ -126,31 +126,34 @@ void doar(Biobuf *bp) { int offset, size, obj; - char membername[SARNAME]; + char name[SARNAME]; multifile = 1; for (offset = Boffset(bp);;offset += size) { - size = nextar(bp, offset, membername); + size = nextar(bp, offset, name); if (size < 0) { error("phase error on ar header %d", offset); return; } if (size == 0) return; - if (strcmp(membername, symname) == 0) + if (strcmp(name, symname) == 0) continue; obj = objtype(bp, 0); if (obj < 0) { + // perhaps foreign object + if(strlen(name) > 2 && strcmp(name+strlen(name)-2, ".o") == 0) + return; error("inconsistent file %s in %s", - membername, filename); + name, filename); return; } if (!readar(bp, obj, offset+size, 1)) { error("invalid symbol reference in file %s", - membername); + name); return; } - filename = membername; + filename = name; nsym=0; objtraverse(psym, 0); printsyms(symptr, nsym); |
