On Wed, May 30, 2018 at 11:16:39AM -0500, Josh Poimboeuf wrote: > The kbuild test robot reported the following issue: > > kernel/time/posix-stubs.o: warning: objtool: > sys_ni_posix_timers.cold.1()+0x0: unreachable instruction > > This file creates symbol aliases for the sys_ni_posix_timers() function. > So there are multiple ELF function symbols for the same function: > > 23: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 > __x64_sys_timer_create > 24: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 > sys_ni_posix_timers > 25: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 > __ia32_sys_timer_create > 26: 0000000000000150 26 FUNC GLOBAL DEFAULT 1 > __x64_sys_timer_gettime > > Here's the corresponding cold subfunction: > > 11: 0000000000000000 45 FUNC LOCAL DEFAULT 6 > sys_ni_posix_timers.cold.1 > > When analyzing overlapping functions, objtool only looks at the first > one in the symbol list. The rest of the functions are basically ignored > because they point to instructions which have already been analyzed. > > So in this case it analyzes the __x64_sys_timer_create() function, but > then it fails to recognize that its cold subfunction is > sys_ni_posix_timers.cold.1(), because the names are different. > > Make the subfunction detection a little smarter by associating each > subfunction with the first function which jumps to it, since that's the > one which will be analyzed. > > Reported-by: kbuild test robot <[email protected]> > Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions") > Signed-off-by: Josh Poimboeuf <[email protected]>
NACK. This adds another warning: arch/x86/xen/enlighten.o: warning: objtool: xen_pin_vcpu()+0x4b: can't find switch jump table -- Josh

