f64a6eeaf0
Most importantly, this version of delocate works for ppc64le. It should also work for x86-64, but will need significant testing to make sure that it covers all the cases that the previous delocate.go covered. It's less stringtastic than the old code, however the parser isn't as nice as I would have liked. I thought that the reason we put up with AT&T syntax with Intel is so that assembly syntax could be somewhat consistent across platforms. At least for ppc64le, that does not appear to be the case. Change-Id: Ic7e3c6acc3803d19f2c3ff5620c5e39703d74212 Reviewed-on: https://boringssl-review.googlesource.com/16464 Reviewed-by: Adam Langley <agl@google.com> Commit-Queue: Adam Langley <agl@google.com> CQ-Verified: CQ bot account: commit-bot@chromium.org <commit-bot@chromium.org>
32 lines
826 B
ArmAsm
32 lines
826 B
ArmAsm
.text
|
|
foo:
|
|
# leaq of OPENSSL_ia32cap_P is supported.
|
|
leaq OPENSSL_ia32cap_P(%rip), %r11
|
|
|
|
# As is the equivalent GOTPCREL movq.
|
|
movq OPENSSL_ia32cap_P@GOTPCREL(%rip), %r12
|
|
|
|
# Test that GOTPCREL accesses get translated. They are handled
|
|
# differently for local and external symbols.
|
|
|
|
pushq stderr@GOTPCREL(%rip)
|
|
pushq foo@GOTPCREL(%rip)
|
|
|
|
movq stderr@GOTPCREL(%rip), %r11
|
|
movq foo@GOTPCREL(%rip), %r11
|
|
|
|
vmovq stderr@GOTPCREL(%rip), %xmm0
|
|
vmovq foo@GOTPCREL(%rip), %xmm0
|
|
|
|
cmoveq stderr@GOTPCREL(%rip), %r11
|
|
cmoveq foo@GOTPCREL(%rip), %r11
|
|
cmovneq stderr@GOTPCREL(%rip), %r11
|
|
cmovneq foo@GOTPCREL(%rip), %r11
|
|
|
|
# Synthesized symbols do not use the GOT.
|
|
movq BORINGSSL_bcm_text_start@GOTPCREL(%rip), %r11
|
|
movq foobar_bss_get@GOTPCREL(%rip), %r11
|
|
movq OPENSSL_ia32cap_get@GOTPCREL(%rip), %r11
|
|
|
|
.comm foobar,64,32
|