From 3cc2e29178647e8bdc0367a6484d93060fe78f2a Mon Sep 17 00:00:00 2001 From: tracer-ysyx Date: Wed, 20 Mar 2024 14:56:26 +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=2014:56:26=20=20up=20=20=202?= =?UTF-8?q?:02,=20=202=20users,=20=20load=20average:=200.65,=200.59,=200.6?= =?UTF-8?q?5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nemu/src/utils/elf-parser.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/nemu/src/utils/elf-parser.c b/nemu/src/utils/elf-parser.c index 9bd06f0..1bac7c1 100644 --- a/nemu/src/utils/elf-parser.c +++ b/nemu/src/utils/elf-parser.c @@ -12,6 +12,11 @@ func_t *func_table = NULL; int func_table_len = 0, func_table_size = 8; #endif +static int cmp_func_t(const void *a, const void *b) { + + return ((func_t *)a)->start > ((func_t *)b)->start; +} + void init_elf(const char *path) { bool success = false; FILE *elf_file = fopen(path, "rb"); @@ -65,6 +70,7 @@ void init_elf(const char *path) { Assert(func_table, "Function table exceed memory limit"); } } + qsort(func_table, func_table_len, sizeof(func_t), cmp_func_t); success = true; failed: for(int i = 0; i < func_table_len; i++) {