Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
a9f3bfe7dd
2 değiştirilmiş dosya ile 7 ekleme ve 2 silme
  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
 }