summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/powerpc
diff options
context:
space:
mode:
authorJoakim Tjernlund <joakim.tjernlund@transmode.se>2004-11-17 12:29:10 +0000
committerJoakim Tjernlund <joakim.tjernlund@transmode.se>2004-11-17 12:29:10 +0000
commit67e184efcf88f28aa3c0a3cc9d132e99993e8046 (patch)
tree34e19aa071358f1004c513b25c8cdb3dccc6e3cb /libc/sysdeps/linux/powerpc
parenta5ebab17668503a0887dfcace6904d86de8b1d8f (diff)
Make __builtin_return_address() return NULL at top of
stack frame. This will make backtracing possible.
Diffstat (limited to 'libc/sysdeps/linux/powerpc')
-rw-r--r--libc/sysdeps/linux/powerpc/crt0.S16
1 files changed, 8 insertions, 8 deletions
diff --git a/libc/sysdeps/linux/powerpc/crt0.S b/libc/sysdeps/linux/powerpc/crt0.S
index 4be3e6414..fc77bdc99 100644
--- a/libc/sysdeps/linux/powerpc/crt0.S
+++ b/libc/sysdeps/linux/powerpc/crt0.S
@@ -50,6 +50,10 @@
_start:
/* Save the stack pointer, in case we're statically linked under Linux. */
mr r9,r1
+#if defined L_Scrt0 || defined L_Scrt1
+ bl _GLOBAL_OFFSET_TABLE_-4@local
+ mflr r31
+#endif
/* Set up an initial stack frame, and clear the LR. */
clrrwi r1,r1,4
li r0,0
@@ -66,28 +70,24 @@ _start:
addi r5,r5,1
rlwinm r5,r5,2,0,29
add r5,r5,r4
-#if defined L_Scrt0 || defined L_Scrt1
- bl _GLOBAL_OFFSET_TABLE_-4@local
- mflr r31
-#endif
/* Ok, now run uClibc's main() -- shouldn't return */
#if (defined L_crt1 || defined L_Scrt1) && defined __UCLIBC_CTOR_DTOR__
# ifdef L_Scrt1
lwz r6,_init@got(r31)
lwz r7,_fini@got(r31)
- bl __uClibc_start_main@plt
+ b __uClibc_start_main@plt
# else
lis r6,_init@ha # load top 16 bits
addi r6,r6,_init@l # load bottom 16 bits
lis r7,_fini@ha # load top 16 bits of &msg
addi r7,r7,_fini@l # load bottom 16 bits
- bl __uClibc_start_main
+ b __uClibc_start_main
# endif
#else
# ifdef L_Scrt0
- bl __uClibc_main@plt
+ b __uClibc_main@plt
# else
- bl __uClibc_main
+ b __uClibc_main
# endif
#endif
.size _start,.-_start