diff --git a/math/Versions b/math/Versions
index e619f950f7..565be955b0 100644
--- a/math/Versions
+++ b/math/Versions
@@ -676,5 +676,6 @@ libm {
     log10f;
     lgammaf; lgammaf_r;
     acosf;
+    asinf;
   }
 }
diff --git a/math/w_asinf.c b/math/w_asinf.c
new file mode 100644
index 0000000000..b91cc49446
--- /dev/null
+++ b/math/w_asinf.c
@@ -0,0 +1,8 @@
+#include <math-type-macros-float.h>
+#undef __USE_WRAPPER_TEMPLATE
+#define __USE_WRAPPER_TEMPLATE 1
+#undef declare_mgen_alias
+#define declare_mgen_alias(a, b)
+#include <w_asin_template.c>
+versioned_symbol (libm, __asinf, asinf, GLIBC_2_42);
+libm_alias_float_other (__asinf, asinf)
diff --git a/math/w_asinf_compat.c b/math/w_asinf_compat.c
index e4927426f7..9f492f7504 100644
--- a/math/w_asinf_compat.c
+++ b/math/w_asinf_compat.c
@@ -22,10 +22,10 @@
 #include <libm-alias-float.h>
 
 
-#if LIBM_SVID_COMPAT
+#if LIBM_SVID_COMPAT && SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_42)
 /* wrapper asinf */
 float
-__asinf (float x)
+__asin_compatf (float x)
 {
   if (__builtin_expect (isgreater (fabsf (x), 1.0f), 0)
       && _LIB_VERSION != _IEEE_)
@@ -37,5 +37,9 @@ __asinf (float x)
 
   return __ieee754_asinf (x);
 }
-libm_alias_float (__asin, asin)
+# ifdef NO_COMPAT_NEEDED
+libm_alias_float (__asin_compat, asin)
+# else
+compat_symbol (libm, __asin_compatf, asinf, GLIBC_2_0);
+# endif
 #endif
diff --git a/sysdeps/ieee754/flt-32/e_asinf.c b/sysdeps/ieee754/flt-32/e_asinf.c
index 944bf6f5ce..ad896b656b 100644
--- a/sysdeps/ieee754/flt-32/e_asinf.c
+++ b/sysdeps/ieee754/flt-32/e_asinf.c
@@ -27,6 +27,8 @@ SOFTWARE.
 #include <stdint.h>
 #include <errno.h>
 #include <libm-alias-finite.h>
+#include <libm-alias-float.h>
+#include <math-svid-compat.h>
 #include "math_config.h"
 
 static __attribute__ ((noinline)) float
@@ -57,7 +59,7 @@ poly12 (double z, const double *c)
 }
 
 float
-__ieee754_asinf (float x)
+__asinf (float x)
 {
   const double pi2 = 0x1.921fb54442d18p+0;
   double xs = x;
@@ -128,4 +130,11 @@ __ieee754_asinf (float x)
     }
   return r;
 }
+strong_alias (__asinf, __ieee754_asinf)
+#if LIBM_SVID_COMPAT
+versioned_symbol (libm, __asinf, asinf, GLIBC_2_42);
+libm_alias_float_other (__asin, asin)
+#else
+libm_alias_float (__asin, asin)
+#endif
 libm_alias_finite (__ieee754_asinf, __asinf)
