Add __ILP32 and __ILP32__ for X32 programming model

2012-04-13 Thread H.J. Lu
Hi,

We need a reliable way to tell if we are compiling for x32 through
pre-defined preprocessor symbol.  __LP64/__LP64__ aren't
specified by x86-64 psABI, although they have been added to
GCC 3.3.  They can't be counted on to detect x32 since not x86-64
compilers define them.   I updated x32 psABI:

https://sites.google.com/site/x32abi/documents

to define __ILP32 and __ILP32__ for X32 programming model.  I
will submit a patch for GCC trunk and 4.7 branch.

Thanks.

-- 
H.J.


Re: Add __ILP32 and __ILP32__ for X32 programming model

2012-04-13 Thread H. Peter Anvin
On 04/13/2012 09:18 AM, H.J. Lu wrote:
 Hi,
 
 We need a reliable way to tell if we are compiling for x32 through
 pre-defined preprocessor symbol.  __LP64/__LP64__ aren't
 specified by x86-64 psABI, although they have been added to
 GCC 3.3.  They can't be counted on to detect x32 since not x86-64
 compilers define them.   I updated x32 psABI:
 
 https://sites.google.com/site/x32abi/documents
 
 to define __ILP32 and __ILP32__ for X32 programming model.  I
 will submit a patch for GCC trunk and 4.7 branch.
 

Can we add __LP64__ to the psABI too?

-hpa




Re: Add __ILP32 and __ILP32__ for X32 programming model

2012-04-13 Thread H.J. Lu
On Fri, Apr 13, 2012 at 9:40 AM, H. Peter Anvin h...@zytor.com wrote:
 On 04/13/2012 09:18 AM, H.J. Lu wrote:
 Hi,

 We need a reliable way to tell if we are compiling for x32 through
 pre-defined preprocessor symbol.  __LP64/__LP64__ aren't
 specified by x86-64 psABI, although they have been added to
 GCC 3.3.  They can't be counted on to detect x32 since not x86-64
 compilers define them.   I updated x32 psABI:

 https://sites.google.com/site/x32abi/documents

 to define __ILP32 and __ILP32__ for X32 programming model.  I
 will submit a patch for GCC trunk and 4.7 branch.


 Can we add __LP64__ to the psABI too?


X32 psABI has

__amd64Defined for both LP64 and X32 programming models.
__amd64__ Defined for both LP64 and X32 programming models.
__x86_64Defined for both LP64 and X32 programming models.
__x86_64__Defined for both LP64 and X32 programming models.
__LP64   Defined for LP64 programming model.
__LP64__   Defined for LP64 programming model.
__ILP32  Defined for X32 programming model.
__ILP32__  Defined for X32 programming model.


-- 
H.J.