about summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps')
-rwxr-xr-xsysdeps/aarch64/configure155
-rw-r--r--sysdeps/aarch64/libm-test-ulps80
-rw-r--r--sysdeps/alpha/dl-procinfo.c62
-rw-r--r--sysdeps/alpha/dl-procinfo.h24
-rw-r--r--sysdeps/alpha/fpu/libm-test-ulps20
-rw-r--r--sysdeps/arc/configure120
-rw-r--r--sysdeps/arc/fpu/libm-test-ulps16
-rw-r--r--sysdeps/arc/nofpu/libm-test-ulps4
-rw-r--r--sysdeps/arm/configure146
-rw-r--r--sysdeps/arm/dl-machine.h9
-rw-r--r--sysdeps/arm/libm-test-ulps64
-rw-r--r--sysdeps/csky/dl-procinfo.c62
-rw-r--r--sysdeps/csky/dl-procinfo.h23
-rw-r--r--sysdeps/csky/fpu/libm-test-ulps16
-rw-r--r--sysdeps/csky/nofpu/libm-test-ulps16
-rw-r--r--sysdeps/generic/dl-procinfo.h8
-rw-r--r--sysdeps/generic/unsecvars.h1
-rw-r--r--sysdeps/hppa/configure7
-rw-r--r--sysdeps/hppa/fpu/libm-test-ulps80
-rw-r--r--sysdeps/i386/configure7
-rw-r--r--sysdeps/i386/fpu/libm-test-ulps125
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps95
-rw-r--r--sysdeps/ieee754/float128/Makefile2
-rw-r--r--sysdeps/ieee754/float128/float128_private.h1
-rw-r--r--sysdeps/ieee754/ldbl-128/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm-compat/Versions4
-rw-r--r--sysdeps/ieee754/ldbl-96/Makefile2
-rw-r--r--sysdeps/ieee754/ldbl-opt/Makefile8
-rw-r--r--sysdeps/ieee754/ldbl-opt/configure12
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c8
-rw-r--r--sysdeps/ieee754/ldbl-opt/nldbl-log1p.c1
-rw-r--r--sysdeps/loongarch/configure33
-rw-r--r--sysdeps/loongarch/dl-tlsdesc.S18
-rw-r--r--sysdeps/loongarch/lp64/libm-test-ulps80
-rw-r--r--sysdeps/loongarch/tst-gnu2-tls2.h296
-rw-r--r--sysdeps/m68k/coldfire/fpu/libm-test-ulps3
-rw-r--r--sysdeps/mach/configure229
-rw-r--r--sysdeps/mach/hurd/configure133
-rw-r--r--sysdeps/mach/hurd/i386/libm.abilist32
-rw-r--r--sysdeps/mach/hurd/x86_64/libm.abilist32
-rw-r--r--sysdeps/microblaze/libm-test-ulps4
-rw-r--r--sysdeps/mips/configure120
-rw-r--r--sysdeps/mips/dl-procinfo.c49
-rw-r--r--sysdeps/mips/dl-procinfo.h24
-rw-r--r--sysdeps/mips/mips32/libm-test-ulps84
-rw-r--r--sysdeps/mips/mips64/libm-test-ulps100
-rw-r--r--sysdeps/nios2/configure120
-rw-r--r--sysdeps/nios2/libm-test-ulps4
-rw-r--r--sysdeps/or1k/fpu/libm-test-ulps16
-rw-r--r--sysdeps/or1k/nofpu/libm-test-ulps16
-rw-r--r--sysdeps/powerpc/dl-procinfo.h8
-rw-r--r--sysdeps/powerpc/fpu/libm-test-ulps98
-rw-r--r--sysdeps/powerpc/nofpu/Makefile1
-rw-r--r--sysdeps/powerpc/nofpu/libm-test-ulps20
-rw-r--r--sysdeps/powerpc/powerpc32/fpu/configure14
-rw-r--r--sysdeps/powerpc/powerpc64/configure14
-rw-r--r--sysdeps/powerpc/powerpc64/le/configure55
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile7
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/configure12
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h4
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h4
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h2
-rw-r--r--sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h5
-rw-r--r--sysdeps/riscv/configure15
-rw-r--r--sysdeps/riscv/nofpu/libm-test-ulps20
-rw-r--r--sysdeps/riscv/rvd/libm-test-ulps100
-rw-r--r--sysdeps/s390/configure103
-rw-r--r--sysdeps/s390/dl-procinfo-s390.c6
-rw-r--r--sysdeps/s390/dl-procinfo.h29
-rw-r--r--sysdeps/s390/fpu/libm-test-ulps80
-rw-r--r--sysdeps/s390/s390-64/configure15
-rw-r--r--sysdeps/s390/s390-64/configure.ac6
-rw-r--r--sysdeps/sh/libm-test-ulps8
-rw-r--r--sysdeps/sparc/dl-procinfo.h10
-rw-r--r--sysdeps/sparc/fpu/libm-test-ulps100
-rw-r--r--sysdeps/sparc/sparc32/configure127
-rw-r--r--sysdeps/sparc/sparc32/dl-machine.h6
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h8
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/arc/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/arm/be/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/arm/dl-procinfo.h7
-rw-r--r--sysdeps/unix/sysv/linux/arm/le/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/bits/mman-linux.h21
-rw-r--r--sysdeps/unix/sysv/linux/bits/shm.h22
-rw-r--r--sysdeps/unix/sysv/linux/configure17
-rw-r--r--sysdeps/unix/sysv/linux/csky/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/dl-sysdep.c1
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sysdep.h12
-rw-r--r--sysdeps/unix/sysv/linux/i386/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/configure112
-rw-r--r--sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/be/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/le/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/mips/configure191
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/or1k/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/configure24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/configure148
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist36
-rw-r--r--sysdeps/unix/sysv/linux/riscv/atomic-machine.h3
-rwxr-xr-xsysdeps/unix/sysv/linux/riscv/configure114
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/sh/be/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/sh/le/libm.abilist24
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/spawni.c23
-rw-r--r--sysdeps/unix/sysv/linux/tst-mman-consts.py8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libm.abilist32
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist32
-rw-r--r--sysdeps/x86/configure28
-rw-r--r--sysdeps/x86/dl-hwcap.h25
-rw-r--r--sysdeps/x86/dl-procinfo.c21
-rw-r--r--sysdeps/x86/dl-procinfo.h22
-rwxr-xr-xsysdeps/x86_64/configure40
-rw-r--r--sysdeps/x86_64/dl-procruntime.c5
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps96
132 files changed, 3652 insertions, 1614 deletions
diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
index 9606137e8d..4bd5496a4a 100755
--- a/sysdeps/aarch64/configure
+++ b/sysdeps/aarch64/configure
@@ -14,14 +14,14 @@ printf "%s\n" "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
 # the dynamic linker via %ifdef.
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -35,13 +35,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -50,14 +51,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -65,35 +66,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -107,13 +97,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -122,14 +113,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -137,32 +128,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
 printf %s "checking for big endian... " >&6; }
 if test ${libc_cv_aarch64_be+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __AARCH64EB__
                       yes
@@ -170,14 +162,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_aarch64_be=yes
-else $as_nop
-  libc_cv_aarch64_be=no
+else case e in #(
+  e) libc_cv_aarch64_be=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_be" >&5
 printf "%s\n" "$libc_cv_aarch64_be" >&6; }
@@ -199,8 +193,8 @@ printf %s "checking for BTI support... " >&6; }
 if test ${libc_cv_aarch64_bti+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest.c <<EOF
+else case e in #(
+  e)   cat > conftest.c <<EOF
 void foo (void) { }
 EOF
   libc_cv_aarch64_bti=no
@@ -225,7 +219,8 @@ EOF
   then
     libc_cv_aarch64_bti=yes
   fi
-  rm -rf conftest.*
+  rm -rf conftest.* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_bti" >&5
 printf "%s\n" "$libc_cv_aarch64_bti" >&6; }
@@ -246,8 +241,8 @@ printf %s "checking if pac-ret is enabled... " >&6; }
 if test ${libc_cv_aarch64_pac_ret+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest.c <<EOF
+else case e in #(
+  e)   cat > conftest.c <<EOF
 int bar (void);
 int foo (void) { return bar () + 1; }
 EOF
@@ -267,7 +262,8 @@ EOF
   then
     libc_cv_aarch64_pac_ret=yes
   fi
-  rm -rf conftest.*
+  rm -rf conftest.* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_pac_ret" >&5
 printf "%s\n" "$libc_cv_aarch64_pac_ret" >&6; }
@@ -282,8 +278,8 @@ printf %s "checking for variant PCS support... " >&6; }
 if test ${libc_cv_aarch64_variant_pcs+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest.S <<EOF
+else case e in #(
+  e)   cat > conftest.S <<EOF
 .global foo
 .type foo, %function
 .variant_pcs foo
@@ -310,7 +306,8 @@ EOF
   then
     libc_cv_aarch64_variant_pcs=yes
   fi
-  rm -rf conftest.*
+  rm -rf conftest.* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_variant_pcs" >&5
 printf "%s\n" "$libc_cv_aarch64_variant_pcs" >&6; }
@@ -323,8 +320,8 @@ printf %s "checking for SVE support in assembler... " >&6; }
 if test ${libc_cv_aarch64_sve_asm+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.s <<\EOF
+else case e in #(
+  e) cat > conftest.s <<\EOF
 	.arch armv8.2-a+sve
 	ptrue p0.b
 EOF
@@ -338,7 +335,8 @@ if { ac_try='${CC-cc} -c conftest.s 1>&5'
 else
   libc_cv_aarch64_sve_asm=no
 fi
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_sve_asm" >&5
 printf "%s\n" "$libc_cv_aarch64_sve_asm" >&6; }
@@ -357,8 +355,8 @@ printf %s "checking for availability of SVE ACLE... " >&6; }
 if test ${libc_cv_aarch64_sve_acle+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest.c <<EOF
+else case e in #(
+  e)   cat > conftest.c <<EOF
 #include <arm_sve.h>
 EOF
   if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fsyntax-only -ffreestanding conftest.c'
@@ -371,7 +369,8 @@ EOF
   else
     libc_cv_aarch64_sve_acle=no
   fi
-  rm conftest.c
+  rm conftest.c ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_sve_acle" >&5
 printf "%s\n" "$libc_cv_aarch64_sve_acle" >&6; }
diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps
index 656d4b0169..6c96304611 100644
--- a/sysdeps/aarch64/libm-test-ulps
+++ b/sysdeps/aarch64/libm-test-ulps
@@ -1081,6 +1081,26 @@ double: 2
 float: 1
 ldouble: 3
 
+Function: "exp10m1":
+double: 2
+float: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+ldouble: 3
+
 Function: "exp2":
 double: 1
 float: 1
@@ -1109,6 +1129,26 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 1
+float: 1
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+ldouble: 2
+
 Function: "exp_advsimd":
 double: 1
 float: 1
@@ -1315,6 +1355,26 @@ double: 2
 float: 2
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1412,6 +1472,26 @@ double: 1
 float: 2
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 1
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/alpha/dl-procinfo.c b/sysdeps/alpha/dl-procinfo.c
deleted file mode 100644
index 633dcbf974..0000000000
--- a/sysdeps/alpha/dl-procinfo.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Data for Alpha version of processor capability information.
-   Copyright (C) 2008-2024 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-/* This information must be kept in sync with the _DL_PLATFORM_COUNT
-   definitions in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions are quite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_alpha_platforms
-#else
-PROCINFO_CLASS const char _dl_alpha_platforms[5][5]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "ev4", "ev5", "ev56", "ev6", "ev67"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/alpha/dl-procinfo.h b/sysdeps/alpha/dl-procinfo.h
index f1e2e98e08..8d17d42ce2 100644
--- a/sysdeps/alpha/dl-procinfo.h
+++ b/sysdeps/alpha/dl-procinfo.h
@@ -21,36 +21,12 @@
 
 #include <ldsodefs.h>
 
-
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM    (-1ULL)
-
-#define _DL_PLATFORMS_COUNT   5
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  int i;
-
-  if (str != NULL)
-    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
-      {
-        if (strcmp (str, GLRO(dl_alpha_platforms)[i]) == 0)
-          return i;
-      }
-  return -1;
-};
-
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
 /* There are no hardware capabilities defined.  */
 #define _dl_hwcap_string(idx) ""
 
-/* By default there is no important hardware capability.  */
-#define HWCAP_IMPORTANT (0)
-
 /* We don't have any hardware capabilities.  */
 #define _DL_HWCAP_COUNT	0
 
diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps
index f2929d6ffc..392d23f80a 100644
--- a/sysdeps/alpha/fpu/libm-test-ulps
+++ b/sysdeps/alpha/fpu/libm-test-ulps
@@ -1221,6 +1221,26 @@ double: 1
 float: 2
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/arc/configure b/sysdeps/arc/configure
index 7b27e26490..08e4f23f89 100644
--- a/sysdeps/arc/configure
+++ b/sysdeps/arc/configure
@@ -13,14 +13,14 @@ printf "%s\n" "#define ASM_LINE_SEP $libc_cv_asm_line_sep" >>confdefs.h
 # For big endian ABI, generate a symbol for selecting right dynamic linker
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -34,13 +34,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -49,14 +50,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -64,35 +65,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -106,13 +96,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -121,14 +112,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -136,32 +127,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
 printf %s "checking for big endian... " >&6; }
 if test ${libc_cv_arc_be+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __BIG_ENDIAN__
                       yes
@@ -169,14 +161,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_arc_be=yes
-else $as_nop
-  libc_cv_arc_be=no
+else case e in #(
+  e) libc_cv_arc_be=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arc_be" >&5
 printf "%s\n" "$libc_cv_arc_be" >&6; }
diff --git a/sysdeps/arc/fpu/libm-test-ulps b/sysdeps/arc/fpu/libm-test-ulps
index 56ff9149cb..41c8ef16d7 100644
--- a/sysdeps/arc/fpu/libm-test-ulps
+++ b/sysdeps/arc/fpu/libm-test-ulps
@@ -979,6 +979,22 @@ Function: "log_upward":
 double: 1
 float: 1
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 1
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps
index 6ac2830b25..d3f45957d4 100644
--- a/sysdeps/arc/nofpu/libm-test-ulps
+++ b/sysdeps/arc/nofpu/libm-test-ulps
@@ -234,6 +234,10 @@ Function: "log2":
 double: 2
 float: 1
 
+Function: "logp1":
+double: 1
+float: 1
+
 Function: "pow":
 double: 1
 
diff --git a/sysdeps/arm/configure b/sysdeps/arm/configure
index 4ef4d46cbd..935e022c74 100644
--- a/sysdeps/arm/configure
+++ b/sysdeps/arm/configure
@@ -10,14 +10,14 @@
 # the dynamic linker via %ifdef.
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -31,13 +31,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -46,14 +47,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -61,35 +62,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -103,13 +93,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -118,14 +109,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -133,32 +124,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is using the ARM hard-float ABI" >&5
 printf %s "checking whether the compiler is using the ARM hard-float ABI... " >&6; }
 if test ${libc_cv_arm_pcs_vfp+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __ARM_PCS_VFP
 		      yes
@@ -166,14 +158,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_arm_pcs_vfp=yes
-else $as_nop
-  libc_cv_arm_pcs_vfp=no
+else case e in #(
+  e) libc_cv_arm_pcs_vfp=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_pcs_vfp" >&5
 printf "%s\n" "$libc_cv_arm_pcs_vfp" >&6; }
@@ -192,8 +186,8 @@ printf %s "checking whether VFP supports 32 registers... " >&6; }
 if test ${libc_cv_arm_pcs_vfp_d32+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -206,10 +200,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_arm_pcs_vfp_d32=yes
-else $as_nop
-  libc_cv_arm_pcs_vfp_d32=no
+else case e in #(
+  e) libc_cv_arm_pcs_vfp_d32=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_pcs_vfp_d32" >&5
 printf "%s\n" "$libc_cv_arm_pcs_vfp_d32" >&6; }
@@ -224,8 +220,8 @@ printf %s "checking whether PC-relative relocs in movw/movt work properly... " >
 if test ${libc_cv_arm_pcrel_movw+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat > conftest.s <<\EOF
 	.syntax unified
 	.arm
@@ -259,7 +255,8 @@ LC_ALL=C $READELF -dr conftest.so > conftest.dr 2>&5 &&
   grep -F 'TEXTREL
 R_ARM_NONE' conftest.dr > /dev/null || libc_cv_arm_pcrel_movw=yes
 }
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_pcrel_movw" >&5
 printf "%s\n" "$libc_cv_arm_pcrel_movw" >&6; }
@@ -276,8 +273,8 @@ printf %s "checking whether TPOFF relocs with addends are assembled correctly...
 if test ${libc_cv_arm_tpoff_addend+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat > conftest.s <<\EOF
 	.syntax unified
 	.arm
@@ -306,7 +303,8 @@ $1 ~ /0x0+/ && $2 ~ /[0-9a-f]+/ {
 END { exit(result) }
 ' conftest.x 2>&5 && libc_cv_arm_tpoff_addend=yes
 }
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_arm_tpoff_addend" >&5
 printf "%s\n" "$libc_cv_arm_tpoff_addend" >&6; }
diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
index dd1a0f6b6e..9186831be3 100644
--- a/sysdeps/arm/dl-machine.h
+++ b/sysdeps/arm/dl-machine.h
@@ -349,10 +349,7 @@ elf_machine_rel (struct link_map *map, struct r_scope_elem *scope[],
 	  break;
 	case R_ARM_ABS32:
 	  {
-	    struct unaligned
-	      {
-		Elf32_Addr x;
-	      } __attribute__ ((packed, may_alias));
+	    ElfW(Addr) tmp;
 # ifndef RTLD_BOOTSTRAP
 	   /* This is defined in rtld.c, but nowhere in the static
 	      libc.a; make the reference weak so static programs can
@@ -372,7 +369,9 @@ elf_machine_rel (struct link_map *map, struct r_scope_elem *scope[],
 	      value -= SYMBOL_ADDRESS (map, refsym, true);
 # endif
 	    /* Support relocations on mis-aligned offsets.  */
-	    ((struct unaligned *) reloc_addr)->x += value;
+	    memcpy (&tmp, reloc_addr, sizeof tmp);
+	    tmp += value;
+	    memcpy (reloc_addr, &tmp, sizeof tmp);
 	    break;
 	  }
 	case R_ARM_TLS_DESC:
diff --git a/sysdeps/arm/libm-test-ulps b/sysdeps/arm/libm-test-ulps
index fc7ba1439a..cad14a1ef1 100644
--- a/sysdeps/arm/libm-test-ulps
+++ b/sysdeps/arm/libm-test-ulps
@@ -777,6 +777,22 @@ Function: "exp10_upward":
 double: 2
 float: 1
 
+Function: "exp10m1":
+double: 2
+float: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+
 Function: "exp2":
 double: 1
 float: 1
@@ -793,6 +809,22 @@ Function: "exp2_upward":
 double: 1
 float: 1
 
+Function: "exp2m1":
+double: 1
+float: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -933,6 +965,22 @@ Function: "log10_upward":
 double: 2
 float: 2
 
+Function: "log10p1":
+double: 1
+float: 1
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+
 Function: "log1p":
 double: 1
 float: 1
@@ -991,6 +1039,22 @@ Function: "log_upward":
 double: 1
 float: 2
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/csky/dl-procinfo.c b/sysdeps/csky/dl-procinfo.c
deleted file mode 100644
index 0c81518cff..0000000000
--- a/sysdeps/csky/dl-procinfo.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Data for C-SKY version of processor capability information.
-   Copyright (C) 2018-2024 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-/* This information must be kept in sync with the _DL_PLATFORM_COUNT
-   definitions in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions are quite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-# define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_csky_platforms
-#else
-PROCINFO_CLASS const char _dl_csky_platforms[4][6]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "ck610", "ck807", "ck810", "ck860"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
-#undef PROCINFO_DECL
-#undef PROCINFO_CLASS
diff --git a/sysdeps/csky/dl-procinfo.h b/sysdeps/csky/dl-procinfo.h
index 77621e4b20..f5f6343cf6 100644
--- a/sysdeps/csky/dl-procinfo.h
+++ b/sysdeps/csky/dl-procinfo.h
@@ -22,35 +22,12 @@
 
 #include <ldsodefs.h>
 
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM    (-1ULL)
-
-#define _DL_PLATFORMS_COUNT   4
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  int i;
-
-  if (str != NULL)
-    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
-      {
-        if (strcmp (str, GLRO(dl_csky_platforms)[i]) == 0)
-          return i;
-      }
-  return -1;
-};
-
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(word, val) -1
 
 /* There are no hardware capabilities defined.  */
 #define _dl_hwcap_string(idx) ""
 
-/* By default there is no important hardware capability.  */
-#define HWCAP_IMPORTANT (0)
-
 /* We don't have any hardware capabilities.  */
 #define _DL_HWCAP_COUNT	0
 
diff --git a/sysdeps/csky/fpu/libm-test-ulps b/sysdeps/csky/fpu/libm-test-ulps
index 6e1356e532..fc634f89ca 100644
--- a/sysdeps/csky/fpu/libm-test-ulps
+++ b/sysdeps/csky/fpu/libm-test-ulps
@@ -950,6 +950,22 @@ double: 2
 Function: "log2_upward":
 double: 3
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 
diff --git a/sysdeps/csky/nofpu/libm-test-ulps b/sysdeps/csky/nofpu/libm-test-ulps
index 8a2de74d79..a1e28c8ee0 100644
--- a/sysdeps/csky/nofpu/libm-test-ulps
+++ b/sysdeps/csky/nofpu/libm-test-ulps
@@ -964,6 +964,22 @@ Function: "log_upward":
 double: 1
 float: 2
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h
index c4818497c8..93edfc00cb 100644
--- a/sysdeps/generic/dl-procinfo.h
+++ b/sysdeps/generic/dl-procinfo.h
@@ -25,15 +25,7 @@
 /* There are no hardware capabilities defined.  */
 #define _dl_hwcap_string(idx) ""
 
-/* By default there is no important hardware capability.  */
-#define HWCAP_IMPORTANT (0)
-
-/* There're no platforms to filter out.  */
-#define _DL_HWCAP_PLATFORM 0
-
 /* We don't have any hardware capabilities.  */
 #define _DL_HWCAP_COUNT 0
 
-#define _dl_string_platform(str) (-1)
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/generic/unsecvars.h b/sysdeps/generic/unsecvars.h
index f1724efe0f..97857a11aa 100644
--- a/sysdeps/generic/unsecvars.h
+++ b/sysdeps/generic/unsecvars.h
@@ -12,7 +12,6 @@
   "LD_DEBUG\0"								      \
   "LD_DEBUG_OUTPUT\0"							      \
   "LD_DYNAMIC_WEAK\0"							      \
-  "LD_HWCAP_MASK\0"							      \
   "LD_LIBRARY_PATH\0"							      \
   "LD_ORIGIN_PATH\0"							      \
   "LD_PRELOAD\0"							      \
diff --git a/sysdeps/hppa/configure b/sysdeps/hppa/configure
index cf5f9e5d7e..0390946d88 100644
--- a/sysdeps/hppa/configure
+++ b/sysdeps/hppa/configure
@@ -5,8 +5,8 @@ printf %s "checking for assembler line separator... " >&6; }
 if test ${libc_cv_asm_line_sep+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.s <<EOF
+else case e in #(
+  e) cat > conftest.s <<EOF
 nop ; is_old_puffin
 EOF
 if { ac_try='${CC-cc} -c $ASFLAGS conftest.s 1>&5'
@@ -24,7 +24,8 @@ else
   fi
   libc_cv_asm_line_sep=';'
 fi
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_line_sep" >&5
 printf "%s\n" "$libc_cv_asm_line_sep" >&6; }
diff --git a/sysdeps/hppa/fpu/libm-test-ulps b/sysdeps/hppa/fpu/libm-test-ulps
index 3d60fc25a1..d91a85bfc8 100644
--- a/sysdeps/hppa/fpu/libm-test-ulps
+++ b/sysdeps/hppa/fpu/libm-test-ulps
@@ -796,6 +796,22 @@ Function: "exp10_upward":
 double: 2
 float: 1
 
+Function: "exp10m1":
+double: 2
+float: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+
 Function: "exp2":
 double: 1
 float: 1
@@ -812,6 +828,22 @@ Function: "exp2_upward":
 double: 1
 float: 1
 
+Function: "exp2m1":
+double: 1
+float: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -958,6 +990,22 @@ Function: "log10_upward":
 double: 2
 float: 2
 
+Function: "log10p1":
+double: 1
+float: 1
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+
 Function: "log1p":
 double: 1
 float: 1
@@ -990,6 +1038,22 @@ Function: "log2_upward":
 double: 3
 float: 3
 
+Function: "log2p1":
+double: 1
+float: 1
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+
 Function: "log_downward":
 float: 2
 
@@ -1000,6 +1064,22 @@ Function: "log_upward":
 double: 1
 float: 2
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure
index 84656cef6e..a618692adf 100644
--- a/sysdeps/i386/configure
+++ b/sysdeps/i386/configure
@@ -61,8 +61,8 @@ printf %s "checking for linker static PIE support... " >&6; }
 if test ${libc_cv_ld_static_pie+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.s <<\EOF
+else case e in #(
+  e) cat > conftest.s <<\EOF
 	.text
 	.global _start
 _start:
@@ -80,7 +80,8 @@ EOF
       libc_cv_ld_static_pie=yes
     fi
   fi
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ld_static_pie" >&5
 printf "%s\n" "$libc_cv_ld_static_pie" >&6; }
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index f2139fc172..14c6d12f37 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
@@ -1024,7 +1024,7 @@ ldouble: 3
 
 Function: Imaginary part of "ctan_upward":
 double: 2
-float: 1
+float: 2
 float128: 5
 ldouble: 3
 
@@ -1153,6 +1153,30 @@ float: 1
 float128: 3
 ldouble: 2
 
+Function: "exp10m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+float128: 3
+ldouble: 2
+
 Function: "exp2":
 double: 1
 float128: 1
@@ -1172,6 +1196,30 @@ float: 1
 float128: 2
 ldouble: 1
 
+Function: "exp2m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1258,13 +1306,13 @@ float128: 2
 ldouble: 8
 
 Function: "j0_downward":
-double: 5
+double: 6
 float: 9
 float128: 9
 ldouble: 6
 
 Function: "j0_towardzero":
-double: 6
+double: 7
 float: 9
 float128: 9
 ldouble: 6
@@ -1375,6 +1423,30 @@ float: 1
 float128: 1
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 2
+float128: 3
+ldouble: 2
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_upward":
+double: 2
+float: 2
+float128: 3
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float128: 3
@@ -1421,6 +1493,30 @@ float: 1
 float128: 1
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+float128: 3
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 3
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+float128: 2
+ldouble: 5
+
 Function: "log_downward":
 double: 1
 float128: 1
@@ -1436,6 +1532,29 @@ double: 1
 float128: 1
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float128: 3
+ldouble: 2
+
+Function: "logp1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 4
+
+Function: "logp1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 4
+
+Function: "logp1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
 Function: "pow":
 double: 1
 float128: 2
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index b892c43e59..fff853e93f 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -1156,6 +1156,30 @@ float: 1
 float128: 3
 ldouble: 2
 
+Function: "exp10m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+float128: 3
+ldouble: 2
+
 Function: "exp2":
 double: 1
 float128: 1
@@ -1175,6 +1199,30 @@ float: 1
 float128: 2
 ldouble: 1
 
+Function: "exp2m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1378,6 +1426,30 @@ float: 1
 float128: 1
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 2
+float128: 3
+ldouble: 2
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_upward":
+double: 2
+float: 2
+float128: 3
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float128: 3
@@ -1463,6 +1535,29 @@ double: 1
 float128: 1
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float128: 3
+ldouble: 2
+
+Function: "logp1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 4
+
+Function: "logp1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 4
+
+Function: "logp1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
 Function: "pow":
 double: 1
 float128: 2
diff --git a/sysdeps/ieee754/float128/Makefile b/sysdeps/ieee754/float128/Makefile
index f869e80f26..f0f6aae6ae 100644
--- a/sysdeps/ieee754/float128/Makefile
+++ b/sysdeps/ieee754/float128/Makefile
@@ -100,7 +100,7 @@ CFLAGS-s_llrintf128.c += -fno-builtin-llrintf64x
 CFLAGS-s_llroundf128.c += -fno-builtin-llroundf64x
 CFLAGS-e_logf128.c += -fno-builtin-logf64x
 CFLAGS-w_log10f128.c += -fno-builtin-log10f64x
-CFLAGS-w_log1pf128.c += -fno-builtin-log1pf64x
+CFLAGS-w_log1pf128.c += -fno-builtin-log1pf64x -fno-builtin-logp1f64x
 CFLAGS-e_log2f128.c += -fno-builtin-log2f64x
 CFLAGS-s_logbf128.c += -fno-builtin-logbf64x
 CFLAGS-s_lrintf128.c += -fno-builtin-lrintf64x
diff --git a/sysdeps/ieee754/float128/float128_private.h b/sysdeps/ieee754/float128/float128_private.h
index 38a8bdd0fe..19aa6c46f2 100644
--- a/sysdeps/ieee754/float128/float128_private.h
+++ b/sysdeps/ieee754/float128/float128_private.h
@@ -358,6 +358,7 @@
 #define llroundl llroundf128
 #define log1pl log1pf128
 #define logbl logbf128
+#define logp1l logp1f128
 #define logl logf128
 #define lrintl lrintf128
 #define lroundl lroundf128
diff --git a/sysdeps/ieee754/ldbl-128/Makefile b/sysdeps/ieee754/ldbl-128/Makefile
index 9cbfc7ff6e..1901238c5b 100644
--- a/sysdeps/ieee754/ldbl-128/Makefile
+++ b/sysdeps/ieee754/ldbl-128/Makefile
@@ -89,7 +89,7 @@ CFLAGS-s_llrintl.c += -fno-builtin-llrintf64x -fno-builtin-llrintf128
 CFLAGS-s_llroundl.c += -fno-builtin-llroundf64x -fno-builtin-llroundf128
 CFLAGS-e_logl.c += -fno-builtin-logf64x -fno-builtin-logf128
 CFLAGS-w_log10l.c += -fno-builtin-log10f64x -fno-builtin-log10f128
-CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x -fno-builtin-log1pf128
+CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x -fno-builtin-log1pf128 -fno-builtin-logp1f64x -fno-builtin-logp1f128
 CFLAGS-e_log2l.c += -fno-builtin-log2f64x -fno-builtin-log2f128
 CFLAGS-s_logbl.c += -fno-builtin-logbf64x -fno-builtin-logbf128
 CFLAGS-s_lrintl.c += -fno-builtin-lrintf64x -fno-builtin-lrintf128
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Versions b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
index c9a74366fd..bd73016e93 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Versions
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Versions
@@ -138,7 +138,11 @@ libm {
     __fminimum_mag_numieee128;
   }
   GLIBC_2.40 {
+    __exp2m1ieee128;
+    __exp10m1ieee128;
     __log2p1ieee128;
+    __log10p1ieee128;
+    __logp1ieee128;
   }
 }
 libc {
diff --git a/sysdeps/ieee754/ldbl-96/Makefile b/sysdeps/ieee754/ldbl-96/Makefile
index 170e77b2f9..a3ec2c54ca 100644
--- a/sysdeps/ieee754/ldbl-96/Makefile
+++ b/sysdeps/ieee754/ldbl-96/Makefile
@@ -110,7 +110,7 @@ CFLAGS-s_llrintl.c += -fno-builtin-llrintf64x
 CFLAGS-s_llroundl.c += -fno-builtin-llroundf64x
 CFLAGS-e_logl.c += -fno-builtin-logf64x
 CFLAGS-w_log10l.c += -fno-builtin-log10f64x
-CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x
+CFLAGS-w_log1pl.c += -fno-builtin-log1pf64x -fno-builtin-logp1f64x
 CFLAGS-e_log2l.c += -fno-builtin-log2f64x
 CFLAGS-s_logbl.c += -fno-builtin-logbf64x
 CFLAGS-s_lrintl.c += -fno-builtin-lrintf64x
diff --git a/sysdeps/ieee754/ldbl-opt/Makefile b/sysdeps/ieee754/ldbl-opt/Makefile
index d1eda5d022..14fd715003 100644
--- a/sysdeps/ieee754/ldbl-opt/Makefile
+++ b/sysdeps/ieee754/ldbl-opt/Makefile
@@ -61,8 +61,10 @@ libnldbl-calls = \
   erf \
   erfc \
   exp \
+  exp10m1 \
   exp2 \
   exp10 \
+  exp2m1 \
   expm1 \
   fabs \
   fadd \
@@ -140,6 +142,7 @@ libnldbl-calls = \
   log \
   log2 \
   log10 \
+  log10p1 \
   log1p \
   log2p1 \
   logb \
@@ -295,7 +298,9 @@ CFLAGS-nldbl-erf.c = -fno-builtin-erfl
 CFLAGS-nldbl-erfc.c = -fno-builtin-erfcl
 CFLAGS-nldbl-exp.c = -fno-builtin-expl
 CFLAGS-nldbl-exp10.c = -fno-builtin-exp10l
+CFLAGS-nldbl-exp10m1.c = -fno-builtin-exp10m1l
 CFLAGS-nldbl-exp2.c = -fno-builtin-exp2l
+CFLAGS-nldbl-exp2m1.c = -fno-builtin-exp2m1l
 CFLAGS-nldbl-expm1.c = -fno-builtin-expm1l
 CFLAGS-nldbl-fabs.c = -fno-builtin-fabsl
 CFLAGS-nldbl-fadd.c = -fno-builtin-faddl
@@ -341,7 +346,8 @@ CFLAGS-nldbl-llrint.c = -fno-builtin-llrintl
 CFLAGS-nldbl-llround.c = -fno-builtin-llroundl
 CFLAGS-nldbl-log.c = -fno-builtin-logl
 CFLAGS-nldbl-log10.c = -fno-builtin-log10l
-CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl
+CFLAGS-nldbl-log10p1.c = -fno-builtin-log10p1l
+CFLAGS-nldbl-log1p.c = -fno-builtin-log1pl -fno-builtin-logp1l
 CFLAGS-nldbl-log2.c = -fno-builtin-log2l
 CFLAGS-nldbl-log2p1.c = -fno-builtin-log2p1l
 CFLAGS-nldbl-logb.c = -fno-builtin-logbl
diff --git a/sysdeps/ieee754/ldbl-opt/configure b/sysdeps/ieee754/ldbl-opt/configure
index 68d8d7b465..bc6552da0b 100644
--- a/sysdeps/ieee754/ldbl-opt/configure
+++ b/sysdeps/ieee754/ldbl-opt/configure
@@ -7,8 +7,8 @@ printf %s "checking whether $CC $CFLAGS supports -mlong-double-128... " >&6; }
 if test ${libc_cv_mlong_double_128+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  save_CFLAGS="$CFLAGS"
+else case e in #(
+  e) save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -mlong-double-128"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -28,11 +28,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mlong_double_128=yes
-else $as_nop
-  libc_cv_mlong_double_128=no
+else case e in #(
+  e) libc_cv_mlong_double_128=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
+CFLAGS="$save_CFLAGS" ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128" >&5
 printf "%s\n" "$libc_cv_mlong_double_128" >&6; }
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c b/sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c
new file mode 100644
index 0000000000..3495263fc9
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp10m1l (double x)
+{
+  return exp10m1 (x);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c b/sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c
new file mode 100644
index 0000000000..2bc6066e0c
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+exp2m1l (double x)
+{
+  return exp2m1 (x);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c b/sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c
new file mode 100644
index 0000000000..d00fc95570
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c
@@ -0,0 +1,8 @@
+#include "nldbl-compat.h"
+
+double
+attribute_hidden
+log10p1l (double x)
+{
+  return log10p1 (x);
+}
diff --git a/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c b/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c
index 455b25a9f4..b0de985183 100644
--- a/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c
+++ b/sysdeps/ieee754/ldbl-opt/nldbl-log1p.c
@@ -6,3 +6,4 @@ log1pl (double x)
 {
   return log1p (x);
 }
+weak_alias (log1pl, logp1l)
diff --git a/sysdeps/loongarch/configure b/sysdeps/loongarch/configure
index afcef6cd22..d3d9fec910 100644
--- a/sysdeps/loongarch/configure
+++ b/sysdeps/loongarch/configure
@@ -9,8 +9,8 @@ printf %s "checking if ${CC-cc} is sufficient to build static PIE on LoongArch..
 if test ${libc_cv_static_pie_on_loongarch+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
   cat > conftest.S <<\EOF
 .global _start
 .type _start, @function
@@ -48,7 +48,8 @@ EOF
   then
     libc_cv_static_pie_on_loongarch=yes
   fi
-  rm -rf conftest*
+  rm -rf conftest*  ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_static_pie_on_loongarch" >&5
 printf "%s\n" "$libc_cv_static_pie_on_loongarch" >&6; }
@@ -64,8 +65,8 @@ printf %s "checking whether $CC supports option -mcmodel=medium... " >&6; }
 if test ${libc_cv_loongarch_cmodel_medium+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
   if { ac_try='${CC-cc} -c $CFLAGS -mcmodel=medium /dev/null 1>&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
@@ -75,7 +76,8 @@ else $as_nop
     libc_cv_loongarch_cmodel_medium=yes
   else
     libc_cv_loongarch_cmodel_medium=no
-  fi
+  fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_loongarch_cmodel_medium" >&5
 printf "%s\n" "$libc_cv_loongarch_cmodel_medium" >&6; }
@@ -88,8 +90,8 @@ printf %s "checking for vector support in assembler... " >&6; }
 if test ${libc_cv_loongarch_vec_asm+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.s <<\EOF
+else case e in #(
+  e) cat > conftest.s <<\EOF
         vld  $vr0, $sp, 0
 EOF
 if { ac_try='${CC-cc} -c $CFLAGS conftest.s -o conftest 1>&5'
@@ -102,7 +104,8 @@ if { ac_try='${CC-cc} -c $CFLAGS conftest.s -o conftest 1>&5'
 else
   libc_cv_loongarch_vec_asm=no
 fi
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_loongarch_vec_asm" >&5
 printf "%s\n" "$libc_cv_loongarch_vec_asm" >&6; }
@@ -116,8 +119,8 @@ printf %s "checking for vector support in compiler... " >&6; }
 if test ${libc_cv_loongarch_vec_com+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -131,10 +134,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_loongarch_vec_com=yes
-else $as_nop
-  libc_cv_loongarch_vec_com=no
+else case e in #(
+  e) libc_cv_loongarch_vec_com=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_loongarch_vec_com" >&5
 printf "%s\n" "$libc_cv_loongarch_vec_com" >&6; }
