Fix bug with previous patch for unresolved TLS symbol.
authorCary Coutant <ccoutant@google.com>
Mon, 2 Feb 2015 19:46:45 +0000 (11:46 -0800)
committerCary Coutant <ccoutant@google.com>
Mon, 2 Feb 2015 19:46:45 +0000 (11:46 -0800)
We need to check that the output is executable before assuming that we
can replace the reference with zero.

2015-02-02  Cary Coutant  <ccoutant@google.com>

gold/
* x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for
executable output file.

gold/ChangeLog
gold/x86_64.cc

index 601d11b..399588e 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-02  Cary Coutant  <ccoutant@google.com>
+
+       * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for
+       executable output file.
+
 2015-01-22  Han Shen  <shenhan@google.com>
 
        * arm.cc (Target_arm::Target_arm): Add initialization for new members.
index a4aebc8..4543c8a 100644 (file)
@@ -3784,7 +3784,9 @@ Target_x86_64<size>::Relocate::relocate_tls(
       break;
 
     case elfcpp::R_X86_64_GOTTPOFF:         // Initial-exec
-      if (gsym != NULL && gsym->is_undefined())
+      if (gsym != NULL
+         && gsym->is_undefined()
+         && parameters->options().output_is_executable())
        {
          Target_x86_64<size>::Relocate::tls_ie_to_le(relinfo, relnum,
                                                      NULL, rela,