diff options
author | rsc <devnull@localhost> | 2005-11-28 00:40:04 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-11-28 00:40:04 +0000 |
commit | 7d6f5677c1ce9bdce141dea16364478216d0f4cc (patch) | |
tree | 03daffa36e5693eed2573b05816a0b1bf6a3db82 /src/libmach/sym.c | |
parent | 689be541258e9e701a600d6bd2fc3e5241726867 (diff) | |
download | plan9port-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.c | 8 |
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; |