[PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start
Nicolas Pitre
nicolas.pitre at linaro.org
Thu Feb 4 08:49:34 PST 2016
On Thu, 4 Feb 2016, Ard Biesheuvel wrote:
> Commit b9b32bf70f2f ("ARM: use linker magic for vectors and vector stubs")
> introduced new global definitions of __vectors_start and __stubs_start,
> and changed the existing ones to have internal linkage only. However, these
> symbols are still visible to kallsyms, and due to the way the .vectors and
> .stubs sections are emitted at the base of the VMA space, these duplicate
> definitions have conflicting values.
>
> $ nm -n vmlinux |grep -E __vectors\|__stubs
> 00000000 t __vectors_start
> 00001000 t __stubs_start
> c0e77000 T __vectors_start
> c0e77020 T __stubs_start
>
> This is completely harmless by itself, since the wrong values are local
> symbols that cannot be referenced by other object files directly. However,
> since these symbols are also listed in the kallsyms symbol table in some
> cases (i.e., CONFIG_KALLSYMS_ALL=y and CONFIG_XIP_KERNEL=y), having these
> conflicting values can be confusing. So either remove them, or make them
> strictly local.
>
> Signed-off-by: Ard Biesheuvel <ard.biesheuvel at linaro.org>
Acked-by: Nicolas Pitre <nico at linaro.org>
> ---
>
> This is a separate fix for the duplicate symbols based on v4.5-rc2,
> so that it can be applied separately if desired. In that case, I will
> rebase my kallsyms series onto this patch.
>
> arch/arm/kernel/entry-armv.S | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
> index 3ce377f7251f..788e40c1254f 100644
> --- a/arch/arm/kernel/entry-armv.S
> +++ b/arch/arm/kernel/entry-armv.S
> @@ -1064,7 +1064,6 @@ ENDPROC(vector_\name)
> .endm
>
> .section .stubs, "ax", %progbits
> -__stubs_start:
> @ This must be the first word
> .word vector_swi
>
> @@ -1206,10 +1205,10 @@ vector_addrexcptn:
> .equ vector_fiq_offset, vector_fiq
>
> .section .vectors, "ax", %progbits
> -__vectors_start:
> +.L__vectors_start:
> W(b) vector_rst
> W(b) vector_und
> - W(ldr) pc, __vectors_start + 0x1000
> + W(ldr) pc, .L__vectors_start + 0x1000
> W(b) vector_pabt
> W(b) vector_dabt
> W(b) vector_addrexcptn
> --
> 2.5.0
>
>
More information about the linux-arm-kernel
mailing list