summaryrefslogtreecommitdiff
path: root/test/linkmain_run.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2018-04-28 22:00:36 -0400
committerAustin Clements <austin@google.com>2018-04-30 18:28:22 +0000
commit1b44167d055464f79c026d2023953ba7efdbcfe6 (patch)
tree1808e26c116b7e594de792558d8b3b41fd4b243e /test/linkmain_run.go
parent3bdbb5df7692142c13cf93f6d80b2a907e3f396b (diff)
downloadgo-git-1b44167d055464f79c026d2023953ba7efdbcfe6.tar.gz
cmd/internal/obj/arm: fix/rationalize checkpool distance check
When deciding whether to flush the constant pool, the distance check in checkpool can fail to account for padding inserted before the next instruction by nacl. For example, see this failure: https://go-review.googlesource.com/c/go/+/109350/2#message-07085b591227824bb1d646a7192cbfa7e0b97066 Here, the pool should be flushed before a CALL instruction, but checkpool only considers the CALL instruction to be 4 bytes and doesn't account for the 8 extra bytes of alignment padding added before it by asmoutnacl. As a result, it flushes the pool after the CALL instruction, which is 4 bytes too late. Furthermore, there's no explanation for the rather convoluted expression used to decide if we need to emit the constant pool. This CL modifies checkpool to take the PC following the tentative instruction as an argument. The caller knows this already and this way checkpool doesn't have to guess (and get it wrong in the presence of padding). In the process, it rewrites the test to be structured and commented. Change-Id: I32a3d50ffb5a94d42be943e9bcd49036c7e9b95c Reviewed-on: https://go-review.googlesource.com/110017 Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'test/linkmain_run.go')
0 files changed, 0 insertions, 0 deletions