]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 19 Oct 2004 16:44:56 +0000 (16:44 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 19 Oct 2004 16:44:56 +0000 (16:44 +0000)
* elf/dl-addr.c (_dl_addr): Don't look at STT_TLS symbols.
Use DL_SYMBOL_ADDRESS to set dli_saddr.

ChangeLog
elf/dl-addr.c

index fa551e349c90fb1bb96fe9053fb9e049fa72642f..54ec7e1b68c8a9ccf7ca12039ff2dbc380bc9488 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2004-10-19  Jakub Jelinek  <jakub@redhat.com>
 
+       * elf/dl-addr.c (_dl_addr): Don't look at STT_TLS symbols.
+       Use DL_SYMBOL_ADDRESS to set dli_saddr.
+
        * debug/Makefile (catchsegv): Prefix $LIB with a backslash.
 
 2004-10-19  Ulrich Drepper  <drepper@redhat.com>
index c418784b4ff88eb6848e5758ba74de65bb407ad2..685cab9be8cce87099d18d4da5515a38c35e8dc9 100644 (file)
@@ -92,6 +92,9 @@ _dl_addr (const void *address, Dl_info *info,
         dynamic symbol table!!  */
       for (matchsym = NULL; (void *) symtab < (void *) symtabend; ++symtab)
        if (addr >= match->l_addr + symtab->st_value
+#if defined USE_TLS
+           && ELFW(ST_TYPE) (symtab->st_info) != STT_TLS
+#endif
            && ((symtab->st_size == 0
                 && addr == match->l_addr + symtab->st_value)
                || addr < match->l_addr + symtab->st_value + symtab->st_size)
@@ -110,8 +113,10 @@ _dl_addr (const void *address, Dl_info *info,
        {
          /* We found a symbol close by.  Fill in its name and exact
             address.  */
+         lookup_t matchl = LOOKUP_VALUE (match);
+
          info->dli_sname = strtab + matchsym->st_name;
-         info->dli_saddr = (void *) (match->l_addr + matchsym->st_value);
+         info->dli_saddr = DL_SYMBOL_ADDRESS (matchl, matchsym);
        }
       else
        {