This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

find_aux_sym triggers a kernel heuristic


Please see: https://sourceware.org/bugzilla/show_bug.cgi?id=16676#c2

I'm using elfutils-0.158-1.fc20.x86_64, but I don't think git libdwfl
has changed in any relevant way since then.

The gist is that I have an ET_EXEC binary, /usr/bin/ls.  When I call
dwfl_module_getsymtab -> find_symtab -> find_aux_sym -> open_elf, the
following heuristic is triggered:

libdwfl/dwfl_module_getdwarf.c
134│   mod->e_type = ehdr->e_type;
135│
136│   /* Relocatable Linux kernels are ET_EXEC but act like ET_DYN.  */
137│   if (mod->e_type == ET_EXEC && file->vaddr != mod->low_addr)
138├>    mod->e_type = ET_DYN;

Here file->vaddr = 0x400020 and mod->low_addr = 0x400000, but this
certainly is not a kernel, and should not be treated as ET_DYN.

Maybe this only needs to add a check that file == &mod->main, but I
wonder if this heuristic is even needed at all, because report_kernel()
forcibly sets ET_DYN itself.

Thoughts?

Josh

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]