From 0311d1dd17ca88da6edd61b6535ec8637642dfe4 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Sat, 14 Dec 2013 19:51:48 -0500 Subject: fix dynamic linker entry point for microblaze the ABI allows the callee to clobber stack slots that correspond to arguments passed in registers, so the caller must adjust the stack pointer to reserve space appropriately. prior to this fix, the argv array was possibly clobbered by dynamic linker code before passing control to the main program. --- src/ldso/microblaze/start.s | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ldso/microblaze/start.s b/src/ldso/microblaze/start.s index 5ffbcbae..4e0a0e50 100644 --- a/src/ldso/microblaze/start.s +++ b/src/ldso/microblaze/start.s @@ -9,11 +9,12 @@ _start: addi r7, r7, _GLOBAL_OFFSET_TABLE_+8 addi r7, r7, _DYNAMIC@GOTOFF brlid r15, __reloc_self@PLT - nop + addik r1, r1, -16 - lwi r5, r1, 0 + lwi r5, r1, 16 brlid r15, __dynlink@PLT - addi r6, r1, 4 + addi r6, r1, 20 + addik r1, r1, 16 lwi r4, r1, 0 1: lwi r5, r1, 4 -- cgit v1.2.1