xtensa: add config option to disable linker relaxation
authorChris Zankel <chris@zankel.net>
Tue, 13 Nov 2012 23:16:36 +0000 (15:16 -0800)
committerChris Zankel <chris@zankel.net>
Wed, 19 Dec 2012 05:10:20 +0000 (21:10 -0800)
The default linker behavior is to optimize identical literal values and
remove unnecessary overhead from assembler-generated "longcall" sequences
to reduce code size. Provide an option to disable this behavior to improve
compile time.

Signed-off-by: Chris Zankel <chris@zankel.net>
arch/xtensa/Kconfig.debug
arch/xtensa/Makefile

index 11c585295dd7b830b0dcab0393ec1f4f4ec3b3f2..be5fb4c6243f06cbad370dce103d15acdbaaa700 100644 (file)
@@ -2,6 +2,15 @@ menu "Kernel hacking"
 
 source "lib/Kconfig.debug"
 
-endmenu
-
+config LD_NO_RELAX
+       bool "Disable linker relaxation"
+       default n
+       help
+         Enable this function to disable link-time optimizations.
+         The default linker behavior is to combine identical literal
+         values to reduce code size and remove unnecessary overhead from
+         assembler-generated 'longcall' sequences.
+         Enabling this option improves the link time but increases the
+         code size, and possibly execution time.
 
+endmenu
index bb5ba61723f73d4feab322008524c3d90801d38b..ab63c9beb93003f3369a9c45cf89bdb5a2e1cffb 100644 (file)
@@ -49,6 +49,10 @@ KBUILD_CFLAGS += -pipe -mlongcalls
 
 KBUILD_CFLAGS += $(call cc-option,-mforce-no-pic,)
 
+ifneq ($(CONFIG_LD_NO_RELAX),)
+LDFLAGS := --no-relax
+endif
+
 vardirs := $(patsubst %,arch/xtensa/variants/%/,$(variant-y))
 plfdirs := $(patsubst %,arch/xtensa/platforms/%/,$(platform-y))