summaryrefslogtreecommitdiff
path: root/ldso
diff options
context:
space:
mode:
Diffstat (limited to 'ldso')
-rw-r--r--ldso/ldso/arm/dl-startup.h2
-rw-r--r--ldso/ldso/avr32/dl-startup.h11
-rw-r--r--ldso/ldso/bfin/dl-startup.h2
-rw-r--r--ldso/ldso/cris/dl-startup.h2
-rw-r--r--ldso/ldso/dl-startup.c31
-rw-r--r--ldso/ldso/frv/dl-startup.h2
-rw-r--r--ldso/ldso/i386/dl-startup.h2
-rw-r--r--ldso/ldso/m68k/dl-startup.h2
-rw-r--r--ldso/ldso/mips/dl-startup.h2
-rw-r--r--ldso/ldso/powerpc/dl-startup.h2
-rw-r--r--ldso/ldso/sh/dl-startup.h2
-rw-r--r--ldso/ldso/sh64/dl-startup.h2
-rw-r--r--ldso/ldso/sparc/dl-startup.h2
-rw-r--r--ldso/ldso/x86_64/dl-startup.h2
14 files changed, 23 insertions, 43 deletions
diff --git a/ldso/ldso/arm/dl-startup.h b/ldso/ldso/arm/dl-startup.h
index 73edbffa7..a95389d98 100644
--- a/ldso/ldso/arm/dl-startup.h
+++ b/ldso/ldso/arm/dl-startup.h
@@ -131,7 +131,7 @@ __asm__(
/* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. */
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*)ARGS)+1)
diff --git a/ldso/ldso/avr32/dl-startup.h b/ldso/ldso/avr32/dl-startup.h
index 3b8bf4ce2..066f65fc2 100644
--- a/ldso/ldso/avr32/dl-startup.h
+++ b/ldso/ldso/avr32/dl-startup.h
@@ -41,7 +41,7 @@ __asm__(" .text\n"
" .previous\n");
/* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. */
#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long *)ARGS + 1)
@@ -101,12 +101,3 @@ void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
_dl_exit(1);
}
}
-
-/* Transfer control to the user's application, once the dynamic loader
- * is done. This routine has to exit the current function, then call
- * the _dl_elf_main function.
- *
- * Since our _dl_boot will simply call whatever is returned by
- * _dl_boot2, we can just return the address we're supposed to
- * call. */
-#define START() return _dl_elf_main;
diff --git a/ldso/ldso/bfin/dl-startup.h b/ldso/ldso/bfin/dl-startup.h
index a1e150e27..ea62dada2 100644
--- a/ldso/ldso/bfin/dl-startup.h
+++ b/ldso/ldso/bfin/dl-startup.h
@@ -100,7 +100,7 @@ struct elf32_fdpic_loadmap;
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here.
*/
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) ARGS) + 1)
diff --git a/ldso/ldso/cris/dl-startup.h b/ldso/ldso/cris/dl-startup.h
index dc9cd8fe2..0bc48f878 100644
--- a/ldso/ldso/cris/dl-startup.h
+++ b/ldso/ldso/cris/dl-startup.h
@@ -43,7 +43,7 @@ __asm__("" \
#endif /* __arch_v32 */
/* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. */
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS)+1)
diff --git a/ldso/ldso/dl-startup.c b/ldso/ldso/dl-startup.c
index 42fb44e9c..efd02da46 100644
--- a/ldso/ldso/dl-startup.c
+++ b/ldso/ldso/dl-startup.c
@@ -95,7 +95,7 @@
#include "dl-startup.h"
/* Static declarations */
-int (*_dl_elf_main) (int, char **, char **);
+static int (*_dl_elf_main) (int, char **, char **);
static void* __rtld_stack_end; /* Points to argc on stack, e.g *((long *)__rtld_stackend) == argc */
strong_alias(__rtld_stack_end, __libc_stack_end) /* Exported version of __rtld_stack_end */
@@ -103,8 +103,7 @@ strong_alias(__rtld_stack_end, __libc_stack_end) /* Exported version of __rtld_s
/* When we enter this piece of code, the program stack looks like this:
argc argument counter (integer)
argv[0] program name (pointer)
- argv[1...N] program args (pointers)
- argv[argc-1] end of args (integer)
+ argv[1..argc-1] program args (pointers)
NULL
env[0...N] environment variables (pointers)
NULL
@@ -123,7 +122,7 @@ DL_START(unsigned long args)
ElfW(auxv_t) auxvt[AT_EGID + 1];
ElfW(Dyn) *dpnt;
- /* WARNING! -- we cannot make _any_ funtion calls until we have
+ /* WARNING! -- we cannot make _any_ function calls until we have
* taken care of fixing up our own relocations. Making static
* inline calls is ok, but _no_ function calls. Not yet
* anyways. */
@@ -131,12 +130,12 @@ DL_START(unsigned long args)
/* First obtain the information on the stack that tells us more about
what binary is loaded, where it is loaded, etc, etc */
GET_ARGV(aux_dat, args);
- argc = *(aux_dat - 1);
+ argc = aux_dat[-1];
argv = (char **) aux_dat;
aux_dat += argc; /* Skip over the argv pointers */
aux_dat++; /* Skip over NULL at end of argv */
envp = (char **) aux_dat;
-#ifndef NO_EARLY_SEND_STDERR
+#if !defined(NO_EARLY_SEND_STDERR)
SEND_EARLY_STDERR_DEBUG("argc=");
SEND_NUMBER_STDERR_DEBUG(argc, 0);
SEND_EARLY_STDERR_DEBUG(" argv=");
@@ -195,7 +194,7 @@ DL_START(unsigned long args)
DL_BOOT_COMPUTE_GOT(got);
/* Now, finally, fix up the location of the dynamic stuff */
- DL_BOOT_COMPUTE_DYN (dpnt, got, load_addr);
+ DL_BOOT_COMPUTE_DYN(dpnt, got, load_addr);
SEND_EARLY_STDERR_DEBUG("First Dynamic section entry=");
SEND_ADDRESS_STDERR_DEBUG(dpnt, 1);
@@ -215,11 +214,9 @@ DL_START(unsigned long args)
SEND_EARLY_STDERR_DEBUG("Done scanning DYNAMIC section\n");
#if defined(PERFORM_BOOTSTRAP_GOT)
-
SEND_EARLY_STDERR_DEBUG("About to do specific GOT bootstrap\n");
/* some arches (like MIPS) we have to tweak the GOT before relocations */
PERFORM_BOOTSTRAP_GOT(tpnt);
-
#endif
#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
@@ -229,13 +226,12 @@ DL_START(unsigned long args)
SEND_EARLY_STDERR_DEBUG("About to do library loader relocations\n");
{
- int goof, indx;
-#ifdef ELF_MACHINE_PLTREL_OVERLAP
+ int indx;
+#if defined(ELF_MACHINE_PLTREL_OVERLAP)
# define INDX_MAX 1
#else
# define INDX_MAX 2
#endif
- goof = 0;
for (indx = 0; indx < INDX_MAX; indx++) {
unsigned int i;
unsigned long *reloc_addr;
@@ -278,8 +274,7 @@ DL_START(unsigned long args)
strtab = (char *) tpnt->dynamic_info[DT_STRTAB];
sym = &symtab[symtab_index];
symbol_addr = (unsigned long) DL_RELOC_ADDR(load_addr, sym->st_value);
-
-#ifndef EARLY_STDERR_SPECIAL
+#if !defined(EARLY_STDERR_SPECIAL)
SEND_STDERR_DEBUG("relocating symbol: ");
SEND_STDERR_DEBUG(strtab + sym->st_name);
SEND_STDERR_DEBUG("\n");
@@ -291,14 +286,9 @@ DL_START(unsigned long args)
PERFORM_BOOTSTRAP_RELOC(rpnt, reloc_addr, symbol_addr, load_addr, sym);
}
}
-
- if (goof) {
- _dl_exit(14);
- }
}
#endif
- /* Wahoo!!! */
SEND_STDERR_DEBUG("Done relocating ldso; we can now use globals and make function calls!\n");
/* Now we have done the mandatory linking of some things. We are now
@@ -311,13 +301,12 @@ DL_START(unsigned long args)
_dl_get_ready_to_run(tpnt, load_addr, auxvt, envp, argv
DL_GET_READY_TO_RUN_EXTRA_ARGS);
-
/* Transfer control to the application. */
SEND_STDERR_DEBUG("transfering control to application @ ");
_dl_elf_main = (int (*)(int, char **, char **)) auxvt[AT_ENTRY].a_un.a_val;
SEND_ADDRESS_STDERR_DEBUG(_dl_elf_main, 1);
-#ifndef START
+#if !defined(START)
return _dl_elf_main;
#else
START();
diff --git a/ldso/ldso/frv/dl-startup.h b/ldso/ldso/frv/dl-startup.h
index 674f81c15..72bea6807 100644
--- a/ldso/ldso/frv/dl-startup.h
+++ b/ldso/ldso/frv/dl-startup.h
@@ -76,7 +76,7 @@ struct elf32_fdpic_loadmap;
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here.
*/
#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long*) ARGS)
diff --git a/ldso/ldso/i386/dl-startup.h b/ldso/ldso/i386/dl-startup.h
index 45f69b85d..0c3451488 100644
--- a/ldso/ldso/i386/dl-startup.h
+++ b/ldso/ldso/i386/dl-startup.h
@@ -35,7 +35,7 @@ __asm__ (
);
/* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. */
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) & ARGS)+1)
diff --git a/ldso/ldso/m68k/dl-startup.h b/ldso/ldso/m68k/dl-startup.h
index 2ed9ead50..2c38102a3 100644
--- a/ldso/ldso/m68k/dl-startup.h
+++ b/ldso/ldso/m68k/dl-startup.h
@@ -40,7 +40,7 @@ _dl_start_user:\n\
.previous");
/* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. */
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS) + 1)
diff --git a/ldso/ldso/mips/dl-startup.h b/ldso/ldso/mips/dl-startup.h
index 606b162a3..31730d4ad 100644
--- a/ldso/ldso/mips/dl-startup.h
+++ b/ldso/ldso/mips/dl-startup.h
@@ -111,7 +111,7 @@ __asm__(""
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here.
*/
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *) ARGS)+1)
diff --git a/ldso/ldso/powerpc/dl-startup.h b/ldso/ldso/powerpc/dl-startup.h
index 50e72c3ee..e471aa033 100644
--- a/ldso/ldso/powerpc/dl-startup.h
+++ b/ldso/ldso/powerpc/dl-startup.h
@@ -60,7 +60,7 @@ __asm__(
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here.
*/
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) ARGS)+1)
diff --git a/ldso/ldso/sh/dl-startup.h b/ldso/ldso/sh/dl-startup.h
index 7a3fdf235..ae7e2248d 100644
--- a/ldso/ldso/sh/dl-startup.h
+++ b/ldso/ldso/sh/dl-startup.h
@@ -32,7 +32,7 @@ __asm__(
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here.
*/
#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long*) ARGS)
diff --git a/ldso/ldso/sh64/dl-startup.h b/ldso/ldso/sh64/dl-startup.h
index 33512a9bc..753134114 100644
--- a/ldso/ldso/sh64/dl-startup.h
+++ b/ldso/ldso/sh64/dl-startup.h
@@ -32,7 +32,7 @@ __asm__("" \
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here.
*/
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long *)ARGS)+1)
diff --git a/ldso/ldso/sparc/dl-startup.h b/ldso/ldso/sparc/dl-startup.h
index cc11ec103..1abad1121 100644
--- a/ldso/ldso/sparc/dl-startup.h
+++ b/ldso/ldso/sparc/dl-startup.h
@@ -47,7 +47,7 @@ _dl_start_user:\n\
/*
* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. We assume that argc is stored
* at the word just below the argvp that we return here.
*/
diff --git a/ldso/ldso/x86_64/dl-startup.h b/ldso/ldso/x86_64/dl-startup.h
index 6da888068..7e05846dd 100644
--- a/ldso/ldso/x86_64/dl-startup.h
+++ b/ldso/ldso/x86_64/dl-startup.h
@@ -35,7 +35,7 @@ __asm__ (
);
/* Get a pointer to the argv array. On many platforms this can be just
- * the address if the first argument, on other platforms we need to
+ * the address of the first argument, on other platforms we need to
* do something a little more subtle here. */
#define GET_ARGV(ARGVP, ARGS) ARGVP = (((unsigned long*) ARGS)+1)