diff options
author | Chris Zankel <chris@zankel.net> | 2012-11-13 15:16:36 -0800 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2012-12-18 21:10:20 -0800 |
commit | 6550162200b40d1e725167f8a617255c42b57552 (patch) | |
tree | 072a99de3ab75fe899254bf75d1a704d91f8916f | |
parent | 02b25d811f949fc70badd6535dfaf13a3c5decf9 (diff) |
xtensa: add config option to disable linker relaxation
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>
-rw-r--r-- | arch/xtensa/Kconfig.debug | 13 | ||||
-rw-r--r-- | arch/xtensa/Makefile | 4 |
2 files changed, 15 insertions, 2 deletions
diff --git a/arch/xtensa/Kconfig.debug b/arch/xtensa/Kconfig.debug index 11c585295dd..be5fb4c6243 100644 --- a/arch/xtensa/Kconfig.debug +++ b/arch/xtensa/Kconfig.debug @@ -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 diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile index bb5ba61723f..ab63c9beb93 100644 --- a/arch/xtensa/Makefile +++ b/arch/xtensa/Makefile @@ -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)) |