[2/N,MPX,x86_64] Intel MPX support in glibc for x86_64

Message ID CAMe9rOo9__Kzh4EZipsnNmMRzWVm1NcKLWFeF3rALsWyKpaHUQ@mail.gmail.com
State Committed
Headers

Commit Message

H.J. Lu April 25, 2014, 4:38 p.m. UTC
  On Fri, Apr 25, 2014 at 9:17 AM, Carlos O'Donell <carlos@redhat.com> wrote:
> On 04/25/2014 10:30 AM, Joseph S. Myers wrote:
>> On Fri, 25 Apr 2014, Carlos O'Donell wrote:
>>
>>> You should test for __int128, set HAVE_INT128, and make this
>>> support conditional on the compiler feature being present
>>> (avoid hard-coding the compiler version). I believe Ondrej
>>> posted a patch for this?
>>
>> bits/link.h is an installed header so can't contain conditionals on
>> configure test results like that.
>>
>> However, the __int128_t built-in typedef is much older than the __int128
>> keyword (dating back to GCC 3.0, i.e. predating x86_64 support which was
>> added in 3.1), so that can be used instead.
>
> Agreed. Thanks for catching the fact that this is an installed header.
>

I tested and checked in this patch to replace __int128 with __int128_t.

Thanks.
  

Comments

Carlos O'Donell April 25, 2014, 6:41 p.m. UTC | #1
On 04/25/2014 12:38 PM, H.J. Lu wrote:
> On Fri, Apr 25, 2014 at 9:17 AM, Carlos O'Donell <carlos@redhat.com> wrote:
>> On 04/25/2014 10:30 AM, Joseph S. Myers wrote:
>>> On Fri, 25 Apr 2014, Carlos O'Donell wrote:
>>>
>>>> You should test for __int128, set HAVE_INT128, and make this
>>>> support conditional on the compiler feature being present
>>>> (avoid hard-coding the compiler version). I believe Ondrej
>>>> posted a patch for this?
>>>
>>> bits/link.h is an installed header so can't contain conditionals on
>>> configure test results like that.
>>>
>>> However, the __int128_t built-in typedef is much older than the __int128
>>> keyword (dating back to GCC 3.0, i.e. predating x86_64 support which was
>>> added in 3.1), so that can be used instead.
>>
>> Agreed. Thanks for catching the fact that this is an installed header.
>>
> 
> I tested and checked in this patch to replace __int128 with __int128_t.

Awesome. Thanks for the quick turnaround HJ.

The fact that this is an installed header makes it even more important
that we reduce the compiler requirement for usage.

Cheers,
Carlos.
  

Patch

diff --git a/ChangeLog b/ChangeLog
index 0909d3b..3ab4d4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@ 
+2014-04-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+ * sysdeps/x86/bits/link.h (La_x86_64_regs): Replace __int128
+ with __int128_t.
+ (La_x86_64_retval): Likewise.
+
 2014-04-24  Ian Bolton  <ian.bolton@arm.com>

  * sysdeps/aarch64/fpu/fclrexcpt.c (feclearexcept): Don't write to
diff --git a/sysdeps/x86/bits/link.h b/sysdeps/x86/bits/link.h
index 82522e5..ebc5989 100644
--- a/sysdeps/x86/bits/link.h
+++ b/sysdeps/x86/bits/link.h
@@ -94,7 +94,7 @@  typedef struct La_x86_64_regs
   La_x86_64_xmm lr_xmm[8];
   La_x86_64_vector lr_vector[8];
 #ifndef __ILP32__
-  __int128 lr_bnd[4];
+  __int128_t lr_bnd[4];
 #endif
 } La_x86_64_regs;

@@ -110,8 +110,8 @@  typedef struct La_x86_64_retval
   La_x86_64_vector lrv_vector0;
   La_x86_64_vector lrv_vector1;
 #ifndef __ILP32__
-  __int128 lrv_bnd0;
-  __int128 lrv_bnd1;
+  __int128_t lrv_bnd0;
+  __int128_t lrv_bnd1;
 #endif
 } La_x86_64_retval;