* sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined
authorDaniel Jacobowitz <dan@codesourcery.com>
Thu, 21 Sep 2006 18:21:19 +0000 (18:21 +0000)
committerDaniel Jacobowitz <dan@codesourcery.com>
Thu, 21 Sep 2006 18:21:19 +0000 (18:21 +0000)
symbols.
(elf_machine_rela): Likewise.

ChangeLog.arm
sysdeps/arm/dl-machine.h

index 8702925..3effa9d 100644 (file)
@@ -1,3 +1,9 @@
+2006-09-21  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined
+       symbols.
+       (elf_machine_rela): Likewise.
+
 2006-08-21  Daniel Jacobowitz  <dan@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove msgctl,
index ff8a170..1a45a26 100644 (file)
@@ -447,12 +447,16 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
          break;
 
        case R_ARM_TLS_DTPOFF32:
-         *reloc_addr += sym->st_value;
+         if (sym != NULL)
+           *reloc_addr += sym->st_value;
          break;
 
        case R_ARM_TLS_TPOFF32:
-         CHECK_STATIC_TLS (map, sym_map);
-         *reloc_addr += sym->st_value + sym_map->l_tls_offset;
+         if (sym != NULL)
+           {
+             CHECK_STATIC_TLS (map, sym_map);
+             *reloc_addr += sym->st_value + sym_map->l_tls_offset;
+           }
          break;
 #endif
        default:
@@ -544,13 +548,16 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
          break;
 
        case R_ARM_TLS_DTPOFF32:
-         *reloc_addr = sym->st_value + reloc->r_addend;
+         *reloc_addr = (sym == NULL ? 0 : sym->st_value) + reloc->r_addend;
          break;
 
        case R_ARM_TLS_TPOFF32:
-         CHECK_STATIC_TLS (map, sym_map);
-         *reloc_addr = (sym->st_value + sym_map->l_tls_offset
-                        + reloc->r_addend);
+         if (sym != NULL)
+           {
+             CHECK_STATIC_TLS (map, sym_map);
+             *reloc_addr = (sym->st_value + sym_map->l_tls_offset
+                            + reloc->r_addend);
+           }
          break;
 #endif
        default: