From a9f3bfe7dd2f2b3f690ff88d9ce83858f9b85b6d Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Fri, 17 Nov 2006 06:07:30 +0000 Subject: 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. --- ldso/include/dl-defs.h | 6 ++++++ ldso/ldso/dl-startup.c | 3 +-- 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'ldso') diff --git a/ldso/include/dl-defs.h b/ldso/include/dl-defs.h index 18eff43c1..a8f6d6aae 100644 --- a/ldso/include/dl-defs.h +++ b/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 diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c index 69398268b..5cf1d049e 100644 --- a/ldso/ldso/dl-startup.c +++ b/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 } -- cgit v1.2.3