summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ldso/include/ldso.h14
-rw-r--r--ldso/ldso/arm/elfinterp.c4
-rw-r--r--ldso/ldso/dl-elf.c6
-rw-r--r--ldso/ldso/dl-tls.c3
-rw-r--r--ldso/ldso/ldso.c22
-rw-r--r--ldso/ldso/m68k/elfinterp.c5
-rw-r--r--ldso/ldso/sparc/elfinterp.c5
7 files changed, 39 insertions, 20 deletions
diff --git a/ldso/include/ldso.h b/ldso/include/ldso.h
index fc356b0e3..f5bb6e077 100644
--- a/ldso/include/ldso.h
+++ b/ldso/include/ldso.h
@@ -113,7 +113,8 @@ extern int _dl_debug_file;
#else
# define __dl_debug_dprint(fmt, args...) do {} while (0)
# define _dl_if_debug_dprint(fmt, args...) do {} while (0)
-# define _dl_debug_file 2
+/* disabled on purpose, _dl_debug_file should be guarded by __SUPPORT_LD_DEBUG__
+# define _dl_debug_file 2*/
#endif /* __SUPPORT_LD_DEBUG__ */
#ifdef IS_IN_rtld
@@ -149,8 +150,19 @@ extern void *_dl_realloc(void *__ptr, size_t __size);
extern void _dl_free(void *);
extern char *_dl_getenv(const char *symbol, char **envp);
extern void _dl_unsetenv(const char *symbol, char **envp);
+#ifdef IS_IN_rtld
extern char *_dl_strdup(const char *string);
extern void _dl_dprintf(int, const char *, ...);
+#else
+# include <string.h>
+# define _dl_strdup strdup
+# include <stdio.h>
+# ifdef __USE_GNU
+# define _dl_dprintf dprintf
+# else
+# define _dl_dprintf(fd, fmt, args...) fprintf(stderr, fmt, ## args)
+# endif
+#endif
#ifndef DL_GET_READY_TO_RUN_EXTRA_PARMS
# define DL_GET_READY_TO_RUN_EXTRA_PARMS
diff --git a/ldso/ldso/arm/elfinterp.c b/ldso/ldso/arm/elfinterp.c
index b6dfae26b..c2f52b822 100644
--- a/ldso/ldso/arm/elfinterp.c
+++ b/ldso/ldso/arm/elfinterp.c
@@ -77,9 +77,9 @@ unsigned long _dl_linux_resolver(struct elf_resolve *tpnt, int reloc_entry)
_dl_exit(1);
}
#if defined (__SUPPORT_LD_DEBUG__)
-#if !defined __SUPPORT_LD_DEBUG_EARLY__
+# if !defined __SUPPORT_LD_DEBUG_EARLY__
if ((unsigned long) got_addr < 0x40000000)
-#endif
+# endif
{
if (_dl_debug_bindings)
{
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index 31ba11ffa..55ff31e4f 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -739,7 +739,7 @@ struct elf_resolve *_dl_load_elf_shared_library(unsigned rflags,
}
}
#else
- _dl_dprintf(_dl_debug_file, "Can't modify %s's text section."
+ _dl_dprintf(2, "Can't modify %s's text section."
" Use GCC option -fPIC for shared objects, please.\n",
libname);
_dl_exit(1);
@@ -1004,6 +1004,7 @@ int _dl_fixup(struct dyn_elf *rpnt, struct r_scope_elem *scope, int now_flag)
return goof;
}
+#ifdef IS_IN_rtld
/* Minimal printf which handles only %s, %d, and %x */
void _dl_dprintf(int fd, const char *fmt, ...)
{
@@ -1069,7 +1070,7 @@ void _dl_dprintf(int fd, const char *fmt, ...)
break;
}
case 'x':
- case 'X':
+ case 'p':
{
char tmp[22];
#if __WORDSIZE > 32
@@ -1106,6 +1107,7 @@ char *_dl_strdup(const char *string)
_dl_strcpy(retval, string);
return retval;
}
+#endif
unsigned int _dl_parse_dynamic_info(ElfW(Dyn) *dpnt, unsigned long dynamic_info[],
void *debug_addr, DL_LOADADDR_TYPE load_off)
diff --git a/ldso/ldso/dl-tls.c b/ldso/ldso/dl-tls.c
index a672e748d..6679693f4 100644
--- a/ldso/ldso/dl-tls.c
+++ b/ldso/ldso/dl-tls.c
@@ -922,8 +922,7 @@ _dl_add_to_slotinfo (struct link_map *l)
generation. */
++_dl_tls_generation;
- _dl_dprintf (_dl_debug_file,
- "cannot create TLS data structures: ABORT\n");
+ _dl_dprintf(2, "cannot create TLS data structures: ABORT\n");
_dl_exit (127);
}
diff --git a/ldso/ldso/ldso.c b/ldso/ldso/ldso.c
index d3891e269..becabd39b 100644
--- a/ldso/ldso/ldso.c
+++ b/ldso/ldso/ldso.c
@@ -241,7 +241,7 @@ void *_dl_malloc(size_t size)
_dl_mmap_zero = _dl_malloc_addr = _dl_mmap((void *) 0, rounded_size,
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_UNINITIALIZE, -1, 0);
if (_dl_mmap_check_error(_dl_mmap_zero)) {
- _dl_dprintf(_dl_debug_file, "%s: mmap of a spare page failed!\n", _dl_progname);
+ _dl_dprintf(2, "%s: mmap of a spare page failed!\n", _dl_progname);
_dl_exit(20);
}
}
@@ -465,7 +465,7 @@ void *_dl_get_ready_to_run(struct elf_resolve *tpnt, DL_LOADADDR_TYPE load_addr,
#ifndef __LDSO_STANDALONE_SUPPORT__
if (_start == (void *) auxvt[AT_ENTRY].a_un.a_val) {
- _dl_dprintf(_dl_debug_file, "Standalone execution is not enabled\n");
+ _dl_dprintf(2, "Standalone execution is not enabled\n");
_dl_exit(1);
}
#endif
@@ -579,7 +579,7 @@ of this helper program; chances are you did not intend to run this program.\n\
*/
app_tpnt = _dl_load_elf_shared_library(_dl_secure, &rpnt, _dl_progname);
if (!app_tpnt) {
- _dl_dprintf(_dl_debug_file, "can't load '%s'\n", _dl_progname);
+ _dl_dprintf(2, "can't load '%s'\n", _dl_progname);
_dl_exit(16);
}
/*
@@ -674,7 +674,7 @@ of this helper program; chances are you did not intend to run this program.\n\
}
#else
if (app_tpnt->dynamic_info[DT_TEXTREL]) {
- _dl_dprintf(_dl_debug_file, "Can't modify application's text section; use the GCC option -fPIE for position-independent executables.\n");
+ _dl_dprintf(2, "Can't modify application's text section; use the GCC option -fPIE for position-independent executables.\n");
_dl_exit(1);
}
#endif
@@ -737,7 +737,7 @@ of this helper program; chances are you did not intend to run this program.\n\
_dl_debug_early("Found TLS header for application program\n");
break;
#else
- _dl_dprintf(_dl_debug_file, "Program uses unsupported TLS data!\n");
+ _dl_dprintf(2, "Program uses unsupported TLS data!\n");
_dl_exit(1);
#endif
}
@@ -827,7 +827,7 @@ of this helper program; chances are you did not intend to run this program.\n\
#ifndef __LDSO_LDD_SUPPORT__
if (trace_loaded_objects) {
- _dl_dprintf(_dl_debug_file, "Use the ldd provided by uClibc\n");
+ _dl_dprintf(2, "Use the ldd provided by uClibc\n");
_dl_exit(1);
}
#endif
@@ -883,7 +883,7 @@ of this helper program; chances are you did not intend to run this program.\n\
else
#endif
{
- _dl_dprintf(_dl_debug_file, "%s: library '%s' "
+ _dl_dprintf(2, "%s: library '%s' "
"from LD_PRELOAD can't be preloaded: ignored.\n",
_dl_progname, str);
}
@@ -928,7 +928,7 @@ of this helper program; chances are you did not intend to run this program.\n\
}
if ((fd = _dl_open(LDSO_PRELOAD, O_RDONLY, 0)) < 0) {
- _dl_dprintf(_dl_debug_file, "%s: can't open file '%s'\n",
+ _dl_dprintf(2, "%s: can't open file '%s'\n",
_dl_progname, LDSO_PRELOAD);
break;
}
@@ -937,7 +937,7 @@ of this helper program; chances are you did not intend to run this program.\n\
PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
_dl_close(fd);
if (preload == (caddr_t) -1) {
- _dl_dprintf(_dl_debug_file, "%s:%i: can't map '%s'\n",
+ _dl_dprintf(2, "%s:%i: can't map '%s'\n",
_dl_progname, __LINE__, LDSO_PRELOAD);
break;
}
@@ -976,7 +976,7 @@ of this helper program; chances are you did not intend to run this program.\n\
else
# endif
{
- _dl_dprintf(_dl_debug_file, "%s: can't load library '%s'\n", _dl_progname, cp2);
+ _dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, cp2);
_dl_exit(15);
}
} else {
@@ -1037,7 +1037,7 @@ of this helper program; chances are you did not intend to run this program.\n\
} else
#endif
{
- _dl_dprintf(_dl_debug_file, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
+ _dl_dprintf(2, "%s: can't load library '%s'\n", _dl_progname, lpntstr);
_dl_exit(16);
}
}
diff --git a/ldso/ldso/m68k/elfinterp.c b/ldso/ldso/m68k/elfinterp.c
index 4e8714246..fd7fe8513 100644
--- a/ldso/ldso/m68k/elfinterp.c
+++ b/ldso/ldso/m68k/elfinterp.c
@@ -241,8 +241,11 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
_dl_memcpy ((void *) reloc_addr,
(void *) symbol_addr,
sym_ref.sym->st_size);
- } else
+ }
+#if defined (__SUPPORT_LD_DEBUG__)
+ else
_dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
+#endif
break;
default:
diff --git a/ldso/ldso/sparc/elfinterp.c b/ldso/ldso/sparc/elfinterp.c
index e3f0e470a..bb61be9eb 100644
--- a/ldso/ldso/sparc/elfinterp.c
+++ b/ldso/ldso/sparc/elfinterp.c
@@ -275,8 +275,11 @@ _dl_do_reloc(struct elf_resolve *tpnt, struct r_scope_elem *scope,
_dl_memcpy((char *)reloc_addr,
(char *)symbol_addr,
sym_ref.sym->st_size);
- } else
+ }
+#if defined (__SUPPORT_LD_DEBUG__)
+ else
_dl_dprintf(_dl_debug_file, "no symbol_addr to copy !?\n");
+#endif
break;
#if defined USE_TLS && USE_TLS
case R_SPARC_TLS_DTPMOD32: