On Tue, Jun 7, 2011 at 12:17 PM, Joseph S. Myers <jos...@codesourcery.com> wrote: > On Tue, 7 Jun 2011, H.J. Lu wrote: > >> That is -mx32 takes the same default as -m64. It is the correct >> behavior for -mx32. > > I think it's only right in the case where -m64 is the default, and the > specs for the case where -m32 is the default need changing to handle -mx32 > properly. >
I checked this patch into x32 branch. Thanks. -- H.J. --- commit bf324611c9c9dcd844ecc883486f580fda114ffc Author: H.J. Lu <hjl.to...@gmail.com> Date: Tue Jun 7 13:05:57 2011 -0700 Pass proper x32 options to as, ld and compilers. diff --git a/gcc/ChangeLog.x32 b/gcc/ChangeLog.x32 index 5655c61..38d63d8 100644 --- a/gcc/ChangeLog.x32 +++ b/gcc/ChangeLog.x32 @@ -1,5 +1,16 @@ 2011-06-07 H.J. Lu <hongjiu...@intel.com> + * config/i386/gnu-user64.h (SPEC_64): Support x32. + (SPEC_32): Likewise. + (SPEC_X32): New. + (ASM_SPEC): Use SPEC_X32. + (LINK_SPEC): Likewise. + + * config/i386/i386.h (OPT_ARCH64): Support x32. + (OPT_ARCH32): Likewise. + +2011-06-07 H.J. Lu <hongjiu...@intel.com> + * doc/invoke.texi: Use @option{} on -mx32, -m64 and -mx32. 2011-06-07 H.J. Lu <hongjiu...@intel.com> diff --git a/gcc/config/i386/gnu-user64.h b/gcc/config/i386/gnu-user64.h index b99fb13..bb4b8da 100644 --- a/gcc/config/i386/gnu-user64.h +++ b/gcc/config/i386/gnu-user64.h @@ -58,15 +58,18 @@ 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 ":%{!mx32:--32}} %{" \ - SPEC_64 ":%{!mx32:--64}} %{mx32:--x32} \ +#define ASM_SPEC "%{" SPEC_32 ":--32} \ + %{" SPEC_64 ":--64} \ + %{" SPEC_X32 ":--x32} \ %{!mno-sse2avx:%{mavx:-msse2avx}} %{msse2avx:%{!mavx:-msse2avx}}" #undef LINK_SPEC @@ -76,9 +79,9 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see %{!shared: \ %{!static: \ %{rdynamic:-export-dynamic} \ - %{" SPEC_32 ":%{!mx32:-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \ - %{" SPEC_64 ":%{!mx32:-dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}} \ - %{mx32:-dynamic-linker " GNU_USER_DYNAMIC_LINKERX32 "}} \ + %{" SPEC_32 ":-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \ + %{" 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. */ diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index f9270de..ec86e74 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -519,8 +519,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.