diff mbox

[U-Boot,11/12] sh: generate position independent code for all platforms

Message ID 1470507672-1188-12-git-send-email-vz@mleia.com
State Accepted
Commit 76a55989b180d1d9ab273fde01e5b2a18413fadf
Delegated to: Nobuhiro Iwamatsu
Headers show

Commit Message

Vladimir Zapolskiy Aug. 6, 2016, 6:21 p.m. UTC
Finally add fpic compilation option to produce relocatable code.
Note that this requires to define CONFIG_NEEDS_MANUAL_RELOC for all
board files, also relocation support still has some limitations
(e.g. a developer should care not to overwrite the executing code or
memset() with zeroes not yet relocated data on malloc init etc.),
which may be fixed while switching to PIE.

Due to short investigation the architecture code is not ready for PIE
linking, this will require some manipulations with .dyn* sections.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
---
 arch/sh/config.mk      | 1 +
 arch/sh/cpu/u-boot.lds | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/arch/sh/config.mk b/arch/sh/config.mk
index 673ed8d..71540c8 100644
--- a/arch/sh/config.mk
+++ b/arch/sh/config.mk
@@ -15,5 +15,6 @@  CONFIG_STANDALONE_LOAD_ADDR += -EB
 endif
 
 PLATFORM_CPPFLAGS += -DCONFIG_SH -D__SH__
+PLATFORM_RELFLAGS += -fpic
 LDFLAGS_FINAL = --gc-sections
 PLATFORM_RELFLAGS += -ffixed-r13
diff --git a/arch/sh/cpu/u-boot.lds b/arch/sh/cpu/u-boot.lds
index f2e48c6..bbf9ff4 100644
--- a/arch/sh/cpu/u-boot.lds
+++ b/arch/sh/cpu/u-boot.lds
@@ -60,7 +60,7 @@  SECTIONS
 	PROVIDE (_fgot = .);
 	.got :
 	{
-		*(.got)
+		*(.got.plt) *(.got)
 		. = ALIGN(4);
 	} >ram
 	PROVIDE (_egot = .);