From 5d8572b1db84e583f51cd31b44d44bdbaefffc8a Mon Sep 17 00:00:00 2001 From: tracer-ysyx Date: Thu, 14 Mar 2024 18:33:40 +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=2018:33:40=20=20up=201=20day?= =?UTF-8?q?=20=208:09,=20=202=20users,=20=20load=20average:=201.15,=200.77?= =?UTF-8?q?,=200.60?= 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 8ea582b..25be7fc 100644 --- a/nemu/src/utils/elf-parser.c +++ b/nemu/src/utils/elf-parser.c @@ -12,9 +12,9 @@ void init_elf(const char *path) { FILE *elf_file = fopen(path, "rb"); Elf32_Ehdr header; Elf32_Shdr section_header, *psh; - FAILED_GOTO(failed_nosym, fread(&header, sizeof(Elf32_Ehdr), 1, elf_file) > 0); + FAILED_GOTO(failed_nosym, fread(&header, sizeof(Elf32_Ehdr), 1, elf_file) <= 0); FAILED_GOTO(failed_nosym, fseek(elf_file, header.e_shoff, SEEK_SET) != 0); - FAILED_GOTO(failed_nosym, fread(§ion_header, header.e_shentsize, header.e_shnum, elf_file) > 0); + FAILED_GOTO(failed_nosym, fread(§ion_header, header.e_shentsize, header.e_shnum, elf_file) <= 0); Elf32_Shdr *symtab = NULL, *strtab = NULL; for(int i = 0; i < header.e_shnum; i++) { @@ -30,13 +30,13 @@ void init_elf(const char *path) { int sym_length = symtab->sh_entsize / sizeof(Elf32_Sym); Elf32_Sym *sym = calloc(sym_length, sizeof(Elf32_Sym)); 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); + FAILED_GOTO(failed, fread(&sym, sizeof(Elf32_Sym), sym_length, elf_file) <= 0); for(int j = 0; j < sym_length; j++) { if(ELF32_ST_TYPE(sym[j].st_info) != STT_FUNC) continue; // Only read function type symbol char func[30] = ""; FAILED_GOTO(failed, fseek(elf_file, sym[j].st_name + strtab->sh_offset, SEEK_SET) != 0); - FAILED_GOTO(failed, fgets(func, 30, elf_file) > 0); + FAILED_GOTO(failed, fgets(func, 30, elf_file) <= 0); puts(func); } return;