From: Daniel Jacobowitz Date: Thu, 21 Sep 2006 18:21:19 +0000 (+0000) Subject: * sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined X-Git-Tag: upstream/2.30~10627^2~827 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=56865130d06d032b2c44b188eb841d481a3d0bad;p=external%2Fglibc.git * sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined symbols. (elf_machine_rela): Likewise. --- diff --git a/ChangeLog.arm b/ChangeLog.arm index 8702925..3effa9d 100644 --- a/ChangeLog.arm +++ b/ChangeLog.arm @@ -1,3 +1,9 @@ +2006-09-21 Daniel Jacobowitz + + * sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined + symbols. + (elf_machine_rela): Likewise. + 2006-08-21 Daniel Jacobowitz * sysdeps/unix/sysv/linux/arm/eabi/syscalls.list: Remove msgctl, diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h index ff8a170..1a45a26 100644 --- a/sysdeps/arm/dl-machine.h +++ b/sysdeps/arm/dl-machine.h @@ -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: