about summary refs log tree commit diff
path: root/sysdeps/powerpc/powerpc64/dl-machine.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc/powerpc64/dl-machine.h')
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.h35
1 files changed, 20 insertions, 15 deletions
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
index 3edbadf6a4..2a090ec96e 100644
--- a/sysdeps/powerpc/powerpc64/dl-machine.h
+++ b/sysdeps/powerpc/powerpc64/dl-machine.h
@@ -194,6 +194,15 @@ elf_machine_dynamic (void)
   strong_alias (_dl_runtime_resolve, _dl_profile_resolve);
 #endif
 
+#ifdef HAVE_INLINED_SYSCALLS
+/* We do not need _dl_starting_up.  */
+# define DL_STARTING_UP_DEF
+#else
+# define DL_STARTING_UP_DEF \
+".LC__dl_starting_up:\n"  \
+"	.tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n"
+#endif
+
 
 /* Initial entry point code for the dynamic linker.  The C function
    `_dl_start' is the real entry point; its return value is the user
@@ -239,17 +248,16 @@ elf_machine_dynamic (void)
 "_dl_start_user:\n"							\
 "	.quad	._dl_start_user, .TOC.@tocbase, 0\n"			\
 "	.previous\n"							\
-"	.section	\".toc\",\"aw\"\n"  \
-".LC__dl_starting_up:\n"  \
-"	.tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n"  \
-".LC__rtld_global:\n"  \
-"	.tc _rtld_global[TC],_rtld_global\n"  \
-".LC__dl_argc:\n"  \
-"	.tc _dl_argc[TC],_dl_argc\n"  \
-".LC__dl_argv:\n"  \
-"	.tc _dl_argv_internal[TC],_dl_argv_internal\n"  \
-".LC__dl_fini:\n"  \
-"	.tc _dl_fini[TC],_dl_fini\n"  \
+"	.section	\".toc\",\"aw\"\n"				\
+DL_STARTING_UP_DEF							\
+".LC__rtld_global:\n"							\
+"	.tc _rtld_global[TC],_rtld_global\n"				\
+".LC__dl_argc:\n"							\
+"	.tc _dl_argc[TC],_dl_argc\n"					\
+".LC__dl_argv:\n"							\
+"	.tc _dl_argv_internal[TC],_dl_argv_internal\n"			\
+".LC__dl_fini:\n"							\
+"	.tc _dl_fini[TC],_dl_fini\n"					\
 "	.previous\n"							\
 "	.globl	._dl_start_user\n"					\
 "	.type	._dl_start_user,@function\n"				\
@@ -291,8 +299,7 @@ elf_machine_dynamic (void)
 "	addi	6,6,8\n"						\
 /* Pass a termination function pointer (in this case _dl_fini) in	\
    r7.  */								\
-"	ld	7,.LC__dl_fini@toc(2)\n"					\
-"	ld 	26,.LC__dl_starting_up@toc(2)\n"				\
+"	ld	7,.LC__dl_fini@toc(2)\n"				\
 /* Pass the stack pointer in r1 (so far so good), pointing to a NULL	\
    value.  This lets our startup code distinguish between a program	\
    linked statically, which linux will call with argc on top of the	\
@@ -307,8 +314,6 @@ elf_machine_dynamic (void)
 "	std	31,8(1)\n"						\
 "	std	31,16(1)\n"						\
 "	std	31,24(1)\n"						\
-/* Clear _dl_starting_up.  */						\
-"	stw	31,0(26)\n"						\
 /* Now, call the start function descriptor at r30...  */		\
 "	.globl	._dl_main_dispatch\n"  \
 "._dl_main_dispatch:\n"  \