This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Use -mx32 for _{POSIX_V7|_POSIX_V6|XBS5}_ILP32_OFFBIG
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Roland McGrath <roland at hack dot frob dot com>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Thu, 29 Nov 2012 08:55:31 -0800
- Subject: Re: [PATCH] Use -mx32 for _{POSIX_V7|_POSIX_V6|XBS5}_ILP32_OFFBIG
- References: <20120603140841.GA5687@intel.com><20120604194801.9EB042C094@topped-with-meat.com><CAMe9rOq-AR+Dt3fx9DW3qLAD0GLgMsN-mS-QtD57MmoQ+biF_Q@mail.gmail.com><CAMe9rOpxkKLAAHcyJ4PcqZtwFukGvB32U2O+0UDD1rYd4ukV5w@mail.gmail.com>
On Mon, Jun 4, 2012 at 6:03 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Mon, Jun 4, 2012 at 1:59 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>> On Mon, Jun 4, 2012 at 12:48 PM, Roland McGrath <roland@hack.frob.com> wrote:
>>> This is a regression for an -m32 build, where ILP32_OFFBIG will no
>>> longer be offered. That is unacceptable. This whole area is subtle
>>> and nonobvious, because it's a header in one build environment talking
>>> about what other build environments are available.
>>>
>>> If a user program is using confstr itself, and that program is built
>>> with -mx32, then it recommending -mx32 makes some sense. But having
>>> which environment the installed getconf binary was built for affect
>>> what it reports to scripts is much more questionable.
>>>
>>> I think we need to leave this alone for now, file a bug to track the
>>> issue, and consider it further after 2.16.
>>>
>>
>> I opened:
>>
>> http://sourceware.org/bugzilla/show_bug.cgi?id=14200
>>
>> One possible solution:
>>
>> 1. -mx32 build provides POSIX_V6_ILP32_OFFBIG,
>> POSIX_V7_ILP32_OFFBIG and XBS5_ILP32_OFFBIG.
>> 2. -m32 build provides POSIX_V6_ILP32_OFF32,
>> POSIX_V7_ILP32_OFF32, XBS5_ILP32_OFF32,
>> POSIX_V6_ILP32_OFFBIG, POSIX_V7_ILP32_OFFBIG
>> and XBS5_ILP32_OFFBIG.
>>
>> If x32 glibc is installed, ia32 glibc won't install
>> the ia32 version of POSIX_V6_ILP32_OFFBIG,
>> POSIX_V7_ILP32_OFFBIG and XBS5_ILP32_OFFBIG.
>>
>>
>
> Here is the patch to implement it. There is no difference
> in -m32 build and -mx32 build gets -mx32 for
> _{POSIX_V7|_POSIX_V6|XBS5}_ILP32_OFFBIG/
>
> OK for trunk after 2.16 is branched?
>
> Thanks.
>
> --
> H.J.
> ----
> [BZ #14200]
> * sysdeps/unix/sysv/linux/x86/bits/environments.h
> (_POSIX_V7_ILP32_OFF32): Defined as 1 only if __x86_64__ isn't
> defined.
> (_POSIX_V6_ILP32_OFF32): Likewise.
> (_XBS5_ILP32_OFF32): Likewise.
> (__ILP32_OFFBIG_CFLAGS): Defined as "-mx32" for x32.
> (__ILP32_OFFBIG_LDFLAGS): Likewise.
>
> diff --git a/sysdeps/unix/sysv/linux/x86/bits/environments.h b/sysdeps/unix/sysv
> /linux/x86/bits/environments.h
> index 793a04f..8ebc837 100644
> --- a/sysdeps/unix/sysv/linux/x86/bits/environments.h
> +++ b/sysdeps/unix/sysv/linux/x86/bits/environments.h
> @@ -64,15 +64,19 @@
>
> #else /* __WORDSIZE == 32 */
>
> -/* By default we have 32-bit wide `int', `long int', pointers and `off_t'
> - and all platforms support LFS. */
> -# define _POSIX_V7_ILP32_OFF32 1
> +/* We have 32-bit wide `int', `long int' and pointers and all platforms
> + support LFS. -mx32 has 64-bit wide `off_t'. */
> # define _POSIX_V7_ILP32_OFFBIG 1
> -# define _POSIX_V6_ILP32_OFF32 1
> -# define _POSIX_V6_ILP32_OFFBIG 1
> -# define _XBS5_ILP32_OFF32 1
> +# define _POSIX_V6_ILP32_OFFBIG 1
> # define _XBS5_ILP32_OFFBIG 1
>
> +# ifndef __x86_64__
> +/* -m32 has 32-bit wide `off_t'. */
> +# define _POSIX_V7_ILP32_OFF32 1
> +# define _POSIX_V6_ILP32_OFF32 1
> +# define _XBS5_ILP32_OFF32 1
> +# endif
> +
> /* We optionally provide an environment with the above size but an 64-bit
> side `off_t'. Therefore we don't define _POSIX_V7_ILP32_OFFBIG. */
>
> @@ -89,8 +93,13 @@
> #endif /* __WORDSIZE == 32 */
>
> #define __ILP32_OFF32_CFLAGS "-m32"
> -#define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> "
> #define __ILP32_OFF32_LDFLAGS "-m32"
> -#define __ILP32_OFFBIG_LDFLAGS "-m32"
> +#if defined __x86_64__ && defined __ILP32__
> +# define __ILP32_OFFBIG_CFLAGS "-mx32"
> +# define __ILP32_OFFBIG_LDFLAGS "-mx32"
> +#else
> +# define __ILP32_OFFBIG_CFLAGS "-m32 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
> "
> +# define __ILP32_OFFBIG_LDFLAGS "-m32"
> +#endif
> #define __LP64_OFF64_CFLAGS "-m64"
> #define __LP64_OFF64_LDFLAGS "-m64"
> --
> 1.7.6.5
Ping.
--
H.J.