summaryrefslogtreecommitdiffstats
path: root/arch/arm/pbl
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/pbl')
-rw-r--r--arch/arm/pbl/Makefile3
-rw-r--r--arch/arm/pbl/zbarebox.lds.S16
2 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/pbl/Makefile b/arch/arm/pbl/Makefile
index 6eeee737c8..3f50f77bc0 100644
--- a/arch/arm/pbl/Makefile
+++ b/arch/arm/pbl/Makefile
@@ -23,6 +23,9 @@ $(obj)/zbarebox.S: $(obj)/zbarebox FORCE
PBL_CPPFLAGS += -fdata-sections -ffunction-sections
LDFLAGS_zbarebox := -Map $(obj)/zbarebox.map
LDFLAGS_zbarebox += -static --gc-sections
+ifdef CONFIG_PBL_RELOCATABLE
+LDFLAGS_zbarebox += -pie
+endif
zbarebox-common := $(barebox-pbl-common) $(obj)/$(piggy_o)
zbarebox-lds := $(obj)/zbarebox.lds
diff --git a/arch/arm/pbl/zbarebox.lds.S b/arch/arm/pbl/zbarebox.lds.S
index 564b3c6170..6b23bbe79c 100644
--- a/arch/arm/pbl/zbarebox.lds.S
+++ b/arch/arm/pbl/zbarebox.lds.S
@@ -29,7 +29,11 @@ OUTPUT_ARCH(arm)
ENTRY(pbl_start)
SECTIONS
{
+#ifdef CONFIG_PBL_RELOCATABLE
+ . = 0x0;
+#else
. = TEXT_BASE - SZ_2M;
+#endif
PRE_IMAGE
@@ -58,6 +62,18 @@ SECTIONS
. = ALIGN(4);
.data : { *(.data*) }
+ .rel.dyn : {
+ __rel_dyn_start = .;
+ *(.rel*)
+ __rel_dyn_end = .;
+ }
+
+ .dynsym : {
+ __dynsym_start = .;
+ *(.dynsym)
+ __dynsym_end = .;
+ }
+
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss*) }