[COMMITTED] tile: define __NO_LONG_DOUBLE_MATH

Message ID 5655FFFD.4010306@ezchip.com
State Committed
Headers

Commit Message

Chris Metcalf Nov. 25, 2015, 6:37 p.m. UTC
  On 11/24/2015 8:09 PM, Joseph Myers wrote:
> On Tue, 24 Nov 2015, Chris Metcalf wrote:
>
>> as well, so it seemed uncontroversial.  And I only chose 2.12 on the theory
>> that they
>> should have been exported then.  I don't really care what version I export
> That's not how things work.  The version is always the version where the
> symbols were actually first exported, not where they "should" have been
> exported; you never add symbols to a past release version.  See exp2l in
> math/Versions or fallocate64 in sysdeps/unix/sysv/linux/<various 32-bit
> architectures>/Versions for examples.

Yes, good point.  See attached patch that I will plan to commit after it passes tests.

>> them as, since there's really no way for userspace to generate a
>> reference to them,
> Which is why it would be optimal not to export them at all.
>
>> what would be cleaner here and I am happy to make the change, but it does seem
>> like it should be a change for every platform without long double, not just
>> tile.
> Well, you don't remove symbols from old versions either.  Optimally the
> default should be that they aren't exported, with existing no-long-double
> platforms that had the exports defining some macro in their sysdeps files
> (e.g. math_private.h) to cause them to be exported (and ideally causing
> them to be exported as compat symbols only, given that it's not possible
> for the headers to generate references to them).

But apparently there are subtleties, given the bug I cited in my previous email that
led to __isnanl causing a link failure on hppa.  I would have thought that would be
impossible.  So I think I will not try tackling this at the moment...

Thanks!


commit 0c82839a29cb5a0d46141c1a1fab19085649034c
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Nov 25 13:26:30 2015 -0500

     tile: Adjust version number for __finitel, __isinfl, __isnanl

     They should have been added with version 2.23, not 2.12.
  

Comments

Joseph Myers Nov. 25, 2015, 6:48 p.m. UTC | #1
On Wed, 25 Nov 2015, Chris Metcalf wrote:

> But apparently there are subtleties, given the bug I cited in my previous
> email that
> led to __isnanl causing a link failure on hppa.  I would have thought that
> would be
> impossible.  So I think I will not try tackling this at the moment...

If someone were to write an isnan macro call with an argument whose size 
isn't that of float or double (e.g. an integer argument), that would have 
resulted in a call to __isnanl without __NO_LONG_DOUBLE_MATH defined.  
Such code has undefined behavior - all those macros require arguments of 
real floating type - but it could explain the __isnanl call.
  

Patch

diff --git a/ChangeLog b/ChangeLog
index ceb14b7..b374a2c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@ 
+2015-11-25  Chris Metcalf  <cmetcalf@ezchip.com>
+
+       * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist:
+       Adjust version number for __finitel, __isinfl, and __isnanl.
+       * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist:
+       Likewise.
+       * sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise.
+       * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist:
+       Likewise.
+       * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist:
+       Likewise.
+       * sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise.
+
  2015-11-25  Samuel Thibault  <samuel.thibault@ens-lyon.org>

         * hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Destroy reply port
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
index 152adb0..d902a9c 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
@@ -182,7 +182,6 @@  GLIBC_2.12 __fgetws_chk F
  GLIBC_2.12 __fgetws_unlocked_chk F
  GLIBC_2.12 __finite F
  GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
  GLIBC_2.12 __flbf F
  GLIBC_2.12 __fork F
  GLIBC_2.12 __fpending F
@@ -228,11 +227,9 @@  GLIBC_2.12 __isdigit_l F
  GLIBC_2.12 __isgraph_l F
  GLIBC_2.12 __isinf F
  GLIBC_2.12 __isinff F
-GLIBC_2.12 __isinfl F
  GLIBC_2.12 __islower_l F
  GLIBC_2.12 __isnan F
  GLIBC_2.12 __isnanf F
-GLIBC_2.12 __isnanl F
  GLIBC_2.12 __isoc99_fscanf F
  GLIBC_2.12 __isoc99_fwscanf F
  GLIBC_2.12 __isoc99_scanf F
@@ -2092,6 +2089,9 @@  GLIBC_2.18 __cxa_thread_atexit_impl F
  GLIBC_2.22 GLIBC_2.22 A
  GLIBC_2.22 fmemopen F
  GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __finitel F
+GLIBC_2.23 __isinfl F
+GLIBC_2.23 __isnanl F
  GLIBC_2.23 fts64_children F
  GLIBC_2.23 fts64_close F
  GLIBC_2.23 fts64_open F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
index 9ba58e2..9ef03e5 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
@@ -5,7 +5,6 @@  GLIBC_2.12 __clog10f F
  GLIBC_2.12 __clog10l F
  GLIBC_2.12 __finite F
  GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
  GLIBC_2.12 __fpclassify F
  GLIBC_2.12 __fpclassifyf F
  GLIBC_2.12 __signbit F
