Re: [PATCH v4] x86/entry: emit a symbol for register restoring thunk
flat view
From: Josh Poimboeuf <hidden>
Date: 2021-01-14 15:16:30
Also in:
lkml
On Thu, Jan 14, 2021 at 11:39:28AM +0100, Borislav Petkov wrote:
On Wed, Jan 13, 2021 at 09:56:04AM -0800, Nick Desaulniers wrote:quoted
Apologies, that was not my intention. I've sent a follow up in https://lore.kernel.org/lkml/20210113174620.958429-1-ndesaulniers@google.com/T/#u (local) since BP picked up v3 in tip x86/entry: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?h=x86/entry&id=bde718b7e154afc99e1956b18a848401ce8e1f8eIt is the topmost patch so I can rebase... Also, I replicated that text into linkage.h and removed the change over SYM_CODE_START and I've got the below. Further complaints? --- From: Nick Desaulniers <ndesaulniers@google.com> Date: Tue, 12 Jan 2021 11:46:24 -0800 Subject: [PATCH] x86/entry: Emit a symbol for register restoring thunk Arnd found a randconfig that produces the warning: arch/x86/entry/thunk_64.o: warning: objtool: missing symbol for insn at offset 0x3e when building with LLVM_IAS=1 (Clang's integrated assembler). Josh notes: With the LLVM assembler not generating section symbols, objtool has no way to reference this code when it generates ORC unwinder entries, because this code is outside of any ELF function. The limitation now being imposed by objtool is that all code must be contained in an ELF symbol. And .L symbols don't create such symbols. So basically, you can use an .L symbol *inside* a function or a code segment, you just can't use the .L symbol to contain the code using a SYM_*_START/END annotation pair. Fangrui notes that this optimization is helpful for reducing image size when compiling with -ffunction-sections and -fdata-sections. I have observed on the order of tens of thousands of symbols for the kernel images built with those flags. A patch has been authored against GNU binutils to match this behavior of not generating unused section symbols ([1]), so this will also become a problem for users of GNU binutils once they upgrade to 2.36. Omit the .L prefix on a label so that the assembler will emit an entry into the symbol table for the label, with STB_LOCAL binding. This enables objtool to generate proper unwind info here with LLVM_IAS=1 or GNU binutils 2.36+. [ bp: Massage commit message. ]
Acked-by: Josh Poimboeuf <redacted> -- Josh