Message ID | 20220713173503.3889486-1-nathan@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 33f32e5072b6cc84d1b130a3ad485849bcec907a |
Delegated to: | BPF |
Headers | show |
Series | bpf, arm64: Mark dummy_tramp as global | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
bpf/vmtest-bpf-next-PR | success | PR summary |
bpf/vmtest-bpf-next-VM_Test-1 | success | Logs for Kernel LATEST on ubuntu-latest with gcc |
bpf/vmtest-bpf-next-VM_Test-2 | success | Logs for Kernel LATEST on ubuntu-latest with llvm-15 |
bpf/vmtest-bpf-next-VM_Test-3 | success | Logs for Kernel LATEST on z15 with gcc |
On Wed, Jul 13, 2022 at 10:35 AM Nathan Chancellor <nathan@kernel.org> wrote: > > When building with clang + CONFIG_CFI_CLANG=y, the following error > occurs at link time: > > ld.lld: error: undefined symbol: dummy_tramp > > dummy_tramp is declared globally in C but its definition in inline > assembly does not use .global, which prevents clang from properly > resolving the references to it when creating the CFI jump tables. > > Mark dummy_tramp as global so that the reference can be properly > resolved. > > Fixes: b2ad54e1533e ("bpf, arm64: Implement bpf_arch_text_poke() for arm64") > Link: https://github.com/ClangBuiltLinux/linux/issues/1661 > Suggested-by: Sami Tolvanen <samitolvanen@google.com> > Signed-off-by: Nathan Chancellor <nathan@kernel.org> Reviewed-by: Stanislav Fomichev <sdf@google.com> > --- > arch/arm64/net/bpf_jit_comp.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c > index fd1cb0d2aaa6..dcc572b7d4da 100644 > --- a/arch/arm64/net/bpf_jit_comp.c > +++ b/arch/arm64/net/bpf_jit_comp.c > @@ -604,6 +604,7 @@ void dummy_tramp(void); > > asm ( > " .pushsection .text, \"ax\", @progbits\n" > +" .global dummy_tramp\n" > " .type dummy_tramp, %function\n" > "dummy_tramp:" > #if IS_ENABLED(CONFIG_ARM64_BTI_KERNEL) > > base-commit: ace2bee839e08df324cb320763258dfd72e6120e > -- > 2.37.1 >
Hello: This patch was applied to bpf/bpf-next.git (master) by Daniel Borkmann <daniel@iogearbox.net>: On Wed, 13 Jul 2022 10:35:03 -0700 you wrote: > When building with clang + CONFIG_CFI_CLANG=y, the following error > occurs at link time: > > ld.lld: error: undefined symbol: dummy_tramp > > dummy_tramp is declared globally in C but its definition in inline > assembly does not use .global, which prevents clang from properly > resolving the references to it when creating the CFI jump tables. > > [...] Here is the summary with links: - bpf, arm64: Mark dummy_tramp as global https://git.kernel.org/bpf/bpf-next/c/33f32e5072b6 You are awesome, thank you!
diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c index fd1cb0d2aaa6..dcc572b7d4da 100644 --- a/arch/arm64/net/bpf_jit_comp.c +++ b/arch/arm64/net/bpf_jit_comp.c @@ -604,6 +604,7 @@ void dummy_tramp(void); asm ( " .pushsection .text, \"ax\", @progbits\n" +" .global dummy_tramp\n" " .type dummy_tramp, %function\n" "dummy_tramp:" #if IS_ENABLED(CONFIG_ARM64_BTI_KERNEL)
When building with clang + CONFIG_CFI_CLANG=y, the following error occurs at link time: ld.lld: error: undefined symbol: dummy_tramp dummy_tramp is declared globally in C but its definition in inline assembly does not use .global, which prevents clang from properly resolving the references to it when creating the CFI jump tables. Mark dummy_tramp as global so that the reference can be properly resolved. Fixes: b2ad54e1533e ("bpf, arm64: Implement bpf_arch_text_poke() for arm64") Link: https://github.com/ClangBuiltLinux/linux/issues/1661 Suggested-by: Sami Tolvanen <samitolvanen@google.com> Signed-off-by: Nathan Chancellor <nathan@kernel.org> --- arch/arm64/net/bpf_jit_comp.c | 1 + 1 file changed, 1 insertion(+) base-commit: ace2bee839e08df324cb320763258dfd72e6120e