aboutsummaryrefslogtreecommitdiff
path: root/src/libmach/sym.c
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-11-28 00:40:04 +0000
committerrsc <devnull@localhost>2005-11-28 00:40:04 +0000
commit7d6f5677c1ce9bdce141dea16364478216d0f4cc (patch)
tree03daffa36e5693eed2573b05816a0b1bf6a3db82 /src/libmach/sym.c
parent689be541258e9e701a600d6bd2fc3e5241726867 (diff)
downloadplan9port-7d6f5677c1ce9bdce141dea16364478216d0f4cc.tar.gz
plan9port-7d6f5677c1ce9bdce141dea16364478216d0f4cc.tar.bz2
plan9port-7d6f5677c1ce9bdce141dea16364478216d0f4cc.zip
name mangling, process control
Diffstat (limited to 'src/libmach/sym.c')
-rw-r--r--src/libmach/sym.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/libmach/sym.c b/src/libmach/sym.c
index 4730fdc1..c3d05191 100644
--- a/src/libmach/sym.c
+++ b/src/libmach/sym.c
@@ -491,6 +491,8 @@ symclose(Fhdr *hdr)
Symbol*
_addsym(Fhdr *fp, Symbol *sym)
{
+ char *t;
+ static char buf[65536];
Symbol *s;
if(fp->nsym%128 == 0){
@@ -502,6 +504,12 @@ _addsym(Fhdr *fp, Symbol *sym)
if(machdebug)
fprint(2, "sym %s %c %L\n", sym->name, sym->type, sym->loc);
sym->fhdr = fp;
+ t = demangle(sym->name, buf, 1);
+ if(t != sym->name){
+ sym->name = strdup(t);
+ if(sym->name == nil)
+ return nil;
+ }
s = &fp->sym[fp->nsym++];
*s = *sym;
return s;