aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/generic
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-08-30 22:48:53 +0000
committerUlrich Drepper <drepper@redhat.com>2005-08-30 22:48:53 +0000
commit0b3cf801428e0d246e19ef5fbae185b949347aa3 (patch)
tree697aa0b6eeed38e26e6ff5eaed31bc7ec9ff3619 /sysdeps/generic
parent4fb5ab741ac5b498fd0591d82b5d225abac7b8ce (diff)
downloadglibc-0b3cf801428e0d246e19ef5fbae185b949347aa3.tar
glibc-0b3cf801428e0d246e19ef5fbae185b949347aa3.tar.gz
glibc-0b3cf801428e0d246e19ef5fbae185b949347aa3.tar.bz2
glibc-0b3cf801428e0d246e19ef5fbae185b949347aa3.zip
* sysdeps/ieee754/flt-32/e_hypotf.c [!__STDC__]: Fix function name.
2005-08-01 Bob Wilson <bob.wilson@acm.org> Richard Sandiford <richard@codesourcery.com> * sysdeps/ieee754/flt-32/e_hypotf.c (__ieee754_hypotf): Add missing exponent bias to the value for 2^126. 2005-08-30 Jakub Jelinek <jakub@redhat.com> Alan Modra <amodra@bigpond.net.au> * elf/dl-addr.c (_dl_addr): Use DL_ADDR_SYM_MATCH macro. * sysdeps/generic/ldsodefs.h (DL_ADDR_SYM_MATCH): Define. * sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h: New file.
Diffstat (limited to 'sysdeps/generic')
-rw-r--r--sysdeps/generic/ldsodefs.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
index a24c2ff58e..191ae4d4fb 100644
--- a/sysdeps/generic/ldsodefs.h
+++ b/sysdeps/generic/ldsodefs.h
@@ -62,7 +62,7 @@ typedef struct link_map *lookup_t;
# define LOOKUP_VALUE(map) map
# define LOOKUP_VALUE_ADDRESS(map) ((map) ? (map)->l_addr : 0)
-/* on some architectures a pointer to a function is not just a pointer
+/* On some architectures a pointer to a function is not just a pointer
to the actual code of the function but rather an architecture
specific descriptor. */
#ifndef ELF_FUNCTION_PTR_IS_SPECIAL
@@ -73,6 +73,14 @@ typedef struct link_map *lookup_t;
# define DL_DT_FINI_ADDRESS(map, start) (start)
#endif
+/* On some architectures dladdr can't use st_size of all symbols this way. */
+#define DL_ADDR_SYM_MATCH(L, SYM, MATCHSYM, ADDR) \
+ ((ADDR) >= (L)->l_addr + (SYM)->st_value \
+ && (((SYM)->st_size == 0 \
+ && (ADDR) == (L)->l_addr + (SYM)->st_value) \
+ || (ADDR) < (L)->l_addr + (SYM)->st_value + (SYM)->st_size) \
+ && ((MATCHSYM) == NULL || (MATCHSYM)->st_value < (SYM)->st_value))
+
/* Unmap a loaded object, called by _dl_close (). */
#ifndef DL_UNMAP_IS_SPECIAL
# define DL_UNMAP(map) \