]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Move some float128 symbol version definitions.
authorJoseph Myers <joseph@codesourcery.com>
Mon, 16 Oct 2017 22:04:42 +0000 (22:04 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 16 Oct 2017 22:04:42 +0000 (22:04 +0000)
With support for _Float128 functions on platforms where that type has
the same ABI as long double, as well as on platforms where it is
ABI-distinct, those functions will need to be exported from glibc's
shared libraries at appropriate symbol versions in each case.

This patch avoids duplication of lists of symbols to export by moving
the symbols other than __* to math/Versions and stdlib/Versions.
There, they are conditional on <float128-abi.h> defining
FLOAT128_VERSION and a default version of that header is added that
does not define that macro.  Enabling the float128 function aliases
will then include adding a sysdeps/ieee754/ldbl-128/float128-abi.h
that defines FLOAT128_VERSION to GLIBC_2.27.  Symbols __* remain in
sysdeps/ieee754/float128/Versions; those symbols should be present
only once per floating-point format, not once per type.

Note that if any platforms currently lacking support for a type with
binary128 format get glibc support for such a type in future (whether
only as _Float128, or also as a new long double format), and new libm
functions (present for all types) have been added by then, additional
macros will be needed to allow such functions to get a version of the
form "GLIBC_2.28 if the platform had _Float128 support by then, or the
later version at which that platform had _Float128 support added".
This is not however a preexisting condition, but would have applied
equally to the existing support for _Float128 as an ABI-distinct
type.  New all-type libm functions should just be added to the
appropriate symbol version (currently GLIBC_2.27) for all types, with
such special-case handling for _Float128 versions (and _Float64x as
well in future) waiting until someone actually wants to add support
for _Float128 to an existing platform after a release in which that
platform and a post-2.26 libm function had support but that platform
lacked _Float128 support.

Tested with build-many-glibcs.py that installed stripped shared
libraries are unchanged by this patch.  Also tested in conjunction
with the remaining changes to enable float128 aliases.

* sysdeps/generic/float128-abi.h: New file.
* sysdeps/ieee754/float128/Versions (FLOAT128_VERSION): Move
non-__prefixed symbols to ....
* math/Versions: ... here.  Include <float128-abi.h>.
* stdlib/Versions ... and here.  Include <float128-abi.h>

ChangeLog
math/Versions
stdlib/Versions
sysdeps/generic/float128-abi.h [new file with mode: 0644]
sysdeps/ieee754/float128/Versions

index f3b5e8ca89a328e0554cbf47a6721cb27cb34e40..bcd43a9438690105cd8e9b55c6f7b1ad5148c66d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2017-10-16  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/generic/float128-abi.h: New file.
+       * sysdeps/ieee754/float128/Versions (FLOAT128_VERSION): Move
+       non-__prefixed symbols to ....
+       * math/Versions: ... here.  Include <float128-abi.h>.
+       * stdlib/Versions ... and here.  Include <float128-abi.h>
+
 2017-10-16  Florian Weimer  <fweimer@redhat.com>
 
        * version.h (VERSION): Switch to ".9000" as the development
index 2fbdb2f266c17f53ce601a03d8dffa380e904fe8..c10e32662d60c47b9c8f1ae0639456c45f7a91fa 100644 (file)
@@ -1,3 +1,4 @@
+%include <float128-abi.h>
 libc {
   GLIBC_2.0 {
     # functions used in inline functions or macros
@@ -229,6 +230,114 @@ libm {
     fromfp; fromfpf; fromfpl; ufromfp; ufromfpf; ufromfpl;
     fromfpx; fromfpxf; fromfpxl; ufromfpx; ufromfpxf; ufromfpxl;
   }
+%ifdef FLOAT128_VERSION
+  FLOAT128_VERSION {
+    acosf128;
+    acoshf128;
+    asinf128;
+    asinhf128;
+    atan2f128;
+    atanf128;
+    atanhf128;
+    cabsf128;
+    cacosf128;
+    cacoshf128;
+    canonicalizef128;
+    cargf128;
+    casinf128;
+    casinhf128;
+    catanf128;
+    catanhf128;
+    cbrtf128;
+    ccosf128;
+    ccoshf128;
+    ceilf128;
+    cexpf128;
+    cimagf128;
+    clog10f128;
+    clogf128;
+    conjf128;
+    copysignf128;
+    cosf128;
+    coshf128;
+    cpowf128;
+    cprojf128;
+    crealf128;
+    csinf128;
+    csinhf128;
+    csqrtf128;
+    ctanf128;
+    ctanhf128;
+    erfcf128;
+    erff128;
+    exp10f128;
+    exp2f128;
+    expf128;
+    expm1f128;
+    fabsf128;
+    fdimf128;
+    floorf128;
+    fmaf128;
+    fmaxf128;
+    fmaxmagf128;
+    fminf128;
+    fminmagf128;
+    fmodf128;
+    frexpf128;
+    fromfpf128;
+    fromfpxf128;
+    getpayloadf128;
+    hypotf128;
+    ilogbf128;
+    j0f128;
+    j1f128;
+    jnf128;
+    ldexpf128;
+    lgammaf128;
+    lgammaf128_r;
+    llogbf128;
+    llrintf128;
+    llroundf128;
+    log10f128;
+    log1pf128;
+    log2f128;
+    logbf128;
+    logf128;
+    lrintf128;
+    lroundf128;
+    modff128;
+    nanf128;
+    nearbyintf128;
+    nextafterf128;
+    nextdownf128;
+    nextupf128;
+    powf128;
+    remainderf128;
+    remquof128;
+    rintf128;
+    roundevenf128;
+    roundf128;
+    scalblnf128;
+    scalbnf128;
+    setpayloadf128;
+    setpayloadsigf128;
+    sincosf128;
+    sinf128;
+    sinhf128;
+    sqrtf128;
+    tanf128;
+    tanhf128;
+    tgammaf128;
+    totalorderf128;
+    totalordermagf128;
+    truncf128;
+    ufromfpf128;
+    ufromfpxf128;
+    y0f128;
+    y1f128;
+    ynf128;
+  }
+%endif
   GLIBC_2.27 {
     expf; exp2f; logf; log2f; powf;
   }
index 9cade20a06d12cd6ccc29c54c0f477b8a1a3bb92..9d96de525a3cb58c685c237b7638a019ef0a2b42 100644 (file)
@@ -1,3 +1,4 @@
+%include <float128-abi.h>
 libc {
   GLIBC_2.0 {
     # functions with required interface outside normal name space
@@ -121,6 +122,15 @@ libc {
     strfromd; strfromf; strfroml;
     getrandom; getentropy;
   }
+%ifdef FLOAT128_VERSION
+  FLOAT128_VERSION {
+    strfromf128;
+    strtof128;
+    strtof128_l;
+    wcstof128;
+    wcstof128_l;
+  }
+%endif
   GLIBC_PRIVATE {
     # functions which have an additional interface since they are
     # are cancelable.
diff --git a/sysdeps/generic/float128-abi.h b/sysdeps/generic/float128-abi.h
new file mode 100644 (file)
index 0000000..dfcf083
--- /dev/null
@@ -0,0 +1 @@
+/* No _Float128 ABI support by default.  */
index ef9df2d4c82c9fcf2e1bc15d6f06c529960dd0dc..2eebc6f1b0d2630b10edbd9b439a1bc87fec78e7 100644 (file)
@@ -6,11 +6,6 @@ libc {
   FLOAT128_VERSION {
     __strtof128_internal;
     __wcstof128_internal;
-    strfromf128;
-    strtof128;
-    strtof128_l;
-    wcstof128;
-    wcstof128_l;
   }
   GLIBC_PRIVATE {
     # For __nanf128.
@@ -52,109 +47,5 @@ libm {
     __y0f128_finite;
     __y1f128_finite;
     __ynf128_finite;
-    acosf128;
-    acoshf128;
-    asinf128;
-    asinhf128;
-    atan2f128;
-    atanf128;
-    atanhf128;
-    cabsf128;
-    cacosf128;
-    cacoshf128;
-    canonicalizef128;
-    cargf128;
-    casinf128;
-    casinhf128;
-    catanf128;
-    catanhf128;
-    cbrtf128;
-    ccosf128;
-    ccoshf128;
-    ceilf128;
-    cexpf128;
-    cimagf128;
-    clog10f128;
-    clogf128;
-    conjf128;
-    copysignf128;
-    cosf128;
-    coshf128;
-    cpowf128;
-    cprojf128;
-    crealf128;
-    csinf128;
-    csinhf128;
-    csqrtf128;
-    ctanf128;
-    ctanhf128;
-    erfcf128;
-    erff128;
-    exp10f128;
-    exp2f128;
-    expf128;
-    expm1f128;
-    fabsf128;
-    fdimf128;
-    floorf128;
-    fmaf128;
-    fmaxf128;
-    fmaxmagf128;
-    fminf128;
-    fminmagf128;
-    fmodf128;
-    frexpf128;
-    fromfpf128;
-    fromfpxf128;
-    getpayloadf128;
-    hypotf128;
-    ilogbf128;
-    j0f128;
-    j1f128;
-    jnf128;
-    ldexpf128;
-    lgammaf128;
-    lgammaf128_r;
-    llogbf128;
-    llrintf128;
-    llroundf128;
-    log10f128;
-    log1pf128;
-    log2f128;
-    logbf128;
-    logf128;
-    lrintf128;
-    lroundf128;
-    modff128;
-    nanf128;
-    nearbyintf128;
-    nextafterf128;
-    nextdownf128;
-    nextupf128;
-    powf128;
-    remainderf128;
-    remquof128;
-    rintf128;
-    roundevenf128;
-    roundf128;
-    scalblnf128;
-    scalbnf128;
-    setpayloadf128;
-    setpayloadsigf128;
-    sincosf128;
-    sinf128;
-    sinhf128;
-    sqrtf128;
-    tanf128;
-    tanhf128;
-    tgammaf128;
-    totalorderf128;
-    totalordermagf128;
-    truncf128;
-    ufromfpf128;
-    ufromfpxf128;
-    y0f128;
-    y1f128;
-    ynf128;
   }
 }