<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.lib.glibc.alpha">
    <title>gmane.comp.lib.glibc.alpha</title>
    <link>http://blog.gmane.org/gmane.comp.lib.glibc.alpha</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22382"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22365"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22363"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22361"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22354"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22344"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22339"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22314"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22311"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22300"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22298"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22286"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22279"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22269"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22263"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22262"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22260"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22256"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22253"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22250"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22382">
    <title>RFA: Port maintainers: Convert WORDSIZE[32|64]/ld to abi-variants</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22382</link>
    <description>&lt;pre&gt;Hi, Glibc Port Maintainers,

Here is a patch to convert WORDSIZE[32|64]/ld in shlib-versions to
abi-variants in CPU/Makefile to support more than one ABI in
gnu/lib-names.h, gnu/stubs.h and bits/syscall.h:

1. For non-biarch architectures, there is nothing to do.
2. For biarch/triarch architectures where there are no soname differences,
you need to rename syscall-list-* variables in CPU/Makefile to abi-*.
If the default ABI for the build isn't the first one on abi-variants, you
should also define default-abi:

---
# The default ABI is 64.
default-abi := 64
---

3. For biarch/triarch architectures where there are soname differences,
in addition to renaming syscall-list-* variables in CPU/Makefile to
abi-* and defining default-abi, you also need to define

abi-XX-ld-soname := your ld.so soname.

where XX is the ABI variant, like

---
# We don't need any header files.
abi-includes :=

abi-variants := 32 64 x32

abi-32-options := -D__i386__ -U__x86_64__
abi-32-condition := !defined __x86_64__
abi-32-ld-soname := ld-linux.so.2
abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__
abi-64-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __LP64__
abi-64-ld-soname := ld-linux-x86-64.so.2
abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
abi-x32-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __ILP32__
abi-x32-ld-soname := ld-linux-x32.so.2
----

Please test it and let me know if it works for you.

BTW, this patch is on hjl/abi branch.

Thanks.


H.J.
---
---
 ChangeLog                                   |   47 ++++++++++++++++++++++
 Makeconfig                                  |   56 +++++++++++++++++++++-----
 Makefile                                    |   23 +++++++++--
 include/stubs-biarch.h                      |   12 ------
 scripts/lib-names.awk                       |   51 ++++--------------------
 scripts/soversions.awk                      |   11 -----
 shlib-versions                              |   23 -----------
 sysdeps/unix/sysv/linux/Makefile            |   53 ++++++++++++-------------
 sysdeps/unix/sysv/linux/i386/Implies        |    1 +
 sysdeps/unix/sysv/linux/i386/Makefile       |    3 +
 sysdeps/unix/sysv/linux/powerpc/Makefile    |   11 +++--
 sysdeps/unix/sysv/linux/s390/Makefile       |   11 +++--
 sysdeps/unix/sysv/linux/sparc/Makefile      |   12 +++--
 sysdeps/unix/sysv/linux/x86/Makefile        |   14 +++++++
 sysdeps/unix/sysv/linux/x86_64/64/Makefile  |    2 +
 sysdeps/unix/sysv/linux/x86_64/Implies      |    1 +
 sysdeps/unix/sysv/linux/x86_64/Makefile     |    6 ---
 sysdeps/unix/sysv/linux/x86_64/x32/Makefile |    3 +
 sysdeps/x86_64/64/shlib-versions            |    1 -
 sysdeps/x86_64/x32/shlib-versions           |    1 -
 20 files changed, 189 insertions(+), 153 deletions(-)
 delete mode 100644 include/stubs-biarch.h
 create mode 100644 sysdeps/unix/sysv/linux/i386/Implies
 create mode 100644 sysdeps/unix/sysv/linux/x86/Makefile
 create mode 100644 sysdeps/unix/sysv/linux/x86_64/64/Makefile

diff --git a/ChangeLog b/ChangeLog
index 0c7a24b..f88b6a6 100644
--- a/ChangeLog
+++ b/ChangeLog
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -39,6 +39,53 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 
 2012-05-25  H.J. Lu  &amp;lt;hongjiu.lu&amp;lt; at &amp;gt;intel.com&amp;gt;
 
+[BZ #14112]
+* Makeconfig (default-abi): New macro.
+(abi-includes): Likewise.
+($(common-objpfx)soversions.mk): Remove WORDSIZE check.  Use
+$(abi-$(default-abi)-lib-soname) for soname if defined.
+($(common-objpfx)gnu/lib-names.stmp): Generate from
+abi-variants.
+* Makefile (installed-stubs): Likewise.
+* include/stubs-biarch.h: Removed.
+* scripts/lib-names.awk: Only handle one library at a time.
+* scripts/soversions.awk: Remove WORDSIZE support.
+* shlib-versions: Remove WORDSIZE and ld entries.
+* sysdeps/unix/sysv/linux/Makefile (syscall-list-variants):
+Removed.
+(syscall-list-default-condition): Likewise.
+(syscall-list-default-condition): Likewise.
+(syscall-list-includes): Likewise.
+($(objpfx)bits/syscall%h $(objpfx)bits/syscall%d): Replace
+syscall-list-* with abi-*.  Handle undefined abi-variants.
+* sysdeps/unix/sysv/linux/i386/Makefile (default-abi): New macro.
+* sysdeps/unix/sysv/linux/i386/Implies: New file.
+* sysdeps/unix/sysv/linux/x86/Makefile: Likewise.
+* sysdeps/unix/sysv/linux/x86_64/64/Makefile: Likewise.
+* sysdeps/unix/sysv/linux/x86_64/Implies: Add unix/sysv/linux/x86.
+* sysdeps/unix/sysv/linux/x86_64/Makefile (syscall-list-variants):
+Removed.
+(syscall-list-32-options): Likewise.
+(syscall-list-32-condition): Likewise.
+(syscall-list-64-options): Likewise.
+(syscall-list-64-condition): Likewise.
+* sysdeps/unix/sysv/linux/x86_64/x32/Makefile (default-abi): New
+macro.
+* sysdeps/unix/sysv/linux/powerpc/Makefile (syscall-list-*):
+Renamed to ...
+(abi-*): This.
+(abi-64-ld-soname): New macro.
+* sysdeps/unix/sysv/linux/s390/Makefile: Likewise.
+* sysdeps/unix/sysv/linux/sparc/Makefile (syscall-list-*):
+Renamed to ...
+(abi-*): This.
+(abi-32-ld-soname): New macro.
+(abi-64-ld-soname): Likewise.
+* sysdeps/x86_64/64/shlib-versions: Remove ld entry.
+* sysdeps/x86_64/x32/shlib-versions: Likewise.
+
+2012-05-25  H.J. Lu  &amp;lt;hongjiu.lu&amp;lt; at &amp;gt;intel.com&amp;gt;
+
 * configure.in: Define the default includes to being none.
 * configure: Regenerated.
 
diff --git a/Makeconfig b/Makeconfig
index b4b2963..df7545f 100644
--- a/Makeconfig
+++ b/Makeconfig
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -791,6 +791,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifeq (yes, $(build-shared))
 sed '/^[ ]*#/d;/^[ ]*$$/d' $&amp;lt; &amp;gt; $&amp;lt; at &amp;gt;T
 mv -f $&amp;lt; at &amp;gt;T $&amp;lt; at &amp;gt;
 
+# To generate a header to support more than one ABI for different
+# architecture variants, the CPU/Makefile defines abi-variants to be a
+# list of names for those variants (e.g. 32 64), and, for each variant,
+# defines abi-$(variant)-condition to be the condition for those options
+# to use in a C #if condition.  abi-includes may be defined to a list of
+# headers to include in the generated header, if the default does not
+# suffice.
+
+ifdef abi-variants
+ifndef default-abi
+default-abi = $(firstword $(abi-variants))
+endif
+endif
+
+ifndef abi-includes
+abi-includes := bits/wordsize.h
+endif
+
 # Process the shlib-versions file, which tells us what shared library
 # version numbers to use when we install shared objects on this system.
 # We need to wait until $(subdirs) is complete.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -816,24 +834,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
        -f $^ &amp;gt; $&amp;lt; at &amp;gt;T
 mv -f $&amp;lt; at &amp;gt;T $&amp;lt; at &amp;gt;
 $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
-(seen_DEFAULT=0; seen_WORDSIZE32=0; seen_WORDSIZE64=0; \
- while read which lib number setname; do \
+(while read which lib number setname; do \
    eval seen_$$which=1; \
    test x"$$which" != xABI || echo abi-name = "$$lib"; \
    test x"$$which" = xDEFAULT || continue; \
    case $$number in \
      [0-9]*) echo "$$lib.so-version=.$$number"; \
      echo "all-sonames+=$$lib=$$lib.so\$$($$lib.so-version)";;\
-     *)     echo "$$lib.so-version=$$number"; \
+     *)     echo "$$lib.so-version=\$$(if \$$(abi-$(default-abi)-$$lib-soname),\$$(abi-$(default-abi)-$$lib-soname),$$number)"; \
      echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
    esac; \
  done; \
- case "$$seen_DEFAULT$$seen_WORDSIZE32$$seen_WORDSIZE64" in \
-   100) echo biarch = no;; \
-   101) echo biarch = 32;; \
-   ?1?) echo biarch = 64;; \
-   *) echo &amp;gt;&amp;amp;2 BUG; exit 2;; \
- esac; \
  echo soversions.mk-done = t;) &amp;lt; $&amp;lt; &amp;gt; $&amp;lt; at &amp;gt;T; exit 0
 mv -f $&amp;lt; at &amp;gt;T $&amp;lt; at &amp;gt;
 endif
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -850,8 +861,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp; &amp;lt; at &amp;gt;:
 $(common-objpfx)gnu/lib-names.stmp: $(..)scripts/lib-names.awk \
     $(common-objpfx)soversions.i
 $(make-target-directory)
