You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The go assembler appears to mistreat this example, causing a very subtle failure where an attempt to read a global into registers <= Y7 works but > Y7 causes the code to segfault, since the source address is incorrect.
GNU objdump 2.26 output. Note how objdump correctly identifies 0x55c58 as being <zeros>, but 0x55c5000 is incorrect, not mapped at runtime and causes a segfault.
4f3b80: c5 fe 6f 3d 58 5c 05vmovdqu0x55c58(%rip),%ymm7 # 5497e0 <zeros> 4f3b87: 00 4f3b88: c5 7e 6f 050050 5c vmovdqu0x55c5000(%rip),%ymm8 # 5ab8b90 <runtime.end+0x54c3910> 4f3b8f: 05 4f3b90: 00 cc add %cl,%ah
The next expansion shows the objdump output you get if you load zero into each register Y0-Y15 in turn.
Version: go1.8 Arch: amd64.
The go assembler appears to mistreat this example, causing a very subtle failure where an attempt to read a global into registers
<= Y7
works but> Y7
causes the code to segfault, since the source address is incorrect.GNU
objdump
2.26 output. Note how objdump correctly identifies0x55c58
as being<zeros>
, but0x55c5000
is incorrect, not mapped at runtime and causes a segfault.The next expansion shows the objdump output you get if you load zero into each register Y0-Y15 in turn.
go tool objdump
provided below for completeness, but is junk.The text was updated successfully, but these errors were encountered: