Don't create got section while processing TLS Local Exec relocations.
authorRenlin Li <renlin.li@arm.com>
Wed, 31 Oct 2018 14:38:46 +0000 (14:38 +0000)
committerRenlin Li <renlin.li@arm.com>
Wed, 31 Oct 2018 15:09:36 +0000 (15:09 +0000)
For Local Exec TLS model, the offset of the variable from the thread pointer
can be computed at static link time. This doesn't require GOT indirection.

The initial change is a bad fix for a problem during TLS GD -> LE relaxation.
The proper fix is to check whether _GLOBAL_OFFSET_TABLE_ is referenced,
create got section if yes.  And the fix is already in the repository.

bfd/

2018-10-31  Renlin Li  <renlin.li@arm.com>

    * elfnn-aarch64.c (elfNN_aarch64_check_relocs): Don't create got
    section for Local Exec TLS model.

bfd/ChangeLog
bfd/elfnn-aarch64.c

index 0959688..383ad44 100644 (file)
@@ -1,3 +1,8 @@
+2018-10-31  Renlin Li  <renlin.li@arm.com>
+
+       * elfnn-aarch64.c (elfNN_aarch64_check_relocs): Don't create got
+       section for Local Exec TLS model.
+
 2018-10-24  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR ld/23818
index ee09cd7..e2cfa86 100644 (file)
@@ -7565,9 +7565,6 @@ elfNN_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info,
        case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
        case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
        case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
-       case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1:
-       case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC:
-       case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2:
          {
            unsigned got_type;
            unsigned old_got_type;