android_kernel_sony_sdm845/tools/objtool
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Josh Poimboeuf 15e6da9ae5 objtool: Fix function fallthrough detection
commit e6f393bc939d566ce3def71232d8013de9aaadde upstream.

When a function falls through to the next function due to a compiler
bug, objtool prints some obscure warnings.  For example:

  drivers/regulator/core.o: warning: objtool: regulator_count_voltages()+0x95: return with modified stack frame
  drivers/regulator/core.o: warning: objtool: regulator_count_voltages()+0x0: stack state mismatch: cfa1=7+32 cfa2=7+8

Instead it should be printing:

  drivers/regulator/core.o: warning: objtool: regulator_supply_is_couple() falls through to next function regulator_count_voltages()

This used to work, but was broken by the following commit:

  13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")

The padding nops at the end of a function aren't actually part of the
function, as defined by the symbol table.  So the 'func' variable in
validate_branch() is getting cleared to NULL when a padding nop is
encountered, breaking the fallthrough detection.

If the current instruction doesn't have a function associated with it,
just consider it to be part of the previously detected function by not
overwriting the previous value of 'func'.

Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: <stable@vger.kernel.org>
Fixes: 13810435b9a7 ("objtool: Support GCC 8's cold subfunctions")
Link: http://lkml.kernel.org/r/546d143820cd08a46624ae8440d093dd6c902cae.1557766718.git.jpoimboe@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-05-21 18:48:56 +02:00
..
arch/x86 objtool: header file sync-up 2018-06-05 10:28:58 +02:00
Documentation objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
.gitignore objtool: update .gitignore file 2018-06-26 08:08:05 +08:00
arch.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
Build objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
builtin-check.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
builtin-orc.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
builtin.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
cfi.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
check.c objtool: Fix function fallthrough detection 2019-05-21 18:48:56 +02:00
check.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
elf.c objtool: Fix segfault in .cold detection with -ffunction-sections 2018-12-17 09:38:32 +01:00
elf.h objtool: Support GCC 8's cold subfunctions 2018-06-05 10:28:57 +02:00
Makefile Kbuild: fix # escaping in .cmd files for future Make 2018-07-11 16:26:45 +02:00
objtool.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
orc.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
orc_dump.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
orc_gen.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
special.c objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
special.h
sync-check.sh objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00
warn.h objtool: sync up with the 4.14.47 version of objtool 2018-06-05 10:28:57 +02:00