aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-11-09 16:12:22 +0000
committerUlrich Drepper <drepper@redhat.com>2006-11-09 16:12:22 +0000
commit2692deea65f13becedc2ce283fbc97a3c139f165 (patch)
tree121c160e88030e5cc5769233d73d9f577dce2996 /elf
parenta9a6bf36c159dc0eda7fc9a9985fb737da4be07a (diff)
downloadglibc-2692deea65f13becedc2ce283fbc97a3c139f165.tar
glibc-2692deea65f13becedc2ce283fbc97a3c139f165.tar.gz
glibc-2692deea65f13becedc2ce283fbc97a3c139f165.tar.bz2
glibc-2692deea65f13becedc2ce283fbc97a3c139f165.zip
* elf/dl-debug.c (_dl_debug_initialize): Check r->r_map for 0cvs/fedora-glibc-20061109T1949
rather than r->r_brk. 2006-11-08 Jakub Jelinek <jakub@redhat.com> * elf/dl-load.c (decompose_rpath): Return bool rather than void. If l->l_name is on inhibit_rpath list, set sps->dirs to -1 and return false, otherwise return true. (cache_rpath): Return decompose_rpath return value. 2006-11-07 Jakub Jelinek <jakub@redhat.com> * include/libc-symbols.h (declare_symbol): Rename to... (declare_symbol_alias): ... this. Add ORIGINAL argument, imply strong_alias (ORIGINAL, SYMBOL) in asm to make sure it preceedes .size directive. * sysdeps/gnu/errlist-compat.awk: Adjust for declare_symbol_alias changes. * sysdeps/gnu/siglist.c: Likewise.
Diffstat (limited to 'elf')
-rw-r--r--elf/dl-debug.c2
-rw-r--r--elf/dl-load.c31
2 files changed, 13 insertions, 20 deletions
diff --git a/elf/dl-debug.c b/elf/dl-debug.c
index d00fe87fbb..2538364aec 100644
--- a/elf/dl-debug.c
+++ b/elf/dl-debug.c
@@ -54,7 +54,7 @@ _dl_debug_initialize (ElfW(Addr) ldbase, Lmid_t ns)
else
r = &GL(dl_ns)[ns]._ns_debug;
- if (r->r_brk == 0 || ldbase != 0)
+ if (r->r_map == NULL || ldbase != 0)
{
/* Tell the debugger where to find the map of loaded objects. */
r->r_version = 1 /* R_DEBUG_VERSION XXX */;
diff --git a/elf/dl-load.c b/elf/dl-load.c
index ccbbf4fdd2..1650ef953a 100644
--- a/elf/dl-load.c
+++ b/elf/dl-load.c
@@ -511,7 +511,7 @@ fillin_rpath (char *rpath, struct r_search_path_elem **result, const char *sep,
}
-static void
+static bool
internal_function
decompose_rpath (struct r_search_path_struct *sps,
const char *rpath, struct link_map *l, const char *what)
@@ -546,19 +546,8 @@ decompose_rpath (struct r_search_path_struct *sps,
{
/* This object is on the list of objects for which the
RUNPATH and RPATH must not be used. */
- result = calloc (1, sizeof *result);
- if (result == NULL)
- {
- signal_error_cache:
- errstring = N_("cannot create cache for search path");
- signal_error:
- _dl_signal_error (ENOMEM, NULL, NULL, errstring);
- }
-
- sps->dirs = result;
- sps->malloced = 1;
-
- return;
+ sps->dirs = (void *) -1;
+ return false;
}
while (*inhp != '\0')
@@ -588,7 +577,11 @@ decompose_rpath (struct r_search_path_struct *sps,
result = (struct r_search_path_elem **) malloc ((nelems + 1 + 1)
* sizeof (*result));
if (result == NULL)
- goto signal_error_cache;
+ {
+ errstring = N_("cannot create cache for search path");
+ signal_error:
+ _dl_signal_error (ENOMEM, NULL, NULL, errstring);
+ }
fillin_rpath (copy, result, ":", 0, what, where);
@@ -599,6 +592,7 @@ decompose_rpath (struct r_search_path_struct *sps,
sps->dirs = result;
/* The caller will change this value if we haven't used a real malloc. */
sps->malloced = 1;
+ return true;
}
/* Make sure cached path information is stored in *SP
@@ -623,10 +617,9 @@ cache_rpath (struct link_map *l,
}
/* Make sure the cache information is available. */
- decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB])
- + l->l_info[tag]->d_un.d_val),
- l, what);
- return true;
+ return decompose_rpath (sp, (const char *) (D_PTR (l, l_info[DT_STRTAB])
+ + l->l_info[tag]->d_un.d_val),
+ l, what);
}