diff --git a/sysdeps/ieee754/flt-32/w_asinf.c b/sysdeps/ieee754/flt-32/w_asinf.c
new file mode 100644
index 0000000000..1cc8931700
--- /dev/null
+++ b/sysdeps/ieee754/flt-32/w_asinf.c
@@ -0,0 +1 @@
+/* Not needed.  */
diff --git a/sysdeps/m68k/m680x0/fpu/w_asinf_compat.c b/sysdeps/m68k/m680x0/fpu/w_asinf_compat.c
new file mode 100644
index 0000000000..d419736eb3
--- /dev/null
+++ b/sysdeps/m68k/m680x0/fpu/w_asinf_compat.c
@@ -0,0 +1,8 @@
+/* m68k provides an optimized __ieee754_asinf.  */
+#ifdef SHARED
+# define NO_COMPAT_NEEDED 1
+# include <math/w_asinf_compat.c>
+#else
+# include <math-type-macros-float.h>
+# include <w_asin_template.c>
+#endif
diff --git a/sysdeps/mach/hurd/i386/libm.abilist b/sysdeps/mach/hurd/i386/libm.abilist
index 069f6839af..3063ff1980 100644
--- a/sysdeps/mach/hurd/i386/libm.abilist
+++ b/sysdeps/mach/hurd/i386/libm.abilist
@@ -1278,6 +1278,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/aarch64/libm.abilist b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
index 608dc3af3a..4f3e67b163 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libm.abilist
@@ -1246,6 +1246,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/alpha/libm.abilist b/sysdeps/unix/sysv/linux/alpha/libm.abilist
index 9640285af3..6ee87e7ca8 100644
--- a/sysdeps/unix/sysv/linux/alpha/libm.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libm.abilist
@@ -1405,6 +1405,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/arm/be/libm.abilist b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
index 2d2927bfa3..1a8843e044 100644
--- a/sysdeps/unix/sysv/linux/arm/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/be/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/arm/le/libm.abilist b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
index 2d2927bfa3..1a8843e044 100644
--- a/sysdeps/unix/sysv/linux/arm/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/arm/le/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/hppa/libm.abilist b/sysdeps/unix/sysv/linux/hppa/libm.abilist
index 0fc179462f..fd14c2106a 100644
--- a/sysdeps/unix/sysv/linux/hppa/libm.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/i386/libm.abilist b/sysdeps/unix/sysv/linux/i386/libm.abilist
index f226ddf60d..d8e64a9096 100644
--- a/sysdeps/unix/sysv/linux/i386/libm.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libm.abilist
@@ -1285,6 +1285,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
index 2d2927bfa3..1a8843e044 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
index 254d54c946..fa421fe3d7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/be/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
index 254d54c946..fa421fe3d7 100644
--- a/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/le/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
index 67e5314104..bf398cac63 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
index 515a9446ea..35c239ebb9 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/libm.abilist
@@ -1246,6 +1246,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
index f6bc97d98b..6c0390ed0a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist
@@ -1068,6 +1068,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
index 7a6854f8e2..98a0aef13a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist
@@ -1067,6 +1067,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
index 923e079978..e2604bce61 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist
@@ -1061,6 +1061,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
index 8ec0f6dd8b..f00ae13045 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist
@@ -1430,6 +1430,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
index 400aac290c..bd81a6f4b7 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist
@@ -1349,6 +1349,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
index 2c3f38d54b..29a7da583b 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist
@@ -1349,6 +1349,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/sh/be/libm.abilist b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
index 848ddfd475..14f765b302 100644
--- a/sysdeps/unix/sysv/linux/sh/be/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/be/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/sh/le/libm.abilist b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
index 848ddfd475..14f765b302 100644
--- a/sysdeps/unix/sysv/linux/sh/le/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sh/le/libm.abilist
@@ -921,6 +921,7 @@ GLIBC_2.41 tanpif32x F
 GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
index d47b24a0da..bcaf43a7b8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist
@@ -1356,6 +1356,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
index 4d0ce6d826..39174aca28 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist
@@ -1246,6 +1246,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
index 887ee28cda..babc57384c 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libm.abilist
@@ -1279,6 +1279,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
index 69aa9901f7..bd871170d6 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist
@@ -1279,6 +1279,7 @@ GLIBC_2.41 tanpif64 F
 GLIBC_2.41 tanpif64x F
 GLIBC_2.41 tanpil F
 GLIBC_2.42 acosf F
+GLIBC_2.42 asinf F
 GLIBC_2.42 lgammaf F
 GLIBC_2.42 lgammaf_r F
 GLIBC_2.42 log10f F
