> 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 14:34:01 up 2 days 4:10, 2 users, load average: 0.02, 0.25, 0.30
This commit is contained in:
parent
cbb58f2265
commit
0df2e277fb
1 changed files with 3 additions and 2 deletions
|
@ -28,18 +28,19 @@ void init_elf(const char *path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int sym_length = symtab->sh_entsize / sizeof(Elf32_Sym);
|
int sym_length = symtab->sh_size / sizeof(Elf32_Sym);
|
||||||
Elf32_Sym *sym = calloc(sym_length, 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, 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++) {
|
for(int j = 0; j < sym_length; j++) {
|
||||||
if(ELF32_ST_TYPE(sym[j].st_info) != STT_FUNC) continue;
|
if(ELF32_ST_TYPE(sym[j].st_info) != STT_FUNC) continue;
|
||||||
// Only read function type symbol
|
// Only read function type symbol
|
||||||
char func[30] = "";
|
char func[30];
|
||||||
FAILED_GOTO(failed, fseek(elf_file, sym[j].st_name + strtab->sh_offset, SEEK_SET) != 0);
|
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);
|
puts(func);
|
||||||
}
|
}
|
||||||
|
free(sym);
|
||||||
return;
|
return;
|
||||||
failed:
|
failed:
|
||||||
free(sym);
|
free(sym);
|
||||||
|
|
Loading…
Reference in a new issue