From: Russ Cox Date: Mon, 29 Jun 2015 17:32:09 +0000 (-0400) Subject: runtime: fix broken arm builds X-Git-Tag: go1.5beta1~58 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8b99bb7b8c8369d66852dbb2713e46a58952e093;p=gostls13.git runtime: fix broken arm builds Change-Id: I08de33aacb3fc932722286d69b1dd70ffe787c89 Reviewed-on: https://go-review.googlesource.com/11697 Reviewed-by: Russ Cox --- diff --git a/src/runtime/symtab.go b/src/runtime/symtab.go index f02f592413..44d08e0e7a 100644 --- a/src/runtime/symtab.go +++ b/src/runtime/symtab.go @@ -130,10 +130,18 @@ func moduledataverify1(datap *moduledata) { } if debugPcln || nftab-i < 5 { + // Check a PC near but not at the very end. + // The very end might be just padding that is not covered by the tables. + // No architecture rounds function entries to more than 16 bytes, + // but if one came along we'd need to subtract more here. + end := datap.ftab[i+1].entry - 16 + if end < datap.ftab[i].entry { + end = datap.ftab[i].entry + } f := (*_func)(unsafe.Pointer(&datap.pclntable[datap.ftab[i].funcoff])) - pcvalue(f, f.pcfile, datap.ftab[i+1].entry-1, true) - pcvalue(f, f.pcln, datap.ftab[i+1].entry-1, true) - pcvalue(f, f.pcsp, datap.ftab[i+1].entry-1, true) + pcvalue(f, f.pcfile, end, true) + pcvalue(f, f.pcln, end, true) + pcvalue(f, f.pcsp, end, true) } }