diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-07-07 23:45:58 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-07-07 23:45:58 +0000 |
commit | efed1986bc3df644fbd7b265786929dc24c42dd6 (patch) | |
tree | df23d61803d25d4971b26610fd26e3c766e3f359 | |
parent | ab4c887b2e311baa1fdad13443d7db1c8ad27c7f (diff) |
get rid of arch-specific defines in dl-startup.c and make each arch declare its requirements about initial bootstrapping
-rw-r--r-- | ldso/ldso/cris/dl-startup.h | 5 | ||||
-rw-r--r-- | ldso/ldso/dl-startup.c | 6 | ||||
-rw-r--r-- | ldso/ldso/mips/dl-startup.h | 4 |
3 files changed, 12 insertions, 3 deletions
diff --git a/ldso/ldso/cris/dl-startup.h b/ldso/ldso/cris/dl-startup.h index afc158517..191657a43 100644 --- a/ldso/ldso/cris/dl-startup.h +++ b/ldso/ldso/cris/dl-startup.h @@ -26,6 +26,11 @@ asm("" \ * do something a little more subtle here. */ #define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS)+1) + +/* We can't call functions earlier in the dl startup process */ +#define NO_FUNCS_BEFORE_BOOTSTRAP + + /* Handle relocation of the symbols in the dynamic loader. */ static inline void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr, diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c index 05871fc4a..36f50c36c 100644 --- a/ldso/ldso/dl-startup.c +++ b/ldso/ldso/dl-startup.c @@ -200,7 +200,7 @@ static void * __attribute_used__ _dl_start(unsigned long args) We are only doing ourself right now - we will have to do the rest later */ SEND_STDERR_DEBUG("Scanning DYNAMIC section ... "); tpnt->dynamic_addr = dpnt; -#if defined(__mips__) || defined(__cris__) +#if defined(NO_FUNCS_BEFORE_BOOTSTRAP) /* Some architectures cannot call functions here, must inline */ __dl_parse_dynamic_info(dpnt, tpnt->dynamic_info, NULL, load_addr); #else @@ -209,10 +209,10 @@ static void * __attribute_used__ _dl_start(unsigned long args) SEND_STDERR_DEBUG("DONE !\n"); -#if defined(__mips__) +#if defined(PERFORM_BOOTSTRAP_GOT) SEND_STDERR_DEBUG("About to do specific GOT bootstrap\n"); - /* For MIPS we have to do stuff to the GOT before we do relocations. */ + /* some arches (like MIPS) we have to tweak the GOT before relocations */ PERFORM_BOOTSTRAP_GOT(tpnt); #else diff --git a/ldso/ldso/mips/dl-startup.h b/ldso/ldso/mips/dl-startup.h index fdc5d5717..df2f25a14 100644 --- a/ldso/ldso/mips/dl-startup.h +++ b/ldso/ldso/mips/dl-startup.h @@ -70,6 +70,10 @@ asm("" #define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS)+1) +/* We can't call functions earlier in the dl startup process */ +#define NO_FUNCS_BEFORE_BOOTSTRAP + + /* * Here is a macro to perform the GOT relocation. This is only * used when bootstrapping the dynamic loader. |