+2017-11-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ [BZ #17078]
+ * sysdeps/arm/dl-machine.h (elf_machine_rela): Remove the
+ R_ARM_TLS_DESC case.
+ (elf_machine_lazy_rel): Remove the prelink check.
+
2017-11-03 Szabolcs Nagy <szabolcs.nagy@arm.com>
* sysdeps/aarch64/dl-machine.h (elf_machine_runtime_setup): Remove
case R_ARM_ABS32:
*reloc_addr = value + reloc->r_addend;
break;
-# ifdef RESOLVE_CONFLICT_FIND_MAP
- case R_ARM_TLS_DESC:
- {
- struct tlsdesc volatile *td __attribute__ ((unused)) =
- (struct tlsdesc volatile *) reloc_addr;
-
- RESOLVE_CONFLICT_FIND_MAP (map, reloc_addr);
-
- /* Make sure we know what's going on. */
- assert (td->entry
- == (void *) (D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
- + map->l_addr));
- assert (map->l_info[ADDRIDX (DT_TLSDESC_GOT)]);
-
- /* Set up the lazy resolver and store the pointer to our link
- map in _GLOBAL_OFFSET_TABLE[1] now as for a prelinked
- binary elf_machine_runtime_setup() is not called and hence
- neither has been initialized. */
- *(Elf32_Addr *) (D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_GOT)])
- + map->l_addr)
- = (Elf32_Addr) &_dl_tlsdesc_lazy_resolver;
- ((Elf32_Addr *) D_PTR (map, l_info[DT_PLTGOT]))[1]
- = (Elf32_Addr) map;
- }
- break;
-# endif /* RESOLVE_CONFLICT_FIND_MAP */
case R_ARM_PC24:
relocate_pc24 (map, value, reloc_addr, reloc->r_addend);
break;
(struct tlsdesc volatile *)reloc_addr;
/* The linker must have given us the parameter we need in the
- first GOT entry, and left the second one empty. The latter
- will have been preset by the prelinker if used though.
- We fill it with the resolver address. */
- assert (td->entry == 0
- || map->l_info[VALIDX (DT_GNU_PRELINKED)] != NULL);
+ first GOT entry, and left the second one empty. We fill the
+ latter with the resolver address. */
+ assert (td->entry == 0);
td->entry = (void*)(D_PTR (map, l_info[ADDRIDX (DT_TLSDESC_PLT)])
+ map->l_addr);
}