From a20136aec545a89cfb2f90a60052a2ea70c2b8e7 Mon Sep 17 00:00:00 2001 From: tracer-ysyx Date: Sun, 17 Mar 2024 00:40:48 +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=2000:40:48=20=20up=20=2010:1?= =?UTF-8?q?6,=20=202=20users,=20=20load=20average:=200.51,=200.62,=200.58?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nemu/src/utils/elf-parser.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nemu/src/utils/elf-parser.c b/nemu/src/utils/elf-parser.c index 77e5892..0584b71 100644 --- a/nemu/src/utils/elf-parser.c +++ b/nemu/src/utils/elf-parser.c @@ -10,6 +10,7 @@ #define FAILED_GOTO(tag, exp) do {if((exp)) goto tag;} while(0) void init_elf(const char *path) { + bool success = false; FILE *elf_file = fopen(path, "rb"); Elf32_Ehdr header; Elf32_Shdr section_header[200], *psh; @@ -49,12 +50,12 @@ void init_elf(const char *path) { FAILED_GOTO(failed, fgets(func, 30, elf_file) <= 0); puts(func); } - free(sym); - return; + success = true; failed: free(sym); failed_shstrtab: free(shstrtab); failed_nosym: - Error("Failed reading elf file"); + if(success) return; + else Error("Failed reading elf file"); }