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

vapier at uclibc.org vapier at uclibc.org
Fri Jul 8 02:01:25 UTC 2005


Author: vapier
Date: 2005-07-07 20:01:24 -0600 (Thu, 07 Jul 2005)
New Revision: 10744

Log:
fix GET_ARGV() so it pulls out the argc/argv/envp properly

Modified:
   trunk/uClibc/ldso/ldso/x86_64/dl-startup.h


Changeset:
Modified: trunk/uClibc/ldso/ldso/x86_64/dl-startup.h
===================================================================
--- trunk/uClibc/ldso/ldso/x86_64/dl-startup.h	2005-07-07 23:45:58 UTC (rev 10743)
+++ trunk/uClibc/ldso/ldso/x86_64/dl-startup.h	2005-07-08 02:01:24 UTC (rev 10744)
@@ -1,7 +1,10 @@
 /* vi: set sw=4 ts=4: */
 /*
  * Architecture specific code used by dl-startup.c
- * Copyright (C) 2000-2004 by Erik Andersen <andersen at codepoet.org>
+ * Copyright (C) 2000-2005 by Erik Andersen <andersen at codepoet.org>
+ * Copyright (C) 2005 by Mike Frysinger <vapier at gentoo.org>
+ *
+ * Parts taken from glibc/sysdeps/x86_64/dl-machine.h
  */
 asm(
 	"	.text\n"
@@ -24,6 +27,8 @@
 	"	subl %eax, %edx\n"
 	"	# Push argc back on the stack.\n"
 	"	pushq %rdx\n"
+	"	# argc -> rsi\n"
+	"	movq %rdx, %rsi\n"
 	"	# Pass our finalizer function to the user in %rdx, as per ELF ABI.\n"
 	"	leaq _dl_fini(%rip), %rdx\n"
 	"	# And make sure %rsp points to argc stored on the stack.\n"
@@ -37,7 +42,7 @@
 /* Get a pointer to the argv array.  On many platforms this can be just
  * the address if the first argument, on other platforms we need to
  * do something a little more subtle here.  */
-#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) & ARGS)+1)
+#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) ARGS)+1)
 
 /* Handle relocation of the symbols in the dynamic loader. */
 static __always_inline




More information about the uClibc-cvs mailing list