Missing .gnu_debugdata section on ARM platform when libdw is used by systemd-coredump

Tino Mettler tino.mettler@tikei.de
Tue May 4 12:15:41 GMT 2021


Hi,

I have a system running on 2 different architectures: AMD64 and ARM. When a coredump happens, I want systemd-coredump to generate a stack trace of the crashing application. Systemd depends on elfutils for this feature. I use binaries with minidebuginfo (the LZMA compressed symbol table in the .gnu_debugdata section) on both architectures.

I get a stack trace on AMD64, but not on ARM. While debugging this, I saw that find_aux_sym() from dwfl_module_getdwarf.c does not find a .gnu_debugdata section when iterating through the ELF using elf_nextscn().

However, it finds a .gnu_debuglink section. I inspected the executable and verified that it contains a .gnu_debugdata section and it looks fine. Interestingly, there is no .gnu_debuglink section in the executable despite elf_nextscn() seems to find one.

It looks like libdw does not process the actual executable, but a modified variant, and the .gnu_debugdata section gets lost at some point on my ARM device. Can you give me a hint where I need to look at? Both devices run a different kernel with a different configuration. Could that be related?

I also tried gdb using the coredump file from systemd-coredump and the same executable, and a stack trace worked as expected.

Regards,
Tino



More information about the Elfutils-devel mailing list