aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLynn Boger <laboger@linux.vnet.ibm.com>2019-10-28 09:29:40 -0400
committerCarlos Amedee <carlos@golang.org>2019-12-04 17:11:27 +0000
commit6eee9903c7f970defbc0c9770397790b2bed5709 (patch)
treefc45378028bb4c5126a926d01d0c5aebfcad7421
parent4f81a326d0c1e27d36254c664a349e75e638ae00 (diff)
downloadgo-6eee9903c7f970defbc0c9770397790b2bed5709.tar.gz
go-6eee9903c7f970defbc0c9770397790b2bed5709.zip
[release-branch.go1.13] runtime: fix textOff for multiple text sections
If a compilation has multiple text sections, code in textOff must compare the offset argument against the range for each text section to determine which one it is in. The comparison looks like this: if uintptr(off) >= sectaddr && uintptr(off) <= sectaddr+sectlen If the off value being compared is equal to sectaddr+sectlen then it is not within the range of the text section but after it. The comparison should be just '<'. Fixes #35211 Change-Id: I114633fd734563d38f4e842dd884c6c239f73c95 Reviewed-on: https://go-review.googlesource.com/c/go/+/203817 Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com> (cherry picked from commit 0ae9389609f23dc905c58fc2ad7bcc16b770f337) Reviewed-on: https://go-review.googlesource.com/c/go/+/203819 Run-TryBot: Carlos Amedee <carlos@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-rw-r--r--src/runtime/type.go2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/runtime/type.go b/src/runtime/type.go
index 660b45ef39..5ae3c4b09e 100644
--- a/src/runtime/type.go
+++ b/src/runtime/type.go
@@ -287,7 +287,7 @@ func (t *_type) textOff(off textOff) unsafe.Pointer {
for i := range md.textsectmap {
sectaddr := md.textsectmap[i].vaddr
sectlen := md.textsectmap[i].length
- if uintptr(off) >= sectaddr && uintptr(off) <= sectaddr+sectlen {
+ if uintptr(off) >= sectaddr && uintptr(off) < sectaddr+sectlen {
res = md.textsectmap[i].baseaddr + uintptr(off) - uintptr(md.textsectmap[i].vaddr)
break
}