]> git.baikalelectronics.ru Git - kernel.git/commit
objtool: Support Clang non-section symbols in ORC generation
authorJosh Poimboeuf <jpoimboe@redhat.com>
Wed, 1 Apr 2020 18:23:27 +0000 (13:23 -0500)
committerBorislav Petkov <bp@suse.de>
Tue, 14 Apr 2020 10:03:42 +0000 (12:03 +0200)
commit0b7865394765f1abd48916ab5d2880bfbe0e44ac
tree3bab982c6dd8727e96181ada8f9cf0ca0638f58f
parentd9698029ecbc98a2527926466b31598cdac3a62e
objtool: Support Clang non-section symbols in ORC generation

When compiling the kernel with AS=clang, objtool produces a lot of
warnings:

  warning: objtool: missing symbol for section .text
  warning: objtool: missing symbol for section .init.text
  warning: objtool: missing symbol for section .ref.text

It then fails to generate the ORC table.

The problem is that objtool assumes text section symbols always exist.
But the Clang assembler is aggressive about removing them.

When generating relocations for the ORC table, objtool always tries to
reference instructions by their section symbol offset.  If the section
symbol doesn't exist, it bails.

Do a fallback: when a section symbol isn't available, reference a
function symbol instead.

Reported-by: Dmitry Golovin <dima@golovin.in>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Miroslav Benes <mbenes@suse.cz>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://github.com/ClangBuiltLinux/linux/issues/669
Link: https://lkml.kernel.org/r/9a9cae7fcf628843aabe5a086b1a3c5bf50f42e8.1585761021.git.jpoimboe@redhat.com
tools/objtool/orc_gen.c