diff options
Diffstat (limited to 'arch/arm/lib')
| -rw-r--r-- | arch/arm/lib/relocate.S | 11 | ||||
| -rw-r--r-- | arch/arm/lib/sections.c | 2 | 
2 files changed, 4 insertions, 9 deletions
| diff --git a/arch/arm/lib/relocate.S b/arch/arm/lib/relocate.S index 3767a9550..3f444c1d2 100644 --- a/arch/arm/lib/relocate.S +++ b/arch/arm/lib/relocate.S @@ -55,10 +55,8 @@ copy_loop:  	/*  	 * fix .rel.dyn relocations  	 */ -	ldr	r2, _rel_dyn_start_ofs	/* r2 <- __rel_dyn_start local ofs */ -	add	r2, r2, r7		/* r2 <- SRC &__rel_dyn_start */ -	ldr	r3, _rel_dyn_end_ofs	/* r3 <- __rel_dyn_end local ofs */ -	add	r3, r3, r7		/* r3 <- SRC &__rel_dyn_end */ +	ldr	r2, =__rel_dyn_start	/* r2 <- SRC &__rel_dyn_start */ +	ldr	r3, =__rel_dyn_end	/* r3 <- SRC &__rel_dyn_end */  fixloop:  	ldr	r0, [r2]		/* r0 <- SRC location to fix up */  	add	r0, r0, r9		/* r0 <- DST location to fix up */ @@ -88,9 +86,4 @@ relocate_done:          bx        lr  #endif -_rel_dyn_start_ofs: -	.word __rel_dyn_start - relocate_code -_rel_dyn_end_ofs: -	.word __rel_dyn_end - relocate_code -  ENDPROC(relocate_code) diff --git a/arch/arm/lib/sections.c b/arch/arm/lib/sections.c index 03e846fa2..5921dd8d6 100644 --- a/arch/arm/lib/sections.c +++ b/arch/arm/lib/sections.c @@ -39,3 +39,5 @@ char __bss_start[0] __attribute__((section(".__bss_start")));  char __bss_end[0] __attribute__((section(".__bss_end")));  char __image_copy_start[0] __attribute__((section(".__image_copy_start")));  char __image_copy_end[0] __attribute__((section(".__image_copy_end"))); +char __rel_dyn_start[0] __attribute__((section(".__rel_dyn_start"))); +char __rel_dyn_end[0] __attribute__((section(".__rel_dyn_end"))); |