aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCherry Mui <cherryyz@google.com>2021-05-11 22:40:02 -0400
committerDmitri Shuralyov <dmitshur@golang.org>2021-05-21 22:34:38 +0000
commit3380b180c66ffcee2bec37877f4a5be5ab78fd5c (patch)
tree04f3c5c6ac7f0ce9eab93ab054b271ca5a02ed0e
parent963687891319d118c20a2a71f0234ceb3a8dade4 (diff)
downloadgo-3380b180c66ffcee2bec37877f4a5be5ab78fd5c.tar.gz
go-3380b180c66ffcee2bec37877f4a5be5ab78fd5c.zip
[release-branch.go1.15] cmd/link: don't cast end address to int32
When linking a very large binary, the section address may not fit in int32. Don't truncate it. Fixes #46127. 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/+/319370
-rw-r--r--src/cmd/link/internal/ld/elf.go2
-rw-r--r--src/cmd/link/internal/ld/macho.go2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/cmd/link/internal/ld/elf.go b/src/cmd/link/internal/ld/elf.go
index 78298beafe..36ec4035c3 100644
--- a/src/cmd/link/internal/ld/elf.go
+++ b/src/cmd/link/internal/ld/elf.go
@@ -1400,7 +1400,7 @@ func elfrelocsect(ctxt *Link, sect *sym.Section, syms []*sym.Symbol) {
}
ldr := ctxt.loader
- eaddr := int32(sect.Vaddr + sect.Length)
+ eaddr := sect.Vaddr + sect.Length
for _, s := range syms {
if !s.Attr.Reachable() {
continue
diff --git a/src/cmd/link/internal/ld/macho.go b/src/cmd/link/internal/ld/macho.go
index 5548b8c666..df016f3d43 100644
--- a/src/cmd/link/internal/ld/macho.go
+++ b/src/cmd/link/internal/ld/macho.go
@@ -1044,7 +1044,7 @@ func machorelocsect(ctxt *Link, sect *sym.Section, syms []*sym.Symbol) {
}
}
- eaddr := int32(sect.Vaddr + sect.Length)
+ eaddr := sect.Vaddr + sect.Length
for _, s := range syms {
if !s.Attr.Reachable() {
continue