]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/ld: fix R_TLS handling now Xsym is not read from object file
authorMichael Hudson-Doyle <michael.hudson@canonical.com>
Thu, 23 Apr 2015 08:04:14 +0000 (20:04 +1200)
committerDave Cheney <dave@cheney.net>
Fri, 24 Apr 2015 20:57:49 +0000 (20:57 +0000)
I think this should fix the arm build. A proper fix involves making the handling
of tlsg less fragile, I'll try that tomorrow.

Update #10557

Change-Id: I9b1b666737fb40aebb6f284748509afa8483cce5
Reviewed-on: https://go-review.googlesource.com/9272
Reviewed-by: Dave Cheney <dave@cheney.net>
Run-TryBot: Dave Cheney <dave@cheney.net>

src/cmd/internal/ld/data.go

index 13a4019888c62aed8300f9629464f0cb46441c16..5a0ac9e7df31d45a84184d826c1530d6d9030788 100644 (file)
@@ -372,6 +372,14 @@ func relocsym(s *LSym) {
                        }
 
                case obj.R_TLS:
+                       if Linkmode == LinkExternal && Iself && HEADTYPE != obj.Hopenbsd {
+                               r.Done = 0
+                               r.Sym = Ctxt.Tlsg
+                               r.Xsym = Ctxt.Tlsg
+                               r.Xadd = r.Add
+                               o = r.Add
+                               break
+                       }
                        if Linkmode == LinkInternal && Iself && Thearch.Thechar == '5' {
                                // On ELF ARM, the thread pointer is 8 bytes before
                                // the start of the thread-local data block, so add 8