linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start
@ 2016-02-04  8:31 Ard Biesheuvel
  2016-02-04 14:25 ` Chris Brandt
  2016-02-04 16:49 ` Nicolas Pitre
  0 siblings, 2 replies; 4+ messages in thread
From: Ard Biesheuvel @ 2016-02-04  8:31 UTC (permalink / raw)
  To: linux-arm-kernel

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(-)

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

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start
  2016-02-04  8:31 [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start Ard Biesheuvel
@ 2016-02-04 14:25 ` Chris Brandt
  2016-02-04 16:49 ` Nicolas Pitre
  1 sibling, 0 replies; 4+ messages in thread
From: Chris Brandt @ 2016-02-04 14:25 UTC (permalink / raw)
  To: linux-arm-kernel

On 4 Feb 2016, Ard Biesheuvel wrote:

> 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(-)
>
> 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


Tested with ARCH_R7S72100 with CONFIG_XIP_KERNEL=y and CONFIG_XIP_KERNEL=n

Duplicate symbols are gone, and boots fine (given the other patches from "[PATCH 0/3] kallsyms: remove special handling for CONFIG_ARM" for the CONFIG_XIP_KERNEL=y case) 


Acked-by: Chris Brandt <chris.brandt@renesas.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start
  2016-02-04  8:31 [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start Ard Biesheuvel
  2016-02-04 14:25 ` Chris Brandt
@ 2016-02-04 16:49 ` Nicolas Pitre
  2016-02-05  9:05   ` Ard Biesheuvel
  1 sibling, 1 reply; 4+ messages in thread
From: Nicolas Pitre @ 2016-02-04 16:49 UTC (permalink / raw)
  To: linux-arm-kernel

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
> 
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start
  2016-02-04 16:49 ` Nicolas Pitre
@ 2016-02-05  9:05   ` Ard Biesheuvel
  0 siblings, 0 replies; 4+ messages in thread
From: Ard Biesheuvel @ 2016-02-05  9:05 UTC (permalink / raw)
  To: 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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-02-05  9:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-04  8:31 [PATCH] ARM: remove duplicate definitions of __vectors_start and __stubs_start Ard Biesheuvel
2016-02-04 14:25 ` Chris Brandt
2016-02-04 16:49 ` Nicolas Pitre
2016-02-05  9:05   ` Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).