libelf-0.175 breaks objtool

From: Steven Rostedt
Date: Tue Feb 05 2019 - 13:38:25 EST


Just a FYI.

After a recent upgrade in debian testing, I was not able to build the
kernel. I have a custom build of gcc, so I thought it was strange that
I was getting something like this (took this from the web, as I don't
have the error anymore with the work around, and currently doing a full
build):

objdump: kernel/.tmp_signal.o: unable to initialize decompress status for section .debug_info
objdump: kernel/.tmp_signal.o: unable to initialize decompress status for section .debug_info
objdump: kernel/.tmp_signal.o: file format not recognized
CC arch/x86/kernel/platform-quirks.o
objdump: arch/x86/kernel/.tmp_ebda.o: unable to initialize decompress status for section .debug_info
objdump: arch/x86/kernel/.tmp_ebda.o: unable to initialize decompress status for section .debug_info
objdump: arch/x86/kernel/.tmp_ebda.o: file format not recognized
objdump: mm/.tmp_swap_slots.o: unable to initialize decompress status for section .debug_info
objdump: mm/.tmp_swap_slots.o: unable to initialize decompress status for section .debug_info
objdump: mm/.tmp_swap_slots.o: file format not recognized

The web showed this was an error in Arch Linux, with the latest
libelf-0.175. I was confused to why an upgrade broke my build since I
don't even use the distro gcc to build my kernel. But then realized it
was objtool (after doing a make V=1).

To make sure that this was the case, I used the gcc command (leaving it
out here as it was very long) from a make V=1 to get an object file to
play with. Then tried out:

$ objdump -dr arch/x86/events/intel/.tmp_rapl.o

Which dumped the contents of .tmp_rapl.o nicely.

Then performed:

$ ./tools/objtool/objtool orc generate --module --no-fp --retpoline "arch/x86/events/intel/.tmp_rapl.o";

And then tried again the objdump, but this time I got:

$ objdump -dr arch/x86/events/intel/.tmp_rapl.o
objdump: arch/x86/events/intel/.tmp_rapl.o: unable to initialize decompress status for section .debug_info
objdump: arch/x86/events/intel/.tmp_rapl.o: unable to initialize decompress status for section .debug_info
objdump: arch/x86/events/intel/.tmp_rapl.o: file format not recognized


The work around I did was that I found an older libelf on another box,
copied it to this box and made the symlink point to it. Low and behold,
objtool worked again.

Anyone else stumble across this?

-- Steve