> 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 13:24:29 up 0:22, 2 users, load average: 0.66, 0.61, 0.47
This commit is contained in:
parent
baade9046d
commit
a2b9777ea4
3 changed files with 690 additions and 1 deletions
683
nemu/compile_commands.events.json
Normal file
683
nemu/compile_commands.events.json
Normal file
File diff suppressed because one or more lines are too long
3
nemu/include/elf-parser.h
Normal file
3
nemu/include/elf-parser.h
Normal file
|
@ -0,0 +1,3 @@
|
|||
#ifndef __DIFFTEST_DEF_H__
|
||||
#define __DIFFTEST_DEF_H__
|
||||
#endif
|
|
@ -5,6 +5,7 @@
|
|||
// Put this into another file
|
||||
#ifdef CONFIG_FTRACE
|
||||
// static vaddr_t g_function_stack[CONFIG_FTRACE_STACK_SIZE] = {0};
|
||||
// static vaddr_t *g_function_start = NULL;
|
||||
#endif
|
||||
|
||||
#define FAILED_GOTO(tag, exp) do {if((exp)) goto tag;} while(0)
|
||||
|
@ -32,12 +33,14 @@ void init_elf(const char *path) {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
int sym_length = symtab->sh_size / sizeof(Elf32_Sym);
|
||||
Elf32_Sym *sym = calloc(sym_length, sizeof(Elf32_Sym));
|
||||
FAILED_GOTO(failed_nosym, sym == NULL);
|
||||
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);
|
||||
|
||||
// Count how many function symbol in elf file
|
||||
|
||||
for(int j = 0; j < sym_length; j++) {
|
||||
if(ELF32_ST_TYPE(sym[j].st_info) != STT_FUNC) continue;
|
||||
// Only read function type symbol
|
||||
|
|
Loading…
Reference in a new issue