From e161f717e0220a82002543b04d80404dac977418 Mon Sep 17 00:00:00 2001 From: Julian Brown Date: Thu, 28 Feb 2013 10:31:31 +0000 Subject: bfd/ * elf32-arm.c (elf32_arm_size_dynamic_sections): Don't call elf32_arm_allocate_dynrelocs for source reloc for non-dynamic link. ld/testsuite/ * ld-arm/tls-local-static.s: New test. * ld-arm/tls-local-static.d: New. * ld-arm/arm-elf.exp (tls-local-static): Add test. --- bfd/elf32-arm.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'bfd/elf32-arm.c') diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index cf5bc6db2c..aba1814f85 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -13648,14 +13648,18 @@ elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, && (local_iplt == NULL || local_iplt->arm.noncall_refcount == 0)) elf32_arm_allocate_irelocs (info, srel, 1); - else if ((info->shared && !(*local_tls_type & GOT_TLS_GDESC)) - || *local_tls_type & GOT_TLS_GD) - elf32_arm_allocate_dynrelocs (info, srel, 1); - - if (info->shared && *local_tls_type & GOT_TLS_GDESC) + else if (info->shared || output_bfd->flags & DYNAMIC) { - elf32_arm_allocate_dynrelocs (info, htab->root.srelplt, 1); - htab->tls_trampoline = -1; + if ((info->shared && !(*local_tls_type & GOT_TLS_GDESC)) + || *local_tls_type & GOT_TLS_GD) + elf32_arm_allocate_dynrelocs (info, srel, 1); + + if (info->shared && *local_tls_type & GOT_TLS_GDESC) + { + elf32_arm_allocate_dynrelocs (info, + htab->root.srelplt, 1); + htab->tls_trampoline = -1; + } } } else -- cgit v1.2.1