[uClibc-cvs] svn commit: trunk/uClibc/ldso/ldso: powerpc

jocke at uclibc.org jocke at uclibc.org
Sun Apr 3 19:16:56 UTC 2005


Author: jocke
Date: 2005-04-03 13:16:55 -0600 (Sun, 03 Apr 2005)
New Revision: 10071

Log:
Prepare PowerPC some more for standalone exection of ldso.
Note that every arch that wants to support standalone execution needs
to align its stack pointer in crtX since ldso will adjust the stack pointer
when adjusting argc and argv in standalone mode.


Modified:
   trunk/uClibc/ldso/ldso/ldso.c
   trunk/uClibc/ldso/ldso/powerpc/dl-startup.h


Changeset:
Modified: trunk/uClibc/ldso/ldso/ldso.c
===================================================================
--- trunk/uClibc/ldso/ldso/ldso.c	2005-04-01 20:17:12 UTC (rev 10070)
+++ trunk/uClibc/ldso/ldso/ldso.c	2005-04-03 19:16:55 UTC (rev 10071)
@@ -59,6 +59,9 @@
 int   _dl_debug_file      = 2;
 #endif
 
+/* Needed for standalone execution. */
+unsigned long attribute_hidden _dl_skip_args = 0;
+
 #include "dl-startup.c"
 /* Forward function declarations */
 static int _dl_suid_ok(void);

Modified: trunk/uClibc/ldso/ldso/powerpc/dl-startup.h
===================================================================
--- trunk/uClibc/ldso/ldso/powerpc/dl-startup.h	2005-04-01 20:17:12 UTC (rev 10070)
+++ trunk/uClibc/ldso/ldso/powerpc/dl-startup.h	2005-04-03 19:16:55 UTC (rev 10071)
@@ -19,6 +19,12 @@
     "	bl	_GLOBAL_OFFSET_TABLE_-4 at local\n" /*  Put our GOT pointer in r31, */
     "	mflr	31\n"
     "	addi	1,1,16\n" /* Restore SP */
+    "	lwz	7,_dl_skip_args at got(31)\n" /* load EA of _dl_skip_args */
+    "	lwz	7,0(7)\n"	/* Load word from _dl_skip_args */
+    "	lwz	8,0(1)\n"	/* Load argc from stack */
+    "	subf	8,7,8\n"	/* Subtract _dl_skip_args from argc. */
+    "	slwi	7,7,2\n"	/* Multiply by 4 */
+    "	stwux	8,1,7\n"	/* Adjust the stack pointer to skip _dl_skip_args words and store adjusted argc on stack. */
 #if 0
     /* Try beeing SVR4 ABI compliant?, even though it is not needed for uClibc on Linux */
     /* argc */




More information about the uClibc-cvs mailing list