diff --git a/sysdeps/loongarch/dl-tlsdesc.S b/sysdeps/loongarch/dl-tlsdesc.S
index 346b80f2ec..a6627cc754 100644
--- a/sysdeps/loongarch/dl-tlsdesc.S
+++ b/sysdeps/loongarch/dl-tlsdesc.S
@@ -81,7 +81,7 @@ _dl_tlsdesc_undefweak:
 	   _dl_tlsdesc_dynamic (struct tlsdesc *tdp)
 	   {
 	     struct tlsdesc_dynamic_arg *td = tdp->arg;
-	     dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - TCBHEAD_DTV);
+	     dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - SIZE_OF_TCB);
 	     if (__glibc_likely (td->gen_count <= dtv[0].counter
 		&& (dtv[td->tlsinfo.ti_module].pointer.val
 		    != TLS_DTV_UNALLOCATED),
@@ -177,8 +177,8 @@ Hign address	dynamic_block1 <----- dtv5  */
 	/* Whether support LASX.  */
 	la.global   t0, _rtld_global_ro
 	REG_L	t0, t0, GLRO_DL_HWCAP_OFFSET
-	andi	t0, t0, HWCAP_LOONGARCH_LASX
-	beqz	t0, .Llsx
+	andi	t1, t0, HWCAP_LOONGARCH_LASX
+	beqz	t1, .Llsx
 
 	/* Save 256-bit vector registers.
 	   FIXME: Without vector ABI, save all vector registers.  */
@@ -219,8 +219,8 @@ Hign address	dynamic_block1 <----- dtv5  */
 
 .Llsx:
 	/* Whether support LSX.  */
-	andi	t0, t0, HWCAP_LOONGARCH_LSX
-	beqz	t0, .Lfloat
+	andi	t1, t0, HWCAP_LOONGARCH_LSX
+	beqz	t1, .Lfloat
 
 	/* Save 128-bit vector registers.  */
 	ADDI	sp, sp, -FRAME_SIZE_LSX
@@ -296,8 +296,8 @@ Hign address	dynamic_block1 <----- dtv5  */
 
 	la.global   t0, _rtld_global_ro
 	REG_L	t0, t0, GLRO_DL_HWCAP_OFFSET
-	andi	t0, t0, HWCAP_LOONGARCH_LASX
-	beqz	t0, .Llsx1
+	andi	t1, t0, HWCAP_LOONGARCH_LASX
+	beqz	t1, .Llsx1
 
 	/* Restore 256-bit vector registers.  */
 	xvld	xr0, sp, 0*SZXREG
@@ -336,8 +336,8 @@ Hign address	dynamic_block1 <----- dtv5  */
 	b .Lfcsr
 
 .Llsx1:
-	andi	t0, s0, HWCAP_LOONGARCH_LSX
-	beqz	t0, .Lfloat1
+	andi	t1, t0, HWCAP_LOONGARCH_LSX
+	beqz	t1, .Lfloat1
 
 	/* Restore 128-bit vector registers.  */
 	vld	vr0, sp, 0*SZVREG
diff --git a/sysdeps/loongarch/lp64/libm-test-ulps b/sysdeps/loongarch/lp64/libm-test-ulps
index 185c5b4e92..bdfd683454 100644
--- a/sysdeps/loongarch/lp64/libm-test-ulps
+++ b/sysdeps/loongarch/lp64/libm-test-ulps
@@ -975,6 +975,26 @@ double: 2
 float: 1
 ldouble: 3
 
+Function: "exp10m1":
+double: 2
+float: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+ldouble: 3
+
 Function: "exp2":
 double: 1
 ldouble: 1
@@ -992,6 +1012,26 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 1
+float: 1
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+ldouble: 2
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1165,6 +1205,26 @@ double: 2
 float: 2
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1232,6 +1292,26 @@ Function: "log_upward":
 double: 1
 ldouble: 2
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 ldouble: 2
diff --git a/sysdeps/loongarch/tst-gnu2-tls2.h b/sysdeps/loongarch/tst-gnu2-tls2.h
index 8e4216785d..863abe597e 100644
--- a/sysdeps/loongarch/tst-gnu2-tls2.h
+++ b/sysdeps/loongarch/tst-gnu2-tls2.h
@@ -16,6 +16,7 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
+#include <stdio.h>
 #include <config.h>
 #include <string.h>
 #include <stdlib.h>
@@ -42,35 +43,35 @@
 #else /* hard float */
 
 #define SAVE_REGISTER_FCC(src)				\
-  asm volatile ("movcf2gr $t0, $fcc0" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[0]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc1" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[1]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc2" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[2]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc3" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[3]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc4" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[4]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc5" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[5]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc6" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[6]) :);	\
-  asm volatile ("movcf2gr $t0, $fcc7" ::: "$t0");	\
-  asm volatile ("st.d $t0, %0" :"=m"(src[7]) :);
+  asm volatile ("movcf2gr %0, $fcc0" :"=r"(src[0]));	\
+  asm volatile ("movcf2gr %0, $fcc1" :"=r"(src[1]));	\
+  asm volatile ("movcf2gr %0, $fcc2" :"=r"(src[2]));	\
+  asm volatile ("movcf2gr %0, $fcc3" :"=r"(src[3]));	\
+  asm volatile ("movcf2gr %0, $fcc4" :"=r"(src[4]));	\
+  asm volatile ("movcf2gr %0, $fcc5" :"=r"(src[5]));	\
+  asm volatile ("movcf2gr %0, $fcc6" :"=r"(src[6]));	\
+  asm volatile ("movcf2gr %0, $fcc7" :"=r"(src[7]));	\
 
 #define LOAD_REGISTER_FCSR()				\
+  uint64_t src_fcsr = 0x01010101;			\
   asm volatile ("li.d $t0, 0x01010101" ::: "$t0");	\
   asm volatile ("movgr2fcsr $fcsr0, $t0" :::);
 
-#define SAVE_REGISTER_FCSR()				\
-  asm volatile ("movfcsr2gr $t0, $fcsr0" ::: "$t0");    \
-  asm volatile ("st.d $t0, %0" :"=m"(restore_fcsr) :);
+#define SAVE_REGISTER_FCSR()						\
+  uint64_t restore_fcsr;						\
+  asm volatile ("movfcsr2gr %0, $fcsr0" :"=r"(restore_fcsr));		\
+  if (src_fcsr != restore_fcsr)						\
+    {									\
+      printf ("FCSR registers compare failed!\n");			\
+      abort ();								\
+    }									\
 
-# define INIT_TLSDESC_CALL()						\
+#define INIT_TLSDESC_CALL()						\
   unsigned long hwcap = getauxval (AT_HWCAP);
 
 #define	LOAD_REGISTER_FLOAT()						\
+  for (int i = 0; i < 32; i++)						\
+    src_float[i] = i + 1;						\
   asm volatile ("fld.d $f0, %0" ::"m"(src_float[0]) :"$f0");		\
   asm volatile ("fld.d $f1, %0" ::"m"(src_float[1]) :"$f1"); 		\
   asm volatile ("fld.d $f2, %0" ::"m"(src_float[2]) :"$f2"); 		\
@@ -105,38 +106,44 @@
   asm volatile ("fld.d $f31, %0" ::"m"(src_float[31]) :"$f31");
 
 #define	SAVE_REGISTER_FLOAT()						\
-  asm volatile ("fst.d $f0, %0" :"=m"(restore_float[0]) :);		\
-  asm volatile ("fst.d $f1, %0" :"=m"(restore_float[1]) :); 		\
-  asm volatile ("fst.d $f2, %0" :"=m"(restore_float[2]) :); 		\
-  asm volatile ("fst.d $f3, %0" :"=m"(restore_float[3]) :); 		\
-  asm volatile ("fst.d $f4, %0" :"=m"(restore_float[4]) :); 		\
-  asm volatile ("fst.d $f5, %0" :"=m"(restore_float[5]) :); 		\
-  asm volatile ("fst.d $f6, %0" :"=m"(restore_float[6]) :); 		\
-  asm volatile ("fst.d $f7, %0" :"=m"(restore_float[7]) :); 		\
-  asm volatile ("fst.d $f8, %0" :"=m"(restore_float[8]) :); 		\
-  asm volatile ("fst.d $f9, %0" :"=m"(restore_float[9]) :); 		\
-  asm volatile ("fst.d $f10, %0" :"=m"(restore_float[10]) :);		\
-  asm volatile ("fst.d $f11, %0" :"=m"(restore_float[11]) :);		\
-  asm volatile ("fst.d $f12, %0" :"=m"(restore_float[12]) :);		\
-  asm volatile ("fst.d $f13, %0" :"=m"(restore_float[13]) :);		\
-  asm volatile ("fst.d $f14, %0" :"=m"(restore_float[14]) :);		\
-  asm volatile ("fst.d $f15, %0" :"=m"(restore_float[15]) :);		\
-  asm volatile ("fst.d $f16, %0" :"=m"(restore_float[16]) :);		\
-  asm volatile ("fst.d $f17, %0" :"=m"(restore_float[17]) :);		\
-  asm volatile ("fst.d $f18, %0" :"=m"(restore_float[18]) :);		\
-  asm volatile ("fst.d $f19, %0" :"=m"(restore_float[19]) :);		\
-  asm volatile ("fst.d $f20, %0" :"=m"(restore_float[20]) :);		\
-  asm volatile ("fst.d $f21, %0" :"=m"(restore_float[21]) :);		\
-  asm volatile ("fst.d $f22, %0" :"=m"(restore_float[22]) :);		\
-  asm volatile ("fst.d $f23, %0" :"=m"(restore_float[23]) :);		\
-  asm volatile ("fst.d $f24, %0" :"=m"(restore_float[24]) :);		\
-  asm volatile ("fst.d $f25, %0" :"=m"(restore_float[25]) :);		\
-  asm volatile ("fst.d $f26, %0" :"=m"(restore_float[26]) :);		\
-  asm volatile ("fst.d $f27, %0" :"=m"(restore_float[27]) :);		\
-  asm volatile ("fst.d $f28, %0" :"=m"(restore_float[28]) :);		\
-  asm volatile ("fst.d $f29, %0" :"=m"(restore_float[29]) :);		\
-  asm volatile ("fst.d $f30, %0" :"=m"(restore_float[30]) :);		\
-  asm volatile ("fst.d $f31, %0" :"=m"(restore_float[31]) :);
+  double restore_float[32];						\
+  asm volatile ("fst.d $f0, %0" :"=m"(restore_float[0]));		\
+  asm volatile ("fst.d $f1, %0" :"=m"(restore_float[1])); 		\
+  asm volatile ("fst.d $f2, %0" :"=m"(restore_float[2])); 		\
+  asm volatile ("fst.d $f3, %0" :"=m"(restore_float[3])); 		\
+  asm volatile ("fst.d $f4, %0" :"=m"(restore_float[4])); 		\
+  asm volatile ("fst.d $f5, %0" :"=m"(restore_float[5])); 		\
+  asm volatile ("fst.d $f6, %0" :"=m"(restore_float[6])); 		\
+  asm volatile ("fst.d $f7, %0" :"=m"(restore_float[7])); 		\
+  asm volatile ("fst.d $f8, %0" :"=m"(restore_float[8])); 		\
+  asm volatile ("fst.d $f9, %0" :"=m"(restore_float[9])); 		\
+  asm volatile ("fst.d $f10, %0" :"=m"(restore_float[10]));		\
+  asm volatile ("fst.d $f11, %0" :"=m"(restore_float[11]));		\
+  asm volatile ("fst.d $f12, %0" :"=m"(restore_float[12]));		\
+  asm volatile ("fst.d $f13, %0" :"=m"(restore_float[13]));		\
+  asm volatile ("fst.d $f14, %0" :"=m"(restore_float[14]));		\
+  asm volatile ("fst.d $f15, %0" :"=m"(restore_float[15]));		\
+  asm volatile ("fst.d $f16, %0" :"=m"(restore_float[16]));		\
+  asm volatile ("fst.d $f17, %0" :"=m"(restore_float[17]));		\
+  asm volatile ("fst.d $f18, %0" :"=m"(restore_float[18]));		\
+  asm volatile ("fst.d $f19, %0" :"=m"(restore_float[19]));		\
+  asm volatile ("fst.d $f20, %0" :"=m"(restore_float[20]));		\
+  asm volatile ("fst.d $f21, %0" :"=m"(restore_float[21]));		\
+  asm volatile ("fst.d $f22, %0" :"=m"(restore_float[22]));		\
+  asm volatile ("fst.d $f23, %0" :"=m"(restore_float[23]));		\
+  asm volatile ("fst.d $f24, %0" :"=m"(restore_float[24]));		\
+  asm volatile ("fst.d $f25, %0" :"=m"(restore_float[25]));		\
+  asm volatile ("fst.d $f26, %0" :"=m"(restore_float[26]));		\
+  asm volatile ("fst.d $f27, %0" :"=m"(restore_float[27]));		\
+  asm volatile ("fst.d $f28, %0" :"=m"(restore_float[28]));		\
+  asm volatile ("fst.d $f29, %0" :"=m"(restore_float[29]));		\
+  asm volatile ("fst.d $f30, %0" :"=m"(restore_float[30]));		\
+  asm volatile ("fst.d $f31, %0" :"=m"(restore_float[31]));		\
+  if (memcmp (src_float, restore_float, sizeof (src_float)) != 0)	\
+    {									\
+      printf ("Float registers compare failed!\n");			\
+      abort ();								\
+    }
 
 #ifdef HAVE_LOONGARCH_VEC_COM
   #define	LOAD_REGISTER_LSX()					\
@@ -181,44 +188,47 @@
   #define	SAVE_REGISTER_LSX()					\
     int src_lsx[32][4];							\
     int restore_lsx[32][4];						\
-    asm volatile ("vst $vr0, %0" :"=m"(restore_lsx[0]) :);		\
-    asm volatile ("vst $vr1, %0" :"=m"(restore_lsx[1]) :); 		\
-    asm volatile ("vst $vr2, %0" :"=m"(restore_lsx[2]) :); 		\
-    asm volatile ("vst $vr3, %0" :"=m"(restore_lsx[3]) :); 		\
-    asm volatile ("vst $vr4, %0" :"=m"(restore_lsx[4]) :); 		\
-    asm volatile ("vst $vr5, %0" :"=m"(restore_lsx[5]) :); 		\
-    asm volatile ("vst $vr6, %0" :"=m"(restore_lsx[6]) :); 		\
-    asm volatile ("vst $vr7, %0" :"=m"(restore_lsx[7]) :); 		\
-    asm volatile ("vst $vr8, %0" :"=m"(restore_lsx[8]) :); 		\
-    asm volatile ("vst $vr9, %0" :"=m"(restore_lsx[9]) :); 		\
-    asm volatile ("vst $vr10, %0" :"=m"(restore_lsx[10]) :);		\
-    asm volatile ("vst $vr11, %0" :"=m"(restore_lsx[11]) :);		\
-    asm volatile ("vst $vr12, %0" :"=m"(restore_lsx[12]) :);		\
-    asm volatile ("vst $vr13, %0" :"=m"(restore_lsx[13]) :);		\
-    asm volatile ("vst $vr14, %0" :"=m"(restore_lsx[14]) :);		\
-    asm volatile ("vst $vr15, %0" :"=m"(restore_lsx[15]) :);		\
-    asm volatile ("vst $vr16, %0" :"=m"(restore_lsx[16]) :);		\
-    asm volatile ("vst $vr17, %0" :"=m"(restore_lsx[17]) :);		\
-    asm volatile ("vst $vr18, %0" :"=m"(restore_lsx[18]) :);		\
-    asm volatile ("vst $vr19, %0" :"=m"(restore_lsx[19]) :);		\
-    asm volatile ("vst $vr20, %0" :"=m"(restore_lsx[20]) :);		\
-    asm volatile ("vst $vr21, %0" :"=m"(restore_lsx[21]) :);		\
-    asm volatile ("vst $vr22, %0" :"=m"(restore_lsx[22]) :);		\
-    asm volatile ("vst $vr23, %0" :"=m"(restore_lsx[23]) :);		\
-    asm volatile ("vst $vr24, %0" :"=m"(restore_lsx[24]) :);		\
-    asm volatile ("vst $vr25, %0" :"=m"(restore_lsx[25]) :);		\
-    asm volatile ("vst $vr26, %0" :"=m"(restore_lsx[26]) :);		\
-    asm volatile ("vst $vr27, %0" :"=m"(restore_lsx[27]) :);		\
-    asm volatile ("vst $vr28, %0" :"=m"(restore_lsx[28]) :);		\
-    asm volatile ("vst $vr29, %0" :"=m"(restore_lsx[29]) :);		\
-    asm volatile ("vst $vr30, %0" :"=m"(restore_lsx[30]) :);		\
-    asm volatile ("vst $vr31, %0" :"=m"(restore_lsx[31]) :);		\
+    asm volatile ("vst $vr0, %0" :"=m"(restore_lsx[0]));		\
+    asm volatile ("vst $vr1, %0" :"=m"(restore_lsx[1])); 		\
+    asm volatile ("vst $vr2, %0" :"=m"(restore_lsx[2])); 		\
+    asm volatile ("vst $vr3, %0" :"=m"(restore_lsx[3])); 		\
+    asm volatile ("vst $vr4, %0" :"=m"(restore_lsx[4])); 		\
+    asm volatile ("vst $vr5, %0" :"=m"(restore_lsx[5])); 		\
+    asm volatile ("vst $vr6, %0" :"=m"(restore_lsx[6])); 		\
+    asm volatile ("vst $vr7, %0" :"=m"(restore_lsx[7])); 		\
+    asm volatile ("vst $vr8, %0" :"=m"(restore_lsx[8])); 		\
+    asm volatile ("vst $vr9, %0" :"=m"(restore_lsx[9])); 		\
+    asm volatile ("vst $vr10, %0" :"=m"(restore_lsx[10]));		\
+    asm volatile ("vst $vr11, %0" :"=m"(restore_lsx[11]));		\
+    asm volatile ("vst $vr12, %0" :"=m"(restore_lsx[12]));		\
+    asm volatile ("vst $vr13, %0" :"=m"(restore_lsx[13]));		\
+    asm volatile ("vst $vr14, %0" :"=m"(restore_lsx[14]));		\
+    asm volatile ("vst $vr15, %0" :"=m"(restore_lsx[15]));		\
+    asm volatile ("vst $vr16, %0" :"=m"(restore_lsx[16]));		\
+    asm volatile ("vst $vr17, %0" :"=m"(restore_lsx[17]));		\
+    asm volatile ("vst $vr18, %0" :"=m"(restore_lsx[18]));		\
+    asm volatile ("vst $vr19, %0" :"=m"(restore_lsx[19]));		\
+    asm volatile ("vst $vr20, %0" :"=m"(restore_lsx[20]));		\
+    asm volatile ("vst $vr21, %0" :"=m"(restore_lsx[21]));		\
+    asm volatile ("vst $vr22, %0" :"=m"(restore_lsx[22]));		\
+    asm volatile ("vst $vr23, %0" :"=m"(restore_lsx[23]));		\
+    asm volatile ("vst $vr24, %0" :"=m"(restore_lsx[24]));		\
+    asm volatile ("vst $vr25, %0" :"=m"(restore_lsx[25]));		\
+    asm volatile ("vst $vr26, %0" :"=m"(restore_lsx[26]));		\
+    asm volatile ("vst $vr27, %0" :"=m"(restore_lsx[27]));		\
+    asm volatile ("vst $vr28, %0" :"=m"(restore_lsx[28]));		\
+    asm volatile ("vst $vr29, %0" :"=m"(restore_lsx[29]));		\
+    asm volatile ("vst $vr30, %0" :"=m"(restore_lsx[30]));		\
+    asm volatile ("vst $vr31, %0" :"=m"(restore_lsx[31]));		\
     for (int i = 0; i < 32; i++)					\
       for (int j = 0; j < 4; j++)					\
 	{								\
 	  src_lsx[i][j] = 0x01010101 * (i + 1);				\
 	  if (src_lsx[i][j] != restore_lsx[i][j])			\
-	    abort ();							\
+	    {								\
+	      printf ("LSX registers compare failed!\n");		\
+	      abort ();							\
+	    }								\
 	}
 #else
   #define	SAVE_REGISTER_LSX()
@@ -267,44 +277,48 @@
   #define	SAVE_REGISTER_LASX()					\
     int src_lasx[32][8];						\
     int restore_lasx[32][8];						\
-    asm volatile ("xvst $xr0, %0" :"=m"(restore_lasx[0]) :);		\
-    asm volatile ("xvst $xr1, %0" :"=m"(restore_lasx[1]) :); 		\
-    asm volatile ("xvst $xr2, %0" :"=m"(restore_lasx[2]) :); 		\
-    asm volatile ("xvst $xr3, %0" :"=m"(restore_lasx[3]) :); 		\
-    asm volatile ("xvst $xr4, %0" :"=m"(restore_lasx[4]) :); 		\
-    asm volatile ("xvst $xr5, %0" :"=m"(restore_lasx[5]) :); 		\
-    asm volatile ("xvst $xr6, %0" :"=m"(restore_lasx[6]) :); 		\
-    asm volatile ("xvst $xr7, %0" :"=m"(restore_lasx[7]) :); 		\
-    asm volatile ("xvst $xr8, %0" :"=m"(restore_lasx[8]) :); 		\
-    asm volatile ("xvst $xr9, %0" :"=m"(restore_lasx[9]) :); 		\
-    asm volatile ("xvst $xr10, %0" :"=m"(restore_lasx[10]) :);		\
-    asm volatile ("xvst $xr11, %0" :"=m"(restore_lasx[11]) :);		\
-    asm volatile ("xvst $xr12, %0" :"=m"(restore_lasx[12]) :);		\
-    asm volatile ("xvst $xr13, %0" :"=m"(restore_lasx[13]) :);		\
-    asm volatile ("xvst $xr14, %0" :"=m"(restore_lasx[14]) :);		\
-    asm volatile ("xvst $xr15, %0" :"=m"(restore_lasx[15]) :);		\
-    asm volatile ("xvst $xr16, %0" :"=m"(restore_lasx[16]) :);		\
-    asm volatile ("xvst $xr17, %0" :"=m"(restore_lasx[17]) :);		\
-    asm volatile ("xvst $xr18, %0" :"=m"(restore_lasx[18]) :);		\
-    asm volatile ("xvst $xr19, %0" :"=m"(restore_lasx[19]) :);		\
-    asm volatile ("xvst $xr20, %0" :"=m"(restore_lasx[20]) :);		\
-    asm volatile ("xvst $xr21, %0" :"=m"(restore_lasx[21]) :);		\
-    asm volatile ("xvst $xr22, %0" :"=m"(restore_lasx[22]) :);		\
-    asm volatile ("xvst $xr23, %0" :"=m"(restore_lasx[23]) :);		\
-    asm volatile ("xvst $xr24, %0" :"=m"(restore_lasx[24]) :);		\
-    asm volatile ("xvst $xr25, %0" :"=m"(restore_lasx[25]) :);		\
-    asm volatile ("xvst $xr26, %0" :"=m"(restore_lasx[26]) :);		\
-    asm volatile ("xvst $xr27, %0" :"=m"(restore_lasx[27]) :);		\
-    asm volatile ("xvst $xr28, %0" :"=m"(restore_lasx[28]) :);		\
-    asm volatile ("xvst $xr29, %0" :"=m"(restore_lasx[29]) :);		\
-    asm volatile ("xvst $xr30, %0" :"=m"(restore_lasx[30]) :);		\
-    asm volatile ("xvst $xr31, %0" :"=m"(restore_lasx[31]) :);		\
+    asm volatile ("xvst $xr0, %0" :"=m"(restore_lasx[0]));		\
+    asm volatile ("xvst $xr1, %0" :"=m"(restore_lasx[1])); 		\
+    asm volatile ("xvst $xr2, %0" :"=m"(restore_lasx[2])); 		\
+    asm volatile ("xvst $xr3, %0" :"=m"(restore_lasx[3])); 		\
+    asm volatile ("xvst $xr4, %0" :"=m"(restore_lasx[4])); 		\
+    asm volatile ("xvst $xr5, %0" :"=m"(restore_lasx[5])); 		\
+    asm volatile ("xvst $xr6, %0" :"=m"(restore_lasx[6])); 		\
+    asm volatile ("xvst $xr7, %0" :"=m"(restore_lasx[7])); 		\
+    asm volatile ("xvst $xr8, %0" :"=m"(restore_lasx[8])); 		\
+    asm volatile ("xvst $xr9, %0" :"=m"(restore_lasx[9])); 		\
+    asm volatile ("xvst $xr10, %0" :"=m"(restore_lasx[10]));		\
+    asm volatile ("xvst $xr11, %0" :"=m"(restore_lasx[11]));		\
+    asm volatile ("xvst $xr12, %0" :"=m"(restore_lasx[12]));		\
+    asm volatile ("xvst $xr13, %0" :"=m"(restore_lasx[13]));		\
+    asm volatile ("xvst $xr14, %0" :"=m"(restore_lasx[14]));		\
+    asm volatile ("xvst $xr15, %0" :"=m"(restore_lasx[15]));		\
+    asm volatile ("xvst $xr16, %0" :"=m"(restore_lasx[16]));		\
+    asm volatile ("xvst $xr17, %0" :"=m"(restore_lasx[17]));		\
+    asm volatile ("xvst $xr18, %0" :"=m"(restore_lasx[18]));		\
+    asm volatile ("xvst $xr19, %0" :"=m"(restore_lasx[19]));		\
+    asm volatile ("xvst $xr20, %0" :"=m"(restore_lasx[20]));		\
+    asm volatile ("xvst $xr21, %0" :"=m"(restore_lasx[21]));		\
+    asm volatile ("xvst $xr22, %0" :"=m"(restore_lasx[22]));		\
+    asm volatile ("xvst $xr23, %0" :"=m"(restore_lasx[23]));		\
+    asm volatile ("xvst $xr24, %0" :"=m"(restore_lasx[24]));		\
+    asm volatile ("xvst $xr25, %0" :"=m"(restore_lasx[25]));		\
+    asm volatile ("xvst $xr26, %0" :"=m"(restore_lasx[26]));		\
+    asm volatile ("xvst $xr27, %0" :"=m"(restore_lasx[27]));		\
+    asm volatile ("xvst $xr28, %0" :"=m"(restore_lasx[28]));		\
+    asm volatile ("xvst $xr29, %0" :"=m"(restore_lasx[29]));		\
+    asm volatile ("xvst $xr30, %0" :"=m"(restore_lasx[30]));		\
+    asm volatile ("xvst $xr31, %0" :"=m"(restore_lasx[31]));		\
+    /* memcmp_lasx/strlen_lasx corrupts LSX/LASX registers, */		\
     for (int i = 0; i < 32; i++)					\
       for (int j = 0; j < 8; j++)					\
 	{								\
 	  src_lasx[i][j] = 0x01010101 * (i + 1);			\
 	  if (src_lasx[i][j] != restore_lasx[i][j])			\
-	    abort ();							\
+	    {								\
+	      printf ("LASX registers compare failed!\n");		\
+	      abort ();							\
+	    }								\
 	}
 #else
   #define	SAVE_REGISTER_LASX()
@@ -314,12 +328,7 @@
   uint64_t src;								\
   double src_float[32];							\
   uint64_t src_fcc[8];							\
-  for (int i = 0; i < 32; i++)						\
-    src_float[i] = i + 1;						\
-									\
   SAVE_REGISTER (src);							\
-  LOAD_REGISTER_FCSR ();						\
-  SAVE_REGISTER_FCC(src_fcc)						\
 									\
   if (hwcap & HWCAP_LOONGARCH_LASX)					\
     {									\
@@ -332,19 +341,34 @@
   else									\
     {									\
       LOAD_REGISTER_FLOAT ();						\
-    }
+    }									\
+									\
+  /* LOAD_REGISTER_FLOAT convert int double may change fcsr.  */	\
+  LOAD_REGISTER_FCSR ();						\
+  SAVE_REGISTER_FCC (src_fcc)
+
 
 #define AFTER_TLSDESC_CALL()						\
   uint64_t restore;							\
-  uint64_t src_fcsr = 0x01010101;					\
-  uint64_t restore_fcsr;						\
   uint64_t restore_fcc[8];						\
+									\
   SAVE_REGISTER (restore);						\
+  if (src != restore)							\
+    {									\
+      printf ("General registers compare failed!\n");			\
+      abort ();								\
+    }									\
+									\
   SAVE_REGISTER_FCSR ();						\
-  SAVE_REGISTER_FCC(restore_fcc)					\
 									\
-  /* memcmp_lasx/strlen_lasx corrupts LSX/LASX registers, */		\
-  /* compare LSX/LASX registers first.  */				\
+  SAVE_REGISTER_FCC (restore_fcc)					\
+  for (int i = 0; i < 8; i++)						\
+    if (src_fcc[i] != restore_fcc[i])					\
+      {									\
+	printf ("FCC registers compare failed!\n");			\
+	abort ();							\
+      }									\
+									\
   if (hwcap & HWCAP_LOONGARCH_LASX)					\
     {									\
       SAVE_REGISTER_LASX ();						\
@@ -355,22 +379,8 @@
     }									\
   else									\
     {									\
-      double restore_float[32];						\
       SAVE_REGISTER_FLOAT ();						\
-									\
-      for (int i = 0; i < 32; i++)					\
-       if (src_float[i] != restore_float[i])				\
-	abort ();							\
     }									\
-									\
-  if (src_fcsr != restore_fcsr)						\
-    abort ();								\
-									\
-  if (memcmp (src_fcc, restore_fcc, sizeof (src_fcc)) != 0)		\
-    abort ();								\
-									\
-  if (src != restore)							\
-    abort ();
 
 #endif /* #ifdef __loongarch_soft_float */
 
diff --git a/sysdeps/m68k/coldfire/fpu/libm-test-ulps b/sysdeps/m68k/coldfire/fpu/libm-test-ulps
index ad3649f890..1b25a70e3f 100644
--- a/sysdeps/m68k/coldfire/fpu/libm-test-ulps
+++ b/sysdeps/m68k/coldfire/fpu/libm-test-ulps
@@ -134,6 +134,9 @@ float: 2
 Function: "log1p":
 float: 1
 
+Function: "logp1":
+float: 1
+
 Function: "sincos":
 double: 1
 float: 1
diff --git a/sysdeps/mach/configure b/sysdeps/mach/configure
index f15160d0d8..5779efd1ef 100644
--- a/sysdeps/mach/configure
+++ b/sysdeps/mach/configure
@@ -11,18 +11,20 @@ printf %s "checking for $2... " >&6; }
 if eval test \${$3+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <$2>
 _ACEOF
 if ac_fn_c_try_cpp "$LINENO"
 then :
   eval "$3=yes"
-else $as_nop
-  eval "$3=no"
+else case e in #(
+  e) eval "$3=no" ;;
+esac
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext ;;
+esac
 fi
 eval ac_res=\$$3
 	       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
