summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/ldso/boot1.c14
-rw-r--r--ldso/ldso/ld-uClibc.c14
-rw-r--r--ldso/ldso/ldso.c14
3 files changed, 36 insertions, 6 deletions
diff --git a/ldso/ldso/boot1.c b/ldso/ldso/boot1.c
index 127b9d9ff..b9eb5cabf 100644
--- a/ldso/ldso/boot1.c
+++ b/ldso/ldso/boot1.c
@@ -126,7 +126,7 @@
static char *_dl_malloc_addr, *_dl_mmap_zero;
char *_dl_library_path = 0; /* Where we look for libraries */
char *_dl_preload = 0; /* Things to be loaded before the libs. */
-char *_dl_progname = "/lib/ld-linux-uclibc.so.1";
+char *_dl_progname = "ld-linux-uclibc.so.0";
static char *_dl_not_lazy = 0;
static char *_dl_warn = 0; /* Used by ldd */
static char *_dl_trace_loaded_objects = 0;
@@ -210,12 +210,22 @@ void _dl_boot(unsigned int args)
/* Next, locate the GOT */
load_addr = auxv_t[AT_BASE].a_un.a_val;
+ if (load_addr == 0x0) {
+ /* Looks like they decided to run ld-linux-uclibc.so as
+ * an executable. Exit gracefully for now. */
+
+ /* TODO -- actually accept executables and args to run... */
+ //SEND_STDERR("Usage: ld.so EXECUTABLE [ARGS...]\n");
+ SEND_STDERR("You have run `ld.so', the helper program for shared\n");
+ SEND_STDERR("library executables. You probably did not intend to\n");
+ SEND_STDERR("run this program. Goodbye.\n\n");
+ _dl_exit(0);
+ }
#ifdef DL_DEBUG
SEND_STDERR("load_addr=");
SEND_STDERR(_dl_simple_ltoahex(load_addr));
SEND_STDERR("\n");
#endif
-// __asm__("\tmovl %%ebx,%0\n\t" : "=a" (X))
GET_GOT(got);
#ifdef DL_DEBUG
SEND_STDERR("Found got=");
diff --git a/ldso/ldso/ld-uClibc.c b/ldso/ldso/ld-uClibc.c
index 127b9d9ff..b9eb5cabf 100644
--- a/ldso/ldso/ld-uClibc.c
+++ b/ldso/ldso/ld-uClibc.c
@@ -126,7 +126,7 @@
static char *_dl_malloc_addr, *_dl_mmap_zero;
char *_dl_library_path = 0; /* Where we look for libraries */
char *_dl_preload = 0; /* Things to be loaded before the libs. */
-char *_dl_progname = "/lib/ld-linux-uclibc.so.1";
+char *_dl_progname = "ld-linux-uclibc.so.0";
static char *_dl_not_lazy = 0;
static char *_dl_warn = 0; /* Used by ldd */
static char *_dl_trace_loaded_objects = 0;
@@ -210,12 +210,22 @@ void _dl_boot(unsigned int args)
/* Next, locate the GOT */
load_addr = auxv_t[AT_BASE].a_un.a_val;
+ if (load_addr == 0x0) {
+ /* Looks like they decided to run ld-linux-uclibc.so as
+ * an executable. Exit gracefully for now. */
+
+ /* TODO -- actually accept executables and args to run... */
+ //SEND_STDERR("Usage: ld.so EXECUTABLE [ARGS...]\n");
+ SEND_STDERR("You have run `ld.so', the helper program for shared\n");
+ SEND_STDERR("library executables. You probably did not intend to\n");
+ SEND_STDERR("run this program. Goodbye.\n\n");
+ _dl_exit(0);
+ }
#ifdef DL_DEBUG
SEND_STDERR("load_addr=");
SEND_STDERR(_dl_simple_ltoahex(load_addr));
SEND_STDERR("\n");
#endif
-// __asm__("\tmovl %%ebx,%0\n\t" : "=a" (X))
GET_GOT(got);
#ifdef DL_DEBUG
SEND_STDERR("Found got=");
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index 127b9d9ff..b9eb5cabf 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -126,7 +126,7 @@
static char *_dl_malloc_addr, *_dl_mmap_zero;
char *_dl_library_path = 0; /* Where we look for libraries */
char *_dl_preload = 0; /* Things to be loaded before the libs. */
-char *_dl_progname = "/lib/ld-linux-uclibc.so.1";
+char *_dl_progname = "ld-linux-uclibc.so.0";
static char *_dl_not_lazy = 0;
static char *_dl_warn = 0; /* Used by ldd */
static char *_dl_trace_loaded_objects = 0;
@@ -210,12 +210,22 @@ void _dl_boot(unsigned int args)
/* Next, locate the GOT */
load_addr = auxv_t[AT_BASE].a_un.a_val;
+ if (load_addr == 0x0) {
+ /* Looks like they decided to run ld-linux-uclibc.so as
+ * an executable. Exit gracefully for now. */
+
+ /* TODO -- actually accept executables and args to run... */
+ //SEND_STDERR("Usage: ld.so EXECUTABLE [ARGS...]\n");
+ SEND_STDERR("You have run `ld.so', the helper program for shared\n");
+ SEND_STDERR("library executables. You probably did not intend to\n");
+ SEND_STDERR("run this program. Goodbye.\n\n");
+ _dl_exit(0);
+ }
#ifdef DL_DEBUG
SEND_STDERR("load_addr=");
SEND_STDERR(_dl_simple_ltoahex(load_addr));
SEND_STDERR("\n");
#endif
-// __asm__("\tmovl %%ebx,%0\n\t" : "=a" (X))
GET_GOT(got);
#ifdef DL_DEBUG
SEND_STDERR("Found got=");