fix various bugs for sunos
This commit is contained in:
parent
20b33daf59
commit
929ba9b98f
6 changed files with 13 additions and 13 deletions
|
|
@ -68,7 +68,7 @@ crackelf(int fd, Fhdr *fp)
|
||||||
if(elfmap(elf, s1) >= 0 && elfmap(elf, s2) >= 0){
|
if(elfmap(elf, s1) >= 0 && elfmap(elf, s2) >= 0){
|
||||||
fp->stabs.stabbase = s1->base;
|
fp->stabs.stabbase = s1->base;
|
||||||
fp->stabs.stabsize = s1->size;
|
fp->stabs.stabsize = s1->size;
|
||||||
fp->stabs.strbase = s2->base;
|
fp->stabs.strbase = (char*)s2->base;
|
||||||
fp->stabs.strsize = s2->size;
|
fp->stabs.strsize = s2->size;
|
||||||
fp->stabs.e2 = elf->hdr.e2;
|
fp->stabs.e2 = elf->hdr.e2;
|
||||||
fp->stabs.e4 = elf->hdr.e4;
|
fp->stabs.e4 = elf->hdr.e4;
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ crackmacho(int fd, Fhdr *fp)
|
||||||
if(i < m->ncmd){
|
if(i < m->ncmd){
|
||||||
fp->stabs.stabbase = load(fp->fd, m->cmd[i].sym.symoff, m->cmd[i].sym.nsyms*16);
|
fp->stabs.stabbase = load(fp->fd, m->cmd[i].sym.symoff, m->cmd[i].sym.nsyms*16);
|
||||||
fp->stabs.stabsize = m->cmd[i].sym.nsyms*16;
|
fp->stabs.stabsize = m->cmd[i].sym.nsyms*16;
|
||||||
fp->stabs.strbase = load(fp->fd, m->cmd[i].sym.stroff, m->cmd[i].sym.strsize);
|
fp->stabs.strbase = (char*)load(fp->fd, m->cmd[i].sym.stroff, m->cmd[i].sym.strsize);
|
||||||
if(fp->stabs.stabbase == nil || fp->stabs.strbase == nil){
|
if(fp->stabs.stabbase == nil || fp->stabs.strbase == nil){
|
||||||
fp->stabs.stabbase = nil;
|
fp->stabs.stabbase = nil;
|
||||||
fp->stabs.strbase = nil;
|
fp->stabs.strbase = nil;
|
||||||
|
|
|
||||||
|
|
@ -544,7 +544,7 @@ getstring(DwarfBuf *b, int form, char **s)
|
||||||
/* don't return error - maybe can proceed */
|
/* don't return error - maybe can proceed */
|
||||||
*s = nil;
|
*s = nil;
|
||||||
}else
|
}else
|
||||||
*s = b->d->str.data + u;
|
*s = (char*)b->d->str.data + u;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -109,12 +109,12 @@ dwarfpctoline(Dwarf *d, ulong pc, char **cdir, char **dir, char **file, ulong *l
|
||||||
}
|
}
|
||||||
|
|
||||||
/* just skip the files and dirs for now; we'll come back */
|
/* just skip the files and dirs for now; we'll come back */
|
||||||
dirs = b.p;
|
dirs = (char*)b.p;
|
||||||
while(b.p!=nil && *b.p!=0)
|
while(b.p!=nil && *b.p!=0)
|
||||||
dwarfgetstring(&b);
|
dwarfgetstring(&b);
|
||||||
dwarfget1(&b);
|
dwarfget1(&b);
|
||||||
|
|
||||||
files = b.p;
|
files = (char*)b.p;
|
||||||
while(b.p!=nil && *b.p!=0){
|
while(b.p!=nil && *b.p!=0){
|
||||||
dwarfgetstring(&b);
|
dwarfgetstring(&b);
|
||||||
dwarfget128(&b);
|
dwarfget128(&b);
|
||||||
|
|
@ -278,7 +278,7 @@ dwarfpctoline(Dwarf *d, ulong pc, char **cdir, char **dir, char **file, ulong *l
|
||||||
*line = emit.line;
|
*line = emit.line;
|
||||||
|
|
||||||
/* skip over first emit.file-2 guys */
|
/* skip over first emit.file-2 guys */
|
||||||
b.p = files;
|
b.p = (uchar*)files;
|
||||||
for(i=emit.file-1; i > 0 && b.p!=nil && *b.p!=0; i--){
|
for(i=emit.file-1; i > 0 && b.p!=nil && *b.p!=0; i--){
|
||||||
dwarfgetstring(&b);
|
dwarfgetstring(&b);
|
||||||
dwarfget128(&b);
|
dwarfget128(&b);
|
||||||
|
|
@ -315,7 +315,7 @@ dwarfpctoline(Dwarf *d, ulong pc, char **cdir, char **dir, char **file, ulong *l
|
||||||
if(i == 0)
|
if(i == 0)
|
||||||
*dir = nil;
|
*dir = nil;
|
||||||
else{
|
else{
|
||||||
b.p = dirs;
|
b.p = (uchar*)dirs;
|
||||||
for(i--; i>0 && b.p!=nil && *b.p!=0; i--)
|
for(i--; i>0 && b.p!=nil && *b.p!=0; i--)
|
||||||
dwarfgetstring(&b);
|
dwarfgetstring(&b);
|
||||||
if(b.p==nil || *b.p==0){
|
if(b.p==nil || *b.p==0){
|
||||||
|
|
|
||||||
|
|
@ -195,7 +195,7 @@ elfinit(int fd)
|
||||||
|
|
||||||
for(i=0; i<e->nsect; i++)
|
for(i=0; i<e->nsect; i++)
|
||||||
if(e->sect[i].name)
|
if(e->sect[i].name)
|
||||||
e->sect[i].name = s->base + (ulong)e->sect[i].name;
|
e->sect[i].name = (char*)s->base + (ulong)e->sect[i].name;
|
||||||
|
|
||||||
e->symtab = elfsection(e, ".symtab");
|
e->symtab = elfsection(e, ".symtab");
|
||||||
if(e->symtab){
|
if(e->symtab){
|
||||||
|
|
@ -375,7 +375,7 @@ elfsym(Elf *elf, int i, ElfSym *sym)
|
||||||
if(elfmap(elf, symtab) < 0 || elfmap(elf, strtab) < 0)
|
if(elfmap(elf, symtab) < 0 || elfmap(elf, strtab) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
p = symtab->base + i * sizeof(ElfSymBytes);
|
p = symtab->base + i * sizeof(ElfSymBytes);
|
||||||
s = strtab->base;
|
s = (char*)strtab->base;
|
||||||
x = elf->hdr.e4(p);
|
x = elf->hdr.e4(p);
|
||||||
if(x >= strtab->size){
|
if(x >= strtab->size){
|
||||||
werrstr("bad symbol name offset 0x%lux", x);
|
werrstr("bad symbol name offset 0x%lux", x);
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@ ieeeftoa64(char *buf, uint n, u32int h, u32int l)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
||||||
if(h & (1L<<31)){
|
if(h & (1UL<<31)){
|
||||||
*buf++ = '-';
|
*buf++ = '-';
|
||||||
h &= ~(1L<<31);
|
h &= ~(1UL<<31);
|
||||||
}else
|
}else
|
||||||
*buf++ = ' ';
|
*buf++ = ' ';
|
||||||
n--;
|
n--;
|
||||||
|
|
@ -55,9 +55,9 @@ ieeeftoa32(char *buf, uint n, u32int h)
|
||||||
if (n <= 0)
|
if (n <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if(h & (1L<<31)){
|
if(h & (1UL<<31)){
|
||||||
*buf++ = '-';
|
*buf++ = '-';
|
||||||
h &= ~(1L<<31);
|
h &= ~(1UL<<31);
|
||||||
}else
|
}else
|
||||||
*buf++ = ' ';
|
*buf++ = ' ';
|
||||||
n--;
|
n--;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue