From d4439a279ba797b2e65c53a5e575b6ed1bd88c70 Mon Sep 17 00:00:00 2001 From: tracer-ysyx Date: Wed, 20 Mar 2024 15:44:31 +0800 Subject: [PATCH] =?UTF-8?q?>=20compile=20NEMU=20ysyx=5F22040000=20?= =?UTF-8?q?=E6=9D=8E=E5=BF=83=E6=9D=A8=20Linux=20calcite=206.6.19=20#1-Nix?= =?UTF-8?q?OS=20SMP=20PREEMPT=5FDYNAMIC=20Fri=20Mar=20=201=2012:35:11=20UT?= =?UTF-8?q?C=202024=20x86=5F64=20GNU/Linux=20=2015:44:31=20=20up=20=20=202?= =?UTF-8?q?:50,=20=202=20users,=20=20load=20average:=200.69,=200.45,=200.3?= =?UTF-8?q?4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nemu/src/utils/elf-parser.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/nemu/src/utils/elf-parser.c b/nemu/src/utils/elf-parser.c index 4530b42..d1bd142 100644 --- a/nemu/src/utils/elf-parser.c +++ b/nemu/src/utils/elf-parser.c @@ -68,11 +68,6 @@ void init_elf(const char *path) { } } 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]; - // puts(func); - printf("%s: 0x%x - 0x%x\n", f->name, f->start, f->start + f->len); - } success = true; failed: for(int i = 0; i < func_table_len; i++) { @@ -87,3 +82,13 @@ failed_nosym: if(success) return; else Error("Failed reading elf file"); } + +func_t *get_func(vaddr_t addr) { + int l = 0, r = func_table_len - 1; + while(l < r) { + int mid = l + (r - l) / 2; + if(func_table[mid].start < addr) l = mid + 1; + else r = mid; + } + return &func_table[l]; +}