Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Tue, Apr 10, 2012 at 7:41 AM, H.J. Lu hjl.to...@gmail.com wrote: On Thu, Apr 5, 2012 at 8:57 AM, H.J. Lu hjl.to...@gmail.com wrote: On Thu, Apr 5, 2012 at 8:36 AM, Uros Bizjak ubiz...@gmail.com wrote: On Thu, Apr 5, 2012 at 3:28 PM, H.J. Lu hjl.to...@gmail.com wrote: Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. The other place where it shows up is cross compilers but who is going to use a 3.2 compiler with GCC 4.8 anyways? FWIW, I have no problem with checking __LP64__ only. I just want to mention this potential issue. Here is a different patch. It checks sizeof (void *) for those hosts where it is appropriate. Does it look OK? Looks OK to me, but you need a GWP reviewer to OK this change now... Here is the patch with ChangeLog. Tested on Linux/x32. Jakub, is this OK for trunk? Hi Richard, Is this patch: http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00303.html OK for trunk? I checked in this patch to check __x86_64 and __LP64__. I will submit a followup patch to simplify it later. Thanks. -- H.J. gcc-x32-pch-3.patch Description: Binary data
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Thu, Apr 5, 2012 at 8:57 AM, H.J. Lu hjl.to...@gmail.com wrote: On Thu, Apr 5, 2012 at 8:36 AM, Uros Bizjak ubiz...@gmail.com wrote: On Thu, Apr 5, 2012 at 3:28 PM, H.J. Lu hjl.to...@gmail.com wrote: Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. The other place where it shows up is cross compilers but who is going to use a 3.2 compiler with GCC 4.8 anyways? FWIW, I have no problem with checking __LP64__ only. I just want to mention this potential issue. Here is a different patch. It checks sizeof (void *) for those hosts where it is appropriate. Does it look OK? Looks OK to me, but you need a GWP reviewer to OK this change now... Here is the patch with ChangeLog. Tested on Linux/x32. Jakub, is this OK for trunk? Hi Richard, Is this patch: http://gcc.gnu.org/ml/gcc-patches/2012-04/msg00303.html OK for trunk? Thanks. -- H.J.
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Wed, Apr 4, 2012 at 11:56 AM, H.J. Lu hjl.to...@gmail.com wrote: On Wed, Apr 4, 2012 at 11:53 AM, Andrew Pinski pins...@gmail.com wrote: On Wed, Apr 4, 2012 at 11:50 AM, Uros Bizjak ubiz...@gmail.com wrote: Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. The other place where it shows up is cross compilers but who is going to use a 3.2 compiler with GCC 4.8 anyways? FWIW, I have no problem with checking __LP64__ only. I just want to mention this potential issue. Here is a different patch. It checks sizeof (void *) for those hosts where it is appropriate. Does it look OK? Thanks. -- H.J. --- diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c index 94b7a0b..93c513e 100644 --- a/gcc/config/host-linux.c +++ b/gcc/config/host-linux.c @@ -64,14 +64,12 @@ /* For various ports, try to guess a fixed spot in the vm space that's probably free. */ -#if defined(__alpha) -# define TRY_EMPTY_VM_SPACE0x100 +#if defined(__alpha) || defined(__ARM_EABI__) || defined(__i386) \ +|| defined(__x86_64) +# define TRY_EMPTY_VM_SPACE\ + (sizeof (void *) == 8 ? 0x10 : 0x6000) #elif defined(__ia64) # define TRY_EMPTY_VM_SPACE0x2001 -#elif defined(__x86_64) -# define TRY_EMPTY_VM_SPACE0x10 -#elif defined(__i386) -# define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__powerpc__) # define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__s390x__) @@ -84,8 +82,6 @@ # define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__mc68000__) # define TRY_EMPTY_VM_SPACE0x4000 -#elif defined(__ARM_EABI__) -# define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__mips__) defined(__LP64__) # define TRY_EMPTY_VM_SPACE0x80 #elif defined(__mips__)
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Thu, Apr 5, 2012 at 8:36 AM, Uros Bizjak ubiz...@gmail.com wrote: On Thu, Apr 5, 2012 at 3:28 PM, H.J. Lu hjl.to...@gmail.com wrote: Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. The other place where it shows up is cross compilers but who is going to use a 3.2 compiler with GCC 4.8 anyways? FWIW, I have no problem with checking __LP64__ only. I just want to mention this potential issue. Here is a different patch. It checks sizeof (void *) for those hosts where it is appropriate. Does it look OK? Looks OK to me, but you need a GWP reviewer to OK this change now... Here is the patch with ChangeLog. Tested on Linux/x32. Jakub, is this OK for trunk? Thanks. -- H.J. 2012-04-03 H.J. Lu hongjiu...@intel.com * config/host-linux.c (TRY_EMPTY_VM_SPACE): Check pointer size for alpha, arm, i386 and x86-64. diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c index 94b7a0b..93c513e 100644 --- a/gcc/config/host-linux.c +++ b/gcc/config/host-linux.c @@ -64,14 +64,12 @@ /* For various ports, try to guess a fixed spot in the vm space that's probably free. */ -#if defined(__alpha) -# define TRY_EMPTY_VM_SPACE 0x100 +#if defined(__alpha) || defined(__ARM_EABI__) || defined(__i386) \ +|| defined(__x86_64) +# define TRY_EMPTY_VM_SPACE \ + (sizeof (void *) == 8 ? 0x10 : 0x6000) #elif defined(__ia64) # define TRY_EMPTY_VM_SPACE 0x2001 -#elif defined(__x86_64) -# define TRY_EMPTY_VM_SPACE 0x10 -#elif defined(__i386) -# define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__powerpc__) # define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__s390x__) @@ -84,8 +82,6 @@ # define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__mc68000__) # define TRY_EMPTY_VM_SPACE 0x4000 -#elif defined(__ARM_EABI__) -# define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__mips__) defined(__LP64__) # define TRY_EMPTY_VM_SPACE 0x80 #elif defined(__mips__)
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
Hello! This patch defines TRY_EMPTY_VM_SPACE for Linux/x32. Tested on Linux/x32. OK for trunk? 2012-04-03 H.J. Lu hongjiu...@intel.com * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to 0x6000 for x32. I think we can simply check for __LP64__, without version check, as is the case with SPARC and MIPS targets. Uros. Index: host-linux.c === --- host-linux.c(revision 186141) +++ host-linux.c(working copy) @@ -68,8 +68,10 @@ # define TRY_EMPTY_VM_SPACE0x100 #elif defined(__ia64) # define TRY_EMPTY_VM_SPACE0x2001 +#elif defined(__x86_64) defined(__LP64__) +# define TRY_EMPTY_VM_SPACE0x10 #elif defined(__x86_64) -# define TRY_EMPTY_VM_SPACE0x10 +# define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__i386) # define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__powerpc__)
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Wed, Apr 4, 2012 at 11:08 AM, Uros Bizjak ubiz...@gmail.com wrote: Hello! This patch defines TRY_EMPTY_VM_SPACE for Linux/x32. Tested on Linux/x32. OK for trunk? 2012-04-03 H.J. Lu hongjiu...@intel.com * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to 0x6000 for x32. I think we can simply check for __LP64__, without version check, as is the case with SPARC and MIPS targets. Uros. Index: host-linux.c === --- host-linux.c (revision 186141) +++ host-linux.c (working copy) @@ -68,8 +68,10 @@ # define TRY_EMPTY_VM_SPACE 0x100 #elif defined(__ia64) # define TRY_EMPTY_VM_SPACE 0x2001 +#elif defined(__x86_64) defined(__LP64__) +# define TRY_EMPTY_VM_SPACE 0x10 #elif defined(__x86_64) -# define TRY_EMPTY_VM_SPACE 0x10 +# define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__i386) # define TRY_EMPTY_VM_SPACE 0x6000 #elif defined(__powerpc__) When you compile GCC 4.8 with GCC 3.2 on Linux/x86-64, __LP64__ won't be defined and TRY_EMPTY_VM_SPACE will be 0x6000 instead of 0x10. -- H.J.
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Wed, Apr 4, 2012 at 8:47 PM, H.J. Lu hjl.to...@gmail.com wrote: On Wed, Apr 4, 2012 at 11:08 AM, Uros Bizjak ubiz...@gmail.com wrote: Hello! This patch defines TRY_EMPTY_VM_SPACE for Linux/x32. Tested on Linux/x32. OK for trunk? 2012-04-03 H.J. Lu hongjiu...@intel.com * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to 0x6000 for x32. I think we can simply check for __LP64__, without version check, as is the case with SPARC and MIPS targets. When you compile GCC 4.8 with GCC 3.2 on Linux/x86-64, __LP64__ won't be defined and TRY_EMPTY_VM_SPACE will be 0x6000 instead of 0x10. Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. Uros.
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Wed, Apr 4, 2012 at 11:50 AM, Uros Bizjak ubiz...@gmail.com wrote: Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. The other place where it shows up is cross compilers but who is going to use a 3.2 compiler with GCC 4.8 anyways? -- Pinski
Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
On Wed, Apr 4, 2012 at 11:53 AM, Andrew Pinski pins...@gmail.com wrote: On Wed, Apr 4, 2012 at 11:50 AM, Uros Bizjak ubiz...@gmail.com wrote: Looking at how other targets implement this check, I don't think that this is a problem at all. This issue only shows on a non-bootstrapped build. A full bootstrap will use correct address. The other place where it shows up is cross compilers but who is going to use a 3.2 compiler with GCC 4.8 anyways? FWIW, I have no problem with checking __LP64__ only. I just want to mention this potential issue. Thanks. -- H.J.
PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32
Hi, This patch defines TRY_EMPTY_VM_SPACE for Linux/x32. Tested on Linux/x32. OK for trunk? Thanks. H.J. --- 2012-04-03 H.J. Lu hongjiu...@intel.com * config/host-linux.c (TRY_EMPTY_VM_SPACE): Defined to 0x6000 for x32. diff --git a/gcc/config/host-linux.c b/gcc/config/host-linux.c index 94b7a0b..b89df46 100644 --- a/gcc/config/host-linux.c +++ b/gcc/config/host-linux.c @@ -68,8 +68,14 @@ # define TRY_EMPTY_VM_SPACE0x100 #elif defined(__ia64) # define TRY_EMPTY_VM_SPACE0x2001 -#elif defined(__x86_64) +/* __LP64__ is defined for LP64 after GCC 3.3. If __LP64__ isn't + defined for GCC 4.0 or newer, it must be x32. */ +#elif defined(__x86_64) (defined(__LP64__) \ + || !defined(__GNUC__) \ + || __GNUC__ 4) # define TRY_EMPTY_VM_SPACE0x10 +#elif defined(__x86_64) +# define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__i386) # define TRY_EMPTY_VM_SPACE0x6000 #elif defined(__powerpc__)