diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
index 9abe1d7e2a..972d46864c 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/Makefile
@@ -349,4 +349,9 @@ ifeq ($(subdir),dlfcn)
   libdl-routines += ieee128-dlfcn
   CFLAGS-dlsym.c += -mabi=ibmlongdouble
   CFLAGS-dlvsym.c += -mabi=ibmlongdouble
+
+  $(objpfx)test-ieee128-dlfcn: $(libdl)
+  $(objpfx)test-ibm128-dlfcn: $(libdl)
+  CFLAGS-test-ibm128-dlfcn.c += -mabi=ibmlongdouble
+  tests-internal += test-ieee128-dlfcn test-ibm128-dlfcn
 endif
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dlfcn.c b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dlfcn.c
index 8b06c42cf7..ea72bdc996 100644
--- a/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dlfcn.c
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ieee128-dlfcn.c
@@ -20,14 +20,34 @@
 
 #include <dlfcn.h>
 
+/* gperf -H __ldbl_hash -N __ldbl_lookup -Ct -S 10 ldbl_to_ieee128.gperf -K ldbl_name --null-strings --output-file=ldbl_to_ieee128.h */
+#include "ldbl_to_ieee128.h"
+
+/*
+  Rename any long double sensitive symbols which pass through
+  dl*sym.  This may be imperfect if someone overrides a symbol
+  in library loaded after libc/m, though they are setup for
+  some strange behavior if they include math.h which will quietly
+  mangle any such attempts to rename anyways.  This plugs one
+  of the major drawbacks of the symbol redirects provided by GCC,
+  but is by no means perfect.
+*/
+static const char *
+mangle_ldbl (const char *name)
+{
+  const struct ldbl_ieee128 *m = __ldbl_lookup (name, strlen (name));
+  return m ? m->ieee128_name : name;
+}
+
 void *
 __dlsymieee128 (void *handle, const char *name)
 {
-  return __dlsym_internal (handle, name, RETURN_ADDRESS (0));
+  return __dlsym_internal (handle, mangle_ldbl (name), RETURN_ADDRESS (0));
 }
 
 void *
 __dlvsymieee128 (void *handle, const char *name, const char *version_str)
 {
-  return __dlvsym_internal (handle, name, version_str, RETURN_ADDRESS (0));
+  return __dlvsym_internal (handle, mangle_ldbl (name), version_str,
+			    RETURN_ADDRESS (0));
 }
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ldbl_to_ieee128.gperf b/sysdeps/ieee754/ldbl-128ibm-compat/ldbl_to_ieee128.gperf
new file mode 100644
index 0000000000..23619a4cd8
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ldbl_to_ieee128.gperf
@@ -0,0 +1,226 @@
+%{
+
+/* Hash table lookup for ldbl == ieee128 symbols.
+   This is generated by unmange_ieee128_syms.py
+   Copyright (C) 2020 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
+   <http://www.gnu.org/licenses/>.  */
+
+%}
+struct ldbl_ieee128 { const char *ldbl_name; const char *ieee128_name; };
+%%
+acoshl, "__acoshieee128"
+acosl, "__acosieee128"
+argp_error, "__argp_errorieee128"
+argp_failure, "__argp_failureieee128"
+asinhl, "__asinhieee128"
+asinl, "__asinieee128"
+asprintf, "__asprintfieee128"
+asprintf_chk, "__asprintf_chkieee128"
+atan2l, "__atan2ieee128"
+atanhl, "__atanhieee128"
+atanl, "__atanieee128"
+cabsl, "__cabsieee128"
+cacoshl, "__cacoshieee128"
+cacosl, "__cacosieee128"
+canonicalizel, "__canonicalizeieee128"
+cargl, "__cargieee128"
+casinhl, "__casinhieee128"
+casinl, "__casinieee128"
+catanhl, "__catanhieee128"
+catanl, "__catanieee128"
+cbrtl, "__cbrtieee128"
+ccoshl, "__ccoshieee128"
+ccosl, "__ccosieee128"
+ceill, "__ceilieee128"
+cexpl, "__cexpieee128"
+cimagl, "__cimagieee128"
+clog10l, "__clog10ieee128"
+clogl, "__clogieee128"
+conjl, "__conjieee128"
+copysignl, "__copysignieee128"
+coshl, "__coshieee128"
+cosl, "__cosieee128"
+cpowl, "__cpowieee128"
+cprojl, "__cprojieee128"
+creall, "__crealieee128"
+csinhl, "__csinhieee128"
+csinl, "__csinieee128"
+csqrtl, "__csqrtieee128"
+ctanhl, "__ctanhieee128"
+ctanl, "__ctanieee128"
+dlsym, "__dlsymieee128"
+dlvsym, "__dlvsymieee128"
+dprintf, "__dprintfieee128"
+dprintf_chk, "__dprintf_chkieee128"
+dreml, "__remainderieee128"
+erfcl, "__erfcieee128"
+erfl, "__erfieee128"
+err, "__errieee128"
+error, "__errorieee128"
+error_at_line, "__error_at_lineieee128"
+errx, "__errxieee128"
+exp10l, "__exp10ieee128"
+exp2l, "__exp2ieee128"
+expl, "__expieee128"
+expm1l, "__expm1ieee128"
+f32addl, "__f32addieee128"
+f32divl, "__f32divieee128"
+f32mull, "__f32mulieee128"
+f32subl, "__f32subieee128"
+f64addl, "__f64addieee128"
+f64divl, "__f64divieee128"
+f64mull, "__f64mulieee128"
+f64subl, "__f64subieee128"
+fabsl, "__fabsieee128"
+fdiml, "__fdimieee128"
+floorl, "__floorieee128"
+fmal, "__fmaieee128"
+fmaxl, "__fmaxieee128"
+fmaxmagl, "__fmaxmagieee128"
+fminl, "__fminieee128"
+fminmagl, "__fminmagieee128"
+fmodl, "__fmodieee128"
+fprintf, "__fprintfieee128"
+fprintf_chk, "__fprintf_chkieee128"
+frexpl, "__frexpieee128"
+fromfpl, "__fromfpieee128"
+fromfpxl, "__fromfpxieee128"
+fscanf, "__fscanfieee128"
+fwprintf, "__fwprintfieee128"
+fwprintf_chk, "__fwprintf_chkieee128"
+fwscanf, "__fwscanfieee128"
+gammal, "__lgammaieee128"
+getpayloadl, "__getpayloadieee128"
+hypotl, "__hypotieee128"
+ilogbl, "__ilogbieee128"
+j0l, "__j0ieee128"
+j1l, "__j1ieee128"
+jnl, "__jnieee128"
+ldexpl, "__ldexpieee128"
+lgammal, "__lgammaieee128"
+lgammal_r, "__lgammaieee128_r"
+llogbl, "__llogbieee128"
+llrintl, "__llrintieee128"
+llroundl, "__llroundieee128"
+log10l, "__log10ieee128"
+log1pl, "__log1pieee128"
+log2l, "__log2ieee128"
+logbl, "__logbieee128"
+logl, "__logieee128"
+lrintl, "__lrintieee128"
+lroundl, "__lroundieee128"
+modfl, "__modfieee128"
+nanl, "__nanieee128"
+nearbyintl, "__nearbyintieee128"
+nextafterl, "__nextafterieee128"
+nextdownl, "__nextdownieee128"
+nexttoward, "__nexttoward_to_ieee128"
+nexttowardf, "__nexttowardf_to_ieee128"
+nexttowardl, "__nexttowardieee128"
+nextupl, "__nextupieee128"
+obstack_printf, "__obstack_printfieee128"
+obstack_printf_chk, "__obstack_printf_chkieee128"
+obstack_vprintf, "__obstack_vprintfieee128"
+obstack_vprintf_chk, "__obstack_vprintf_chkieee128"
+powl, "__powieee128"
+printf, "__printfieee128"
+printf_chk, "__printf_chkieee128"
+printf_size, "__printf_sizeieee128"
+qecvtl, "__qecvtieee128"
+qecvtl_r, "__qecvtieee128_r"
+qfcvtl, "__qfcvtieee128"
+qfcvtl_r, "__qfcvtieee128_r"
+qgcvtl, "__qgcvtieee128"
+remainderl, "__remainderieee128"
+remquol, "__remquoieee128"
+rintl, "__rintieee128"
+roundevenl, "__roundevenieee128"
+roundl, "__roundieee128"
+scalbl, "__scalbieee128"
+scalblnl, "__scalblnieee128"
+scalbnl, "__scalbnieee128"
+scanf, "__scanfieee128"
+setpayloadl, "__setpayloadieee128"
+setpayloadsigl, "__setpayloadsigieee128"
+significandl, "__significandieee128"
+sincosl, "__sincosieee128"
+sinhl, "__sinhieee128"
+sinl, "__sinieee128"
+snprintf, "__snprintfieee128"
+snprintf_chk, "__snprintf_chkieee128"
+sprintf, "__sprintfieee128"
+sprintf_chk, "__sprintf_chkieee128"
+sqrtl, "__sqrtieee128"
+sscanf, "__sscanfieee128"
+strfmon, "__strfmonieee128"
+strfmon_l, "__strfmon_lieee128"
+strfroml, "__strfromieee128"
+strtol, "__strtoieee128"
+strtol_l, "__strtoieee128_l"
+swprintf, "__swprintfieee128"
+swprintf_chk, "__swprintf_chkieee128"
+swscanf, "__swscanfieee128"
+syslog, "__syslogieee128"
+syslog_chk, "__syslog_chkieee128"
+tanhl, "__tanhieee128"
+tanl, "__tanieee128"
+tgammal, "__tgammaieee128"
+totalorderl, "__totalorderieee128"
+totalordermagl, "__totalordermagieee128"
+truncl, "__truncieee128"
+ufromfpl, "__ufromfpieee128"
+ufromfpxl, "__ufromfpxieee128"
+vasprintf, "__vasprintfieee128"
+vasprintf_chk, "__vasprintf_chkieee128"
+vdprintf, "__vdprintfieee128"
+vdprintf_chk, "__vdprintf_chkieee128"
+verr, "__verrieee128"
+verrx, "__verrxieee128"
+vfprintf, "__vfprintfieee128"
+vfprintf_chk, "__vfprintf_chkieee128"
+vfscanf, "__vfscanfieee128"
+vfwprintf, "__vfwprintfieee128"
+vfwprintf_chk, "__vfwprintf_chkieee128"
+vfwscanf, "__vfwscanfieee128"
+vprintf, "__vprintfieee128"
+vprintf_chk, "__vprintf_chkieee128"
+vscanf, "__vscanfieee128"
+vsnprintf, "__vsnprintfieee128"
+vsnprintf_chk, "__vsnprintf_chkieee128"
+vsprintf, "__vsprintfieee128"
+vsprintf_chk, "__vsprintf_chkieee128"
+vsscanf, "__vsscanfieee128"
+vswprintf, "__vswprintfieee128"
+vswprintf_chk, "__vswprintf_chkieee128"
+vswscanf, "__vswscanfieee128"
+vsyslog, "__vsyslogieee128"
+vsyslog_chk, "__vsyslog_chkieee128"
+vwarn, "__vwarnieee128"
+vwarnx, "__vwarnxieee128"
+vwprintf, "__vwprintfieee128"
+vwprintf_chk, "__vwprintf_chkieee128"
+vwscanf, "__vwscanfieee128"
+warn, "__warnieee128"
+warnx, "__warnxieee128"
+wcstol, "__wcstoieee128"
+wcstol_l, "__wcstoieee128_l"
+wprintf, "__wprintfieee128"
+wprintf_chk, "__wprintf_chkieee128"
+wscanf, "__wscanfieee128"
+y0l, "__y0ieee128"
+y1l, "__y1ieee128"
+ynl, "__ynieee128"
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/ldbl_to_ieee128.h b/sysdeps/ieee754/ldbl-128ibm-compat/ldbl_to_ieee128.h
new file mode 100644
index 0000000000..ed2f8ddadd
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/ldbl_to_ieee128.h
@@ -0,0 +1,1254 @@
+/* ANSI-C code produced by gperf version 3.1 */
+/* Command-line: gperf -H __ldbl_hash -N __ldbl_lookup -Ct -S 10 -K ldbl_name --null-strings --output-file=ldbl_to_ieee128.h ldbl_to_ieee128.gperf  */
+/* Computed positions: -k'1-5,11' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646.  */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
+#endif
+
+#line 1 "ldbl_to_ieee128.gperf"
+
+
+/* Hash table lookup for ldbl == ieee128 symbols.
+   This is generated by unmange_ieee128_syms.py
+   Copyright (C) 2020 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
+   <http://www.gnu.org/licenses/>.  */
+
+#line 23 "ldbl_to_ieee128.gperf"
+struct ldbl_ieee128 { const char *ldbl_name; const char *ieee128_name; };
+
+#define TOTAL_KEYWORDS 202
+#define MIN_WORD_LENGTH 3
+#define MAX_WORD_LENGTH 19
+#define MIN_HASH_VALUE 6
+#define MAX_HASH_VALUE 574
+/* maximum key range = 569, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+__ldbl_hash (register const char *str, register size_t len)
+{
+  static const unsigned short asso_values[] =
+    {
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575,  85,  25,
+        5,  35, 575,  10,  10, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575,  25, 575,   5,   0,   0,
+      150, 175,  80, 254,  30,  20, 135,  45,  10,  20,
+       10,   0,  60,  75,  50,   0,   0,  45,  20,  50,
+      105, 230,  40, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575, 575, 575, 575,
+      575, 575, 575, 575, 575, 575, 575
+    };
+  register unsigned int hval = len;
+
+  switch (hval)
+    {
+      default:
+        hval += asso_values[(unsigned char)str[10]];
+      /*FALLTHROUGH*/
+      case 10:
+      case 9:
+      case 8:
+      case 7:
+      case 6:
+      case 5:
+        hval += asso_values[(unsigned char)str[4]];
+      /*FALLTHROUGH*/
+      case 4:
+        hval += asso_values[(unsigned char)str[3]];
+      /*FALLTHROUGH*/
+      case 3:
+        hval += asso_values[(unsigned char)str[2]+1];
+      /*FALLTHROUGH*/
+      case 2:
+        hval += asso_values[(unsigned char)str[1]];
+      /*FALLTHROUGH*/
+      case 1:
+        hval += asso_values[(unsigned char)str[0]];
+        break;
+    }
+  return hval;
+}
+
+const struct ldbl_ieee128 *
+__ldbl_lookup (register const char *str, register size_t len)
+{
+  static const struct ldbl_ieee128 wordlist[] =
+    {
+#line 172 "ldbl_to_ieee128.gperf"
+      {"strtol", "__strtoieee128"},
+#line 173 "ldbl_to_ieee128.gperf"
+      {"strtol_l", "__strtoieee128_l"},
+#line 56 "ldbl_to_ieee128.gperf"
+      {"cosl", "__cosieee128"},
+#line 45 "ldbl_to_ieee128.gperf"
+      {"cbrtl", "__cbrtieee128"},
+#line 153 "ldbl_to_ieee128.gperf"
+      {"scalbl", "__scalbieee128"},
+#line 155 "ldbl_to_ieee128.gperf"
+      {"scalbnl", "__scalbnieee128"},
+#line 154 "ldbl_to_ieee128.gperf"
+      {"scalblnl", "__scalblnieee128"},
+#line 180 "ldbl_to_ieee128.gperf"
+      {"tanl", "__tanieee128"},
+#line 36 "ldbl_to_ieee128.gperf"
+      {"cabsl", "__cabsieee128"},
+#line 64 "ldbl_to_ieee128.gperf"
+      {"ctanl", "__ctanieee128"},
+#line 33 "ldbl_to_ieee128.gperf"
+      {"atan2l", "__atan2ieee128"},
+#line 160 "ldbl_to_ieee128.gperf"
+      {"sincosl", "__sincosieee128"},
+#line 127 "ldbl_to_ieee128.gperf"
+      {"nanl", "__nanieee128"},
+#line 35 "ldbl_to_ieee128.gperf"
+      {"atanl", "__atanieee128"},
+#line 206 "ldbl_to_ieee128.gperf"
+      {"vsscanf", "__vsscanfieee128"},
+#line 162 "ldbl_to_ieee128.gperf"
+      {"sinl", "__sinieee128"},
+#line 135 "ldbl_to_ieee128.gperf"
+      {"obstack_printf", "__obstack_printfieee128"},
+#line 42 "ldbl_to_ieee128.gperf"
+      {"casinl", "__casinieee128"},
+#line 41 "ldbl_to_ieee128.gperf"
+      {"casinhl", "__casinhieee128"},
+#line 136 "ldbl_to_ieee128.gperf"
+      {"obstack_printf_chk", "__obstack_printf_chkieee128"},
+#line 55 "ldbl_to_ieee128.gperf"
+      {"coshl", "__coshieee128"},
+#line 63 "ldbl_to_ieee128.gperf"
+      {"ctanhl", "__ctanhieee128"},
+#line 179 "ldbl_to_ieee128.gperf"
+      {"tanhl", "__tanhieee128"},
+#line 34 "ldbl_to_ieee128.gperf"
+      {"atanhl", "__atanhieee128"},
+#line 123 "ldbl_to_ieee128.gperf"
+      {"logl", "__logieee128"},
+#line 122 "ldbl_to_ieee128.gperf"
+      {"logbl", "__logbieee128"},
+#line 219 "ldbl_to_ieee128.gperf"
+      {"wcstol", "__wcstoieee128"},
+#line 117 "ldbl_to_ieee128.gperf"
+      {"llrintl", "__llrintieee128"},
+#line 220 "ldbl_to_ieee128.gperf"
+      {"wcstol_l", "__wcstoieee128_l"},
+#line 121 "ldbl_to_ieee128.gperf"
+      {"log2l", "__log2ieee128"},
+#line 176 "ldbl_to_ieee128.gperf"
+      {"swscanf", "__swscanfieee128"},
+#line 161 "ldbl_to_ieee128.gperf"
+      {"sinhl", "__sinhieee128"},
+#line 39 "ldbl_to_ieee128.gperf"
+      {"canonicalizel", "__canonicalizeieee128"},
+#line 217 "ldbl_to_ieee128.gperf"
+      {"warn", "__warnieee128"},
+#line 137 "ldbl_to_ieee128.gperf"
+      {"obstack_vprintf", "__obstack_vprintfieee128"},
+#line 44 "ldbl_to_ieee128.gperf"
+      {"catanl", "__catanieee128"},
+#line 43 "ldbl_to_ieee128.gperf"
+      {"catanhl", "__catanhieee128"},
+#line 118 "ldbl_to_ieee128.gperf"
+      {"llroundl", "__llroundieee128"},
+#line 138 "ldbl_to_ieee128.gperf"
+      {"obstack_vprintf_chk", "__obstack_vprintf_chkieee128"},
+#line 47 "ldbl_to_ieee128.gperf"
+      {"ccosl", "__ccosieee128"},
+#line 210 "ldbl_to_ieee128.gperf"
+      {"vsyslog", "__vsyslogieee128"},
+#line 26 "ldbl_to_ieee128.gperf"
+      {"acosl", "__acosieee128"},
+#line 182 "ldbl_to_ieee128.gperf"
+      {"totalorderl", "__totalorderieee128"},
+#line 216 "ldbl_to_ieee128.gperf"
+      {"vwscanf", "__vwscanfieee128"},
+#line 150 "ldbl_to_ieee128.gperf"
+      {"rintl", "__rintieee128"},
+#line 184 "ldbl_to_ieee128.gperf"
+      {"truncl", "__truncieee128"},
+#line 167 "ldbl_to_ieee128.gperf"
+      {"sqrtl", "__sqrtieee128"},
+#line 183 "ldbl_to_ieee128.gperf"
+      {"totalordermagl", "__totalordermagieee128"},
+#line 156 "ldbl_to_ieee128.gperf"
+      {"scanf", "__scanfieee128"},
+#line 46 "ldbl_to_ieee128.gperf"
+      {"ccoshl", "__ccoshieee128"},
+#line 165 "ldbl_to_ieee128.gperf"
+      {"sprintf", "__sprintfieee128"},
+#line 88 "ldbl_to_ieee128.gperf"
+      {"fabsl", "__fabsieee128"},
+#line 25 "ldbl_to_ieee128.gperf"
+      {"acoshl", "__acoshieee128"},
+#line 62 "ldbl_to_ieee128.gperf"
+      {"csqrtl", "__csqrtieee128"},
+#line 169 "ldbl_to_ieee128.gperf"
+      {"strfmon", "__strfmonieee128"},
+#line 170 "ldbl_to_ieee128.gperf"
+      {"strfmon_l", "__strfmon_lieee128"},
+#line 195 "ldbl_to_ieee128.gperf"
+      {"vfscanf", "__vfscanfieee128"},
+#line 91 "ldbl_to_ieee128.gperf"
+      {"fmal", "__fmaieee128"},
+#line 199 "ldbl_to_ieee128.gperf"
+      {"vprintf", "__vprintfieee128"},
+#line 211 "ldbl_to_ieee128.gperf"
+      {"vsyslog_chk", "__vsyslog_chkieee128"},
+#line 120 "ldbl_to_ieee128.gperf"
+      {"log1pl", "__log1pieee128"},
+#line 209 "ldbl_to_ieee128.gperf"
+      {"vswscanf", "__vswscanfieee128"},
+#line 212 "ldbl_to_ieee128.gperf"
+      {"vwarn", "__vwarnieee128"},
+#line 213 "ldbl_to_ieee128.gperf"
+      {"vwarnx", "__vwarnxieee128"},
+#line 171 "ldbl_to_ieee128.gperf"
+      {"strfroml", "__strfromieee128"},
+#line 202 "ldbl_to_ieee128.gperf"
+      {"vsnprintf", "__vsnprintfieee128"},
+#line 105 "ldbl_to_ieee128.gperf"
+      {"fwscanf", "__fwscanfieee128"},
+#line 203 "ldbl_to_ieee128.gperf"
+      {"vsnprintf_chk", "__vsnprintf_chkieee128"},
+#line 187 "ldbl_to_ieee128.gperf"
+      {"vasprintf", "__vasprintfieee128"},
+#line 166 "ldbl_to_ieee128.gperf"
+      {"sprintf_chk", "__sprintf_chkieee128"},
+#line 221 "ldbl_to_ieee128.gperf"
+      {"wprintf", "__wprintfieee128"},
+#line 188 "ldbl_to_ieee128.gperf"
+      {"vasprintf_chk", "__vasprintf_chkieee128"},
+#line 53 "ldbl_to_ieee128.gperf"
+      {"conjl", "__conjieee128"},
+#line 59 "ldbl_to_ieee128.gperf"
+      {"creall", "__crealieee128"},
+#line 87 "ldbl_to_ieee128.gperf"
+      {"f64subl", "__f64subieee128"},
+#line 185 "ldbl_to_ieee128.gperf"
+      {"ufromfpl", "__ufromfpieee128"},
+#line 186 "ldbl_to_ieee128.gperf"
+      {"ufromfpxl", "__ufromfpxieee128"},
+#line 119 "ldbl_to_ieee128.gperf"
+      {"log10l", "__log10ieee128"},
+#line 31 "ldbl_to_ieee128.gperf"
+      {"asprintf", "__asprintfieee128"},
+#line 61 "ldbl_to_ieee128.gperf"
+      {"csinl", "__csinieee128"},
+#line 38 "ldbl_to_ieee128.gperf"
+      {"cacosl", "__cacosieee128"},
+#line 37 "ldbl_to_ieee128.gperf"
+      {"cacoshl", "__cacoshieee128"},
+#line 163 "ldbl_to_ieee128.gperf"
+      {"snprintf", "__snprintfieee128"},
+#line 30 "ldbl_to_ieee128.gperf"
+      {"asinl", "__asinieee128"},
+#line 200 "ldbl_to_ieee128.gperf"
+      {"vprintf_chk", "__vprintf_chkieee128"},
+#line 112 "ldbl_to_ieee128.gperf"
+      {"jnl", "__jnieee128"},
+#line 168 "ldbl_to_ieee128.gperf"
+      {"sscanf", "__sscanfieee128"},
+#line 86 "ldbl_to_ieee128.gperf"
+      {"f64mull", "__f64mulieee128"},
+#line 204 "ldbl_to_ieee128.gperf"
+      {"vsprintf", "__vsprintfieee128"},
+#line 218 "ldbl_to_ieee128.gperf"
+      {"warnx", "__warnxieee128"},
+#line 97 "ldbl_to_ieee128.gperf"
+      {"fprintf", "__fprintfieee128"},
+#line 139 "ldbl_to_ieee128.gperf"
+      {"powl", "__powieee128"},
+#line 27 "ldbl_to_ieee128.gperf"
+      {"argp_error", "__argp_errorieee128"},
+#line 60 "ldbl_to_ieee128.gperf"
+      {"csinhl", "__csinhieee128"},
+#line 125 "ldbl_to_ieee128.gperf"
+      {"lroundl", "__lroundieee128"},
+#line 111 "ldbl_to_ieee128.gperf"
+      {"j1l", "__j1ieee128"},
+#line 57 "ldbl_to_ieee128.gperf"
+      {"cpowl", "__cpowieee128"},
+#line 29 "ldbl_to_ieee128.gperf"
+      {"asinhl", "__asinhieee128"},
+#line 201 "ldbl_to_ieee128.gperf"
+      {"vscanf", "__vscanfieee128"},
+#line 32 "ldbl_to_ieee128.gperf"
+      {"asprintf_chk", "__asprintf_chkieee128"},
+#line 222 "ldbl_to_ieee128.gperf"
+      {"wprintf_chk", "__wprintf_chkieee128"},
+#line 164 "ldbl_to_ieee128.gperf"
+      {"snprintf_chk", "__snprintf_chkieee128"},
+#line 58 "ldbl_to_ieee128.gperf"
+      {"cprojl", "__cprojieee128"},
+#line 83 "ldbl_to_ieee128.gperf"
+      {"f32subl", "__f32subieee128"},
+#line 174 "ldbl_to_ieee128.gperf"
+      {"swprintf", "__swprintfieee128"},
+#line 90 "ldbl_to_ieee128.gperf"
+      {"floorl", "__floorieee128"},
+#line 205 "ldbl_to_ieee128.gperf"
+      {"vsprintf_chk", "__vsprintf_chkieee128"},
+#line 124 "ldbl_to_ieee128.gperf"
+      {"lrintl", "__lrintieee128"},
+#line 198 "ldbl_to_ieee128.gperf"
+      {"vfwscanf", "__vfwscanfieee128"},
+#line 92 "ldbl_to_ieee128.gperf"
+      {"fmaxl", "__fmaxieee128"},
+#line 223 "ldbl_to_ieee128.gperf"
+      {"wscanf", "__wscanfieee128"},
+#line 82 "ldbl_to_ieee128.gperf"
+      {"f32mull", "__f32mulieee128"},
+#line 214 "ldbl_to_ieee128.gperf"
+      {"vwprintf", "__vwprintfieee128"},
+#line 98 "ldbl_to_ieee128.gperf"
+      {"fprintf_chk", "__fprintf_chkieee128"},
+#line 72 "ldbl_to_ieee128.gperf"
+      {"err", "__errieee128"},
+#line 28 "ldbl_to_ieee128.gperf"
+      {"argp_failure", "__argp_failureieee128"},
+#line 93 "ldbl_to_ieee128.gperf"
+      {"fmaxmagl", "__fmaxmagieee128"},
+#line 152 "ldbl_to_ieee128.gperf"
+      {"roundl", "__roundieee128"},
+#line 175 "ldbl_to_ieee128.gperf"
+      {"swprintf_chk", "__swprintf_chkieee128"},
+#line 151 "ldbl_to_ieee128.gperf"
+      {"roundevenl", "__roundevenieee128"},
+#line 159 "ldbl_to_ieee128.gperf"
+      {"significandl", "__significandieee128"},
+#line 110 "ldbl_to_ieee128.gperf"
+      {"j0l", "__j0ieee128"},
+#line 207 "ldbl_to_ieee128.gperf"
+      {"vswprintf", "__vswprintfieee128"},
+#line 128 "ldbl_to_ieee128.gperf"
+      {"nearbyintl", "__nearbyintieee128"},
+#line 177 "ldbl_to_ieee128.gperf"
+      {"syslog", "__syslogieee128"},
+#line 67 "ldbl_to_ieee128.gperf"
+      {"dprintf", "__dprintfieee128"},
+#line 208 "ldbl_to_ieee128.gperf"
+      {"vswprintf_chk", "__vswprintf_chkieee128"},
+#line 191 "ldbl_to_ieee128.gperf"
+      {"verr", "__verrieee128"},
+#line 178 "ldbl_to_ieee128.gperf"
+      {"syslog_chk", "__syslog_chkieee128"},
+#line 102 "ldbl_to_ieee128.gperf"
+      {"fscanf", "__fscanfieee128"},
+#line 193 "ldbl_to_ieee128.gperf"
+      {"vfprintf", "__vfprintfieee128"},
+#line 215 "ldbl_to_ieee128.gperf"
+      {"vwprintf_chk", "__vwprintf_chkieee128"},
+#line 94 "ldbl_to_ieee128.gperf"
+      {"fminl", "__fminieee128"},
+#line 140 "ldbl_to_ieee128.gperf"
+      {"printf", "__printfieee128"},
+#line 84 "ldbl_to_ieee128.gperf"
+      {"f64addl", "__f64addieee128"},
+#line 226 "ldbl_to_ieee128.gperf"
+      {"ynl", "__ynieee128"},
+#line 141 "ldbl_to_ieee128.gperf"
+      {"printf_chk", "__printf_chkieee128"},
+#line 148 "ldbl_to_ieee128.gperf"
+      {"remainderl", "__remainderieee128"},
+#line 95 "ldbl_to_ieee128.gperf"
+      {"fminmagl", "__fminmagieee128"},
+#line 40 "ldbl_to_ieee128.gperf"
+      {"cargl", "__cargieee128"},
+#line 85 "ldbl_to_ieee128.gperf"
+      {"f64divl", "__f64divieee128"},
+#line 225 "ldbl_to_ieee128.gperf"
+      {"y1l", "__y1ieee128"},
+#line 73 "ldbl_to_ieee128.gperf"
+      {"error", "__errorieee128"},
+#line 103 "ldbl_to_ieee128.gperf"
+      {"fwprintf", "__fwprintfieee128"},
+#line 194 "ldbl_to_ieee128.gperf"
+      {"vfprintf_chk", "__vfprintf_chkieee128"},
+#line 126 "ldbl_to_ieee128.gperf"
+      {"modfl", "__modfieee128"},
+#line 50 "ldbl_to_ieee128.gperf"
+      {"cimagl", "__cimagieee128"},
+#line 68 "ldbl_to_ieee128.gperf"
+      {"dprintf_chk", "__dprintf_chkieee128"},
+#line 100 "ldbl_to_ieee128.gperf"
+      {"fromfpl", "__fromfpieee128"},
+#line 101 "ldbl_to_ieee128.gperf"
+      {"fromfpxl", "__fromfpxieee128"},
+#line 158 "ldbl_to_ieee128.gperf"
+      {"setpayloadsigl", "__setpayloadsigieee128"},
+#line 106 "ldbl_to_ieee128.gperf"
+      {"gammal", "__lgammaieee128"},
+#line 181 "ldbl_to_ieee128.gperf"
+      {"tgammal", "__tgammaieee128"},
+#line 157 "ldbl_to_ieee128.gperf"
+      {"setpayloadl", "__setpayloadieee128"},
+#line 74 "ldbl_to_ieee128.gperf"
+      {"error_at_line", "__error_at_lineieee128"},
+#line 114 "ldbl_to_ieee128.gperf"
+      {"lgammal", "__lgammaieee128"},
+#line 80 "ldbl_to_ieee128.gperf"
+      {"f32addl", "__f32addieee128"},
+#line 115 "ldbl_to_ieee128.gperf"
+      {"lgammal_r", "__lgammaieee128_r"},
+#line 54 "ldbl_to_ieee128.gperf"
+      {"copysignl", "__copysignieee128"},
+#line 69 "ldbl_to_ieee128.gperf"
+      {"dreml", "__remainderieee128"},
+#line 104 "ldbl_to_ieee128.gperf"
+      {"fwprintf_chk", "__fwprintf_chkieee128"},
+#line 189 "ldbl_to_ieee128.gperf"
+      {"vdprintf", "__vdprintfieee128"},
+#line 196 "ldbl_to_ieee128.gperf"
+      {"vfwprintf", "__vfwprintfieee128"},
+#line 96 "ldbl_to_ieee128.gperf"
+      {"fmodl", "__fmodieee128"},
+#line 81 "ldbl_to_ieee128.gperf"
+      {"f32divl", "__f32divieee128"},
+#line 197 "ldbl_to_ieee128.gperf"
+      {"vfwprintf_chk", "__vfwprintf_chkieee128"},
+#line 145 "ldbl_to_ieee128.gperf"
+      {"qfcvtl", "__qfcvtieee128"},
+#line 146 "ldbl_to_ieee128.gperf"
+      {"qfcvtl_r", "__qfcvtieee128_r"},
+#line 75 "ldbl_to_ieee128.gperf"
+      {"errx", "__errxieee128"},
+#line 48 "ldbl_to_ieee128.gperf"
+      {"ceill", "__ceilieee128"},
+#line 224 "ldbl_to_ieee128.gperf"
+      {"y0l", "__y0ieee128"},
+#line 52 "ldbl_to_ieee128.gperf"
+      {"clogl", "__clogieee128"},
+#line 116 "ldbl_to_ieee128.gperf"
+      {"llogbl", "__llogbieee128"},
+#line 108 "ldbl_to_ieee128.gperf"
+      {"hypotl", "__hypotieee128"},
+#line 109 "ldbl_to_ieee128.gperf"
+      {"ilogbl", "__ilogbieee128"},
+#line 192 "ldbl_to_ieee128.gperf"
+      {"verrx", "__verrxieee128"},
+#line 51 "ldbl_to_ieee128.gperf"
+      {"clog10l", "__clog10ieee128"},
+#line 190 "ldbl_to_ieee128.gperf"
+      {"vdprintf_chk", "__vdprintf_chkieee128"},
+#line 149 "ldbl_to_ieee128.gperf"
+      {"remquol", "__remquoieee128"},
+#line 78 "ldbl_to_ieee128.gperf"
+      {"expl", "__expieee128"},
+#line 77 "ldbl_to_ieee128.gperf"
+      {"exp2l", "__exp2ieee128"},
+#line 99 "ldbl_to_ieee128.gperf"
+      {"frexpl", "__frexpieee128"},
+#line 89 "ldbl_to_ieee128.gperf"
+      {"fdiml", "__fdimieee128"},
+#line 79 "ldbl_to_ieee128.gperf"
+      {"expm1l", "__expm1ieee128"},
+#line 113 "ldbl_to_ieee128.gperf"
+      {"ldexpl", "__ldexpieee128"},
+#line 65 "ldbl_to_ieee128.gperf"
+      {"dlsym", "__dlsymieee128"},
+#line 131 "ldbl_to_ieee128.gperf"
+      {"nexttoward", "__nexttoward_to_ieee128"},
+#line 143 "ldbl_to_ieee128.gperf"
+      {"qecvtl", "__qecvtieee128"},
+#line 144 "ldbl_to_ieee128.gperf"
+      {"qecvtl_r", "__qecvtieee128_r"},
+#line 129 "ldbl_to_ieee128.gperf"
+      {"nextafterl", "__nextafterieee128"},
+#line 133 "ldbl_to_ieee128.gperf"
+      {"nexttowardl", "__nexttowardieee128"},
+#line 142 "ldbl_to_ieee128.gperf"
+      {"printf_size", "__printf_sizeieee128"},
+#line 66 "ldbl_to_ieee128.gperf"
+      {"dlvsym", "__dlvsymieee128"},
+#line 134 "ldbl_to_ieee128.gperf"
+      {"nextupl", "__nextupieee128"},
+#line 76 "ldbl_to_ieee128.gperf"
+      {"exp10l", "__exp10ieee128"},
+#line 49 "ldbl_to_ieee128.gperf"
+      {"cexpl", "__cexpieee128"},
+#line 71 "ldbl_to_ieee128.gperf"
+      {"erfl", "__erfieee128"},
+#line 70 "ldbl_to_ieee128.gperf"
+      {"erfcl", "__erfcieee128"},
+#line 147 "ldbl_to_ieee128.gperf"
+      {"qgcvtl", "__qgcvtieee128"},
+#line 132 "ldbl_to_ieee128.gperf"
+      {"nexttowardf", "__nexttowardf_to_ieee128"},
+#line 107 "ldbl_to_ieee128.gperf"
+      {"getpayloadl", "__getpayloadieee128"},
+#line 130 "ldbl_to_ieee128.gperf"
+      {"nextdownl", "__nextdownieee128"}
+    };
+
+  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+    {
+      register unsigned int key = __ldbl_hash (str, len);
+
+      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
+        {
+          register const struct ldbl_ieee128 *resword;
+
+          if (key < 197)
+            {
+              if (key < 77)
+                {
+                  if (key < 45)
+                    {
+                      switch (key - 6)
+                        {
+                          case 0:
+                            resword = &wordlist[0];
+                            goto compare;
+                          case 2:
+                            resword = &wordlist[1];
+                            goto compare;
+                          case 8:
+                            resword = &wordlist[2];
+                            goto compare;
+                          case 9:
+                            resword = &wordlist[3];
+                            goto compare;
+                          case 10:
+                            resword = &wordlist[4];
+                            goto compare;
+                          case 11:
+                            resword = &wordlist[5];
+                            goto compare;
+                          case 12:
+                            resword = &wordlist[6];
+                            goto compare;
+                          case 13:
+                            resword = &wordlist[7];
+                            goto compare;
+                          case 14:
+                            resword = &wordlist[8];
+                            goto compare;
+                          case 19:
+                            resword = &wordlist[9];
+                            goto compare;
+                          case 20:
+                            resword = &wordlist[10];
+                            goto compare;
+                          case 21:
+                            resword = &wordlist[11];
+                            goto compare;
+                          case 23:
+                            resword = &wordlist[12];
+                            goto compare;
+                          case 24:
+                            resword = &wordlist[13];
+                            goto compare;
+                          case 26:
+                            resword = &wordlist[14];
+                            goto compare;
+                          case 28:
+                            resword = &wordlist[15];
+                            goto compare;
+                          case 33:
+                            resword = &wordlist[16];
+                            goto compare;
+                          case 35:
+                            resword = &wordlist[17];
+                            goto compare;
+                          case 36:
+                            resword = &wordlist[18];
+                            goto compare;
+                          case 37:
+                            resword = &wordlist[19];
+                            goto compare;
+                        }
+                    }
+                  else
+                    {
+                      switch (key - 45)
+                        {
+                          case 0:
+                            resword = &wordlist[20];
+                            goto compare;
+                          case 1:
+                            resword = &wordlist[21];
+                            goto compare;
+                          case 5:
+                            resword = &wordlist[22];
+                            goto compare;
+                          case 6:
+                            resword = &wordlist[23];
+                            goto compare;
+                          case 9:
+                            resword = &wordlist[24];
+                            goto compare;
+                          case 10:
+                            resword = &wordlist[25];
+                            goto compare;
+                          case 11:
+                            resword = &wordlist[26];
+                            goto compare;
+                          case 12:
+                            resword = &wordlist[27];
+                            goto compare;
+                          case 13:
+                            resword = &wordlist[28];
+                            goto compare;
+                          case 15:
+                            resword = &wordlist[29];
+                            goto compare;
+                          case 17:
+                            resword = &wordlist[30];
+                            goto compare;
+                          case 20:
+                            resword = &wordlist[31];
+                            goto compare;
+                          case 23:
+                            resword = &wordlist[32];
+                            goto compare;
+                          case 24:
+                            resword = &wordlist[33];
+                            goto compare;
+                          case 25:
+                            resword = &wordlist[34];
+                            goto compare;
+                          case 26:
+                            resword = &wordlist[35];
+                            goto compare;
+                          case 27:
+                            resword = &wordlist[36];
+                            goto compare;
+                          case 28:
+                            resword = &wordlist[37];
+                            goto compare;
+                          case 29:
+                            resword = &wordlist[38];
+                            goto compare;
+                          case 30:
+                            resword = &wordlist[39];
+                            goto compare;
+                        }
+                    }
+                }
+              else
+                {
+                  if (key < 131)
+                    {
+                      switch (key - 77)
+                        {
+                          case 0:
+                            resword = &wordlist[40];
+                            goto compare;
+                          case 3:
+                            resword = &wordlist[41];
+                            goto compare;
+                          case 4:
+                            resword = &wordlist[42];
+                            goto compare;
+                          case 5:
+                            resword = &wordlist[43];
+                            goto compare;
+                          case 8:
+                            resword = &wordlist[44];
+                            goto compare;
+                          case 9:
+                            resword = &wordlist[45];
+                            goto compare;
+                          case 13:
+                            resword = &wordlist[46];
+                            goto compare;
+                          case 17:
+                            resword = &wordlist[47];
+                            goto compare;
+                          case 18:
+                            resword = &wordlist[48];
+                            goto compare;
+                          case 19:
+                            resword = &wordlist[49];
+                            goto compare;
+                          case 20:
+                            resword = &wordlist[50];
+                            goto compare;
+                          case 23:
+                            resword = &wordlist[51];
+                            goto compare;
+                          case 24:
+                            resword = &wordlist[52];
+                            goto compare;
+                          case 29:
+                            resword = &wordlist[53];
+                            goto compare;
+                          case 30:
+                            resword = &wordlist[54];
+                            goto compare;
+                          case 32:
+                            resword = &wordlist[55];
+                            goto compare;
+                          case 35:
+                            resword = &wordlist[56];
+                            goto compare;
+                          case 37:
+                            resword = &wordlist[57];
+                            goto compare;
+                          case 40:
+                            resword = &wordlist[58];
+                            goto compare;
+                          case 49:
+                            resword = &wordlist[59];
+                            goto compare;
+                        }
+                    }
+                  else
+                    {
+                      if (key < 162)
+                        {
+                          switch (key - 131)
+                            {
+                              case 0:
+                                resword = &wordlist[60];
+                                goto compare;
+                              case 2:
+                                resword = &wordlist[61];
+                                goto compare;
+                              case 4:
+                                resword = &wordlist[62];
+                                goto compare;
+                              case 5:
+                                resword = &wordlist[63];
+                                goto compare;
+                              case 7:
+                                resword = &wordlist[64];
+                                goto compare;
+                              case 8:
+                                resword = &wordlist[65];
+                                goto compare;
+                              case 11:
+                                resword = &wordlist[66];
+                                goto compare;
+                              case 12:
+                                resword = &wordlist[67];
+                                goto compare;
+                              case 13:
+                                resword = &wordlist[68];
+                                goto compare;
+                              case 15:
+                                resword = &wordlist[69];
+                                goto compare;
+                              case 16:
+                                resword = &wordlist[70];
+                                goto compare;
+                              case 17:
+                                resword = &wordlist[71];
+                                goto compare;
+                              case 19:
+                                resword = &wordlist[72];
+                                goto compare;
+                              case 20:
+                                resword = &wordlist[73];
+                                goto compare;
+                              case 21:
+                                resword = &wordlist[74];
+                                goto compare;
+                              case 22:
+                                resword = &wordlist[75];
+                                goto compare;
+                              case 23:
+                                resword = &wordlist[76];
+                                goto compare;
+                              case 25:
+                                resword = &wordlist[77];
+                                goto compare;
+                              case 27:
+                                resword = &wordlist[78];
+                                goto compare;
+                              case 29:
+                                resword = &wordlist[79];
+                                goto compare;
+                              case 30:
+                                resword = &wordlist[80];
+                                goto compare;
+                            }
+                        }
+                      else
+                        {
+                          switch (key - 162)
+                            {
+                              case 0:
+                                resword = &wordlist[81];
+                                goto compare;
+                              case 1:
+                                resword = &wordlist[82];
+                                goto compare;
+                              case 3:
+                                resword = &wordlist[83];
+                                goto compare;
+                              case 4:
+                                resword = &wordlist[84];
+                                goto compare;
+                              case 6:
+                                resword = &wordlist[85];
+                                goto compare;
+                              case 9:
+                                resword = &wordlist[86];
+                                goto compare;
+                              case 10:
+                                resword = &wordlist[87];
+                                goto compare;
+                              case 11:
+                                resword = &wordlist[88];
+                                goto compare;
+                              case 13:
+                                resword = &wordlist[89];
+                                goto compare;
+                              case 15:
+                                resword = &wordlist[90];
+                                goto compare;
+                              case 17:
+                                resword = &wordlist[91];
+                                goto compare;
+                              case 18:
+                                resword = &wordlist[92];
+                                goto compare;
+                              case 19:
+                                resword = &wordlist[93];
+                                goto compare;
+                              case 20:
+                                resword = &wordlist[94];
+                                goto compare;
+                              case 21:
+                                resword = &wordlist[95];
+                                goto compare;
+                              case 23:
+                                resword = &wordlist[96];
+                                goto compare;
+                              case 24:
+                                resword = &wordlist[97];
+                                goto compare;
+                              case 29:
+                                resword = &wordlist[98];
+                                goto compare;
+                              case 30:
+                                resword = &wordlist[99];
+                                goto compare;
+                              case 34:
+                                resword = &wordlist[100];
+                                goto compare;
+                            }
+                        }
+                    }
+                }
+            }
+          else
+            {
+              if (key < 278)
+                {
+                  if (key < 243)
+                    {
+                      switch (key - 197)
+                        {
+                          case 0:
+                            resword = &wordlist[101];
+                            goto compare;
+                          case 4:
+                            resword = &wordlist[102];
+                            goto compare;
+                          case 5:
+                            resword = &wordlist[103];
+                            goto compare;
+                          case 6:
+                            resword = &wordlist[104];
+                            goto compare;
+                          case 9:
+                            resword = &wordlist[105];
+                            goto compare;
+                          case 10:
+                            resword = &wordlist[106];
+                            goto compare;
+                          case 14:
+                            resword = &wordlist[107];
+                            goto compare;
+                          case 16:
+                            resword = &wordlist[108];
+                            goto compare;
+                          case 23:
+                            resword = &wordlist[109];
+                            goto compare;
+                          case 24:
+                            resword = &wordlist[110];
+                            goto compare;
+                          case 25:
+                            resword = &wordlist[111];
+                            goto compare;
+                          case 26:
+                            resword = &wordlist[112];
+                            goto compare;
+                          case 29:
+                            resword = &wordlist[113];
+                            goto compare;
+                          case 31:
+                            resword = &wordlist[114];
+                            goto compare;
+                          case 35:
+                            resword = &wordlist[115];
+                            goto compare;
+                          case 36:
+                            resword = &wordlist[116];
+                            goto compare;
+                          case 39:
+                            resword = &wordlist[117];
+                            goto compare;
+                          case 40:
+                            resword = &wordlist[118];
+                            goto compare;
+                          case 43:
+                            resword = &wordlist[119];
+                            goto compare;
+                          case 45:
+                            resword = &wordlist[120];
+                            goto compare;
+                        }
+                    }
+                  else
+                    {
+                      switch (key - 243)
+                        {
+                          case 0:
+                            resword = &wordlist[121];
+                            goto compare;
+                          case 1:
+                            resword = &wordlist[122];
+                            goto compare;
+                          case 2:
+                            resword = &wordlist[123];
+                            goto compare;
+                          case 3:
+                            resword = &wordlist[124];
+                            goto compare;
+                          case 4:
+                            resword = &wordlist[125];
+                            goto compare;
+                          case 5:
+                            resword = &wordlist[126];
+                            goto compare;
+                          case 6:
+                            resword = &wordlist[127];
+                            goto compare;
+                          case 7:
+                            resword = &wordlist[128];
+                            goto compare;
+                          case 8:
+                            resword = &wordlist[129];
+                            goto compare;
+                          case 10:
+                            resword = &wordlist[130];
+                            goto compare;
+                          case 14:
+                            resword = &wordlist[131];
+                            goto compare;
+                          case 17:
+                            resword = &wordlist[132];
+                            goto compare;
+                          case 18:
+                            resword = &wordlist[133];
+                            goto compare;
+                          case 19:
+                            resword = &wordlist[134];
+                            goto compare;
+                          case 20:
+                            resword = &wordlist[135];
+                            goto compare;
+                          case 22:
+                            resword = &wordlist[136];
+                            goto compare;
+                          case 27:
+                            resword = &wordlist[137];
+                            goto compare;
+                          case 30:
+                            resword = &wordlist[138];
+                            goto compare;
+                          case 31:
+                            resword = &wordlist[139];
+                            goto compare;
+                          case 34:
+                            resword = &wordlist[140];
+                            goto compare;
+                        }
+                    }
+                }
+              else
+                {
+                  if (key < 323)
+                    {
+                      switch (key - 278)
+                        {
+                          case 0:
+                            resword = &wordlist[141];
+                            goto compare;
+                          case 2:
+                            resword = &wordlist[142];
+                            goto compare;
+                          case 5:
+                            resword = &wordlist[143];
+                            goto compare;
+                          case 9:
+                            resword = &wordlist[144];
+                            goto compare;
+                          case 12:
+                            resword = &wordlist[145];
+                            goto compare;
+                          case 17:
+                            resword = &wordlist[146];
+                            goto compare;
+                          case 18:
+                            resword = &wordlist[147];
+                            goto compare;
+                          case 19:
+                            resword = &wordlist[148];
+                            goto compare;
+                          case 20:
+                            resword = &wordlist[149];
+                            goto compare;
+                          case 21:
+                            resword = &wordlist[150];
+                            goto compare;
+                          case 22:
+                            resword = &wordlist[151];
+                            goto compare;
+                          case 23:
+                            resword = &wordlist[152];
+                            goto compare;
+                          case 28:
+                            resword = &wordlist[153];
+                            goto compare;
+                          case 30:
+                            resword = &wordlist[154];
+                            goto compare;
+                          case 33:
+                            resword = &wordlist[155];
+                            goto compare;
+                          case 34:
+                            resword = &wordlist[156];
+                            goto compare;
+                          case 35:
+                            resword = &wordlist[157];
+                            goto compare;
+                          case 36:
+                            resword = &wordlist[158];
+                            goto compare;
+                          case 37:
+                            resword = &wordlist[159];
+                            goto compare;
+                          case 39:
+                            resword = &wordlist[160];
+                            goto compare;
+                        }
+                    }
+                  else
+                    {
+                      if (key < 400)
+                        {
+                          switch (key - 323)
+                            {
+                              case 0:
+                                resword = &wordlist[161];
+                                goto compare;
+                              case 1:
+                                resword = &wordlist[162];
+                                goto compare;
+                              case 2:
+                                resword = &wordlist[163];
+                                goto compare;
+                              case 4:
+                                resword = &wordlist[164];
+                                goto compare;
+                              case 5:
+                                resword = &wordlist[165];
+                                goto compare;
+                              case 8:
+                                resword = &wordlist[166];
+                                goto compare;
+                              case 10:
+                                resword = &wordlist[167];
+                                goto compare;
+                              case 11:
+                                resword = &wordlist[168];
+                                goto compare;
+                              case 12:
+                                resword = &wordlist[169];
+                                goto compare;
+                              case 15:
+                                resword = &wordlist[170];
+                                goto compare;
+                              case 16:
+                                resword = &wordlist[171];
+                                goto compare;
+                              case 17:
+                                resword = &wordlist[172];
+                                goto compare;
+                              case 18:
+                                resword = &wordlist[173];
+                                goto compare;
+                              case 27:
+                                resword = &wordlist[174];
+                                goto compare;
+                              case 32:
+                                resword = &wordlist[175];
+                                goto compare;
+                              case 33:
+                                resword = &wordlist[176];
+                                goto compare;
+                              case 34:
+                                resword = &wordlist[177];
+                                goto compare;
+                              case 39:
+                                resword = &wordlist[178];
+                                goto compare;
+                              case 46:
+                                resword = &wordlist[179];
+                                goto compare;
+                              case 52:
+                                resword = &wordlist[180];
+                                goto compare;
+                              case 58:
+                                resword = &wordlist[181];
+                                goto compare;
+                            }
+                        }
+                      else
+                        {
+                          switch (key - 400)
+                            {
+                              case 0:
+                                resword = &wordlist[182];
+                                goto compare;
+                              case 6:
+                                resword = &wordlist[183];
+                                goto compare;
+                              case 11:
+                                resword = &wordlist[184];
+                                goto compare;
+                              case 15:
+                                resword = &wordlist[185];
+                                goto compare;
+                              case 25:
+                                resword = &wordlist[186];
+                                goto compare;
+                              case 26:
+                                resword = &wordlist[187];
+                                goto compare;
+                              case 28:
+                                resword = &wordlist[188];
+                                goto compare;
+                              case 30:
+                                resword = &wordlist[189];
+                                goto compare;
+                              case 36:
+                                resword = &wordlist[190];
+                                goto compare;
+                              case 41:
+                                resword = &wordlist[191];
+                                goto compare;
+                              case 46:
+                                resword = &wordlist[192];
+                                goto compare;
+                              case 67:
+                                resword = &wordlist[193];
+                                goto compare;
+                              case 71:
+                                resword = &wordlist[194];
+                                goto compare;
+                              case 80:
+                                resword = &wordlist[195];
+                                goto compare;
+                              case 93:
+                                resword = &wordlist[196];
+                                goto compare;
+                              case 94:
+                                resword = &wordlist[197];
+                                goto compare;
+                              case 105:
+                                resword = &wordlist[198];
+                                goto compare;
+                              case 106:
+                                resword = &wordlist[199];
+                                goto compare;
+                              case 160:
+                                resword = &wordlist[200];
+                                goto compare;
+                              case 174:
+                                resword = &wordlist[201];
+                                goto compare;
+                            }
+                        }
+                    }
+                }
+            }
+          return 0;
+        compare:
+          {
+            register const char *s = resword->ldbl_name;
+
+            if (*str == *s && !strcmp (str + 1, s + 1))
+              return resword;
+          }
+        }
+    }
+  return 0;
+}
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-ibm128-dlfcn.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-ibm128-dlfcn.c
new file mode 100644
index 0000000000..50d4deedd4
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-ibm128-dlfcn.c
@@ -0,0 +1 @@
+#include <test-ieee128-dlfcn.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/test-ieee128-dlfcn.c b/sysdeps/ieee754/ldbl-128ibm-compat/test-ieee128-dlfcn.c
new file mode 100644
index 0000000000..3ce3feb572
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/test-ieee128-dlfcn.c
@@ -0,0 +1,41 @@
+/* Test IEEE128 ldbl wrappers for dl*sym work.
+   Copyright (C) 2020 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/>.  */
+
+#include <dlfcn.h>
+#include <stdio.h>
+#include <string.h>
+
+static int
+do_test (void)
+{
+  void *sym = dlsym (RTLD_DEFAULT, "printf");
+  Dl_info info;
+  int is_printfieee128;
+
+  dladdr (sym, &info);
+  is_printfieee128 = strcmp (info.dli_sname, "__printfieee128");
+  printf ("dladdr (RTLD_DEFAULT, \"printf\") -> %s\n", info.dli_sname);
+
+#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
+  return is_printfieee128;
+#else
+  return !is_printfieee128;
+#endif
+}
+
+#include <support/test-driver.c>
diff --git a/sysdeps/ieee754/ldbl-128ibm-compat/unmange_ieee128_syms.py b/sysdeps/ieee754/ldbl-128ibm-compat/unmange_ieee128_syms.py
new file mode 100755
index 0000000000..6386efd5b8
--- /dev/null
+++ b/sysdeps/ieee754/ldbl-128ibm-compat/unmange_ieee128_syms.py
@@ -0,0 +1,121 @@
+#!/usr/bin/python3
+# Produce gperf hash table input for dlsym mangling
+# Copyright (C) 2020 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/>.
+
+import re
+import argparse
+
+hash_header = """\
+%{
+
+/* Hash table lookup for ldbl == ieee128 symbols.
+   This is generated by unmange_ieee128_syms.py
+   Copyright (C) 2020 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
+   <http://www.gnu.org/licenses/>.  */
+
+%}
+struct ldbl_ieee128 { const char *ldbl_name; const char *ieee128_name; };
+%%
+"""
+
+"""These symbols map many to one.  These are added unconditionally."""
+static_mangles = {
+    "dreml": "__remainderieee128",
+    "gammal": "__lgammaieee128"
+}
+
+"""Non-standard manglings we must handle case by case."""
+weird_unmangles = {
+    "nexttoward_to_ieee128": "nexttoward",
+    "nexttowardf_to_ieee128": "nexttowardf"
+}
+
+def unmangle_libc(func):
+    """libc (and libdl) symbols which are otherwise unsuffixed by ieee128."""
+    return re.sub("ieee128", "", func);
+
+def unmangle_libm(func):
+    """Math symbols which transform via trivial suffice replacement."""
+    return re.sub("ieee128", "l", func);
+
+def is_libc_sym(func):
+    """Symbols in libc append the ieee128 suffix without replacing one."""
+    return re.match("(.*printf.*)|(.*scanf.*)|(.*err.*)|(.*sys.*)|(.*warn.*)" +
+                    "|(.*strfmon.*)|(.*argp.*)|(.*dlv?sym.*)", func)
+
+def blacklist(func):
+    """Symbols which should not be un-mangled."""
+    return re.match(".*isoc99.*", func)
+
+def main():
+    """ 
+        Read the local Versions symbol, and unmangle any
+        any IEEE128 redirect symbols.
+    """
+
+    parser = argparse.ArgumentParser(
+        description='Generate mangling gperf input ldbl redirects with dlsym/.')
+    parser.add_argument('--input', metavar='VERSIONS_FILE', required=True,
+                        help='Versions file to parse')
+    parser.add_argument('--output', metavar='GPERF_FILE', required=True,
+                        help='Output file to place hash')
+    args = parser.parse_args()
+
+    syms = []
+    mangles = static_mangles
+
+    # Slurp up all symbols.  We don't really care
+    # which library they belong to.  Strip the
+    # leading __ from the name too.
+    with open(args.input, 'r') as ver_file:
+        for line in ver_file:
+            m = re.match(r"[\t ]+__(.*);", line)
+            if m:
+                syms.append(m.group(1))
+
+    for s in syms:
+        if blacklist(s):
+            continue
+        elif s in weird_unmangles:
+            mangles[weird_unmangles[s]] = "__" + s
+        elif is_libc_sym(s):
+            mangles[unmangle_libc(s)] = "__" + s
+        else:
+            mangles[unmangle_libm(s)] = "__" + s
+
+    with open(args.output, 'w') as output_file:
+        output_file.write(hash_header)
+        for m in sorted(mangles.keys()):
+            output_file.write("%s, \"%s\"\n" % (m, mangles[m]))
+        
+if __name__ == '__main__':
+    main()
