Handle stack split for x32
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 18 Dec 2014 19:09:28 +0000 (11:09 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 6 Jan 2015 23:38:25 +0000 (15:38 -0800)
commit4fc1b9d43cbce7571264a0011c87258b78252750
tree93ec540f596de570077e84135d9e1a78ac4b67a4
parente7287c7f647870093b8ab5ffea0732ffdb8c4d66
Handle stack split for x32

X32 uses cmp %fs:NN,%esp, lea NN(%rsp),%r10d, lea NN(%rsp),%r11d,
instead of cmp %fs:NN,%rsp, lea NN(%rsp),%r10, lea NN(%rsp),%r11.
This patch handles it.

PR gold/17729
* configure.ac (DEFAULT_TARGET_X86_64): Don't set for x32.
(DEFAULT_TARGET_X32): Set for x32.
* x86_64.cc (cmp_insn_32): New.
(lea_r10_insn_32): Likewise.
(lea_r11_insn_32): Likewise.
(cmp_insn_64): Likewise.
(lea_r10_insn_64): Likewise.
(lea_r11_insn_64): Likewise.
(Target_x86_64<size>::do_calls_non_split): Handle x32.
* testsuite/Makefile.am (check_SCRIPTS): Add split_x32.sh.
(check_DATA): Add split_x32 files.
(split_x32_[1234n].o): New targets.
(split_x32_[124]): New targets.
(split_x32_[1234r].stdout): New targets.
* testsuite/split_x32.sh: New file.
* testsuite/split_x32_1.s: Likewise.
* testsuite/split_x32_2.s: Likewise.
* testsuite/split_x32_3.s: Likewise.
* testsuite/split_x32_4.s: Likewise.
* testsuite/split_x32_n.s: Likewise.
* configure: Regenerated.
* testsuite/Makefile.in: Likewise.
12 files changed:
gold/ChangeLog
gold/configure
gold/configure.ac
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/split_x32.sh [new file with mode: 0755]
gold/testsuite/split_x32_1.s [new file with mode: 0644]
gold/testsuite/split_x32_2.s [new file with mode: 0644]
gold/testsuite/split_x32_3.s [new file with mode: 0644]
gold/testsuite/split_x32_4.s [new file with mode: 0644]
gold/testsuite/split_x32_n.s [new file with mode: 0644]
gold/x86_64.cc