Message ID | 1454574705-15109-1-git-send-email-ard.biesheuvel@linaro.org |
---|---|
State | Accepted |
Commit | b48da55830c40077deafdda388feb819c8c19431 |
Headers | show |
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@linaro.org> Acked-by: Nicolas Pitre <nico@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 > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
On 4 February 2016 at 17:49, Nicolas Pitre <nicolas.pitre@linaro.org> wrote: > 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@linaro.org> > > Acked-by: Nicolas Pitre <nico@linaro.org> > Thanks. Submitted as 8514/1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
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
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@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(-) -- 2.5.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel