2002-12-04 H.J. Lu <hjl@gnu.org>
authorH.J. Lu <hjl.tools@gmail.com>
Wed, 4 Dec 2002 23:59:27 +0000 (23:59 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Wed, 4 Dec 2002 23:59:27 +0000 (23:59 +0000)
* elfxx-ia64.c (get_local_sym_hash): Use section ID instead of
BFD address when constructing local name.

bfd/ChangeLog
bfd/elfxx-ia64.c

index 63df21fec366f1cd9d883b4523ed962398e1bbbe..a4bce4c45fa6591aa3ca76abd2669174eab605c0 100644 (file)
@@ -1,3 +1,8 @@
+2002-12-04  H.J. Lu <hjl@gnu.org>
+
+       * elfxx-ia64.c (get_local_sym_hash): Use section ID instead of
+       BFD address when constructing local name.
+
 2002-12-04  Andreas Schwab  <schwab@suse.de>
 
        * elf32-m68k.c (struct elf_m68k_link_hash_table): Add sym_sec
index 93741bdc72e00dee233b654ac0c66bd64a7a10d0..2f6e1a5ec996fa6dcedfdc0cc4ca3fafec6584ef 100644 (file)
@@ -1834,26 +1834,22 @@ get_local_sym_hash (ia64_info, abfd, rel, create)
      const Elf_Internal_Rela *rel;
      bfd_boolean create;
 {
-  char *addr_name;
-  size_t len;
   struct elfNN_ia64_local_hash_entry *ret;
+  asection *sec = abfd->sections;
+  char addr_name [34];
+
+  BFD_ASSERT ((sizeof (sec->id)*2 + 1 + sizeof (unsigned long)*2 + 1) <= 34);
+  BFD_ASSERT (sec);
 
   /* Construct a string for use in the elfNN_ia64_local_hash_table.
      name describes what was once anonymous memory.  */
 
-  len = sizeof (void*)*2 + 1 + sizeof (bfd_vma)*4 + 1 + 1;
-  len += 10;   /* %p slop */
-
-  addr_name = bfd_malloc (len);
-  if (addr_name == NULL)
-    return 0;
-  sprintf (addr_name, "%p:%lx",
-          (void *) abfd, (unsigned long) ELFNN_R_SYM (rel->r_info));
+  sprintf (addr_name, "%x:%lx",
+          sec->id, (unsigned long) ELFNN_R_SYM (rel->r_info));
 
   /* Collect the canonical entry data for this address.  */
   ret = elfNN_ia64_local_hash_lookup (&ia64_info->loc_hash_table,
                                      addr_name, create, create);
-  free (addr_name);
   return ret;
 }