@@ -370,6 +369,7 @@  GLIBC_2.18 GLIBC_2.18 A
  GLIBC_2.18 __issignaling F
  GLIBC_2.18 __issignalingf F
  GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __finitel F
  GLIBC_2.23 __signgam D 0x4
  GLIBC_2.23 lgamma F
  GLIBC_2.23 lgammaf F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
index f8377a0..eedd6a7 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
@@ -182,7 +182,6 @@  GLIBC_2.12 __fgetws_chk F
  GLIBC_2.12 __fgetws_unlocked_chk F
  GLIBC_2.12 __finite F
  GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
  GLIBC_2.12 __flbf F
  GLIBC_2.12 __fork F
  GLIBC_2.12 __fpending F
@@ -228,11 +227,9 @@  GLIBC_2.12 __isdigit_l F
  GLIBC_2.12 __isgraph_l F
  GLIBC_2.12 __isinf F
  GLIBC_2.12 __isinff F
-GLIBC_2.12 __isinfl F
  GLIBC_2.12 __islower_l F
  GLIBC_2.12 __isnan F
  GLIBC_2.12 __isnanf F
-GLIBC_2.12 __isnanl F
  GLIBC_2.12 __isoc99_fscanf F
  GLIBC_2.12 __isoc99_fwscanf F
  GLIBC_2.12 __isoc99_scanf F
@@ -2092,6 +2089,9 @@  GLIBC_2.18 __cxa_thread_atexit_impl F
  GLIBC_2.22 GLIBC_2.22 A
  GLIBC_2.22 fmemopen F
  GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __finitel F
+GLIBC_2.23 __isinfl F
+GLIBC_2.23 __isnanl F
  GLIBC_2.23 fts64_children F
  GLIBC_2.23 fts64_close F
  GLIBC_2.23 fts64_open F
diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
index 9ba58e2..9ef03e5 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
@@ -5,7 +5,6 @@  GLIBC_2.12 __clog10f F
  GLIBC_2.12 __clog10l F
  GLIBC_2.12 __finite F
  GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
  GLIBC_2.12 __fpclassify F
  GLIBC_2.12 __fpclassifyf F
  GLIBC_2.12 __signbit F
@@ -370,6 +369,7 @@  GLIBC_2.18 GLIBC_2.18 A
  GLIBC_2.18 __issignaling F
  GLIBC_2.18 __issignalingf F
  GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __finitel F
  GLIBC_2.23 __signgam D 0x4
  GLIBC_2.23 lgamma F
  GLIBC_2.23 lgammaf F
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
index 152adb0..d902a9c 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
@@ -182,7 +182,6 @@  GLIBC_2.12 __fgetws_chk F
  GLIBC_2.12 __fgetws_unlocked_chk F
  GLIBC_2.12 __finite F
  GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
  GLIBC_2.12 __flbf F
  GLIBC_2.12 __fork F
  GLIBC_2.12 __fpending F
@@ -228,11 +227,9 @@  GLIBC_2.12 __isdigit_l F
  GLIBC_2.12 __isgraph_l F
  GLIBC_2.12 __isinf F
  GLIBC_2.12 __isinff F
-GLIBC_2.12 __isinfl F
  GLIBC_2.12 __islower_l F
  GLIBC_2.12 __isnan F
  GLIBC_2.12 __isnanf F
-GLIBC_2.12 __isnanl F
  GLIBC_2.12 __isoc99_fscanf F
  GLIBC_2.12 __isoc99_fwscanf F
  GLIBC_2.12 __isoc99_scanf F
@@ -2092,6 +2089,9 @@  GLIBC_2.18 __cxa_thread_atexit_impl F
  GLIBC_2.22 GLIBC_2.22 A
  GLIBC_2.22 fmemopen F
  GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __finitel F
+GLIBC_2.23 __isinfl F
+GLIBC_2.23 __isnanl F
  GLIBC_2.23 fts64_children F
  GLIBC_2.23 fts64_close F
  GLIBC_2.23 fts64_open F
diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
index 9ba58e2..9ef03e5 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist
@@ -5,7 +5,6 @@  GLIBC_2.12 __clog10f F
  GLIBC_2.12 __clog10l F
  GLIBC_2.12 __finite F
  GLIBC_2.12 __finitef F
-GLIBC_2.12 __finitel F
  GLIBC_2.12 __fpclassify F
  GLIBC_2.12 __fpclassifyf F
  GLIBC_2.12 __signbit F
@@ -370,6 +369,7 @@  GLIBC_2.18 GLIBC_2.18 A
  GLIBC_2.18 __issignaling F
  GLIBC_2.18 __issignalingf F
  GLIBC_2.23 GLIBC_2.23 A
+GLIBC_2.23 __finitel F
  GLIBC_2.23 __signgam D 0x4
  GLIBC_2.23 lgamma F
  GLIBC_2.23 lgammaf F