> 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 17:30:12 up 4:36, 2 users, load average: 0.38, 0.28, 0.25
This commit is contained in:
parent
8e03d125ce
commit
c0160faa42
2 changed files with 9 additions and 15 deletions
|
@ -10,6 +10,7 @@ typedef struct {
|
||||||
} func_t;
|
} func_t;
|
||||||
|
|
||||||
func_t *func_table;
|
func_t *func_table;
|
||||||
|
const char *get_func_name(vaddr_t addr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -23,6 +23,7 @@ const char *get_func_name(vaddr_t addr) {
|
||||||
if(func_table[mid].start <= addr) l = mid + 1;
|
if(func_table[mid].start <= addr) l = mid + 1;
|
||||||
else r = mid - 1;
|
else r = mid - 1;
|
||||||
}
|
}
|
||||||
|
if(func_table[l].start + func_table[l].len < addr) return "???";
|
||||||
return l == 0 ? "???" : func_table[l - 1].name;
|
return l == 0 ? "???" : func_table[l - 1].name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,24 +79,16 @@ void init_elf(const char *path) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
qsort(func_table, func_table_len, sizeof(func_t), cmp_func_t);
|
qsort(func_table, func_table_len, sizeof(func_t), cmp_func_t);
|
||||||
for(int i = 0; i < func_table_len; i++) {
|
|
||||||
func_t *f = &func_table[i];
|
|
||||||
printf("%s: 0x%x - 0x%x\n", f->name, f->start, f->start + f->len);
|
|
||||||
}
|
|
||||||
printf("%s\n", get_func_name(0x80000010));
|
|
||||||
printf("%s\n", get_func_name(0x80000012));
|
|
||||||
printf("%s\n", get_func_name(0x7fffffff));
|
|
||||||
printf("%s\n", get_func_name(0x80000000));
|
|
||||||
success = true;
|
success = true;
|
||||||
failed:
|
failed:
|
||||||
for(int i = 0; i < func_table_len; i++) {
|
// for(int i = 0; i < func_table_len; i++) {
|
||||||
func_t *f = &func_table[i];
|
// func_t *f = &func_table[i];
|
||||||
if(f->name) { free(f->name); }
|
// if(f->name) { free(f->name); }
|
||||||
}
|
// }
|
||||||
free(func_table);
|
// free(func_table);
|
||||||
free(sym);
|
// free(sym);
|
||||||
failed_shstrtab:
|
failed_shstrtab:
|
||||||
free(shstrtab);
|
// free(shstrtab);
|
||||||
failed_nosym:
|
failed_nosym:
|
||||||
if(success) return;
|
if(success) return;
|
||||||
else Error("Failed reading elf file");
|
else Error("Failed reading elf file");
|
Loading…
Reference in a new issue