On Wed, Aug 5, 2026 at 7:30 AM Josh Poimboeuf <[email protected]> wrote:
>
> Testing klp-build with arm64 produced the following linker error during
> the original kernel build:
>
>   `__notrim.1' referenced in section `.klp.symid' of vmlinux.o: defined in 
> discarded section `.no_trim_symbol' of vmlinux.o
>
> symbol_get() puts a static __notrim[] in .no_trim_symbol, which GCC
> names __notrim.1, __notrim.2, etc.  Two or more built-in translation
> units calling symbol_get() thus produce duplicate names, resulting in
> corresponding .klp.symid references which trigger the above error.
>
> Add .no_trim_symbol to the discarded section list so its symbols don't
> get symids.
>
> Note this issue is not specific to arm64: it just needs two built-in
> symbol_get() callers.  arm64 trips over it easily because it has KVM
> always compiled in vmlinux, whereas on x86 it's typically a module.

Interesting. I didn't notice this difference between x86 and arm64.

>
> Fixes: 029223d30162 ("objtool/klp: Add .klp.symid for sympos disambiguation")
> Signed-off-by: Josh Poimboeuf <[email protected]>

Acked-by: Song Liu <[email protected]>

Reply via email to