@@ -40,8 +42,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_MIG+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$MIG"; then
+else case e in #(
+  e) if test -n "$MIG"; then
   ac_cv_prog_MIG="$MIG" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -63,7 +65,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 MIG=$ac_cv_prog_MIG
 if test -n "$MIG"; then
@@ -85,8 +88,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_ac_ct_MIG+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$ac_ct_MIG"; then
+else case e in #(
+  e) if test -n "$ac_ct_MIG"; then
   ac_cv_prog_ac_ct_MIG="$ac_ct_MIG" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -108,7 +111,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 ac_ct_MIG=$ac_cv_prog_ac_ct_MIG
 if test -n "$ac_ct_MIG"; then
@@ -153,16 +157,18 @@ ac_fn_c_check_header_preproc "$LINENO" "mach/mach_types.h" "ac_cv_header_mach_ma
 if test "x$ac_cv_header_mach_mach_types_h" = xyes
 then :
 
-else $as_nop
-  as_fn_error $? "cannot find Mach headers" "$LINENO" 5
+else case e in #(
+  e) as_fn_error $? "cannot find Mach headers" "$LINENO" 5 ;;
+esac
 fi
 
 ac_fn_c_check_header_preproc "$LINENO" "mach/mach_types.defs" "ac_cv_header_mach_mach_types_defs"
 if test "x$ac_cv_header_mach_mach_types_defs" = xyes
 then :
 
-else $as_nop
-  as_fn_error $? "cannot find Mach .defs files" "$LINENO" 5
+else case e in #(
+  e) as_fn_error $? "cannot find Mach .defs files" "$LINENO" 5 ;;
+esac
 fi
 
 
@@ -173,8 +179,8 @@ printf %s "checking for task_t in mach/mach_types.h... " >&6; }
 if test ${libc_cv_mach_task_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mach/mach_types.h>
 int
@@ -188,10 +194,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mach_task_t=task_t
-else $as_nop
-  libc_cv_mach_task_t=task_port_t
+else case e in #(
+  e) libc_cv_mach_task_t=task_port_t ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_task_t" >&5
 printf "%s\n" "$libc_cv_mach_task_t" >&6; }
@@ -203,8 +211,8 @@ printf %s "checking for thread_t in mach/mach_types.h... " >&6; }
 if test ${libc_cv_mach_thread_t+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mach/mach_types.h>
 int
@@ -218,10 +226,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mach_thread_t=thread_t
-else $as_nop
-  libc_cv_mach_thread_t=thread_port_t
+else case e in #(
+  e) libc_cv_mach_thread_t=thread_port_t ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_thread_t" >&5
 printf "%s\n" "$libc_cv_mach_thread_t" >&6; }
@@ -234,8 +244,8 @@ printf %s "checking for creation_time in task_basic_info... " >&6; }
 if test ${libc_cv_mach_task_creation_time+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mach/task_info.h>
 int
@@ -252,10 +262,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mach_task_creation_time=yes
-else $as_nop
-  libc_cv_mach_task_creation_time=no
+else case e in #(
+  e) libc_cv_mach_task_creation_time=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_task_creation_time" >&5
 printf "%s\n" "$libc_cv_mach_task_creation_time" >&6; }
@@ -269,7 +281,7 @@ for ifc in mach mach4 gnumach \
 	   processor processor_set task task_notify thread_act vm_map \
 	   memory_object memory_object_default i386/mach_i386 x86_64/mach_i386 \
 	   ; do
-  as_ac_Header=`printf "%s\n" "ac_cv_header_mach/${ifc}.defs" | $as_tr_sh`
+  as_ac_Header=`printf "%s\n" "ac_cv_header_mach/${ifc}.defs" | sed "$as_sed_sh"`
 ac_fn_c_check_header_preproc "$LINENO" "mach/${ifc}.defs" "$as_ac_Header"
 if eval test \"x\$"$as_ac_Header"\" = x"yes"
 then :
@@ -281,14 +293,14 @@ if test "x$mach_interface_list" = x; then
   as_fn_error $? "what manner of Mach is this?" "$LINENO" 5
 fi
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -302,13 +314,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -317,14 +330,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -332,35 +345,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
-fi
-
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -374,13 +376,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -389,14 +392,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -404,45 +407,48 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for host_page_size in mach_host.defs" >&5
 printf %s "checking for host_page_size in mach_host.defs... " >&6; }
 if test ${libc_cv_mach_host_page_size+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mach/mach_host.defs>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "host_page_size" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "host_page_size" >/dev/null 2>&1
 then :
   libc_cv_mach_host_page_size=yes
-else $as_nop
-  libc_cv_mach_host_page_size=no
+else case e in #(
+  e) libc_cv_mach_host_page_size=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_host_page_size" >&5
 printf "%s\n" "$libc_cv_mach_host_page_size" >&6; }
@@ -455,13 +461,14 @@ ac_fn_c_check_header_preproc "$LINENO" "mach/machine/ndr_def.h" "ac_cv_header_ma
 if test "x$ac_cv_header_mach_machine_ndr_def_h" = xyes
 then :
     DEFINES="$DEFINES -DNDR_DEF_HEADER='<mach/machine/ndr_def.h>'"
-else $as_nop
-  ac_fn_c_check_header_preproc "$LINENO" "machine/ndr_def.h" "ac_cv_header_machine_ndr_def_h"
+else case e in #(
+  e) ac_fn_c_check_header_preproc "$LINENO" "machine/ndr_def.h" "ac_cv_header_machine_ndr_def_h"
 if test "x$ac_cv_header_machine_ndr_def_h" = xyes
 then :
     DEFINES="$DEFINES -DNDR_DEF_HEADER='<machine/ndr_def.h>'"
 fi
-
+ ;;
+esac
 fi
 
 
@@ -470,21 +477,23 @@ printf %s "checking for i386_io_perm_modify in mach_i386.defs... " >&6; }
 if test ${libc_cv_mach_i386_ioports+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mach/machine/mach_i386.defs>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "i386_io_perm_modify" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "i386_io_perm_modify" >/dev/null 2>&1
 then :
   libc_cv_mach_i386_ioports=yes
-else $as_nop
-  libc_cv_mach_i386_ioports=no
+else case e in #(
+  e) libc_cv_mach_i386_ioports=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_i386_ioports" >&5
 printf "%s\n" "$libc_cv_mach_i386_ioports" >&6; }
@@ -498,21 +507,23 @@ printf %s "checking for i386_set_gdt in mach_i386.defs... " >&6; }
 if test ${libc_cv_mach_i386_gdt+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <mach/machine/mach_i386.defs>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "i386_set_gdt" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "i386_set_gdt" >/dev/null 2>&1
 then :
   libc_cv_mach_i386_gdt=yes
-else $as_nop
-  libc_cv_mach_i386_gdt=no
+else case e in #(
+  e) libc_cv_mach_i386_gdt=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_i386_gdt" >&5
 printf "%s\n" "$libc_cv_mach_i386_gdt" >&6; }
diff --git a/sysdeps/mach/hurd/configure b/sysdeps/mach/hurd/configure
index cd5af1cd20..6ca3bab511 100644
--- a/sysdeps/mach/hurd/configure
+++ b/sysdeps/mach/hurd/configure
@@ -15,8 +15,8 @@ printf %s "checking Hurd header version... " >&6; }
 if test ${libc_cv_hurd_version+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <hurd/version.h>
 int
@@ -34,10 +34,12 @@ _ACEOF
 if ac_fn_c_try_cpp "$LINENO"
 then :
   libc_cv_hurd_version=ok
-else $as_nop
-  libc_cv_hurd_version=bad
+else case e in #(
+  e) libc_cv_hurd_version=bad ;;
+esac
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hurd_version" >&5
 printf "%s\n" "$libc_cv_hurd_version" >&6; }
@@ -47,15 +49,14 @@ fi
 
 
 
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -69,13 +70,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -84,14 +86,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -99,35 +101,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -141,13 +132,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -156,14 +148,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -171,45 +163,48 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for proc_getchildren_rusage in process.defs" >&5
 printf %s "checking for proc_getchildren_rusage in process.defs... " >&6; }
 if test ${libc_cv_hurd_rpc_proc_getchildren_rusage+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <hurd/process.defs>
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "proc_getchildren_rusage" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "proc_getchildren_rusage" >/dev/null 2>&1
 then :
   libc_cv_hurd_rpc_proc_getchildren_rusage=yes
-else $as_nop
-  libc_cv_hurd_rpc_proc_getchildren_rusage=no
+else case e in #(
+  e) libc_cv_hurd_rpc_proc_getchildren_rusage=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_hurd_rpc_proc_getchildren_rusage" >&5
 printf "%s\n" "$libc_cv_hurd_rpc_proc_getchildren_rusage" >&6; }
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 113daa4b44..18113773bb 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1181,6 +1181,30 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1189,3 +1213,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/mach/hurd/x86_64/libm.abilist b/sysdeps/mach/hurd/x86_64/libm.abilist
index 0c7ffd4e3f..d4c087a471 100644
--- a/sysdeps/mach/hurd/x86_64/libm.abilist
+++ b/sysdeps/mach/hurd/x86_64/libm.abilist
@@ -1038,6 +1038,30 @@ GLIBC_2.38 ynf32x F
 GLIBC_2.38 ynf64 F
 GLIBC_2.38 ynf64x F
 GLIBC_2.38 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1046,3 +1070,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/microblaze/libm-test-ulps b/sysdeps/microblaze/libm-test-ulps
index faa3184913..d3666eb7d4 100644
--- a/sysdeps/microblaze/libm-test-ulps
+++ b/sysdeps/microblaze/libm-test-ulps
@@ -231,6 +231,10 @@ Function: "log2":
 double: 2
 float: 1
 
+Function: "logp1":
+double: 1
+float: 1
+
 Function: "pow":
 float: 1
 
diff --git a/sysdeps/mips/configure b/sysdeps/mips/configure
index 1e8c6711e6..60dbd947e2 100644
--- a/sysdeps/mips/configure
+++ b/sysdeps/mips/configure
@@ -6,14 +6,14 @@ printf "%s\n" "#define HIDDEN_VAR_NEEDS_DYNAMIC_RELOC 1" >>confdefs.h
 
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -27,13 +27,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -42,14 +43,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -57,35 +58,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -99,13 +89,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -114,14 +105,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -129,32 +120,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is using the 2008 NaN encoding" >&5
 printf %s "checking whether the compiler is using the 2008 NaN encoding... " >&6; }
 if test ${libc_cv_mips_nan2008+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 dnl
 #ifdef __mips_nan2008
@@ -162,14 +154,16 @@ yes
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_mips_nan2008=yes
-else $as_nop
-  libc_cv_mips_nan2008=no
+else case e in #(
+  e) libc_cv_mips_nan2008=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mips_nan2008" >&5
 printf "%s\n" "$libc_cv_mips_nan2008" >&6; }
diff --git a/sysdeps/mips/dl-procinfo.c b/sysdeps/mips/dl-procinfo.c
index 0b1dfeea2d..6a1aaefef2 100644
--- a/sysdeps/mips/dl-procinfo.c
+++ b/sysdeps/mips/dl-procinfo.c
@@ -16,47 +16,12 @@
    License along with the GNU C Library.  If not, see
    <https://www.gnu.org/licenses/>.  */
 
-/* This information must be kept in sync with the _DL_PLATFORM_COUNT
-   definitions in procinfo.h.
-
-   If anything should be added here check whether the size of each string
-   is still ok with the given array size.
-
-   All the #ifdefs in the definitions are quite irritating but
-   necessary if we want to avoid duplicating the information.  There
-   are three different modes:
-
-   - PROCINFO_DECL is defined.  This means we are only interested in
-     declarations.
-
-   - PROCINFO_DECL is not defined:
-
-     + if SHARED is defined the file is included in an array
-       initializer.  The .element = { ... } syntax is needed.
-
-     + if SHARED is not defined a normal array initialization is
-       needed.
-  */
-
-#ifndef PROCINFO_CLASS
-#define PROCINFO_CLASS
-#endif
-
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_mips_platforms
-#else
-PROCINFO_CLASS const char _dl_mips_platforms[4][11]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "loongson2e", "loongson2f", "octeon", "octeon2"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
+/* Note:
+   When compiling elf/ldconfig.c, PROCINFO_CLASS is defined to static.
+   This dl-procinfo.c is included in sysdeps/generic/ldsodefs.h.
+   Afterwards, if not yet defined, PROCINFO_CLASS is defined to EXTERN
+   just before dl-vdso-setup.c is included.  A "static" _dl_vdso_xyz
+   function prototype would lead to gcc warnings/errors: defined but
+   not used.  */
 #undef PROCINFO_DECL
 #undef PROCINFO_CLASS
diff --git a/sysdeps/mips/dl-procinfo.h b/sysdeps/mips/dl-procinfo.h
index 6655e68f54..af2616e1db 100644
--- a/sysdeps/mips/dl-procinfo.h
+++ b/sysdeps/mips/dl-procinfo.h
@@ -21,36 +21,12 @@
 
 #include <ldsodefs.h>
 
-
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM    (-1ULL)
-
-#define _DL_PLATFORMS_COUNT   4
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  int i;
-
-  if (str != NULL)
-    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
-      {
-        if (strcmp (str, GLRO(dl_mips_platforms)[i]) == 0)
-          return i;
-      }
-  return -1;
-};
-
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
 /* There are no hardware capabilities defined.  */
 #define _dl_hwcap_string(idx) ""
 
-/* By default there is no important hardware capability.  */
-#define HWCAP_IMPORTANT (0)
-
 /* We don't have any hardware capabilities.  */
 #define _DL_HWCAP_COUNT	0
 
diff --git a/sysdeps/mips/mips32/libm-test-ulps b/sysdeps/mips/mips32/libm-test-ulps
index 5720e73288..1c27b6615b 100644
--- a/sysdeps/mips/mips32/libm-test-ulps
+++ b/sysdeps/mips/mips32/libm-test-ulps
@@ -777,6 +777,22 @@ Function: "exp10_upward":
 double: 2
 float: 1
 
+Function: "exp10m1":
+double: 2
+float: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+
 Function: "exp2":
 double: 1
 float: 1
@@ -793,6 +809,22 @@ Function: "exp2_upward":
 double: 1
 float: 1
 
+Function: "exp2m1":
+double: 1
+float: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -933,6 +965,22 @@ Function: "log10_upward":
 double: 2
 float: 2
 
+Function: "log10p1":
+double: 1
+float: 1
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+
 Function: "log1p":
 double: 1
 float: 1
@@ -965,6 +1013,26 @@ Function: "log2_upward":
 double: 3
 float: 3
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 1
+
 Function: "log_downward":
 float: 2
 
@@ -975,6 +1043,22 @@ Function: "log_upward":
 double: 1
 float: 2
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/mips/mips64/libm-test-ulps b/sysdeps/mips/mips64/libm-test-ulps
index 933aba4735..902551b448 100644
--- a/sysdeps/mips/mips64/libm-test-ulps
+++ b/sysdeps/mips/mips64/libm-test-ulps
@@ -976,6 +976,26 @@ double: 2
 float: 1
 ldouble: 3
 
+Function: "exp10m1":
+double: 2
+float: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+ldouble: 3
+
 Function: "exp2":
 double: 1
 float: 1
@@ -996,6 +1016,26 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+ldouble: 2
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1170,6 +1210,26 @@ double: 2
 float: 2
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1210,6 +1270,26 @@ double: 3
 float: 3
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 2
+
 Function: "log_downward":
 float: 2
 ldouble: 1
@@ -1223,6 +1303,26 @@ double: 1
 float: 2
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/nios2/configure b/sysdeps/nios2/configure
index 2fb230cbaa..d25684d5ad 100644
--- a/sysdeps/nios2/configure
+++ b/sysdeps/nios2/configure
@@ -4,14 +4,14 @@
 # Nios II big endian is not yet supported.
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -25,13 +25,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -40,14 +41,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -55,35 +56,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -97,13 +87,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -112,14 +103,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -127,32 +118,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for big endian" >&5
 printf %s "checking for big endian... " >&6; }
 if test ${libc_cv_nios2_be+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef __nios2_big_endian__
                       yes
@@ -160,14 +152,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_nios2_be=yes
-else $as_nop
-  libc_cv_nios2_be=no
+else case e in #(
+  e) libc_cv_nios2_be=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_nios2_be" >&5
 printf "%s\n" "$libc_cv_nios2_be" >&6; }
diff --git a/sysdeps/nios2/libm-test-ulps b/sysdeps/nios2/libm-test-ulps
index 2cbef489bb..c8d1a722f7 100644
--- a/sysdeps/nios2/libm-test-ulps
+++ b/sysdeps/nios2/libm-test-ulps
@@ -237,6 +237,10 @@ Function: "log2":
 double: 2
 float: 1
 
+Function: "logp1":
+double: 1
+float: 1
+
 Function: "pow":
 double: 1
 float: 3
diff --git a/sysdeps/or1k/fpu/libm-test-ulps b/sysdeps/or1k/fpu/libm-test-ulps
index 948ec01cdc..59b9f072f5 100644
--- a/sysdeps/or1k/fpu/libm-test-ulps
+++ b/sysdeps/or1k/fpu/libm-test-ulps
@@ -955,6 +955,22 @@ double: 1
 Function: "log2_upward":
 double: 1
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 
diff --git a/sysdeps/or1k/nofpu/libm-test-ulps b/sysdeps/or1k/nofpu/libm-test-ulps
index 785bae70d0..726855faaa 100644
--- a/sysdeps/or1k/nofpu/libm-test-ulps
+++ b/sysdeps/or1k/nofpu/libm-test-ulps
@@ -953,6 +953,22 @@ double: 1
 Function: "log2_upward":
 double: 1
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_downward":
+double: 2
+float: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 
diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h
index b36697ba44..1e746a7ab4 100644
--- a/sysdeps/powerpc/dl-procinfo.h
+++ b/sysdeps/powerpc/dl-procinfo.h
@@ -34,16 +34,8 @@
 /* AT_HWCAP4 feature strings follow the AT_HWCAP3 feature strings.  */
 #define _DL_HWCAP4_OFFSET	(_DL_HWCAP3_OFFSET + _DL_HWCAP_SIZE)
 
-/* These bits influence library search.  */
-#define HWCAP_IMPORTANT		(PPC_FEATURE_HAS_ALTIVEC \
-				+ PPC_FEATURE_HAS_DFP)
-
-#define _DL_PLATFORMS_COUNT	17
 
 #define _DL_FIRST_PLATFORM	32
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM	(((1ULL << _DL_PLATFORMS_COUNT) - 1) \
-				<< _DL_FIRST_PLATFORM)
 
 /* Platform bits (relative to _DL_FIRST_PLATFORM).  */
 #define PPC_PLATFORM_POWER4		0
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index 78e9a9ad6e..c6292a695b 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
@@ -1184,6 +1184,30 @@ float: 1
 float128: 3
 ldouble: 4
 
+Function: "exp10m1":
+double: 2
+float: 1
+float128: 1
+ldouble: 2
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 9
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 9
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+float128: 3
+ldouble: 4
+
 Function: "exp2":
 double: 1
 float128: 1
@@ -1205,6 +1229,30 @@ float: 1
 float128: 2
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 2
+
+Function: "exp2m1_downward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1458,6 +1506,30 @@ float: 2
 float128: 1
 ldouble: 2
 
+Function: "log10p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 4
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+float128: 3
+ldouble: 4
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1509,7 +1581,7 @@ ldouble: 4
 Function: "log2p1":
 double: 1
 float: 1
-float128: 2
+float128: 3
 ldouble: 2
 
 Function: "log2p1_downward":
@@ -1546,6 +1618,30 @@ float: 2
 float128: 1
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "logp1_downward":
+double: 1
+float: 2
+float128: 3
+ldouble: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+float128: 3
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+float128: 2
+ldouble: 3
+
 Function: "mul_downward_ldouble":
 double: 1
 float: 1
diff --git a/sysdeps/powerpc/nofpu/Makefile b/sysdeps/powerpc/nofpu/Makefile
index 96657c9676..71ee2b67b8 100644
--- a/sysdeps/powerpc/nofpu/Makefile
+++ b/sysdeps/powerpc/nofpu/Makefile
@@ -54,5 +54,6 @@ CFLAGS-s_fmaximum_magl.c += -fno-builtin-fabsl
 CFLAGS-s_fmaximum_mag_numl.c += -fno-builtin-fabsl
 CFLAGS-s_fminimum_magl.c += -fno-builtin-fabsl
 CFLAGS-s_fminimum_mag_numl.c += -fno-builtin-fabsl
+CFLAGS-s_log10p1l.c += -fno-builtin-fabsl
 CFLAGS-s_log2p1l.c += -fno-builtin-fabsl
 endif
diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps
index 35a1e7b7fd..94d737a400 100644
--- a/sysdeps/powerpc/nofpu/libm-test-ulps
+++ b/sysdeps/powerpc/nofpu/libm-test-ulps
@@ -1260,6 +1260,26 @@ double: 1
 float: 2
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 2
+
+Function: "logp1_downward":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "mul_downward_ldouble":
 double: 1
 float: 1
diff --git a/sysdeps/powerpc/powerpc32/fpu/configure b/sysdeps/powerpc/powerpc32/fpu/configure
index da6fbb11bf..4d285c7617 100644
--- a/sysdeps/powerpc/powerpc32/fpu/configure
+++ b/sysdeps/powerpc/powerpc32/fpu/configure
@@ -7,8 +7,8 @@ printf %s "checking for fcfid use... " >&6; }
 if test ${libc_cv_ppc_fcfid+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  echo 'double foo (int x) { return (double) x; }' > conftest.c
+else case e in #(
+  e) echo 'double foo (int x) { return (double) x; }' > conftest.c
 libc_cv_ppc_fcfid=no
 if { ac_try='${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
@@ -20,7 +20,8 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&5'
     libc_cv_ppc_fcfid=yes
   fi
 fi
-rm -rf conftest*
+rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_fcfid" >&5
 printf "%s\n" "$libc_cv_ppc_fcfid" >&6; }
@@ -35,8 +36,8 @@ printf %s "checking for fctidz use... " >&6; }
 if test ${libc_cv_ppc_fctidz+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  echo 'long long int foo (double x) { return (long long int) x; }' > conftest.c
+else case e in #(
+  e) echo 'long long int foo (double x) { return (long long int) x; }' > conftest.c
 libc_cv_ppc_fctidz=no
 if { ac_try='${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
@@ -48,7 +49,8 @@ if { ac_try='${CC-cc} -S $CFLAGS conftest.c -o conftest.s 1>&5'
     libc_cv_ppc_fctidz=yes
   fi
 fi
-rm -rf conftest*
+rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_fctidz" >&5
 printf "%s\n" "$libc_cv_ppc_fctidz" >&6; }
diff --git a/sysdeps/powerpc/powerpc64/configure b/sysdeps/powerpc/powerpc64/configure
index 9df2ceaa1f..3e3a83505a 100644
--- a/sysdeps/powerpc/powerpc64/configure
+++ b/sysdeps/powerpc/powerpc64/configure
@@ -9,8 +9,8 @@ printf %s "checking for support for overlapping .opd entries... " >&6; }
 if test ${libc_cv_overlapping_opd+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  libc_cv_overlapping_opd=no
+else case e in #(
+  e) libc_cv_overlapping_opd=no
 echo 'void foo (void) {}' > conftest.c
 if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $libc_cv_cc_submachine -S conftest.c -o conftest.s 1>&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
@@ -27,7 +27,8 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $libc_cv_cc_submachine -S conftest.c -o
   fi
 fi
 rm -f conftest.c conftest.s
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_overlapping_opd" >&5
 printf "%s\n" "$libc_cv_overlapping_opd" >&6; }
@@ -45,8 +46,8 @@ printf %s "checking if the compiler supports @notoc... " >&6; }
 if test ${libc_cv_ppc64_notoc+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest.c <<EOF
+else case e in #(
+  e)   cat > conftest.c <<EOF
 int bar (void);
 int foo (void) { return bar () + 1; }
 EOF
@@ -66,7 +67,8 @@ EOF
   then
     libc_cv_ppc64_notoc=yes
   fi
-  rm -rf conftest.*
+  rm -rf conftest.* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_notoc" >&5
 printf "%s\n" "$libc_cv_ppc64_notoc" >&6; }
diff --git a/sysdeps/powerpc/powerpc64/le/configure b/sysdeps/powerpc/powerpc64/le/configure
index 3ec457b10b..7092f61bd4 100644
--- a/sysdeps/powerpc/powerpc64/le/configure
+++ b/sysdeps/powerpc/powerpc64/le/configure
@@ -9,8 +9,8 @@ printf %s "checking if the target machine is at least POWER8... " >&6; }
 if test ${libc_cv_target_power8_ok+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -22,10 +22,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_target_power8_ok=yes
-else $as_nop
-  libc_cv_target_power8_ok=no
+else case e in #(
+  e) libc_cv_target_power8_ok=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_target_power8_ok" >&5
 printf "%s\n" "$libc_cv_target_power8_ok" >&6; }
@@ -42,8 +44,8 @@ printf %s "checking if the compiler supports -mno-gnu-attribute... " >&6; }
 if test ${libc_cv_no_gnu_attr_ok+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -52,10 +54,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_no_gnu_attr_ok=yes
-else $as_nop
-  libc_cv_no_gnu_attr_ok=no
+else case e in #(
+  e) libc_cv_no_gnu_attr_ok=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_no_gnu_attr_ok" >&5
 printf "%s\n" "$libc_cv_no_gnu_attr_ok" >&6; }
@@ -70,8 +74,8 @@ printf %s "checking if $CC compiles signbit with 128-bit floating point type...
 if test ${libc_cv_compiler_powerpc64le_ice+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  save_CFLAGS="$CFLAGS"
+else case e in #(
+  e) save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -mabi=ieeelongdouble -Wno-psabi"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -86,11 +90,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_compiler_powerpc64le_ice=yes
-else $as_nop
-  libc_cv_compiler_powerpc64le_ice=no
+else case e in #(
+  e) libc_cv_compiler_powerpc64le_ice=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
+CFLAGS="$save_CFLAGS" ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_powerpc64le_ice" >&5
 printf "%s\n" "$libc_cv_compiler_powerpc64le_ice" >&6; }
@@ -104,8 +110,8 @@ printf %s "checking if $CC compiles with -mabi=ieeelongdouble and -mlong-double-
 if test ${libc_cv_compiler_powerpc64le_ldbl128_mabi+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  save_CFLAGS="$CFLAGS"
+else case e in #(
+  e) save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -mabi=ieeelongdouble -mlong-double-128"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -116,11 +122,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_compiler_powerpc64le_ldbl128_mabi=yes
-else $as_nop
-  libc_cv_compiler_powerpc64le_ldbl128_mabi=no
+else case e in #(
+  e) libc_cv_compiler_powerpc64le_ldbl128_mabi=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
+CFLAGS="$save_CFLAGS" ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_powerpc64le_ldbl128_mabi" >&5
 printf "%s\n" "$libc_cv_compiler_powerpc64le_ldbl128_mabi" >&6; }
@@ -138,8 +146,8 @@ printf %s "checking for $ac_word... " >&6; }
 if test ${ac_cv_prog_OBJCOPY+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -n "$OBJCOPY"; then
+else case e in #(
+  e) if test -n "$OBJCOPY"; then
   ac_cv_prog_OBJCOPY="$OBJCOPY" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -161,7 +169,8 @@ done
   done
 IFS=$as_save_IFS
 
-fi
+fi ;;
+esac
 fi
 OBJCOPY=$ac_cv_prog_OBJCOPY
 if test -n "$OBJCOPY"; then
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile
index b59c4b21ba..6d74f09912 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile
@@ -91,7 +91,8 @@ gen-libm-f128-ifunc-routines = \
 	e_expf128 e_fmodf128 e_hypotf128 e_j0f128 e_j1f128 e_jnf128 \
 	e_lgammaf128_r e_logf128 e_log10f128 e_powf128 e_remainderf128 \
 	e_sinhf128 e_sqrtf128 e_gammaf128_r e_ilogbf128 k_tanf128 s_asinhf128 \
-	s_atanf128 s_cbrtf128 s_ceilf128 s_cosf128 s_erff128 s_expm1f128 \
+	s_atanf128 s_cbrtf128 s_ceilf128 s_cosf128 s_erff128 s_exp10m1f128 \
+	s_exp2m1f128 s_expm1f128 \
 	s_fabsf128 s_floorf128 s_log1pf128 s_logbf128 \
 	s_rintf128 s_scalblnf128 s_sinf128 s_tanf128 \
 	s_tanhf128 s_truncf128 s_remquof128 e_log2f128 \
@@ -253,7 +254,9 @@ CFLAGS-s_erff128-ifunc.c += -fno-builtin-erff64x
 CFLAGS-s_erfcf128-ifunc.c += -fno-builtin-erfcf64x
 CFLAGS-e_expf128-ifunc.c += -fno-builtin-expf64x
 CFLAGS-w_exp10f128-ifunc.c += -fno-builtin-exp10f64x
+CFLAGS-s_exp10m1f128-ifunc.c += -fno-builtin-exp10m1f64x
 CFLAGS-e_exp2f128-ifunc.c += -fno-builtin-exp2f64x
+CFLAGS-s_exp2m1f128-ifunc.c += -fno-builtin-exp2m1f64x
 CFLAGS-s_expm1f128-ifunc.c += -fno-builtin-expm1f64x
 CFLAGS-s_fabsf128-ifunc.c += -fno-builtin-fabsf64x
 CFLAGS-s_faddf128-ifunc.c += -fno-builtin-f32addf64x
@@ -295,7 +298,7 @@ CFLAGS-s_llrintf128-ifunc.c += -fno-builtin-llrintf64x
 CFLAGS-s_llroundf128-ifunc.c += -fno-builtin-llroundf64x
 CFLAGS-e_logf128-ifunc.c += -fno-builtin-logf64x
 CFLAGS-w_log10f128-ifunc.c += -fno-builtin-log10f64x
-CFLAGS-w_log1pf128-ifunc.c += -fno-builtin-log1pf64x
+CFLAGS-w_log1pf128-ifunc.c += -fno-builtin-log1pf64x -fno-builtin-logp1f64x
 CFLAGS-e_log2f128-ifunc.c += -fno-builtin-log2f64x
 CFLAGS-s_logbf128-ifunc.c += -fno-builtin-logbf64x
 CFLAGS-s_lrintf128-ifunc.c += -fno-builtin-lrintf64x
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/configure b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/configure
index 130e3bebc7..61f0c713d7 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/configure
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/configure
@@ -8,8 +8,8 @@ printf %s "checking if the compiler supports -mcpu=power10... " >&6; }
 if test ${libc_cv_mcpu_power10+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -18,10 +18,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mcpu_power10=yes
-else $as_nop
-  libc_cv_mcpu_power10=no
+else case e in #(
+  e) libc_cv_mcpu_power10=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mcpu_power10" >&5
 printf "%s\n" "$libc_cv_mcpu_power10" >&6; }
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h
index 40df525ea5..155aabc4b0 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h
@@ -33,6 +33,10 @@ extern __typeof (ldexpf128) F128_SFX_APPEND (__ldexpf128);
 
 #define __ldexpf128 F128_SFX_APPEND (__ldexpf128)
 
+extern __typeof (log1pf128) F128_SFX_APPEND (__w_log1pf128);
+
+#define __w_log1pf128 F128_SFX_APPEND (__w_log1pf128)
+
 /* libm_hidden_proto is disabled by the time we reach here.
    Ensure some internally called functions are still called
    without going through the PLT.  Note, this code is only
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h
index ce337e4257..f235f824ae 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h
@@ -138,7 +138,9 @@
 
 /* Ensure the wrapper functions get exposed via IFUNC, not the
    wrappee (e.g __w_log1pf128_power8 instead of __log1pf128_power8.  */
-#define DECL_ALIAS_w_log1p(x) MAKE_IFUNCP_WRAP_R(w_,x,)
+#define DECL_ALIAS_w_log1p(x)			\
+  MAKE_IFUNCP_WRAP_R (w_, x, )			\
+  MAKE_IFUNCP_WRAP_R (w_, logp1, )
 #define DECL_ALIAS_w_scalbln(x) MAKE_IFUNCP_WRAP_R(w_,x,)
 
 /* These are declared in their respective jX objects.  */
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h
index 22038bb267..173cfca47b 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h
@@ -59,6 +59,8 @@ F128_REDIR (__cosf128)
 F128_REDIR (__erfcf128)
 F128_REDIR (__erff128)
 F128_REDIR (__expf128)
+F128_REDIR (__exp10m1f128);
+F128_REDIR (__exp2m1f128);
 F128_REDIR (__expm1f128)
 F128_REDIR (__fabsf128)
 F128_REDIR (__fdimf128)
diff --git a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h
index 790d9743f8..39241dcf48 100644
--- a/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h
+++ b/sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h
@@ -81,6 +81,8 @@ F128_REDIR (__crealf128);
 F128_REDIR (__conjf128);
 F128_REDIR (__cprojf128);
 F128_REDIR (__cabsf128);
+F128_REDIR (__exp10m1f128);
+F128_REDIR (__exp2m1f128);
 F128_REDIR (__fdimf128);
 F128_REDIR (__fminf128);
 F128_REDIR (__fmaxf128);
@@ -89,6 +91,7 @@ F128_REDIR (__llogbf128);
 F128_REDIR (__log2f128);
 F128_REDIR (__exp10f128);
 F128_REDIR (__exp2f128);
+F128_REDIR (__expm1f128);
 F128_REDIR (__j0f128);
 F128_REDIR (__j1f128);
 F128_REDIR (__jnf128);
@@ -106,11 +109,13 @@ F128_REDIR (__remainderf128);
 extern _Float128 __wrap_scalbnf128 (_Float128, int);
 extern _Float128 __w_scalblnf128 (_Float128, long int);
 extern _Float128 __w_log1pf128 (_Float128);
+extern _Float128 __w_logp1f128 (_Float128);
 extern _Float128 __scalbf128 (_Float128, _Float128);
 F128_REDIR (__scalbf128);
 F128_REDIR (__wrap_scalbnf128);
 F128_REDIR (__w_scalblnf128);
 F128_REDIR (__w_log1pf128);
+F128_REDIR (__w_logp1f128);
 
 /* Include the redirects shared with math_private.h users.  */
 #include <float128-ifunc-redirects.h>
diff --git a/sysdeps/riscv/configure b/sysdeps/riscv/configure
index c8f01709f8..3ae4ae3bdb 100644
--- a/sysdeps/riscv/configure
+++ b/sysdeps/riscv/configure
@@ -7,8 +7,8 @@ printf %s "checking for R_RISCV_ALIGN linker relaxation support... " >&6; }
 if test ${libc_cv_riscv_r_align+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest.S <<EOF
+else case e in #(
+  e)   cat > conftest.S <<EOF
 .align 3
 foo:
   li a0,42
