aboutsummaryrefslogtreecommitdiff
path: root/gold/configure.ac
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2014-12-18 11:09:28 -0800
committerH.J. Lu <hjl.tools@gmail.com>2015-01-06 15:38:25 -0800
commit4fc1b9d43cbce7571264a0011c87258b78252750 (patch)
tree93ec540f596de570077e84135d9e1a78ac4b67a4 /gold/configure.ac
parente7287c7f647870093b8ab5ffea0732ffdb8c4d66 (diff)
downloadfsf-binutils-gdb-4fc1b9d43cbce7571264a0011c87258b78252750.zip
fsf-binutils-gdb-4fc1b9d43cbce7571264a0011c87258b78252750.tar.gz
fsf-binutils-gdb-4fc1b9d43cbce7571264a0011c87258b78252750.tar.bz2
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.
Diffstat (limited to 'gold/configure.ac')
-rw-r--r--gold/configure.ac15
1 files changed, 14 insertions, 1 deletions
diff --git a/gold/configure.ac b/gold/configure.ac
index b574153..a2e5895 100644
--- a/gold/configure.ac
+++ b/gold/configure.ac
@@ -204,7 +204,20 @@ for targ in $target $canon_targets; do
AM_CONDITIONAL(DEFAULT_TARGET_I386, test "$targ_obj" = "i386")
AM_CONDITIONAL(DEFAULT_TARGET_POWERPC, test "$targ_obj" = "powerpc")
AM_CONDITIONAL(DEFAULT_TARGET_SPARC, test "$targ_obj" = "sparc")
- AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$targ_obj" = "x86_64")
+ target_x86_64=no
+ target_x32=no
+ if test "$targ_obj" = "x86_64"; then
+ case "$target" in
+ x86_64*-linux-gnux32)
+ target_x32=yes
+ ;;
+ *)
+ target_x86_64=yes
+ ;;
+ esac
+ fi
+ AM_CONDITIONAL(DEFAULT_TARGET_X86_64, test "$target_x86_64" = "yes")
+ AM_CONDITIONAL(DEFAULT_TARGET_X32, test "$target_x32" = "yes")
AM_CONDITIONAL(DEFAULT_TARGET_TILEGX, test "$targ_obj" = "tilegx")
AM_CONDITIONAL(DEFAULT_TARGET_MIPS, test "$targ_obj" = "mips")
DEFAULT_TARGET=${targ_obj}