Hi Tony, Yes, I also found that merge will have some conflicts now. And you can modify the key code as follows to fix the issue about "eu-readelf -w" could not show info. But this can not fix other display error in the result of the "eu-readelf -w" which need modify the way to get symbol index and type. > diff --git a/libelf/libelfP.h b/libelf/libelfP.h > index bdd2cc6a..6565ee02 100644 > --- a/libelf/libelfP.h > +++ b/libelf/libelfP.h > @@ -620,4 +620,5 @@ extern void __libelf_reset_rawdata (Elf_Scn *scn, void *buf, size_t size, > #define ELF64_MIPS_R_TYPE1(i) ((i) & 0xff) > #define ELF64_MIPS_R_TYPE2(i) (((i) >> 8) & 0xff) > #define ELF64_MIPS_R_TYPE3(i) (((i) >> 16) & 0xff) > +#define is_debug_section_type(type) (type == SHT_PROGBITS || type == SHT_MIPS_DWARF) > #endif /* libelfP.h */ > diff --git a/src/readelf.c b/src/readelf.c > index 0e931184..e88cf67c 100644 > --- a/src/readelf.c > +++ b/src/readelf.c > @@ -12043,7 +12139,7 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr) > GElf_Shdr shdr_mem; > GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); > > - if (shdr != NULL && shdr->sh_type == SHT_PROGBITS) > + if (shdr != NULL && is_debug_section_type(shdr->sh_type)) > { > const char *name = elf_strptr (ebl->elf, shstrndx, > shdr->sh_name); > @@ -12073,7 +12169,7 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr) > GElf_Shdr shdr_mem; > GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem); > > - if (shdr != NULL && shdr->sh_type == SHT_PROGBITS) > + if (shdr != NULL && is_debug_section_type(shdr->sh_type)) > { > static const struct > { Thanks, Ying 在 2024/6/4 11:47, Tony Ambardar 写道: > Hi Mark, > > On Mon, Jun 03, 2024 at 09:18:33PM +0200, Mark Wielaard wrote: >> On Mon, Jun 03, 2024 at 02:40:45PM -0300, Arnaldo Carvalho de Melo wrote: >>> Couldn't find a way to ask eu-readelf for more verbose output, where we >>> could perhaps get some clue as to why it produces nothing while binutils >>> readelf manages to grok it, Mark, do you know some other way to ask >>> eu-readelf to produce more debug output? >>> >>> I'm unsure if the netdevsim.ko file was left in a semi encoded BTF state >>> that then made eu-readelf to not be able to process it while pahole, >>> that uses eltuils' libraries, was able to process the first two CUs for >>> a kernel module and all the CUs for the vmlinux file :-\ >>> >>> Mark, the whole thread is available at: >>> >>> https://lore.kernel.org/all/Zl3Zp5r9m6X_i_J4@x1/T/#u >> I haven't looked at the vmlinux file. But for the .ko file the issue >> is that the elfutils MIPS backend isn't complete. Specifically MIPS >> relocations aren't recognized (and so cannot be applied). There are >> some pending patches which try to fix that: >> >> https://patchwork.sourceware.org/project/elfutils/list/?series=31601 > Earlier in the thread, Hengqi Chen pointed out the latest elfutils backend > work for MIPS, and I locally rebuilt elfutils and then pahole from their > respective next/main branches. For elfutils, main (935ee131cf7c) includes > > e259f126 Support Mips architecture > f2acb069 stack: Fix stack unwind failure on mips > db33cb0c backends: Add register_info, return_value_location, core_note mips > > which partially applies the patchwork series but leaves out the support for > readelf, strip, and elflint. > > I believe this means the vmlinux and .ko files I shared are OK, or is there > more backend work needed for MIPS? > > The bits missing in eu-readelf would explain the blank output both Arnaldo > and I see from "$ eu-readelf -winfo vmlinux". I tried rebuilding with the > patchwork readelf patch locally but ran into merge conflicts. > > CCing Ying Huang for any more insight. > > Thanks, > Tony