mirror of
https://github.com/golang/go
synced 2024-11-24 21:10:04 -07:00
ld: fix Plan 9 symbol table
Static symbols were not being marked as such. I also made the 'z' symbols use the first byte of the name instead of an explicit NUL so that if the symbol table format is ever changed, the only place that would need updating is addhist(). R=rsc CC=golang-dev https://golang.org/cl/4366047
This commit is contained in:
parent
4f7fd3cb7f
commit
c7008f47ec
@ -140,29 +140,25 @@ void
|
||||
putplan9sym(Sym *x, char *s, int t, vlong addr, vlong size, int ver, Sym *go)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
switch(t) {
|
||||
case 'T':
|
||||
case 't':
|
||||
case 'L':
|
||||
case 'l':
|
||||
case 'D':
|
||||
case 'd':
|
||||
case 'B':
|
||||
case 'b':
|
||||
if(ver)
|
||||
t += 'a' - 'A';
|
||||
case 'a':
|
||||
case 'p':
|
||||
|
||||
case 'f':
|
||||
case 'z':
|
||||
case 'Z':
|
||||
|
||||
case 'm':
|
||||
lputb(addr);
|
||||
cput(t+0x80); /* 0x80 is variable length */
|
||||
|
||||
|
||||
if(t == 'z' || t == 'Z') {
|
||||
cput(0);
|
||||
cput(s[0]);
|
||||
for(i=1; s[i] != 0 || s[i+1] != 0; i += 2) {
|
||||
cput(s[i]);
|
||||
cput(s[i+1]);
|
||||
@ -172,19 +168,17 @@ putplan9sym(Sym *x, char *s, int t, vlong addr, vlong size, int ver, Sym *go)
|
||||
i++;
|
||||
} else {
|
||||
/* skip the '<' in filenames */
|
||||
if(t=='f')
|
||||
if(t == 'f')
|
||||
s++;
|
||||
|
||||
for(i=0; s[i]; i++)
|
||||
cput(s[i]);
|
||||
cput(0);
|
||||
}
|
||||
|
||||
symsize += 4 + 1 + i + 1;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user