Try to tighten up the types a little bit to help debugging with GDB.

This commit is contained in:
David E. O'Brien 2003-02-02 22:16:05 +00:00
parent 39eb27a4a9
commit 0529c56b96
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=110252

View File

@ -1,4 +1,5 @@
/*-
* Copyright (c) 2003 David O'Brien. All rights reserved.
* Copyright (c) 2001 Jake Burkholder
* All rights reserved.
*
@ -351,17 +352,17 @@ u_int64_t elf_get_half(Elf32_Ehdr *e, void *base, elf_member_t member);
u_int64_t elf_get_word(Elf32_Ehdr *e, void *base, elf_member_t member);
u_int64_t elf_get_quad(Elf32_Ehdr *e, void *base, elf_member_t member);
void elf_print_ehdr(void *e);
void elf_print_phdr(void *e, void *p);
void elf_print_shdr(void *e, void *sh);
void elf_print_symtab(void *e, void *sh, char *str);
void elf_print_dynamic(void *e, void *sh);
void elf_print_rel(void *e, void *r);
void elf_print_rela(void *e, void *ra);
void elf_print_interp(void *e, void *p);
void elf_print_got(void *e, void *sh);
void elf_print_hash(void *e, void *sh);
void elf_print_note(void *e, void *sh);
void elf_print_ehdr(Elf32_Ehdr *e);
void elf_print_phdr(Elf32_Ehdr *e, void *p);
void elf_print_shdr(Elf32_Ehdr *e, void *sh);
void elf_print_symtab(Elf32_Ehdr *e, void *sh, char *str);
void elf_print_dynamic(Elf32_Ehdr *e, void *sh);
void elf_print_rel(Elf32_Ehdr *e, void *r);
void elf_print_rela(Elf32_Ehdr *e, void *ra);
void elf_print_interp(Elf32_Ehdr *e, void *p);
void elf_print_got(Elf32_Ehdr *e, void *sh);
void elf_print_hash(Elf32_Ehdr *e, void *sh);
void elf_print_note(Elf32_Ehdr *e, void *sh);
void usage(void);
@ -380,7 +381,7 @@ main(int ac, char **av)
u_int64_t type;
struct stat sb;
u_int flags;
void *e;
Elf32_Ehdr *e;
void *p;
void *sh;
void *v;
@ -452,17 +453,17 @@ main(int ac, char **av)
shentsize = elf_get_quarter(e, e, E_SHENTSIZE);
shnum = elf_get_quarter(e, e, E_SHNUM);
shstrndx = elf_get_quarter(e, e, E_SHSTRNDX);
p = e + phoff;
sh = e + shoff;
p = (void *)e + phoff;
sh = (void *)e + shoff;
offset = elf_get_off(e, sh + shstrndx * shentsize, SH_OFFSET);
shstrtab = e + offset;
shstrtab = (char *)e + offset;
for (i = 0; i < shnum; i++) {
name = elf_get_word(e, sh + i * shentsize, SH_NAME);
offset = elf_get_off(e, sh + i * shentsize, SH_OFFSET);
if (strcmp(shstrtab + name, ".strtab") == 0)
strtab = e + offset;
strtab = (char *)e + offset;
if (strcmp(shstrtab + name, ".dynstr") == 0)
dynstr = e + offset;
dynstr = (char *)e + offset;
}
if (flags & ED_EHDR)
elf_print_ehdr(e);
@ -539,7 +540,7 @@ main(int ac, char **av)
}
void
elf_print_ehdr(void *e)
elf_print_ehdr(Elf32_Ehdr *e)
{
u_int64_t class;
u_int64_t data;
@ -594,7 +595,7 @@ elf_print_ehdr(void *e)
}
void
elf_print_phdr(void *e, void *p)
elf_print_phdr(Elf32_Ehdr *e, void *p)
{
u_int64_t phentsize;
u_int64_t phnum;
@ -636,7 +637,7 @@ elf_print_phdr(void *e, void *p)
}
void
elf_print_shdr(void *e, void *sh)
elf_print_shdr(Elf32_Ehdr *e, void *sh)
{
u_int64_t shentsize;
u_int64_t shnum;
@ -684,7 +685,7 @@ elf_print_shdr(void *e, void *sh)
}
void
elf_print_symtab(void *e, void *sh, char *str)
elf_print_symtab(Elf32_Ehdr *e, void *sh, char *str)
{
u_int64_t offset;
u_int64_t entsize;
@ -704,7 +705,7 @@ elf_print_symtab(void *e, void *sh, char *str)
len = size / entsize;
fprintf(out, "\nsymbol table (%s):\n", shstrtab + name);
for (i = 0; i < len; i++) {
st = e + offset + i * entsize;
st = (void *)e + offset + i * entsize;
name = elf_get_word(e, st, ST_NAME);
value = elf_get_addr(e, st, ST_VALUE);
size = elf_get_size(e, st, ST_SIZE);
@ -723,7 +724,7 @@ elf_print_symtab(void *e, void *sh, char *str)
}
void
elf_print_dynamic(void *e, void *sh)
elf_print_dynamic(Elf32_Ehdr *e, void *sh)
{
u_int64_t offset;
u_int64_t entsize;
@ -739,7 +740,7 @@ elf_print_dynamic(void *e, void *sh)
size = elf_get_size(e, sh, SH_SIZE);
fprintf(out, "\ndynamic:\n");
for (i = 0; i < size / entsize; i++) {
d = e + offset + i * entsize;
d = (void *)e + offset + i * entsize;
tag = elf_get_size(e, d, D_TAG);
ptr = elf_get_size(e, d, D_PTR);
val = elf_get_addr(e, d, D_VAL);
@ -783,7 +784,7 @@ elf_print_dynamic(void *e, void *sh)
}
void
elf_print_rela(void *e, void *sh)
elf_print_rela(Elf32_Ehdr *e, void *sh)
{
u_int64_t offset;
u_int64_t entsize;
@ -799,7 +800,7 @@ elf_print_rela(void *e, void *sh)
entsize = elf_get_size(e, sh, SH_ENTSIZE);
size = elf_get_size(e, sh, SH_SIZE);
name = elf_get_word(e, sh, SH_NAME);
v = e + offset;
v = (void *)e + offset;
fprintf(out, "\nrelocation with addend (%s):\n", shstrtab + name);
for (i = 0; i < size / entsize; i++) {
ra = v + i * entsize;
@ -815,7 +816,7 @@ elf_print_rela(void *e, void *sh)
}
void
elf_print_rel(void *e, void *sh)
elf_print_rel(Elf32_Ehdr *e, void *sh)
{
u_int64_t offset;
u_int64_t entsize;
@ -844,19 +845,19 @@ elf_print_rel(void *e, void *sh)
}
void
elf_print_interp(void *e, void *p)
elf_print_interp(Elf32_Ehdr *e, void *p)
{
u_int64_t offset;
char *s;
offset = elf_get_off(e, p, P_OFFSET);
s = e + offset;
s = (char *)e + offset;
fprintf(out, "\ninterp:\n");
fprintf(out, "\t%s\n", s);
}
void
elf_print_got(void *e, void *sh)
elf_print_got(Elf32_Ehdr *e, void *sh)
{
u_int64_t offset;
u_int64_t addralign;
@ -868,7 +869,7 @@ elf_print_got(void *e, void *sh)
offset = elf_get_off(e, sh, SH_OFFSET);
addralign = elf_get_size(e, sh, SH_ADDRALIGN);
size = elf_get_size(e, sh, SH_SIZE);
v = e + offset;
v = (void *)e + offset;
fprintf(out, "\nglobal offset table:\n");
for (i = 0; i < size / addralign; i++) {
addr = elf_get_addr(e, v + i * addralign, 0);
@ -879,12 +880,12 @@ elf_print_got(void *e, void *sh)
}
void
elf_print_hash(void *e, void *sh)
elf_print_hash(Elf32_Ehdr *e, void *sh)
{
}
void
elf_print_note(void *e, void *sh)
elf_print_note(Elf32_Ehdr *e, void *sh)
{
u_int64_t offset;
u_int64_t size;
@ -899,9 +900,9 @@ elf_print_note(void *e, void *sh)
offset = elf_get_off(e, sh, SH_OFFSET);
size = elf_get_size(e, sh, SH_SIZE);
name = elf_get_word(e, sh, SH_NAME);
n = e + offset;
n = (void *)e + offset;
fprintf(out, "\nnote (%s):\n", shstrtab + name);
while (n < e + offset + size) {
while (n < (void *)e + offset + size) {
namesz = elf_get_word(e, n, N_NAMESZ);
descsz = elf_get_word(e, n, N_DESCSZ);
type = elf_get_word(e, n, N_TYPE);