about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorTulio Magno Quites Machado Filho <tuliom@linux.ibm.com>2018-05-29 17:52:24 -0300
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2020-02-14 08:24:56 -0600
commitc624d23260d5c136bebdd3a0734876527cedc505 (patch)
treec3b9039f6ef2e62892420a9b147668fc8924d759 /sysdeps
parentad180676b83dc1782d407dbff57dabbaab0c1f71 (diff)
downloadglibc-c624d23260d5c136bebdd3a0734876527cedc505.tar.gz
glibc-c624d23260d5c136bebdd3a0734876527cedc505.tar.xz
glibc-c624d23260d5c136bebdd3a0734876527cedc505.zip
Add a generic scalb implementation
This is a preparatory patch to enable building a _Float128
variant to ease reuse when building a _Float128 variant to
alias this long double only symbol.

Notably, stubs are added where missing to the native _Float128
sysdep dir to prevent building these newly templated variants
created inside the build directories.

Also noteworthy are the changes around LIBM_SVID_COMPAT.  These
changes are not intuitive.  The templated version is only
enabled when !LIBM_SVID_COMPAT, and the compat version is
predicated entirely on LIBM_SVID_COMPAT.  Thus, exactly one is
stubbed out entirely when building.  The nldbl scalb compat
files are updated to account for this.

Likewise, fixup the reuse of m68k's e_scalb{f,l}.c to include
it's override of e_scalb.c.  Otherwise, the search path finds
the templated copy in the build directory.  This could be
futher simplified by providing an overridden template, but I
lack the hardware to verify.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/float128/w_scalbf128.c1
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_scalb_compat.c4
-rw-r--r--sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c2
-rw-r--r--sysdeps/m68k/m680x0/fpu/e_scalbf.c2
-rw-r--r--sysdeps/m68k/m680x0/fpu/e_scalbl.c2
5 files changed, 8 insertions, 3 deletions
diff --git a/sysdeps/ieee754/float128/w_scalbf128.c b/sysdeps/ieee754/float128/w_scalbf128.c
new file mode 100644
index 0000000000..067b724164
--- /dev/null
+++ b/sysdeps/ieee754/float128/w_scalbf128.c
@@ -0,0 +1 @@
+/* Not defined for _FloatN types.  */
diff --git a/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c b/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c
index f6d53a5ba5..56735e825e 100644
--- a/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_scalb_compat.c
@@ -1,5 +1,7 @@
 #include <math_ldbl_opt.h>
 #include <math/w_scalb_compat.c>
-#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
+#if LIBM_SVID_COMPAT
+# if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)
 compat_symbol (libm, __scalb, scalbl, GLIBC_2_0);
+# endif
 #endif
diff --git a/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c b/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c
index c8feb654a2..4d16f413c4 100644
--- a/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c
+++ b/sysdeps/ieee754/ldbl-opt/w_scalbl_compat.c
@@ -2,4 +2,6 @@
 #undef weak_alias
 #define weak_alias(n,a)
 #include <math/w_scalbl_compat.c>
+#if LIBM_SVID_COMPAT
 long_double_symbol (libm, __scalbl, scalbl);
+#endif
diff --git a/sysdeps/m68k/m680x0/fpu/e_scalbf.c b/sysdeps/m68k/m680x0/fpu/e_scalbf.c
index 7943571246..58a372c8b0 100644
--- a/sysdeps/m68k/m680x0/fpu/e_scalbf.c
+++ b/sysdeps/m68k/m680x0/fpu/e_scalbf.c
@@ -1,3 +1,3 @@
 #define SUFF f
 #define float_type float
-#include <e_scalb.c>
+#include <sysdeps/m68k/m680x0/fpu/e_scalb.c>
diff --git a/sysdeps/m68k/m680x0/fpu/e_scalbl.c b/sysdeps/m68k/m680x0/fpu/e_scalbl.c
index 35fb2dc0ed..9f4f578b6b 100644
--- a/sysdeps/m68k/m680x0/fpu/e_scalbl.c
+++ b/sysdeps/m68k/m680x0/fpu/e_scalbl.c
@@ -1,3 +1,3 @@
 #define SUFF l
 #define float_type long double
-#include <e_scalb.c>
+#include <sysdeps/m68k/m680x0/fpu/e_scalb.c>