glibc/sysdeps/unix/sysv/linux/i386
Joseph Myers 7ec903e028 Implement C23 exp2m1, exp10m1
C23 adds various <math.h> function families originally defined in TS
18661-4.  Add the exp2m1 and exp10m1 functions (exp2(x)-1 and
exp10(x)-1, like expm1).

As with other such functions, these use type-generic templates that
could be replaced with faster and more accurate type-specific
implementations in future.  Test inputs are copied from those for
expm1, plus some additions close to the overflow threshold (copied
from exp2 and exp10) and also some near the underflow threshold.

exp2m1 has the unusual property of having an input (M_MAX_EXP) where
whether the function overflows (under IEEE semantics) depends on the
rounding mode.  Although these could reasonably be XFAILed in the
testsuite (as we do in some cases for arguments very close to a
function's overflow threshold when an error of a few ulps in the
implementation can result in the implementation not agreeing with an
ideal one on whether overflow takes place - the testsuite isn't smart
enough to handle this automatically), since these functions aren't
required to be correctly rounding, I made the implementation check for
and handle this case specially.

The Makefile ordering expected by lint-makefiles for the new functions
is a bit peculiar, but I implemented it in this patch so that the test
passes; I don't know why log2 also needed moving in one Makefile
variable setting when it didn't in my previous patches, but the
failure showed a different place was expected for that function as
well.

The powerpc64le IFUNC setup seems not to be as self-contained as one
might hope; it shouldn't be necessary to add IFUNCs for new functions
such as these simply to get them building, but without setting up
IFUNCs for the new functions, there were undefined references to
__GI___expm1f128 (that IFUNC machinery results in no such function
being defined, but doesn't stop include/math.h from doing the
redirection resulting in the exp2m1f128 and exp10m1f128
implementations expecting to call it).

Tested for x86_64 and x86, and with build-many-glibcs.py.
2024-06-17 16:31:49 +00:00
..
i686 Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
i786
____longjmp_chk.S i386: Remove CET support 2024-01-09 13:55:51 -03:00
arch-syscall.h Update syscall lists for Linux 6.8 2024-03-13 13:57:56 +00:00
brk.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
c++-types.data
clone3.S Remove the clone3 symbol from libc.a [BZ #31770] 2024-05-21 07:05:08 -07:00
clone.S Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
configure configure: Use autoconf 2.71 2023-07-17 10:08:10 -04:00
configure.ac Remove ldd libc4 support 2022-08-04 10:03:45 -03:00
dl-procinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-sysdep.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
dl-writev.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getcontext.S i386: Remove CET support 2024-01-09 13:55:51 -03:00
Implies
kernel_stat.h linux: Set default kernel_stat.h to LFS 2021-02-11 07:58:05 -03:00
kernel-features.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ld.abilist Fix glibc 2.34 ABI omission (missing GLIBC_2.34 in dynamic loader) 2022-01-27 18:52:05 +01:00
ldconfig.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libanl.abilist resolv: Move libanl into libc (if libpthread is in libc) 2021-07-02 11:45:00 +02:00
libBrokenLocale.abilist Ignore absolute symbols in ABI tests. 2018-05-04 15:46:32 +00:00
libc_malloc_debug.abilist Move malloc_{g,s}et_state to libc_malloc_debug 2021-07-22 18:38:10 +05:30
libc_sigaction.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc-do-syscall-int80.S Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc-do-syscall.S Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libc.abilist Implement C23 <stdbit.h> 2024-01-03 12:07:14 +00:00
libdl.abilist dlfcn: Move dlopen into libc 2021-06-03 08:26:04 +02:00
libm.abilist Implement C23 exp2m1, exp10m1 2024-06-17 16:31:49 +00:00
libnsl.abilist Ignore absolute symbols in ABI tests. 2018-05-04 15:46:32 +00:00
libpthread.abilist nptl: Remove remaining code from libpthread 2021-05-21 22:35:01 +02:00
libresolv.abilist resolv: Move res_query functions into libc 2021-07-19 07:56:57 +02:00
librt.abilist Linux: Move timer_settime, __timer_settime64 from librt to libc 2021-06-28 09:51:01 +02:00
libthread_db.abilist Ignore absolute symbols in ABI tests. 2018-05-04 15:46:32 +00:00
libutil.abilist login: Move libutil into libc 2021-06-30 08:43:37 +02:00
localplt.data elf: Rework exception handling in the dynamic loader [BZ #25486] 2022-11-03 09:39:31 +01:00
makecontext.S i386: Remove CET support 2024-01-09 13:55:51 -03:00
Makefile Remove ldd libc4 support 2022-08-04 10:03:45 -03:00
pointer_guard.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setcontext.S i386: Remove CET support 2024-01-09 13:55:51 -03:00
shlib-versions
sigcontextinfo.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
startup.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
struct_kernel_msqid64_ds.h sysv: linux: Add 64-bit time_t variant for msgctl 2020-07-09 12:05:40 -03:00
struct_kernel_semid64_ds.h sysv: linux: Add 64-bit time_t variant for semctl 2020-07-09 12:05:35 -03:00
struct_kernel_shmid64_ds.h sysv: linux: Add 64-bit time_t variant for shmctl 2020-07-09 12:05:47 -03:00
swapcontext.S i386: Remove CET support 2024-01-09 13:55:51 -03:00
syscall.S Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
syscalls.list linux: Add prlimit64 C implementation 2021-11-30 13:13:03 -03:00
sysdep.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sysdep.h i386: Remove CET support 2024-01-09 13:55:51 -03:00
time64-compat.h y2038: Add support for 64-bit time on legacy ABIs 2021-06-15 10:42:11 -03:00
tst-bz21269.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ucontext_i.sym i386: Remove CET support 2024-01-09 13:55:51 -03:00
Versions Linux: Move wordsize-32 Version to default 2023-02-20 10:19:25 -03:00
vfork.S i386: Remove CET support 2024-01-09 13:55:51 -03:00