@@ -24,7 +24,8 @@ EOF
   then
     libc_cv_riscv_r_align=yes
   fi
-  rm -rf conftest.*
+  rm -rf conftest.* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_riscv_r_align" >&5
 printf "%s\n" "$libc_cv_riscv_r_align" >&6; }
@@ -36,8 +37,8 @@ printf %s "checking if the toolchain is sufficient to build static PIE on RISC-V
 if test ${libc_cv_static_pie_on_riscv+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
   cat > conftest1.S <<\EOF
     .globl _start
     .type   _start, @function
@@ -71,7 +72,8 @@ EOF
   then
     libc_cv_static_pie_on_riscv=yes
   fi
-  rm -rf conftest*
+  rm -rf conftest*  ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_static_pie_on_riscv" >&5
 printf "%s\n" "$libc_cv_static_pie_on_riscv" >&6; }
@@ -80,3 +82,4 @@ if test "$libc_cv_static_pie_on_riscv" = yes; then
   printf "%s\n" "#define SUPPORT_STATIC_PIE 1" >>confdefs.h
 
 fi
+
diff --git a/sysdeps/riscv/nofpu/libm-test-ulps b/sysdeps/riscv/nofpu/libm-test-ulps
index bc7e615177..d8cff3e077 100644
--- a/sysdeps/riscv/nofpu/libm-test-ulps
+++ b/sysdeps/riscv/nofpu/libm-test-ulps
@@ -1208,6 +1208,26 @@ Function: "log_upward":
 double: 1
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 1
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 ldouble: 2
diff --git a/sysdeps/riscv/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps
index a3a05a8705..b9df07dc8c 100644
--- a/sysdeps/riscv/rvd/libm-test-ulps
+++ b/sysdeps/riscv/rvd/libm-test-ulps
@@ -975,6 +975,26 @@ double: 2
 float: 1
 ldouble: 3
 
+Function: "exp10m1":
+double: 2
+float: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+ldouble: 3
+
 Function: "exp2":
 double: 1
 ldouble: 1
@@ -992,6 +1012,26 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 1
+float: 1
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+ldouble: 2
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1165,6 +1205,26 @@ double: 2
 float: 2
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1202,6 +1262,26 @@ Function: "log2_upward":
 double: 3
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 2
+
 Function: "log_downward":
 ldouble: 1
 
@@ -1212,6 +1292,26 @@ Function: "log_upward":
 double: 1
 ldouble: 2
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 1
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 ldouble: 2
diff --git a/sysdeps/s390/configure b/sysdeps/s390/configure
index d1056cb325..67c3755c16 100644
--- a/sysdeps/s390/configure
+++ b/sysdeps/s390/configure
@@ -6,8 +6,8 @@ printf %s "checking for __builtin_tbegin... " >&6; }
 if test ${libc_cv_gcc_builtin_tbegin+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.c <<\EOF
+else case e in #(
+  e) cat > conftest.c <<\EOF
 #include <htmintrin.h>
 void testtransaction ()
 {
@@ -28,7 +28,8 @@ then
 else
   libc_cv_gcc_builtin_tbegin=no
 fi
-rm -f conftest*
+rm -f conftest*  ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_builtin_tbegin" >&5
 printf "%s\n" "$libc_cv_gcc_builtin_tbegin" >&6; }
@@ -44,8 +45,8 @@ printf %s "checking for S390 vector instruction support... " >&6; }
 if test ${libc_cv_asm_s390_vx+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -61,10 +62,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_asm_s390_vx=yes
-else $as_nop
-  libc_cv_asm_s390_vx=no
+else case e in #(
+  e) libc_cv_asm_s390_vx=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_vx" >&5
 printf "%s\n" "$libc_cv_asm_s390_vx" >&6; }
@@ -83,8 +86,8 @@ printf %s "checking for S390 vector support in gcc... " >&6; }
 if test ${libc_cv_gcc_s390_vx+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -97,10 +100,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_gcc_s390_vx=yes
-else $as_nop
-  libc_cv_gcc_s390_vx=no
+else case e in #(
+  e) libc_cv_gcc_s390_vx=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_gcc_s390_vx" >&5
 printf "%s\n" "$libc_cv_gcc_s390_vx" >&6; }
@@ -116,8 +121,8 @@ printf %s "checking for S390 arch13 zarch instruction support... " >&6; }
 if test ${libc_cv_asm_s390_arch13+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -135,10 +140,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_asm_s390_arch13=yes
-else $as_nop
-  libc_cv_asm_s390_arch13=no
+else case e in #(
+  e) libc_cv_asm_s390_arch13=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_arch13" >&5
 printf "%s\n" "$libc_cv_asm_s390_arch13" >&6; }
@@ -154,8 +161,8 @@ printf %s "checking for S390 z10 zarch instruction support as default... " >&6;
 if test ${libc_cv_asm_s390_min_z10_zarch+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -173,10 +180,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_asm_s390_min_z10_zarch=yes
-else $as_nop
-  libc_cv_asm_s390_min_z10_zarch=no
+else case e in #(
+  e) libc_cv_asm_s390_min_z10_zarch=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_min_z10_zarch" >&5
 printf "%s\n" "$libc_cv_asm_s390_min_z10_zarch" >&6; }
@@ -192,8 +201,8 @@ printf %s "checking for S390 z196 zarch instruction support as default... " >&6;
 if test ${libc_cv_asm_s390_min_z196_zarch+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -208,10 +217,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_asm_s390_min_z196_zarch=yes
-else $as_nop
-  libc_cv_asm_s390_min_z196_zarch=no
+else case e in #(
+  e) libc_cv_asm_s390_min_z196_zarch=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_min_z196_zarch" >&5
 printf "%s\n" "$libc_cv_asm_s390_min_z196_zarch" >&6; }
@@ -227,8 +238,8 @@ printf %s "checking for S390 z13 zarch instruction support as default... " >&6;
 if test ${libc_cv_asm_s390_min_z13_zarch+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -245,10 +256,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_asm_s390_min_z13_zarch=yes
-else $as_nop
-  libc_cv_asm_s390_min_z13_zarch=no
+else case e in #(
+  e) libc_cv_asm_s390_min_z13_zarch=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_min_z13_zarch" >&5
 printf "%s\n" "$libc_cv_asm_s390_min_z13_zarch" >&6; }
@@ -264,8 +277,8 @@ printf %s "checking for S390 arch13 zarch instruction support as default... " >&
 if test ${libc_cv_asm_s390_min_arch13_zarch+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -281,10 +294,12 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_asm_s390_min_arch13_zarch=yes
-else $as_nop
-  libc_cv_asm_s390_min_arch13_zarch=no
+else case e in #(
+  e) libc_cv_asm_s390_min_arch13_zarch=no ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_asm_s390_min_arch13_zarch" >&5
 printf "%s\n" "$libc_cv_asm_s390_min_arch13_zarch" >&6; }
@@ -301,8 +316,8 @@ printf %s "checking if $CC is sufficient to build libc on s390x... " >&6; }
 if test ${libc_cv_compiler_ok_on_s390x+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-
+else case e in #(
+  e)
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -321,10 +336,12 @@ _ACEOF
 if ac_fn_c_try_cpp "$LINENO"
 then :
   libc_cv_compiler_ok_on_s390x=yes
-else $as_nop
-  libc_cv_compiler_ok_on_s390x=no
+else case e in #(
+  e) libc_cv_compiler_ok_on_s390x=no ;;
+esac
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_compiler_ok_on_s390x" >&5
 printf "%s\n" "$libc_cv_compiler_ok_on_s390x" >&6; }
diff --git a/sysdeps/s390/dl-procinfo-s390.c b/sysdeps/s390/dl-procinfo-s390.c
index 2821e40cb1..652f6067a3 100644
--- a/sysdeps/s390/dl-procinfo-s390.c
+++ b/sysdeps/s390/dl-procinfo-s390.c
@@ -24,9 +24,3 @@ const char _dl_s390_cap_flags[_DL_HWCAP_COUNT][9] =
     "highgprs", "te", "vx", "vxd", "vxe", "gs", "vxe2", "vxp", "sort", "dflt",
     "vxp2", "nnpa", "pcimio", "sie"
   };
-
-const char _dl_s390_platforms[_DL_PLATFORMS_COUNT][7] =
-  {
-    "g5", "z900", "z990", "z9-109", "z10", "z196", "zEC12", "z13", "z14", "z15",
-    "z16"
-  };
diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h
index 38e77f7ad9..45dd11c189 100644
--- a/sysdeps/s390/dl-procinfo.h
+++ b/sysdeps/s390/dl-procinfo.h
@@ -23,15 +23,6 @@
 #define _DL_HWCAP_COUNT 23
 extern const char _dl_s390_cap_flags[_DL_HWCAP_COUNT][9] attribute_hidden;
 
-#define _DL_PLATFORMS_COUNT	11
-extern const char _dl_s390_platforms[_DL_PLATFORMS_COUNT][7] attribute_hidden;
-
-/* The kernel provides up to 32 capability bits with elf_hwcap.  */
-#define _DL_FIRST_PLATFORM	32
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM	(((1ULL << _DL_PLATFORMS_COUNT) - 1) \
-				 << _DL_FIRST_PLATFORM)
-
 /* Hardware capability bit numbers are derived directly from the
    facility indications as stored by the "store facility list" (STFL)
    instruction.
@@ -68,11 +59,6 @@ enum
   HWCAP_S390_SIE = 1 << 22,
 };
 
-#define HWCAP_IMPORTANT (HWCAP_S390_ZARCH | HWCAP_S390_LDISP \
-			 | HWCAP_S390_EIMM | HWCAP_S390_DFP  \
-			 | HWCAP_S390_VX | HWCAP_S390_VXE    \
-			 | HWCAP_S390_VXRS_EXT2)
-
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
@@ -83,19 +69,4 @@ _dl_hwcap_string (int idx)
   return _dl_s390_cap_flags[idx];
 };
 
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  int i;
-
-  if (str != NULL)
-    for (i = 0; i < _DL_PLATFORMS_COUNT; ++i)
-      {
-	if (strcmp (str, _dl_s390_platforms[i]) == 0)
-	  return _DL_FIRST_PLATFORM + i;
-      }
-  return -1;
-};
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
index e24adb94e8..4ffd344a4e 100644
--- a/sysdeps/s390/fpu/libm-test-ulps
+++ b/sysdeps/s390/fpu/libm-test-ulps
@@ -976,6 +976,26 @@ double: 2
 float: 1
 ldouble: 3
 
+Function: "exp10m1":
+double: 2
+float: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+ldouble: 3
+
 Function: "exp2":
 double: 1
 ldouble: 1
@@ -993,6 +1013,26 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 1
+float: 1
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+ldouble: 2
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1166,6 +1206,26 @@ double: 2
 float: 2
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1230,6 +1290,26 @@ ldouble: 2
 Function: "log_upward":
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 1
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 ldouble: 2
diff --git a/sysdeps/s390/s390-64/configure b/sysdeps/s390/s390-64/configure
index c8e25b242f..9ea6940c85 100644
--- a/sysdeps/s390/s390-64/configure
+++ b/sysdeps/s390/s390-64/configure
@@ -4,14 +4,14 @@
 # Minimal checking for static PIE support in ld.
 # Compare to ld testcase/bugzilla:
 # <binutils-source>/ld/testsuite/ld-elf/pr22263-1.rd
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for s390-specific static PIE requirements (runtime check)" >&5
-printf %s "checking for s390-specific static PIE requirements (runtime check)... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for s390-specific static PIE requirements" >&5
+printf %s "checking for s390-specific static PIE requirements... " >&6; }
 if { as_var=\
 libc_cv_s390x_staticpie_req_runtime; eval test \${$as_var+y}; }
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    cat > conftest1.c <<EOF
+else case e in #(
+  e)   cat > conftest1.c <<EOF
 __thread int * foo;
 
 void
@@ -62,13 +62,13 @@ EOF
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; } \
-     && { ac_try='! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF'
+     && { ac_try='! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF >&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; } \
-     && { ac_try='LC_ACLL=C $READELF -d conftest | grep JMPREL'
+     && { ac_try='LC_ALL=C $READELF -Wd conftest | grep JMPREL >&5'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -77,7 +77,8 @@ EOF
   then
     libc_cv_s390x_staticpie_req_runtime=yes
   fi
-  rm -rf conftest.*
+  rm -rf conftest.* ;;
+esac
 fi
 eval ac_res=\$\
 libc_cv_s390x_staticpie_req_runtime
diff --git a/sysdeps/s390/s390-64/configure.ac b/sysdeps/s390/s390-64/configure.ac
index fd729e1496..aaf71eabb1 100644
--- a/sysdeps/s390/s390-64/configure.ac
+++ b/sysdeps/s390/s390-64/configure.ac
@@ -4,7 +4,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Minimal checking for static PIE support in ld.
 # Compare to ld testcase/bugzilla:
 # <binutils-source>/ld/testsuite/ld-elf/pr22263-1.rd
-AC_CACHE_CHECK([for s390-specific static PIE requirements (runtime check)], \
+AC_CACHE_CHECK([for s390-specific static PIE requirements], \
 [libc_cv_s390x_staticpie_req_runtime], [dnl
   cat > conftest1.c <<EOF
 __thread int * foo;
@@ -42,8 +42,8 @@ EOF
   if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest1.c -o conftest1.o]) \
      && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest2.c -o conftest2.o]) \
      && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static-pie -nostartfiles -nostdlib -fPIE -o conftest conftest1.o conftest2.o]) \
-     && AC_TRY_COMMAND([! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF]) \
-     && AC_TRY_COMMAND([LC_ACLL=C $READELF -d conftest | grep JMPREL])
+     && AC_TRY_COMMAND([! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF] >&AS_MESSAGE_LOG_FD) \
+     && AC_TRY_COMMAND([LC_ALL=C $READELF -Wd conftest | grep JMPREL >&AS_MESSAGE_LOG_FD])
   then
     libc_cv_s390x_staticpie_req_runtime=yes
   fi
diff --git a/sysdeps/sh/libm-test-ulps b/sysdeps/sh/libm-test-ulps
index 9c297f4481..3c84259941 100644
--- a/sysdeps/sh/libm-test-ulps
+++ b/sysdeps/sh/libm-test-ulps
@@ -475,6 +475,14 @@ float: 1
 Function: "log2_towardzero":
 double: 2
 
+Function: "logp1":
+double: 1
+float: 1
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+
 Function: "pow":
 double: 1
 float: 1
diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h
index 61cd296de0..709178706c 100644
--- a/sysdeps/sparc/dl-procinfo.h
+++ b/sysdeps/sparc/dl-procinfo.h
@@ -52,14 +52,4 @@ _dl_hwcap_string (int idx)
   return GLRO(dl_sparc_cap_flags)[idx];
 };
 
-#include <bits/wordsize.h>
-#define HWCAP_IMPORTANT_V9	(__WORDSIZE == 64 ? 0 : HWCAP_SPARC_V9)
-#define HWCAP_IMPORTANT		(HWCAP_IMPORTANT_V9 | HWCAP_SPARC_ULTRA3 \
-				 | HWCAP_SPARC_BLKINIT | HWCAP_SPARC_N2)
-
-/* There're no platforms to filter out.  */
-#define _DL_HWCAP_PLATFORM 0
-
-#define _dl_string_platform(str) (-1)
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps
index 2d490e0713..23523f094f 100644
--- a/sysdeps/sparc/fpu/libm-test-ulps
+++ b/sysdeps/sparc/fpu/libm-test-ulps
@@ -976,6 +976,26 @@ double: 2
 float: 1
 ldouble: 3
 
+Function: "exp10m1":
+double: 2
+float: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+ldouble: 3
+
 Function: "exp2":
 double: 1
 float: 1
@@ -996,6 +1016,26 @@ double: 1
 float: 1
 ldouble: 2
 
+Function: "exp2m1":
+double: 1
+float: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+ldouble: 2
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1170,6 +1210,26 @@ double: 2
 float: 2
 ldouble: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+ldouble: 2
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1210,6 +1270,26 @@ double: 3
 float: 3
 ldouble: 1
 
+Function: "log2p1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "log2p1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "log2p1_towardzero":
+double: 2
+float: 2
+ldouble: 2
+
+Function: "log2p1_upward":
+double: 1
+float: 2
+ldouble: 2
+
 Function: "log_downward":
 float: 2
 ldouble: 1
@@ -1223,6 +1303,26 @@ double: 1
 float: 2
 ldouble: 1
 
+Function: "logp1":
+double: 1
+float: 1
+ldouble: 3
+
+Function: "logp1_downward":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+ldouble: 3
+
+Function: "logp1_upward":
+double: 2
+float: 2
+ldouble: 2
+
 Function: "pow":
 double: 1
 float: 3
diff --git a/sysdeps/sparc/sparc32/configure b/sysdeps/sparc/sparc32/configure
index b6603ba2f9..5d2f4864d2 100644
--- a/sysdeps/sparc/sparc32/configure
+++ b/sysdeps/sparc/sparc32/configure
@@ -4,14 +4,14 @@
 # Test if compiler targets at least sparcv8.
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -25,13 +25,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -40,14 +41,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -55,35 +56,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -97,13 +87,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -112,14 +103,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -127,32 +118,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for at least sparcv8 support" >&5
 printf %s "checking for at least sparcv8 support... " >&6; }
 if test ${libc_cv_sparcv8+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if defined (__sparc_v8__) || defined (__sparc_v9__)
                       yes
@@ -160,14 +152,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_sparcv8=yes
-else $as_nop
-  libc_cv_sparcv8=no
+else case e in #(
+  e) libc_cv_sparcv8=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_sparcv8" >&5
 printf "%s\n" "$libc_cv_sparcv8" >&6; }
@@ -183,8 +177,8 @@ printf %s "checking for external libatomic calls... " >&6; }
 if test ${libc_cv_cas_uses_libatomic+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.c <<EOF
+else case e in #(
+  e) cat > conftest.c <<EOF
 	       _Bool foo (int *ptr, int *expected, int desired)
 	       {
 		 return __atomic_compare_exchange_n (ptr, expected, desired, 0,
@@ -203,7 +197,8 @@ EOF
 		 fi
 	       fi
 	       rm -f conftest.c conftest.s
-
+	        ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cas_uses_libatomic" >&5
 printf "%s\n" "$libc_cv_cas_uses_libatomic" >&6; }
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h
index d855c66fe3..2c56d8a80e 100644
--- a/sysdeps/sparc/sparc32/dl-machine.h
+++ b/sysdeps/sparc/sparc32/dl-machine.h
@@ -39,13 +39,7 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr)
     return 1;
   else if (ehdr->e_machine == EM_SPARC32PLUS)
     {
-#if defined SHARED
-      uint64_t hwcap_mask = TUNABLE_GET (glibc, cpu, hwcap_mask, uint64_t,
-					 NULL);
-      return GLRO(dl_hwcap) & hwcap_mask & HWCAP_SPARC_V9;
-#else
       return GLRO(dl_hwcap) & HWCAP_SPARC_V9;
-#endif
     }
   else
     return 0;
diff --git a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
index 6a3fb78c47..b85d4ad8a3 100644
--- a/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h
@@ -27,9 +27,6 @@
 /* We cannot provide a general printing function.  */
 #define _dl_procinfo(type, word) -1
 
-/* No additional library search paths.  */
-#define HWCAP_IMPORTANT HWCAP_ATOMICS
-
 static inline const char *
 __attribute__ ((unused))
 _dl_hwcap_string (int idx)
@@ -37,9 +34,4 @@ _dl_hwcap_string (int idx)
   return (unsigned)idx < _DL_HWCAP_COUNT ? GLRO(dl_aarch64_cap_flags)[idx] : "";
 };
 
-/* There're no platforms to filter out.  */
-#define _DL_HWCAP_PLATFORM 0
-
-#define _dl_string_platform(str) (-1)
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index a4bb539670..024cb8d31c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1149,6 +1149,30 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1157,3 +1181,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 8ff65e3f7e..4b7f756811 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1308,6 +1308,30 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1316,3 +1340,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/arc/libm.abilist b/sysdeps/unix/sysv/linux/arc/libm.abilist
index af9df2673c..f6eb7a535b 100644
--- a/sysdeps/unix/sysv/linux/arc/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arc/libm.abilist
@@ -757,9 +757,33 @@ GLIBC_2.35 fminimumf64 F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 0e460259f3..78540e97d2 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
index 49cf0008b2..7d26216718 100644
--- a/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
+++ b/sysdeps/unix/sysv/linux/arm/dl-procinfo.h
@@ -30,9 +30,6 @@
 /* Low 7 bits are allocated in HWCAP2.  */
 #define _DL_HWCAP2_LAST		6
 
-/* The kernel provides platform data but it is not interesting.  */
-#define _DL_HWCAP_PLATFORM	0
-
 
 static inline const char *
 __attribute__ ((unused))
@@ -73,8 +70,4 @@ _dl_procinfo (unsigned int type, unsigned long int word)
   return 0;
 }
 
-#define HWCAP_IMPORTANT		(HWCAP_ARM_VFP | HWCAP_ARM_NEON)
-
-#define _dl_string_platform(str) (-1)
-
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 0e460259f3..78540e97d2 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/bits/mman-linux.h b/sysdeps/unix/sysv/linux/bits/mman-linux.h
index 5c3d43b0f2..522333c50a 100644
--- a/sysdeps/unix/sysv/linux/bits/mman-linux.h
+++ b/sysdeps/unix/sysv/linux/bits/mman-linux.h
@@ -54,10 +54,29 @@
 # define MAP_ANONYMOUS	0x20		/* Don't use a file.  */
 #endif
 #define MAP_ANON	MAP_ANONYMOUS
-/* When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size.  */
+
+/* When MAP_HUGETLB is set, bits [26:31] encode the log2 of the huge page size.
+   The following definitions are associated with this huge page size encoding.
+   It is responsibility of the application to know which sizes are supported on
+   the running system.  See mmap(2) man page for details.  */
+
 #define MAP_HUGE_SHIFT	26
 #define MAP_HUGE_MASK	0x3f
 
+#define MAP_HUGE_16KB	(14 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_64KB	(16 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_512KB	(19 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_1MB	(20 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_2MB	(21 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_8MB	(23 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_16MB	(24 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_32MB	(25 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_256MB	(28 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_512MB	(29 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_1GB	(30 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_2GB	(31 << MAP_HUGE_SHIFT)
+#define MAP_HUGE_16GB	(34U << MAP_HUGE_SHIFT)
+
 /* Flags to `msync'.  */
 #define MS_ASYNC	1		/* Sync memory asynchronously.  */
 #define MS_SYNC		4		/* Synchronous memory sync.  */
diff --git a/sysdeps/unix/sysv/linux/bits/shm.h b/sysdeps/unix/sysv/linux/bits/shm.h
index 95f7863913..76144f5ad4 100644
--- a/sysdeps/unix/sysv/linux/bits/shm.h
+++ b/sysdeps/unix/sysv/linux/bits/shm.h
@@ -58,6 +58,28 @@ typedef __syscall_ulong_t shmatt_t;
 # define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
 # define SHM_NORESERVE	010000	/* don't check for reservations */
 
+/* When SHM_HUGETLB is set, bits [26:31] encode the log2 of the huge page size.
+   The following definitions are associated with this huge page size encoding.
+   It is responsibility of the application to know which sizes are supported on
+   the running system.  See shmget(2) man page for details.  */
+
+#define SHM_HUGE_SHIFT	26
+#define SHM_HUGE_MASK	0x3f
+
+#define SHM_HUGE_16KB	(14 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_64KB	(16 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_512KB	(19 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_1MB	(20 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_2MB	(21 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_8MB	(23 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_16MB	(24 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_32MB	(25 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_256MB	(28 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_512MB	(29 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_1GB	(30 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_2GB	(31 << SHM_HUGE_SHIFT)
+#define SHM_HUGE_16GB	(34U << SHM_HUGE_SHIFT)
+
 struct	shminfo
   {
     __syscall_ulong_t shmmax;
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 70f7937333..4d642e953b 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -12,8 +12,8 @@ printf %s "checking installed Linux kernel header files... " >&6; }
 if test ${libc_cv_linux320+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <linux/version.h>
 #if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE <  (3 *65536+ 2 *256+ 0) /* 3.2.0 */
@@ -30,10 +30,12 @@ _ACEOF
 if ac_fn_c_try_cpp "$LINENO"
 then :
   libc_cv_linux320='3.2.0 or later'
-else $as_nop
-  libc_cv_linux320='missing or too old!'
+else case e in #(
+  e) libc_cv_linux320='missing or too old!' ;;
+esac
 fi
-rm -f conftest.err conftest.i conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_linux320" >&5
 printf "%s\n" "$libc_cv_linux320" >&6; }
@@ -91,8 +93,9 @@ _ACEOF
 if ac_fn_c_try_cpp "$LINENO"
 then :
   libc_minimum_kernel=ok
-else $as_nop
-  libc_minimum_kernel='too old!'
+else case e in #(
+  e) libc_minimum_kernel='too old!' ;;
+esac
 fi
 rm -f conftest.err conftest.i conftest.$ac_ext
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_minimum_kernel" >&5
diff --git a/sysdeps/unix/sysv/linux/csky/libm.abilist b/sysdeps/unix/sysv/linux/csky/libm.abilist
index 4c1216044d..7a68784a1d 100644
--- a/sysdeps/unix/sysv/linux/csky/libm.abilist
+++ b/sysdeps/unix/sysv/linux/csky/libm.abilist
@@ -823,9 +823,33 @@ GLIBC_2.35 fminimumf64 F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/dl-sysdep.c b/sysdeps/unix/sysv/linux/dl-sysdep.c
index e1b14e9eb3..a8ec2d7c18 100644
--- a/sysdeps/unix/sysv/linux/dl-sysdep.c
+++ b/sysdeps/unix/sysv/linux/dl-sysdep.c
@@ -40,6 +40,7 @@
 #include <sys/utsname.h>
 #include <tls.h>
 #include <unistd.h>
+#include <dl-symbol-redir-ifunc.h>
 
 #include <dl-machine.h>
 #include <dl-hwcap-check.h>
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 3ea5b611eb..d29139ebf1 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep.h b/sysdeps/unix/sysv/linux/hppa/sysdep.h
index ee82fbd364..af62f7501e 100644
--- a/sysdeps/unix/sysv/linux/hppa/sysdep.h
+++ b/sysdeps/unix/sysv/linux/hppa/sysdep.h
@@ -468,6 +468,18 @@ L(pre_end):					ASM_LINE_SEP	\
 #define CLOB_ARGS_1 CLOB_ARGS_2, "%r25"
 #define CLOB_ARGS_0 CLOB_ARGS_1, "%r26"
 
+#define VDSO_NAME	"LINUX_6.11"
+#define VDSO_HASH	182951793
+
+#ifdef __LP64__
+# define HAVE_CLOCK_GETTIME_VSYSCALL    "__vdso_clock_gettime"
+# define HAVE_GETTIMEOFDAY_VSYSCALL     "__vdso_gettimeofday"
+#else
+# define HAVE_CLOCK_GETTIME_VSYSCALL    "__vdso_clock_gettime"
+# define HAVE_CLOCK_GETTIME64_VSYSCALL  "__vdso_clock_gettime64"
+# define HAVE_GETTIMEOFDAY_VSYSCALL     "__vdso_gettimeofday"
+#endif /* __LP64__ */
+
 #endif	/* __ASSEMBLER__ */
 
 #endif /* _LINUX_HPPA_SYSDEP_H */
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index 696e52e65a..0797f3fb72 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1188,6 +1188,30 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1196,3 +1220,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/loongarch/configure b/sysdeps/unix/sysv/linux/loongarch/configure
index 0d1159e923..914943f914 100644
--- a/sysdeps/unix/sysv/linux/loongarch/configure
+++ b/sysdeps/unix/sysv/linux/loongarch/configure
@@ -6,14 +6,14 @@ arch_minimum_kernel=5.19.0
 libc_cv_loongarch_int_abi=no
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -27,13 +27,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -42,14 +43,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -57,35 +58,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -99,13 +89,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -114,14 +105,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -129,24 +120,25 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -154,7 +146,7 @@ __SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "4 8 8" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "4 8 8" >/dev/null 2>&1
 then :
   libc_cv_loongarch_int_abi=lp64
 fi
@@ -173,7 +165,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_loongarch_float_abi=d
 fi
@@ -187,7 +179,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_loongarch_float_abi=s
 fi
diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
index 1c6f02ac5a..16bde437e9 100644
--- a/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist
@@ -1028,6 +1028,30 @@ GLIBC_2.36 ynf32x F
 GLIBC_2.36 ynf64 F
 GLIBC_2.36 ynf64x F
 GLIBC_2.36 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1036,3 +1060,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 0e460259f3..78540e97d2 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.4 y1l F
 GLIBC_2.4 yn F
 GLIBC_2.4 ynf F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
index be8262bb48..6fd32e76e5 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist
@@ -884,9 +884,33 @@ GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
 GLIBC_2.35 hypot F
 GLIBC_2.35 hypotf F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index cc091b2d4e..d2c2cdbc6a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index cc091b2d4e..d2c2cdbc6a 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/mips/configure b/sysdeps/unix/sysv/linux/mips/configure
index a060901de4..6e3402c111 100644
--- a/sysdeps/unix/sysv/linux/mips/configure
+++ b/sysdeps/unix/sysv/linux/mips/configure
@@ -19,8 +19,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_abi=o32
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
       #if (_MIPS_SIM != _ABIN32)
@@ -37,8 +37,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_abi=n32
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
         #if (_MIPS_SIM != _ABI64)
@@ -56,9 +56,11 @@ if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_abi=n64
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
@@ -83,8 +85,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_float=soft
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
       #if !defined(__mips_hard_float)
@@ -102,7 +104,8 @@ if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_float=hard
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 
@@ -148,8 +151,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_o32_fp=32
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
           #if (__mips_fpr != 0) || !defined(_MIPS_SPFPSET) || (_MIPS_SPFPSET != 16)
@@ -166,8 +169,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_o32_fp=xx
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
             #if (__mips_fpr != 0)
@@ -184,8 +187,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_o32_fp=xxo
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
               #if (__mips_fpr != 64) || !defined(_MIPS_SPFPSET) || (_MIPS_SPFPSET != 16)
@@ -202,8 +205,8 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_o32_fp=64a
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
                 #if (__mips_fpr != 64)
@@ -221,13 +224,17 @@ if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_o32_fp=64
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
@@ -241,8 +248,9 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
   test $ac_status = 0; }; }
 then :
   libc_cv_mips_fp64=yes
-else $as_nop
-  libc_cv_mips_fp64=no
+else case e in #(
+  e) libc_cv_mips_fp64=no ;;
+esac
 fi
   if { ac_try='${CC-cc} -Werror -modd-spreg -xc /dev/null -S -o /dev/null'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
@@ -252,8 +260,9 @@ fi
   test $ac_status = 0; }; }
 then :
   libc_cv_mips_modd_spreg=yes
-else $as_nop
-  libc_cv_mips_modd_spreg=no
+else case e in #(
+  e) libc_cv_mips_modd_spreg=no ;;
+esac
 fi
 fi
 config_vars="$config_vars
@@ -281,22 +290,23 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_mips_mode_switch=yes
-else $as_nop
-  libc_mips_mode_switch=no
+else case e in #(
+  e) libc_mips_mode_switch=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
 config_vars="$config_vars
 mips-mode-switch = ${libc_mips_mode_switch}"
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -310,13 +320,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -325,14 +336,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -340,35 +351,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -382,13 +382,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -397,14 +398,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -412,32 +413,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is using the 2008 NaN encoding" >&5
 printf %s "checking whether the compiler is using the 2008 NaN encoding... " >&6; }
 if test ${libc_cv_mips_nan2008+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 dnl
 #ifdef __mips_nan2008
@@ -445,14 +447,16 @@ yes
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_mips_nan2008=yes
-else $as_nop
-  libc_cv_mips_nan2008=no
+else case e in #(
+  e) libc_cv_mips_nan2008=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mips_nan2008" >&5
 printf "%s\n" "$libc_cv_mips_nan2008" >&6; }
@@ -515,8 +519,8 @@ printf %s "checking whether the compiler must use executable stack... " >&6; }
 if test ${libc_cv_mips_force_execstack+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  libc_cv_mips_force_execstack=no
+else case e in #(
+  e) libc_cv_mips_force_execstack=no
   if test $libc_mips_float = hard; then
     if test -n "$minimum_kernel"; then
 
@@ -528,7 +532,8 @@ else $as_nop
     else
       libc_cv_mips_force_execstack=yes
     fi
-  fi
+  fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mips_force_execstack" >&5
 printf "%s\n" "$libc_cv_mips_force_execstack" >&6; }
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 4d442a989d..a7c8ca0aec 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index ae7b4a7558..8e36e16069 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1149,6 +1149,30 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1157,3 +1181,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/nios2/libm.abilist b/sysdeps/unix/sysv/linux/nios2/libm.abilist
index 9ed3fbdee4..c0df77f57d 100644
--- a/sysdeps/unix/sysv/linux/nios2/libm.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/or1k/libm.abilist b/sysdeps/unix/sysv/linux/or1k/libm.abilist
index 69655f7d23..4db8702dbc 100644
--- a/sysdeps/unix/sysv/linux/or1k/libm.abilist
+++ b/sysdeps/unix/sysv/linux/or1k/libm.abilist
@@ -757,9 +757,33 @@ GLIBC_2.35 ynf32 F
 GLIBC_2.35 ynf32x F
 GLIBC_2.35 ynf64 F
 GLIBC_2.35 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/configure b/sysdeps/unix/sysv/linux/powerpc/configure
index d6d091a4c2..61ae675c1a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/configure
+++ b/sysdeps/unix/sysv/linux/powerpc/configure
@@ -7,8 +7,8 @@ printf %s "checking whether $CC $CFLAGS -mlong-double-128 uses IBM extended form
 if test ${libc_cv_mlong_double_128ibm+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  save_CFLAGS="$CFLAGS"
+else case e in #(
+  e) save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -mlong-double-128"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -28,11 +28,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mlong_double_128ibm=yes
-else $as_nop
-  libc_cv_mlong_double_128ibm=no
+else case e in #(
+  e) libc_cv_mlong_double_128ibm=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
+CFLAGS="$save_CFLAGS" ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mlong_double_128ibm" >&5
 printf "%s\n" "$libc_cv_mlong_double_128ibm" >&6; }
@@ -43,8 +45,8 @@ printf %s "checking whether $CC $CFLAGS supports -mabi=ibmlongdouble... " >&6; }
 if test ${libc_cv_mabi_ibmlongdouble+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-    save_CFLAGS="$CFLAGS"
+else case e in #(
+  e)   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS -mlong-double-128 -mabi=ibmlongdouble"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -64,11 +66,13 @@ _ACEOF
 if ac_fn_c_try_compile "$LINENO"
 then :
   libc_cv_mabi_ibmlongdouble=yes
-else $as_nop
-  libc_cv_mabi_ibmlongdouble=no
+else case e in #(
+  e) libc_cv_mabi_ibmlongdouble=no ;;
+esac
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
-  CFLAGS="$save_CFLAGS"
+  CFLAGS="$save_CFLAGS" ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mabi_ibmlongdouble" >&5
 printf "%s\n" "$libc_cv_mabi_ibmlongdouble" >&6; }
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index 564eb87d4b..cbadcefc59 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -995,9 +995,33 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index a57eedb779..d0078a41eb 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -994,9 +994,33 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 7564069a37..86fdb9f443 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -988,9 +988,33 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
index cf1b70c745..5dd70689fc 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure
@@ -17,14 +17,14 @@ esac
 # Define default-abi according to compiler flags.
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -38,13 +38,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -53,14 +54,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -68,35 +69,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -110,13 +100,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -125,14 +116,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -140,32 +131,33 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler is using the PowerPC64 ELFv2 ABI" >&5
 printf %s "checking whether the compiler is using the PowerPC64 ELFv2 ABI... " >&6; }
 if test ${libc_cv_ppc64_elfv2_abi+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if _CALL_ELF == 2
                       yes
@@ -173,14 +165,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_ppc64_elfv2_abi=yes
-else $as_nop
-  libc_cv_ppc64_elfv2_abi=no
+else case e in #(
+  e) libc_cv_ppc64_elfv2_abi=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_elfv2_abi" >&5
 printf "%s\n" "$libc_cv_ppc64_elfv2_abi" >&6; }
@@ -199,8 +193,8 @@ printf %s "checking whether the compiler defines _CALL_ELF... " >&6; }
 if test ${libc_cv_ppc64_def_call_elf+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifdef _CALL_ELF
                          yes
@@ -208,14 +202,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_ppc64_def_call_elf=yes
-else $as_nop
-  libc_cv_ppc64_def_call_elf=no
+else case e in #(
+  e) libc_cv_ppc64_def_call_elf=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_def_call_elf" >&5
 printf "%s\n" "$libc_cv_ppc64_def_call_elf" >&6; }
@@ -229,8 +225,8 @@ printf %s "checking the machine type to set minimum kernel version... " >&6; }
 if test ${libc_cv_ppc64_le+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
                       yes
@@ -238,14 +234,16 @@ else $as_nop
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   arch_minimum_kernel=3.10.0
-else $as_nop
-  libc_cv_ppc64_le=no
+else case e in #(
+  e) libc_cv_ppc64_le=no ;;
+esac
 fi
 rm -rf conftest*
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc64_le" >&5
 printf "%s\n" "$libc_cv_ppc64_le" >&6; }
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index b02a7115af..34568bd9dd 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1321,7 +1321,35 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 __exp10m1ieee128 F
+GLIBC_2.40 __exp2m1ieee128 F
+GLIBC_2.40 __log10p1ieee128 F
 GLIBC_2.40 __log2p1ieee128 F
+GLIBC_2.40 __logp1ieee128 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1330,3 +1358,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/riscv/atomic-machine.h b/sysdeps/unix/sysv/linux/riscv/atomic-machine.h
index c1c9d949a0..90283d9746 100644
--- a/sysdeps/unix/sysv/linux/riscv/atomic-machine.h
+++ b/sysdeps/unix/sysv/linux/riscv/atomic-machine.h
@@ -178,4 +178,7 @@
 # error "ISAs that do not subsume the A extension are not supported"
 #endif /* !__riscv_atomic */
 
+/* Execute a PAUSE hint when spinning.  */
+#define atomic_spin_nop() __asm(".insn i 0x0f, 0, x0, x0, 0x010")
+
 #endif /* bits/atomic.h */
diff --git a/sysdeps/unix/sysv/linux/riscv/configure b/sysdeps/unix/sysv/linux/riscv/configure
index 79bf5efa25..08aed0d805 100755
--- a/sysdeps/unix/sysv/linux/riscv/configure
+++ b/sysdeps/unix/sysv/linux/riscv/configure
@@ -6,14 +6,14 @@ arch_minimum_kernel=4.15.0
 libc_cv_riscv_int_abi=no
 
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+printf %s "checking for egrep -e... " >&6; }
+if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -27,13 +27,14 @@ do
     for ac_prog in grep ggrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -42,14 +43,14 @@ case `"$ac_path_GREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -57,35 +58,24 @@ case `"$ac_path_GREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_GREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
+    :
   fi
 else
-  ac_cv_path_GREP=$GREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
 
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
+    if test "$ac_cv_path_EGREP_TRADITIONAL"
 then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
+  ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E"
+else case e in #(
+  e) if test -z "$EGREP_TRADITIONAL"; then
+  ac_path_EGREP_TRADITIONAL_found=false
   # Loop through the user's path and test for each of PROGNAME-LIST
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
@@ -99,13 +89,14 @@ do
     for ac_prog in egrep
    do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
+      ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue
+# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found.
+  # Check for GNU $ac_path_EGREP_TRADITIONAL
+case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #(
 *GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+  ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;;
+#(
 *)
   ac_count=0
   printf %s 0123456789 >"conftest.in"
@@ -114,14 +105,14 @@ case `"$ac_path_EGREP" --version 2>&1` in
     cat "conftest.in" "conftest.in" >"conftest.tmp"
     mv "conftest.tmp" "conftest.in"
     cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl"
+    "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
     diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
     as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+    if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then
       # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+      ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL"
+      ac_path_EGREP_TRADITIONAL_max=$ac_count
     fi
     # 10*(2^10) chars as input seems more than enough
     test $ac_count -gt 10 && break
@@ -129,24 +120,25 @@ case `"$ac_path_EGREP" --version 2>&1` in
   rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
 esac
 
-      $ac_path_EGREP_found && break 3
+      $ac_path_EGREP_TRADITIONAL_found && break 3
     done
   done
   done
 IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
+  if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then
     as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
 else
-  ac_cv_path_EGREP=$EGREP
+  ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL
 fi
-
-   fi
+ ;;
+esac
+fi ;;
+esac
 fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
+printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
+ EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -154,7 +146,7 @@ __SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "4 8 8" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "4 8 8" >/dev/null 2>&1
 then :
   libc_cv_riscv_int_abi=lp64
 fi
@@ -166,7 +158,7 @@ __SIZEOF_INT__ __SIZEOF_LONG__ __SIZEOF_POINTER__
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "4 4 4" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "4 4 4" >/dev/null 2>&1
 then :
   libc_cv_riscv_int_abi=ilp32
 fi
@@ -189,7 +181,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_riscv_float_abi=d
 fi
@@ -203,7 +195,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "yes" >/dev/null 2>&1
+  $EGREP_TRADITIONAL "yes" >/dev/null 2>&1
 then :
   libc_cv_riscv_float_abi=
 fi
diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
index 7bf0bd7c7a..248ca383b4 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist
@@ -1028,6 +1028,30 @@ GLIBC_2.35 fminimumf64x F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1036,3 +1060,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
index c22d9bb7c6..c8f976c077 100644
--- a/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist
@@ -1125,6 +1125,30 @@ GLIBC_2.35 fminimumf64x F
 GLIBC_2.35 fminimuml F
 GLIBC_2.35 fsqrt F
 GLIBC_2.35 fsqrtl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1133,3 +1157,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 2fb712ec71..81f186f383 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1252,6 +1252,30 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1260,3 +1284,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 40489589a7..ee54f8d4a4 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1252,6 +1252,30 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1260,3 +1284,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index a5363e90d6..b21a3ba387 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index a5363e90d6..b21a3ba387 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -848,9 +848,33 @@ GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
 GLIBC_2.4 exp2l F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f32 F
 GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index 9bda9bdeb5..15c958e345 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1259,6 +1259,30 @@ GLIBC_2.4 truncl F
 GLIBC_2.4 y0l F
 GLIBC_2.4 y1l F
 GLIBC_2.4 ynl F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1267,3 +1291,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 61d2aa05a9..bf608f5d62 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1149,6 +1149,30 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1157,3 +1181,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c
index e8ed2babb9..f57e92815e 100644
--- a/sysdeps/unix/sysv/linux/spawni.c
+++ b/sysdeps/unix/sysv/linux/spawni.c
@@ -449,13 +449,22 @@ __spawnix (int *pid, const char *file,
 	 caller to actually collect it.  */
       ec = args.err;
       if (ec > 0)
-	/* There still an unlikely case where the child is cancelled after
-	   setting args.err, due to a positive error value.  Also there is
-	   possible pid reuse race (where the kernel allocated the same pid
-	   to an unrelated process).  Unfortunately due synchronization
-	   issues where the kernel might not have the process collected
-	   the waitpid below can not use WNOHANG.  */
-	__waitpid (new_pid, NULL, 0);
+	{
+	  /* There still an unlikely case where the child is cancelled after
+	     setting args.err, due to a positive error value.  Also there is
+	     possible pid reuse race (where the kernel allocated the same pid
+	     to an unrelated process).  Unfortunately due synchronization
+	     issues where the kernel might not have the process collected
+	     the waitpid below can not use WNOHANG.  */
+	  __waitid (use_pidfd ? P_PIDFD : P_PID,
+		    use_pidfd ? args.pidfd : new_pid,
+		    NULL,
+		    WEXITED);
+	  /* For pidfd we need to also close the file descriptor for the case
+	     where execve fails.  */
+	  if (use_pidfd)
+	    __close_nocancel_nostatus (args.pidfd);
+	}
     }
   else
     ec = errno;
diff --git a/sysdeps/unix/sysv/linux/tst-mman-consts.py b/sysdeps/unix/sysv/linux/tst-mman-consts.py
index 4a8f4e8919..441261c945 100644
--- a/sysdeps/unix/sysv/linux/tst-mman-consts.py
+++ b/sysdeps/unix/sysv/linux/tst-mman-consts.py
@@ -41,8 +41,7 @@ def main():
         '#include <linux/mman.h>\n',
         args.cc,
         'MAP_.*',
-        # A series of MAP_HUGE_<size> macros are defined by the kernel
-        # but not by glibc.  MAP_UNINITIALIZED is kernel-only.
+        # MAP_UNINITIALIZED is defined by the kernel but not by glibc.
         # MAP_FAILED is not a MAP_* flag and is glibc-only, as is the
         # MAP_ANON alias for MAP_ANONYMOUS.  MAP_RENAME, MAP_AUTOGROW,
         # MAP_LOCAL and MAP_AUTORSRV are in the kernel header for
@@ -50,9 +49,8 @@ def main():
         # in the kernel header, but does not use it.  The kernel
         # header for HPPA removed a define of MAP_VARIABLE to 0 in
         # Linux 6.2.
-        'MAP_HUGE_[0-9].*|MAP_UNINITIALIZED|MAP_FAILED|MAP_ANON'
-        '|MAP_RENAME|MAP_AUTOGROW|MAP_LOCAL|MAP_AUTORSRV|MAP_INHERIT'
-        '|MAP_VARIABLE',
+        'MAP_UNINITIALIZED|MAP_FAILED|MAP_ANON|MAP_RENAME|MAP_AUTOGROW'
+        '|MAP_LOCAL|MAP_AUTORSRV|MAP_INHERIT|MAP_VARIABLE',
         linux_version_glibc > linux_version_headers,
         linux_version_headers > linux_version_glibc))
 
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index bbf646fe7f..0ba4ef54c4 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1182,6 +1182,30 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1190,3 +1214,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 7c7b884dde..405711559a 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1182,6 +1182,30 @@ GLIBC_2.35 hypotf F
 GLIBC_2.38 fmod F
 GLIBC_2.38 fmodf F
 GLIBC_2.39 exp10 F
+GLIBC_2.40 exp10m1 F
+GLIBC_2.40 exp10m1f F
+GLIBC_2.40 exp10m1f128 F
+GLIBC_2.40 exp10m1f32 F
+GLIBC_2.40 exp10m1f32x F
+GLIBC_2.40 exp10m1f64 F
+GLIBC_2.40 exp10m1f64x F
+GLIBC_2.40 exp10m1l F
+GLIBC_2.40 exp2m1 F
+GLIBC_2.40 exp2m1f F
+GLIBC_2.40 exp2m1f128 F
+GLIBC_2.40 exp2m1f32 F
+GLIBC_2.40 exp2m1f32x F
+GLIBC_2.40 exp2m1f64 F
+GLIBC_2.40 exp2m1f64x F
+GLIBC_2.40 exp2m1l F
+GLIBC_2.40 log10p1 F
+GLIBC_2.40 log10p1f F
+GLIBC_2.40 log10p1f128 F
+GLIBC_2.40 log10p1f32 F
+GLIBC_2.40 log10p1f32x F
+GLIBC_2.40 log10p1f64 F
+GLIBC_2.40 log10p1f64x F
+GLIBC_2.40 log10p1l F
 GLIBC_2.40 log2p1 F
 GLIBC_2.40 log2p1f F
 GLIBC_2.40 log2p1f128 F
@@ -1190,3 +1214,11 @@ GLIBC_2.40 log2p1f32x F
 GLIBC_2.40 log2p1f64 F
 GLIBC_2.40 log2p1f64x F
 GLIBC_2.40 log2p1l F
+GLIBC_2.40 logp1 F
+GLIBC_2.40 logp1f F
+GLIBC_2.40 logp1f128 F
+GLIBC_2.40 logp1f32 F
+GLIBC_2.40 logp1f32x F
+GLIBC_2.40 logp1f64 F
+GLIBC_2.40 logp1f64x F
+GLIBC_2.40 logp1l F
diff --git a/sysdeps/x86/configure b/sysdeps/x86/configure
index 04c6ba3e6c..a6d37778d1 100644
--- a/sysdeps/x86/configure
+++ b/sysdeps/x86/configure
@@ -7,8 +7,8 @@ printf %s "checking for linker x86 ISA level support... " >&6; }
 if test ${libc_cv_include_x86_isa_level+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest1.S <<EOF
+else case e in #(
+  e) cat > conftest1.S <<EOF
 #ifdef __LP64__
 # define P2ALIGN 3
 #else
@@ -70,7 +70,8 @@ if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -nostartfiles -nostdlib -r -o conftest c
     libc_cv_include_x86_isa_level=yes
   fi
 fi
-rm -f conftest*
+rm -f conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_include_x86_isa_level" >&5
 printf "%s\n" "$libc_cv_include_x86_isa_level" >&6; }
@@ -82,8 +83,8 @@ printf %s "checking for LAHF/SAHF instruction support... " >&6; }
 if test ${libc_cv_have_x86_lahf_sahf+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-      libc_cv_have_x86_lahf_sahf=no
+else case e in #(
+  e)     libc_cv_have_x86_lahf_sahf=no
     if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fverbose-asm -S -o - -x c /dev/null'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
@@ -91,7 +92,8 @@ else $as_nop
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; } | grep -qE '(-msahf\b|-march=x86-64-v)'; then
       libc_cv_have_x86_lahf_sahf=yes
-    fi
+    fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_x86_lahf_sahf" >&5
 printf "%s\n" "$libc_cv_have_x86_lahf_sahf" >&6; }
@@ -105,8 +107,8 @@ printf %s "checking for MOVBE instruction support... " >&6; }
 if test ${libc_cv_have_x86_movbe+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-      libc_cv_have_x86_movbe=no
+else case e in #(
+  e)     libc_cv_have_x86_movbe=no
     if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -fverbose-asm -S -o - -x c /dev/null'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
@@ -114,7 +116,8 @@ else $as_nop
   printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; } | grep -qE '(-mmovbe\b|-march=x86-64-v([3-9]|[1-9][0-9]))'; then
       libc_cv_have_x86_movbe=yes
-    fi
+    fi ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_x86_movbe" >&5
 printf "%s\n" "$libc_cv_have_x86_movbe" >&6; }
@@ -130,8 +133,8 @@ printf %s "checking for ISA level support... " >&6; }
 if test ${libc_cv_have_x86_isa_level+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.c <<EOF
+else case e in #(
+  e) cat > conftest.c <<EOF
 #include <sysdeps/x86/isa-level.h>
 #if MINIMUM_X86_ISA_LEVEL >= 4
 libc_cv_have_x86_isa_level=4
@@ -148,7 +151,8 @@ libc_cv_have_x86_isa_level=0
 #endif
 EOF
 		 eval `${CC-cc} $CFLAGS $CPPFLAGS $ISAFLAG -I$srcdir -E conftest.c | grep libc_cv_have_x86_isa_level`
-		 rm -rf conftest*
+		 rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_have_x86_isa_level" >&5
 printf "%s\n" "$libc_cv_have_x86_isa_level" >&6; }
diff --git a/sysdeps/x86/dl-hwcap.h b/sysdeps/x86/dl-hwcap.h
index 21dd24d5d2..325f1c467c 100644
--- a/sysdeps/x86/dl-hwcap.h
+++ b/sysdeps/x86/dl-hwcap.h
@@ -18,31 +18,6 @@
 #ifndef _DL_HWCAP_H
 #define _DL_HWCAP_H
 
-#if IS_IN (ldconfig)
-/* Since ldconfig processes both i386 and x86-64 libraries, it needs
-   to cover all platforms and hardware capabilities.  */
-# define HWCAP_PLATFORMS_START	0
-# define HWCAP_PLATFORMS_COUNT	4
-# define HWCAP_START		0
-# define HWCAP_COUNT		3
-# define HWCAP_IMPORTANT \
-  (HWCAP_X86_SSE2 | HWCAP_X86_64 | HWCAP_X86_AVX512_1)
-#elif defined __x86_64__
-/* For 64 bit, only cover x86-64 platforms and capabilities.  */
-# define HWCAP_PLATFORMS_START	2
-# define HWCAP_PLATFORMS_COUNT	4
-# define HWCAP_START		1
-# define HWCAP_COUNT		3
-# define HWCAP_IMPORTANT	(HWCAP_X86_64 | HWCAP_X86_AVX512_1)
-#else
-/* For 32 bit, only cover i586, i686 and SSE2.  */
-# define HWCAP_PLATFORMS_START	0
-# define HWCAP_PLATFORMS_COUNT	2
-# define HWCAP_START		0
-# define HWCAP_COUNT		1
-# define HWCAP_IMPORTANT	(HWCAP_X86_SSE2)
-#endif
-
 enum
 {
   HWCAP_X86_SSE2		= 1 << 0,
diff --git a/sysdeps/x86/dl-procinfo.c b/sysdeps/x86/dl-procinfo.c
index 5920d4b320..b791fd3e92 100644
--- a/sysdeps/x86/dl-procinfo.c
+++ b/sysdeps/x86/dl-procinfo.c
@@ -16,9 +16,8 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-/* This information must be kept in sync with the _DL_HWCAP_COUNT,
-   HWCAP_PLATFORMS_START and HWCAP_PLATFORMS_COUNT definitions in
-   dl-hwcap.h.
+/* This information must be kept in sync with the _DL_HWCAP_COUNT
+   definition in dl-hwcap.h.
 
    If anything should be added here check whether the size of each string
    is still ok with the given array size.
@@ -71,22 +70,6 @@ PROCINFO_CLASS const char _dl_x86_hwcap_flags[3][9]
 ,
 #endif
 
-#if !defined PROCINFO_DECL && defined SHARED
-  ._dl_x86_platforms
-#else
-PROCINFO_CLASS const char _dl_x86_platforms[4][9]
-#endif
-#ifndef PROCINFO_DECL
-= {
-    "i586", "i686", "haswell", "xeon_phi"
-  }
-#endif
-#if !defined SHARED || defined PROCINFO_DECL
-;
-#else
-,
-#endif
-
 #if defined SHARED && !IS_IN (ldconfig)
 # if !defined PROCINFO_DECL
   ._dl_x86_tlsdesc_dynamic
diff --git a/sysdeps/x86/dl-procinfo.h b/sysdeps/x86/dl-procinfo.h
index 3902925be4..ea0f33bbad 100644
--- a/sysdeps/x86/dl-procinfo.h
+++ b/sysdeps/x86/dl-procinfo.h
@@ -22,27 +22,5 @@
 #include <dl-hwcap.h>
 
 #define _DL_HWCAP_COUNT		HWCAP_COUNT
-#define _DL_PLATFORMS_COUNT	HWCAP_PLATFORMS_COUNT
-
-/* Start at 48 to reserve spaces for hardware capabilities.  */
-#define _DL_FIRST_PLATFORM	48
-/* Mask to filter out platforms.  */
-#define _DL_HWCAP_PLATFORM	(((1ULL << _DL_PLATFORMS_COUNT) - 1) \
-				 << _DL_FIRST_PLATFORM)
-
-static inline int
-__attribute__ ((unused, always_inline))
-_dl_string_platform (const char *str)
-{
-  int i;
-
-  if (str != NULL)
-    for (i = HWCAP_PLATFORMS_START; i < HWCAP_PLATFORMS_COUNT; ++i)
-      {
-	if (strcmp (str, GLRO(dl_x86_platforms)[i]) == 0)
-	  return _DL_FIRST_PLATFORM + i;
-      }
-  return -1;
-};
 
 #endif /* dl-procinfo.h */
diff --git a/sysdeps/x86_64/configure b/sysdeps/x86_64/configure
index 07bdd40a37..231e6ff128 100755
--- a/sysdeps/x86_64/configure
+++ b/sysdeps/x86_64/configure
@@ -6,8 +6,8 @@ printf %s "checking -mprefer-vector-width=128... " >&6; }
 if test ${libc_cv_cc_mprefer_vector_width+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  if { ac_try='${CC-cc} -mprefer-vector-width=128 -xc /dev/null -S -o /dev/null'
+else case e in #(
+  e) if { ac_try='${CC-cc} -mprefer-vector-width=128 -xc /dev/null -S -o /dev/null'
   { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
   (eval $ac_try) 2>&5
   ac_status=$?
@@ -15,10 +15,12 @@ else $as_nop
   test $ac_status = 0; }; }
 then :
   libc_cv_cc_mprefer_vector_width=yes
-else $as_nop
-  libc_cv_cc_mprefer_vector_width=no
+else case e in #(
+  e) libc_cv_cc_mprefer_vector_width=no ;;
+esac
 fi
-
+ ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_mprefer_vector_width" >&5
 printf "%s\n" "$libc_cv_cc_mprefer_vector_width" >&6; }
@@ -71,8 +73,8 @@ printf %s "checking whether CET can be enabled... " >&6; }
 if test ${libc_cv_x86_cet_available+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.c <<EOF
+else case e in #(
+  e) cat > conftest.c <<EOF
 #if !defined __CET__ || __CET__ != 3
 # error CET isn't available.
 #endif
@@ -87,7 +89,8 @@ EOF
 		 else
 		   libc_cv_x86_cet_available=no
 		 fi
-		 rm -rf conftest*
+		 rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_cet_available" >&5
 printf "%s\n" "$libc_cv_x86_cet_available" >&6; }
@@ -102,8 +105,8 @@ printf %s "checking whether assembler supports CET... " >&6; }
 if test ${libc_cv_x86_cet_as+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.s <<EOF
+else case e in #(
+  e) cat > conftest.s <<EOF
 	incsspd %ecx
 EOF
 		 if { ac_try='${CC-cc} -c $CFLAGS conftest.s -o conftest.o 1>&5'
@@ -116,7 +119,8 @@ EOF
 		 else
 		   libc_cv_x86_cet_as=no
 		 fi
-		 rm -rf conftest*
+		 rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_cet_as" >&5
 printf "%s\n" "$libc_cv_x86_cet_as" >&6; }
@@ -140,8 +144,8 @@ printf %s "checking whether -mamx-tile works properly... " >&6; }
 if test ${libc_cv_x86_have_amx_tile+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.c <<EOF
+else case e in #(
+  e) cat > conftest.c <<EOF
 #include <x86intrin.h>
 EOF
 	       libc_cv_x86_have_amx_tile=no
@@ -155,7 +159,8 @@ EOF
 		   libc_cv_x86_have_amx_tile=yes
 	         fi
 	       fi
-	       rm -rf conftest*
+	       rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_have_amx_tile" >&5
 printf "%s\n" "$libc_cv_x86_have_amx_tile" >&6; }
@@ -168,8 +173,8 @@ printf %s "checking whether -mapxf is enabled... " >&6; }
 if test ${libc_cv_x86_have_apx+y}
 then :
   printf %s "(cached) " >&6
-else $as_nop
-  cat > conftest.c <<EOF
+else case e in #(
+  e) cat > conftest.c <<EOF
 #ifndef __APX_F__
 # error APX isn't enabled
 #endif
@@ -183,7 +188,8 @@ EOF
   test $ac_status = 0; }; }; then
 		   libc_cv_x86_have_apx=yes
 	       fi
-	       rm -rf conftest*
+	       rm -rf conftest* ;;
+esac
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_have_apx" >&5
 printf "%s\n" "$libc_cv_x86_have_apx" >&6; }
diff --git a/sysdeps/x86_64/dl-procruntime.c b/sysdeps/x86_64/dl-procruntime.c
index 7078581778..0859438ed0 100644
--- a/sysdeps/x86_64/dl-procruntime.c
+++ b/sysdeps/x86_64/dl-procruntime.c
@@ -16,9 +16,8 @@
    License along with the GNU C Library; if not, see
    <https://www.gnu.org/licenses/>.  */
 
-/* This information must be kept in sync with the _DL_HWCAP_COUNT,
-   HWCAP_PLATFORMS_START and HWCAP_PLATFORMS_COUNT definitions in
-   dl-hwcap.h.
+/* This information must be kept in sync with the _DL_HWCAP_COUNT
+   definition in dl-hwcap.h.
 
    If anything should be added here check whether the size of each string
    is still ok with the given array size.
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 893c22b19b..3592dfae1d 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -1429,6 +1429,30 @@ float: 1
 Function: "exp10_vlen8_avx2":
 float: 1
 
+Function: "exp10m1":
+double: 2
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp10m1_downward":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_towardzero":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "exp10m1_upward":
+double: 3
+float: 1
+float128: 3
+ldouble: 2
+
 Function: "exp2":
 double: 1
 float: 1
@@ -1473,6 +1497,30 @@ float: 1
 Function: "exp2_vlen8_avx2":
 float: 1
 
+Function: "exp2m1":
+double: 1
+float: 1
+float128: 1
+ldouble: 1
+
+Function: "exp2m1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_towardzero":
+double: 2
+float: 1
+float128: 2
+ldouble: 3
+
+Function: "exp2m1_upward":
+double: 1
+float: 1
+float128: 2
+ldouble: 3
+
 Function: "exp_downward":
 double: 1
 float: 1
@@ -1759,6 +1807,30 @@ float: 1
 Function: "log10_vlen8_avx2":
 float: 1
 
+Function: "log10p1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "log10p1_downward":
+double: 2
+float: 1
+float128: 2
+ldouble: 4
+
+Function: "log10p1_towardzero":
+double: 2
+float: 2
+float128: 2
+ldouble: 4
+
+Function: "log10p1_upward":
+double: 2
+float: 1
+float128: 3
+ldouble: 3
+
 Function: "log1p":
 double: 1
 float: 1
@@ -1907,6 +1979,30 @@ float: 3
 Function: "log_vlen8_avx2":
 float: 3
 
+Function: "logp1":
+double: 1
+float: 1
+float128: 3
+ldouble: 2
+
+Function: "logp1_downward":
+double: 2
+float: 2
+float128: 3
+ldouble: 4
+
+Function: "logp1_towardzero":
+double: 2
+float: 2
+float128: 3
+ldouble: 4
+
+Function: "logp1_upward":
+double: 2
+float: 2
+float128: 2
+ldouble: 3
+
 Function: "pow":
 double: 1
 float: 1