-&amp;lt; at &amp;gt;rm -f ${&amp;lt; at &amp;gt;:stmp=T} $&amp;lt; at &amp;gt;
-LC_ALL=C $(AWK) -f $^ &amp;gt; ${&amp;lt; at &amp;gt;:stmp=T}
+{ \
+ echo '/* This file is automatically generated.';\
+ echo '   It defines macros to allow user program to find the shared'; \
+ echo '   library files which come as part of GNU libc.  */'; \
+ echo '#ifndef __GNU_LIB_NAMES_H'; \
+ echo '#define __GNU_LIB_NAMES_H1'; \
+ echo ''; \
+ $(if $(abi-includes), \
+  $(foreach h,$(abi-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
+  echo '';) \
+ $(if $(abi-variants), \
+ $(foreach v,$(abi-variants),\
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)'; \
+ ($(foreach s,$(all-sonames), \
+   $(if $(abi-$(v)-$(firstword $(subst =, ,$(s)))-soname),\
+     echo $(firstword $(subst =, ,$(s)))=$(abi-$(v)-$(firstword $(subst =, ,$(s)))-soname);, \
+     echo $(s);))) \
+ | LC_ALL=C $(AWK) -v multi=1 -f $(firstword $^) | LC_ALL=C sort;) \
+ $(if $(abi-$(v)-condition),echo '#endif';)), \
+ ($(foreach s,$(all-sonames), echo $(s);)) \
+ | LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort;) \
+ echo ''; \
+ echo '#endif/* gnu/lib-names.h */'; \
+} &amp;gt;  ${&amp;lt; at &amp;gt;:stmp=T}
 $(move-if-change) ${&amp;lt; at &amp;gt;:stmp=T} ${&amp;lt; at &amp;gt;:stmp=h}
 touch $&amp;lt; at &amp;gt;
 endif
diff --git a/Makefile b/Makefile
index c0a0cfb..89588c1 100644
--- a/Makefile
+++ b/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -170,14 +170,29 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; others: $(common-objpfx)testrun.sh
 
 subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
 
-ifeq ($(biarch),no)
+ifndef abi-variants
 installed-stubs = $(inst_includedir)/gnu/stubs.h
 else
-installed-stubs = $(inst_includedir)/gnu/stubs-$(biarch).h
+installed-stubs = $(inst_includedir)/gnu/stubs-$(default-abi).h
 
-$(inst_includedir)/gnu/stubs.h: include/stubs-biarch.h $(+force)
+$(inst_includedir)/gnu/stubs.h: $(common-objpfx)soversions.mk $(+force)
 $(make-target-directory)
-$(INSTALL_DATA) $&amp;lt; $&amp;lt; at &amp;gt;
+{ \
+ echo '/* This file is automatically generated.';\
+ echo "   This file selects the right generated file of \`__stub_FUNCTION' macros";\
+ echo '   based on the architecture being compiled for.  */'; \
+ echo ''; \
+ $(foreach h,$(abi-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
+ echo ''; \
+ $(foreach v,$(abi-variants),\
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)'; \
+ echo '# include &amp;lt;gnu/stubs-$(v).h&amp;gt;'); \
+ $(if $(abi-$(v)-condition),echo '#endif';) \
+ rm -f $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
+ ) \
+} &amp;gt; $(&amp;lt; at &amp;gt;:.d=.h).new
+mv -f $(&amp;lt; at &amp;gt;:.d=.h).new $(&amp;lt; at &amp;gt;:.d=.h)
 
 install-others-nosubdir: $(installed-stubs)
 endif
diff --git a/include/stubs-biarch.h b/include/stubs-biarch.h
deleted file mode 100644
index fc086bd..0000000
--- a/include/stubs-biarch.h
+++ /dev/null
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,12 +0,0 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-/* This file selects the right generated file of `__stub_FUNCTION' macros
-   based on the architecture being compiled for.  */
-
-#include &amp;lt;bits/wordsize.h&amp;gt;
-
-#if __WORDSIZE == 32
-# include &amp;lt;gnu/stubs-32.h&amp;gt;
-#elif __WORDSIZE == 64
-# include &amp;lt;gnu/stubs-64.h&amp;gt;
-#else
-# error "unexpected value for __WORDSIZE macro"
-#endif
diff --git a/scripts/lib-names.awk b/scripts/lib-names.awk
index 77e6668..ccb7b7f 100644
--- a/scripts/lib-names.awk
+++ b/scripts/lib-names.awk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,18 +1,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # awk script for soversions.i -&amp;gt; gnu/lib-names.h; see Makeconfig.
 
-$1 != "DEFAULT" { multi = 1 }
-
 #
 {
-  lib = $2;
-  version = $3;
-  if ($3 !~ /^[0-9]/) {
-    soname = $3;
-    extra = $3;
+  split($1, fields, "=")
+  lib = fields[1];
+  soname = version = fields[2];
+  sub(/^.*=/, "", soname);
+  sub(/^lib.*\.so\./, "", version);
+  if ($soname !~ /^lib/) {
+    extra = soname;
     sub(/\.so.*$/, "", extra);
   }
   else {
-    soname = lib ".so." $3;
     extra = "";
   }
   soname = "\"" soname "\"";
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,41 +25,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $1 != "DEFAULT" { multi = 1 }
 }
 
 END {
-  print "/* This file is automatically generated.";
-  print "   It defines macros to allow user program to find the shared";
-  print "   library files which come as part of GNU libc.  */";
-  print "#ifndef __GNU_LIB_NAMES_H";
-  print "#define __GNU_LIB_NAMES_H1";
-  print "";
-
-  pfx = multi ? "# define " : "#define ";
   for (elt in macros) {
     split(elt, x);
-    line = sprintf("%-40s%s", pfx x[2], macros[elt]);
-    if (x[1] in lines)
-      lines[x[1]] = lines[x[1]] "\n" line;
-    else
-      lines[x[1]] = line;
-  }
-
-  if (multi) {
-    # Print these in a fixed order so the result is identical
-    # on both sides of the coin.
-    if (!("WORDSIZE32" in lines))
-      lines["WORDSIZE32"] = lines["DEFAULT"];
-    if (!("WORDSIZE64" in lines))
-      lines["WORDSIZE64"] = lines["DEFAULT"];
-    print "#include &amp;lt;bits/wordsize.h&amp;gt;\n";
-    print "#if __WORDSIZE == 32";
-    cmd = "LC_ALL=C sort"; print lines["WORDSIZE32"] | cmd; close(cmd);
-    print "#else"
-    cmd = "LC_ALL=C sort"; print lines["WORDSIZE64"] | cmd; close(cmd);
-    print "#endif";
+    pfx = multi ? "# define " : "#define ";
+    printf("%-40s%s\n", pfx x[2], macros[elt]);
   }
-  else {
-    cmd = "LC_ALL=C sort"; print lines["DEFAULT"] | cmd; close(cmd);
-  }
-
-  print "";
-  print "#endif/* gnu/lib-names.h */"
 }
diff --git a/scripts/soversions.awk b/scripts/soversions.awk
index 55577cc..dc8afdc 100644
--- a/scripts/soversions.awk
+++ b/scripts/soversions.awk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7,17 +7,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; BEGIN {
 
 { thiscf = $1 }
 
-$2 ~ /WORDSIZE[3264]/ {
-  if ((config ~ thiscf) &amp;amp;&amp;amp; !othercf) {
-    othercf = $3;
-    sub(/&amp;lt; at &amp;gt;CPU&amp;lt; at &amp;gt;/, cpu, othercf);
-    sub(/&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;/, vendor, othercf);
-    sub(/&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;/, os, othercf);
-    configs[othercf] = $2;
-  }
-  next;
-}
-
 $2 == "ABI" {
   if ((config ~ thiscf) &amp;amp;&amp;amp; !abiname) {
     abiname = $3;
diff --git a/shlib-versions b/shlib-versions
index b8ed1e9..9d8e21d 100644
--- a/shlib-versions
+++ b/shlib-versions
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -18,11 +18,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # library has no third column.  The defaults must precede the entries they
 # apply to.
 #
-# An entry with WORDSIZE* in the second column gives an alternate
-# configuration tuple whose macros will be conditionally defined in
-# gnu/lib-names.h; &amp;lt; at &amp;gt;CPU&amp;lt; at &amp;gt;, &amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;, &amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt; can be used in the third
-# column to compose the alternate tuple matched against the patterns here.
-
 # ConfigurationDEFAULTEarliest symbol set
 # ----------------------------------------------------------
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,17 +25,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; s390x-.*-linux.*        DEFAULTGLIBC_2.2
 powerpc64-.*-linux.*DEFAULTGLIBC_2.3
 .*-.*-gnu-gnu.*DEFAULTGLIBC_2.2.6
 
-# ConfigurationWORDSIZE[32|64]Alternate configuration
-# ----------------------------------------------
-x86_64-.*-.*WORDSIZE32i686-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-i.86-.*-.*WORDSIZE64x86_64-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-s390x-.*-.*WORDSIZE32s390-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-s390-.*-.*WORDSIZE64s390x-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-powerpc64-.*-.*WORDSIZE32powerpc-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-powerpc.*-.*-.*WORDSIZE64powerpc64-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-sparc64.*-.*-.*WORDSIZE32sparc-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-sparc.*-.*-.*WORDSIZE64sparc64-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-
 # ConfigurationABIIdentifier for ABI data files
 # ----------------------------------------------------
 sparc64.*-.*-.*ABIsparc64-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -69,13 +53,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sparc64.*-.*-linux.*libc=6GLIBC_2.2
 # libc.so.0.3 is the first Hurd libc using libio.
 .*-.*-gnu-gnu.*libc=0.3
 
-# The dynamic loader also requires different names.
-i.86-.*-linux.*ld=ld-linux.so.2
-sparc64.*-.*-linux.*ld=ld-linux.so.2GLIBC_2.2
-sparc.*-.*-linux.*ld=ld-linux.so.2
-sh.*-.*-linux.*ld=ld-linux.so.2GLIBC_2.2
-s390x-.*-linux.*ld=ld64.so.1GLIBC_2.2
-powerpc64.*-.*-linux.*ld=ld64.so.1GLIBC_2.3
 # We use the ELF ABI standard name for the default.
 .*-.*-.*ld=ld.so.1
 
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 70fd137..21b5607 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,25 +43,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; tests += tst-clone
 # Generate the list of SYS_* macros for the system calls (__NR_* macros).
 
 # If there is more than one syscall list for different architecture
-# variants, the CPU/Makefile defines syscall-list-variants to be a
-# list of names for those variants (e.g. 32bit 64bit), and, for each
-# variant, defines syscall-list-$(variant)-options to be compiler
-# options to cause &amp;lt;asm/unistd.h&amp;gt; to define the desired list of
-# syscalls and syscall-list-$(variant)-condition to be the condition
-# for those options to use in a C #if condition.
-# syscall-list-includes may be defined to a list of headers to include
+# variants, the CPU/Makefile defines abi-variants to be a list of names
+# for those variants (e.g. 32 64), and, for each variant, defines
+# abi-$(variant)-options to be compiler options to cause &amp;lt;asm/unistd.h&amp;gt;
+# to define the desired list of syscalls and abi-$(variant)-condition to
+# be the condition for those options to use in a C #if condition.
+# abi-includes may be defined to a list of headers to include
 # in the generated header, if the default does not suffice.
 
-ifndef syscall-list-variants
-syscall-list-variants := default
-syscall-list-default-options :=
-syscall-list-default-condition :=
-endif
-
-ifndef syscall-list-includes
-syscall-list-includes := bits/wordsize.h
-endif
-
 $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h
 $(make-target-directory)
 { \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -71,31 +60,41 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/
  echo '# error "Never use &amp;lt;bits/syscall.h&amp;gt; directly; include &amp;lt;sys/syscall.h&amp;gt; instead."'; \
  echo '#endif'; \
  echo ''; \
- $(foreach h,$(syscall-list-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
+ $(foreach h,$(abi-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
  echo ''; \
- $(foreach v,$(syscall-list-variants),\
+ $(if $(abi-variants), \
+ $(foreach v,$(abi-variants),\
  $(CC) -E -MD -MP -MF $(&amp;lt; at &amp;gt;:.h=.d)-t$(v) -MT '$(&amp;lt; at &amp;gt;:.d=.h) $(&amp;lt; at &amp;gt;:.h=.d)' \
-       -x c $(sysincludes) $&amp;lt; $(syscall-list-$(v)-options) \
+       -x c $(sysincludes) $&amp;lt; $(abi-$(v)-options) \
        -D_LIBC -dM | \
  sed -n 's&amp;lt; at &amp;gt;^#define __NR_\([^ ]*\) .*$$&amp;lt; at &amp;gt;#define SYS_\1 __NR_\1&amp;lt; at &amp;gt;p' | \
  LC_ALL=C sort &amp;gt; $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
- $(if $(syscall-list-$(v)-condition),\
- echo '#if $(syscall-list-$(v)-condition)';) \
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)';) \
  cat $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
- $(if $(syscall-list-$(v)-condition),echo '#endif';) \
+ $(if $(abi-$(v)-condition),echo '#endif';) \
  rm -f $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
- ) \
+ ), \
+ $(CC) -E -MD -MP -MF $(&amp;lt; at &amp;gt;:.h=.d)-t$(v) -MT '$(&amp;lt; at &amp;gt;:.d=.h) $(&amp;lt; at &amp;gt;:.h=.d)' \
+       -x c $(sysincludes) $&amp;lt; \
+       -D_LIBC -dM | \
+ sed -n 's&amp;lt; at &amp;gt;^#define __NR_\([^ ]*\) .*$$&amp;lt; at &amp;gt;#define SYS_\1 __NR_\1&amp;lt; at &amp;gt;p' | \
+ LC_ALL=C sort;) \
 } &amp;gt; $(&amp;lt; at &amp;gt;:.d=.h).new
 mv -f $(&amp;lt; at &amp;gt;:.d=.h).new $(&amp;lt; at &amp;gt;:.d=.h)
+ifdef abi-variants
 ifneq (,$(objpfx))
 sed $(sed-remove-objpfx) \
- $(foreach v,$(syscall-list-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) &amp;gt; $(&amp;lt; at &amp;gt;:.h=.d)-t3
+ $(foreach v,$(abi-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) &amp;gt; $(&amp;lt; at &amp;gt;:.h=.d)-t3
 else
-cat $(foreach v,$(syscall-list-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) \
+cat $(foreach v,$(abi-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) \
  &amp;gt; $(&amp;lt; at &amp;gt;:.h=.d)-t3
 endif
-rm -f $(foreach v,$(syscall-list-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v))
+rm -f $(foreach v,$(abi-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v))
 mv -f $(&amp;lt; at &amp;gt;:.h=.d)-t3 $(&amp;lt; at &amp;gt;:.h=.d)
+else
+mv -f $(&amp;lt; at &amp;gt;:.h=.d)-t $(&amp;lt; at &amp;gt;:.h=.d)
+endif
 
 ifndef no_deps
 # Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
diff --git a/sysdeps/unix/sysv/linux/i386/Implies b/sysdeps/unix/sysv/linux/i386/Implies
new file mode 100644
index 0000000..ccc7eaa
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/i386/Implies
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+unix/sysv/linux/x86
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index fc5a524..f4585d7 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,3 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# The default ABI is 32.
+default-abi := 32
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86 call_pselect6 call_fallocate
 sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h
diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile
index 55311a4..f6dccd9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/Makefile
+++ b/sysdeps/unix/sysv/linux/powerpc/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -U__powerpc64__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -D__powerpc64__
-syscall-list-64bit-condition := __WORDSIZE == 64
+abi-variants := 32 64
+abi-32-options := -U__powerpc64__
+abi-32-condition := __WORDSIZE == 32
+abi-64-options := -D__powerpc64__
+abi-64-condition := __WORDSIZE == 64
+abi-64-ld-soname := ld64.so.1
 
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile
index fb20fb0..45b1922 100644
--- a/sysdeps/unix/sysv/linux/s390/Makefile
+++ b/sysdeps/unix/sysv/linux/s390/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -U__s390x__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -D__s390x__
-syscall-list-64bit-condition := __WORDSIZE == 64
+abi-variants := 32 64
+abi-32-options := -U__s390x__
+abi-32-condition := __WORDSIZE == 32
+abi-64-options := -D__s390x__
+abi-64-condition := __WORDSIZE == 64
+abi-64-ld-soname := ld64.so.1
 
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
diff --git a/sysdeps/unix/sysv/linux/sparc/Makefile b/sysdeps/unix/sysv/linux/sparc/Makefile
index d769c48..a71679d 100644
--- a/sysdeps/unix/sysv/linux/sparc/Makefile
+++ b/sysdeps/unix/sysv/linux/sparc/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -U__sparc_v9__ -U__arch64__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -D__sparc_v9__ -D__arch64__
-syscall-list-64bit-condition := __WORDSIZE == 64
+abi-variants := 32 64
+abi-32-options := -U__sparc_v9__ -U__arch64__
+abi-32-condition := __WORDSIZE == 32
+abi-32-ld-soname := ld-linux.so.2
+abi-64-options := -D__sparc_v9__ -D__arch64__
+abi-64-condition := __WORDSIZE == 64
+abi-64-ld-soname := $(abi-32-ld-soname)
 
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
diff --git a/sysdeps/unix/sysv/linux/x86/Makefile b/sysdeps/unix/sysv/linux/x86/Makefile
new file mode 100644
index 0000000..cf4a55c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# We don't need any header files.
+abi-includes :=
+
+abi-variants := 32 64 x32
+
+abi-32-options := -D__i386__ -U__x86_64__
+abi-32-condition := !defined __x86_64__
+abi-32-ld-soname := ld-linux.so.2
+abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__
+abi-64-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __LP64__
+abi-64-ld-soname := ld-linux-x86-64.so.2
+abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
+abi-x32-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __ILP32__
+abi-x32-ld-soname := ld-linux-x32.so.2
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/Makefile b/sysdeps/unix/sysv/linux/x86_64/64/Makefile
new file mode 100644
index 0000000..a7b6dc5
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/64/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,2 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# The default ABI is 64.
+default-abi := 64
diff --git a/sysdeps/unix/sysv/linux/x86_64/Implies b/sysdeps/unix/sysv/linux/x86_64/Implies
index 8d91c80..c7a65c9 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Implies
+++ b/sysdeps/unix/sysv/linux/x86_64/Implies
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1 +1,2 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+unix/sysv/linux/x86
 unix/sysv/linux/wordsize-64
diff --git a/sysdeps/unix/sysv/linux/x86_64/Makefile b/sysdeps/unix/sysv/linux/x86_64/Makefile
index 59a6b0a..dd4ab59 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Makefile
+++ b/sysdeps/unix/sysv/linux/x86_64/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,9 +1,3 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -D__i386__ -U__x86_64__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -U__i386__ -D__x86_64__
-syscall-list-64bit-condition := __WORDSIZE == 64
-
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl
 sysdep_headers += sys/perm.h sys/reg.h sys/debugreg.h sys/io.h
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/Makefile b/sysdeps/unix/sysv/linux/x86_64/x32/Makefile
index aa78238..ecbdefb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/Makefile
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,3 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# The default ABI is x32.
+default-abi := x32
+
 ifeq ($(subdir),misc)
 sysdep_routines += arch_prctl
 endif
diff --git a/sysdeps/x86_64/64/shlib-versions b/sysdeps/x86_64/64/shlib-versions
index c797487..50dd908 100644
--- a/sysdeps/x86_64/64/shlib-versions
+++ b/sysdeps/x86_64/64/shlib-versions
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,3 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # ConfigurationDEFAULTEarliest symbol set
 # ----------------------------------------------------------
 x86_64-.*-linux.*DEFAULTGLIBC_2.2.5
-x86_64-.*-linux.*ld=ld-linux-x86-64.so.2GLIBC_2.2.5
diff --git a/sysdeps/x86_64/x32/shlib-versions b/sysdeps/x86_64/x32/shlib-versions
index d9f63e1..ae3979b 100644
--- a/sysdeps/x86_64/x32/shlib-versions
+++ b/sysdeps/x86_64/x32/shlib-versions
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,7 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # ConfigurationDEFAULTEarliest symbol set
 # ----------------------------------------------------------
 x86_64-.*-linux.*DEFAULTGLIBC_2.16
-x86_64-.*-linux.*ld=ld-linux-x32.so.2GLIBC_2.16
 
 # ConfigurationABIIdentifier for ABI data files
 # ----------------------------------------------------
&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-26T13:36:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22365">
    <title>X32 is almost done</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22365</link>
    <description>&lt;pre&gt;Hi,

Thanks for everyone, x32 is almost done.  The last remaining issue is

http://sourceware.org/bugzilla/show_bug.cgi?id=14112

I have a proposal on hjl/abi branch.  I updated x32 wiki page:

http://sourceware.org/glibc/wiki/x32

to describe how to bootstrap x32 GCC and GLIBC.  I verified the procedure
on openSUSE 12.1:

hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt; cat /etc/os-release
NAME=openSUSE
VERSION = 12.1 (Asparagus)
VERSION_ID="12.1"
PRETTY_NAME="openSUSE 12.1 (Asparagus) (x86_64)"
ID=opensuse
hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt; cat x.c
#include &amp;lt;stdio.h&amp;gt;

int
main (void)
{
  printf ("hello\n");
  return 0;
}
hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt; /usr/gcc-x32-4.7/bin/x86_64-linux-gcc -mx32 x.c
hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt; file a.out
a.out: ELF 32-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.39, not
stripped
hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt; ./a.out
hello
hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt; uname -a
Linux gnu-32 3.4.0-1.9-desktop+ #3 SMP PREEMPT Fri May 25 05:30:28 PDT
2012 x86_64 x86_64 x86_64 GNU/Linux
hjl&amp;lt; at &amp;gt;gnu-32:/tmp&amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-25T22:22:34</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22363">
    <title>[PATCH] Fix underflow and inexact signalling in soft-fp when packing.</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22363</link>
    <description>&lt;pre&gt;
This fixes the long double math testsuite regressions that started
showing up on Sparc with Joseph's recent change to check underflow.

The corresponding changes needed in glibc-ports for powerpc/nofp,
mips, and alpha should be pretty straightforward.

In the main glibc tree, sparc is the only consumer of this code.

Ok to commit?

* soft-fp/op-common.h (_FP_PACK_CANONICAL): Only set underflow if
the underflow exception is enabled and the non-zero result is
tiny, or the non-zero result is tiny and there will be a loss of
accuracy.  Set inexact if overflow is detected after rounding, but
not if it is detected before.
* soft-fp/soft-fp.h (FP_CUR_EXCEPTIONS): Define.
(FP_TRAPPING_EXCEPTIONS): Provide default define.
* sysdeps/sparc/sparc32/soft-fp/sfp-machine.h (_FP_DECL_EX):
Initialize _fcw to zero.
(FP_TRAPPING_EXCEPTIONS): Define.
(FP_HANDLE_EXCEPTIONS): Add dummy use of _fcw.
* sysdeps/sparc/sparc64/soft-fp/sfp-machine.h (_FP_DECL_EX):
Initialize _fcw to zero.
(FP_TRAPPING_EXCEPTIONS): Define.
(FP_HANDLE_EXCEPTIONS): Add dummy use of _fcw.

diff --git a/soft-fp/op-common.h b/soft-fp/op-common.h
index b70026f..4b0fd6c 100644
--- a/soft-fp/op-common.h
+++ b/soft-fp/op-common.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -220,7 +220,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; do {\
 if (X##_e &amp;lt;= _FP_WFRACBITS_##fs)\
   {\
     _FP_FRAC_SRS_##wc(X, X##_e, _FP_WFRACBITS_##fs);\
-    _FP_ROUND(wc, X);\
     if (_FP_FRAC_HIGH_##fs(X)\
 &amp;amp; (_FP_OVERFLOW_##fs &amp;gt;&amp;gt; 1))\
       {\
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -229,10 +228,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; do {\
       }\
     else\
       {\
-X##_e = 0;\
-_FP_FRAC_SRL_##wc(X, _FP_WORKBITS);\
-FP_SET_EXCEPTION(FP_EX_UNDERFLOW);\
+_FP_ROUND(wc, X);\
+if (_FP_FRAC_HIGH_##fs(X)\
+   &amp;amp; (_FP_OVERFLOW_##fs &amp;gt;&amp;gt; 1))\
+  {\
+    X##_e = 1;\
+    _FP_FRAC_SET_##wc(X, _FP_ZEROFRAC_##wc);\
+    FP_SET_EXCEPTION(FP_EX_INEXACT);\
+  }\
+else\
+  {\
+    X##_e = 0;\
+    _FP_FRAC_SRL_##wc(X, _FP_WORKBITS);\
+  }\
       }\
+    if ((FP_CUR_EXCEPTIONS &amp;amp; FP_EX_INEXACT) ||\
+(FP_TRAPPING_EXCEPTIONS &amp;amp; FP_EX_UNDERFLOW))\
+FP_SET_EXCEPTION(FP_EX_UNDERFLOW);\
   }\
 else\
   {\
diff --git a/soft-fp/soft-fp.h b/soft-fp/soft-fp.h
index 46cb1cf..750c7fe 100644
--- a/soft-fp/soft-fp.h
+++ b/soft-fp/soft-fp.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -128,6 +128,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define FP_CLEAR_EXCEPTIONS\
   _fex = 0
 
+#define FP_CUR_EXCEPTIONS\
+  (_fex)
+
+#ifndef FP_TRAPPING_EXCEPTIONS
+#define FP_TRAPPING_EXCEPTIONS 0
+#endif
+
 #define _FP_ROUND_NEAREST(wc, X)\
 do {\
     if ((_FP_FRAC_LOW_##wc(X) &amp;amp; 15) != _FP_WORK_ROUND)\
diff --git a/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h b/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
index 8cdc7c2..fb8c723 100644
--- a/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
+++ b/sysdeps/sparc/sparc32/soft-fp/sfp-machine.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -184,18 +184,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define FP_EX_DIVZERO(1 &amp;lt;&amp;lt; 1)
 #define FP_EX_INEXACT(1 &amp;lt;&amp;lt; 0)
 
-#define _FP_DECL_EXfpu_control_t _fcw
+#define _FP_DECL_EXfpu_control_t _fcw = 0
 
 #define FP_INIT_ROUNDMODE\
 do {\
   _FPU_GETCW(_fcw);\
 } while (0)
 
+#define FP_TRAPPING_EXCEPTIONS ((_fcw &amp;gt;&amp;gt; 23) &amp;amp; 0x1f)
+
 /* Simulate exceptions using double arithmetics. */
 extern double ___Q_simulate_exceptions(int exc);
 
 #define FP_HANDLE_EXCEPTIONS\
 do {\
+  (void) (_fcw);\
   if (!_fex)\
     {\
       /* This is the common case, so we do it inline.\
diff --git a/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h b/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
index 7ec804d..1f10dbb 100644
--- a/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
+++ b/sysdeps/sparc/sparc64/soft-fp/sfp-machine.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -92,13 +92,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; do {\
 #define FP_EX_DIVZERO(1 &amp;lt;&amp;lt; 1)
 #define FP_EX_INEXACT(1 &amp;lt;&amp;lt; 0)
 
-#define _FP_DECL_EXfpu_control_t _fcw
+#define _FP_DECL_EXfpu_control_t _fcw = 0
 
 #define FP_INIT_ROUNDMODE\
 do {\
   _FPU_GETCW(_fcw);\
 } while (0)
 
+#define FP_TRAPPING_EXCEPTIONS ((_fcw &amp;gt;&amp;gt; 23) &amp;amp; 0x1f)
 #define FP_INHIBIT_RESULTS ((_fcw &amp;gt;&amp;gt; 23) &amp;amp; _fex)
 
 /* Simulate exceptions using double arithmetics. */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -106,6 +107,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern double __Qp_handle_exceptions(int exc);
 
 #define FP_HANDLE_EXCEPTIONS\
 do {\
+  (void) (_fcw);\
   if (!_fex)\
     {\
       /* This is the common case, so we do it inline.\

&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2012-05-25T22:09:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22361">
    <title>Remove __ASSUME_NEW_GETRLIMIT_SYSCALL</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22361</link>
    <description>&lt;pre&gt;__ASSUME_NEW_GETRLIMIT_SYSCALL is defined in kernel-features.h for x86
and powerpc, and in ports for arm, for m68k (&amp;gt;= 2.4.12) and tile.  It
is used in sysdeps/unix/sysv/linux/i386/getrlimit.c and
sysdeps/unix/sysv/linux/i386/setrlimit.c.  Those files are in turn
included for powerpc, s390-32, sh and (in ports) am33, arm and m68k.

This relates to system calls now called ugetrlimit and setrlimit.  As
of 2.4.0-test1, s390, sh and m68k all have those syscalls wired up
(this is about the syscall tables rather than what's in asm/unistd.h,
since we already require &amp;gt;= 2.6.19.1 kernel headers).  So although
those architectures do not define __ASSUME_NEW_GETRLIMIT_SYSCALL (at
all, or for 2.4.0 in the case of m68k) it's nevertheless safe to
assume the syscalls to be present for those architectures.  Finally,
am33 (mn10300) support was added in 2.6.25, and when added the support
for those syscalls was present (and kernel versions before support for
an architecture was officially added to Linux are not of concern to
glibc).

Thus it is safe to remove the conditionals on this macro, and the
definitions of this macro.  I propose this patch to do so.  Tested
x86.

2012-05-25  Joseph Myers  &amp;lt;joseph&amp;lt; at &amp;gt;codesourcery.com&amp;gt;

* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_NEW_GETRLIMIT_SYSCALL): Remove all definitions.
* sysdeps/unix/sysv/linux/i386/getrlimit.c: Do not include
kernel-features.h.
[!__ASSUME_NEW_GETRLIMIT_SYSCALL]: Remove conditional code.
[__ASSUME_NEW_GETRLIMIT_SYSCALL]: Make code unconditional.
* sysdeps/unix/sysv/linux/i386/setrlimit.c Do not include
kernel-features.h.
[!__ASSUME_NEW_GETRLIMIT_SYSCALL]: Remove conditional code.
[__ASSUME_NEW_GETRLIMIT_SYSCALL]: Make code unconditional.

diff --git a/sysdeps/unix/sysv/linux/i386/getrlimit.c b/sysdeps/unix/sysv/linux/i386/getrlimit.c
index 21a2c00..e18f9de 100644
--- a/sysdeps/unix/sysv/linux/i386/getrlimit.c
+++ b/sysdeps/unix/sysv/linux/i386/getrlimit.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-/* Copyright (C) 1999, 2000, 2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 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
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -23,58 +23,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;shlib-compat.h&amp;gt;
 #include &amp;lt;bp-checks.h&amp;gt;
 
-#include &amp;lt;kernel-features.h&amp;gt;
-
 extern int __new_getrlimit (enum __rlimit_resource resource,
     struct rlimit *__unbounded rlimits);
 
-
-/* Linux 2.3.25 introduced a new system call since the types used for
-   the limits are now unsigned.  */
-#if defined __NR_ugetrlimit &amp;amp;&amp;amp; !defined __ASSUME_NEW_GETRLIMIT_SYSCALL
-int __have_no_new_getrlimit;
-#endif
+/* Consider moving to syscalls.list.  */
 
 int
 __new_getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits)
 {
-#ifdef __ASSUME_NEW_GETRLIMIT_SYSCALL
   return INLINE_SYSCALL (ugetrlimit, 2, resource, CHECK_1 (rlimits));
-#else
-  int result;
-
-# ifdef __NR_ugetrlimit
-  if (__have_no_new_getrlimit &amp;lt;= 0)
-    {
-      result = INLINE_SYSCALL (ugetrlimit, 2, resource, CHECK_1 (rlimits));
-
-      /* If the system call is available remember this fact and return.  */
-      if (result != -1 || errno != ENOSYS)
-{
-  __have_no_new_getrlimit = -1;
-  return result;
-}
-
-      /* Remember that the system call is not available.  */
-      __have_no_new_getrlimit = 1;
-    }
-# endif
-
-  /* Fall back to the old system call.  */
-  result = INLINE_SYSCALL (getrlimit, 2, resource, CHECK_1 (rlimits));
-
-  if (result == -1)
-    return result;
-
-  /* We might have to correct the limits values.  Since the old values
-     were signed the infinity value is too small.  */
-  if (rlimits-&amp;gt;rlim_cur == RLIM_INFINITY &amp;gt;&amp;gt; 1)
-    rlimits-&amp;gt;rlim_cur = RLIM_INFINITY;
-  if (rlimits-&amp;gt;rlim_max == RLIM_INFINITY &amp;gt;&amp;gt; 1)
-    rlimits-&amp;gt;rlim_max = RLIM_INFINITY;
-
-  return result;
-#endif
 }
 
 weak_alias (__new_getrlimit, __getrlimit);
diff --git a/sysdeps/unix/sysv/linux/i386/setrlimit.c b/sysdeps/unix/sysv/linux/i386/setrlimit.c
index d6f904f..7683b85 100644
--- a/sysdeps/unix/sysv/linux/i386/setrlimit.c
+++ b/sysdeps/unix/sysv/linux/i386/setrlimit.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,4 +1,4 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-/* Copyright (C) 1999, 2000, 2003, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 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
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -24,53 +24,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;shlib-compat.h&amp;gt;
 #include &amp;lt;bp-checks.h&amp;gt;
 
-#include &amp;lt;kernel-features.h&amp;gt;
-
 extern int __new_setrlimit (enum __rlimit_resource resource,
     const struct rlimit *__unboundedrlimits);
 
-/* Linux 2.3.25 introduced a new system call since the types used for
-   the limits are now unsigned.  */
-#if defined __NR_ugetrlimit &amp;amp;&amp;amp; !defined __ASSUME_NEW_GETRLIMIT_SYSCALL
-extern int __have_no_new_getrlimit; /* from getrlimit.c */
-#endif
+/* Consider moving to syscalls.list.  */
 
 int
 __new_setrlimit (enum __rlimit_resource resource, const struct rlimit *rlimits)
 {
-#ifdef __ASSUME_NEW_GETRLIMIT_SYSCALL
   return INLINE_SYSCALL (setrlimit, 2, resource, CHECK_1 (rlimits));
-#else
-  struct rlimit rlimits_small;
-
-# ifdef __NR_ugetrlimit
-  if (__have_no_new_getrlimit == 0)
-    {
-      /* Check if the new ugetrlimit syscall exists.  We must do this
- first because older kernels don't reject negative rlimit
- values in setrlimit.  */
-      int result = INLINE_SYSCALL (ugetrlimit, 2, resource, __ptrvalue (&amp;amp;rlimits_small));
-      if (result != -1 || errno != ENOSYS)
-/* The syscall exists.  */
-__have_no_new_getrlimit = -1;
-      else
-/* The syscall does not exist.  */
-__have_no_new_getrlimit = 1;
-    }
-  if (__have_no_new_getrlimit &amp;lt; 0)
-    return INLINE_SYSCALL (setrlimit, 2, resource, CHECK_1 (rlimits));
-# endif
-
-  /* We might have to correct the limits values.  Since the old values
-     were signed the new values might be too large.  */
-  rlimits_small.rlim_cur = MIN ((unsigned long int) rlimits-&amp;gt;rlim_cur,
-RLIM_INFINITY &amp;gt;&amp;gt; 1);
-  rlimits_small.rlim_max = MIN ((unsigned long int) rlimits-&amp;gt;rlim_max,
-RLIM_INFINITY &amp;gt;&amp;gt; 1);
-
-  /* Use the adjusted values.  */
-  return INLINE_SYSCALL (setrlimit, 2, resource, __ptrvalue (&amp;amp;rlimits_small));
-#endif
 }
 
 weak_alias (__new_setrlimit, __setrlimit);
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index fd2f1db..0ea453d 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -40,11 +40,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /* The sendfile syscall was introduced in 2.2.0.  */
 #define __ASSUME_SENDFILE1
 
-/* On x86 another `getrlimit' syscall was added in 2.3.25.  */
-#ifdef __i386__
-# define __ASSUME_NEW_GETRLIMIT_SYSCALL1
-#endif
-
 /* On x86 the truncate64/ftruncate64 syscalls were introduced in 2.3.31.  */
 #ifdef __i386__
 # define __ASSUME_TRUNCATE64_SYSCALL1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -68,11 +63,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # define __ASSUME_STAT64_SYSCALL1
 #endif
 
-/* I know for sure that getrlimit are in 2.3.35 on powerpc.  */
-#ifdef __powerpc__
-# define __ASSUME_NEW_GETRLIMIT_SYSCALL1
-#endif
-
 /* I know for sure that these are in 2.3.35 on powerpc. But PowerPC64 does not
    support separate 64-bit syscalls, already 64-bit.  */
 #if defined __powerpc__ &amp;amp;&amp;amp; !defined __powerpc64__

&lt;/pre&gt;</description>
    <dc:creator>Joseph S. Myers</dc:creator>
    <dc:date>2012-05-25T21:29:10</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22354">
    <title>PATCH: Don't use header files in glibc configure</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22354</link>
    <description>&lt;pre&gt;Hi,

Here is the patch adapted from the patch for the same problem in libgcc:

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53183

When we configure glibc, we shouldn't use any headers.  Tested on
Linux/ia32,x32,x86-64. There are no changes in config.h nor config.make.
OK to install?

Thanks.


H.J.
---
* configure.in: Define the default includes to being none.
* configure: Regenerated.

diff --git a/configure b/configure
index 09a0637..7fa4941 100755
--- a/configure
+++ b/configure
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -567,42 +567,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; PACKAGE_URL='http://www.gnu.org/software/glibc/'
 
 ac_unique_file="include/features.h"
 enable_option_checking=no
-# Factoring default headers for most tests.
-ac_includes_default="\
-#include &amp;lt;stdio.h&amp;gt;
-#ifdef HAVE_SYS_TYPES_H
-# include &amp;lt;sys/types.h&amp;gt;
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include &amp;lt;sys/stat.h&amp;gt;
-#endif
-#ifdef STDC_HEADERS
-# include &amp;lt;stdlib.h&amp;gt;
-# include &amp;lt;stddef.h&amp;gt;
-#else
-# ifdef HAVE_STDLIB_H
-#  include &amp;lt;stdlib.h&amp;gt;
-# endif
-#endif
-#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS &amp;amp;&amp;amp; defined HAVE_MEMORY_H
-#  include &amp;lt;memory.h&amp;gt;
-# endif
-# include &amp;lt;string.h&amp;gt;
-#endif
-#ifdef HAVE_STRINGS_H
-# include &amp;lt;strings.h&amp;gt;
-#endif
-#ifdef HAVE_INTTYPES_H
-# include &amp;lt;inttypes.h&amp;gt;
-#endif
-#ifdef HAVE_STDINT_H
-# include &amp;lt;stdint.h&amp;gt;
-#endif
-#ifdef HAVE_UNISTD_H
-# include &amp;lt;unistd.h&amp;gt;
-#endif"
-
+ac_includes_default='/* none */'
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 RELEASE
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -635,8 +600,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; libc_cv_gcc_unwind_find_fde
 libc_extra_cflags
 CPPUNDEFS
 sizeof_long_double
-EGREP
-GREP
 have_selinux
 have_libcap
 have_libaudit
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1928,37 +1891,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; rm -f conftest.val
   as_fn_set_status $ac_retval
 
 } # ac_fn_c_compute_int
-
-# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists and can be compiled using the include files in
-# INCLUDES, setting the cache variable VAR accordingly.
-ac_fn_c_check_header_compile ()
-{
-  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" &amp;gt;&amp;amp;5
-$as_echo_n "checking for $2... " &amp;gt;&amp;amp;6; }
-if eval \${$3+:} false; then :
-  $as_echo_n "(cached) " &amp;gt;&amp;amp;6
-else
-  cat confdefs.h - &amp;lt;&amp;lt;_ACEOF &amp;gt;conftest.$ac_ext
-/* end confdefs.h.  */
-$4
-#include &amp;lt;$2&amp;gt;
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$3=yes"
-else
-  eval "$3=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$3
-       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" &amp;gt;&amp;amp;5
-$as_echo "$ac_res" &amp;gt;&amp;amp;6; }
-  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_compile
 cat &amp;gt;config.log &amp;lt;&amp;lt;_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2344,6 +2276,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
 
+# Glibc should not depend on any header files
+
+
 
 
 subdirs="$subdirs "
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7342,265 +7277,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fi
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" &amp;gt;&amp;amp;5
-$as_echo_n "checking for grep that handles long lines and -e... " &amp;gt;&amp;amp;6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " &amp;gt;&amp;amp;6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_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
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" &amp;amp;&amp;amp; as_dir=.
-    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"
-      { test -f "$ac_path_GREP" &amp;amp;&amp;amp; $as_test_x "$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&amp;gt;&amp;amp;1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 &amp;gt;"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" &amp;gt;"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' &amp;gt;&amp;gt; "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' &amp;lt; "conftest.nl" &amp;gt;"conftest.out" 2&amp;gt;/dev/null || break
-    diff "conftest.out" "conftest.nl" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || break
-    as_fn_arith $ac_count + 1 &amp;amp;&amp;amp; ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_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
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 &amp;amp;&amp;amp; break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found &amp;amp;&amp;amp; 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
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" &amp;gt;&amp;amp;5
-$as_echo "$ac_cv_path_GREP" &amp;gt;&amp;amp;6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" &amp;gt;&amp;amp;5
-$as_echo_n "checking for egrep... " &amp;gt;&amp;amp;6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " &amp;gt;&amp;amp;6
-else
-  if echo a | $GREP -E '(a|b)' &amp;gt;/dev/null 2&amp;gt;&amp;amp;1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_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
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" &amp;amp;&amp;amp; as_dir=.
-    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"
-      { test -f "$ac_path_EGREP" &amp;amp;&amp;amp; $as_test_x "$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&amp;gt;&amp;amp;1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 &amp;gt;"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" &amp;gt;"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' &amp;gt;&amp;gt; "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' &amp;lt; "conftest.nl" &amp;gt;"conftest.out" 2&amp;gt;/dev/null || break
-    diff "conftest.out" "conftest.nl" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1 || break
-    as_fn_arith $ac_count + 1 &amp;amp;&amp;amp; ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_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
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 &amp;amp;&amp;amp; break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found &amp;amp;&amp;amp; break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; 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
-fi
-
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" &amp;gt;&amp;amp;5
-$as_echo "$ac_cv_path_EGREP" &amp;gt;&amp;amp;6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" &amp;gt;&amp;amp;5
-$as_echo_n "checking for ANSI C header files... " &amp;gt;&amp;amp;6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " &amp;gt;&amp;amp;6
-else
-  cat confdefs.h - &amp;lt;&amp;lt;_ACEOF &amp;gt;conftest.$ac_ext
-/* end confdefs.h.  */
-#include &amp;lt;stdlib.h&amp;gt;
-#include &amp;lt;stdarg.h&amp;gt;
-#include &amp;lt;string.h&amp;gt;
-#include &amp;lt;float.h&amp;gt;
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - &amp;lt;&amp;lt;_ACEOF &amp;gt;conftest.$ac_ext
-/* end confdefs.h.  */
-#include &amp;lt;string.h&amp;gt;
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2&amp;gt;&amp;amp;5 |
-  $EGREP "memchr" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - &amp;lt;&amp;lt;_ACEOF &amp;gt;conftest.$ac_ext
-/* end confdefs.h.  */
-#include &amp;lt;stdlib.h&amp;gt;
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2&amp;gt;&amp;amp;5 |
-  $EGREP "free" &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - &amp;lt;&amp;lt;_ACEOF &amp;gt;conftest.$ac_ext
-/* end confdefs.h.  */
-#include &amp;lt;ctype.h&amp;gt;
-#include &amp;lt;stdlib.h&amp;gt;
-#if ((' ' &amp;amp; 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' &amp;lt;= (c) &amp;amp;&amp;amp; (c) &amp;lt;= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-   (('a' &amp;lt;= (c) &amp;amp;&amp;amp; (c) &amp;lt;= 'i') \
-     || ('j' &amp;lt;= (c) &amp;amp;&amp;amp; (c) &amp;lt;= 'r') \
-     || ('s' &amp;lt;= (c) &amp;amp;&amp;amp; (c) &amp;lt;= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) &amp;amp;&amp;amp; !(f)) || (!(e) &amp;amp;&amp;amp; (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i &amp;lt; 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-|| toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" &amp;gt;&amp;amp;5
-$as_echo "$ac_cv_header_stdc" &amp;gt;&amp;amp;6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" &amp;gt;&amp;gt;confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-  inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat &amp;gt;&amp;gt;confdefs.h &amp;lt;&amp;lt;_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
 # The cast to long int works around a bug in the HP C Compiler
 # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
 # declarations like `int a3[[(sizeof (unsigned char)) &amp;gt;= 0]];'.
diff --git a/configure.in b/configure.in
index 38b55a6..1e5d133 100644
--- a/configure.in
+++ b/configure.in
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5,6 +5,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; AC_CONFIG_SRCDIR([include/features.h])
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_AUX_DIR([scripts])
 
+# Glibc should not depend on any header files
+AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
+  [m4_divert_text([DEFAULTS],
+    [ac_includes_default='/* none */'])])
+
 dnl This is here so we can set $subdirs directly based on configure fragments.
 AC_CONFIG_SUBDIRS()
 

&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-25T20:27:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22344">
    <title>[PATCH] Suppress sign-conversion warning from FD_SET</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22344</link>
    <description>&lt;pre&gt;Greetings,

Using glibc-2.15 to compile this file:

#include &amp;lt;sys/select.h&amp;gt;
int foo(int fd) {
  fd_set fds;
  FD_SET(fd, &amp;amp;fds);
  return FD_ISSET(fd, &amp;amp;fds);
}

with 'gcc -O2 -D_FORTIFY_SOURCE=2 -Werror=sign-conversion -c t.c', results in:

t.c: In function 'foo':
t.c:4: error: conversion to 'long unsigned int' from 'int' may change the sign of the result
t.c:5: error: conversion to 'long unsigned int' from 'int' may change the sign of the result

Attached trivial patch fixes that.

Thanks,

--
Paul Pluzhnikov


2012-05-25  Paul Pluzhnikov  &amp;lt;ppluzhnikov&amp;lt; at &amp;gt;google.com&amp;gt;

* misc/bits/select2.h (__FD_ELT): Add cast to suppress warning.



diff --git a/misc/bits/select2.h b/misc/bits/select2.h
index 9679925..4a20e11 100644
--- a/misc/bits/select2.h
+++ b/misc/bits/select2.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,5 +1,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 /* Checking macros for select functions.
-   Copyright (C) 2011 Free Software Foundation, Inc.
+   Copyright (C) 2011, 2012 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
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -27,7 +27,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; extern unsigned long int __fdelt_warn (unsigned long int __d)
 #undef __FD_ELT
 #define__FD_ELT(d) \
   __extension__    \
-  ({ unsigned long int __d = (d);    \
+  ({ unsigned long int __d = (unsigned long int) (d);    \
      (__builtin_constant_p (__d)    \
       ? (__d &amp;gt;= __FD_SETSIZE    \
  ? __fdelt_warn (__d) : (__d / __NFDBITS))    \


&lt;/pre&gt;</description>
    <dc:creator>Paul Pluzhnikov</dc:creator>
    <dc:date>2012-05-25T16:27:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22339">
    <title>[PATCH] Fix fma test for underflow</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22339</link>
    <description>&lt;pre&gt;As discussed here
http://www.cygwin.com/ml/libc-alpha/2012-05/msg01782.html
and in BZ 14152, fma doesn't always set FE_UNDERFLOW.
So adjust the test.  Regtested on x86_64-linux.  Ok?

Or shall I ajdust the fmal test in the same manner?

2012-05-25  Marek Polacek  &amp;lt;polacek&amp;lt; at &amp;gt;redhat.com&amp;gt;

[BZ #14152]
* math/libm-test.inc (fma_test): Don't always expect underflow
exception.

--- libc/math/libm-test.inc.mp2012-05-25 14:34:08.639113677 +0200
+++ libc/math/libm-test.inc2012-05-25 14:44:29.347707291 +0200
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3970,7 +3970,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fma_test (void)
   TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION);
-  TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION);
+  /* Sometimes the FE_UNDERFLOW is not set, so be prepared.  See Bug 14152.  */
+  TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION_OK);
   TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983);
 #endif

 Marek

&lt;/pre&gt;</description>
    <dc:creator>Marek Polacek</dc:creator>
    <dc:date>2012-05-25T13:32:51</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22314">
    <title>underflow exceptions</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22314</link>
    <description>&lt;pre&gt;
Hey Joseph, just FYI your test to add underflow exceptions to
libm-test.inc is causing long double testsuite failures on 64-bit
sparc.

Specifically:

testing long double (without inline functions)
Failure: exp2 (-16400) == 0x1p-16400: Exception "Underflow" set
Failure: scalbn (min_value / 4, INT_MAX) == inf: Exception "Underflow" set
Failure: scalbln (min_value / 4, INT_MAX) == inf: Exception "Underflow" set
Failure: scalbln (min_value / 4, LONG_MAX) == inf: Exception "Underflow" set
Failure: scalbln (min_value / 4, 0x88000000) == inf: Exception "Underflow" set

Test suite completed:
  5478 test cases plus 4610 tests for exception flags executed.
  5 errors occurred.

I'll try to dig more deeply but I figured you might be able to tell
offhand whether this is some generic issue on 64-bit cpus or that
it might be prudent to relax the requirements.

&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2012-05-25T00:11:32</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22311">
    <title>PATCH: Convert WORDSIZE[32|64] to abi-variants</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22311</link>
    <description>&lt;pre&gt;Hi,

I extended syscall-list support to cover all generated files on hjl/abi
branch.  If a target supports more than one ABI, it can define the
appropriate abi-*-*, like sysdeps/unix/sysv/linux/x86_64/Makefile has

# We don't need any header files.
abi-includes :=

abi-32-options := -D__i386__ -U__x86_64__
abi-32-condition := !defined __x86_64__
abi-32-ld-soname := ld-linux.so.2
abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__
abi-64-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __LP64__
abi-64-ld-soname := ld-linux-x86-64.so.2
abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
abi-x32-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __ILP32__
abi-x32-ld-soname := ld-linux-x32.so.2

abi-variants is a list of ABIs and
sysdeps/unix/sysv/linux/x86_64/64/Makefile has

# The default ABI is 64.
default-abi := 64

We have duplicated information of ld-soname in shlib-versions and
sysdeps/unix/sysv/linux/x86_64/Makefile.  I can use the ld soname
in CPU/Makefile for everything.  Any comments?

Thanks.


H.J.
--
* Makeconfig (abi-includes): New macro.
($(common-objpfx)soversions.mk): Remove WORDSIZE check.
($(common-objpfx)gnu/lib-names.stmp): Generate from
abi-variants.
* Makefile (installed-stubs): Generate from abi-variants.
* include/stubs-biarch.h: Removed.
* scripts/lib-names.awk: Only handle one library at a time.
* scripts/soversions.awk: Remove WORDSIZE support.
* shlib-versions: Remove WORDSIZE.
* sysdeps/unix/sysv/linux/Makefile (syscall-list-variants):
Removed.
(syscall-list-default-condition): Likewise.
(syscall-list-default-condition): Likewise.
(syscall-list-includes): Likewise.
($(objpfx)bits/syscall%h $(objpfx)bits/syscall%d): Replace
syscall-list-* with abi-*.  Handle undefined abi-variants.
* sysdeps/unix/sysv/linux/i386/Makefile (abi-includes): New
macro.
(default-abi): Likewise.
(abi-variants): Likewise.
(abi-32-options): Likewise.
(abi-32-condition): Likewise.
(abi-64-options): Likewise.
(abi-64-condition): Likewise.
(abi-x32-options): Likewise.
(abi-x32-condition): Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/Makefile: New file.
* sysdeps/unix/sysv/linux/x86_64/Makefile (syscall-list-variants):
Removed.
(syscall-list-32-options): Likewise.
(syscall-list-32-condition): Likewise.
(syscall-list-64-options): Likewise.
(syscall-list-64-condition): Likewise.
(abi-variants): New macros.
(abi-includes): Likewise.
(abi-32-options): Likewise.
(abi-32-condition): Likewise.
(abi-64-options): Likewise.
(abi-64-condition): Likewise.
(abi-x32-options): Likewise.
(abi-x32-condition): Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/Makefile (default-abi): New
macro.
* sysdeps/unix/sysv/linux/powerpc/Makefile (syscall-list-variants):
Renamed to ...
(abi-variants): This.
(syscall-list-32bit-*): Renamed to ...
(abi-32-*): This.
(syscall-list-64bit-*): Renamed to ...
(abi-64-*): This.
* sysdeps/unix/sysv/linux/s390/Makefile: Likewise.
* sysdeps/unix/sysv/linux/sparc/Makefile: Likewise.
* sysdeps/unix/sysv/linux/powerpc/Makefile (abi-64-ld-soname):
New macro.
* sysdeps/unix/sysv/linux/s390/Makefile (abi-64-ld-soname):
Likewise.

diff --git a/Makeconfig b/Makeconfig
index b4b2963..3d087bc 100644
--- a/Makeconfig
+++ b/Makeconfig
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -791,6 +791,18 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifeq (yes, $(build-shared))
 sed '/^[ ]*#/d;/^[ ]*$$/d' $&amp;lt; &amp;gt; $&amp;lt; at &amp;gt;T
 mv -f $&amp;lt; at &amp;gt;T $&amp;lt; at &amp;gt;
 
+# To generate a header to support more than one ABI for different
+# architecture variants, the CPU/Makefile defines abi-variants to be a
+# list of names for those variants (e.g. 32 64), and, for each variant,
+# defines abi-$(variant)-condition to be the condition for those options
+# to use in a C #if condition.  abi-includes may be defined to a list of
+# headers to include in the generated header, if the default does not
+# suffice.
+
+ifndef abi-includes
+abi-includes := bits/wordsize.h
+endif
+
 # Process the shlib-versions file, which tells us what shared library
 # version numbers to use when we install shared objects on this system.
 # We need to wait until $(subdirs) is complete.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -816,8 +828,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(common-objpfx)soversions.i: $(..)scripts/soversions.awk \
        -f $^ &amp;gt; $&amp;lt; at &amp;gt;T
 mv -f $&amp;lt; at &amp;gt;T $&amp;lt; at &amp;gt;
 $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
-(seen_DEFAULT=0; seen_WORDSIZE32=0; seen_WORDSIZE64=0; \
- while read which lib number setname; do \
+(while read which lib number setname; do \
    eval seen_$$which=1; \
    test x"$$which" != xABI || echo abi-name = "$$lib"; \
    test x"$$which" = xDEFAULT || continue; \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -828,12 +839,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(common-objpfx)soversions.mk: $(common-objpfx)soversions.i $(..)Makeconfig
      echo "all-sonames+=$$lib=\$$($$lib.so-version)";;\
    esac; \
  done; \
- case "$$seen_DEFAULT$$seen_WORDSIZE32$$seen_WORDSIZE64" in \
-   100) echo biarch = no;; \
-   101) echo biarch = 32;; \
-   ?1?) echo biarch = 64;; \
-   *) echo &amp;gt;&amp;amp;2 BUG; exit 2;; \
- esac; \
  echo soversions.mk-done = t;) &amp;lt; $&amp;lt; &amp;gt; $&amp;lt; at &amp;gt;T; exit 0
 mv -f $&amp;lt; at &amp;gt;T $&amp;lt; at &amp;gt;
 endif
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -850,8 +855,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(common-objpfx)gnu/lib-names.h: $(common-objpfx)gnu/lib-names.stmp; &amp;lt; at &amp;gt;:
 $(common-objpfx)gnu/lib-names.stmp: $(..)scripts/lib-names.awk \
     $(common-objpfx)soversions.i
 $(make-target-directory)
-&amp;lt; at &amp;gt;rm -f ${&amp;lt; at &amp;gt;:stmp=T} $&amp;lt; at &amp;gt;
-LC_ALL=C $(AWK) -f $^ &amp;gt; ${&amp;lt; at &amp;gt;:stmp=T}
+{ \
+ echo '/* This file is automatically generated.';\
+ echo '   It defines macros to allow user program to find the shared'; \
+ echo '   library files which come as part of GNU libc.  */'; \
+ echo '#ifndef __GNU_LIB_NAMES_H'; \
+ echo '#define __GNU_LIB_NAMES_H1'; \
+ echo ''; \
+ $(if $(abi-includes), \
+  $(foreach h,$(abi-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
+  echo '';) \
+ $(if $(abi-variants), \
+ $(foreach v,$(abi-variants),\
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)'; \
+ ($(foreach s,$(all-sonames), \
+   $(if $(abi-$(v)-$(firstword $(subst =, ,$(s)))-soname),\
+     echo $(firstword $(subst =, ,$(s)))=$(abi-$(v)-$(firstword $(subst =, ,$(s)))-soname);, \
+     echo $(s);))) \
+ | LC_ALL=C $(AWK) -v multi=1 -f $(firstword $^) | LC_ALL=C sort;) \
+ $(if $(abi-$(v)-condition),echo '#endif';)), \
+ ($(foreach s,$(all-sonames), echo $(s);)) \
+ | LC_ALL=C $(AWK) -f $(firstword $^) | LC_ALL=C sort;) \
+ echo ''; \
+ echo '#endif/* gnu/lib-names.h */'; \
+} &amp;gt;  ${&amp;lt; at &amp;gt;:stmp=T}
 $(move-if-change) ${&amp;lt; at &amp;gt;:stmp=T} ${&amp;lt; at &amp;gt;:stmp=h}
 touch $&amp;lt; at &amp;gt;
 endif
diff --git a/Makefile b/Makefile
index c0a0cfb..8f43f14 100644
--- a/Makefile
+++ b/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -170,14 +170,32 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; others: $(common-objpfx)testrun.sh
 
 subdir-stubs := $(foreach dir,$(subdirs),$(common-objpfx)$(dir)/stubs)
 
-ifeq ($(biarch),no)
+ifndef abi-variants
 installed-stubs = $(inst_includedir)/gnu/stubs.h
 else
-installed-stubs = $(inst_includedir)/gnu/stubs-$(biarch).h
+ifndef default-abi
+default-abi = $(firstword $(abi-variants))
+endif
+installed-stubs = $(inst_includedir)/gnu/stubs-$(default-abi).h
 
-$(inst_includedir)/gnu/stubs.h: include/stubs-biarch.h $(+force)
+$(inst_includedir)/gnu/stubs.h: $(common-objpfx)soversions.mk $(+force)
 $(make-target-directory)
-$(INSTALL_DATA) $&amp;lt; $&amp;lt; at &amp;gt;
+{ \
+ echo '/* This file is automatically generated.';\
+ echo "   This file selects the right generated file of \`__stub_FUNCTION' macros";\
+ echo '   based on the architecture being compiled for.  */'; \
+ echo ''; \
+ $(foreach h,$(abi-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
+ echo ''; \
+ $(foreach v,$(abi-variants),\
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)'; \
+ echo '# include &amp;lt;gnu/stubs-$(v).h&amp;gt;'); \
+ $(if $(abi-$(v)-condition),echo '#endif';) \
+ rm -f $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
+ ) \
+} &amp;gt; $(&amp;lt; at &amp;gt;:.d=.h).new
+mv -f $(&amp;lt; at &amp;gt;:.d=.h).new $(&amp;lt; at &amp;gt;:.d=.h)
 
 install-others-nosubdir: $(installed-stubs)
 endif
diff --git a/include/stubs-biarch.h b/include/stubs-biarch.h
deleted file mode 100644
index fc086bd..0000000
--- a/include/stubs-biarch.h
+++ /dev/null
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,12 +0,0 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-/* This file selects the right generated file of `__stub_FUNCTION' macros
-   based on the architecture being compiled for.  */
-
-#include &amp;lt;bits/wordsize.h&amp;gt;
-
-#if __WORDSIZE == 32
-# include &amp;lt;gnu/stubs-32.h&amp;gt;
-#elif __WORDSIZE == 64
-# include &amp;lt;gnu/stubs-64.h&amp;gt;
-#else
-# error "unexpected value for __WORDSIZE macro"
-#endif
diff --git a/scripts/lib-names.awk b/scripts/lib-names.awk
index 77e6668..ccb7b7f 100644
--- a/scripts/lib-names.awk
+++ b/scripts/lib-names.awk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,18 +1,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # awk script for soversions.i -&amp;gt; gnu/lib-names.h; see Makeconfig.
 
-$1 != "DEFAULT" { multi = 1 }
-
 #
 {
-  lib = $2;
-  version = $3;
-  if ($3 !~ /^[0-9]/) {
-    soname = $3;
-    extra = $3;
+  split($1, fields, "=")
+  lib = fields[1];
+  soname = version = fields[2];
+  sub(/^.*=/, "", soname);
+  sub(/^lib.*\.so\./, "", version);
+  if ($soname !~ /^lib/) {
+    extra = soname;
     sub(/\.so.*$/, "", extra);
   }
   else {
-    soname = lib ".so." $3;
     extra = "";
   }
   soname = "\"" soname "\"";
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -26,41 +25,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $1 != "DEFAULT" { multi = 1 }
 }
 
 END {
-  print "/* This file is automatically generated.";
-  print "   It defines macros to allow user program to find the shared";
-  print "   library files which come as part of GNU libc.  */";
-  print "#ifndef __GNU_LIB_NAMES_H";
-  print "#define __GNU_LIB_NAMES_H1";
-  print "";
-
-  pfx = multi ? "# define " : "#define ";
   for (elt in macros) {
     split(elt, x);
-    line = sprintf("%-40s%s", pfx x[2], macros[elt]);
-    if (x[1] in lines)
-      lines[x[1]] = lines[x[1]] "\n" line;
-    else
-      lines[x[1]] = line;
-  }
-
-  if (multi) {
-    # Print these in a fixed order so the result is identical
-    # on both sides of the coin.
-    if (!("WORDSIZE32" in lines))
-      lines["WORDSIZE32"] = lines["DEFAULT"];
-    if (!("WORDSIZE64" in lines))
-      lines["WORDSIZE64"] = lines["DEFAULT"];
-    print "#include &amp;lt;bits/wordsize.h&amp;gt;\n";
-    print "#if __WORDSIZE == 32";
-    cmd = "LC_ALL=C sort"; print lines["WORDSIZE32"] | cmd; close(cmd);
-    print "#else"
-    cmd = "LC_ALL=C sort"; print lines["WORDSIZE64"] | cmd; close(cmd);
-    print "#endif";
+    pfx = multi ? "# define " : "#define ";
+    printf("%-40s%s\n", pfx x[2], macros[elt]);
   }
-  else {
-    cmd = "LC_ALL=C sort"; print lines["DEFAULT"] | cmd; close(cmd);
-  }
-
-  print "";
-  print "#endif/* gnu/lib-names.h */"
 }
diff --git a/scripts/soversions.awk b/scripts/soversions.awk
index 55577cc..dc8afdc 100644
--- a/scripts/soversions.awk
+++ b/scripts/soversions.awk
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7,17 +7,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; BEGIN {
 
 { thiscf = $1 }
 
-$2 ~ /WORDSIZE[3264]/ {
-  if ((config ~ thiscf) &amp;amp;&amp;amp; !othercf) {
-    othercf = $3;
-    sub(/&amp;lt; at &amp;gt;CPU&amp;lt; at &amp;gt;/, cpu, othercf);
-    sub(/&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;/, vendor, othercf);
-    sub(/&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;/, os, othercf);
-    configs[othercf] = $2;
-  }
-  next;
-}
-
 $2 == "ABI" {
   if ((config ~ thiscf) &amp;amp;&amp;amp; !abiname) {
     abiname = $3;
diff --git a/shlib-versions b/shlib-versions
index b8ed1e9..38fc7ea 100644
--- a/shlib-versions
+++ b/shlib-versions
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -18,11 +18,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # library has no third column.  The defaults must precede the entries they
 # apply to.
 #
-# An entry with WORDSIZE* in the second column gives an alternate
-# configuration tuple whose macros will be conditionally defined in
-# gnu/lib-names.h; &amp;lt; at &amp;gt;CPU&amp;lt; at &amp;gt;, &amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;, &amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt; can be used in the third
-# column to compose the alternate tuple matched against the patterns here.
-
 # ConfigurationDEFAULTEarliest symbol set
 # ----------------------------------------------------------
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,17 +25,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; s390x-.*-linux.*        DEFAULTGLIBC_2.2
 powerpc64-.*-linux.*DEFAULTGLIBC_2.3
 .*-.*-gnu-gnu.*DEFAULTGLIBC_2.2.6
 
-# ConfigurationWORDSIZE[32|64]Alternate configuration
-# ----------------------------------------------
-x86_64-.*-.*WORDSIZE32i686-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-i.86-.*-.*WORDSIZE64x86_64-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-s390x-.*-.*WORDSIZE32s390-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-s390-.*-.*WORDSIZE64s390x-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-powerpc64-.*-.*WORDSIZE32powerpc-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-powerpc.*-.*-.*WORDSIZE64powerpc64-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-sparc64.*-.*-.*WORDSIZE32sparc-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-sparc.*-.*-.*WORDSIZE64sparc64-&amp;lt; at &amp;gt;VENDOR&amp;lt; at &amp;gt;-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
-
 # ConfigurationABIIdentifier for ABI data files
 # ----------------------------------------------------
 sparc64.*-.*-.*ABIsparc64-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index 70fd137..21b5607 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,25 +43,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; tests += tst-clone
 # Generate the list of SYS_* macros for the system calls (__NR_* macros).
 
 # If there is more than one syscall list for different architecture
-# variants, the CPU/Makefile defines syscall-list-variants to be a
-# list of names for those variants (e.g. 32bit 64bit), and, for each
-# variant, defines syscall-list-$(variant)-options to be compiler
-# options to cause &amp;lt;asm/unistd.h&amp;gt; to define the desired list of
-# syscalls and syscall-list-$(variant)-condition to be the condition
-# for those options to use in a C #if condition.
-# syscall-list-includes may be defined to a list of headers to include
+# variants, the CPU/Makefile defines abi-variants to be a list of names
+# for those variants (e.g. 32 64), and, for each variant, defines
+# abi-$(variant)-options to be compiler options to cause &amp;lt;asm/unistd.h&amp;gt;
+# to define the desired list of syscalls and abi-$(variant)-condition to
+# be the condition for those options to use in a C #if condition.
+# abi-includes may be defined to a list of headers to include
 # in the generated header, if the default does not suffice.
 
-ifndef syscall-list-variants
-syscall-list-variants := default
-syscall-list-default-options :=
-syscall-list-default-condition :=
-endif
-
-ifndef syscall-list-includes
-syscall-list-includes := bits/wordsize.h
-endif
-
 $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/syscall.h
 $(make-target-directory)
 { \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -71,31 +60,41 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; $(objpfx)bits/syscall%h $(objpfx)bits/syscall%d: ../sysdeps/unix/sysv/linux/sys/
  echo '# error "Never use &amp;lt;bits/syscall.h&amp;gt; directly; include &amp;lt;sys/syscall.h&amp;gt; instead."'; \
  echo '#endif'; \
  echo ''; \
- $(foreach h,$(syscall-list-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
+ $(foreach h,$(abi-includes), echo '#include &amp;lt;$(h)&amp;gt;';) \
  echo ''; \
- $(foreach v,$(syscall-list-variants),\
+ $(if $(abi-variants), \
+ $(foreach v,$(abi-variants),\
  $(CC) -E -MD -MP -MF $(&amp;lt; at &amp;gt;:.h=.d)-t$(v) -MT '$(&amp;lt; at &amp;gt;:.d=.h) $(&amp;lt; at &amp;gt;:.h=.d)' \
-       -x c $(sysincludes) $&amp;lt; $(syscall-list-$(v)-options) \
+       -x c $(sysincludes) $&amp;lt; $(abi-$(v)-options) \
        -D_LIBC -dM | \
  sed -n 's&amp;lt; at &amp;gt;^#define __NR_\([^ ]*\) .*$$&amp;lt; at &amp;gt;#define SYS_\1 __NR_\1&amp;lt; at &amp;gt;p' | \
  LC_ALL=C sort &amp;gt; $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
- $(if $(syscall-list-$(v)-condition),\
- echo '#if $(syscall-list-$(v)-condition)';) \
+ $(if $(abi-$(v)-condition),\
+ echo '#if $(abi-$(v)-condition)';) \
  cat $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
- $(if $(syscall-list-$(v)-condition),echo '#endif';) \
+ $(if $(abi-$(v)-condition),echo '#endif';) \
  rm -f $(&amp;lt; at &amp;gt;:.d=.h).new$(v); \
- ) \
+ ), \
+ $(CC) -E -MD -MP -MF $(&amp;lt; at &amp;gt;:.h=.d)-t$(v) -MT '$(&amp;lt; at &amp;gt;:.d=.h) $(&amp;lt; at &amp;gt;:.h=.d)' \
+       -x c $(sysincludes) $&amp;lt; \
+       -D_LIBC -dM | \
+ sed -n 's&amp;lt; at &amp;gt;^#define __NR_\([^ ]*\) .*$$&amp;lt; at &amp;gt;#define SYS_\1 __NR_\1&amp;lt; at &amp;gt;p' | \
+ LC_ALL=C sort;) \
 } &amp;gt; $(&amp;lt; at &amp;gt;:.d=.h).new
 mv -f $(&amp;lt; at &amp;gt;:.d=.h).new $(&amp;lt; at &amp;gt;:.d=.h)
+ifdef abi-variants
 ifneq (,$(objpfx))
 sed $(sed-remove-objpfx) \
- $(foreach v,$(syscall-list-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) &amp;gt; $(&amp;lt; at &amp;gt;:.h=.d)-t3
+ $(foreach v,$(abi-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) &amp;gt; $(&amp;lt; at &amp;gt;:.h=.d)-t3
 else
-cat $(foreach v,$(syscall-list-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) \
+cat $(foreach v,$(abi-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v)) \
  &amp;gt; $(&amp;lt; at &amp;gt;:.h=.d)-t3
 endif
-rm -f $(foreach v,$(syscall-list-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v))
+rm -f $(foreach v,$(abi-variants),$(&amp;lt; at &amp;gt;:.h=.d)-t$(v))
 mv -f $(&amp;lt; at &amp;gt;:.h=.d)-t3 $(&amp;lt; at &amp;gt;:.h=.d)
+else
+mv -f $(&amp;lt; at &amp;gt;:.h=.d)-t $(&amp;lt; at &amp;gt;:.h=.d)
+endif
 
 ifndef no_deps
 # Get the generated list of dependencies (probably /usr/include/asm/unistd.h).
diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile
index fc5a524..738f771 100644
--- a/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/sysdeps/unix/sysv/linux/i386/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,3 +1,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# We don't need any header files.
+abi-includes :=
+
+# The default ABI is 32.
+default-abi := 32
+
+abi-variants := 32 64 x32
+
+abi-32-options := -D__i386__ -U__x86_64__
+abi-32-condition := !defined __x86_64__
+abi-32-ld-soname := ld-linux.so.2
+abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__
+abi-64-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __LP64__
+abi-64-ld-soname := ld-linux-x86-64.so.2
+abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
+abi-x32-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __ILP32__
+abi-x32-ld-soname := ld-linux-x32.so.2
+
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl vm86 call_pselect6 call_fallocate
 sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h
diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile
index 55311a4..f6dccd9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/Makefile
+++ b/sysdeps/unix/sysv/linux/powerpc/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -U__powerpc64__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -D__powerpc64__
-syscall-list-64bit-condition := __WORDSIZE == 64
+abi-variants := 32 64
+abi-32-options := -U__powerpc64__
+abi-32-condition := __WORDSIZE == 32
+abi-64-options := -D__powerpc64__
+abi-64-condition := __WORDSIZE == 64
+abi-64-ld-soname := ld64.so.1
 
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile
index fb20fb0..45b1922 100644
--- a/sysdeps/unix/sysv/linux/s390/Makefile
+++ b/sysdeps/unix/sysv/linux/s390/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -U__s390x__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -D__s390x__
-syscall-list-64bit-condition := __WORDSIZE == 64
+abi-variants := 32 64
+abi-32-options := -U__s390x__
+abi-32-condition := __WORDSIZE == 32
+abi-64-options := -D__s390x__
+abi-64-condition := __WORDSIZE == 64
+abi-64-ld-soname := ld64.so.1
 
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
diff --git a/sysdeps/unix/sysv/linux/sparc/Makefile b/sysdeps/unix/sysv/linux/sparc/Makefile
index d769c48..96b783e 100644
--- a/sysdeps/unix/sysv/linux/sparc/Makefile
+++ b/sysdeps/unix/sysv/linux/sparc/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -U__sparc_v9__ -U__arch64__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -D__sparc_v9__ -D__arch64__
-syscall-list-64bit-condition := __WORDSIZE == 64
+abi-variants := 32 64
+abi-32-options := -U__sparc_v9__ -U__arch64__
+abi-32-condition := __WORDSIZE == 32
+abi-64-options := -D__sparc_v9__ -D__arch64__
+abi-64-condition := __WORDSIZE == 64
 
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
diff --git a/sysdeps/unix/sysv/linux/x86_64/64/Makefile b/sysdeps/unix/sysv/linux/x86_64/64/Makefile
new file mode 100644
index 0000000..a7b6dc5
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/64/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,2 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# The default ABI is 64.
+default-abi := 64
diff --git a/sysdeps/unix/sysv/linux/x86_64/Makefile b/sysdeps/unix/sysv/linux/x86_64/Makefile
index 59a6b0a..87cfc45 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Makefile
+++ b/sysdeps/unix/sysv/linux/x86_64/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,8 +1,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
-syscall-list-variants := 32bit 64bit
-syscall-list-32bit-options := -D__i386__ -U__x86_64__
-syscall-list-32bit-condition := __WORDSIZE == 32
-syscall-list-64bit-options := -U__i386__ -D__x86_64__
-syscall-list-64bit-condition := __WORDSIZE == 64
+# We don't need any header files.
+abi-includes :=
+
+abi-variants := 32 64 x32
+
+abi-32-options := -D__i386__ -U__x86_64__
+abi-32-condition := !defined __x86_64__
+abi-32-ld-soname := ld-linux.so.2
+abi-64-options := -U__i386__ -D__x86_64__ -U__ILP32__ -D__LP64__
+abi-64-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __LP64__
+abi-64-ld-soname := ld-linux-x86-64.so.2
+abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
+abi-x32-condition := defined __x86_64__ &amp;amp;&amp;amp; defined __ILP32__
+abi-x32-ld-soname := ld-linux-x32.so.2
 
 ifeq ($(subdir),misc)
 sysdep_routines += ioperm iopl
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/Makefile b/sysdeps/unix/sysv/linux/x86_64/x32/Makefile
index aa78238..ecbdefb 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/Makefile
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,3 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+# The default ABI is x32.
+default-abi := x32
+
 ifeq ($(subdir),misc)
 sysdep_routines += arch_prctl
 endif

&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-24T23:26:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22300">
    <title>Fix acosf underflow (bug 14153)</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22300</link>
    <description>&lt;pre&gt;Bug 14153 is a spurious underflow exception from acosf (2e-17); the
cause is the acosf implementation calculating a value on the order of
the cube of its argument, which underflows.  There is a test for very
small arguments, maybe to avoid underflow, and if such an argument is
encountered it returns pi/2 (computed by adding high and low parts, I
suppose to get correct results for the current rounding mode and to
raise the inexact exception).  However, this tests for values no more
than 2**-57, as if the test was unchanged from a "double" version of
the function; it suffices to test for values no more than 2**-26,
which avoids the problem with internal underflows.  (For small x, the
correct value is essentially pi/2 - x.  Compute pi/2 rounded to 25
bits - one more bit than float - which is the nearest value that is
representable as float or half way between two representable values.
Compute the difference of pi/2 and that rounded values; if |x| is
smaller than that difference then the result of rounding pi/2 - x will
be the same in any rounding mode as the result of rounding pi/2.  Now
that difference is more than 2**-26.)

I propose this patch fixing the bug that way.  Tested x86_64 and x86.

2012-05-24  Joseph Myers  &amp;lt;joseph&amp;lt; at &amp;gt;codesourcery.com&amp;gt;

[BZ #14153]
* sysdeps/ieee754/flt-32/e_acosf.c (__ieee754_acosf): Return pi/2
for |x| &amp;lt;= 2**-26, not 2**-57.
* math/libm-test.inc (acos_test): Do not allow spurious underflow
exception.

diff --git a/math/libm-test.inc b/math/libm-test.inc
index 5946ca8..ed13f53 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -804,8 +804,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; acos_test (void)
   TEST_f_f (acos, 0.5, M_PI_6l*2.0);
   TEST_f_f (acos, -0.5, M_PI_6l*4.0);
   TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L);
-  /* Bug 14153: spurious exception may occur.  */
-  TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L, UNDERFLOW_EXCEPTION_OK_FLOAT);
+  TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L);
   TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L);
   TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L);
   TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L);
diff --git a/sysdeps/ieee754/flt-32/e_acosf.c b/sysdeps/ieee754/flt-32/e_acosf.c
index c0f1d4e..6f792f6 100644
--- a/sysdeps/ieee754/flt-32/e_acosf.c
+++ b/sysdeps/ieee754/flt-32/e_acosf.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -46,7 +46,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; __ieee754_acosf(float x)
     return (x-x)/(x-x);/* acos(|x|&amp;gt;1) is NaN */
 }
 if(ix&amp;lt;0x3f000000) {/* |x| &amp;lt; 0.5 */
-    if(ix&amp;lt;=0x23000000) return pio2_hi+pio2_lo;/*if|x|&amp;lt;2**-57*/
+    if(ix&amp;lt;=0x32800000) return pio2_hi+pio2_lo;/*if|x|&amp;lt;=2**-26*/
     z = x*x;
     p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
     q = one+z*(qS1+z*(qS2+z*(qS3+z*qS4)));

&lt;/pre&gt;</description>
    <dc:creator>Joseph S. Myers</dc:creator>
    <dc:date>2012-05-24T21:52:46</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22298">
    <title>roland/systemtap branch</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22298</link>
    <description>&lt;pre&gt;The roland/systemtap branch has been lingering for quite some time.
It never got merged, but there were never any coherent objections IIRC.
Related past threads I found:
http://sourceware.org/ml/libc-alpha/2011-03/msg00001.html 
http://sourceware.org/ml/libc-alpha/2011-02/msg00003.html 
http://sourceware.org/ml/libc-alpha/2011-01/msg00008.html 

I believe Fedora has been using this code since Fedora 15.
(I have Fedora 16/x86_64 handy and its libc.so.6 has the notes.)

I've just rebased the branch, fixed conflicts, updated copyright years
and log entries, and adapted the x86_64 assembly bits for x32.  (The
x86_64 pthread probes written in assembly use unadorned register
names, indicating 64-bit quantities for pointer values on x32, but I
don't think it really matters.)

I've tested the build on x86_64 but not really tested using the probes
with stap or gdb.  I just eyeballed the notes with 'readelf -n' and
they all look fine.

Are there any objections to (or endorsements for) merging the branch now?

The changes still have no effect without --enable-systemtap.


Thanks,
Roland

&lt;/pre&gt;</description>
    <dc:creator>Roland McGrath</dc:creator>
    <dc:date>2012-05-24T21:26:23</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22286">
    <title>PATCH: Make chunk size a multiple of MALLOC_ALIGNMENT</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22286</link>
    <description>&lt;pre&gt;Hi,

do_check_free_chunk has

static void do_check_free_chunk(mstate av, mchunkptr p)
{
  INTERNAL_SIZE_T sz = p-&amp;gt;size &amp;amp; ~(PREV_INUSE|NON_MAIN_ARENA);
  mchunkptr next = chunk_at_offset(p, sz);

  do_check_chunk(av, p);

  /* Chunk must claim to be free ... */
  assert(!inuse(p));
  assert (!chunk_is_mmapped(p));

  /* Unless a special marker, must have OK fields */
  if ((unsigned long)(sz) &amp;gt;= MINSIZE)
  {
    assert((sz &amp;amp; MALLOC_ALIGN_MASK) == 0);

If a free chunk &amp;gt;= MINSIZE, it must be a multiple of MALLOC_ALIGNMENT.
However, when sysmalloc frees old top chunk with size &amp;gt;= MINSIZE, it
doesn't make sure that the size is a multiple of MALLOC_ALIGNMENT:

     /* Setup fencepost and free the old top chunk. */
      /* The fencepost takes at least MINSIZE bytes, because it might
         become the top chunk again later.  Note that a footer is set
         up, too, although the chunk is marked in use. */
      old_size -= MINSIZE;
      set_head(chunk_at_offset(old_top, old_size + 2*SIZE_SZ), 0|PREV_INUSE);
      if (old_size &amp;gt;= MINSIZE) {
        set_head(chunk_at_offset(old_top, old_size), (2*SIZE_SZ)|PREV_INUSE);
        set_foot(chunk_at_offset(old_top, old_size), (2*SIZE_SZ));
        set_head(old_top, old_size|PREV_INUSE|NON_MAIN_ARENA);
        _int_free(av, old_top, 1);
      } else {

This bug caused some test failures in one of nss packages on Linux/x32.
This patch fixes it.  OK to install?

Thanks.


H.J.
---
[BZ #13576]
* malloc/malloc.c (sYSMALLOc): Free the old top chunk with a
multiple of MALLOC_ALIGNMENT in size.
(_int_free): Check chunk size is a multiple of MALLOC_ALIGNMENT.

diff --git a/malloc/malloc.c b/malloc/malloc.c
index bb26937..46826ab 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2390,11 +2390,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void* sysmalloc(INTERNAL_SIZE_T nb, mstate av)
       top(av) = chunk_at_offset(heap, sizeof(*heap));
       set_head(top(av), (heap-&amp;gt;size - sizeof(*heap)) | PREV_INUSE);
 
-      /* Setup fencepost and free the old top chunk. */
+      /* Setup fencepost and free the old top chunk with a multiple of
+ MALLOC_ALIGNMENT in size. */
       /* The fencepost takes at least MINSIZE bytes, because it might
  become the top chunk again later.  Note that a footer is set
  up, too, although the chunk is marked in use. */
-      old_size -= MINSIZE;
+      old_size = (old_size - MINSIZE) &amp;amp; ~MALLOC_ALIGN_MASK;
       set_head(chunk_at_offset(old_top, old_size + 2*SIZE_SZ), 0|PREV_INUSE);
       if (old_size &amp;gt;= MINSIZE) {
 set_head(chunk_at_offset(old_top, old_size), (2*SIZE_SZ)|PREV_INUSE);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3803,8 +3804,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; _int_free(mstate av, mchunkptr p, int have_lock)
       malloc_printerr (check_action, errstr, chunk2mem(p));
       return;
     }
-  /* We know that each chunk is at least MINSIZE bytes in size.  */
-  if (__builtin_expect (size &amp;lt; MINSIZE, 0))
+  /* We know that each chunk is at least MINSIZE bytes in size of a
+     multiple of MALLOC_ALIGNMENT.  */
+  if (__builtin_expect (size &amp;lt; MINSIZE
+|| (size &amp;amp; MALLOC_ALIGN_MASK) != 0, 0))
     {
       errstr = "free(): invalid size";
       goto errout;
&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-24T19:30:00</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22279">
    <title>[Patch] Testcase for vfprintf bug</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22279</link>
    <description>&lt;pre&gt;
I've recently had the need to review glibc's vfprintf code.  During the 
process I discovered that no testcase for bug #13446 was ever installed.

The original testcase in #13446 utilizes the printf hooks mechanism; the 
system where I needed the problem fixed &amp;amp; tested pre-dates printf hooks, 
so I mangled the existing stdio-common/bug23.c test to expose the memory 
allocation bug in #13446.

OK to install?

2012-05-24  Jeff Law  &amp;lt;law&amp;lt; at &amp;gt;redhat.com&amp;gt;

* stdio-common/Makefile (tests): Add bug25.
* stdio-common/bug25.c: New test.

diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 02684d2..a5b6f74 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -56,7 +56,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
  tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
  bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
  scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
- bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3
+ bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3 \ bug25
 
 test-srcs = tst-unbputc tst-printf
 
diff --git a/stdio-common/bug25.c b/stdio-common/bug25.c
new file mode 100644
index 0000000..30c13397
--- /dev/null
+++ b/stdio-common/bug25.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,70 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+#include &amp;lt;stdio.h&amp;gt;
+#include &amp;lt;string.h&amp;gt;
+#include &amp;lt;unistd.h&amp;gt;
+
+static const char expected[] = "\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55\
+\n\
+a\n\
+abbcd55%%%%%%%%%%%%%%%%%%%%%%%%%%\n";
+
+static int
+do_test (void)
+{
+  char *buf = malloc (strlen (expected) + 1);
+  snprintf (buf, strlen (expected) + 1,
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "\n%1$s\n" "%1$s" "%2$s" "%2$s" "%3$s" "%4$s" "%5$d" "%5$d"
+    "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n",
+    "a", "b", "c", "d", 5);
+  return strcmp (buf, expected) != 0;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
&lt;/pre&gt;</description>
    <dc:creator>Jeff Law</dc:creator>
    <dc:date>2012-05-24T18:20:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22269">
    <title>Add tests for underflow exception bugs 10846, 14036</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22269</link>
    <description>&lt;pre&gt;Now that libm-test.inc can test underflow exceptions, I propose this
patch to add tests for two bugs about missing underflow exceptions
(fixed by the changes to use -frounding-math).  Tested x86 and x86_64.

2012-05-24  Joseph Myers  &amp;lt;joseph&amp;lt; at &amp;gt;codesourcery.com&amp;gt;

[BZ #10846]
[BZ #14036]
* math/libm-test.inc (exp_test): Add test from bug 14036.
(pow_test): Add test from bug 10846.

diff --git a/math/libm-test.inc b/math/libm-test.inc
index 5424866..f545723 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3501,6 +3501,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; exp_test (void)
 
 #if !(defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MAX_EXP &amp;gt; 1024)
   TEST_f_f (exp, 710, plus_infty, OVERFLOW_EXCEPTION);
+  TEST_f_f (exp, -1234, plus_zero, UNDERFLOW_EXCEPTION);
 #endif
   TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION);
   TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6732,6 +6733,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
   TEST_ff_f (pow, 0x1.0000000000001p0L, -0x1.23456789abcdfp61L, 1.0118762747828234466621210689458255908670e-253L);
 #endif
 
+  TEST_ff_f (pow, 2.0L, -100000.0L, plus_zero, UNDERFLOW_EXCEPTION);
+
   END (pow);
 }
 

&lt;/pre&gt;</description>
    <dc:creator>Joseph S. Myers</dc:creator>
    <dc:date>2012-05-24T14:57:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22263">
    <title>PATCH: Add x32 abilist files</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22263</link>
    <description>&lt;pre&gt;Hi,

This patch adds x32 abilist files. Tested on Linux/x32.  OK to
install?

Thanks.


H.J.
---
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/ld.abilist: New file.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libanl.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libdl.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libnsl.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libresolv.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/librt.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libthread_db.abilist:
Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libutil.abilist:
Likewise.

diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/ld.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/ld.abilist
new file mode 100644
index 0000000..96c34e8
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/ld.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ __libc_memalign F
+ __libc_stack_end D 0x4
+ __tls_get_addr F
+ _dl_mcount F
+ _r_debug D 0x14
+ calloc F
+ free F
+ malloc F
+ realloc F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libBrokenLocale.abilist
new file mode 100644
index 0000000..824add0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libBrokenLocale.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,3 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ __ctype_get_mb_cur_max F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libanl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libanl.abilist
new file mode 100644
index 0000000..6ebf329
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libanl.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ gai_cancel F
+ gai_error F
+ gai_suspend F
+ getaddrinfo_a F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist
new file mode 100644
index 0000000..13b1d91
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,2080 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ _Exit F
+ _IO_2_1_stderr_ D 0xa0
+ _IO_2_1_stdin_ D 0xa0
+ _IO_2_1_stdout_ D 0xa0
+ _IO_adjust_column F
+ _IO_adjust_wcolumn F
+ _IO_default_doallocate F
+ _IO_default_finish F
+ _IO_default_pbackfail F
+ _IO_default_uflow F
+ _IO_default_xsgetn F
+ _IO_default_xsputn F
+ _IO_do_write F
+ _IO_doallocbuf F
+ _IO_fclose F
+ _IO_fdopen F
+ _IO_feof F
+ _IO_ferror F
+ _IO_fflush F
+ _IO_fgetpos F
+ _IO_fgetpos64 F
+ _IO_fgets F
+ _IO_file_attach F
+ _IO_file_close F
+ _IO_file_close_it F
+ _IO_file_doallocate F
+ _IO_file_finish F
+ _IO_file_fopen F
+ _IO_file_init F
+ _IO_file_jumps D 0x54
+ _IO_file_open F
+ _IO_file_overflow F
+ _IO_file_read F
+ _IO_file_seek F
+ _IO_file_seekoff F
+ _IO_file_setbuf F
+ _IO_file_stat F
+ _IO_file_sync F
+ _IO_file_underflow F
+ _IO_file_write F
+ _IO_file_xsputn F
+ _IO_flockfile F
+ _IO_flush_all F
+ _IO_flush_all_linebuffered F
+ _IO_fopen F
+ _IO_fprintf F
+ _IO_fputs F
+ _IO_fread F
+ _IO_free_backup_area F
+ _IO_free_wbackup_area F
+ _IO_fsetpos F
+ _IO_fsetpos64 F
+ _IO_ftell F
+ _IO_ftrylockfile F
+ _IO_funlockfile F
+ _IO_fwrite F
+ _IO_getc F
+ _IO_getline F
+ _IO_getline_info F
+ _IO_gets F
+ _IO_init F
+ _IO_init_marker F
+ _IO_init_wmarker F
+ _IO_iter_begin F
+ _IO_iter_end F
+ _IO_iter_file F
+ _IO_iter_next F
+ _IO_least_wmarker F
+ _IO_link_in F
+ _IO_list_all D 0x4
+ _IO_list_lock F
+ _IO_list_resetlock F
+ _IO_list_unlock F
+ _IO_marker_delta F
+ _IO_marker_difference F
+ _IO_padn F
+ _IO_peekc_locked F
+ _IO_popen F
+ _IO_printf F
+ _IO_proc_close F
+ _IO_proc_open F
+ _IO_putc F
+ _IO_puts F
+ _IO_remove_marker F
+ _IO_seekmark F
+ _IO_seekoff F
+ _IO_seekpos F
+ _IO_seekwmark F
+ _IO_setb F
+ _IO_setbuffer F
+ _IO_setvbuf F
+ _IO_sgetn F
+ _IO_sprintf F
+ _IO_sputbackc F
+ _IO_sputbackwc F
+ _IO_sscanf F
+ _IO_str_init_readonly F
+ _IO_str_init_static F
+ _IO_str_overflow F
+ _IO_str_pbackfail F
+ _IO_str_seekoff F
+ _IO_str_underflow F
+ _IO_sungetc F
+ _IO_sungetwc F
+ _IO_switch_to_get_mode F
+ _IO_switch_to_main_wget_area F
+ _IO_switch_to_wbackup_area F
+ _IO_switch_to_wget_mode F
+ _IO_un_link F
+ _IO_ungetc F
+ _IO_unsave_markers F
+ _IO_unsave_wmarkers F
+ _IO_vfprintf F
+ _IO_vfscanf F
+ _IO_vsprintf F
+ _IO_wdefault_doallocate F
+ _IO_wdefault_finish F
+ _IO_wdefault_pbackfail F
+ _IO_wdefault_uflow F
+ _IO_wdefault_xsgetn F
+ _IO_wdefault_xsputn F
+ _IO_wdo_write F
+ _IO_wdoallocbuf F
+ _IO_wfile_jumps D 0x54
+ _IO_wfile_overflow F
+ _IO_wfile_seekoff F
+ _IO_wfile_sync F
+ _IO_wfile_underflow F
+ _IO_wfile_xsputn F
+ _IO_wmarker_delta F
+ _IO_wsetb F
+ __adjtimex F
+ __after_morecore_hook D 0x4
+ __arch_prctl F
+ __argz_count F
+ __argz_next F
+ __argz_stringify F
+ __asprintf F
+ __asprintf_chk F
+ __assert F
+ __assert_fail F
+ __assert_perror_fail F
+ __backtrace F
+ __backtrace_symbols F
+ __backtrace_symbols_fd F
+ __bsd_getpgrp F
+ __bzero F
+ __check_rhosts_file D 0x4
+ __chk_fail F
+ __clone F
+ __close F
+ __cmsg_nxthdr F
+ __confstr_chk F
+ __connect F
+ __ctype_b_loc F
+ __ctype_get_mb_cur_max F
+ __ctype_tolower_loc F
+ __ctype_toupper_loc F
+ __curbrk D 0x4
+ __cxa_at_quick_exit F
+ __cxa_atexit F
+ __cxa_finalize F
+ __cyg_profile_func_enter F
+ __cyg_profile_func_exit F
+ __daylight D 0x4
+ __dcgettext F
+ __default_morecore F
+ __dgettext F
+ __dprintf_chk F
+ __dup2 F
+ __duplocale F
+ __endmntent F
+ __environ D 0x4
+ __errno_location F
+ __fbufsize F
+ __fcntl F
+ __fdelt_chk F
+ __fdelt_warn F
+ __fentry__ F
+ __ffs F
+ __fgets_chk F
+ __fgets_unlocked_chk F
+ __fgetws_chk F
+ __fgetws_unlocked_chk F
+ __finite F
+ __finitef F
+ __finitel F
+ __flbf F
+ __fork F
+ __fpending F
+ __fprintf_chk F
+ __fpu_control D 0x2
+ __fpurge F
+ __fread_chk F
+ __fread_unlocked_chk F
+ __freadable F
+ __freading F
+ __free_hook D 0x4
+ __freelocale F
+ __fsetlocking F
+ __fwprintf_chk F
+ __fwritable F
+ __fwriting F
+ __fxstat F
+ __fxstat64 F
+ __fxstatat F
+ __fxstatat64 F
+ __getauxval F
+ __getcwd_chk F
+ __getdelim F
+ __getdomainname_chk F
+ __getgroups_chk F
+ __gethostname_chk F
+ __getlogin_r_chk F
+ __getmntent_r F
+ __getpagesize F
+ __getpgid F
+ __getpid F
+ __gets_chk F
+ __gettimeofday F
+ __getwd_chk F
+ __gmtime_r F
+ __h_errno_location F
+ __isalnum_l F
+ __isalpha_l F
+ __isascii_l F
+ __isblank_l F
+ __iscntrl_l F
+ __isctype F
+ __isdigit_l F
+ __isgraph_l F
+ __isinf F
+ __isinff F
+ __isinfl F
+ __islower_l F
+ __isnan F
+ __isnanf F
+ __isnanl F
+ __isoc99_fscanf F
+ __isoc99_fwscanf F
+ __isoc99_scanf F
+ __isoc99_sscanf F
+ __isoc99_swscanf F
+ __isoc99_vfscanf F
+ __isoc99_vfwscanf F
+ __isoc99_vscanf F
+ __isoc99_vsscanf F
+ __isoc99_vswscanf F
+ __isoc99_vwscanf F
+ __isoc99_wscanf F
+ __isprint_l F
+ __ispunct_l F
+ __isspace_l F
+ __isupper_l F
+ __iswalnum_l F
+ __iswalpha_l F
+ __iswblank_l F
+ __iswcntrl_l F
+ __iswctype F
+ __iswctype_l F
+ __iswdigit_l F
+ __iswgraph_l F
+ __iswlower_l F
+ __iswprint_l F
+ __iswpunct_l F
+ __iswspace_l F
+ __iswupper_l F
+ __iswxdigit_l F
+ __isxdigit_l F
+ __ivaliduser F
+ __key_decryptsession_pk_LOCAL D 0x4
+ __key_encryptsession_pk_LOCAL D 0x4
+ __key_gendes_LOCAL D 0x4
+ __libc_allocate_rtsig F
+ __libc_calloc F
+ __libc_current_sigrtmax F
+ __libc_current_sigrtmin F
+ __libc_free F
+ __libc_freeres F
+ __libc_init_first F
+ __libc_mallinfo F
+ __libc_malloc F
+ __libc_mallopt F
+ __libc_memalign F
+ __libc_pvalloc F
+ __libc_realloc F
+ __libc_sa_len F
+ __libc_start_main F
+ __libc_valloc F
+ __longjmp_chk F
+ __lseek F
+ __lxstat F
+ __lxstat64 F
+ __malloc_hook D 0x4
+ __malloc_initialize_hook D 0x4
+ __mbrlen F
+ __mbrtowc F
+ __mbsnrtowcs_chk F
+ __mbsrtowcs_chk F
+ __mbstowcs_chk F
+ __memalign_hook D 0x4
+ __memcpy_chk F
+ __memmove_chk F
+ __mempcpy F
+ __mempcpy_chk F
+ __mempcpy_small F
+ __memset_chk F
+ __monstartup F
+ __morecore D 0x4
+ __nanosleep F
+ __newlocale F
+ __nl_langinfo_l F
+ __nss_configure_lookup F
+ __nss_database_lookup F
+ __nss_group_lookup F
+ __nss_hostname_digits_dots F
+ __nss_hosts_lookup F
+ __nss_next F
+ __nss_passwd_lookup F
+ __obstack_printf_chk F
+ __obstack_vprintf_chk F
+ __open F
+ __open64 F
+ __open64_2 F
+ __open_2 F
+ __openat64_2 F
+ __openat_2 F
+ __overflow F
+ __pipe F
+ __poll F
+ __poll_chk F
+ __posix_getopt F
+ __ppoll_chk F
+ __pread64 F
+ __pread64_chk F
+ __pread_chk F
+ __printf_chk F
+ __printf_fp F
+ __profile_frequency F
+ __progname D 0x4
+ __progname_full D 0x4
+ __ptsname_r_chk F
+ __pwrite64 F
+ __rawmemchr F
+ __rcmd_errstr D 0x4
+ __read F
+ __read_chk F
+ __readlink_chk F
+ __readlinkat_chk F
+ __realloc_hook D 0x4
+ __realpath_chk F
+ __recv_chk F
+ __recvfrom_chk F
+ __register_atfork F
+ __res_init F
+ __res_nclose F
+ __res_ninit F
+ __res_randomid F
+ __res_state F
+ __rpc_thread_createerr F
+ __rpc_thread_svc_fdset F
+ __rpc_thread_svc_max_pollfd F
+ __rpc_thread_svc_pollfd F
+ __sbrk F
+ __sched_cpualloc F
+ __sched_cpucount F
+ __sched_cpufree F
+ __sched_get_priority_max F
+ __sched_get_priority_min F
+ __sched_getparam F
+ __sched_getscheduler F
+ __sched_setscheduler F
+ __sched_yield F
+ __secure_getenv F
+ __select F
+ __send F
+ __setmntent F
+ __setpgid F
+ __sigaction F
+ __sigaddset F
+ __sigdelset F
+ __sigismember F
+ __signbit F
+ __signbitf F
+ __signbitl F
+ __sigpause F
+ __sigsetjmp F
+ __sigsuspend F
+ __snprintf_chk F
+ __sprintf_chk F
+ __stack_chk_fail F
+ __statfs F
+ __stpcpy F
+ __stpcpy_chk F
+ __stpcpy_small F
+ __stpncpy F
+ __stpncpy_chk F
+ __strcasecmp F
+ __strcasecmp_l F
+ __strcasestr F
+ __strcat_chk F
+ __strcoll_l F
+ __strcpy_chk F
+ __strcpy_small F
+ __strcspn_c1 F
+ __strcspn_c2 F
+ __strcspn_c3 F
+ __strdup F
+ __strerror_r F
+ __strfmon_l F
+ __strftime_l F
+ __strncasecmp_l F
+ __strncat_chk F
+ __strncpy_chk F
+ __strndup F
+ __strpbrk_c2 F
+ __strpbrk_c3 F
+ __strsep_1c F
+ __strsep_2c F
+ __strsep_3c F
+ __strsep_g F
+ __strspn_c1 F
+ __strspn_c2 F
+ __strspn_c3 F
+ __strtod_internal F
+ __strtod_l F
+ __strtof_internal F
+ __strtof_l F
+ __strtok_r F
+ __strtok_r_1c F
+ __strtol_internal F
+ __strtol_l F
+ __strtold_internal F
+ __strtold_l F
+ __strtoll_internal F
+ __strtoll_l F
+ __strtoul_internal F
+ __strtoul_l F
+ __strtoull_internal F
+ __strtoull_l F
+ __strverscmp F
+ __strxfrm_l F
+ __swprintf_chk F
+ __sysconf F
+ __syslog_chk F
+ __sysv_signal F
+ __timezone D 0x4
+ __toascii_l F
+ __tolower_l F
+ __toupper_l F
+ __towctrans F
+ __towctrans_l F
+ __towlower_l F
+ __towupper_l F
+ __ttyname_r_chk F
+ __tzname D 0x8
+ __uflow F
+ __underflow F
+ __uselocale F
+ __vasprintf_chk F
+ __vdprintf_chk F
+ __vfork F
+ __vfprintf_chk F
+ __vfscanf F
+ __vfwprintf_chk F
+ __vprintf_chk F
+ __vsnprintf F
+ __vsnprintf_chk F
+ __vsprintf_chk F
+ __vsscanf F
+ __vswprintf_chk F
+ __vsyslog_chk F
+ __vwprintf_chk F
+ __wait F
+ __waitpid F
+ __wcpcpy_chk F
+ __wcpncpy_chk F
+ __wcrtomb_chk F
+ __wcscasecmp_l F
+ __wcscat_chk F
+ __wcscoll_l F
+ __wcscpy_chk F
+ __wcsftime_l F
+ __wcsncasecmp_l F
+ __wcsncat_chk F
+ __wcsncpy_chk F
+ __wcsnrtombs_chk F
+ __wcsrtombs_chk F
+ __wcstod_internal F
+ __wcstod_l F
+ __wcstof_internal F
+ __wcstof_l F
+ __wcstol_internal F
+ __wcstol_l F
+ __wcstold_internal F
+ __wcstold_l F
+ __wcstoll_internal F
+ __wcstoll_l F
+ __wcstombs_chk F
+ __wcstoul_internal F
+ __wcstoul_l F
+ __wcstoull_internal F
+ __wcstoull_l F
+ __wcsxfrm_l F
+ __wctomb_chk F
+ __wctrans_l F
+ __wctype_l F
+ __wmemcpy_chk F
+ __wmemmove_chk F
+ __wmempcpy_chk F
+ __wmemset_chk F
+ __woverflow F
+ __wprintf_chk F
+ __write F
+ __wuflow F
+ __wunderflow F
+ __xmknod F
+ __xmknodat F
+ __xpg_basename F
+ __xpg_sigpause F
+ __xpg_strerror_r F
+ __xstat F
+ __xstat64 F
+ _authenticate F
+ _dl_mcount_wrapper F
+ _dl_mcount_wrapper_check F
+ _environ D 0x4
+ _exit F
+ _flushlbf F
+ _libc_intl_domainname D 0x5
+ _longjmp F
+ _mcleanup F
+ _mcount F
+ _nl_default_dirname D 0x12
+ _nl_domain_bindings D 0x4
+ _nl_msg_cat_cntr D 0x4
+ _null_auth D 0xc
+ _obstack_allocated_p F
+ _obstack_begin F
+ _obstack_begin_1 F
+ _obstack_free F
+ _obstack_memory_used F
+ _obstack_newchunk F
+ _res D 0x200
+ _res_hconf D 0x30
+ _rpc_dtablesize F
+ _seterr_reply F
+ _setjmp F
+ _sys_errlist D 0x21c
+ _sys_nerr D 0x4
+ _sys_siglist D 0x104
+ _tolower F
+ _toupper F
+ a64l F
+ abort F
+ abs F
+ accept F
+ accept4 F
+ access F
+ acct F
+ addmntent F
+ addseverity F
+ adjtime F
+ adjtimex F
+ advance F
+ alarm F
+ aligned_alloc F
+ alphasort F
+ alphasort64 F
+ arch_prctl F
+ argp_err_exit_status D 0x4
+ argp_error F
+ argp_failure F
+ argp_help F
+ argp_parse F
+ argp_program_bug_address D 0x4
+ argp_program_version D 0x4
+ argp_program_version_hook D 0x4
+ argp_state_help F
+ argp_usage F
+ argz_add F
+ argz_add_sep F
+ argz_append F
+ argz_count F
+ argz_create F
+ argz_create_sep F
+ argz_delete F
+ argz_extract F
+ argz_insert F
+ argz_next F
+ argz_replace F
+ argz_stringify F
+ asctime F
+ asctime_r F
+ asprintf F
+ atof F
+ atoi F
+ atol F
+ atoll F
+ authdes_create F
+ authdes_getucred F
+ authdes_pk_create F
+ authnone_create F
+ authunix_create F
+ authunix_create_default F
+ backtrace F
+ backtrace_symbols F
+ backtrace_symbols_fd F
+ basename F
+ bcmp F
+ bcopy F
+ bdflush F
+ bind F
+ bind_textdomain_codeset F
+ bindresvport F
+ bindtextdomain F
+ brk F
+ bsd_signal F
+ bsearch F
+ btowc F
+ bzero F
+ c16rtomb F
+ c32rtomb F
+ calloc F
+ callrpc F
+ canonicalize_file_name F
+ capget F
+ capset F
+ catclose F
+ catgets F
+ catopen F
+ cbc_crypt F
+ cfgetispeed F
+ cfgetospeed F
+ cfmakeraw F
+ cfree F
+ cfsetispeed F
+ cfsetospeed F
+ cfsetspeed F
+ chdir F
+ chflags F
+ chmod F
+ chown F
+ chroot F
+ clearenv F
+ clearerr F
+ clearerr_unlocked F
+ clnt_broadcast F
+ clnt_create F
+ clnt_pcreateerror F
+ clnt_perrno F
+ clnt_perror F
+ clnt_spcreateerror F
+ clnt_sperrno F
+ clnt_sperror F
+ clntraw_create F
+ clnttcp_create F
+ clntudp_bufcreate F
+ clntudp_create F
+ clntunix_create F
+ clock F
+ clock_adjtime F
+ clone F
+ close F
+ closedir F
+ closelog F
+ confstr F
+ connect F
+ copysign F
+ copysignf F
+ copysignl F
+ creat F
+ creat64 F
+ create_module F
+ ctermid F
+ ctime F
+ ctime_r F
+ cuserid F
+ daemon F
+ daylight D 0x4
+ dcgettext F
+ dcngettext F
+ delete_module F
+ des_setparity F
+ dgettext F
+ difftime F
+ dirfd F
+ dirname F
+ div F
+ dl_iterate_phdr F
+ dngettext F
+ dprintf F
+ drand48 F
+ drand48_r F
+ dup F
+ dup2 F
+ dup3 F
+ duplocale F
+ dysize F
+ eaccess F
+ ecb_crypt F
+ ecvt F
+ ecvt_r F
+ endaliasent F
+ endfsent F
+ endgrent F
+ endhostent F
+ endmntent F
+ endnetent F
+ endnetgrent F
+ endprotoent F
+ endpwent F
+ endrpcent F
+ endservent F
+ endsgent F
+ endspent F
+ endttyent F
+ endusershell F
+ endutent F
+ endutxent F
+ environ D 0x4
+ envz_add F
+ envz_entry F
+ envz_get F
+ envz_merge F
+ envz_remove F
+ envz_strip F
+ epoll_create F
+ epoll_create1 F
+ epoll_ctl F
+ epoll_pwait F
+ epoll_wait F
+ erand48 F
+ erand48_r F
+ err F
+ error F
+ error_at_line F
+ error_message_count D 0x4
+ error_one_per_line D 0x4
+ error_print_progname D 0x4
+ errx F
+ ether_aton F
+ ether_aton_r F
+ ether_hostton F
+ ether_line F
+ ether_ntoa F
+ ether_ntoa_r F
+ ether_ntohost F
+ euidaccess F
+ eventfd F
+ eventfd_read F
+ eventfd_write F
+ execl F
+ execle F
+ execlp F
+ execv F
+ execve F
+ execvp F
+ execvpe F
+ exit F
+ faccessat F
+ fallocate F
+ fallocate64 F
+ fanotify_init F
+ fanotify_mark F
+ fattach F
+ fchdir F
+ fchflags F
+ fchmod F
+ fchmodat F
+ fchown F
+ fchownat F
+ fclose F
+ fcloseall F
+ fcntl F
+ fcvt F
+ fcvt_r F
+ fdatasync F
+ fdetach F
+ fdopen F
+ fdopendir F
+ feof F
+ feof_unlocked F
+ ferror F
+ ferror_unlocked F
+ fexecve F
+ fflush F
+ fflush_unlocked F
+ ffs F
+ ffsl F
+ ffsll F
+ fgetc F
+ fgetc_unlocked F
+ fgetgrent F
+ fgetgrent_r F
+ fgetpos F
+ fgetpos64 F
+ fgetpwent F
+ fgetpwent_r F
+ fgets F
+ fgets_unlocked F
+ fgetsgent F
+ fgetsgent_r F
+ fgetspent F
+ fgetspent_r F
+ fgetwc F
+ fgetwc_unlocked F
+ fgetws F
+ fgetws_unlocked F
+ fgetxattr F
+ fileno F
+ fileno_unlocked F
+ finite F
+ finitef F
+ finitel F
+ flistxattr F
+ flock F
+ flockfile F
+ fmemopen F
+ fmtmsg F
+ fnmatch F
+ fopen F
+ fopen64 F
+ fopencookie F
+ fork F
+ fpathconf F
+ fprintf F
+ fputc F
+ fputc_unlocked F
+ fputs F
+ fputs_unlocked F
+ fputwc F
+ fputwc_unlocked F
+ fputws F
+ fputws_unlocked F
+ fread F
+ fread_unlocked F
+ free F
+ freeaddrinfo F
+ freeifaddrs F
+ freelocale F
+ fremovexattr F
+ freopen F
+ freopen64 F
+ frexp F
+ frexpf F
+ frexpl F
+ fscanf F
+ fseek F
+ fseeko F
+ fseeko64 F
+ fsetpos F
+ fsetpos64 F
+ fsetxattr F
+ fstatfs F
+ fstatfs64 F
+ fstatvfs F
+ fstatvfs64 F
+ fsync F
+ ftell F
+ ftello F
+ ftello64 F
+ ftime F
+ ftok F
+ ftruncate F
+ ftruncate64 F
+ ftrylockfile F
+ fts_children F
+ fts_close F
+ fts_open F
+ fts_read F
+ fts_set F
+ ftw F
+ ftw64 F
+ funlockfile F
+ futimens F
+ futimes F
+ futimesat F
+ fwide F
+ fwprintf F
+ fwrite F
+ fwrite_unlocked F
+ fwscanf F
+ gai_strerror F
+ gcvt F
+ get_avphys_pages F
+ get_current_dir_name F
+ get_kernel_syms F
+ get_myaddress F
+ get_nprocs F
+ get_nprocs_conf F
+ get_phys_pages F
+ getaddrinfo F
+ getaliasbyname F
+ getaliasbyname_r F
+ getaliasent F
+ getaliasent_r F
+ getauxval F
+ getc F
+ getc_unlocked F
+ getchar F
+ getchar_unlocked F
+ getcontext F
+ getcwd F
+ getdate F
+ getdate_err D 0x4
+ getdate_r F
+ getdelim F
+ getdirentries F
+ getdirentries64 F
+ getdomainname F
+ getdtablesize F
+ getegid F
+ getenv F
+ geteuid F
+ getfsent F
+ getfsfile F
+ getfsspec F
+ getgid F
+ getgrent F
+ getgrent_r F
+ getgrgid F
+ getgrgid_r F
+ getgrnam F
+ getgrnam_r F
+ getgrouplist F
+ getgroups F
+ gethostbyaddr F
+ gethostbyaddr_r F
+ gethostbyname F
+ gethostbyname2 F
+ gethostbyname2_r F
+ gethostbyname_r F
+ gethostent F
+ gethostent_r F
+ gethostid F
+ gethostname F
+ getifaddrs F
+ getipv4sourcefilter F
+ getitimer F
+ getline F
+ getloadavg F
+ getlogin F
+ getlogin_r F
+ getmntent F
+ getmntent_r F
+ getmsg F
+ getnameinfo F
+ getnetbyaddr F
+ getnetbyaddr_r F
+ getnetbyname F
+ getnetbyname_r F
+ getnetent F
+ getnetent_r F
+ getnetgrent F
+ getnetgrent_r F
+ getnetname F
+ getopt F
+ getopt_long F
+ getopt_long_only F
+ getpagesize F
+ getpass F
+ getpeername F
+ getpgid F
+ getpgrp F
+ getpid F
+ getpmsg F
+ getppid F
+ getpriority F
+ getprotobyname F
+ getprotobyname_r F
+ getprotobynumber F
+ getprotobynumber_r F
+ getprotoent F
+ getprotoent_r F
+ getpt F
+ getpublickey F
+ getpw F
+ getpwent F
+ getpwent_r F
+ getpwnam F
+ getpwnam_r F
+ getpwuid F
+ getpwuid_r F
+ getresgid F
+ getresuid F
+ getrlimit F
+ getrlimit64 F
+ getrpcbyname F
+ getrpcbyname_r F
+ getrpcbynumber F
+ getrpcbynumber_r F
+ getrpcent F
+ getrpcent_r F
+ getrpcport F
+ getrusage F
+ gets F
+ getsecretkey F
+ getservbyname F
+ getservbyname_r F
+ getservbyport F
+ getservbyport_r F
+ getservent F
+ getservent_r F
+ getsgent F
+ getsgent_r F
+ getsgnam F
+ getsgnam_r F
+ getsid F
+ getsockname F
+ getsockopt F
+ getsourcefilter F
+ getspent F
+ getspent_r F
+ getspnam F
+ getspnam_r F
+ getsubopt F
+ gettext F
+ gettimeofday F
+ getttyent F
+ getttynam F
+ getuid F
+ getusershell F
+ getutent F
+ getutent_r F
+ getutid F
+ getutid_r F
+ getutline F
+ getutline_r F
+ getutmp F
+ getutmpx F
+ getutxent F
+ getutxid F
+ getutxline F
+ getw F
+ getwc F
+ getwc_unlocked F
+ getwchar F
+ getwchar_unlocked F
+ getwd F
+ getxattr F
+ glob F
+ glob64 F
+ glob_pattern_p F
+ globfree F
+ globfree64 F
+ gmtime F
+ gmtime_r F
+ gnu_dev_major F
+ gnu_dev_makedev F
+ gnu_dev_minor F
+ gnu_get_libc_release F
+ gnu_get_libc_version F
+ grantpt F
+ group_member F
+ gsignal F
+ gtty F
+ h_errlist D 0x14
+ h_nerr D 0x4
+ hasmntopt F
+ hcreate F
+ hcreate_r F
+ hdestroy F
+ hdestroy_r F
+ herror F
+ host2netname F
+ hsearch F
+ hsearch_r F
+ hstrerror F
+ htonl F
+ htons F
+ iconv F
+ iconv_close F
+ iconv_open F
+ if_freenameindex F
+ if_indextoname F
+ if_nameindex F
+ if_nametoindex F
+ imaxabs F
+ imaxdiv F
+ in6addr_any D 0x10
+ in6addr_loopback D 0x10
+ index F
+ inet6_opt_append F
+ inet6_opt_find F
+ inet6_opt_finish F
+ inet6_opt_get_val F
+ inet6_opt_init F
+ inet6_opt_next F
+ inet6_opt_set_val F
+ inet6_option_alloc F
+ inet6_option_append F
+ inet6_option_find F
+ inet6_option_init F
+ inet6_option_next F
+ inet6_option_space F
+ inet6_rth_add F
+ inet6_rth_getaddr F
+ inet6_rth_init F
+ inet6_rth_reverse F
+ inet6_rth_segments F
+ inet6_rth_space F
+ inet_addr F
+ inet_aton F
+ inet_lnaof F
+ inet_makeaddr F
+ inet_netof F
+ inet_network F
+ inet_nsap_addr F
+ inet_nsap_ntoa F
+ inet_ntoa F
+ inet_ntop F
+ inet_pton F
+ init_module F
+ initgroups F
+ initstate F
+ initstate_r F
+ innetgr F
+ inotify_add_watch F
+ inotify_init F
+ inotify_init1 F
+ inotify_rm_watch F
+ insque F
+ ioctl F
+ ioperm F
+ iopl F
+ iruserok F
+ iruserok_af F
+ isalnum F
+ isalnum_l F
+ isalpha F
+ isalpha_l F
+ isascii F
+ isastream F
+ isatty F
+ isblank F
+ isblank_l F
+ iscntrl F
+ iscntrl_l F
+ isctype F
+ isdigit F
+ isdigit_l F
+ isfdtype F
+ isgraph F
+ isgraph_l F
+ isinf F
+ isinff F
+ isinfl F
+ islower F
+ islower_l F
+ isnan F
+ isnanf F
+ isnanl F
+ isprint F
+ isprint_l F
+ ispunct F
+ ispunct_l F
+ isspace F
+ isspace_l F
+ isupper F
+ isupper_l F
+ iswalnum F
+ iswalnum_l F
+ iswalpha F
+ iswalpha_l F
+ iswblank F
+ iswblank_l F
+ iswcntrl F
+ iswcntrl_l F
+ iswctype F
+ iswctype_l F
+ iswdigit F
+ iswdigit_l F
+ iswgraph F
+ iswgraph_l F
+ iswlower F
+ iswlower_l F
+ iswprint F
+ iswprint_l F
+ iswpunct F
+ iswpunct_l F
+ iswspace F
+ iswspace_l F
+ iswupper F
+ iswupper_l F
+ iswxdigit F
+ iswxdigit_l F
+ isxdigit F
+ isxdigit_l F
+ jrand48 F
+ jrand48_r F
+ key_decryptsession F
+ key_decryptsession_pk F
+ key_encryptsession F
+ key_encryptsession_pk F
+ key_gendes F
+ key_get_conv F
+ key_secretkey_is_set F
+ key_setnet F
+ key_setsecret F
+ kill F
+ killpg F
+ klogctl F
+ l64a F
+ labs F
+ lchmod F
+ lchown F
+ lckpwdf F
+ lcong48 F
+ lcong48_r F
+ ldexp F
+ ldexpf F
+ ldexpl F
+ ldiv F
+ lfind F
+ lgetxattr F
+ link F
+ linkat F
+ listen F
+ listxattr F
+ llabs F
+ lldiv F
+ llistxattr F
+ loc1 D 0x4
+ loc2 D 0x4
+ localeconv F
+ localtime F
+ localtime_r F
+ lockf F
+ lockf64 F
+ locs D 0x4
+ longjmp F
+ lrand48 F
+ lrand48_r F
+ lremovexattr F
+ lsearch F
+ lseek F
+ lseek64 F
+ lsetxattr F
+ lutimes F
+ madvise F
+ makecontext F
+ mallinfo F
+ malloc F
+ malloc_get_state F
+ malloc_info F
+ malloc_set_state F
+ malloc_stats F
+ malloc_trim F
+ malloc_usable_size F
+ mallopt F
+ mallwatch D 0x4
+ mblen F
+ mbrlen F
+ mbrtoc16 F
+ mbrtoc32 F
+ mbrtowc F
+ mbsinit F
+ mbsnrtowcs F
+ mbsrtowcs F
+ mbstowcs F
+ mbtowc F
+ mcheck F
+ mcheck_check_all F
+ mcheck_pedantic F
+ mcount F
+ memalign F
+ memccpy F
+ memchr F
+ memcmp F
+ memcpy F
+ memfrob F
+ memmem F
+ memmove F
+ mempcpy F
+ memrchr F
+ memset F
+ mincore F
+ mkdir F
+ mkdirat F
+ mkdtemp F
+ mkfifo F
+ mkfifoat F
+ mkostemp F
+ mkostemp64 F
+ mkostemps F
+ mkostemps64 F
+ mkstemp F
+ mkstemp64 F
+ mkstemps F
+ mkstemps64 F
+ mktemp F
+ mktime F
+ mlock F
+ mlockall F
+ mmap F
+ mmap64 F
+ modf F
+ modff F
+ modfl F
+ modify_ldt F
+ moncontrol F
+ monstartup F
+ mount F
+ mprobe F
+ mprotect F
+ mrand48 F
+ mrand48_r F
+ mremap F
+ msgctl F
+ msgget F
+ msgrcv F
+ msgsnd F
+ msync F
+ mtrace F
+ munlock F
+ munlockall F
+ munmap F
+ muntrace F
+ name_to_handle_at F
+ nanosleep F
+ netname2host F
+ netname2user F
+ newlocale F
+ nfsservctl F
+ nftw F
+ nftw64 F
+ ngettext F
+ nice F
+ nl_langinfo F
+ nl_langinfo_l F
+ nrand48 F
+ nrand48_r F
+ ntohl F
+ ntohs F
+ ntp_adjtime F
+ ntp_gettime F
+ ntp_gettimex F
+ obstack_alloc_failed_handler D 0x4
+ obstack_exit_failure D 0x4
+ obstack_free F
+ obstack_printf F
+ obstack_vprintf F
+ on_exit F
+ open F
+ open64 F
+ open_by_handle_at F
+ open_memstream F
+ open_wmemstream F
+ openat F
+ openat64 F
+ opendir F
+ openlog F
+ optarg D 0x4
+ opterr D 0x4
+ optind D 0x4
+ optopt D 0x4
+ parse_printf_format F
+ passwd2des F
+ pathconf F
+ pause F
+ pclose F
+ perror F
+ personality F
+ pipe F
+ pipe2 F
+ pivot_root F
+ pmap_getmaps F
+ pmap_getport F
+ pmap_rmtcall F
+ pmap_set F
+ pmap_unset F
+ poll F
+ popen F
+ posix_fadvise F
+ posix_fadvise64 F
+ posix_fallocate F
+ posix_fallocate64 F
+ posix_madvise F
+ posix_memalign F
+ posix_openpt F
+ posix_spawn F
+ posix_spawn_file_actions_addclose F
+ posix_spawn_file_actions_adddup2 F
+ posix_spawn_file_actions_addopen F
+ posix_spawn_file_actions_destroy F
+ posix_spawn_file_actions_init F
+ posix_spawnattr_destroy F
+ posix_spawnattr_getflags F
+ posix_spawnattr_getpgroup F
+ posix_spawnattr_getschedparam F
+ posix_spawnattr_getschedpolicy F
+ posix_spawnattr_getsigdefault F
+ posix_spawnattr_getsigmask F
+ posix_spawnattr_init F
+ posix_spawnattr_setflags F
+ posix_spawnattr_setpgroup F
+ posix_spawnattr_setschedparam F
+ posix_spawnattr_setschedpolicy F
+ posix_spawnattr_setsigdefault F
+ posix_spawnattr_setsigmask F
+ posix_spawnp F
+ ppoll F
+ prctl F
+ pread F
+ pread64 F
+ preadv F
+ preadv64 F
+ printf F
+ printf_size F
+ printf_size_info F
+ prlimit F
+ prlimit64 F
+ process_vm_readv F
+ process_vm_writev F
+ profil F
+ program_invocation_name D 0x4
+ program_invocation_short_name D 0x4
+ pselect F
+ psiginfo F
+ psignal F
+ pthread_attr_destroy F
+ pthread_attr_getdetachstate F
+ pthread_attr_getinheritsched F
+ pthread_attr_getschedparam F
+ pthread_attr_getschedpolicy F
+ pthread_attr_getscope F
+ pthread_attr_init F
+ pthread_attr_setdetachstate F
+ pthread_attr_setinheritsched F
+ pthread_attr_setschedparam F
+ pthread_attr_setschedpolicy F
+ pthread_attr_setscope F
+ pthread_cond_broadcast F
+ pthread_cond_destroy F
+ pthread_cond_init F
+ pthread_cond_signal F
+ pthread_cond_timedwait F
+ pthread_cond_wait F
+ pthread_condattr_destroy F
+ pthread_condattr_init F
+ pthread_equal F
+ pthread_exit F
+ pthread_getschedparam F
+ pthread_mutex_destroy F
+ pthread_mutex_init F
+ pthread_mutex_lock F
+ pthread_mutex_unlock F
+ pthread_self F
+ pthread_setcancelstate F
+ pthread_setcanceltype F
+ pthread_setschedparam F
+ ptrace F
+ ptsname F
+ ptsname_r F
+ putc F
+ putc_unlocked F
+ putchar F
+ putchar_unlocked F
+ putenv F
+ putgrent F
+ putmsg F
+ putpmsg F
+ putpwent F
+ puts F
+ putsgent F
+ putspent F
+ pututline F
+ pututxline F
+ putw F
+ putwc F
+ putwc_unlocked F
+ putwchar F
+ putwchar_unlocked F
+ pvalloc F
+ pwrite F
+ pwrite64 F
+ pwritev F
+ pwritev64 F
+ qecvt F
+ qecvt_r F
+ qfcvt F
+ qfcvt_r F
+ qgcvt F
+ qsort F
+ qsort_r F
+ query_module F
+ quick_exit F
+ quotactl F
+ raise F
+ rand F
+ rand_r F
+ random F
+ random_r F
+ rawmemchr F
+ rcmd F
+ rcmd_af F
+ re_comp F
+ re_compile_fastmap F
+ re_compile_pattern F
+ re_exec F
+ re_match F
+ re_match_2 F
+ re_search F
+ re_search_2 F
+ re_set_registers F
+ re_set_syntax F
+ re_syntax_options D 0x4
+ read F
+ readahead F
+ readdir F
+ readdir64 F
+ readdir64_r F
+ readdir_r F
+ readlink F
+ readlinkat F
+ readv F
+ realloc F
+ realpath F
+ reboot F
+ recv F
+ recvfrom F
+ recvmmsg F
+ recvmsg F
+ regcomp F
+ regerror F
+ regexec F
+ regfree F
+ register_printf_function F
+ register_printf_modifier F
+ register_printf_specifier F
+ register_printf_type F
+ registerrpc F
+ remap_file_pages F
+ remove F
+ removexattr F
+ remque F
+ rename F
+ renameat F
+ revoke F
+ rewind F
+ rewinddir F
+ rexec F
+ rexec_af F
+ rexecoptions D 0x4
+ rindex F
+ rmdir F
+ rpc_createerr D 0x10
+ rpmatch F
+ rresvport F
+ rresvport_af F
+ rtime F
+ ruserok F
+ ruserok_af F
+ ruserpass F
+ sbrk F
+ scalbn F
+ scalbnf F
+ scalbnl F
+ scandir F
+ scandir64 F
+ scandirat F
+ scandirat64 F
+ scanf F
+ sched_get_priority_max F
+ sched_get_priority_min F
+ sched_getaffinity F
+ sched_getcpu F
+ sched_getparam F
+ sched_getscheduler F
+ sched_rr_get_interval F
+ sched_setaffinity F
+ sched_setparam F
+ sched_setscheduler F
+ sched_yield F
+ seed48 F
+ seed48_r F
+ seekdir F
+ select F
+ semctl F
+ semget F
+ semop F
+ semtimedop F
+ send F
+ sendfile F
+ sendfile64 F
+ sendmmsg F
+ sendmsg F
+ sendto F
+ setaliasent F
+ setbuf F
+ setbuffer F
+ setcontext F
+ setdomainname F
+ setegid F
+ setenv F
+ seteuid F
+ setfsent F
+ setfsgid F
+ setfsuid F
+ setgid F
+ setgrent F
+ setgroups F
+ sethostent F
+ sethostid F
+ sethostname F
+ setipv4sourcefilter F
+ setitimer F
+ setjmp F
+ setlinebuf F
+ setlocale F
+ setlogin F
+ setlogmask F
+ setmntent F
+ setnetent F
+ setnetgrent F
+ setns F
+ setpgid F
+ setpgrp F
+ setpriority F
+ setprotoent F
+ setpwent F
+ setregid F
+ setresgid F
+ setresuid F
+ setreuid F
+ setrlimit F
+ setrlimit64 F
+ setrpcent F
+ setservent F
+ setsgent F
+ setsid F
+ setsockopt F
+ setsourcefilter F
+ setspent F
+ setstate F
+ setstate_r F
+ settimeofday F
+ setttyent F
+ setuid F
+ setusershell F
+ setutent F
+ setutxent F
+ setvbuf F
+ setxattr F
+ sgetsgent F
+ sgetsgent_r F
+ sgetspent F
+ sgetspent_r F
+ shmat F
+ shmctl F
+ shmdt F
+ shmget F
+ shutdown F
+ sigaction F
+ sigaddset F
+ sigaltstack F
+ sigandset F
+ sigblock F
+ sigdelset F
+ sigemptyset F
+ sigfillset F
+ siggetmask F
+ sighold F
+ sigignore F
+ siginterrupt F
+ sigisemptyset F
+ sigismember F
+ siglongjmp F
+ signal F
+ signalfd F
+ sigorset F
+ sigpause F
+ sigpending F
+ sigprocmask F
+ sigqueue F
+ sigrelse F
+ sigreturn F
+ sigset F
+ sigsetmask F
+ sigstack F
+ sigsuspend F
+ sigtimedwait F
+ sigvec F
+ sigwait F
+ sigwaitinfo F
+ sleep F
+ snprintf F
+ sockatmark F
+ socket F
+ socketpair F
+ splice F
+ sprintf F
+ sprofil F
+ srand F
+ srand48 F
+ srand48_r F
+ srandom F
+ srandom_r F
+ sscanf F
+ ssignal F
+ sstk F
+ statfs F
+ statfs64 F
+ statvfs F
+ statvfs64 F
+ stderr D 0x4
+ stdin D 0x4
+ stdout D 0x4
+ step F
+ stime F
+ stpcpy F
+ stpncpy F
+ strcasecmp F
+ strcasecmp_l F
+ strcasestr F
+ strcat F
+ strchr F
+ strchrnul F
+ strcmp F
+ strcoll F
+ strcoll_l F
+ strcpy F
+ strcspn F
+ strdup F
+ strerror F
+ strerror_l F
+ strerror_r F
+ strfmon F
+ strfmon_l F
+ strfry F
+ strftime F
+ strftime_l F
+ strlen F
+ strncasecmp F
+ strncasecmp_l F
+ strncat F
+ strncmp F
+ strncpy F
+ strndup F
+ strnlen F
+ strpbrk F
+ strptime F
+ strptime_l F
+ strrchr F
+ strsep F
+ strsignal F
+ strspn F
+ strstr F
+ strtod F
+ strtod_l F
+ strtof F
+ strtof_l F
+ strtoimax F
+ strtok F
+ strtok_r F
+ strtol F
+ strtol_l F
+ strtold F
+ strtold_l F
+ strtoll F
+ strtoll_l F
+ strtoq F
+ strtoul F
+ strtoul_l F
+ strtoull F
+ strtoull_l F
+ strtoumax F
+ strtouq F
+ strverscmp F
+ strxfrm F
+ strxfrm_l F
+ stty F
+ svc_exit F
+ svc_fdset D 0x80
+ svc_getreq F
+ svc_getreq_common F
+ svc_getreq_poll F
+ svc_getreqset F
+ svc_max_pollfd D 0x4
+ svc_pollfd D 0x4
+ svc_register F
+ svc_run F
+ svc_sendreply F
+ svc_unregister F
+ svcauthdes_stats D 0xc
+ svcerr_auth F
+ svcerr_decode F
+ svcerr_noproc F
+ svcerr_noprog F
+ svcerr_progvers F
+ svcerr_systemerr F
+ svcerr_weakauth F
+ svcfd_create F
+ svcraw_create F
+ svctcp_create F
+ svcudp_bufcreate F
+ svcudp_create F
+ svcudp_enablecache F
+ svcunix_create F
+ svcunixfd_create F
+ swab F
+ swapcontext F
+ swapoff F
+ swapon F
+ swprintf F
+ swscanf F
+ symlink F
+ symlinkat F
+ sync F
+ sync_file_range F
+ syncfs F
+ sys_errlist D 0x21c
+ sys_nerr D 0x4
+ sys_sigabbrev D 0x104
+ sys_siglist D 0x104
+ syscall F
+ sysconf F
+ sysinfo F
+ syslog F
+ system F
+ sysv_signal F
+ tcdrain F
+ tcflow F
+ tcflush F
+ tcgetattr F
+ tcgetpgrp F
+ tcgetsid F
+ tcsendbreak F
+ tcsetattr F
+ tcsetpgrp F
+ tdelete F
+ tdestroy F
+ tee F
+ telldir F
+ tempnam F
+ textdomain F
+ tfind F
+ time F
+ timegm F
+ timelocal F
+ timerfd_create F
+ timerfd_gettime F
+ timerfd_settime F
+ times F
+ timespec_get F
+ timezone D 0x4
+ tmpfile F
+ tmpfile64 F
+ tmpnam F
+ tmpnam_r F
+ toascii F
+ tolower F
+ tolower_l F
+ toupper F
+ toupper_l F
+ towctrans F
+ towctrans_l F
+ towlower F
+ towlower_l F
+ towupper F
+ towupper_l F
+ tr_break F
+ truncate F
+ truncate64 F
+ tsearch F
+ ttyname F
+ ttyname_r F
+ ttyslot F
+ twalk F
+ tzname D 0x8
+ tzset F
+ ualarm F
+ ulckpwdf F
+ ulimit F
+ umask F
+ umount F
+ umount2 F
+ uname F
+ ungetc F
+ ungetwc F
+ unlink F
+ unlinkat F
+ unlockpt F
+ unsetenv F
+ unshare F
+ updwtmp F
+ updwtmpx F
+ uselib F
+ uselocale F
+ user2netname F
+ usleep F
+ ustat F
+ utime F
+ utimensat F
+ utimes F
+ utmpname F
+ utmpxname F
+ valloc F
+ vasprintf F
+ vdprintf F
+ verr F
+ verrx F
+ versionsort F
+ versionsort64 F
+ vfork F
+ vfprintf F
+ vfscanf F
+ vfwprintf F
+ vfwscanf F
+ vhangup F
+ vlimit F
+ vmsplice F
+ vprintf F
+ vscanf F
+ vsnprintf F
+ vsprintf F
+ vsscanf F
+ vswprintf F
+ vswscanf F
+ vsyslog F
+ vtimes F
+ vwarn F
+ vwarnx F
+ vwprintf F
+ vwscanf F
+ wait F
+ wait3 F
+ wait4 F
+ waitid F
+ waitpid F
+ warn F
+ warnx F
+ wcpcpy F
+ wcpncpy F
+ wcrtomb F
+ wcscasecmp F
+ wcscasecmp_l F
+ wcscat F
+ wcschr F
+ wcschrnul F
+ wcscmp F
+ wcscoll F
+ wcscoll_l F
+ wcscpy F
+ wcscspn F
+ wcsdup F
+ wcsftime F
+ wcsftime_l F
+ wcslen F
+ wcsncasecmp F
+ wcsncasecmp_l F
+ wcsncat F
+ wcsncmp F
+ wcsncpy F
+ wcsnlen F
+ wcsnrtombs F
+ wcspbrk F
+ wcsrchr F
+ wcsrtombs F
+ wcsspn F
+ wcsstr F
+ wcstod F
+ wcstod_l F
+ wcstof F
+ wcstof_l F
+ wcstoimax F
+ wcstok F
+ wcstol F
+ wcstol_l F
+ wcstold F
+ wcstold_l F
+ wcstoll F
+ wcstoll_l F
+ wcstombs F
+ wcstoq F
+ wcstoul F
+ wcstoul_l F
+ wcstoull F
+ wcstoull_l F
+ wcstoumax F
+ wcstouq F
+ wcswcs F
+ wcswidth F
+ wcsxfrm F
+ wcsxfrm_l F
+ wctob F
+ wctomb F
+ wctrans F
+ wctrans_l F
+ wctype F
+ wctype_l F
+ wcwidth F
+ wmemchr F
+ wmemcmp F
+ wmemcpy F
+ wmemmove F
+ wmempcpy F
+ wmemset F
+ wordexp F
+ wordfree F
+ wprintf F
+ write F
+ writev F
+ wscanf F
+ xdecrypt F
+ xdr_accepted_reply F
+ xdr_array F
+ xdr_authdes_cred F
+ xdr_authdes_verf F
+ xdr_authunix_parms F
+ xdr_bool F
+ xdr_bytes F
+ xdr_callhdr F
+ xdr_callmsg F
+ xdr_char F
+ xdr_cryptkeyarg F
+ xdr_cryptkeyarg2 F
+ xdr_cryptkeyres F
+ xdr_des_block F
+ xdr_double F
+ xdr_enum F
+ xdr_float F
+ xdr_free F
+ xdr_getcredres F
+ xdr_hyper F
+ xdr_int F
+ xdr_int16_t F
+ xdr_int32_t F
+ xdr_int64_t F
+ xdr_int8_t F
+ xdr_key_netstarg F
+ xdr_key_netstres F
+ xdr_keybuf F
+ xdr_keystatus F
+ xdr_long F
+ xdr_longlong_t F
+ xdr_netnamestr F
+ xdr_netobj F
+ xdr_opaque F
+ xdr_opaque_auth F
+ xdr_pmap F
+ xdr_pmaplist F
+ xdr_pointer F
+ xdr_quad_t F
+ xdr_reference F
+ xdr_rejected_reply F
+ xdr_replymsg F
+ xdr_rmtcall_args F
+ xdr_rmtcallres F
+ xdr_short F
+ xdr_sizeof F
+ xdr_string F
+ xdr_u_char F
+ xdr_u_hyper F
+ xdr_u_int F
+ xdr_u_long F
+ xdr_u_longlong_t F
+ xdr_u_quad_t F
+ xdr_u_short F
+ xdr_uint16_t F
+ xdr_uint32_t F
+ xdr_uint64_t F
+ xdr_uint8_t F
+ xdr_union F
+ xdr_unixcred F
+ xdr_vector F
+ xdr_void F
+ xdr_wrapstring F
+ xdrmem_create F
+ xdrrec_create F
+ xdrrec_endofrecord F
+ xdrrec_eof F
+ xdrrec_skiprecord F
+ xdrstdio_create F
+ xencrypt F
+ xprt_register F
+ xprt_unregister F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist
new file mode 100644
index 0000000..1a52738
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libcrypt.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ crypt F
+ crypt_r F
+ encrypt F
+ encrypt_r F
+ fcrypt F
+ setkey F
+ setkey_r F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libdl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libdl.abilist
new file mode 100644
index 0000000..295ea7d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libdl.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ dladdr F
+ dladdr1 F
+ dlclose F
+ dlerror F
+ dlinfo F
+ dlmopen F
+ dlopen F
+ dlsym F
+ dlvsym F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist
new file mode 100644
index 0000000..0f3ea4b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libm.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,397 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ _LIB_VERSION D 0x4
+ __acos_finite F
+ __acosf_finite F
+ __acosh_finite F
+ __acoshf_finite F
+ __acoshl_finite F
+ __acosl_finite F
+ __asin_finite F
+ __asinf_finite F
+ __asinl_finite F
+ __atan2_finite F
+ __atan2f_finite F
+ __atan2l_finite F
+ __atanh_finite F
+ __atanhf_finite F
+ __atanhl_finite F
+ __clog10 F
+ __clog10f F
+ __clog10l F
+ __cosh_finite F
+ __coshf_finite F
+ __coshl_finite F
+ __exp10_finite F
+ __exp10f_finite F
+ __exp10l_finite F
+ __exp2_finite F
+ __exp2f_finite F
+ __exp2l_finite F
+ __exp_finite F
+ __expf_finite F
+ __expl_finite F
+ __finite F
+ __finitef F
+ __finitel F
+ __fmod_finite F
+ __fmodf_finite F
+ __fmodl_finite F
+ __fpclassify F
+ __fpclassifyf F
+ __fpclassifyl F
+ __gamma_r_finite F
+ __gammaf_r_finite F
+ __gammal_r_finite F
+ __hypot_finite F
+ __hypotf_finite F
+ __hypotl_finite F
+ __j0_finite F
+ __j0f_finite F
+ __j0l_finite F
+ __j1_finite F
+ __j1f_finite F
+ __j1l_finite F
+ __jn_finite F
+ __jnf_finite F
+ __jnl_finite F
+ __lgamma_r_finite F
+ __lgammaf_r_finite F
+ __lgammal_r_finite F
+ __log10_finite F
+ __log10f_finite F
+ __log10l_finite F
+ __log2_finite F
+ __log2f_finite F
+ __log2l_finite F
+ __log_finite F
+ __logf_finite F
+ __logl_finite F
+ __pow_finite F
+ __powf_finite F
+ __powl_finite F
+ __remainder_finite F
+ __remainderf_finite F
+ __remainderl_finite F
+ __scalb_finite F
+ __scalbf_finite F
+ __scalbl_finite F
+ __signbit F
+ __signbitf F
+ __signbitl F
+ __sinh_finite F
+ __sinhf_finite F
+ __sinhl_finite F
+ __sqrt_finite F
+ __sqrtf_finite F
+ __sqrtl_finite F
+ __y0_finite F
+ __y0f_finite F
+ __y0l_finite F
+ __y1_finite F
+ __y1f_finite F
+ __y1l_finite F
+ __yn_finite F
+ __ynf_finite F
+ __ynl_finite F
+ acos F
+ acosf F
+ acosh F
+ acoshf F
+ acoshl F
+ acosl F
+ asin F
+ asinf F
+ asinh F
+ asinhf F
+ asinhl F
+ asinl F
+ atan F
+ atan2 F
+ atan2f F
+ atan2l F
+ atanf F
+ atanh F
+ atanhf F
+ atanhl F
+ atanl F
+ cabs F
+ cabsf F
+ cabsl F
+ cacos F
+ cacosf F
+ cacosh F
+ cacoshf F
+ cacoshl F
+ cacosl F
+ carg F
+ cargf F
+ cargl F
+ casin F
+ casinf F
+ casinh F
+ casinhf F
+ casinhl F
+ casinl F
+ catan F
+ catanf F
+ catanh F
+ catanhf F
+ catanhl F
+ catanl F
+ cbrt F
+ cbrtf F
+ cbrtl F
+ ccos F
+ ccosf F
+ ccosh F
+ ccoshf F
+ ccoshl F
+ ccosl F
+ ceil F
+ ceilf F
+ ceill F
+ cexp F
+ cexpf F
+ cexpl F
+ cimag F
+ cimagf F
+ cimagl F
+ clog F
+ clog10 F
+ clog10f F
+ clog10l F
+ clogf F
+ clogl F
+ conj F
+ conjf F
+ conjl F
+ copysign F
+ copysignf F
+ copysignl F
+ cos F
+ cosf F
+ cosh F
+ coshf F
+ coshl F
+ cosl F
+ cpow F
+ cpowf F
+ cpowl F
+ cproj F
+ cprojf F
+ cprojl F
+ creal F
+ crealf F
+ creall F
+ csin F
+ csinf F
+ csinh F
+ csinhf F
+ csinhl F
+ csinl F
+ csqrt F
+ csqrtf F
+ csqrtl F
+ ctan F
+ ctanf F
+ ctanh F
+ ctanhf F
+ ctanhl F
+ ctanl F
+ drem F
+ dremf F
+ dreml F
+ erf F
+ erfc F
+ erfcf F
+ erfcl F
+ erff F
+ erfl F
+ exp F
+ exp10 F
+ exp10f F
+ exp10l F
+ exp2 F
+ exp2f F
+ exp2l F
+ expf F
+ expl F
+ expm1 F
+ expm1f F
+ expm1l F
+ fabs F
+ fabsf F
+ fabsl F
+ fdim F
+ fdimf F
+ fdiml F
+ feclearexcept F
+ fedisableexcept F
+ feenableexcept F
+ fegetenv F
+ fegetexcept F
+ fegetexceptflag F
+ fegetround F
+ feholdexcept F
+ feraiseexcept F
+ fesetenv F
+ fesetexceptflag F
+ fesetround F
+ fetestexcept F
+ feupdateenv F
+ finite F
+ finitef F
+ finitel F
+ floor F
+ floorf F
+ floorl F
+ fma F
+ fmaf F
+ fmal F
+ fmax F
+ fmaxf F
+ fmaxl F
+ fmin F
+ fminf F
+ fminl F
+ fmod F
+ fmodf F
+ fmodl F
+ frexp F
+ frexpf F
+ frexpl F
+ gamma F
+ gammaf F
+ gammal F
+ hypot F
+ hypotf F
+ hypotl F
+ ilogb F
+ ilogbf F
+ ilogbl F
+ j0 F
+ j0f F
+ j0l F
+ j1 F
+ j1f F
+ j1l F
+ jn F
+ jnf F
+ jnl F
+ ldexp F
+ ldexpf F
+ ldexpl F
+ lgamma F
+ lgamma_r F
+ lgammaf F
+ lgammaf_r F
+ lgammal F
+ lgammal_r F
+ llrint F
+ llrintf F
+ llrintl F
+ llround F
+ llroundf F
+ llroundl F
+ log F
+ log10 F
+ log10f F
+ log10l F
+ log1p F
+ log1pf F
+ log1pl F
+ log2 F
+ log2f F
+ log2l F
+ logb F
+ logbf F
+ logbl F
+ logf F
+ logl F
+ lrint F
+ lrintf F
+ lrintl F
+ lround F
+ lroundf F
+ lroundl F
+ matherr F
+ modf F
+ modff F
+ modfl F
+ nan F
+ nanf F
+ nanl F
+ nearbyint F
+ nearbyintf F
+ nearbyintl F
+ nextafter F
+ nextafterf F
+ nextafterl F
+ nexttoward F
+ nexttowardf F
+ nexttowardl F
+ pow F
+ pow10 F
+ pow10f F
+ pow10l F
+ powf F
+ powl F
+ remainder F
+ remainderf F
+ remainderl F
+ remquo F
+ remquof F
+ remquol F
+ rint F
+ rintf F
+ rintl F
+ round F
+ roundf F
+ roundl F
+ scalb F
+ scalbf F
+ scalbl F
+ scalbln F
+ scalblnf F
+ scalblnl F
+ scalbn F
+ scalbnf F
+ scalbnl F
+ signgam D 0x4
+ significand F
+ significandf F
+ significandl F
+ sin F
+ sincos F
+ sincosf F
+ sincosl F
+ sinf F
+ sinh F
+ sinhf F
+ sinhl F
+ sinl F
+ sqrt F
+ sqrtf F
+ sqrtl F
+ tan F
+ tanf F
+ tanh F
+ tanhf F
+ tanhl F
+ tanl F
+ tgamma F
+ tgammaf F
+ tgammal F
+ trunc F
+ truncf F
+ truncl F
+ y0 F
+ y0f F
+ y0l F
+ y1 F
+ y1f F
+ y1l F
+ yn F
+ ynf F
+ ynl F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libnsl.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libnsl.abilist
new file mode 100644
index 0000000..3accaa0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libnsl.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,123 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ __free_fdresult F
+ __nis_default_access F
+ __nis_default_group F
+ __nis_default_owner F
+ __nis_default_ttl F
+ __nis_finddirectory F
+ __nis_hash F
+ __nisbind_connect F
+ __nisbind_create F
+ __nisbind_destroy F
+ __nisbind_next F
+ __yp_check F
+ nis_add F
+ nis_add_entry F
+ nis_addmember F
+ nis_checkpoint F
+ nis_clone_directory F
+ nis_clone_object F
+ nis_clone_result F
+ nis_creategroup F
+ nis_destroy_object F
+ nis_destroygroup F
+ nis_dir_cmp F
+ nis_domain_of F
+ nis_domain_of_r F
+ nis_first_entry F
+ nis_free_directory F
+ nis_free_object F
+ nis_free_request F
+ nis_freenames F
+ nis_freeresult F
+ nis_freeservlist F
+ nis_freetags F
+ nis_getnames F
+ nis_getservlist F
+ nis_ismember F
+ nis_leaf_of F
+ nis_leaf_of_r F
+ nis_lerror F
+ nis_list F
+ nis_local_directory F
+ nis_local_group F
+ nis_local_host F
+ nis_local_principal F
+ nis_lookup F
+ nis_mkdir F
+ nis_modify F
+ nis_modify_entry F
+ nis_name_of F
+ nis_name_of_r F
+ nis_next_entry F
+ nis_perror F
+ nis_ping F
+ nis_print_directory F
+ nis_print_entry F
+ nis_print_group F
+ nis_print_group_entry F
+ nis_print_link F
+ nis_print_object F
+ nis_print_result F
+ nis_print_rights F
+ nis_print_table F
+ nis_read_obj F
+ nis_remove F
+ nis_remove_entry F
+ nis_removemember F
+ nis_rmdir F
+ nis_servstate F
+ nis_sperrno F
+ nis_sperror F
+ nis_sperror_r F
+ nis_stats F
+ nis_verifygroup F
+ nis_write_obj F
+ readColdStartFile F
+ writeColdStartFile F
+ xdr_cback_data F
+ xdr_domainname F
+ xdr_keydat F
+ xdr_mapname F
+ xdr_obj_p F
+ xdr_peername F
+ xdr_valdat F
+ xdr_yp_buf F
+ xdr_ypall F
+ xdr_ypbind_binding F
+ xdr_ypbind_resp F
+ xdr_ypbind_resptype F
+ xdr_ypbind_setdom F
+ xdr_ypdelete_args F
+ xdr_ypmap_parms F
+ xdr_ypmaplist F
+ xdr_yppush_status F
+ xdr_yppushresp_xfr F
+ xdr_ypreq_key F
+ xdr_ypreq_nokey F
+ xdr_ypreq_xfr F
+ xdr_ypresp_all F
+ xdr_ypresp_key_val F
+ xdr_ypresp_maplist F
+ xdr_ypresp_master F
+ xdr_ypresp_order F
+ xdr_ypresp_val F
+ xdr_ypresp_xfr F
+ xdr_ypstat F
+ xdr_ypupdate_args F
+ xdr_ypxfrstat F
+ yp_all F
+ yp_bind F
+ yp_first F
+ yp_get_default_domain F
+ yp_maplist F
+ yp_master F
+ yp_match F
+ yp_next F
+ yp_order F
+ yp_unbind F
+ yp_update F
+ ypbinderr_string F
+ yperr_string F
+ ypprot_err F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libpthread.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libpthread.abilist
new file mode 100644
index 0000000..ee69932
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libpthread.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,225 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ _IO_flockfile F
+ _IO_ftrylockfile F
+ _IO_funlockfile F
+ __close F
+ __connect F
+ __errno_location F
+ __fcntl F
+ __fork F
+ __h_errno_location F
+ __libc_allocate_rtsig F
+ __libc_current_sigrtmax F
+ __libc_current_sigrtmin F
+ __lseek F
+ __nanosleep F
+ __open F
+ __open64 F
+ __pread64 F
+ __pthread_cleanup_routine F
+ __pthread_getspecific F
+ __pthread_key_create F
+ __pthread_mutex_destroy F
+ __pthread_mutex_init F
+ __pthread_mutex_lock F
+ __pthread_mutex_trylock F
+ __pthread_mutex_unlock F
+ __pthread_mutexattr_destroy F
+ __pthread_mutexattr_init F
+ __pthread_mutexattr_settype F
+ __pthread_once F
+ __pthread_register_cancel F
+ __pthread_register_cancel_defer F
+ __pthread_rwlock_destroy F
+ __pthread_rwlock_init F
+ __pthread_rwlock_rdlock F
+ __pthread_rwlock_tryrdlock F
+ __pthread_rwlock_trywrlock F
+ __pthread_rwlock_unlock F
+ __pthread_rwlock_wrlock F
+ __pthread_setspecific F
+ __pthread_unregister_cancel F
+ __pthread_unregister_cancel_restore F
+ __pthread_unwind_next F
+ __pwrite64 F
+ __read F
+ __res_state F
+ __send F
+ __sigaction F
+ __vfork F
+ __wait F
+ __write F
+ _pthread_cleanup_pop F
+ _pthread_cleanup_pop_restore F
+ _pthread_cleanup_push F
+ _pthread_cleanup_push_defer F
+ accept F
+ close F
+ connect F
+ fcntl F
+ flockfile F
+ fork F
+ fsync F
+ ftrylockfile F
+ funlockfile F
+ longjmp F
+ lseek F
+ lseek64 F
+ msync F
+ nanosleep F
+ open F
+ open64 F
+ pause F
+ pread F
+ pread64 F
+ pthread_atfork F
+ pthread_attr_destroy F
+ pthread_attr_getaffinity_np F
+ pthread_attr_getdetachstate F
+ pthread_attr_getguardsize F
+ pthread_attr_getinheritsched F
+ pthread_attr_getschedparam F
+ pthread_attr_getschedpolicy F
+ pthread_attr_getscope F
+ pthread_attr_getstack F
+ pthread_attr_getstackaddr F
+ pthread_attr_getstacksize F
+ pthread_attr_init F
+ pthread_attr_setaffinity_np F
+ pthread_attr_setdetachstate F
+ pthread_attr_setguardsize F
+ pthread_attr_setinheritsched F
+ pthread_attr_setschedparam F
+ pthread_attr_setschedpolicy F
+ pthread_attr_setscope F
+ pthread_attr_setstack F
+ pthread_attr_setstackaddr F
+ pthread_attr_setstacksize F
+ pthread_barrier_destroy F
+ pthread_barrier_init F
+ pthread_barrier_wait F
+ pthread_barrierattr_destroy F
+ pthread_barrierattr_getpshared F
+ pthread_barrierattr_init F
+ pthread_barrierattr_setpshared F
+ pthread_cancel F
+ pthread_cond_broadcast F
+ pthread_cond_destroy F
+ pthread_cond_init F
+ pthread_cond_signal F
+ pthread_cond_timedwait F
+ pthread_cond_wait F
+ pthread_condattr_destroy F
+ pthread_condattr_getclock F
+ pthread_condattr_getpshared F
+ pthread_condattr_init F
+ pthread_condattr_setclock F
+ pthread_condattr_setpshared F
+ pthread_create F
+ pthread_detach F
+ pthread_equal F
+ pthread_exit F
+ pthread_getaffinity_np F
+ pthread_getattr_np F
+ pthread_getconcurrency F
+ pthread_getcpuclockid F
+ pthread_getname_np F
+ pthread_getschedparam F
+ pthread_getspecific F
+ pthread_join F
+ pthread_key_create F
+ pthread_key_delete F
+ pthread_kill F
+ pthread_kill_other_threads_np F
+ pthread_mutex_consistent F
+ pthread_mutex_consistent_np F
+ pthread_mutex_destroy F
+ pthread_mutex_getprioceiling F
+ pthread_mutex_init F
+ pthread_mutex_lock F
+ pthread_mutex_setprioceiling F
+ pthread_mutex_timedlock F
+ pthread_mutex_trylock F
+ pthread_mutex_unlock F
+ pthread_mutexattr_destroy F
+ pthread_mutexattr_getkind_np F
+ pthread_mutexattr_getprioceiling F
+ pthread_mutexattr_getprotocol F
+ pthread_mutexattr_getpshared F
+ pthread_mutexattr_getrobust F
+ pthread_mutexattr_getrobust_np F
+ pthread_mutexattr_gettype F
+ pthread_mutexattr_init F
+ pthread_mutexattr_setkind_np F
+ pthread_mutexattr_setprioceiling F
+ pthread_mutexattr_setprotocol F
+ pthread_mutexattr_setpshared F
+ pthread_mutexattr_setrobust F
+ pthread_mutexattr_setrobust_np F
+ pthread_mutexattr_settype F
+ pthread_once F
+ pthread_rwlock_destroy F
+ pthread_rwlock_init F
+ pthread_rwlock_rdlock F
+ pthread_rwlock_timedrdlock F
+ pthread_rwlock_timedwrlock F
+ pthread_rwlock_tryrdlock F
+ pthread_rwlock_trywrlock F
+ pthread_rwlock_unlock F
+ pthread_rwlock_wrlock F
+ pthread_rwlockattr_destroy F
+ pthread_rwlockattr_getkind_np F
+ pthread_rwlockattr_getpshared F
+ pthread_rwlockattr_init F
+ pthread_rwlockattr_setkind_np F
+ pthread_rwlockattr_setpshared F
+ pthread_self F
+ pthread_setaffinity_np F
+ pthread_setcancelstate F
+ pthread_setcanceltype F
+ pthread_setconcurrency F
+ pthread_setname_np F
+ pthread_setschedparam F
+ pthread_setschedprio F
+ pthread_setspecific F
+ pthread_sigmask F
+ pthread_sigqueue F
+ pthread_spin_destroy F
+ pthread_spin_init F
+ pthread_spin_lock F
+ pthread_spin_trylock F
+ pthread_spin_unlock F
+ pthread_testcancel F
+ pthread_timedjoin_np F
+ pthread_tryjoin_np F
+ pthread_yield F
+ pwrite F
+ pwrite64 F
+ raise F
+ read F
+ recv F
+ recvfrom F
+ recvmsg F
+ sem_close F
+ sem_destroy F
+ sem_getvalue F
+ sem_init F
+ sem_open F
+ sem_post F
+ sem_timedwait F
+ sem_trywait F
+ sem_unlink F
+ sem_wait F
+ send F
+ sendmsg F
+ sendto F
+ sigaction F
+ siglongjmp F
+ sigwait F
+ system F
+ tcdrain F
+ vfork F
+ wait F
+ waitpid F
+ write F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libresolv.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libresolv.abilist
new file mode 100644
index 0000000..0cb5660
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libresolv.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,93 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ __b64_ntop F
+ __b64_pton F
+ __dn_comp F
+ __dn_count_labels F
+ __dn_expand F
+ __dn_skipname F
+ __fp_nquery F
+ __fp_query F
+ __fp_resstat F
+ __hostalias F
+ __loc_aton F
+ __loc_ntoa F
+ __p_cdname F
+ __p_cdnname F
+ __p_class F
+ __p_class_syms D 0x54
+ __p_fqname F
+ __p_fqnname F
+ __p_option F
+ __p_query F
+ __p_rcode F
+ __p_secstodate F
+ __p_time F
+ __p_type F
+ __p_type_syms D 0x228
+ __putlong F
+ __putshort F
+ __res_close F
+ __res_dnok F
+ __res_hnok F
+ __res_hostalias F
+ __res_isourserver F
+ __res_mailok F
+ __res_mkquery F
+ __res_nameinquery F
+ __res_nmkquery F
+ __res_nquery F
+ __res_nquerydomain F
+ __res_nsearch F
+ __res_nsend F
+ __res_ownok F
+ __res_queriesmatch F
+ __res_query F
+ __res_querydomain F
+ __res_search F
+ __res_send F
+ __sym_ntop F
+ __sym_ntos F
+ __sym_ston F
+ _gethtbyaddr F
+ _gethtbyname F
+ _gethtbyname2 F
+ _gethtent F
+ _getlong F
+ _getshort F
+ _res_opcodes D 0x40
+ _sethtent F
+ inet_net_ntop F
+ inet_net_pton F
+ inet_neta F
+ ns_datetosecs F
+ ns_format_ttl F
+ ns_get16 F
+ ns_get32 F
+ ns_initparse F
+ ns_makecanon F
+ ns_msg_getflag F
+ ns_name_compress F
+ ns_name_ntol F
+ ns_name_ntop F
+ ns_name_pack F
+ ns_name_pton F
+ ns_name_rollback F
+ ns_name_skip F
+ ns_name_uncompress F
+ ns_name_unpack F
+ ns_parse_ttl F
+ ns_parserr F
+ ns_put16 F
+ ns_put32 F
+ ns_samedomain F
+ ns_samename F
+ ns_skiprr F
+ ns_sprintrr F
+ ns_sprintrrf F
+ ns_subdomain F
+ res_gethostbyaddr F
+ res_gethostbyname F
+ res_gethostbyname2 F
+ res_send_setqhook F
+ res_send_setrhook F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/librt.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/librt.abilist
new file mode 100644
index 0000000..3748949
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/librt.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,42 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ __mq_open_2 F
+ aio_cancel F
+ aio_cancel64 F
+ aio_error F
+ aio_error64 F
+ aio_fsync F
+ aio_fsync64 F
+ aio_init F
+ aio_read F
+ aio_read64 F
+ aio_return F
+ aio_return64 F
+ aio_suspend F
+ aio_suspend64 F
+ aio_write F
+ aio_write64 F
+ clock_getcpuclockid F
+ clock_getres F
+ clock_gettime F
+ clock_nanosleep F
+ clock_settime F
+ lio_listio F
+ lio_listio64 F
+ mq_close F
+ mq_getattr F
+ mq_notify F
+ mq_open F
+ mq_receive F
+ mq_send F
+ mq_setattr F
+ mq_timedreceive F
+ mq_timedsend F
+ mq_unlink F
+ shm_open F
+ shm_unlink F
+ timer_create F
+ timer_delete F
+ timer_getoverrun F
+ timer_gettime F
+ timer_settime F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libthread_db.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libthread_db.abilist
new file mode 100644
index 0000000..6ee3113
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libthread_db.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,42 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ td_init F
+ td_log F
+ td_symbol_list F
+ td_ta_clear_event F
+ td_ta_delete F
+ td_ta_enable_stats F
+ td_ta_event_addr F
+ td_ta_event_getmsg F
+ td_ta_get_nthreads F
+ td_ta_get_ph F
+ td_ta_get_stats F
+ td_ta_map_id2thr F
+ td_ta_map_lwp2thr F
+ td_ta_new F
+ td_ta_reset_stats F
+ td_ta_set_event F
+ td_ta_setconcurrency F
+ td_ta_thr_iter F
+ td_ta_tsd_iter F
+ td_thr_clear_event F
+ td_thr_dbresume F
+ td_thr_dbsuspend F
+ td_thr_event_enable F
+ td_thr_event_getmsg F
+ td_thr_get_info F
+ td_thr_getfpregs F
+ td_thr_getgregs F
+ td_thr_getxregs F
+ td_thr_getxregsize F
+ td_thr_set_event F
+ td_thr_setfpregs F
+ td_thr_setgregs F
+ td_thr_setprio F
+ td_thr_setsigpending F
+ td_thr_setxregs F
+ td_thr_sigsetmask F
+ td_thr_tls_get_addr F
+ td_thr_tlsbase F
+ td_thr_tsd F
+ td_thr_validate F
diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libutil.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libutil.abilist
new file mode 100644
index 0000000..3e738ff
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libutil.abilist
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+GLIBC_2.16
+ GLIBC_2.16 A
+ forkpty F
+ login F
+ login_tty F
+ logout F
+ logwtmp F
+ openpty F

&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-24T13:14:39</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22262">
    <title>PATCH: Add x32 C++ type data</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22262</link>
    <description>&lt;pre&gt;Hi,

This patch adds x32 C++ type data.  Tested on Linux/x32.  OK to install?

Thanks.


H.J.
----
* scripts/data/c++-types-x32-linux-gnu.data: New file.
* sysdeps/x86_64/x32/shlib-versions: Add x32 ABI entry.

diff --git a/scripts/data/c++-types-x32-linux-gnu.data b/scripts/data/c++-types-x32-linux-gnu.data
new file mode 100644
index 0000000..348bf52
--- /dev/null
+++ b/scripts/data/c++-types-x32-linux-gnu.data
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -0,0 +1,67 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
+blkcnt64_t:x
+blkcnt_t:x
+blksize_t:x
+caddr_t:Pc
+clockid_t:i
+clock_t:x
+daddr_t:i
+dev_t:y
+fd_mask:l
+fsblkcnt64_t:y
+fsblkcnt_t:y
+fsfilcnt64_t:y
+fsfilcnt_t:y
+fsid_t:8__fsid_t
+gid_t:j
+id_t:j
+ino64_t:y
+ino_t:y
+int16_t:s
+int32_t:i
+int64_t:x
+int8_t:a
+intptr_t:i
+key_t:i
+loff_t:x
+mode_t:j
+nlink_t:y
+off64_t:x
+off_t:x
+pid_t:i
+pthread_attr_t:14pthread_attr_t
+pthread_barrier_t:17pthread_barrier_t
+pthread_barrierattr_t:21pthread_barrierattr_t
+pthread_cond_t:14pthread_cond_t
+pthread_condattr_t:18pthread_condattr_t
+pthread_key_t:j
+pthread_mutex_t:15pthread_mutex_t
+pthread_mutexattr_t:19pthread_mutexattr_t
+pthread_once_t:i
+pthread_rwlock_t:16pthread_rwlock_t
+pthread_rwlockattr_t:20pthread_rwlockattr_t
+pthread_spinlock_t:i
+pthread_t:m
+quad_t:x
+register_t:x
+rlim64_t:y
+rlim_t:y
+sigset_t:10__sigset_t
+size_t:j
+socklen_t:j
+ssize_t:i
+suseconds_t:x
+time_t:x
+u_char:h
+uid_t:j
+uint:j
+u_int:j
+u_int16_t:t
+u_int32_t:j
+u_int64_t:y
+u_int8_t:h
+ulong:m
+u_long:m
+u_quad_t:y
+useconds_t:j
+ushort:t
+u_short:t
diff --git a/sysdeps/x86_64/x32/shlib-versions b/sysdeps/x86_64/x32/shlib-versions
index 757a35d..d9f63e1 100644
--- a/sysdeps/x86_64/x32/shlib-versions
+++ b/sysdeps/x86_64/x32/shlib-versions
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2,3 +2,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 # ----------------------------------------------------------
 x86_64-.*-linux.*DEFAULTGLIBC_2.16
 x86_64-.*-linux.*ld=ld-linux-x32.so.2GLIBC_2.16
+
+# ConfigurationABIIdentifier for ABI data files
+# ----------------------------------------------------
+x86_64-.*-.*ABIx32-&amp;lt; at &amp;gt;OS&amp;lt; at &amp;gt;

&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-24T13:10:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22260">
    <title>Don't include exceptions in libm-test-ulps test names</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22260</link>
    <description>&lt;pre&gt;As noted in my underflow patch, the names of libm tests that appear in
libm-test-ulps include a description of the tests for exceptions.

This can cause undue churn in the libm-test-ulps files.  In
particular, if a test is made to permit an exception until a bug about
that spurious exception is fixed (with a comment referencing the bug
beside the test in question), then ulps for that test need updating,
and when the bug is fixed they need updating again, whether or not the
fix actually changed the value returned by the function.

I think this outweighs any value in actually having these
descriptions, and propose this patch which removes the exception
descriptions from the test names (and makes the corresponding
mechanical updates to libm-test-ulps files).  Tested x86 and x86_64.

2012-05-24  Joseph Myers  &amp;lt;joseph&amp;lt; at &amp;gt;codesourcery.com&amp;gt;

* math/gen-libm-test.pl (%beautify): Remove entries for exceptions
and other flags.
(special_function): Do not include flags in test name.
(parse_args): Likewise.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/powerpc/fpu/libm-test-ulps: Likewise.
* sysdeps/s390/fpu/libm-test-ulps: Likewise.
* sysdeps/sparc/fpu/libm-test-ulps: Likewise.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

diff --git a/math/gen-libm-test.pl b/math/gen-libm-test.pl
index 2f15747..03b2352 100755
--- a/math/gen-libm-test.pl
+++ b/math/gen-libm-test.pl
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -76,21 +76,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; use vars qw ($output_dir $ulps_file);
     "M_LOG_2_SQRT_PIl" =&amp;gt; "log(2*sqrt(pi))",
     "M_2_SQRT_PIl" =&amp;gt; "2 sqrt (pi)",
     "M_SQRT_PIl" =&amp;gt; "sqrt (pi)",
-    "INVALID_EXCEPTION" =&amp;gt; "invalid exception",
-    "DIVIDE_BY_ZERO_EXCEPTION" =&amp;gt; "division by zero exception",
-    "OVERFLOW_EXCEPTION" =&amp;gt; "overflow exception",
-    "UNDERFLOW_EXCEPTION" =&amp;gt; "underflow exception",
-    "UNDERFLOW_EXCEPTION_FLOAT" =&amp;gt; "underflow exception for float",
-    "UNDERFLOW_EXCEPTION_DOUBLE" =&amp;gt; "underflow exception for double",
-    "UNDERFLOW_EXCEPTION_LDOUBLE_IBM" =&amp;gt; "underflow exception for IBM long double",
-    "INVALID_EXCEPTION_OK" =&amp;gt; "invalid exception allowed",
-    "DIVIDE_BY_ZERO_EXCEPTION_OK" =&amp;gt; "division by zero exception allowed",
-    "OVERFLOW_EXCEPTION_OK" =&amp;gt; "overflow exception allowed",
-    "UNDERFLOW_EXCEPTION_OK" =&amp;gt; "underflow exception allowed",
-    "UNDERFLOW_EXCEPTION_OK_FLOAT" =&amp;gt; "underflow exception allowed for float",
-    "EXCEPTIONS_OK" =&amp;gt; "exceptions allowed",
-    "IGNORE_ZERO_INF_SIGN" =&amp;gt; "sign of zero/inf not specified",
-"INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN" =&amp;gt; "invalid exception and sign of zero/inf not specified"
   );
 
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -223,9 +208,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sub special_functions {
   $str = 'sincos (' . &amp;amp;beautify ($args[1]) . ', &amp;amp;sin_res, &amp;amp;cos_res)';
   # handle sin
   $test = $str . ' puts ' . &amp;amp;beautify ($args[2]) . ' in sin_res';
-  if ($#args == 4) {
-    $test .= " plus " . &amp;amp;beautify ($args[4]);
-  }
 
   $cline = "  check_float (\"$test\", sin_res, $args[2]";
   $cline .= &amp;amp;new_test ($test, $args[4]);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -319,11 +301,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; sub parse_args {
   }
 
 
-  # check for exceptions
-  if ($current_arg &amp;lt;= $#args) {
-    $str .= " plus " . &amp;amp;beautify ($args[$current_arg]);
-  }
-
   # Put the C program line together
   # Reset some variables to start again
   $current_arg = 1;
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index d66eb12..38a69e6 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -642,7 +642,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Imaginary part of: ccos (0.75 - 89.5 i) == 2.708024460708609732016532185663087200560e38 + 2.522786001038096774676288412995370563339e38 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -688,7 +688,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; double: 1
 float: 1
 idouble: 1
 ifloat: 1
-Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 Test "Real part of: ccosh (710.5 + 0.75 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -728,12 +728,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
+Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
 double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
+Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
 double: 1
 idouble: 1
 Test "Imaginary part of: cexp (0 + 0x1p65 i) == 0.99888622066058013610642172179340364209972 - 0.047183876212354673805106149805700013943218 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -753,7 +753,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: cexp (11356.5625 + 0.75 i) == 9.052188470850960144814815984311663764287e4931 + 8.432986734191301036267148978260970230200e4931 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i plus overflow exception":
+Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i":
 double: 1
 idouble: 1
 Test "Real part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1296,7 +1296,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Imaginary part of: csin (0.75 - 89.5 i) == 2.522786001038096774676288412995370563339e38 - 2.708024460708609732016532185663087200560e38 i":
 float: 1
 ifloat: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i plus overflow exception":
+Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1345,7 +1345,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 Test "Real part of: csinh (710.5 + 0.75 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1383,7 +1383,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-1073 + 0x1p-1073 i) == 3.453664695497464982856905711457966660085e-162 + 1.430554756764195530630723976279903095110e-162 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i plus underflow exception allowed":
+Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-147 + 0x1p-147 i) == 8.225610928685557596194006925540350401606e-23 + 3.407159605465907500737319471202779419102e-23 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1428,10 +1428,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Real part of: ctan (0x3.243f6cp-1 + 0 i) == -2.287733242885645987394874673945769518150e7 + 0.0 i":
 float: 1
 ifloat: 1
-Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i plus underflow exception for float":
+Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i":
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i plus underflow exception for float":
+Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i":
 double: 1
 idouble: 1
 ildouble: 2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1479,10 +1479,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: ctanh (1 + 0x1p127 i) == 0.9101334047676183761532873794426475906201 + 0.2446359391192790896381501310437708987204 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i plus underflow exception for float":
+Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i plus underflow exception for float":
+Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i":
 double: 1
 idouble: 1
 ildouble: 2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1627,7 +1627,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 ifloat: 2
 ildouble: 2
 ldouble: 2
-Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17 plus underflow exception allowed":
+Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17":
 float: 1
 ifloat: 1
 Test "j0 (10.0) == -0.245935764451348335197760862485328754":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1765,7 +1765,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; double: 2
 idouble: 2
 ildouble: 1
 ldouble: 1
-Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16 plus underflow exception allowed":
+Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16":
 float: 1
 ifloat: 1
 ildouble: 1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2158,7 +2158,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "tan (1e22) == -1.628778225606898878549375936939548513545":
 ildouble: 1
 ldouble: 1
-Test "tan (pi/4) == 1 plus underflow exception allowed for float":
+Test "tan (pi/4) == 1":
 double: 1
 float: 1
 idouble: 1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2400,7 +2400,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "y1 (0x1.001000001p+593) == 3.927269966354206207832593635798954916263e-90":
 ildouble: 2
 ldouble: 2
-Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16 plus underflow exception allowed":
+Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16":
 double: 1
 float: 2
 idouble: 1
diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps
index ec3db24..85a9235 100644
--- a/sysdeps/powerpc/fpu/libm-test-ulps
+++ b/sysdeps/powerpc/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -647,7 +647,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Imaginary part of: ccos (0.75 - 710.5 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -702,7 +702,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Imaginary part of: ccosh (710.5 - 0.75 i) == 1.347490911916428129246890157395342279438e308 - 1.255317763348154410745082950806112487736e308 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -723,7 +723,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 2
 Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i plus overflow exception":
+Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i":
 double: 1
 idouble: 1
 Test "Real part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1198,7 +1198,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Real part of: csin (0.75 - 710.5 i) == 1.255317763348154410745082950806112487736e308 - 1.347490911916428129246890157395342279438e308 i":
 double: 1
 idouble: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i plus overflow exception":
+Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1251,7 +1251,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Imaginary part of: csinh (710.5 - 0.75 i) == 1.347490911916428129246890157395342279438e308 - 1.255317763348154410745082950806112487736e308 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 
diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps
index 9dace19..5667d1b 100644
--- a/sysdeps/s390/fpu/libm-test-ulps
+++ b/sysdeps/s390/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -612,10 +612,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i plus overflow exception":
+Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: cexp (22730 + 0x1p-16434 i) == inf + 2.435706297811211974162115164702304105374e4924 i plus overflow exception":
+Test "Imaginary part of: cexp (22730 + 0x1p-16434 i) == inf + 2.435706297811211974162115164702304105374e4924 i":
 ildouble: 1
 ldouble: 1
 Test "Real part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i":
diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps
index b4bb1b5..d4e5e35 100644
--- a/sysdeps/sparc/fpu/libm-test-ulps
+++ b/sysdeps/sparc/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -660,10 +660,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: ccos (0x1p-16434 + 22730 i) == inf - 1.217853148905605987081057582351152052687e4924 i plus overflow exception":
+Test "Imaginary part of: ccos (0x1p-16434 + 22730 i) == inf - 1.217853148905605987081057582351152052687e4924 i":
 ildouble: 1
 ldouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -724,10 +724,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: ccosh (11357.25 - 0.75 i) == 9.001213196851067077465606717616495588201e4931 - 8.385498349388321535962327491346664141020e4931 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: ccosh (22730 + 0x1p-16434 i) == inf + 1.217853148905605987081057582351152052687e4924 i plus overflow exception":
+Test "Imaginary part of: ccosh (22730 + 0x1p-16434 i) == inf + 1.217853148905605987081057582351152052687e4924 i":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: ccosh (710.5 + 0.75 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -781,10 +781,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Imaginary part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i plus overflow exception":
+Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: cexp (22730 + 0x1p-16434 i) == inf + 2.435706297811211974162115164702304105374e4924 i plus overflow exception":
+Test "Imaginary part of: cexp (22730 + 0x1p-16434 i) == inf + 2.435706297811211974162115164702304105374e4924 i":
 ildouble: 1
 ldouble: 1
 Test "Real part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1237,10 +1237,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csin (0.75 - 89.5 i) == 2.522786001038096774676288412995370563339e38 - 2.708024460708609732016532185663087200560e38 i":
 ildouble: 1
 ldouble: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i plus overflow exception":
+Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i":
 double: 1
 idouble: 1
-Test "Real part of: csin (0x1p-16434 + 22730 i) == 1.217853148905605987081057582351152052687e4924 + inf i plus overflow exception":
+Test "Real part of: csin (0x1p-16434 + 22730 i) == 1.217853148905605987081057582351152052687e4924 + inf i":
 ildouble: 1
 ldouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1295,10 +1295,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csinh (11357.25 - 0.75 i) == 9.001213196851067077465606717616495588201e4931 - 8.385498349388321535962327491346664141020e4931 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: csinh (22730 + 0x1p-16434 i) == inf + 1.217853148905605987081057582351152052687e4924 i plus overflow exception":
+Test "Imaginary part of: csinh (22730 + 0x1p-16434 i) == inf + 1.217853148905605987081057582351152052687e4924 i":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: csinh (710.5 + 0.75 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index d90d1cc..3374b5f 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -620,7 +620,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Imaginary part of: ccos (0.75 - 89.5 i) == 2.708024460708609732016532185663087200560e38 + 2.522786001038096774676288412995370563339e38 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccos (0x1p-1074 + 1440 i) == inf - 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -655,7 +655,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: ccosh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 Test "Imaginary part of: ccosh (710.5 + 0.75 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -678,10 +678,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
 float: 1
 ifloat: 1
-Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
+Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
+Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
 double: 1
 idouble: 1
 Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -693,7 +693,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: cexp (11356.5625 + 0.75 i) == 9.052188470850960144814815984311663764287e4931 + 8.432986734191301036267148978260970230200e4931 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i plus overflow exception":
+Test "Imaginary part of: cexp (1440 + 0x1p-1074 i) == inf + 1.196295853897226111293303155636183216483e302 i":
 double: 1
 idouble: 1
 Test "Real part of: cexp (50 + 0x1p127 i) == 4.053997150228616856622417636046265337193e21 + 3.232070315463388524466674772633810238819e21 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -834,7 +834,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; double: 1
 float: 1
 idouble: 1
 ifloat: 1
-Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i) == 38.53183941910362389414093724045094697423 + 1.276276851248440096917018665609900318458e-39 i plus underflow exception for float":
+Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i) == 38.53183941910362389414093724045094697423 + 1.276276851248440096917018665609900318458e-39 i":
 float: 1
 ifloat: 1
 Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i) == 308.4052305577487344482591243175787477115 + pi/4*log10(e) i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1172,7 +1172,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Real part of: csin (0.75 - 89.5 i) == 2.522786001038096774676288412995370563339e38 - 2.708024460708609732016532185663087200560e38 i":
 float: 1
 ifloat: 1
-Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i plus overflow exception":
+Test "Real part of: csin (0x1p-1074 + 1440 i) == 5.981479269486130556466515778180916082415e301 + inf i":
 double: 1
 idouble: 1
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1205,7 +1205,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i plus overflow exception":
+Test "Imaginary part of: csinh (1440 + 0x1p-1074 i) == inf + 5.981479269486130556466515778180916082415e301 i":
 double: 1
 idouble: 1
 Test "Imaginary part of: csinh (710.5 + 0.75 i) == 1.347490911916428129246890157395342279438e308 + 1.255317763348154410745082950806112487736e308 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1248,7 +1248,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-1073 + 0x1p-1073 i) == 3.453664695497464982856905711457966660085e-162 + 1.430554756764195530630723976279903095110e-162 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i plus underflow exception allowed":
+Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-147 + 0x1p-147 i) == 8.225610928685557596194006925540350401606e-23 + 3.407159605465907500737319471202779419102e-23 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1297,10 +1297,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Real part of: ctan (0x3.243f6cp-1 + 0 i) == -2.287733242885645987394874673945769518150e7 + 0.0 i":
 float: 1
 ifloat: 1
-Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i plus underflow exception for float":
+Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i":
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i plus underflow exception for float":
+Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i":
 ildouble: 2
 ldouble: 2
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1352,10 +1352,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Real part of: ctanh (1 + 0x1p127 i) == 0.9101334047676183761532873794426475906201 + 0.2446359391192790896381501310437708987204 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i plus underflow exception for float":
+Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i plus underflow exception for float":
+Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i":
 ildouble: 2
 ldouble: 2
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1395,7 +1395,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 2
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "exp10 (-305) == 1.0e-305 plus underflow exception for IBM long double":
+Test "exp10 (-305) == 1.0e-305":
 double: 1
 idouble: 1
 Test "exp10 (-36) == 1.0e-36":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1515,7 +1515,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 2
 Test "j0 (0.75) == 0.864242275166648623555731103820923211":
 float: 1
 ifloat: 1
-Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17 plus underflow exception allowed":
+Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17":
 float: 2
 ifloat: 2
 Test "j0 (10.0) == -0.245935764451348335197760862485328754":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1638,7 +1638,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 ifloat: 4
 ildouble: 1
 ldouble: 1
-Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16 plus underflow exception allowed":
+Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16":
 double: 2
 float: 2
 idouble: 2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2187,7 +2187,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "y1 (0x1.001000001p+593) == 3.927269966354206207832593635798954916263e-90":
 ildouble: 2
 ldouble: 2
-Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16 plus underflow exception allowed":
+Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16":
 double: 1
 idouble: 1
 ildouble: 1

&lt;/pre&gt;</description>
    <dc:creator>Joseph S. Myers</dc:creator>
    <dc:date>2012-05-24T11:51:45</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22256">
    <title>[PATCH] Remove some sparc cob-webs leftover after Joseph's recent changes.</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22256</link>
    <description>&lt;pre&gt;
Committed to master.

* sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
(__libc_sigaction): Remove unused local variables.
---
 sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c |    4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
index 7bdf5e0..9a535e8 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -30,11 +30,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void __sigreturn_stub (void);
 int
 __libc_sigaction (int sig, const struct sigaction *act, struct sigaction *oact)
 {
-  struct old_kernel_sigaction k_sigact, k_osigact;
-  int ret;
-
   struct kernel_sigaction kact, koact;
   unsigned long stub = 0;
+  int ret;
 
   if (act)
     {
&lt;/pre&gt;</description>
    <dc:creator>David Miller</dc:creator>
    <dc:date>2012-05-24T04:52:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22253">
    <title>PATCH: PR libc/12495: Malloc fails if MALLOC_ALIGNMENT &gt; 2 * SIZE_SZ</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22253</link>
    <description>&lt;pre&gt;Hi,

This patch fixes:

http://sourceware.org/bugzilla/show_bug.cgi?id=12495

Before the patch:

[hjl&amp;lt; at &amp;gt;gnu-6 glibc-x32-test]$ ./build-x86_64-x32-linux/elf/sln
*** glibc detected *** ./build-x86_64-x32-linux/elf/sln: double free or
corruption (!prev): 0x006bbb70 ***
Aborted

After the patch:

[hjl&amp;lt; at &amp;gt;gnu-6 glibc-x32-test]$ ./build-x86_64-x32-linux/elf/sln
Usage: sln src dest|file

For bug reporting instructions, please see:
&amp;lt;http://www.gnu.org/software/libc/bugs.html&amp;gt;.
[hjl&amp;lt; at &amp;gt;gnu-6 glibc-x32-test]$ 

Please see

http://sourceware.org/bugzilla/show_bug.cgi?id=12495

for detailed analysis.  OK to install?

Thanks.


H.J.
---
2012-03-14  H.J. Lu  &amp;lt;hongjiu.lu&amp;lt; at &amp;gt;intel.com&amp;gt;

PR libc/12495
* malloc/malloc.c (sYSMALLOc): Don't update correction with
front_misalign.

2007-11-30  Daniel Jacobowitz  &amp;lt;dan&amp;lt; at &amp;gt;codesourcery.com&amp;gt;

PR libc/12495
* malloc/malloc.c (SMALLBIN_CORRECTION): New.
(MIN_LARGE_SIZE, smallbin_index): Use it to handle 16-byte alignment.
(largebin_index_32_big): New.
(largebin_index): Use it for 16-byte alignment.
(sYSMALLOc): Handle MALLOC_ALIGNMENT &amp;gt; 2 * SIZE_SZ.

diff --git a/malloc/malloc.c b/malloc/malloc.c
index d7d79e0..bb26937 100644
--- a/malloc/malloc.c
+++ b/malloc/malloc.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1466,18 +1466,23 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct malloc_chunk* mbinptr;
 
     The bins top out around 1MB because we expect to service large
     requests via mmap.
+
+    Bin 0 does not exist.  Bin 1 is the unordered list; if that would be
+    a valid chunk size the small bins are bumped up one.
 */
 
 #define NBINS             128
 #define NSMALLBINS         64
 #define SMALLBIN_WIDTH    MALLOC_ALIGNMENT
-#define MIN_LARGE_SIZE    (NSMALLBINS * SMALLBIN_WIDTH)
+#define SMALLBIN_CORRECTION (MALLOC_ALIGNMENT &amp;gt; 2 * SIZE_SZ)
+#define MIN_LARGE_SIZE    ((NSMALLBINS - SMALLBIN_CORRECTION) * SMALLBIN_WIDTH)
 
 #define in_smallbin_range(sz)  \
   ((unsigned long)(sz) &amp;lt; (unsigned long)MIN_LARGE_SIZE)
 
 #define smallbin_index(sz) \
-  (SMALLBIN_WIDTH == 16 ? (((unsigned)(sz)) &amp;gt;&amp;gt; 4) : (((unsigned)(sz)) &amp;gt;&amp;gt; 3))
+  ((SMALLBIN_WIDTH == 16 ? (((unsigned)(sz)) &amp;gt;&amp;gt; 4) : (((unsigned)(sz)) &amp;gt;&amp;gt; 3)) \
+   + SMALLBIN_CORRECTION)
 
 #define largebin_index_32(sz)                                                \
 (((((unsigned long)(sz)) &amp;gt;&amp;gt;  6) &amp;lt;= 38)?  56 + (((unsigned long)(sz)) &amp;gt;&amp;gt;  6): \
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1487,6 +1492,14 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct malloc_chunk* mbinptr;
  ((((unsigned long)(sz)) &amp;gt;&amp;gt; 18) &amp;lt;=  2)? 124 + (((unsigned long)(sz)) &amp;gt;&amp;gt; 18): \
 126)
 
+#define largebin_index_32_big(sz)                                            \
+(((((unsigned long)(sz)) &amp;gt;&amp;gt;  6) &amp;lt;= 45)?  49 + (((unsigned long)(sz)) &amp;gt;&amp;gt;  6): \
+ ((((unsigned long)(sz)) &amp;gt;&amp;gt;  9) &amp;lt;= 20)?  91 + (((unsigned long)(sz)) &amp;gt;&amp;gt;  9): \
+ ((((unsigned long)(sz)) &amp;gt;&amp;gt; 12) &amp;lt;= 10)? 110 + (((unsigned long)(sz)) &amp;gt;&amp;gt; 12): \
+ ((((unsigned long)(sz)) &amp;gt;&amp;gt; 15) &amp;lt;=  4)? 119 + (((unsigned long)(sz)) &amp;gt;&amp;gt; 15): \
+ ((((unsigned long)(sz)) &amp;gt;&amp;gt; 18) &amp;lt;=  2)? 124 + (((unsigned long)(sz)) &amp;gt;&amp;gt; 18): \
+                                        126)
+
 // XXX It remains to be seen whether it is good to keep the widths of
 // XXX the buckets the same or whether it should be scaled by a factor
 // XXX of two as well.
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1499,7 +1512,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef struct malloc_chunk* mbinptr;
 126)
 
 #define largebin_index(sz) \
-  (SIZE_SZ == 8 ? largebin_index_64 (sz) : largebin_index_32 (sz))
+  (SIZE_SZ == 8 ? largebin_index_64 (sz)                                     \
+   : MALLOC_ALIGNMENT == 16 ? largebin_index_32_big (sz)                     \
+   : largebin_index_32 (sz))
 
 #define bin_index(sz) \
  ((in_smallbin_range(sz)) ? smallbin_index(sz) : largebin_index(sz))
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2267,8 +2282,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void* sysmalloc(INTERNAL_SIZE_T nb, mstate av)
       is no following chunk whose prev_size field could be used.
 
       See the front_misalign handling below, for glibc there is no
-      need for further alignments.  */
-    size = (nb + SIZE_SZ + pagemask) &amp;amp; ~pagemask;
+      need for further alignments unless we have have high alignment.
+    */
+    if (MALLOC_ALIGNMENT == 2 * SIZE_SZ)
+      size = (nb + SIZE_SZ + pagemask) &amp;amp; ~pagemask;
+    else
+      size = (nb + SIZE_SZ + MALLOC_ALIGN_MASK + pagemask) &amp;amp; ~pagemask;
     tried_mmap = true;
 
     /* Don't try if size wraps around 0 */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2284,14 +2303,29 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void* sysmalloc(INTERNAL_SIZE_T nb, mstate av)
   returned start address to meet alignment requirements here
   and in memalign(), and still be able to compute proper
   address argument for later munmap in free() and realloc().
+*/
 
-  For glibc, chunk2mem increases the address by 2*SIZE_SZ and
-  MALLOC_ALIGN_MASK is 2*SIZE_SZ-1.  Each mmap'ed area is page
-  aligned and therefore definitely MALLOC_ALIGN_MASK-aligned.  */
-assert (((INTERNAL_SIZE_T)chunk2mem(mm) &amp;amp; MALLOC_ALIGN_MASK) == 0);
-
-p = (mchunkptr)mm;
-set_head(p, size|IS_MMAPPED);
+if (MALLOC_ALIGNMENT == 2 * SIZE_SZ)
+  {
+    /* For glibc, chunk2mem increases the address by 2*SIZE_SZ and
+       MALLOC_ALIGN_MASK is 2*SIZE_SZ-1.  Each mmap'ed area is page
+       aligned and therefore definitely MALLOC_ALIGN_MASK-aligned.  */
+    assert (((INTERNAL_SIZE_T)chunk2mem(mm) &amp;amp; MALLOC_ALIGN_MASK) == 0);
+    front_misalign = 0;
+  }
+else
+  front_misalign = (INTERNAL_SIZE_T)chunk2mem(mm) &amp;amp; MALLOC_ALIGN_MASK;
+if (front_misalign &amp;gt; 0) {
+  correction = MALLOC_ALIGNMENT - front_misalign;
+  p = (mchunkptr)(mm + correction);
+  p-&amp;gt;prev_size = correction;
+  set_head(p, (size - correction) |IS_MMAPPED);
+}
+else
+  {
+    p = (mchunkptr)mm;
+    set_head(p, size|IS_MMAPPED);
+  }
 
 /* update statistics */
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2559,8 +2593,24 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void* sysmalloc(INTERNAL_SIZE_T nb, mstate av)
 
       /* handle non-contiguous cases */
       else {
-/* MORECORE/mmap must correctly align */
-assert(((unsigned long)chunk2mem(brk) &amp;amp; MALLOC_ALIGN_MASK) == 0);
+if (MALLOC_ALIGNMENT == 2 * SIZE_SZ)
+  /* MORECORE/mmap must correctly align */
+  assert(((unsigned long)chunk2mem(brk) &amp;amp; MALLOC_ALIGN_MASK) == 0);
+else {
+  front_misalign = (INTERNAL_SIZE_T)chunk2mem(brk) &amp;amp; MALLOC_ALIGN_MASK;
+  if (front_misalign &amp;gt; 0) {
+
+    /*
+      Skip over some bytes to arrive at an aligned position.
+      We don't need to specially mark these wasted front bytes.
+      They will never be accessed anyway because
+      prev_inuse of av-&amp;gt;top (and any chunk created from its start)
+      is always true after initialization.
+    */
+
+    aligned_brk += MALLOC_ALIGNMENT - front_misalign;
+  }
+}
 
 /* Find out current end of memory */
 if (snd_brk == (char*)(MORECORE_FAILURE)) {
&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-24T03:28:03</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22250">
    <title>Please test fix for PR 14112</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22250</link>
    <description>&lt;pre&gt;
Please test  hjl/abi branch on sparc, powper and s390.  Let me know if it works
for you.

Thanks.

&lt;/pre&gt;</description>
    <dc:creator>H.J. Lu</dc:creator>
    <dc:date>2012-05-24T01:27:40</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22249">
    <title>Test underflow exceptions in libm-test.inc</title>
    <link>http://comments.gmane.org/gmane.comp.lib.glibc.alpha/22249</link>
    <description>&lt;pre&gt;Although we have various bug reports referring to missing or spurious
underflow exceptions from libm functions, the libm-test machinery
doesn't support testing for such exceptions.  I propose this patch to
add such support.  I decided to treat underflow exceptions like the
others tested for - that is, say that we should consider spurious
underflow exceptions to be bugs, although they are generally allowed
by C99 Annex F.  (However, in cases of exact results that are
subnormal or very close to subnormal I generally allow the exceptions
rather than requiring accurate detection of inexactness - recall that
exact underflow does not raise the exception in IEEE 754-2008.)

This will allow testcases to be added for the
missing-underflow-exception bugs that were fixed by the use of
-frounding-math to build glibc.

Tested x86 and x86_64.  The ulps changes are because the "name" of a
test, used in the test's output as well as ulps files, includes a
description of the expected exceptions.

2012-05-24  Joseph Myers  &amp;lt;joseph&amp;lt; at &amp;gt;codesourcery.com&amp;gt;

* math/gen-libm-test.pl (%beautify): Add entries for underflow
exceptions.
* math/libm-test.inc ("Philosophy"): Update comment about
exception testing.
(UNDERFLOW_EXCEPTION): New macro.
(UNDERFLOW_EXCEPTION_OK): Likewise.
(UNDERFLOW_EXCEPTION_FLOAT): Likewise.
(UNDERFLOW_EXCEPTION_OK_FLOAT): Likewise.
(UNDERFLOW_EXCEPTION_DOUBLE): Likewise.
(UNDERFLOW_EXCEPTION_LDOUBLE_IBM): Likewise.
(INVALID_EXCEPTION_OK): Update value.
(DIVIDE_BY_ZERO_EXCEPTION_OK): Likewise.
(OVERFLOW_EXCEPTION_OK): Likewise.
(IGNORE_ZERO_INF_SIGN): Likewise.
(test_exceptions): Handle underflow exceptions.
(acos_test): Update for underflow exception expectations.
(cexp_test): Likewise.
(clog_test): Likewise.
(clog10_test): Likewise.
(csqrt_test): Likewise.
(ctan_test): Likewise.
(ctanh_test): Likewise.
(exp_test): Likewise.
(exp10_test): Likewise.
(exp2_test): Likewise.
(expm1_test): Likewise.
(fma_test): Likewise.
(j0_test): Likewise.
(jn_test): Likewise.
(nexttoward_test): Likewise.
(pow_test): Likewise.
(scalbn_test): Likewise.
(scalbln_test): Likewise.
(tan_test): Likewise.
(y1_test): Likewise.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.

diff --git a/math/gen-libm-test.pl b/math/gen-libm-test.pl
index 395bb65..2f15747 100755
--- a/math/gen-libm-test.pl
+++ b/math/gen-libm-test.pl
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -79,9 +79,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; use vars qw ($output_dir $ulps_file);
     "INVALID_EXCEPTION" =&amp;gt; "invalid exception",
     "DIVIDE_BY_ZERO_EXCEPTION" =&amp;gt; "division by zero exception",
     "OVERFLOW_EXCEPTION" =&amp;gt; "overflow exception",
+    "UNDERFLOW_EXCEPTION" =&amp;gt; "underflow exception",
+    "UNDERFLOW_EXCEPTION_FLOAT" =&amp;gt; "underflow exception for float",
+    "UNDERFLOW_EXCEPTION_DOUBLE" =&amp;gt; "underflow exception for double",
+    "UNDERFLOW_EXCEPTION_LDOUBLE_IBM" =&amp;gt; "underflow exception for IBM long double",
     "INVALID_EXCEPTION_OK" =&amp;gt; "invalid exception allowed",
     "DIVIDE_BY_ZERO_EXCEPTION_OK" =&amp;gt; "division by zero exception allowed",
     "OVERFLOW_EXCEPTION_OK" =&amp;gt; "overflow exception allowed",
+    "UNDERFLOW_EXCEPTION_OK" =&amp;gt; "underflow exception allowed",
+    "UNDERFLOW_EXCEPTION_OK_FLOAT" =&amp;gt; "underflow exception allowed for float",
     "EXCEPTIONS_OK" =&amp;gt; "exceptions allowed",
     "IGNORE_ZERO_INF_SIGN" =&amp;gt; "sign of zero/inf not specified",
 "INVALID_EXCEPTION|IGNORE_ZERO_INF_SIGN" =&amp;gt; "invalid exception and sign of zero/inf not specified"
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 19c3c8a..454ff2d 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -78,8 +78,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
    against.  These implemented tests should check all cases that are
    specified in ISO C99.
 
-   Exception testing: At the moment only divide-by-zero, invalid and
-   overflow exceptions are tested.  Underflow and inexact exceptions
+   Exception testing: At the moment only divide-by-zero, invalid,
+   overflow and underflow exceptions are tested.  Inexact exceptions
    aren't checked at the moment.
 
    NaN values: There exist signalling and quiet NaNs.  This implementation
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -149,13 +149,39 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #define INVALID_EXCEPTION0x1
 #define DIVIDE_BY_ZERO_EXCEPTION0x2
 #define OVERFLOW_EXCEPTION0x4
+#define UNDERFLOW_EXCEPTION0x8
 /* The next flags signals that those exceptions are allowed but not required.   */
-#define INVALID_EXCEPTION_OK0x8
-#define DIVIDE_BY_ZERO_EXCEPTION_OK0x10
-#define OVERFLOW_EXCEPTION_OK0x20
+#define INVALID_EXCEPTION_OK0x10
+#define DIVIDE_BY_ZERO_EXCEPTION_OK0x20
+#define OVERFLOW_EXCEPTION_OK0x40
+#define UNDERFLOW_EXCEPTION_OK0x80
 #define EXCEPTIONS_OK INVALID_EXCEPTION_OK+DIVIDE_BY_ZERO_EXCEPTION_OK
 /* Some special test flags, passed togther with exceptions.  */
-#define IGNORE_ZERO_INF_SIGN0x40
+#define IGNORE_ZERO_INF_SIGN0x100
+
+/* Values underflowing only for float.  */
+#ifdef TEST_FLOAT
+# define UNDERFLOW_EXCEPTION_FLOATUNDERFLOW_EXCEPTION
+# define UNDERFLOW_EXCEPTION_OK_FLOATUNDERFLOW_EXCEPTION_OK
+#else
+# define UNDERFLOW_EXCEPTION_FLOAT0
+# define UNDERFLOW_EXCEPTION_OK_FLOAT0
+#endif
+/* Values underflowing only for double or types with a larger least
+   positive normal value.  */
+#if defined TEST_FLOAT || defined TEST_DOUBLE \
+  || (defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MIN_EXP &amp;gt;= DBL_MIN_EXP)
+# define UNDERFLOW_EXCEPTION_DOUBLEUNDERFLOW_EXCEPTION
+#else
+# define UNDERFLOW_EXCEPTION_DOUBLE0
+#endif
+/* Values underflowing only for IBM long double or types with a larger least
+   positive normal value.  */
+#if defined TEST_FLOAT || (defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MIN_EXP &amp;gt; DBL_MIN_EXP)
+# define UNDERFLOW_EXCEPTION_LDOUBLE_IBMUNDERFLOW_EXCEPTION
+#else
+# define UNDERFLOW_EXCEPTION_LDOUBLE_IBM0
+#endif
 
 /* Various constants (we must supply them precalculated for accuracy).  */
 #define M_PI_6l.52359877559829887307710723054658383L
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -474,6 +500,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; test_exceptions (const char *test_name, int exception)
     test_single_exception (test_name, exception, OVERFLOW_EXCEPTION,
    FE_OVERFLOW, "Overflow");
 #endif
+#ifdef FE_UNDERFLOW
+  if ((exception &amp;amp; UNDERFLOW_EXCEPTION_OK) == 0)
+    test_single_exception (test_name, exception, UNDERFLOW_EXCEPTION,
+   FE_UNDERFLOW, "Underflow");
+#endif
   feclearexcept (FE_ALL_EXCEPT);
 }
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -773,7 +804,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; acos_test (void)
   TEST_f_f (acos, 0.5, M_PI_6l*2.0);
   TEST_f_f (acos, -0.5, M_PI_6l*4.0);
   TEST_f_f (acos, 0.75L, 0.722734247813415611178377352641333362L);
-  TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L);
+  /* Bug 14153: spurious exception may occur.  */
+  TEST_f_f (acos, 2e-17L, 1.57079632679489659923132169163975144L, UNDERFLOW_EXCEPTION_OK_FLOAT);
   TEST_f_f (acos, 0.0625L, 1.50825556499840522843072005474337068L);
   TEST_f_f (acos, 0x0.ffffffp0L, 3.4526698471620358760324948263873649728491e-4L);
   TEST_f_f (acos, -0x0.ffffffp0L, 3.1412473866050770348750401337968641476999L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2260,16 +2292,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; cexp_test (void)
 #endif
 
   TEST_c_c (cexp, 88.75, 0.75, 2.558360358486542817001900410314204322891e38L, 2.383359453227311447654736314679677655100e38L);
-  TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L);
+  TEST_c_c (cexp, -95, 0.75, 4.039714446238306526889476684000081624047e-42L, 3.763383677300535390271646960780570275931e-42L, UNDERFLOW_EXCEPTION_FLOAT);
 
 #ifndef TEST_FLOAT
   TEST_c_c (cexp, 709.8125, 0.75, 1.355121963080879535248452862759108365762e308L, 1.262426823598609432507811340856186873507e308L);
-  TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L);
+  TEST_c_c (cexp, -720, 0.75, 1.486960657116368433685753325516638551722e-313L, 1.385247284245720590980701226843815229385e-313L, UNDERFLOW_EXCEPTION_DOUBLE);
 #endif
 
 #if defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MAX_EXP &amp;gt;= 16384
   TEST_c_c (cexp, 11356.5625, 0.75, 9.052188470850960144814815984311663764287e4931L, 8.432986734191301036267148978260970230200e4931L);
-  TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L);
+  TEST_c_c (cexp, -11370, 0.75, 8.631121063182211587489310508568170739592e-4939L, 8.040721827809267291427062346918413482824e-4939L, UNDERFLOW_EXCEPTION);
 #endif
 
 #ifdef TEST_FLOAT
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2371,7 +2403,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; clog_test (void)
   TEST_c_c (clog, -2, -3, 1.2824746787307683680267437207826593L, -2.1587989303424641704769327722648368L);
 
   TEST_c_c (clog, 0x1.fffffep+127L, 0x1.fffffep+127L, 89.06941264234832570836679262104313101776L, M_PI_4l);
-  TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L);
+  TEST_c_c (clog, 0x1.fffffep+127L, 1.0L, 88.72283905206835305365817656031404273372L, 2.938736052218037251011746307725933020145e-39L, UNDERFLOW_EXCEPTION_FLOAT);
   TEST_c_c (clog, 0x1p-149L, 0x1p-149L, -102.9323563131518784484589700365392203592L, M_PI_4l);
   TEST_c_c (clog, 0x1p-147L, 0x1p-147L, -101.5460619520319878296245057936228672231L, M_PI_4l);
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2455,7 +2487,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; clog10_test (void)
   TEST_c_c (clog10, -2, -3, 0.556971676153418384603252578971164214L, -0.937554462986374708541507952140189646L);
 
   TEST_c_c (clog10, 0x1.fffffep+127L, 0x1.fffffep+127L, 38.68235441693561449174780668781319348761L, M_PI4_LOG10El);
-  TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L);
+  TEST_c_c (clog10, 0x1.fffffep+127L, 1.0L, 38.53183941910362389414093724045094697423L, 1.276276851248440096917018665609900318458e-39L, UNDERFLOW_EXCEPTION_FLOAT);
   TEST_c_c (clog10, 0x1p-149L, 0x1p-149L, -44.70295435610120748924022586658721447508L, M_PI4_LOG10El);
   TEST_c_c (clog10, 0x1p-147L, 0x1p-147L, -44.10089436477324509881274807713822842154L, M_PI4_LOG10El);
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3178,7 +3210,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; csqrt_test (void)
 #ifndef TEST_FLOAT
   TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1.fffffffffffffp+1023L, 1.473094556905565378990473658199034571917e+154L, 6.101757441282702188537080005372547713595e+153L);
   TEST_c_c (csqrt, 0x1.fffffffffffffp+1023L, 0x1p+1023L, 1.379778091031440685006200821918878702861e+154L, 3.257214233483129514781233066898042490248e+153L);
-  TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L);
+  /* Bug 14157: spurious exception may occur.  */
+  TEST_c_c (csqrt, 0x1p-1074L, 0x1p-1074L, 2.442109726130830256743814843868934877597e-162L, 1.011554969366634726113090867589031782487e-162L, UNDERFLOW_EXCEPTION_OK);
   TEST_c_c (csqrt, 0x1p-1073L, 0x1p-1073L, 3.453664695497464982856905711457966660085e-162L, 1.430554756764195530630723976279903095110e-162L);
 #endif
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3245,17 +3278,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ctan_test (void)
   TEST_c_c (ctan, 0.75L, 1.25L, 0.160807785916206426725166058173438663L, 0.975363285031235646193581759755216379L);
   TEST_c_c (ctan, -2, -3, 0.376402564150424829275122113032269084e-2L, -1.00323862735360980144635859782192726L);
 
-  TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L);
-  TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0);
+  TEST_c_c (ctan, 1, 45, 1.490158918874345552942703234806348520895e-39L, 1.000000000000000000000000000000000000001L, UNDERFLOW_EXCEPTION_FLOAT);
+  TEST_c_c (ctan, 1, 47, 2.729321264492904590777293425576722354636e-41L, 1.0, UNDERFLOW_EXCEPTION_FLOAT);
 
 #ifndef TEST_FLOAT
-  TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0);
-  TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0);
+  TEST_c_c (ctan, 1, 355, 8.140551093483276762350406321792653551513e-309L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE);
+  TEST_c_c (ctan, 1, 365, 1.677892637497921890115075995898773550884e-317L, 1.0, UNDERFLOW_EXCEPTION_DOUBLE);
 #endif
 
 #if defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MAX_EXP &amp;gt;= 16384
-  TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0);
-  TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0);
+  TEST_c_c (ctan, 1, 5680, 4.725214596136812019616700920476949798307e-4934L, 1.0, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctan, 1, 5690, 9.739393181626937151720816611272607059057e-4943L, 1.0, UNDERFLOW_EXCEPTION);
 #endif
 
   TEST_c_c (ctan, 0x3.243f6cp-1, 0, -2.287733242885645987394874673945769518150e7L, 0.0);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3270,10 +3303,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ctan_test (void)
   TEST_c_c (ctan, 0x1p16383L, 1, 0.1608598776370396607204448234354670036772L, 0.8133818522051542536316746743877629761488L);
 #endif
 
-  TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0);
-  TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0);
-  TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0);
-  TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0);
+  TEST_c_c (ctan, 50000, 50000, plus_zero, 1.0, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctan, 50000, -50000, plus_zero, -1.0, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctan, -50000, 50000, minus_zero, 1.0, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctan, -50000, -50000, minus_zero, -1.0, UNDERFLOW_EXCEPTION);
 
   END (ctan, complex);
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3334,17 +3367,17 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ctanh_test (void)
   TEST_c_c (ctanh, 0.75L, 1.25L, 1.37260757053378320258048606571226857L, 0.385795952609750664177596760720790220L);
   TEST_c_c (ctanh, -2, -3, -0.965385879022133124278480269394560686L, 0.988437503832249372031403430350121098e-2L);
 
-  TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L);
-  TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L);
+  TEST_c_c (ctanh, 45, 1, 1.000000000000000000000000000000000000001L, 1.490158918874345552942703234806348520895e-39L, UNDERFLOW_EXCEPTION_FLOAT);
+  TEST_c_c (ctanh, 47, 1, 1.0, 2.729321264492904590777293425576722354636e-41L, UNDERFLOW_EXCEPTION_FLOAT);
 
 #ifndef TEST_FLOAT
-  TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L);
-  TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L);
+  TEST_c_c (ctanh, 355, 1, 1.0, 8.140551093483276762350406321792653551513e-309L, UNDERFLOW_EXCEPTION_DOUBLE);
+  TEST_c_c (ctanh, 365, 1, 1.0, 1.677892637497921890115075995898773550884e-317L, UNDERFLOW_EXCEPTION_DOUBLE);
 #endif
 
 #if defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MAX_EXP &amp;gt;= 16384
-  TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L);
-  TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L);
+  TEST_c_c (ctanh, 5680, 1, 1.0, 4.725214596136812019616700920476949798307e-4934L, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctanh, 5690, 1, 1.0, 9.739393181626937151720816611272607059057e-4943L, UNDERFLOW_EXCEPTION);
 #endif
 
   TEST_c_c (ctanh, 0, 0x3.243f6cp-1, 0.0, -2.287733242885645987394874673945769518150e7L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3359,10 +3392,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ctanh_test (void)
   TEST_c_c (ctanh, 1, 0x1p16383L, 0.8133818522051542536316746743877629761488L, 0.1608598776370396607204448234354670036772L);
 #endif
 
-  TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero);
-  TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero);
-  TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero);
-  TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero);
+  TEST_c_c (ctanh, 50000, 50000, 1.0, plus_zero, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctanh, 50000, -50000, 1.0, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctanh, -50000, 50000, -1.0, plus_zero, UNDERFLOW_EXCEPTION);
+  TEST_c_c (ctanh, -50000, -50000, -1.0, minus_zero, UNDERFLOW_EXCEPTION);
 
   END (ctanh, complex);
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3471,7 +3504,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; exp_test (void)
 #endif
   TEST_f_f (exp, 1e5, plus_infty, OVERFLOW_EXCEPTION);
   TEST_f_f (exp, max_value, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_f_f (exp, -max_value, 0);
+  TEST_f_f (exp, -max_value, 0, UNDERFLOW_EXCEPTION);
 
   END (exp);
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3608,16 +3641,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; exp10_test (void)
   TEST_f_f (exp10, -36, 1.0e-36L);
 #ifndef TEST_FLOAT
   TEST_f_f (exp10, 305, 1.0e305L);
-  TEST_f_f (exp10, -305, 1.0e-305L);
+  TEST_f_f (exp10, -305, 1.0e-305L, UNDERFLOW_EXCEPTION_LDOUBLE_IBM);
 #endif
 #if defined TEST_LDOUBLE &amp;amp;&amp;amp; LDBL_MAX_10_EXP &amp;gt;= 4932
   TEST_f_f (exp10, 4932, 1.0e4932L);
-  TEST_f_f (exp10, -4932, 1.0e-4932L);
+  TEST_f_f (exp10, -4932, 1.0e-4932L, UNDERFLOW_EXCEPTION);
 #endif
   TEST_f_f (exp10, 1e6, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_f_f (exp10, -1e6, 0);
+  TEST_f_f (exp10, -1e6, 0, UNDERFLOW_EXCEPTION);
   TEST_f_f (exp10, max_value, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_f_f (exp10, -max_value, 0);
+  TEST_f_f (exp10, -max_value, 0, UNDERFLOW_EXCEPTION);
   TEST_f_f (exp10, 0.75L, 5.62341325190349080394951039776481231L);
 
   END (exp10);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3644,9 +3677,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; exp2_test (void)
   TEST_f_f (exp2, 10, 1024);
   TEST_f_f (exp2, -1, 0.5);
   TEST_f_f (exp2, 1e6, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_f_f (exp2, -1e6, 0);
+  TEST_f_f (exp2, -1e6, 0, UNDERFLOW_EXCEPTION);
   TEST_f_f (exp2, max_value, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_f_f (exp2, -max_value, 0);
+  TEST_f_f (exp2, -max_value, 0, UNDERFLOW_EXCEPTION);
   TEST_f_f (exp2, 0.75L, 1.68179283050742908606225095246642979L);
 
   TEST_f_f (exp2, 100.5, 1.792728671193156477399422023278661496394e+30L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3706,7 +3739,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; expm1_test (void)
   TEST_f_f (expm1, 100000.0, plus_infty, OVERFLOW_EXCEPTION);
   check_int ("errno for expm1(large) == ERANGE", errno, ERANGE, 0, 0, 0);
   TEST_f_f (expm1, max_value, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_f_f (expm1, -max_value, -1);
+  /* Bug 6778: spurious underflow exception.  */
+  TEST_f_f (expm1, -max_value, -1, UNDERFLOW_EXCEPTION_OK);
 
   END (expm1);
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3928,16 +3962,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fma_test (void)
   TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 0x1.001p+0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1011);
   TEST_fff_f (fma, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+0, 0x1.fffffffffffffp+1023, -0x1.ffffffffffffdp+1023);
   TEST_fff_f (fma, 0x1.fffffffffffffp+1023, 2.0, -0x1.fffffffffffffp+1023, 0x1.fffffffffffffp+1023);
-  TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0);
-  TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022);
-  TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022);
-  TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022);
-  TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022);
-  TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022);
-  TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022);
-  TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022);
-  TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022);
-  TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022);
+  TEST_fff_f (fma, 0x1.6a09e667f3bccp-538, 0x1.6a09e667f3bccp-538, 0.0, 0.0, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1.deadbeef2feedp-495, 0x1.deadbeef2feedp-495, -0x1.bf86a5786a574p-989, 0x0.0000042625a1fp-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1.deadbeef2feedp-503, 0x1.deadbeef2feedp-503, -0x1.bf86a5786a574p-1005, 0x0.0000000004262p-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1p-537, 0x1p-538, 0x1p-1074, 0x0.0000000000002p-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1.7fffff8p-968, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000001p-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1.4000004p-967, 0x1p-106, 0x0.000001p-1022, 0x0.0000010000003p-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1.4p-967, -0x1p-106, -0x0.000001p-1022, -0x0.0000010000002p-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, -0x1.19cab66d73e17p-959, 0x1.c7108a8c5ff51p-107, -0x0.80b0ad65d9b64p-1022, -0x0.80b0ad65d9d59p-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, -0x1.d2eaed6e8e9d3p-979, -0x1.4e066c62ac9ddp-63, -0x0.9245e6b003454p-1022, -0x0.9245c09c5fb5dp-1022, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, 0x1.153d650bb9f06p-907, 0x1.2d01230d48407p-125, -0x0.b278d5acfc3cp-1022, -0x0.b22757123bbe9p-1022, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, -0x1.fffffffffffffp-711, 0x1.fffffffffffffp-275, 0x1.fffffe00007ffp-983, 0x1.7ffffe00007ffp-983);
 #endif
 #if defined (TEST_LDOUBLE) &amp;amp;&amp;amp; LDBL_MANT_DIG == 64
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3946,12 +3980,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; fma_test (void)
   TEST_fff_f (fma, 0xc.7fc000003ffffffp-1194L, 0x8.1e0003fffffffffp+15327L, -0x8.fffep+14072L, 0xc.ae9f164020effffp+14136L);
   TEST_fff_f (fma, -0x8.0001fc000000003p+1798L, 0xcp-2230L, 0x8.f7e000000000007p-468L, -0xc.0002f9ffee10404p-429L);
   TEST_fff_f (fma, 0xc.0000000000007ffp+10130L, -0x8.000000000000001p+4430L, 0xc.07000000001ffffp+14513L, -0xb.fffffffffffd7e4p+14563L);
-  TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L);
+  /* Bug 14152: underflow exception may be missing.  */
+  TEST_fff_f (fma, 0xb.ffffp-4777L, 0x8.000000fffffffffp-11612L, -0x0.3800fff8p-16385L, 0x5.c7fe80c7ffeffffp-16385L, UNDERFLOW_EXCEPTION_OK);
 #endif
 #if defined (TEST_LDOUBLE) &amp;amp;&amp;amp; LDBL_MANT_DIG == 113
   TEST_fff_f (fma, 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584L, -0x1.6b500daf0580d987f1bc0cadfcddp-13777L, 0x1.613cd91d9fed34b33820e5ab9d8dp-16378L, -0x1.3a79fb50eb9ce887cffa0f09bd9fp-16360L);
-  TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L);
-  TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L);
+  TEST_fff_f (fma, -0x1.f949b880cacb0f0c61540105321dp-5954L, -0x1.3876cec84b4140f3bd6198731b7ep-10525L, -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382L, -0x0.a5dc1c6cfbc498c54fb0b5038abbp-16382L, UNDERFLOW_EXCEPTION);
+  TEST_fff_f (fma, -0x1.0000fffffffffp-16221L, 0x1.0000001fffff8007fep-239L, 0x0.ff87ffffffffffffe000003fffffp-16382L, 0x0.ff87ffffffffffffdffc003bff7fp-16382L, UNDERFLOW_EXCEPTION);
   TEST_fff_f (fma, -0x1.ac79c9376ef447f3827c9e9de008p-2228L, -0x1.5ba830022b6139e21fbe7270cad8p-6314L, 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616L, 0x1.22f14a0253878a730cd1aee373adp-8541L);
   TEST_fff_f (fma, -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652L, 0x1.f34235ff9d095449c29b4831b62dp+3311L, 0x1.fbe4302df23354dbd0c4d3cfe606p+5879L, -0x1.bb473bfdfb7a6e18886ce6e57eafp+5964L);
   TEST_fff_f (fma, -0x1.ca8835fc6ecfb5398625fc891be5p-1686L, 0x1.621e1972bbe2180e5be9dd7d8df5p-7671L, -0x1.7d2d21b73b52cf20dec2a83902a4p-9395L, -0x1.3d2322191c9c88bc68a62ab8042cp-9356L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4304,7 +4339,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; j0_test (void)
   TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L);
   TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L);
 
-  TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L);
+  /* Bug 14155: spurious exception may occur.  */
+  TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L, UNDERFLOW_EXCEPTION_OK);
 
 #ifndef TEST_FLOAT
   TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4433,7 +4469,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; jn_test (void)
   TEST_ff_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L);
   TEST_ff_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L);
 
