ARM: zImage: make sure no GOTOFF relocs are used with .bss symbols

To be able to relocate the .bss section at run time independently from
the rest of the code, we must make sure that no GOTOFF relocations are
used with .bss symbols.  This usually means that no global variables can
be marked static unless they're also const.

To enforce this, suffice to fail the build whenever a private symbol
is allocated to .bss and list those symbols for convenience.

The user_stack and user_stack_end labels in head.S were converted into
non exported symbols to remove false positives.

Signed-off-by: Nicolas Pitre <nicolas.pitre@linaro.org>
Tested-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
Nicolas Pitre
2011-04-27 14:54:39 -04:00
committed by Nicolas Pitre
parent 8ea0de4b88
commit 8d7e4cc2c8
2 changed files with 17 additions and 4 deletions

View File

@@ -372,7 +372,7 @@ LC0: .word LC0 @ r1
.word input_data_end - 4 @ r10 (inflated size location)
.word _got_start @ r11
.word _got_end @ ip
.word user_stack_end @ sp
.word .L_user_stack_end @ sp
.size LC0, . - LC0
#ifdef CONFIG_ARCH_RPC
@@ -1100,5 +1100,5 @@ reloc_code_end:
.align
.section ".stack", "aw", %nobits
user_stack: .space 4096
user_stack_end:
.L_user_stack: .space 4096
.L_user_stack_end: