Lines Matching refs:va

367 static void elf_print_ehdr(env_t *va);
368 static void elf_print_phdr(env_t *va, const void *p);
369 static void elf_print_shdr(env_t *va, const void *sh);
370 static void elf_print_symtab(env_t *va, const void *sh, const char *str);
371 static void elf_print_dynamic(env_t *va, const void *sh);
372 static void elf_print_rel(env_t *va, const void *r);
373 static void elf_print_rela(env_t *va, const void *ra);
374 static void elf_print_interp(env_t *va, const void *p);
376 static void elf_print_hash(env_t *va, const void *sh);
377 static void elf_print_note(env_t *va, const void *sh);
392 elf_name(env_t *va, const char *base) in elf_name() argument
394 return va->shstrtab + elf_get_word(va->e, base, SH_NAME); in elf_name()
487 env_t env, *va = &env; in elfdump_main() local
489 bzero(va, sizeof(env)); in elfdump_main()
490 va->out = out; in elfdump_main()
509 va->retval = mem; in elfdump_main()
510 va->retval->count = i; in elfdump_main()
515 va->retval->m[i].name =syms; in elfdump_main()
523 va->e = e = mmap(NULL, sb.st_size, PROT_READ, MAP_SHARED, fd, 0); in elfdump_main()
524 if (va->e == MAP_FAILED) in elfdump_main()
531 p = (char *)e + elf_get_off(va->e, e, E_PHOFF); in elfdump_main()
532 sh = (char *)e + elf_get_off(va->e, e, E_SHOFF); in elfdump_main()
534 va->shstrtab = (char *)e + offset; in elfdump_main()
536 const char *x = elf_name(va, sh + i * shentsize); in elfdump_main()
539 va->strtab = (char *)e + offset; in elfdump_main()
541 va->dynstr = (char *)e + offset; in elfdump_main()
543 if (va->out) { in elfdump_main()
547 if (flags & ED_EHDR && va->out) in elfdump_main()
548 elf_print_ehdr(va); in elfdump_main()
549 if (flags & ED_PHDR && va->out) in elfdump_main()
550 elf_print_phdr(va, p); in elfdump_main()
551 if (flags & ED_SHDR && va->out) in elfdump_main()
552 elf_print_shdr(va, sh); in elfdump_main()
560 elf_print_interp(va, v); in elfdump_main()
578 elf_print_symtab(va, v, va->strtab); in elfdump_main()
581 if (flags & ED_DYN && va->out) in elfdump_main()
582 elf_print_dynamic(va, v); in elfdump_main()
585 if (flags & ED_REL && va->out) in elfdump_main()
586 elf_print_rela(va, v); in elfdump_main()
589 if (flags & ED_REL && va->out) in elfdump_main()
590 elf_print_rel(va, v); in elfdump_main()
593 if (flags & ED_NOTE && va->out && in elfdump_main()
594 strcmp(elf_name(va, v), ".note.ABI-tag") == 0) in elfdump_main()
595 elf_print_note(va, v); in elfdump_main()
599 elf_print_symtab(va, v, va->dynstr); in elfdump_main()
602 if (flags & ED_GOT && va->out && in elfdump_main()
603 strcmp(elf_name(va, v), ".got") == 0) in elfdump_main()
604 elf_print_got(va, v); in elfdump_main()
607 if (flags & ED_HASH && va->out) in elfdump_main()
608 elf_print_hash(va, v); in elfdump_main()
618 return va->retval; in elfdump_main()
622 elf_print_ehdr(env_t *va) in elf_print_ehdr() argument
637 Elf32_Ehdr *e = va->e; in elf_print_ehdr()
638 FILE *out = va->out; in elf_print_ehdr()
674 elf_print_phdr(env_t *va, const void *p) in elf_print_phdr() argument
688 Elf32_Ehdr *e = va->e; in elf_print_phdr()
689 FILE *out = va->out; in elf_print_phdr()
717 elf_print_shdr(env_t *va, const void *sh) in elf_print_shdr() argument
733 Elf32_Ehdr *e = va->e; in elf_print_shdr()
734 FILE *out = va->out; in elf_print_shdr()
750 fprintf(out, "\tsh_name: %s\n", elf_name(va, v)); in elf_print_shdr()
764 elf_print_symtab(env_t *va, const void *sh, const char *str) in elf_print_symtab() argument
777 Elf32_Ehdr *e = va->e; in elf_print_symtab()
778 FILE *out = va->out; in elf_print_symtab()
785 fprintf(out, "\nsymbol table (%s):\n", elf_name(va, sh)); in elf_print_symtab()
793 if (va->retval) { in elf_print_symtab()
796 for (j = 0; j < va->retval->count; j++) { in elf_print_symtab()
797 if (!strcmp(str + name, va->retval->m[j].name)) in elf_print_symtab()
800 if (j == va->retval->count) in elf_print_symtab()
802 va->retval->m[j].value = value; in elf_print_symtab()
803 va->retval->m[j].size = size; in elf_print_symtab()
805 j, va->retval->m[j].name, in elf_print_symtab()
822 elf_print_dynamic(env_t *va, const void *sh) in elf_print_dynamic() argument
833 Elf32_Ehdr *e = va->e; in elf_print_dynamic()
834 FILE *out = va->out; in elf_print_dynamic()
851 fprintf(out, "\td_val: %s\n", va->dynstr + val); in elf_print_dynamic()
884 elf_print_rela(env_t *va, const void *sh) in elf_print_rela() argument
895 Elf32_Ehdr *e = va->e; in elf_print_rela()
896 FILE *out = va->out; in elf_print_rela()
903 elf_name(va, sh)); in elf_print_rela()
917 elf_print_rel(env_t *va, const void *sh) in elf_print_rel() argument
927 Elf32_Ehdr *e = va->e; in elf_print_rel()
928 FILE *out = va->out; in elf_print_rel()
934 elf_name(va, sh)); in elf_print_rel()
946 elf_print_interp(env_t *va, const void *p) in elf_print_interp() argument
949 fprintf(va->out, "\ninterp:\n\t%s\n", in elf_print_interp()
950 (const char *)va->e + elf_get_off(va->e, p, P_OFFSET)); in elf_print_interp()
954 elf_print_got(env_t *va, const void *sh) in elf_print_got() argument
962 addralign = elf_get_size(va->e, sh, SH_ADDRALIGN); in elf_print_got()
963 size = elf_get_size(va->e, sh, SH_SIZE); in elf_print_got()
964 v = (char *)va->e + elf_get_off(va->e, sh, SH_OFFSET); in elf_print_got()
965 fprintf(va->out, "\nglobal offset table:\n"); in elf_print_got()
967 addr = elf_get_addr(va->e, v + i * addralign, 0); in elf_print_got()
968 fprintf(va->out, "\nentry: %d\n\t%#jx\n", i, addr); in elf_print_got()
973 elf_print_hash(env_t *va __unused, const void *sh __unused) in elf_print_hash()
978 elf_print_note(env_t *va, const void *sh) in elf_print_note() argument
982 fprintf(va->out, "\nnote (%s):\n", in elf_print_note()
983 elf_name(va, sh)); in elf_print_note()
984 n = (const char *)va->e + elf_get_off(va->e, sh, SH_OFFSET); in elf_print_note()
985 lim = n + elf_get_size(va->e, sh, SH_SIZE); in elf_print_note()
987 u_int32_t namesz = elf_get_word(va->e, n, N_NAMESZ); in elf_print_note()
988 u_int32_t descsz = elf_get_word(va->e, n, N_DESCSZ); in elf_print_note()
991 u_int32_t desc = elf_get_word(va->e, s + namesz, 0); in elf_print_note()
992 fprintf(va->out, "\t%s %d\n", s, desc); in elf_print_note()