-  TEST_ff_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L);
+  /* Bug 14155: spurious exception may occur.  */
+  TEST_ff_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L, UNDERFLOW_EXCEPTION_OK);
 
   END (jn);
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5924,7 +5961,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nexttoward_test (void)
   TEST_ff_f (nexttoward, -1.0, -0.9L, -0x0.ffffffp0);
   TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.ffffffp0);
   TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.ffffffp0);
-  TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145);
+  TEST_ff_f (nexttoward, -0x1.3p-145, -0xap-148L, -0x1.4p-145, UNDERFLOW_EXCEPTION);
 # if LDBL_MANT_DIG &amp;gt;= 64
   TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.000002p0);
   TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.ffffffp0);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -5958,7 +5995,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; nexttoward_test (void)
   TEST_ff_f (nexttoward, -1.0, LDBL_MAX, -0x0.fffffffffffff8p0);
   TEST_ff_f (nexttoward, -1.0, -0x0.fffffffffffff8p0, -0x0.fffffffffffff8p0);
   TEST_ff_f (nexttoward, -1.0, -0x8.00346dc5d6388p-3L, -0x1.0000000000001p0);
-  TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073);
+  TEST_ff_f (nexttoward, 0x1p-1074, 0x1p-1073L, 0x1p-1073, UNDERFLOW_EXCEPTION);
 # if LDBL_MANT_DIG &amp;gt;= 64
   TEST_ff_f (nexttoward, 1.0, 0x1.000000000000002p0L, 0x1.0000000000001p0);
   TEST_ff_f (nexttoward, 1.0, 0x0.ffffffffffffffffp0L, 0x0.fffffffffffff8p0);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6225,9 +6262,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
   check_int ("errno for pow(-0,-num) == ERANGE", errno, ERANGE, 0, 0, 0);
 
   TEST_ff_f (pow, 0x1p72L, 0x1p72L, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_ff_f (pow, 10, -0x1p72L, 0);
+  TEST_ff_f (pow, 10, -0x1p72L, 0, UNDERFLOW_EXCEPTION);
   TEST_ff_f (pow, max_value, max_value, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_ff_f (pow, 10, -max_value, 0);
+  TEST_ff_f (pow, 10, -max_value, 0, UNDERFLOW_EXCEPTION);
 
   TEST_ff_f (pow, 0, 1, 0);
   TEST_ff_f (pow, 0, 11, 0);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6417,7 +6454,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
   TEST_ff_f (pow, 0.75L, 1.25L, 0.697953644326574699205914060237425566L);
 
 #if defined TEST_DOUBLE || defined TEST_LDOUBLE
-  TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0);
+  TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION);
 #endif
 
   TEST_ff_f (pow, -1.0, -0xffffff, -1.0);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6466,30 +6503,31 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
 
   TEST_ff_f (pow, -2.0, 126, 0x1p126);
   TEST_ff_f (pow, -2.0, 127, -0x1p127);
-  TEST_ff_f (pow, -2.0, -126, 0x1p-126);
-  TEST_ff_f (pow, -2.0, -127, -0x1p-127);
+  /* Allow inexact results for float to be considered to underflow.  */
+  TEST_ff_f (pow, -2.0, -126, 0x1p-126, UNDERFLOW_EXCEPTION_OK_FLOAT);
+  TEST_ff_f (pow, -2.0, -127, -0x1p-127, UNDERFLOW_EXCEPTION_OK_FLOAT);
 
-  TEST_ff_f (pow, -2.0, -0xffffff, minus_zero);
-  TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero);
+  TEST_ff_f (pow, -2.0, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -2.0, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
 #ifndef TEST_FLOAT
-  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero);
-  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero);
+  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
 #endif
 #ifdef TEST_LDOUBLE
 # if LDBL_MANT_DIG &amp;gt;= 64
-  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero);
-  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero);
+  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -2.0, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 106
-  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
-  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 113
-  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
-  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -2.0, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 #endif
-  TEST_ff_f (pow, -2.0, -max_value, plus_zero);
+  TEST_ff_f (pow, -2.0, -max_value, plus_zero, UNDERFLOW_EXCEPTION);
 
   TEST_ff_f (pow, -2.0, 0xffffff, minus_infty, OVERFLOW_EXCEPTION);
   TEST_ff_f (pow, -2.0, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6516,32 +6554,32 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
   TEST_ff_f (pow, -max_value, 0.5, nan_value, INVALID_EXCEPTION);
   TEST_ff_f (pow, -max_value, 1.5, nan_value, INVALID_EXCEPTION);
   TEST_ff_f (pow, -max_value, 1000.5, nan_value, INVALID_EXCEPTION);
-  TEST_ff_f (pow, -max_value, -2, plus_zero);
-  TEST_ff_f (pow, -max_value, -3, minus_zero);
+  TEST_ff_f (pow, -max_value, -2, plus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -max_value, -3, minus_zero, UNDERFLOW_EXCEPTION);
   TEST_ff_f (pow, -max_value, 2, plus_infty, OVERFLOW_EXCEPTION);
   TEST_ff_f (pow, -max_value, 3, minus_infty, OVERFLOW_EXCEPTION);
 
-  TEST_ff_f (pow, -max_value, -0xffffff, minus_zero);
-  TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero);
+  TEST_ff_f (pow, -max_value, -0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -max_value, -0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
 #ifndef TEST_FLOAT
-  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero);
-  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero);
+  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
 #endif
 #ifdef TEST_LDOUBLE
 # if LDBL_MANT_DIG &amp;gt;= 64
-  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero);
-  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero);
+  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -max_value, -0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 106
-  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
-  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 113
-  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
-  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -max_value, -0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 #endif
-  TEST_ff_f (pow, -max_value, -max_value, plus_zero);
+  TEST_ff_f (pow, -max_value, -max_value, plus_zero, UNDERFLOW_EXCEPTION);
 
   TEST_ff_f (pow, -max_value, 0xffffff, minus_infty, OVERFLOW_EXCEPTION);
   TEST_ff_f (pow, -max_value, 0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6592,36 +6630,37 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
 #endif
   TEST_ff_f (pow, -0.5, -max_value, plus_infty, OVERFLOW_EXCEPTION);
 
-  TEST_ff_f (pow, -0.5, 0xffffff, minus_zero);
-  TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero);
+  TEST_ff_f (pow, -0.5, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -0.5, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
 #ifndef TEST_FLOAT
-  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero);
-  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero);
+  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
 #endif
 #ifdef TEST_LDOUBLE
 # if LDBL_MANT_DIG &amp;gt;= 64
-  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero);
-  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero);
+  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -0.5, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 106
-  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
-  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 113
-  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
-  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -0.5, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 #endif
-  TEST_ff_f (pow, -0.5, max_value, plus_zero);
+  TEST_ff_f (pow, -0.5, max_value, plus_zero, UNDERFLOW_EXCEPTION);
 
   TEST_ff_f (pow, -min_value, 0.5, nan_value, INVALID_EXCEPTION);
   TEST_ff_f (pow, -min_value, 1.5, nan_value, INVALID_EXCEPTION);
   TEST_ff_f (pow, -min_value, 1000.5, nan_value, INVALID_EXCEPTION);
   TEST_ff_f (pow, -min_value, -2, plus_infty, OVERFLOW_EXCEPTION);
   TEST_ff_f (pow, -min_value, -3, minus_infty, OVERFLOW_EXCEPTION);
-  TEST_ff_f (pow, -min_value, 1, -min_value);
-  TEST_ff_f (pow, -min_value, 2, plus_zero);
-  TEST_ff_f (pow, -min_value, 3, minus_zero);
+  /* Allow inexact results to be considered to underflow.  */
+  TEST_ff_f (pow, -min_value, 1, -min_value, UNDERFLOW_EXCEPTION_OK);
+  TEST_ff_f (pow, -min_value, 2, plus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -min_value, 3, minus_zero, UNDERFLOW_EXCEPTION);
 
   TEST_ff_f (pow, -min_value, -0xffffff, minus_infty, OVERFLOW_EXCEPTION);
   TEST_ff_f (pow, -min_value, -0x1fffffe, plus_infty, OVERFLOW_EXCEPTION);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -6645,27 +6684,27 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; pow_test (void)
 #endif
   TEST_ff_f (pow, -min_value, -max_value, plus_infty, OVERFLOW_EXCEPTION);
 
-  TEST_ff_f (pow, -min_value, 0xffffff, minus_zero);
-  TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero);
+  TEST_ff_f (pow, -min_value, 0xffffff, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -min_value, 0x1fffffe, plus_zero, UNDERFLOW_EXCEPTION);
 #ifndef TEST_FLOAT
-  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero);
-  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero);
+  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+52L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffp+53L, plus_zero, UNDERFLOW_EXCEPTION);
 #endif
 #ifdef TEST_LDOUBLE
 # if LDBL_MANT_DIG &amp;gt;= 64
