]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.16] cmd/link: don't cast end address to int32
authorCherry Mui <cherryyz@google.com>
Wed, 12 May 2021 02:40:02 +0000 (22:40 -0400)
committerDmitri Shuralyov <dmitshur@golang.org>
Fri, 21 May 2021 22:34:30 +0000 (22:34 +0000)
When linking a very large binary, the section address may not fit
in int32. Don't truncate it.

Fixes #46128.
Updates #46126.

Change-Id: Ibcc8d74bf5662611949e547ce44ca8b973de383f
Reviewed-on: https://go-review.googlesource.com/c/go/+/319289
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
(cherry picked from commit af0f8c149e8a4b237910fc7b41739bedc546473c)
Reviewed-on: https://go-review.googlesource.com/c/go/+/319369

src/cmd/link/internal/ld/elf.go
src/cmd/link/internal/ld/macho.go

index 37b2dc640d44472275d3a7ed8053f845dd63ec3e..f5823a8fbfb73ed9ed1756738f2e7ae49d4f4b5a 100644 (file)
@@ -1086,7 +1086,7 @@ func elfrelocsect(ctxt *Link, out *OutBuf, sect *sym.Section, syms []loader.Sym)
                }
        }
 
-       eaddr := int32(sect.Vaddr + sect.Length)
+       eaddr := sect.Vaddr + sect.Length
        for _, s := range syms {
                if !ldr.AttrReachable(s) {
                        continue
index 3630e67c25d60c7b1fddb843a57b8edb80c8884b..a9f4d8722921de9efc902c6245236cddcc6a74bb 100644 (file)
@@ -1168,7 +1168,7 @@ func machorelocsect(ctxt *Link, out *OutBuf, sect *sym.Section, syms []loader.Sy
                }
        }
 
-       eaddr := int32(sect.Vaddr + sect.Length)
+       eaddr := sect.Vaddr + sect.Length
        for _, s := range syms {
                if !ldr.AttrReachable(s) {
                        continue