diff options
author | Petter Rodhelind <petter.rodhelind@gmail.com> | 2020-01-14 11:41:08 +0100 |
---|---|---|
committer | Petter Rodhelind <petter.rodhelind@gmail.com> | 2020-01-14 11:41:08 +0100 |
commit | 02d7aa8915f9c3a3288dab01f321eb94ba219e3b (patch) | |
tree | f053238978479e408a2b83571443e132f30586ab /src/libmach/manglegcc3.c | |
parent | c0c9d8f883dfd3a7f5a74499d91bb95884b15873 (diff) | |
parent | 3d1382b98a502d0c34d5ba2c462396acc515016e (diff) | |
download | plan9port-02d7aa8915f9c3a3288dab01f321eb94ba219e3b.tar.gz plan9port-02d7aa8915f9c3a3288dab01f321eb94ba219e3b.tar.bz2 plan9port-02d7aa8915f9c3a3288dab01f321eb94ba219e3b.zip |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src/libmach/manglegcc3.c')
-rw-r--r-- | src/libmach/manglegcc3.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/src/libmach/manglegcc3.c b/src/libmach/manglegcc3.c index eca26eb1..c0e73758 100644 --- a/src/libmach/manglegcc3.c +++ b/src/libmach/manglegcc3.c @@ -34,14 +34,14 @@ demanglegcc3(char *s, char *buf) { char *p, *os; Gccstate state; - + state.nname = 0; os = s; /* mangled names always start with _Z */ if(s[0] != '_' || s[1] != 'Z') return s; s += 2; - + p = buf; if(!gccname(&s, &p, &state)){ if(strchr(os, '@') == nil) @@ -138,7 +138,7 @@ static struct { "rs", ">>", "rsh", "st", "sizeof", "sizeoftype", "sz", "sizeof", "sizeofexpr", - + 0,0,0 }; @@ -153,7 +153,7 @@ gccname(char **ps, char **pp, Gccstate *state) int i, n; char *os, *s, *t, *p; Gccstate nstate; - + s = *ps; os = s; p = *pp; @@ -170,7 +170,7 @@ gccname(char **ps, char **pp, Gccstate *state) goto suffix; } } - + /* basic types */ if((t = chartabsearch(typetab, *s)) != nil){ s++; @@ -178,7 +178,7 @@ gccname(char **ps, char **pp, Gccstate *state) p += strlen(t); goto suffix; } - + switch(*s){ default: bad: @@ -245,7 +245,7 @@ gccname(char **ps, char **pp, Gccstate *state) p -= 2; s++; break; - + case 'P': /* pointer to */ s++; if(!gccname(&s, &p, state)) @@ -282,7 +282,7 @@ gccname(char **ps, char **pp, Gccstate *state) s += 2; break; } - + /* standard name */ if(*s == 't'){ strcpy(p, "std::"); @@ -300,7 +300,7 @@ gccname(char **ps, char **pp, Gccstate *state) *p++ = *s++; } break; - + case 'T': /* previously-seen type??? T0_ also T_*/ t = s; for(; *s != '_'; s++){ @@ -312,9 +312,9 @@ gccname(char **ps, char **pp, Gccstate *state) s++; memmove(p, t, s-t); p += s-t; - break; + break; } - + suffix: if(*s == 'I'){ /* template suffix */ @@ -336,4 +336,3 @@ suffix: *pp = p; return 1; } - |