Re: PATCH: Define TRY_EMPTY_VM_SPACE for Linux/x32

2012-04-11 Thread H.J. Lu
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

2012-04-10 Thread H.J. Lu
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

2012-04-05 Thread H.J. Lu
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

2012-04-05 Thread H.J. Lu
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

2012-04-04 Thread Uros Bizjak
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

2012-04-04 Thread H.J. Lu
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

2012-04-04 Thread Uros Bizjak
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

2012-04-04 Thread Andrew Pinski
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

2012-04-04 Thread H.J. Lu
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

2012-04-03 Thread H.J. Lu
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__)