]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.link] cmd/link: use the start of compilation unit for R_ADDRCUOFF
authorCherry Zhang <cherryyz@google.com>
Sat, 2 Nov 2019 21:25:39 +0000 (17:25 -0400)
committerCherry Zhang <cherryyz@google.com>
Sun, 3 Nov 2019 19:43:59 +0000 (19:43 +0000)
R_ADDRCUOFF refers to the offset from the start of the
compilation unit. Now that we could have multiple compilation
units per package, we should use the start of the compilation
unit, instead of the start of the package.

Change-Id: I3d6a3c5a5c47c9ccf88091ed05413ced826f9934
Reviewed-on: https://go-review.googlesource.com/c/go/+/204828
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Than McIntosh <thanm@google.com>
src/cmd/link/internal/ld/data.go

index ea238f791624538be223e566fc73d92feb238e8a..2cf4c726da9ca8ed3fbc6244ce4c0abc4cf7577a 100644 (file)
@@ -402,7 +402,7 @@ func relocsym(ctxt *Link, s *sym.Symbol) {
                case objabi.R_ADDRCUOFF:
                        // debug_range and debug_loc elements use this relocation type to get an
                        // offset from the start of the compile unit.
-                       o = Symaddr(r.Sym) + r.Add - Symaddr(r.Sym.Unit.Lib.Textp[0])
+                       o = Symaddr(r.Sym) + r.Add - Symaddr(r.Sym.Unit.Textp[0])
 
                        // r->sym can be null when CALL $(constant) is transformed from absolute PC to relative PC call.
                case objabi.R_GOTPCREL: