Messages in this thread | | | Date | Thu, 31 May 2018 11:35:09 -0500 | From | Josh Poimboeuf <> | Subject | Re: [PATCH] objtool: Fix GCC 8 cold subfunction detection for aliased functions |
| |
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 <lkp@intel.com> > Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions") > Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
NACK. This adds another warning:
arch/x86/xen/enlighten.o: warning: objtool: xen_pin_vcpu()+0x4b: can't find switch jump table
-- Josh
| |