summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2005-07-07 23:45:58 +0000
committerMike Frysinger <vapier@gentoo.org>2005-07-07 23:45:58 +0000
commitefed1986bc3df644fbd7b265786929dc24c42dd6 (patch)
treedf23d61803d25d4971b26610fd26e3c766e3f359
parentab4c887b2e311baa1fdad13443d7db1c8ad27c7f (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.h5
-rw-r--r--ldso/ldso/dl-startup.c6
-rw-r--r--ldso/ldso/mips/dl-startup.h4
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.