From 6602d1d7aac60e00ea920bae1c479f6a970f5fd3 Mon Sep 17 00:00:00 2001
From: tracer-ysyx <tracer@ysyx.org>
Date: Wed, 20 Mar 2024 16:06:04 +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=2016:06:04=20=20up=20=20=203?=
 =?UTF-8?q?:12,=20=202=20users,=20=20load=20average:=200.00,=200.11,=200.2?=
 =?UTF-8?q?8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 nemu/src/utils/elf-parser.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/nemu/src/utils/elf-parser.c b/nemu/src/utils/elf-parser.c
index 9fe75d8..0f5c26c 100644
--- a/nemu/src/utils/elf-parser.c
+++ b/nemu/src/utils/elf-parser.c
@@ -17,13 +17,13 @@ static int cmp_func_t(const void *a, const void *b) {
 }
 
 func_t *get_func(vaddr_t addr) {
-  int l = 0, r = func_table_len - 1;
+  int l = 0, r = func_table_len;
   while(l < r) {
     int mid = l + (r - l) / 2;
-    if(func_table[mid].start <= addr)  l = mid ;
-    else r = mid - 1;
+    if(func_table[mid].start <= addr)  l = mid + 1;
+    else r = mid;
   }
-  return &func_table[l-1];
+  return &func_table[r-1];
 }
 
 void init_elf(const char *path) {