Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!wuarchive!wugate!uunet!zephyr.ens.tek.com!orca!frip!andrew From: andrew@frip.WV.TEK.COM (Andrew Klossner) Newsgroups: gnu.g++.bug Subject: collect.c can't handle extended symbols Message-ID: <4428@orca.WV.TEK.COM> Date: 1 Sep 89 23:28:45 GMT Sender: nobody@orca.WV.TEK.COM Lines: 34 collect.c doesn't deal correctly with extended symbols in COFF object files, e.g., the output from 'gcc -g' or 'g++ -g0'. The loop: for (symindex = 0; symindex < symbols; symindex++ ) { SYMENT symbol; char *symbol_name; extern char *ldgetname(); ldtbread(ldptr, symindex, &symbol); ... } should instead look like this: symindex = 0; while (symindex < symbols) { SYMENT symbol; char *symbol_name; extern char *ldgetname(); ldtbread(ldptr, symindex, &symbol); ... symindex += 1 + symbol.n_numaux; } so that "auxiliary" symbol table entries will be skipped. This is necessary because ldgetname can core-dump on an auxiliary entry. -=- Andrew Klossner (uunet!tektronix!frip.WV.TEK!andrew) [UUCP] (andrew%frip.wv.tek.com@relay.cs.net) [ARPA]