> compile NEMU
ysyx_22040000 李心杨 Linux calcite 6.6.19 #1-NixOS SMP PREEMPT_DYNAMIC Fri Mar 1 12:35:11 UTC 2024 x86_64 GNU/Linux 18:33:40 up 1 day 8:09, 2 users, load average: 1.15, 0.77, 0.60
This commit is contained in:
parent
ea11bd2425
commit
5d8572b1db
1 changed files with 4 additions and 4 deletions
|
@ -12,9 +12,9 @@ void init_elf(const char *path) {
|
|||
FILE *elf_file = fopen(path, "rb");
|
||||
Elf32_Ehdr header;
|
||||
Elf32_Shdr section_header, *psh;
|
||||
FAILED_GOTO(failed_nosym, fread(&header, sizeof(Elf32_Ehdr), 1, elf_file) > 0);
|
||||
FAILED_GOTO(failed_nosym, fread(&header, sizeof(Elf32_Ehdr), 1, elf_file) <= 0);
|
||||
FAILED_GOTO(failed_nosym, fseek(elf_file, header.e_shoff, SEEK_SET) != 0);
|
||||
FAILED_GOTO(failed_nosym, fread(§ion_header, header.e_shentsize, header.e_shnum, elf_file) > 0);
|
||||
FAILED_GOTO(failed_nosym, fread(§ion_header, header.e_shentsize, header.e_shnum, elf_file) <= 0);
|
||||
|
||||
Elf32_Shdr *symtab = NULL, *strtab = NULL;
|
||||
for(int i = 0; i < header.e_shnum; i++) {
|
||||
|
@ -30,13 +30,13 @@ void init_elf(const char *path) {
|
|||
int sym_length = symtab->sh_entsize / sizeof(Elf32_Sym);
|
||||
Elf32_Sym *sym = calloc(sym_length, sizeof(Elf32_Sym));
|
||||
FAILED_GOTO(failed, fseek(elf_file, symtab->sh_offset, SEEK_SET) != 0);
|
||||
FAILED_GOTO(failed, fread(&sym, sizeof(Elf32_Sym), sym_length, elf_file) > 0);
|
||||
FAILED_GOTO(failed, fread(&sym, sizeof(Elf32_Sym), sym_length, elf_file) <= 0);
|
||||
for(int j = 0; j < sym_length; j++) {
|
||||
if(ELF32_ST_TYPE(sym[j].st_info) != STT_FUNC) continue;
|
||||
// Only read function type symbol
|
||||
char func[30] = "";
|
||||
FAILED_GOTO(failed, fseek(elf_file, sym[j].st_name + strtab->sh_offset, SEEK_SET) != 0);
|
||||
FAILED_GOTO(failed, fgets(func, 30, elf_file) > 0);
|
||||
FAILED_GOTO(failed, fgets(func, 30, elf_file) <= 0);
|
||||
puts(func);
|
||||
}
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue