aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/compressed/Makefile15
-rw-r--r--arch/arm/boot/compressed/head.S6
2 files changed, 17 insertions, 4 deletions
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 79b5c62746df..23aad0722303 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -120,10 +120,23 @@ lib1funcs = $(obj)/lib1funcs.o
120$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE 120$(obj)/lib1funcs.S: $(srctree)/arch/$(SRCARCH)/lib/lib1funcs.S FORCE
121 $(call cmd,shipped) 121 $(call cmd,shipped)
122 122
123# We need to prevent any GOTOFF relocs being used with references
124# to symbols in the .bss section since we cannot relocate them
125# independently from the rest at run time. This can be achieved by
126# ensuring that no private .bss symbols exist, as global symbols
127# always have a GOT entry which is what we need.
128# The .data section is already discarded by the linker script so no need
129# to bother about it here.
130check_for_bad_syms = \
131bad_syms=$$($(CROSS_COMPILE)nm $@ | sed -n 's/^.\{8\} [bc] \(.*\)/\1/p') && \
132[ -z "$$bad_syms" ] || \
133 ( echo "following symbols must have non local/private scope:" >&2; \
134 echo "$$bad_syms" >&2; rm -f $@; false )
135
123$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \ 136$(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
124 $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE 137 $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) FORCE
125 $(call if_changed,ld) 138 $(call if_changed,ld)
126 @: 139 @$(check_for_bad_syms)
127 140
128$(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE 141$(obj)/piggy.$(suffix_y): $(obj)/../Image FORCE
129 $(call if_changed,$(suffix_y)) 142 $(call if_changed,$(suffix_y))
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
index b541217bd040..8d5d91aefbb9 100644
--- a/arch/arm/boot/compressed/head.S
+++ b/arch/arm/boot/compressed/head.S
@@ -372,7 +372,7 @@ LC0: .word LC0 @ r1
372 .word input_data_end - 4 @ r10 (inflated size location) 372 .word input_data_end - 4 @ r10 (inflated size location)
373 .word _got_start @ r11 373 .word _got_start @ r11
374 .word _got_end @ ip 374 .word _got_end @ ip
375 .word user_stack_end @ sp 375 .word .L_user_stack_end @ sp
376 .size LC0, . - LC0 376 .size LC0, . - LC0
377 377
378#ifdef CONFIG_ARCH_RPC 378#ifdef CONFIG_ARCH_RPC
@@ -1100,5 +1100,5 @@ reloc_code_end:
1100 1100
1101 .align 1101 .align
1102 .section ".stack", "aw", %nobits 1102 .section ".stack", "aw", %nobits
1103user_stack: .space 4096 1103.L_user_stack: .space 4096
1104user_stack_end: 1104.L_user_stack_end: