Pārlūkot izejas kodu

patch from Bernd Schmidt to abstract away load addresses

Mike Frysinger 18 gadi atpakaļ
vecāks
revīzija
9faf71ce68
2 mainītis faili ar 12 papildinājumiem un 3 dzēšanām
  1. 10 1
      ldso/include/dl-defs.h
  2. 2 2
      ldso/ldso/dl-startup.c

+ 10 - 1
ldso/include/dl-defs.h

@@ -1,6 +1,6 @@
 /* vi: set sw=4 ts=4: */
 /*
- * Copyright (C) 2000-2005 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 2000-2006 by Erik Andersen <andersen@codepoet.org>
  *
  * GNU Lesser General Public License version 2.1 or later.
  */
@@ -66,4 +66,13 @@ typedef struct {
 
 #endif
 
+/* Initialize a LOADADDR representing the loader itself.  It's only
+ * called from DL_BOOT, so additional arguments passed to it may be
+ * referenced.
+ */
+#ifndef DL_INIT_LOADADDR_BOOT
+# define DL_INIT_LOADADDR_BOOT(LOADADDR, BASEADDR) \
+	((LOADADDR) = (BASEADDR))
+#endif
+
 #endif	/* _LD_DEFS_H */

+ 2 - 2
ldso/ldso/dl-startup.c

@@ -4,7 +4,7 @@
  * after resolving ELF shared library symbols
  *
  * Copyright (C) 2005 by Joakim Tjernlund
- * Copyright (C) 2000-2004 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 2000-2006 by Erik Andersen <andersen@codepoet.org>
  * Copyright (c) 1994-2000 Eric Youngdale, Peter MacDonald,
  *				David Engel, Hongjiu Lu and Mitch D'Souza
  *
@@ -168,7 +168,7 @@ static void * __attribute_used__ _dl_start(unsigned long args)
 	 * (esp since SEND_STDERR() needs this on some platforms... */
 	if (!auxvt[AT_BASE].a_un.a_val)
 		auxvt[AT_BASE].a_un.a_val = elf_machine_load_address();
-	load_addr = auxvt[AT_BASE].a_un.a_val;
+	DL_INIT_LOADADDR_BOOT(load_addr, auxvt[AT_BASE].a_un.a_val);
 	header = (ElfW(Ehdr) *) auxvt[AT_BASE].a_un.a_val;
 
 	/* Check the ELF header to make sure everything looks ok.  */