From efed1986bc3df644fbd7b265786929dc24c42dd6 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Thu, 7 Jul 2005 23:45:58 +0000 Subject: get rid of arch-specific defines in dl-startup.c and make each arch declare its requirements about initial bootstrapping --- ldso/ldso/cris/dl-startup.h | 5 +++++ ldso/ldso/dl-startup.c | 6 +++--- ldso/ldso/mips/dl-startup.h | 4 ++++ 3 files changed, 12 insertions(+), 3 deletions(-) (limited to 'ldso') 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. -- cgit v1.2.3