-  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero);
-  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero);
+  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+63L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -min_value, 0x1.fffffffffffffffep+64L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 106
-  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero);
-  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero);
+  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+105L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffff8p+106L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 # if LDBL_MANT_DIG &amp;gt;= 113
-  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero);
-  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero);
+  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+112L, minus_zero, UNDERFLOW_EXCEPTION);
+  TEST_ff_f (pow, -min_value, 0x1.ffffffffffffffffffffffffffffp+113L, plus_zero, UNDERFLOW_EXCEPTION);
 # endif
 #endif
-  TEST_ff_f (pow, -min_value, max_value, plus_zero);
+  TEST_ff_f (pow, -min_value, max_value, plus_zero, UNDERFLOW_EXCEPTION);
 
 #ifndef TEST_LDOUBLE /* Bug 13881.  */
   TEST_ff_f (pow, 0x0.ffffffp0, 10, 0.999999403953712118183885036774764444747L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7518,13 +7557,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; scalbn_test (void)
   TEST_fi_f (scalbn, 1, 0L, 1);
 
   TEST_fi_f (scalbn, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbn, 1, INT_MIN, plus_zero);
+  TEST_fi_f (scalbn, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbn, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero);
+  TEST_fi_f (scalbn, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbn, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero);
+  TEST_fi_f (scalbn, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbn, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero);
+  TEST_fi_f (scalbn, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
 
   END (scalbn);
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -7549,32 +7588,32 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; scalbln_test (void)
   TEST_fl_f (scalbln, 1, 0L, 1);
 
   TEST_fi_f (scalbln, 1, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, 1, INT_MIN, plus_zero);
+  TEST_fi_f (scalbln, 1, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, max_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, max_value, INT_MIN, plus_zero);
+  TEST_fi_f (scalbln, max_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, min_value, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, min_value, INT_MIN, plus_zero);
+  TEST_fi_f (scalbln, min_value, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, min_value / 4, INT_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, min_value / 4, INT_MIN, plus_zero);
+  TEST_fi_f (scalbln, min_value / 4, INT_MIN, plus_zero, UNDERFLOW_EXCEPTION);
 
   TEST_fi_f (scalbln, 1, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, 1, LONG_MIN, plus_zero);
+  TEST_fi_f (scalbln, 1, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, max_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, max_value, LONG_MIN, plus_zero);
+  TEST_fi_f (scalbln, max_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, min_value, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, min_value, LONG_MIN, plus_zero);
+  TEST_fi_f (scalbln, min_value, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, min_value / 4, LONG_MAX, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, min_value / 4, LONG_MIN, plus_zero);
+  TEST_fi_f (scalbln, min_value / 4, LONG_MIN, plus_zero, UNDERFLOW_EXCEPTION);
 
 #if LONG_MAX &amp;gt;= 0x100000000
   TEST_fi_f (scalbln, 1, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, 1, -0x88000000L, plus_zero);
+  TEST_fi_f (scalbln, 1, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, max_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, max_value, -0x88000000L, plus_zero);
+  TEST_fi_f (scalbln, max_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, min_value, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, min_value, -0x88000000L, plus_zero);
+  TEST_fi_f (scalbln, min_value, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
   TEST_fi_f (scalbln, min_value / 4, 0x88000000L, plus_infty, OVERFLOW_EXCEPTION);
-  TEST_fi_f (scalbln, min_value / 4, -0x88000000L, plus_zero);
+  TEST_fi_f (scalbln, min_value / 4, -0x88000000L, plus_zero, UNDERFLOW_EXCEPTION);
 #endif
 
   END (scalbn);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8025,7 +8064,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; tan_test (void)
   TEST_f_f (tan, nan_value, nan_value);
   check_int ("errno for tan(NaN) == 0", errno, 0, 0, 0, 0);
 
-  TEST_f_f (tan, M_PI_4l, 1);
+  /* Bug 14154: spurious exception may occur.  */
+  TEST_f_f (tan, M_PI_4l, 1, UNDERFLOW_EXCEPTION_OK_FLOAT);
   TEST_f_f (tan, 0.75L, 0.931596459944072461165202756573936428L);
 
   TEST_f_f (tan, 0x1p65, -0.0472364872359047946798414219288370688827L);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -8428,7 +8468,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; y1_test (void)
   TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L);
   TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L);
 
-  TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L);
+  /* Bug 14155: spurious exception may occur.  */
+  TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L, UNDERFLOW_EXCEPTION_OK);
 
 #ifndef TEST_FLOAT
   TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L);
diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps
index b4ca212..d66eb12 100644
--- a/sysdeps/i386/fpu/libm-test-ulps
+++ b/sysdeps/i386/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -728,12 +728,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
+Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
 double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
+Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
 double: 1
 idouble: 1
 Test "Imaginary part of: cexp (0 + 0x1p65 i) == 0.99888622066058013610642172179340364209972 - 0.047183876212354673805106149805700013943218 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1383,7 +1383,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-1073 + 0x1p-1073 i) == 3.453664695497464982856905711457966660085e-162 + 1.430554756764195530630723976279903095110e-162 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i":
+Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i plus underflow exception allowed":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-147 + 0x1p-147 i) == 8.225610928685557596194006925540350401606e-23 + 3.407159605465907500737319471202779419102e-23 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1428,10 +1428,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ifloat: 1
 Test "Real part of: ctan (0x3.243f6cp-1 + 0 i) == -2.287733242885645987394874673945769518150e7 + 0.0 i":
 float: 1
 ifloat: 1
-Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i":
+Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i plus underflow exception for float":
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i":
+Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i plus underflow exception for float":
 double: 1
 idouble: 1
 ildouble: 2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1479,10 +1479,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: ctanh (1 + 0x1p127 i) == 0.9101334047676183761532873794426475906201 + 0.2446359391192790896381501310437708987204 i":
 float: 1
 ifloat: 1
-Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i":
+Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i plus underflow exception for float":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i":
+Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i plus underflow exception for float":
 double: 1
 idouble: 1
 ildouble: 2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1627,7 +1627,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 ifloat: 2
 ildouble: 2
 ldouble: 2
-Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17":
+Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17 plus underflow exception allowed":
 float: 1
 ifloat: 1
 Test "j0 (10.0) == -0.245935764451348335197760862485328754":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1765,7 +1765,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; double: 2
 idouble: 2
 ildouble: 1
 ldouble: 1
-Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16":
+Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16 plus underflow exception allowed":
 float: 1
 ifloat: 1
 ildouble: 1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2158,7 +2158,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "tan (1e22) == -1.628778225606898878549375936939548513545":
 ildouble: 1
 ldouble: 1
-Test "tan (pi/4) == 1":
+Test "tan (pi/4) == 1 plus underflow exception allowed for float":
 double: 1
 float: 1
 idouble: 1
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2400,7 +2400,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "y1 (0x1.001000001p+593) == 3.927269966354206207832593635798954916263e-90":
 ildouble: 2
 ldouble: 2
-Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16":
+Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16 plus underflow exception allowed":
 double: 1
 float: 2
 idouble: 1
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index d3770c8..d90d1cc 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -678,10 +678,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
 float: 1
 ifloat: 1
-Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
+Test "Real part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i":
+Test "Imaginary part of: cexp (-95 + 0.75 i) == 4.039714446238306526889476684000081624047e-42 + 3.763383677300535390271646960780570275931e-42 i plus underflow exception for float":
 double: 1
 idouble: 1
 Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -834,7 +834,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; double: 1
 float: 1
 idouble: 1
 ifloat: 1
-Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i) == 38.53183941910362389414093724045094697423 + 1.276276851248440096917018665609900318458e-39 i":
+Test "Real part of: clog10 (0x1.fffffep+127 + 1.0 i) == 38.53183941910362389414093724045094697423 + 1.276276851248440096917018665609900318458e-39 i plus underflow exception for float":
 float: 1
 ifloat: 1
 Test "Imaginary part of: clog10 (0x1.fffffffffffffp+1023 + 0x1.fffffffffffffp+1023 i) == 308.4052305577487344482591243175787477115 + pi/4*log10(e) i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1248,7 +1248,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-1073 + 0x1p-1073 i) == 3.453664695497464982856905711457966660085e-162 + 1.430554756764195530630723976279903095110e-162 i":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i":
+Test "Imaginary part of: csqrt (0x1p-1074 + 0x1p-1074 i) == 2.442109726130830256743814843868934877597e-162 + 1.011554969366634726113090867589031782487e-162 i plus underflow exception allowed":
 ildouble: 1
 ldouble: 1
 Test "Imaginary part of: csqrt (0x1p-147 + 0x1p-147 i) == 8.225610928685557596194006925540350401606e-23 + 3.407159605465907500737319471202779419102e-23 i":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1297,10 +1297,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 Test "Real part of: ctan (0x3.243f6cp-1 + 0 i) == -2.287733242885645987394874673945769518150e7 + 0.0 i":
 float: 1
 ifloat: 1
-Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i":
+Test "Real part of: ctan (1 + 45 i) == 1.490158918874345552942703234806348520895e-39 + 1.000000000000000000000000000000000000001 i plus underflow exception for float":
 ildouble: 1
 ldouble: 1
-Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i":
+Test "Real part of: ctan (1 + 47 i) == 2.729321264492904590777293425576722354636e-41 + 1.0 i plus underflow exception for float":
 ildouble: 2
 ldouble: 2
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1352,10 +1352,10 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "Real part of: ctanh (1 + 0x1p127 i) == 0.9101334047676183761532873794426475906201 + 0.2446359391192790896381501310437708987204 i":
 double: 1
 idouble: 1
-Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i":
+Test "Imaginary part of: ctanh (45 + 1 i) == 1.000000000000000000000000000000000000001 + 1.490158918874345552942703234806348520895e-39 i plus underflow exception for float":
 ildouble: 1
 ldouble: 1
-Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i":
+Test "Imaginary part of: ctanh (47 + 1 i) == 1.0 + 2.729321264492904590777293425576722354636e-41 i plus underflow exception for float":
 ildouble: 2
 ldouble: 2
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1395,7 +1395,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 2
 ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "exp10 (-305) == 1.0e-305":
+Test "exp10 (-305) == 1.0e-305 plus underflow exception for IBM long double":
 double: 1
 idouble: 1
 Test "exp10 (-36) == 1.0e-36":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1515,7 +1515,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 2
 Test "j0 (0.75) == 0.864242275166648623555731103820923211":
 float: 1
 ifloat: 1
-Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17":
+Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17 plus underflow exception allowed":
 float: 2
 ifloat: 2
 Test "j0 (10.0) == -0.245935764451348335197760862485328754":
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1638,7 +1638,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; idouble: 1
 ifloat: 4
 ildouble: 1
 ldouble: 1
-Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16":
+Test "jn (2, 0x1.ffff62p+99) == -4.43860668048170034334926693188979974489e-16 plus underflow exception allowed":
 double: 2
 float: 2
 idouble: 2
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2187,7 +2187,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; ldouble: 1
 Test "y1 (0x1.001000001p+593) == 3.927269966354206207832593635798954916263e-90":
 ildouble: 2
 ldouble: 2
-Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16":
+Test "y1 (0x1.27e204p+99) == -8.881610148467797208469612080785210013461e-16 plus underflow exception allowed":
 double: 1
 idouble: 1
 ildouble: 1

&lt;/pre&gt;</description>
    <dc:creator>Joseph S. Myers</dc:creator>
    <dc:date>2012-05-24T00:53:55</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.lib.glibc.alpha">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.lib.glibc.alpha</link>
  </textinput>
</rdf:RDF>

