فهرست منبع

Bernd Schmidt writes:
This reintroduces a mechanism identical to the DL_BOOT macro present in
older versions of uClibc. On Blackfin and FRV, we want to pass more
than one argument to _dl_start. We also want to do something special
before returning, so delete the warning when the START macro is defined.

Mike Frysinger 17 سال پیش
والد
کامیت
a9f3bfe7dd
2فایلهای تغییر یافته به همراه7 افزوده شده و 2 حذف شده
  1. 6 0
      ldso/include/dl-defs.h
  2. 1 2
      ldso/ldso/dl-startup.c

+ 6 - 0
ldso/include/dl-defs.h

@@ -66,6 +66,12 @@ typedef struct {
 
 #endif
 
+/* Provide a means for a port to pass additional arguments to the _dl_start
+   function.  */
+#ifndef DL_START
+# define DL_START(X) static void * __attribute_used__ _dl_start(X)
+#endif
+
 /* Machines in which different sections may be relocated by different
  * amounts should define this and LD_RELOC_ADDR.  If you change this,
  * make sure you change struct link_map in include/link.h accordingly

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

@@ -110,7 +110,7 @@ strong_alias(__rtld_stack_end, __libc_stack_end) /* Exported version of __rtld_s
 	NULL
 	auxvt[0...N]   Auxiliary Vector Table elements (mixed types)
 */
-static void * __attribute_used__ _dl_start(unsigned long args)
+DL_START(unsigned long args)
 {
 	unsigned int argc;
 	char **argv, **envp;
@@ -313,7 +313,6 @@ static void * __attribute_used__ _dl_start(unsigned long args)
 #ifndef START
 	return _dl_elf_main;
 #else
-#warning You need to update your arch ldso code
 	START();
 #endif
 }