From: "H.J. Lu" <hjl.tools@gmail.com>
To: Richard Guenther <richard.guenther@gmail.com>
Cc: DJ Delorie <dj@redhat.com>, Alexandre Oliva <aoliva@redhat.com>,
Paolo Bonzini <bonzini@gnu.org>,
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>,
neroden@gcc.gnu.org, gcc-patches@gcc.gnu.org
Subject: Re: PATCH [1/n] X32: Add initial -x32 support
Date: Wed, 06 Jul 2011 16:40:00 -0000 [thread overview]
Message-ID: <CAMe9rOpQ3uqJoT6dq-z9EHi_LDOsfzLNtEQB2Zb_0SB8PW05fQ@mail.gmail.com> (raw)
In-Reply-To: <CAFiYyc3cffxHrDrO2miU=R2z_yLLHHpr73dosKBW3iBZWK8xHQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 4060 bytes --]
On Wed, Jul 6, 2011 at 8:02 AM, Richard Guenther
<richard.guenther@gmail.com> wrote:
> On Wed, Jul 6, 2011 at 4:48 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> Hi Paolo, DJ, Nathanael, Alexandre, Ralf,
>>
>> Is the change
>> .
>> * configure.ac: Support --enable-x32.
>> * configure: Regenerated.
>>
>> diff --git a/gcc/configure.ac b/gcc/configure.ac
>> index 5f3641b..bddabeb 100644
>> --- a/gcc/configure.ac
>> +++ b/gcc/configure.ac
>> @@ -611,6 +611,11 @@ AC_ARG_ENABLE(multilib,
>> [], [enable_multilib=yes])
>> AC_SUBST(enable_multilib)
>>
>> +# With x32 support
>> +AC_ARG_ENABLE(x32,
>> +[ --enable-x32 enable x32 library support for multiple ABIs],
>
> Looks like a very very generic switch for a global configury ... we already
> have --with-multilib-list (SH only), why not extend that to also work
> for x86_64?
>
> Richard.
>
>> +[], [enable_x32=no])
>> +
>> # Enable __cxa_atexit for C++.
>> AC_ARG_ENABLE(__cxa_atexit,
>> [AS_HELP_STRING([--enable-__cxa_atexit], [enable __cxa_atexit for C++])],
>>
>> OK?
>>
>> Thanks.
>>
Here is the updated patch to use --with-multilib-list=x32.
Paolo, DJ, Nathanael, Alexandre, Ralf, Is the configure.ac change
---
* configure.ac: Mention x86-64 for --with-multilib-list.
* configure: Regenerated.
* doc/install.texi: Document --with-multilib-list=x32.
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 5f3641b..a73f758 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -795,7 +795,7 @@ esac],
[enable_languages=c])
AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (SH only)])],
+[AS_HELP_STRING([--with-multilib-list], [select multilibs (SH and
x86-64 only)])],
:,
with_multilib_list=default)
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 49aac95..a5d266c 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1049,8 +1049,10 @@ sysv, aix.
@item --with-multilib-list=@var{list}
@itemx --without-multilib-list
Specify what multilibs to build.
-Currently only implemented for sh*-*-*.
+Currently only implemented for sh*-*-* and x86-64-*-linux*.
+@table @code
+@item sh*-*-*
@var{list} is a comma separated list of CPU names. These must be of the
form @code{sh*} or @code{m*} (in which case they match the compiler option
for that processor). The list should not contain any endian options -
@@ -1082,6 +1084,12 @@ only little endian SH4AL:
--with-multilib-list=sh4al,!mb/m4al
@end smallexample
+@item x86-64-*-linux*
+If @var{list} is @code{x32}, x32 run-time library will be enabled. By
+default, x32 run-time library is disabled.
+
+@end table
+
@item --with-endian=@var{endians}
Specify what endians to use.
Currently only implemented for sh*-*-*.
---
OK?
Thanks.
--
H.J.
---
2011-07-06 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc: Support --with-multilib-list=x32 for x86 Linux
targets.
* configure.ac: Mention x86-64 for --with-multilib-list.
* configure: Regenerated.
* config/i386/gnu-user64.h (SPEC_64): Support x32.
(SPEC_32): Likewise.
(ASM_SPEC): Likewise.
(LINK_SPEC): Likewise.
(TARGET_THREAD_SSP_OFFSET): Likewise.
(TARGET_THREAD_SPLIT_STACK_OFFSET): Likewise.
(SPEC_X32): New.
* config/i386/i386.h (TARGET_X32): New.
(TARGET_LP64): New.
(LONG_TYPE_SIZE): Likewise.
(POINTER_SIZE): Likewise.
(POINTERS_EXTEND_UNSIGNED): Likewise.
(OPT_ARCH64): Support x32.
(OPT_ARCH32): Likewise.
* config/i386/i386.opt (mx32): New.
* config/i386/kfreebsd-gnu64.h (GNU_USER_LINK_EMULATIONX32): New.
(GLIBC_DYNAMIC_LINKERX32): Likewise.
* config/i386/linux64.h (GNU_USER_LINK_EMULATIONX32): Likewise.
(GLIBC_DYNAMIC_LINKERX32): Likewise.
* config/i386/t-linux-x32: New.
* config/linux.h (UCLIBC_DYNAMIC_LINKERX32): New.
(BIONIC_DYNAMIC_LINKERX32): Likewise.
(GNU_USER_DYNAMIC_LINKERX32): Likewise.
* doc/install.texi: Document --with-multilib-list=x32.
* doc/invoke.texi: Document -mx32.
[-- Attachment #2: gcc-x32-4.patch --]
[-- Type: text/plain, Size: 14702 bytes --]
2011-07-06 H.J. Lu <hongjiu.lu@intel.com>
* config.gcc: Support --with-multilib-list=x32 for x86 Linux
targets.
* configure.ac: Mention x86-64 for --with-multilib-list.
* configure: Regenerated.
* config/i386/gnu-user64.h (SPEC_64): Support x32.
(SPEC_32): Likewise.
(ASM_SPEC): Likewise.
(LINK_SPEC): Likewise.
(TARGET_THREAD_SSP_OFFSET): Likewise.
(TARGET_THREAD_SPLIT_STACK_OFFSET): Likewise.
(SPEC_X32): New.
* config/i386/i386.h (TARGET_X32): New.
(TARGET_LP64): New.
(LONG_TYPE_SIZE): Likewise.
(POINTER_SIZE): Likewise.
(POINTERS_EXTEND_UNSIGNED): Likewise.
(OPT_ARCH64): Support x32.
(OPT_ARCH32): Likewise.
* config/i386/i386.opt (mx32): New.
* config/i386/kfreebsd-gnu64.h (GNU_USER_LINK_EMULATIONX32): New.
(GLIBC_DYNAMIC_LINKERX32): Likewise.
* config/i386/linux64.h (GNU_USER_LINK_EMULATIONX32): Likewise.
(GLIBC_DYNAMIC_LINKERX32): Likewise.
* config/i386/t-linux-x32: New.
* config/linux.h (UCLIBC_DYNAMIC_LINKERX32): New.
(BIONIC_DYNAMIC_LINKERX32): Likewise.
(GNU_USER_DYNAMIC_LINKERX32): Likewise.
* doc/install.texi: Document --with-multilib-list=x32.
* doc/invoke.texi: Document -mx32.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index c77f40b..2622046 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1279,7 +1279,11 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
if test x$enable_targets = xall; then
tm_file="${tm_file} i386/x86-64.h i386/gnu-user64.h i386/linux64.h"
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
- tmake_file="${tmake_file} i386/t-linux64"
+ if test x${with_multilib_list} = xx32; then
+ tmake_file="${tmake_file} i386/t-linux-x32"
+ else
+ tmake_file="${tmake_file} i386/t-linux64"
+ fi
need_64bit_hwint=yes
need_64bit_isa=yes
case X"${with_cpu}" in
@@ -1317,7 +1321,12 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
x86_64-*-kfreebsd*-gnu) tm_file="${tm_file} kfreebsd-gnu.h i386/kfreebsd-gnu64.h" ;;
x86_64-*-knetbsd*-gnu) tm_file="${tm_file} knetbsd-gnu.h" ;;
esac
- tmake_file="${tmake_file} i386/t-linux64 i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
+ if test x${with_multilib_list} = xx32; then
+ tmake_file="${tmake_file} i386/t-linux-x32"
+ else
+ tmake_file="${tmake_file} i386/t-linux64"
+ fi
+ tmake_file="${tmake_file} i386/t-crtstuff i386/t-crtpc i386/t-crtfm t-dfprules"
;;
i[34567]86-pc-msdosdjgpp*)
xm_file=i386/xm-djgpp.h
diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h
index b069975..954f3b2 100644
--- a/gcc/config/i386/gnu-user64.h
+++ b/gcc/config/i386/gnu-user64.h
@@ -58,25 +58,31 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#if TARGET_64BIT_DEFAULT
#define SPEC_32 "m32"
-#define SPEC_64 "!m32"
+#define SPEC_64 "m32|mx32:;"
+#define SPEC_X32 "mx32"
#else
-#define SPEC_32 "!m64"
+#define SPEC_32 "m64|mx32:;"
#define SPEC_64 "m64"
+#define SPEC_X32 "mx32"
#endif
#undef ASM_SPEC
-#define ASM_SPEC "%{" SPEC_32 ":--32} %{" SPEC_64 ":--64} \
+#define ASM_SPEC "%{" SPEC_32 ":--32} \
+ %{" SPEC_64 ":--64} \
+ %{" SPEC_X32 ":--x32} \
%{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}"
#undef LINK_SPEC
#define LINK_SPEC "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \
%{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \
+ %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \
%{shared:-shared} \
%{!shared: \
%{!static: \
%{rdynamic:-export-dynamic} \
%{" SPEC_32 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \
- %{" SPEC_64 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \
+ %{" SPEC_64 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "} \
+ %{" SPEC_X32 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKERX32 "}} \
%{static:-static}}"
/* Similar to standard GNU userspace, but adding -ffast-math support. */
@@ -110,10 +116,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#ifdef TARGET_LIBC_PROVIDES_SSP
/* i386 glibc provides __stack_chk_guard in %gs:0x14,
+ x32 glibc provides it in %fs:0x18.
x86_64 glibc provides it in %fs:0x28. */
-#define TARGET_THREAD_SSP_OFFSET (TARGET_64BIT ? 0x28 : 0x14)
+#define TARGET_THREAD_SSP_OFFSET \
+ (TARGET_64BIT ? (TARGET_X32 ? 0x18 : 0x28) : 0x14)
/* We steal the last transactional memory word. */
#define TARGET_CAN_SPLIT_STACK
-#define TARGET_THREAD_SPLIT_STACK_OFFSET (TARGET_64BIT ? 0x70 : 0x30)
+#define TARGET_THREAD_SPLIT_STACK_OFFSET \
+ (TARGET_64BIT ? (TARGET_X32 ? 0x40 : 0x70) : 0x30)
#endif
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index a1ac6b6..8cef4e7 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -42,6 +42,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Redefines for option macros. */
#define TARGET_64BIT OPTION_ISA_64BIT
+#define TARGET_X32 OPTION_ISA_X32
#define TARGET_MMX OPTION_ISA_MMX
#define TARGET_3DNOW OPTION_ISA_3DNOW
#define TARGET_3DNOW_A OPTION_ISA_3DNOW_A
@@ -72,6 +73,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define TARGET_RDRND OPTION_ISA_RDRND
#define TARGET_F16C OPTION_ISA_F16C
+#define TARGET_LP64 (TARGET_64BIT && !TARGET_X32)
/* SSE4.1 defines round instructions */
#define OPTION_MASK_ISA_ROUND OPTION_MASK_ISA_SSE4_1
@@ -516,8 +518,8 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
#define OPT_ARCH64 "!m32"
#define OPT_ARCH32 "m32"
#else
-#define OPT_ARCH64 "m64"
-#define OPT_ARCH32 "!m64"
+#define OPT_ARCH64 "m64|mx32"
+#define OPT_ARCH32 "m64|mx32:;"
#endif
/* Support for configure-time defaults of some command line options.
@@ -637,6 +639,8 @@ enum target_cpu_default
#define SHORT_TYPE_SIZE 16
#define INT_TYPE_SIZE 32
+#define LONG_TYPE_SIZE (TARGET_X32 ? 32 : BITS_PER_WORD)
+#define POINTER_SIZE (TARGET_X32 ? 32 : BITS_PER_WORD)
#define LONG_LONG_TYPE_SIZE 64
#define FLOAT_TYPE_SIZE 32
#define DOUBLE_TYPE_SIZE 64
@@ -1742,6 +1746,13 @@ do { \
between pointers and any other objects of this machine mode. */
#define Pmode (TARGET_64BIT ? DImode : SImode)
+/* A C expression whose value is zero if pointers that need to be extended
+ from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and
+ greater then zero if they are zero-extended and less then zero if the
+ ptr_extend instruction should be used. */
+
+#define POINTERS_EXTEND_UNSIGNED 1
+
/* A function address in a call instruction
is a byte address (for indexing purposes)
so give the MEM rtx a byte's mode. */
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index 9886b7b..8dea93e 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -398,9 +398,13 @@ Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_f
Generate 32bit i386 code
m64
-Target RejectNegative Negative(m32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) Save
+Target RejectNegative Negative(mx32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) Save
Generate 64bit x86-64 code
+mx32
+Target RejectNegative Negative(m32) Report Mask(ISA_X32) Var(ix86_isa_flags) Save
+Generate 32bit x86-64 code
+
mmmx
Target Report Mask(ISA_MMX) Var(ix86_isa_flags) Save
Support MMX built-in functions
diff --git a/gcc/config/i386/kfreebsd-gnu64.h b/gcc/config/i386/kfreebsd-gnu64.h
index c3798a5..2085ca5 100644
--- a/gcc/config/i386/kfreebsd-gnu64.h
+++ b/gcc/config/i386/kfreebsd-gnu64.h
@@ -21,6 +21,8 @@ along with GCC; see the file COPYING3. If not see
#define GNU_USER_LINK_EMULATION32 "elf_i386_fbsd"
#define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd"
+#define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64_fbsd"
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
+#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-kfreebsd-x32.so.1"
diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
index 5d33224..5b0a212 100644
--- a/gcc/config/i386/linux64.h
+++ b/gcc/config/i386/linux64.h
@@ -26,6 +26,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define GNU_USER_LINK_EMULATION32 "elf_i386"
#define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+#define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
diff --git a/gcc/config/i386/t-linux-x32 b/gcc/config/i386/t-linux-x32
new file mode 100644
index 0000000..92acf91
--- /dev/null
+++ b/gcc/config/i386/t-linux-x32
@@ -0,0 +1,42 @@
+# Copyright (C) 2011 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3. If not see
+# <http://www.gnu.org/licenses/>.
+
+# On Debian, Ubuntu and other derivative distributions, the 32bit libraries
+# are found in /lib32 and /usr/lib32, /lib64 and /usr/lib64 are symlinks to
+# /lib and /usr/lib, while other distributions install libraries into /lib64
+# and /usr/lib64. The LSB does not enforce the use of /lib64 and /usr/lib64,
+# it doesn't tell anything about the 32bit libraries on those systems. Set
+# MULTILIB_OSDIRNAMES according to what is found on the target.
+
+# To support i386, x86-64 and x32 libraries, the directory structrue
+# should be:
+#
+# /lib has i386 libraries.
+# /lib64 has x86-64 libraries.
+# /libx32 has x32 libraries.
+#
+MULTILIB_OPTIONS = m64/m32/mx32
+MULTILIB_DIRNAMES = 64 32 x32
+MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib) ../libx32
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+
+EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o \
+ crtbeginT.o crtprec32.o crtprec64.o crtprec80.o \
+ crtfastmath.o
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
index fc897b1..dbbeea5 100644
--- a/gcc/config/linux.h
+++ b/gcc/config/linux.h
@@ -77,9 +77,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
#define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
+#define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
#define GNU_USER_DYNAMIC_LINKER \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, \
@@ -90,6 +92,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#define GNU_USER_DYNAMIC_LINKER64 \
CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
BIONIC_DYNAMIC_LINKER64)
+#define GNU_USER_DYNAMIC_LINKERX32 \
+ CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
+ BIONIC_DYNAMIC_LINKERX32)
/* Determine whether the entire c99 runtime
is present in the runtime library. */
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 5f3641b..a73f758 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -795,7 +795,7 @@ esac],
[enable_languages=c])
AC_ARG_WITH(multilib-list,
-[AS_HELP_STRING([--with-multilib-list], [select multilibs (SH only)])],
+[AS_HELP_STRING([--with-multilib-list], [select multilibs (SH and x86-64 only)])],
:,
with_multilib_list=default)
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 49aac95..a5d266c 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1049,8 +1049,10 @@ sysv, aix.
@item --with-multilib-list=@var{list}
@itemx --without-multilib-list
Specify what multilibs to build.
-Currently only implemented for sh*-*-*.
+Currently only implemented for sh*-*-* and x86-64-*-linux*.
+@table @code
+@item sh*-*-*
@var{list} is a comma separated list of CPU names. These must be of the
form @code{sh*} or @code{m*} (in which case they match the compiler option
for that processor). The list should not contain any endian options -
@@ -1082,6 +1084,12 @@ only little endian SH4AL:
--with-multilib-list=sh4al,!mb/m4al
@end smallexample
+@item x86-64-*-linux*
+If @var{list} is @code{x32}, x32 run-time library will be enabled. By
+default, x32 run-time library is disabled.
+
+@end table
+
@item --with-endian=@var{endians}
Specify what endians to use.
Currently only implemented for sh*-*-*.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 1fc4038..fd6711c 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -610,7 +610,7 @@ Objective-C and Objective-C++ Dialects}.
-mpc32 -mpc64 -mpc80 -mstackrealign @gol
-momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol
-mcmodel=@var{code-model} -mabi=@var{name} @gol
--m32 -m64 -mlarge-data-threshold=@var{num} @gol
+-m32 -m64 -mx32 -mlarge-data-threshold=@var{num} @gol
-msse2avx -mfentry -m8bit-idiv @gol
-mavx256-split-unaligned-load -mavx256-split-unaligned-store}
@@ -12851,15 +12851,19 @@ on AMD x86-64 processors in 64-bit environments.
@table @gcctabopt
@item -m32
@itemx -m64
+@itemx -mx32
@opindex m32
@opindex m64
+@opindex mx32
Generate code for a 32-bit or 64-bit environment.
-The 32-bit environment sets int, long and pointer to 32 bits and
+The @option{-m32} option sets int, long and pointer to 32 bits and
generates code that runs on any i386 system.
-The 64-bit environment sets int to 32 bits and long and pointer
-to 64 bits and generates code for AMD's x86-64 architecture. For
-darwin only the -m64 option turns off the @option{-fno-pic} and
-@option{-mdynamic-no-pic} options.
+The @option{-m64} option sets int to 32 bits and long and pointer
+to 64 bits and generates code for AMD's x86-64 architecture.
+The @option{-mx32} option sets int, long and pointer to 32 bits and
+generates code for AMD's x86-64 architecture.
+For darwin only the @option{-m64} option turns off the @option{-fno-pic}
+and @option{-mdynamic-no-pic} options.
@item -mno-red-zone
@opindex mno-red-zone
next prev parent reply other threads:[~2011-07-06 16:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-05 19:55 PATCH [1/n]: " H.J. Lu
2011-06-06 15:47 ` Uros Bizjak
2011-06-07 15:47 ` Joseph S. Myers
2011-06-07 18:54 ` H.J. Lu
2011-06-07 19:19 ` Joseph S. Myers
2011-06-07 15:59 ` Joseph S. Myers
2011-06-07 19:11 ` H.J. Lu
2011-06-07 19:20 ` Joseph S. Myers
2011-06-07 22:02 ` H.J. Lu
2011-06-14 17:52 ` H.J. Lu
2011-07-05 14:42 ` PATCH [1/n] X32: " H.J. Lu
2011-07-05 15:21 ` Uros Bizjak
2011-07-05 17:59 ` H.J. Lu
2011-07-05 18:18 ` Uros Bizjak
2011-07-05 19:09 ` H.J. Lu
2011-07-05 19:09 ` Joseph S. Myers
2011-07-05 20:07 ` Uros Bizjak
2011-07-06 14:50 ` H.J. Lu
2011-07-06 15:03 ` Richard Guenther
2011-07-06 16:40 ` H.J. Lu [this message]
2011-07-07 13:03 ` H.J. Lu
2011-07-07 13:08 ` Uros Bizjak
2011-07-07 13:27 ` Paolo Bonzini
2011-07-07 15:10 ` H.J. Lu
2011-07-07 15:14 ` Uros Bizjak
2011-07-07 15:38 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAMe9rOpQ3uqJoT6dq-z9EHi_LDOsfzLNtEQB2Zb_0SB8PW05fQ@mail.gmail.com \
--to=hjl.tools@gmail.com \
--cc=Ralf.Wildenhues@gmx.de \
--cc=aoliva@redhat.com \
--cc=bonzini@gnu.org \
--cc=dj@redhat.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=neroden@gcc.gnu.org \
--cc=richard.guenther@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).