diff options
Diffstat (limited to 'arch/arm/pbl')
-rw-r--r-- | arch/arm/pbl/Makefile | 3 | ||||
-rw-r--r-- | arch/arm/pbl/zbarebox.lds.S | 16 |
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*) } |