public inbox for newlib-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin/users/vapier/wip] [RFC] newlib: libc: start manual appendix to hold various ABI constants
@ 2024-01-02  4:37 Michael Frysinger
  0 siblings, 0 replies; only message in thread
From: Michael Frysinger @ 2024-01-02  4:37 UTC (permalink / raw)
  To: newlib-cvs

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=9b1d4a2c83719b83724798881d4edb074fd8aafa

commit 9b1d4a2c83719b83724798881d4edb074fd8aafa
Author: Mike Frysinger <vapier@gentoo.org>
Date:   Wed Dec 27 02:08:21 2023 -0500

    [RFC] newlib: libc: start manual appendix to hold various ABI constants
    
    The newlib errno values end up being exposed way beyond newlib itself,
    so it can be helpful to have a reference of the names & values of them
    all.  When using a GNU stack, the errno values might be shared across
    all of them without any translation layers.
    
    Consider:
    * user's code
    * GNU newlib (libc)
    * GNU libgloss (OS bindings)
    * GNU simulator (syscall handler)
    
    When the user program tries to open a file that doesn't exist, it will
    call through newlib -> libgloss -> sim.  How is the error code handled ?
    The user program relies on newlib's ENOENT constant.  If newlib & libgloss
    don't agree on this value, then libgloss has to maintain a mapping of the
    different constants {"EAGAIN", NEWLIB_EAGAIN, LIBGLOSS_EAGAIN}.  No one
    does this of course -- libgloss just uses newlib's values directly.  If
    libgloss & the OS don't agree on this value, then libgloss again has to
    maintain a mapping of {"EAGAIN", NEWLIB_EAGAIN, OS_EAGAIN}.  No one does
    this with the GNU simulator -- it returns newlib's values directly.  The
    simulator definitely has to maintain a mapping of the target's EAGAIN
    values and whatever OS it is running on.  Having this be documented all
    the way down is important so people writing simulator ports know what
    values to use.
    
    People implementing a minimal bootloader environment can easily be in the
    same boat -- they are trying to glue one world (e.g. Das U-Boot's machine
    independent API runtime) with another world (e.g. libgloss), and that will
    need to maintain the mapping of values in order for the programs to run
    unmodified.
    
    Start an appendix in the libc manual to hold these constants.  These pages
    are automatically generated using the preprocessor and a script from the
    GNU simulator project.  If people are amenable to this direction, I can
    port that script over to newlib & strip it down, and also add a few more
    appendix chapters for other important ABI constants (e.g. signals).

Diff:
---
 newlib/Makefile.in                           | 281 +++++++-------
 newlib/libc/errno/Makefile.inc               |   3 +
 newlib/libc/errno/constants.tex              | 349 +++++++++++++++++
 newlib/libc/libc.texi                        |  26 ++
 newlib/libc/machine/cris/Makefile.inc        |   3 +
 newlib/libc/machine/cris/constants-errno.tex | 541 +++++++++++++++++++++++++++
 newlib/libc/machine/spu/Makefile.inc         |   3 +
 newlib/libc/machine/spu/constants-errno.tex  | 517 +++++++++++++++++++++++++
 8 files changed, 1584 insertions(+), 139 deletions(-)

diff --git a/newlib/Makefile.in b/newlib/Makefile.in
index 9a32646ab..2fb1252a7 100644
--- a/newlib/Makefile.in
+++ b/newlib/Makefile.in
@@ -689,31 +689,32 @@ check_PROGRAMS =
 # machine-but-not-system-specific functions, usable as an add-on
 # by itself together with e.g. uclibc.
 @HAVE_LIBC_MACHINE_CRIS_TRUE@am__append_73 = libc/machine/cris/libic.a
-@HAVE_LIBC_MACHINE_CRX_TRUE@am__append_74 = libc/machine/crx/setjmp.S libc/machine/crx/getenv.c
-@HAVE_LIBC_MACHINE_CSKY_TRUE@am__append_75 = libc/machine/csky/setjmp.S
-@HAVE_LIBC_MACHINE_D10V_TRUE@am__append_76 = libc/machine/d10v/setjmp.S
-@HAVE_LIBC_MACHINE_D30V_TRUE@am__append_77 = libc/machine/d30v/setjmp.S
-@HAVE_LIBC_MACHINE_EPIPHANY_TRUE@am__append_78 = libc/machine/epiphany/setjmp.S
-@HAVE_LIBC_MACHINE_FR30_TRUE@am__append_79 = libc/machine/fr30/setjmp.S
-@HAVE_LIBC_MACHINE_FRV_TRUE@am__append_80 = libc/machine/frv/setjmp.S
-@HAVE_LIBC_MACHINE_FT32_TRUE@am__append_81 = libc/machine/ft32/setjmp.S libc/machine/ft32/strlen.S libc/machine/ft32/memcpy.S libc/machine/ft32/strcmp.S libc/machine/ft32/memset.S libc/machine/ft32/strcpy.S
-@HAVE_LIBC_MACHINE_H8300_TRUE@am__append_82 = \
+@HAVE_LIBC_MACHINE_CRIS_TRUE@am__append_74 = libc/machine/cris/constants-errno.tex
+@HAVE_LIBC_MACHINE_CRX_TRUE@am__append_75 = libc/machine/crx/setjmp.S libc/machine/crx/getenv.c
+@HAVE_LIBC_MACHINE_CSKY_TRUE@am__append_76 = libc/machine/csky/setjmp.S
+@HAVE_LIBC_MACHINE_D10V_TRUE@am__append_77 = libc/machine/d10v/setjmp.S
+@HAVE_LIBC_MACHINE_D30V_TRUE@am__append_78 = libc/machine/d30v/setjmp.S
+@HAVE_LIBC_MACHINE_EPIPHANY_TRUE@am__append_79 = libc/machine/epiphany/setjmp.S
+@HAVE_LIBC_MACHINE_FR30_TRUE@am__append_80 = libc/machine/fr30/setjmp.S
+@HAVE_LIBC_MACHINE_FRV_TRUE@am__append_81 = libc/machine/frv/setjmp.S
+@HAVE_LIBC_MACHINE_FT32_TRUE@am__append_82 = libc/machine/ft32/setjmp.S libc/machine/ft32/strlen.S libc/machine/ft32/memcpy.S libc/machine/ft32/strcmp.S libc/machine/ft32/memset.S libc/machine/ft32/strcpy.S
+@HAVE_LIBC_MACHINE_H8300_TRUE@am__append_83 = \
 @HAVE_LIBC_MACHINE_H8300_TRUE@	libc/machine/h8300/reg_memcpy.S libc/machine/h8300/reg_memset.S libc/machine/h8300/strcmp.S libc/machine/h8300/memcpy.S libc/machine/h8300/memset.S \
 @HAVE_LIBC_MACHINE_H8300_TRUE@	libc/machine/h8300/setjmp.S libc/machine/h8300/h8sx_strcpy.S
 
-@HAVE_LIBC_MACHINE_H8500_TRUE@am__append_83 = libc/machine/h8500/divsi3.c libc/machine/h8500/mulsi3.c libc/machine/h8500/divhi3.S libc/machine/h8500/shifts.c libc/machine/h8500/cmpsi.c libc/machine/h8500/psi.S libc/machine/h8500/setjmp.S
-@HAVE_LIBC_MACHINE_HPPA_TRUE@am__append_84 = \
+@HAVE_LIBC_MACHINE_H8500_TRUE@am__append_84 = libc/machine/h8500/divsi3.c libc/machine/h8500/mulsi3.c libc/machine/h8500/divhi3.S libc/machine/h8500/shifts.c libc/machine/h8500/cmpsi.c libc/machine/h8500/psi.S libc/machine/h8500/setjmp.S
+@HAVE_LIBC_MACHINE_HPPA_TRUE@am__append_85 = \
 @HAVE_LIBC_MACHINE_HPPA_TRUE@	libc/machine/hppa/memchr.S libc/machine/hppa/memcmp.S libc/machine/hppa/memcpy.S libc/machine/hppa/memset.S \
 @HAVE_LIBC_MACHINE_HPPA_TRUE@	libc/machine/hppa/setjmp.S \
 @HAVE_LIBC_MACHINE_HPPA_TRUE@	libc/machine/hppa/strcat.S libc/machine/hppa/strcmp.S \
 @HAVE_LIBC_MACHINE_HPPA_TRUE@	libc/machine/hppa/strcpy.S libc/machine/hppa/strlen.S libc/machine/hppa/strncat.S libc/machine/hppa/strncmp.S libc/machine/hppa/strncpy.S
 
-@HAVE_LIBC_MACHINE_I386_TRUE@@MACH_ADD_SETJMP_TRUE@am__append_85 = libc/machine/i386/setjmp.S
-@HAVE_LIBC_MACHINE_I386_TRUE@am__append_86 = \
+@HAVE_LIBC_MACHINE_I386_TRUE@@MACH_ADD_SETJMP_TRUE@am__append_86 = libc/machine/i386/setjmp.S
+@HAVE_LIBC_MACHINE_I386_TRUE@am__append_87 = \
 @HAVE_LIBC_MACHINE_I386_TRUE@	libc/machine/i386/memchr.S libc/machine/i386/memcmp.S libc/machine/i386/memcpy.S libc/machine/i386/memset.S libc/machine/i386/strchr.S \
 @HAVE_LIBC_MACHINE_I386_TRUE@	libc/machine/i386/memmove.S libc/machine/i386/strlen.S libc/machine/i386/i386mach.h
 
-@HAVE_LIBC_MACHINE_I960_TRUE@am__append_87 = \
+@HAVE_LIBC_MACHINE_I960_TRUE@am__append_88 = \
 @HAVE_LIBC_MACHINE_I960_TRUE@	libc/machine/i960/memccpy_ca.S \
 @HAVE_LIBC_MACHINE_I960_TRUE@	libc/machine/i960/memccpy.S \
 @HAVE_LIBC_MACHINE_I960_TRUE@	libc/machine/i960/memchr_ca.S \
@@ -743,43 +744,43 @@ check_PROGRAMS =
 @HAVE_LIBC_MACHINE_I960_TRUE@	libc/machine/i960/strpbrk.S \
 @HAVE_LIBC_MACHINE_I960_TRUE@	libc/machine/i960/strrchr.S
 
-@HAVE_LIBC_MACHINE_IQ2000_TRUE@am__append_88 = libc/machine/iq2000/setjmp.S
-@HAVE_LIBC_MACHINE_LM32_TRUE@am__append_89 = libc/machine/lm32/setjmp.S
-@HAVE_LIBC_MACHINE_M32C_TRUE@am__append_90 = libc/machine/m32c/setjmp.S
-@HAVE_LIBC_MACHINE_M32R_TRUE@am__append_91 = libc/machine/m32r/setjmp.S
-@HAVE_LIBC_MACHINE_M68HC11_TRUE@am__append_92 = libc/machine/m68hc11/setjmp.S
-@HAVE_LIBC_MACHINE_M68K_TRUE@am__append_93 = libc/machine/m68k/setjmp.S libc/machine/m68k/strcpy.c libc/machine/m68k/strlen.c libc/machine/m68k/memcpy.S libc/machine/m68k/memset.S
-@HAVE_LIBC_MACHINE_M88K_TRUE@am__append_94 = libc/machine/m88k/setjmp.S
-@HAVE_LIBC_MACHINE_MEP_TRUE@am__append_95 = libc/machine/mep/setjmp.S
-@HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@am__append_96 = libc/machine/microblaze/strlen.c libc/machine/microblaze/strcmp.c libc/machine/microblaze/strcpy.c libc/machine/microblaze/setjmp.S libc/machine/microblaze/longjmp.S
-@HAVE_LIBC_MACHINE_MIPS_TRUE@am__append_97 = libc/machine/mips/setjmp.S libc/machine/mips/strlen.c libc/machine/mips/strcmp.S libc/machine/mips/strncpy.c libc/machine/mips/memset.S libc/machine/mips/memcpy.S
-@HAVE_LIBC_MACHINE_MN10200_TRUE@am__append_98 = libc/machine/mn10200/setjmp.S
-@HAVE_LIBC_MACHINE_MN10300_TRUE@am__append_99 = \
+@HAVE_LIBC_MACHINE_IQ2000_TRUE@am__append_89 = libc/machine/iq2000/setjmp.S
+@HAVE_LIBC_MACHINE_LM32_TRUE@am__append_90 = libc/machine/lm32/setjmp.S
+@HAVE_LIBC_MACHINE_M32C_TRUE@am__append_91 = libc/machine/m32c/setjmp.S
+@HAVE_LIBC_MACHINE_M32R_TRUE@am__append_92 = libc/machine/m32r/setjmp.S
+@HAVE_LIBC_MACHINE_M68HC11_TRUE@am__append_93 = libc/machine/m68hc11/setjmp.S
+@HAVE_LIBC_MACHINE_M68K_TRUE@am__append_94 = libc/machine/m68k/setjmp.S libc/machine/m68k/strcpy.c libc/machine/m68k/strlen.c libc/machine/m68k/memcpy.S libc/machine/m68k/memset.S
+@HAVE_LIBC_MACHINE_M88K_TRUE@am__append_95 = libc/machine/m88k/setjmp.S
+@HAVE_LIBC_MACHINE_MEP_TRUE@am__append_96 = libc/machine/mep/setjmp.S
+@HAVE_LIBC_MACHINE_MICROBLAZE_TRUE@am__append_97 = libc/machine/microblaze/strlen.c libc/machine/microblaze/strcmp.c libc/machine/microblaze/strcpy.c libc/machine/microblaze/setjmp.S libc/machine/microblaze/longjmp.S
+@HAVE_LIBC_MACHINE_MIPS_TRUE@am__append_98 = libc/machine/mips/setjmp.S libc/machine/mips/strlen.c libc/machine/mips/strcmp.S libc/machine/mips/strncpy.c libc/machine/mips/memset.S libc/machine/mips/memcpy.S
+@HAVE_LIBC_MACHINE_MN10200_TRUE@am__append_99 = libc/machine/mn10200/setjmp.S
+@HAVE_LIBC_MACHINE_MN10300_TRUE@am__append_100 = \
 @HAVE_LIBC_MACHINE_MN10300_TRUE@	libc/machine/mn10300/setjmp.S libc/machine/mn10300/memchr.S libc/machine/mn10300/memcmp.S libc/machine/mn10300/memcpy.S libc/machine/mn10300/memset.S libc/machine/mn10300/strchr.S \
 @HAVE_LIBC_MACHINE_MN10300_TRUE@	libc/machine/mn10300/strcmp.S libc/machine/mn10300/strcpy.S libc/machine/mn10300/strlen.S
 
-@HAVE_LIBC_MACHINE_MOXIE_TRUE@am__append_100 = libc/machine/moxie/setjmp.S
-@HAVE_LIBC_MACHINE_MSP430_TRUE@am__append_101 = libc/machine/msp430/setjmp.S
-@HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@am__append_102 = libc/machine/msp430/tiny-puts.c libc/machine/msp430/tiny-printf.c
-@HAVE_LIBC_MACHINE_MT_TRUE@am__append_103 = libc/machine/mt/setjmp.S
-@HAVE_LIBC_MACHINE_NDS32_TRUE@am__append_104 = \
+@HAVE_LIBC_MACHINE_MOXIE_TRUE@am__append_101 = libc/machine/moxie/setjmp.S
+@HAVE_LIBC_MACHINE_MSP430_TRUE@am__append_102 = libc/machine/msp430/setjmp.S
+@HAVE_LIBC_MACHINE_MSP430_TRUE@@NEWLIB_NANO_FORMATTED_IO_TRUE@am__append_103 = libc/machine/msp430/tiny-puts.c libc/machine/msp430/tiny-printf.c
+@HAVE_LIBC_MACHINE_MT_TRUE@am__append_104 = libc/machine/mt/setjmp.S
+@HAVE_LIBC_MACHINE_NDS32_TRUE@am__append_105 = \
 @HAVE_LIBC_MACHINE_NDS32_TRUE@	libc/machine/nds32/abort.c \
 @HAVE_LIBC_MACHINE_NDS32_TRUE@	libc/machine/nds32/setjmp.S \
 @HAVE_LIBC_MACHINE_NDS32_TRUE@	libc/machine/nds32/strcmp.S \
 @HAVE_LIBC_MACHINE_NDS32_TRUE@	libc/machine/nds32/strcpy.S
 
-@HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@am__append_105 = libc/machine/nds32/memcpy.S libc/machine/nds32/memset.S
-@HAVE_LIBC_MACHINE_NECV70_TRUE@am__append_106 = libc/machine/necv70/fastmath.S libc/machine/necv70/setjmp.S
-@HAVE_LIBC_MACHINE_NIOS2_TRUE@am__append_107 = libc/machine/nios2/setjmp.s
-@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__append_108 = \
+@HAVE_LIBC_MACHINE_NDS32_TRUE@@IS_NDS32_ISA_V3M_FALSE@am__append_106 = libc/machine/nds32/memcpy.S libc/machine/nds32/memset.S
+@HAVE_LIBC_MACHINE_NECV70_TRUE@am__append_107 = libc/machine/necv70/fastmath.S libc/machine/necv70/setjmp.S
+@HAVE_LIBC_MACHINE_NIOS2_TRUE@am__append_108 = libc/machine/nios2/setjmp.s
+@HAVE_LIBC_MACHINE_NVPTX_TRUE@am__append_109 = \
 @HAVE_LIBC_MACHINE_NVPTX_TRUE@	libc/machine/nvptx/_exit.c \
 @HAVE_LIBC_MACHINE_NVPTX_TRUE@	libc/machine/nvptx/calloc.c libc/machine/nvptx/callocr.c libc/machine/nvptx/malloc.c libc/machine/nvptx/mallocr.c libc/machine/nvptx/realloc.c libc/machine/nvptx/reallocr.c \
 @HAVE_LIBC_MACHINE_NVPTX_TRUE@	libc/machine/nvptx/free.c libc/machine/nvptx/write.c libc/machine/nvptx/assert.c libc/machine/nvptx/puts.c libc/machine/nvptx/putchar.c libc/machine/nvptx/printf.c libc/machine/nvptx/abort.c \
 @HAVE_LIBC_MACHINE_NVPTX_TRUE@	libc/machine/nvptx/misc.c libc/machine/nvptx/clock.c
 
-@HAVE_LIBC_MACHINE_OR1K_TRUE@am__append_109 = libc/machine/or1k/setjmp.S
-@HAVE_LIBC_MACHINE_POWERPC_TRUE@am__append_110 = libc/machine/powerpc/setjmp.S
-@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@am__append_111 = \
+@HAVE_LIBC_MACHINE_OR1K_TRUE@am__append_110 = libc/machine/or1k/setjmp.S
+@HAVE_LIBC_MACHINE_POWERPC_TRUE@am__append_111 = libc/machine/powerpc/setjmp.S
+@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@am__append_112 = \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@	libc/machine/powerpc/vfprintf.c \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@	libc/machine/powerpc/vfscanf.c \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@	libc/machine/powerpc/vec_malloc.c \
@@ -790,7 +791,7 @@ check_PROGRAMS =
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@	libc/machine/powerpc/vec_callocr.c \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_ALTIVEC_TRUE@	libc/machine/powerpc/vec_reallocr.c
 
-@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@am__append_112 = \
+@HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@am__append_113 = \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@	libc/machine/powerpc/atosfix16.c \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@	libc/machine/powerpc/atosfix32.c \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@	libc/machine/powerpc/atosfix64.c \
@@ -808,21 +809,21 @@ check_PROGRAMS =
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@	libc/machine/powerpc/vfprintf.c \
 @HAVE_LIBC_MACHINE_POWERPC_TRUE@@HAVE_POWERPC_SPE_TRUE@	libc/machine/powerpc/vfscanf.c
 
-@HAVE_LIBC_MACHINE_PRU_TRUE@am__append_113 = libc/machine/pru/setjmp.s
-@HAVE_LIBC_MACHINE_RISCV_TRUE@am__append_114 = \
+@HAVE_LIBC_MACHINE_PRU_TRUE@am__append_114 = libc/machine/pru/setjmp.s
+@HAVE_LIBC_MACHINE_RISCV_TRUE@am__append_115 = \
 @HAVE_LIBC_MACHINE_RISCV_TRUE@	libc/machine/riscv/memmove.S libc/machine/riscv/memmove-stub.c libc/machine/riscv/memset.S libc/machine/riscv/memcpy-asm.S libc/machine/riscv/memcpy.c libc/machine/riscv/strlen.c \
 @HAVE_LIBC_MACHINE_RISCV_TRUE@	libc/machine/riscv/strcpy.c libc/machine/riscv/strcmp.S libc/machine/riscv/setjmp.S libc/machine/riscv/ieeefp.c libc/machine/riscv/ffs.c
 
-@HAVE_LIBC_MACHINE_RL78_TRUE@am__append_115 = libc/machine/rl78/setjmp.S
-@HAVE_LIBC_MACHINE_RX_TRUE@am__append_116 = \
+@HAVE_LIBC_MACHINE_RL78_TRUE@am__append_116 = libc/machine/rl78/setjmp.S
+@HAVE_LIBC_MACHINE_RX_TRUE@am__append_117 = \
 @HAVE_LIBC_MACHINE_RX_TRUE@	libc/machine/rx/setjmp.S \
 @HAVE_LIBC_MACHINE_RX_TRUE@	libc/machine/rx/strncmp.S libc/machine/rx/strcmp.S libc/machine/rx/strncpy.S libc/machine/rx/strcpy.S libc/machine/rx/strlen.S libc/machine/rx/strcat.S libc/machine/rx/strncat.S \
 @HAVE_LIBC_MACHINE_RX_TRUE@	libc/machine/rx/memset.S libc/machine/rx/mempcpy.S libc/machine/rx/memcpy.S libc/machine/rx/memmove.S libc/machine/rx/memchr.S
 
-@HAVE_LIBC_MACHINE_SH_TRUE@am__append_117 = libc/machine/sh/memcpy.S libc/machine/sh/memset.S libc/machine/sh/setjmp.S libc/machine/sh/strcpy.S libc/machine/sh/strlen.S libc/machine/sh/strcmp.S
-@HAVE_LIBC_MACHINE_SH_TRUE@@SH64_TRUE@am__append_118 = libc/machine/sh/strncpy.S
-@HAVE_LIBC_MACHINE_SPARC_TRUE@am__append_119 = libc/machine/sparc/scan.c libc/machine/sparc/shuffle.c libc/machine/sparc/setjmp.S
-@HAVE_LIBC_MACHINE_SPU_TRUE@am__append_120 = \
+@HAVE_LIBC_MACHINE_SH_TRUE@am__append_118 = libc/machine/sh/memcpy.S libc/machine/sh/memset.S libc/machine/sh/setjmp.S libc/machine/sh/strcpy.S libc/machine/sh/strlen.S libc/machine/sh/strcmp.S
+@HAVE_LIBC_MACHINE_SH_TRUE@@SH64_TRUE@am__append_119 = libc/machine/sh/strncpy.S
+@HAVE_LIBC_MACHINE_SPARC_TRUE@am__append_120 = libc/machine/sparc/scan.c libc/machine/sparc/shuffle.c libc/machine/sparc/setjmp.S
+@HAVE_LIBC_MACHINE_SPU_TRUE@am__append_121 = \
 @HAVE_LIBC_MACHINE_SPU_TRUE@	libc/machine/spu/setjmp.S libc/machine/spu/assert.c libc/machine/spu/clearerr.c libc/machine/spu/creat.c libc/machine/spu/fclose.c libc/machine/spu/feof.c \
 @HAVE_LIBC_MACHINE_SPU_TRUE@	libc/machine/spu/ferror.c libc/machine/spu/fflush.c libc/machine/spu/fgetc.c libc/machine/spu/fgetpos.c libc/machine/spu/fgets.c libc/machine/spu/fileno.c libc/machine/spu/fiprintf.S \
 @HAVE_LIBC_MACHINE_SPU_TRUE@	libc/machine/spu/fiscanf.S libc/machine/spu/fopen.c libc/machine/spu/fprintf.S libc/machine/spu/fputc.c libc/machine/spu/fputs.c libc/machine/spu/fread.c libc/machine/spu/freopen.c \
@@ -840,7 +841,7 @@ check_PROGRAMS =
 @HAVE_LIBC_MACHINE_SPU_TRUE@	libc/machine/spu/spu_timer_slih.c libc/machine/spu/spu_timer_slih_reg.c libc/machine/spu/spu_timer_svcs.c \
 @HAVE_LIBC_MACHINE_SPU_TRUE@	libc/machine/spu/spu_timer_stop.c libc/machine/spu/spu_timer_free.c libc/machine/spu/spu_timebase.c libc/machine/spu/fdopen.c
 
-@HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@am__append_121 = \
+@HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@am__append_122 = \
 @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@	libc/machine/spu/calloc_ea.c libc/machine/spu/free_ea.c libc/machine/spu/malloc_ea.c libc/machine/spu/memchr_ea.c libc/machine/spu/memcmp_ea.c \
 @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@	libc/machine/spu/memcpy_ea.c libc/machine/spu/memmove_ea.c libc/machine/spu/memset_ea.c libc/machine/spu/mmap_ea.c libc/machine/spu/mremap_ea.c libc/machine/spu/msync_ea.c \
 @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@	libc/machine/spu/munmap_ea.c libc/machine/spu/posix_memalign_ea.c libc/machine/spu/realloc_ea.c libc/machine/spu/strcat_ea.c libc/machine/spu/strchr_ea.c \
@@ -849,18 +850,19 @@ check_PROGRAMS =
 @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@	libc/machine/spu/pread_ea.c libc/machine/spu/readv_ea.c libc/machine/spu/write_ea.c libc/machine/spu/pwrite_ea.c libc/machine/spu/writev_ea.c libc/machine/spu/spu-mcount.S \
 @HAVE_LIBC_MACHINE_SPU_TRUE@@HAVE_SPU_EA_TRUE@	libc/machine/spu/spu-gmon.c
 
-@HAVE_LIBC_MACHINE_TIC4X_TRUE@am__append_122 = libc/machine/tic4x/setjmp.S
-@HAVE_LIBC_MACHINE_TIC6X_TRUE@am__append_123 = libc/machine/tic6x/setjmp.S
-@HAVE_LIBC_MACHINE_TIC80_TRUE@am__append_124 = libc/machine/tic80/setjmp.S
-@HAVE_LIBC_MACHINE_V850_TRUE@am__append_125 = libc/machine/v850/setjmp.S
-@HAVE_LIBC_MACHINE_VISIUM_TRUE@am__append_126 = libc/machine/visium/memcpy.c libc/machine/visium/memset.c libc/machine/visium/memmove.c libc/machine/visium/setjmp.S
-@HAVE_LIBC_MACHINE_W65_TRUE@am__append_127 = \
+@HAVE_LIBC_MACHINE_SPU_TRUE@am__append_123 = libc/machine/spu/constants-errno.tex
+@HAVE_LIBC_MACHINE_TIC4X_TRUE@am__append_124 = libc/machine/tic4x/setjmp.S
+@HAVE_LIBC_MACHINE_TIC6X_TRUE@am__append_125 = libc/machine/tic6x/setjmp.S
+@HAVE_LIBC_MACHINE_TIC80_TRUE@am__append_126 = libc/machine/tic80/setjmp.S
+@HAVE_LIBC_MACHINE_V850_TRUE@am__append_127 = libc/machine/v850/setjmp.S
+@HAVE_LIBC_MACHINE_VISIUM_TRUE@am__append_128 = libc/machine/visium/memcpy.c libc/machine/visium/memset.c libc/machine/visium/memmove.c libc/machine/visium/setjmp.S
+@HAVE_LIBC_MACHINE_W65_TRUE@am__append_129 = \
 @HAVE_LIBC_MACHINE_W65_TRUE@	libc/machine/w65/udivhi3.S libc/machine/w65/umodhi3.S libc/machine/w65/smulhi3.S libc/machine/w65/lshrhi.S libc/machine/w65/sdivhi3.S libc/machine/w65/mulsi3.c \
 @HAVE_LIBC_MACHINE_W65_TRUE@	libc/machine/w65/divsi3.c libc/machine/w65/cmpsi.c
 
-@HAVE_LIBC_MACHINE_X86_64_TRUE@am__append_128 = libc/machine/x86_64/setjmp.S libc/machine/x86_64/memcpy.S libc/machine/x86_64/memset.S
-@HAVE_LIBC_MACHINE_XC16X_TRUE@am__append_129 = libc/machine/xc16x/setjmp.S libc/machine/xc16x/puts.c libc/machine/xc16x/putchar.c
-@HAVE_LIBC_MACHINE_XSTORMY16_TRUE@am__append_130 = \
+@HAVE_LIBC_MACHINE_X86_64_TRUE@am__append_130 = libc/machine/x86_64/setjmp.S libc/machine/x86_64/memcpy.S libc/machine/x86_64/memset.S
+@HAVE_LIBC_MACHINE_XC16X_TRUE@am__append_131 = libc/machine/xc16x/setjmp.S libc/machine/xc16x/puts.c libc/machine/xc16x/putchar.c
+@HAVE_LIBC_MACHINE_XSTORMY16_TRUE@am__append_132 = \
 @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@	libc/machine/xstormy16/setjmp.S \
 @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@	libc/machine/xstormy16/calloc.c \
 @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@	libc/machine/xstormy16/callocr.c \
@@ -875,13 +877,13 @@ check_PROGRAMS =
 @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@	libc/machine/xstormy16/reallocr.c \
 @HAVE_LIBC_MACHINE_XSTORMY16_TRUE@	libc/machine/xstormy16/valloc.c
 
-@HAVE_LIBC_MACHINE_XTENSA_TRUE@am__append_131 = \
+@HAVE_LIBC_MACHINE_XTENSA_TRUE@am__append_133 = \
 @HAVE_LIBC_MACHINE_XTENSA_TRUE@	libc/machine/xtensa/memcpy.S libc/machine/xtensa/memset.S libc/machine/xtensa/setjmp.S libc/machine/xtensa/strcmp.S libc/machine/xtensa/strcpy.S \
 @HAVE_LIBC_MACHINE_XTENSA_TRUE@	libc/machine/xtensa/strlen.S libc/machine/xtensa/strncpy.S
 
-@HAVE_LIBC_MACHINE_Z8K_TRUE@am__append_132 = libc/machine/z8k/setjmp.S libc/machine/z8k/memset.S libc/machine/z8k/memcpy.S libc/machine/z8k/memmove.S libc/machine/z8k/memcmp.S
-@NEWLIB_HW_FP_TRUE@am__append_133 = $(libm_mathfp_src) $(libm_mathfp_fsrc)
-@NEWLIB_HW_FP_TRUE@am__append_134 = \
+@HAVE_LIBC_MACHINE_Z8K_TRUE@am__append_134 = libc/machine/z8k/setjmp.S libc/machine/z8k/memset.S libc/machine/z8k/memcpy.S libc/machine/z8k/memmove.S libc/machine/z8k/memcmp.S
+@NEWLIB_HW_FP_TRUE@am__append_135 = $(libm_mathfp_src) $(libm_mathfp_fsrc)
+@NEWLIB_HW_FP_TRUE@am__append_136 = \
 @NEWLIB_HW_FP_TRUE@	libm/mathfp/e_acosh.def \
 @NEWLIB_HW_FP_TRUE@	libm/mathfp/e_atanh.def \
 @NEWLIB_HW_FP_TRUE@	libm/mathfp/e_hypot.def \
@@ -911,9 +913,9 @@ check_PROGRAMS =
 @NEWLIB_HW_FP_TRUE@	libm/mathfp/s_tanh.def \
 @NEWLIB_HW_FP_TRUE@	libm/mathfp/w_jn.def
 
-@NEWLIB_HW_FP_TRUE@am__append_135 = libm/mathfp/mathfp.tex
-@NEWLIB_HW_FP_FALSE@am__append_136 = $(libm_math_src) $(libm_math_fsrc) $(libm_math_lsrc)
-@NEWLIB_HW_FP_FALSE@am__append_137 = \
+@NEWLIB_HW_FP_TRUE@am__append_137 = libm/mathfp/mathfp.tex
+@NEWLIB_HW_FP_FALSE@am__append_138 = $(libm_math_src) $(libm_math_fsrc) $(libm_math_lsrc)
+@NEWLIB_HW_FP_FALSE@am__append_139 = \
 @NEWLIB_HW_FP_FALSE@	libm/math/w_acos.def libm/math/w_acosh.def libm/math/w_asin.def libm/math/s_asinh.def \
 @NEWLIB_HW_FP_FALSE@	libm/math/s_atan.def libm/math/w_atan2.def libm/math/w_atanh.def libm/math/w_j0.def \
 @NEWLIB_HW_FP_FALSE@	libm/math/w_cosh.def libm/math/s_erf.def libm/math/w_exp.def libm/math/w_exp2.def \
@@ -923,41 +925,41 @@ check_PROGRAMS =
 @NEWLIB_HW_FP_FALSE@	libm/math/w_pow.def libm/math/w_remainder.def libm/math/s_sin.def libm/math/w_sinh.def \
 @NEWLIB_HW_FP_FALSE@	libm/math/w_sqrt.def libm/math/s_tan.def libm/math/s_tanh.def
 
-@NEWLIB_HW_FP_FALSE@am__append_138 = libm/math/math.tex
-@HAVE_LONG_DOUBLE_TRUE@am__append_139 = $(libm_common_lsrc)
-@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_140 = $(libm_ld_lsrc)
-@HAVE_FPMATH_H_TRUE@am__append_141 = 
-@HAVE_FPMATH_H_TRUE@am__append_142 = 
-@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_143 = $(libm_machine_aarch64_src)
-@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_144 = $(libm_ld128_lsrc)
-@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_145 = 
-@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_146 = 
-@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_147 = $(libm_machine_amdgcn_src)
-@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_148 = $(libm_machine_arm_src)
-@HAVE_LIBM_MACHINE_I386_TRUE@am__append_149 = $(libm_machine_i386_src)
-@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_150 = $(libm_ld80_lsrc)
-@HAVE_LIBM_MACHINE_I386_TRUE@am__append_151 = 
-@HAVE_LIBM_MACHINE_I386_TRUE@am__append_152 = 
-@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_153 = $(libm_machine_mips_src)
-@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_154 = libm/machine/nds32/wf_sqrt.S
-@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_155 = libm/machine/nds32/w_sqrt.S
-@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_156 = $(libm_machine_nds32_src)
-@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_157 = $(libm_machine_powerpc_src)
-@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_158 = $(libm_machine_pru_src)
-@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_159 = $(libm_machine_sparc_src)
-@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_160 = $(libm_machine_spu_src)
-@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_161 = $(libm_machine_riscv_src)
-@HAVE_LIBM_MACHINE_RISCV_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_162 = $(libm_ld128_lsrc)
-@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_163 = 
-@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_164 = 
-@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_165 = $(libm_machine_x86_64_src)
-@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_166 = $(libm_ld80_lsrc)
-@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_167 = 
-@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_168 = 
-@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__append_169 = \
+@NEWLIB_HW_FP_FALSE@am__append_140 = libm/math/math.tex
+@HAVE_LONG_DOUBLE_TRUE@am__append_141 = $(libm_common_lsrc)
+@HAVE_FPMATH_H_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_142 = $(libm_ld_lsrc)
+@HAVE_FPMATH_H_TRUE@am__append_143 = 
+@HAVE_FPMATH_H_TRUE@am__append_144 = 
+@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_145 = $(libm_machine_aarch64_src)
+@HAVE_LIBM_MACHINE_AARCH64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_146 = $(libm_ld128_lsrc)
+@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_147 = 
+@HAVE_LIBM_MACHINE_AARCH64_TRUE@am__append_148 = 
+@HAVE_LIBM_MACHINE_AMDGCN_TRUE@am__append_149 = $(libm_machine_amdgcn_src)
+@HAVE_LIBM_MACHINE_ARM_TRUE@am__append_150 = $(libm_machine_arm_src)
+@HAVE_LIBM_MACHINE_I386_TRUE@am__append_151 = $(libm_machine_i386_src)
+@HAVE_LIBM_MACHINE_I386_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_152 = $(libm_ld80_lsrc)
+@HAVE_LIBM_MACHINE_I386_TRUE@am__append_153 = 
+@HAVE_LIBM_MACHINE_I386_TRUE@am__append_154 = 
+@HAVE_LIBM_MACHINE_MIPS_TRUE@am__append_155 = $(libm_machine_mips_src)
+@HAS_NDS32_FPU_SP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_156 = libm/machine/nds32/wf_sqrt.S
+@HAS_NDS32_FPU_DP_TRUE@@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_157 = libm/machine/nds32/w_sqrt.S
+@HAVE_LIBM_MACHINE_NDS32_TRUE@am__append_158 = $(libm_machine_nds32_src)
+@HAVE_LIBM_MACHINE_POWERPC_TRUE@am__append_159 = $(libm_machine_powerpc_src)
+@HAVE_LIBM_MACHINE_PRU_TRUE@am__append_160 = $(libm_machine_pru_src)
+@HAVE_LIBM_MACHINE_SPARC_TRUE@am__append_161 = $(libm_machine_sparc_src)
+@HAVE_LIBM_MACHINE_SPU_TRUE@am__append_162 = $(libm_machine_spu_src)
+@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_163 = $(libm_machine_riscv_src)
+@HAVE_LIBM_MACHINE_RISCV_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_164 = $(libm_ld128_lsrc)
+@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_165 = 
+@HAVE_LIBM_MACHINE_RISCV_TRUE@am__append_166 = 
+@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_167 = $(libm_machine_x86_64_src)
+@HAVE_LIBM_MACHINE_X86_64_TRUE@@HAVE_LONG_DOUBLE_TRUE@am__append_168 = $(libm_ld80_lsrc)
+@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_169 = 
+@HAVE_LIBM_MACHINE_X86_64_TRUE@am__append_170 = 
+@HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@am__append_171 = \
 @HAVE_LIBM_MACHINE_XTENSA_TRUE@@XTENSA_XCHAL_HAVE_FP_SQRT_TRUE@	libm/machine/xtensa/ef_sqrt.c
 
-@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__append_170 = $(libm_machine_xtensa_src)
+@HAVE_LIBM_MACHINE_XTENSA_TRUE@am__append_172 = $(libm_machine_xtensa_src)
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
@@ -4189,41 +4191,41 @@ libc_a_SOURCES = $(am__append_5) libc/stdlib/__adjust.c \
 	$(am__append_62) $(am__append_63) $(am__append_64) \
 	$(am__append_65) $(am__append_66) $(am__append_67) \
 	$(am__append_68) $(am__append_69) $(am__append_70) \
-	$(am__append_71) $(am__append_72) $(am__append_74) \
-	$(am__append_75) $(am__append_76) $(am__append_77) \
-	$(am__append_78) $(am__append_79) $(am__append_80) \
-	$(am__append_81) $(am__append_82) $(am__append_83) \
-	$(am__append_84) $(am__append_85) $(am__append_86) \
-	$(am__append_87) $(am__append_88) $(am__append_89) \
-	$(am__append_90) $(am__append_91) $(am__append_92) \
-	$(am__append_93) $(am__append_94) $(am__append_95) \
-	$(am__append_96) $(am__append_97) $(am__append_98) \
-	$(am__append_99) $(am__append_100) $(am__append_101) \
-	$(am__append_102) $(am__append_103) $(am__append_104) \
-	$(am__append_105) $(am__append_106) $(am__append_107) \
-	$(am__append_108) $(am__append_109) $(am__append_110) \
-	$(am__append_111) $(am__append_112) $(am__append_113) \
-	$(am__append_114) $(am__append_115) $(am__append_116) \
-	$(am__append_117) $(am__append_118) $(am__append_119) \
-	$(am__append_120) $(am__append_121) $(am__append_122) \
-	$(am__append_123) $(am__append_124) $(am__append_125) \
-	$(am__append_126) $(am__append_127) $(am__append_128) \
-	$(am__append_129) $(am__append_130) $(am__append_131) \
-	$(am__append_132)
+	$(am__append_71) $(am__append_72) $(am__append_75) \
+	$(am__append_76) $(am__append_77) $(am__append_78) \
+	$(am__append_79) $(am__append_80) $(am__append_81) \
+	$(am__append_82) $(am__append_83) $(am__append_84) \
+	$(am__append_85) $(am__append_86) $(am__append_87) \
+	$(am__append_88) $(am__append_89) $(am__append_90) \
+	$(am__append_91) $(am__append_92) $(am__append_93) \
+	$(am__append_94) $(am__append_95) $(am__append_96) \
+	$(am__append_97) $(am__append_98) $(am__append_99) \
+	$(am__append_100) $(am__append_101) $(am__append_102) \
+	$(am__append_103) $(am__append_104) $(am__append_105) \
+	$(am__append_106) $(am__append_107) $(am__append_108) \
+	$(am__append_109) $(am__append_110) $(am__append_111) \
+	$(am__append_112) $(am__append_113) $(am__append_114) \
+	$(am__append_115) $(am__append_116) $(am__append_117) \
+	$(am__append_118) $(am__append_119) $(am__append_120) \
+	$(am__append_121) $(am__append_122) $(am__append_124) \
+	$(am__append_125) $(am__append_126) $(am__append_127) \
+	$(am__append_128) $(am__append_129) $(am__append_130) \
+	$(am__append_131) $(am__append_132) $(am__append_133) \
+	$(am__append_134)
 libc_a_CFLAGS = $(AM_CFLAGS) $(libc_a_CFLAGS_$(subst /,_,$(@D))) $(libc_a_CFLAGS_$(subst /,_,$(@D)_$(<F)))
 libc_a_CCASFLAGS = $(AM_CCASFLAGS) $(libc_a_CCASFLAGS_$(subst /,_,$(@D))) $(libc_a_CCASFLAGS_$(subst /,_,$(@D)_$(<F)))
 libc_a_CPPFLAGS = $(AM_CPPFLAGS) $(libc_a_CPPFLAGS_$(subst /,_,$(@D))) $(libc_a_CPPFLAGS_$(subst /,_,$(@D)_$(<F)))
 libc_a_DEPENDENCIES = stamp-libc-math-objects
-libm_a_SOURCES = $(am__append_133) $(am__append_136) \
-	$(libm_common_src) $(libm_common_fsrc) $(am__append_139) \
-	$(am__append_140) $(libm_complex_src) $(libm_complex_fsrc) \
-	$(libm_complex_lsrc) $(libm_fenv_src) $(am__append_143) \
-	$(am__append_144) $(am__append_147) $(am__append_148) \
-	$(am__append_149) $(am__append_150) $(am__append_153) \
-	$(am__append_156) $(am__append_157) $(am__append_158) \
-	$(am__append_159) $(am__append_160) $(am__append_161) \
-	$(am__append_162) $(am__append_165) $(am__append_166) \
-	$(am__append_170)
+libm_a_SOURCES = $(am__append_135) $(am__append_138) \
+	$(libm_common_src) $(libm_common_fsrc) $(am__append_141) \
+	$(am__append_142) $(libm_complex_src) $(libm_complex_fsrc) \
+	$(libm_complex_lsrc) $(libm_fenv_src) $(am__append_145) \
+	$(am__append_146) $(am__append_149) $(am__append_150) \
+	$(am__append_151) $(am__append_152) $(am__append_155) \
+	$(am__append_158) $(am__append_159) $(am__append_160) \
+	$(am__append_161) $(am__append_162) $(am__append_163) \
+	$(am__append_164) $(am__append_167) $(am__append_168) \
+	$(am__append_172)
 libm_a_CFLAGS = $(AM_CFLAGS) $(libm_a_CFLAGS_$(subst /,_,$(@D))) $(libm_a_CFLAGS_$(subst /,_,$(@D)_$(<F)))
 libm_a_CCASFLAGS = $(AM_CCASFLAGS) $(libm_a_CCASFLAGS_$(subst /,_,$(@D))) $(libm_a_CCASFLAGS_$(subst /,_,$(@D)_$(<F)))
 libm_a_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/libm/common $(libm_a_CPPFLAGS_$(subst /,_,$(@D))) $(libm_a_CPPFLAGS_$(subst /,_,$(@D)_$(<F)))
@@ -4261,7 +4263,8 @@ XMLTO_MAN_QUIET = $(XMLTO_MAN_QUIET_$(V))
 # name (e.g. "stdio.xml") matches a source file name (e.g. "stdio.c").  We've
 # been flattening chapters into the main library dir (e.g. libc/) to avoid that.
 @HAVE_DOC_TRUE@TEXI2DOCBOOK = $(top_srcdir)/doc/chapter-texi2docbook.py
-libc_libc_TEXINFOS = libc/targetdep.tex $(LIBC_CHEWOUT_FILES)
+libc_libc_TEXINFOS = libc/targetdep.tex $(LIBC_CHEWOUT_FILES) \
+	libc/errno/constants.tex $(am__append_74) $(am__append_123)
 LIBC_CHEWOUT_FILES = libc/stdlib/_Exit.def libc/stdlib/a64l.def \
 	libc/stdlib/abort.def libc/stdlib/abs.def \
 	libc/stdlib/assert.def libc/stdlib/atexit.def \
@@ -4656,7 +4659,7 @@ libc_ssp_ELIX_SOURCES = libc/ssp/chk_fail.c libc/ssp/stack_protector.c \
 @HAVE_LIBC_MACHINE_XTENSA_TRUE@@XTENSA_ESP32_PSRAM_CACHE_FIX_TRUE@	-DXTENSA_ESP32_PSRAM_CACHE_FIX
 
 libm_libm_TEXINFOS = libm/targetdep.tex $(LIBM_CHEWOUT_FILES)
-LIBM_CHEWOUT_FILES = $(am__append_134) $(am__append_137) \
+LIBM_CHEWOUT_FILES = $(am__append_136) $(am__append_139) \
 	libm/common/s_cbrt.def libm/common/s_copysign.def \
 	libm/common/s_exp10.def libm/common/s_expm1.def \
 	libm/common/s_ilogb.def libm/common/s_infinity.def \
@@ -4671,7 +4674,7 @@ LIBM_CHEWOUT_FILES = $(am__append_134) $(am__append_137) \
 	libm/common/s_remquo.def libm/common/s_rint.def \
 	libm/common/s_round.def libm/common/s_signbit.def \
 	libm/common/s_trunc.def libm/common/isgreater.def \
-	$(am__append_141) libm/complex/cabs.def libm/complex/cacos.def \
+	$(am__append_143) libm/complex/cabs.def libm/complex/cacos.def \
 	libm/complex/cacosh.def libm/complex/carg.def \
 	libm/complex/casin.def libm/complex/casinh.def \
 	libm/complex/catan.def libm/complex/catanh.def \
@@ -4688,11 +4691,11 @@ LIBM_CHEWOUT_FILES = $(am__append_134) $(am__append_137) \
 	libm/fenv/feraiseexcept.def libm/fenv/fesetenv.def \
 	libm/fenv/fesetexceptflag.def libm/fenv/fesetround.def \
 	libm/fenv/fetestexcept.def libm/fenv/feupdateenv.def \
-	$(am__append_145) $(am__append_151) $(am__append_163) \
-	$(am__append_167)
-LIBM_CHAPTERS = $(am__append_135) $(am__append_138) $(am__append_142) \
-	libm/complex/complex.tex libm/fenv/fenv.tex $(am__append_146) \
-	$(am__append_152) $(am__append_164) $(am__append_168)
+	$(am__append_147) $(am__append_153) $(am__append_165) \
+	$(am__append_169)
+LIBM_CHAPTERS = $(am__append_137) $(am__append_140) $(am__append_144) \
+	libm/complex/complex.tex libm/fenv/fenv.tex $(am__append_148) \
+	$(am__append_154) $(am__append_166) $(am__append_170)
 LIBM_DOCBOOK_OUT_FILES = $(LIBM_CHEWOUT_FILES:.def=.xml)
 @NEWLIB_HW_FP_TRUE@libm_mathfp_src = \
 @NEWLIB_HW_FP_TRUE@	libm/mathfp/s_acos.c libm/mathfp/s_frexp.c libm/mathfp/s_mathcnst.c \
@@ -5226,8 +5229,8 @@ libm_test_test_LDADD = $(CRT0) libm.a libc.a
 # fenv.c cannot be compiled as mips16 since it uses the cfc1 instruction.
 @HAVE_LIBM_MACHINE_MIPS_TRUE@libm_a_CFLAGS_libm_machine_mips_fenv.c = -mno-mips16
 @HAVE_LIBM_MACHINE_NDS32_TRUE@libm_machine_nds32_src =  \
-@HAVE_LIBM_MACHINE_NDS32_TRUE@	$(am__append_154) \
-@HAVE_LIBM_MACHINE_NDS32_TRUE@	$(am__append_155)
+@HAVE_LIBM_MACHINE_NDS32_TRUE@	$(am__append_156) \
+@HAVE_LIBM_MACHINE_NDS32_TRUE@	$(am__append_157)
 @HAVE_LIBM_MACHINE_POWERPC_TRUE@libm_machine_powerpc_src = \
 @HAVE_LIBM_MACHINE_POWERPC_TRUE@	libm/machine/powerpc/feclearexcept.c libm/machine/powerpc/fegetenv.c libm/machine/powerpc/fegetexceptflag.c \
 @HAVE_LIBM_MACHINE_POWERPC_TRUE@	libm/machine/powerpc/fegetround.c libm/machine/powerpc/feholdexcept.c libm/machine/powerpc/fenv.c libm/machine/powerpc/feraiseexcept.c libm/machine/powerpc/fesetenv.c \
@@ -5298,7 +5301,7 @@ libm_test_test_LDADD = $(CRT0) libm.a libc.a
 @HAVE_LIBM_MACHINE_XTENSA_TRUE@	libm/machine/xtensa/feraiseexcept.c \
 @HAVE_LIBM_MACHINE_XTENSA_TRUE@	libm/machine/xtensa/fetestexcept.c \
 @HAVE_LIBM_MACHINE_XTENSA_TRUE@	libm/machine/xtensa/feupdateenv.c \
-@HAVE_LIBM_MACHINE_XTENSA_TRUE@	$(am__append_169)
+@HAVE_LIBM_MACHINE_XTENSA_TRUE@	$(am__append_171)
 @HAVE_LIBM_MACHINE_XTENSA_TRUE@libm_a_CFLAGS_libm_machine_xtensa = -D_LIBM
 all: newlib.h _newlib_version.h
 	$(MAKE) $(AM_MAKEFLAGS) all-am
diff --git a/newlib/libc/errno/Makefile.inc b/newlib/libc/errno/Makefile.inc
index f06b8c5e8..243091e90 100644
--- a/newlib/libc/errno/Makefile.inc
+++ b/newlib/libc/errno/Makefile.inc
@@ -1 +1,4 @@
 libc_a_SOURCES += %D%/errno.c
+
+## NB: Not using LIBC_CHAPTERS because libc.texi includes this directly.
+libc_libc_TEXINFOS += %D%/constants.tex
diff --git a/newlib/libc/errno/constants.tex b/newlib/libc/errno/constants.tex
new file mode 100644
index 000000000..9b0f85f51
--- /dev/null
+++ b/newlib/libc/errno/constants.tex
@@ -0,0 +1,349 @@
+@c This file is machine generated by gennltvals.py.
+
+@subsection Sorted by name
+@multitable @columnfractions .2 .2
+@item @code{E2BIG}
+@tab @code{7}
+@item @code{EACCES}
+@tab @code{13}
+@item @code{EADDRINUSE}
+@tab @code{112}
+@item @code{EADDRNOTAVAIL}
+@tab @code{125}
+@item @code{EAFNOSUPPORT}
+@tab @code{106}
+@item @code{EAGAIN}
+@tab @code{11}
+@item @code{EALREADY}
+@tab @code{120}
+@item @code{EBADF}
+@tab @code{9}
+@item @code{EBADMSG}
+@tab @code{77}
+@item @code{EBUSY}
+@tab @code{16}
+@item @code{ECANCELED}
+@tab @code{140}
+@item @code{ECHILD}
+@tab @code{10}
+@item @code{ECONNABORTED}
+@tab @code{113}
+@item @code{ECONNREFUSED}
+@tab @code{111}
+@item @code{ECONNRESET}
+@tab @code{104}
+@item @code{EDEADLK}
+@tab @code{45}
+@item @code{EDESTADDRREQ}
+@tab @code{121}
+@item @code{EDOM}
+@tab @code{33}
+@item @code{EDQUOT}
+@tab @code{132}
+@item @code{EEXIST}
+@tab @code{17}
+@item @code{EFAULT}
+@tab @code{14}
+@item @code{EFBIG}
+@tab @code{27}
+@item @code{EFTYPE}
+@tab @code{79}
+@item @code{EHOSTDOWN}
+@tab @code{117}
+@item @code{EHOSTUNREACH}
+@tab @code{118}
+@item @code{EIDRM}
+@tab @code{36}
+@item @code{EILSEQ}
+@tab @code{138}
+@item @code{EINPROGRESS}
+@tab @code{119}
+@item @code{EINTR}
+@tab @code{4}
+@item @code{EINVAL}
+@tab @code{22}
+@item @code{EIO}
+@tab @code{5}
+@item @code{EISCONN}
+@tab @code{127}
+@item @code{EISDIR}
+@tab @code{21}
+@item @code{ELOOP}
+@tab @code{92}
+@item @code{EMFILE}
+@tab @code{24}
+@item @code{EMLINK}
+@tab @code{31}
+@item @code{EMSGSIZE}
+@tab @code{122}
+@item @code{EMULTIHOP}
+@tab @code{74}
+@item @code{ENAMETOOLONG}
+@tab @code{91}
+@item @code{ENETDOWN}
+@tab @code{115}
+@item @code{ENETRESET}
+@tab @code{126}
+@item @code{ENETUNREACH}
+@tab @code{114}
+@item @code{ENFILE}
+@tab @code{23}
+@item @code{ENOBUFS}
+@tab @code{105}
+@item @code{ENODATA}
+@tab @code{61}
+@item @code{ENODEV}
+@tab @code{19}
+@item @code{ENOENT}
+@tab @code{2}
+@item @code{ENOEXEC}
+@tab @code{8}
+@item @code{ENOLCK}
+@tab @code{46}
+@item @code{ENOLINK}
+@tab @code{67}
+@item @code{ENOMEM}
+@tab @code{12}
+@item @code{ENOMSG}
+@tab @code{35}
+@item @code{ENOPROTOOPT}
+@tab @code{109}
+@item @code{ENOSPC}
+@tab @code{28}
+@item @code{ENOSR}
+@tab @code{63}
+@item @code{ENOSTR}
+@tab @code{60}
+@item @code{ENOSYS}
+@tab @code{88}
+@item @code{ENOTCONN}
+@tab @code{128}
+@item @code{ENOTDIR}
+@tab @code{20}
+@item @code{ENOTEMPTY}
+@tab @code{90}
+@item @code{ENOTRECOVERABLE}
+@tab @code{141}
+@item @code{ENOTSOCK}
+@tab @code{108}
+@item @code{ENOTSUP}
+@tab @code{134}
+@item @code{ENOTTY}
+@tab @code{25}
+@item @code{ENXIO}
+@tab @code{6}
+@item @code{EOPNOTSUPP}
+@tab @code{95}
+@item @code{EOVERFLOW}
+@tab @code{139}
+@item @code{EOWNERDEAD}
+@tab @code{142}
+@item @code{EPERM}
+@tab @code{1}
+@item @code{EPFNOSUPPORT}
+@tab @code{96}
+@item @code{EPIPE}
+@tab @code{32}
+@item @code{EPROTO}
+@tab @code{71}
+@item @code{EPROTONOSUPPORT}
+@tab @code{123}
+@item @code{EPROTOTYPE}
+@tab @code{107}
+@item @code{ERANGE}
+@tab @code{34}
+@item @code{EROFS}
+@tab @code{30}
+@item @code{ESPIPE}
+@tab @code{29}
+@item @code{ESRCH}
+@tab @code{3}
+@item @code{ESTALE}
+@tab @code{133}
+@item @code{ETIME}
+@tab @code{62}
+@item @code{ETIMEDOUT}
+@tab @code{116}
+@item @code{ETOOMANYREFS}
+@tab @code{129}
+@item @code{ETXTBSY}
+@tab @code{26}
+@item @code{EWOULDBLOCK}
+@tab @code{11}
+@item @code{EXDEV}
+@tab @code{18}
+@end multitable
+
+@subsection Sorted by value
+@multitable @columnfractions .2 .2
+@item @code{EPERM}
+@tab @code{1}
+@item @code{ENOENT}
+@tab @code{2}
+@item @code{ESRCH}
+@tab @code{3}
+@item @code{EINTR}
+@tab @code{4}
+@item @code{EIO}
+@tab @code{5}
+@item @code{ENXIO}
+@tab @code{6}
+@item @code{E2BIG}
+@tab @code{7}
+@item @code{ENOEXEC}
+@tab @code{8}
+@item @code{EBADF}
+@tab @code{9}
+@item @code{ECHILD}
+@tab @code{10}
+@item @code{EAGAIN}
+@tab @code{11}
+@item @code{EWOULDBLOCK}
+@tab @code{11}
+@item @code{ENOMEM}
+@tab @code{12}
+@item @code{EACCES}
+@tab @code{13}
+@item @code{EFAULT}
+@tab @code{14}
+@item @code{EBUSY}
+@tab @code{16}
+@item @code{EEXIST}
+@tab @code{17}
+@item @code{EXDEV}
+@tab @code{18}
+@item @code{ENODEV}
+@tab @code{19}
+@item @code{ENOTDIR}
+@tab @code{20}
+@item @code{EISDIR}
+@tab @code{21}
+@item @code{EINVAL}
+@tab @code{22}
+@item @code{ENFILE}
+@tab @code{23}
+@item @code{EMFILE}
+@tab @code{24}
+@item @code{ENOTTY}
+@tab @code{25}
+@item @code{ETXTBSY}
+@tab @code{26}
+@item @code{EFBIG}
+@tab @code{27}
+@item @code{ENOSPC}
+@tab @code{28}
+@item @code{ESPIPE}
+@tab @code{29}
+@item @code{EROFS}
+@tab @code{30}
+@item @code{EMLINK}
+@tab @code{31}
+@item @code{EPIPE}
+@tab @code{32}
+@item @code{EDOM}
+@tab @code{33}
+@item @code{ERANGE}
+@tab @code{34}
+@item @code{ENOMSG}
+@tab @code{35}
+@item @code{EIDRM}
+@tab @code{36}
+@item @code{EDEADLK}
+@tab @code{45}
+@item @code{ENOLCK}
+@tab @code{46}
+@item @code{ENOSTR}
+@tab @code{60}
+@item @code{ENODATA}
+@tab @code{61}
+@item @code{ETIME}
+@tab @code{62}
+@item @code{ENOSR}
+@tab @code{63}
+@item @code{ENOLINK}
+@tab @code{67}
+@item @code{EPROTO}
+@tab @code{71}
+@item @code{EMULTIHOP}
+@tab @code{74}
+@item @code{EBADMSG}
+@tab @code{77}
+@item @code{EFTYPE}
+@tab @code{79}
+@item @code{ENOSYS}
+@tab @code{88}
+@item @code{ENOTEMPTY}
+@tab @code{90}
+@item @code{ENAMETOOLONG}
+@tab @code{91}
+@item @code{ELOOP}
+@tab @code{92}
+@item @code{EOPNOTSUPP}
+@tab @code{95}
+@item @code{EPFNOSUPPORT}
+@tab @code{96}
+@item @code{ECONNRESET}
+@tab @code{104}
+@item @code{ENOBUFS}
+@tab @code{105}
+@item @code{EAFNOSUPPORT}
+@tab @code{106}
+@item @code{EPROTOTYPE}
+@tab @code{107}
+@item @code{ENOTSOCK}
+@tab @code{108}
+@item @code{ENOPROTOOPT}
+@tab @code{109}
+@item @code{ECONNREFUSED}
+@tab @code{111}
+@item @code{EADDRINUSE}
+@tab @code{112}
+@item @code{ECONNABORTED}
+@tab @code{113}
+@item @code{ENETUNREACH}
+@tab @code{114}
+@item @code{ENETDOWN}
+@tab @code{115}
+@item @code{ETIMEDOUT}
+@tab @code{116}
+@item @code{EHOSTDOWN}
+@tab @code{117}
+@item @code{EHOSTUNREACH}
+@tab @code{118}
+@item @code{EINPROGRESS}
+@tab @code{119}
+@item @code{EALREADY}
+@tab @code{120}
+@item @code{EDESTADDRREQ}
+@tab @code{121}
+@item @code{EMSGSIZE}
+@tab @code{122}
+@item @code{EPROTONOSUPPORT}
+@tab @code{123}
+@item @code{EADDRNOTAVAIL}
+@tab @code{125}
+@item @code{ENETRESET}
+@tab @code{126}
+@item @code{EISCONN}
+@tab @code{127}
+@item @code{ENOTCONN}
+@tab @code{128}
+@item @code{ETOOMANYREFS}
+@tab @code{129}
+@item @code{EDQUOT}
+@tab @code{132}
+@item @code{ESTALE}
+@tab @code{133}
+@item @code{ENOTSUP}
+@tab @code{134}
+@item @code{EILSEQ}
+@tab @code{138}
+@item @code{EOVERFLOW}
+@tab @code{139}
+@item @code{ECANCELED}
+@tab @code{140}
+@item @code{ENOTRECOVERABLE}
+@tab @code{141}
+@item @code{EOWNERDEAD}
+@tab @code{142}
+@end multitable
diff --git a/newlib/libc/libc.texi b/newlib/libc/libc.texi
index a5f24b15a..8b8604781 100644
--- a/newlib/libc/libc.texi
+++ b/newlib/libc/libc.texi
@@ -406,6 +406,32 @@ argument list @var{ap} any further.
 The @code{va_end} defined in @file{varargs.h} has the same syntax and
 usage as the ANSI C version from @file{stdarg.h}.
 
+@node Newlib ABI
+@appendix Newlib ABI
+These are the various constants that newlib is built upon.  They might be
+exposed in error messages that people have to manually decode, or they might
+be passed to other layers (e.g. when calling OS support functions via libgloss).
+
+@node Newlib ABI Errno
+@section Errno Values
+Most architectures use the common set of errno values.  Only a minor few deviate
+from them.
+
+@subsection Common Errno Values
+@lowersections
+@include errno/constants.tex
+@raisesections
+
+@subsection CRIS Errno Values
+@lowersections
+@include machine/cris/constants-errno.tex
+@raisesections
+
+@subsection SPU Errno Values
+@lowersections
+@include machine/spu/constants-errno.tex
+@raisesections
+
 @node Document Index
 @unnumbered Document Index
 @printindex cp
diff --git a/newlib/libc/machine/cris/Makefile.inc b/newlib/libc/machine/cris/Makefile.inc
index f1864e352..10d35ca10 100644
--- a/newlib/libc/machine/cris/Makefile.inc
+++ b/newlib/libc/machine/cris/Makefile.inc
@@ -11,3 +11,6 @@ toollib_LIBRARIES += %D%/libic.a
 	%D%/libc_a-memset.o \
 	%D%/libc_a-memmove.o \
 	%D%/libc_a-libcdtor.o
+
+## NB: Not using LIBC_CHAPTERS because libc.texi includes this directly.
+libc_libc_TEXINFOS += %D%/constants-errno.tex
diff --git a/newlib/libc/machine/cris/constants-errno.tex b/newlib/libc/machine/cris/constants-errno.tex
new file mode 100644
index 000000000..85a76595e
--- /dev/null
+++ b/newlib/libc/machine/cris/constants-errno.tex
@@ -0,0 +1,541 @@
+@c This file is machine generated by gennltvals.py.
+
+@subsection Sorted by name
+@multitable @columnfractions .2 .2
+@item @code{E2BIG}
+@tab @code{7}
+@item @code{EACCES}
+@tab @code{13}
+@item @code{EADDRINUSE}
+@tab @code{98}
+@item @code{EADDRNOTAVAIL}
+@tab @code{99}
+@item @code{EADV}
+@tab @code{68}
+@item @code{EAFNOSUPPORT}
+@tab @code{97}
+@item @code{EAGAIN}
+@tab @code{11}
+@item @code{EALREADY}
+@tab @code{114}
+@item @code{EBADE}
+@tab @code{52}
+@item @code{EBADF}
+@tab @code{9}
+@item @code{EBADFD}
+@tab @code{77}
+@item @code{EBADMSG}
+@tab @code{74}
+@item @code{EBADR}
+@tab @code{53}
+@item @code{EBADRQC}
+@tab @code{56}
+@item @code{EBADSLT}
+@tab @code{57}
+@item @code{EBFONT}
+@tab @code{59}
+@item @code{EBUSY}
+@tab @code{16}
+@item @code{ECANCELED}
+@tab @code{125}
+@item @code{ECHILD}
+@tab @code{10}
+@item @code{ECHRNG}
+@tab @code{44}
+@item @code{ECOMM}
+@tab @code{70}
+@item @code{ECONNABORTED}
+@tab @code{103}
+@item @code{ECONNREFUSED}
+@tab @code{111}
+@item @code{ECONNRESET}
+@tab @code{104}
+@item @code{EDEADLK}
+@tab @code{35}
+@item @code{EDEADLOCK}
+@tab @code{35}
+@item @code{EDESTADDRREQ}
+@tab @code{89}
+@item @code{EDOM}
+@tab @code{33}
+@item @code{EDOTDOT}
+@tab @code{73}
+@item @code{EDQUOT}
+@tab @code{122}
+@item @code{EEXIST}
+@tab @code{17}
+@item @code{EFAULT}
+@tab @code{14}
+@item @code{EFBIG}
+@tab @code{27}
+@item @code{EFTYPE}
+@tab @code{59}
+@item @code{EHOSTDOWN}
+@tab @code{112}
+@item @code{EHOSTUNREACH}
+@tab @code{113}
+@item @code{EIDRM}
+@tab @code{43}
+@item @code{EILSEQ}
+@tab @code{84}
+@item @code{EINPROGRESS}
+@tab @code{115}
+@item @code{EINTR}
+@tab @code{4}
+@item @code{EINVAL}
+@tab @code{22}
+@item @code{EIO}
+@tab @code{5}
+@item @code{EISCONN}
+@tab @code{106}
+@item @code{EISDIR}
+@tab @code{21}
+@item @code{EISNAM}
+@tab @code{120}
+@item @code{EKEYEXPIRED}
+@tab @code{127}
+@item @code{EKEYREJECTED}
+@tab @code{129}
+@item @code{EKEYREVOKED}
+@tab @code{128}
+@item @code{EL2HLT}
+@tab @code{51}
+@item @code{EL2NSYNC}
+@tab @code{45}
+@item @code{EL3HLT}
+@tab @code{46}
+@item @code{EL3RST}
+@tab @code{47}
+@item @code{ELIBACC}
+@tab @code{79}
+@item @code{ELIBBAD}
+@tab @code{80}
+@item @code{ELIBEXEC}
+@tab @code{83}
+@item @code{ELIBMAX}
+@tab @code{82}
+@item @code{ELIBSCN}
+@tab @code{81}
+@item @code{ELNRNG}
+@tab @code{48}
+@item @code{ELOOP}
+@tab @code{40}
+@item @code{EMEDIUMTYPE}
+@tab @code{124}
+@item @code{EMFILE}
+@tab @code{24}
+@item @code{EMLINK}
+@tab @code{31}
+@item @code{EMSGSIZE}
+@tab @code{90}
+@item @code{EMULTIHOP}
+@tab @code{72}
+@item @code{ENAMETOOLONG}
+@tab @code{36}
+@item @code{ENAVAIL}
+@tab @code{119}
+@item @code{ENETDOWN}
+@tab @code{100}
+@item @code{ENETRESET}
+@tab @code{102}
+@item @code{ENETUNREACH}
+@tab @code{101}
+@item @code{ENFILE}
+@tab @code{23}
+@item @code{ENOANO}
+@tab @code{55}
+@item @code{ENOBUFS}
+@tab @code{105}
+@item @code{ENOCSI}
+@tab @code{50}
+@item @code{ENODATA}
+@tab @code{61}
+@item @code{ENODEV}
+@tab @code{19}
+@item @code{ENOENT}
+@tab @code{2}
+@item @code{ENOEXEC}
+@tab @code{8}
+@item @code{ENOKEY}
+@tab @code{126}
+@item @code{ENOLCK}
+@tab @code{37}
+@item @code{ENOLINK}
+@tab @code{67}
+@item @code{ENOMEDIUM}
+@tab @code{123}
+@item @code{ENOMEM}
+@tab @code{12}
+@item @code{ENOMSG}
+@tab @code{42}
+@item @code{ENONET}
+@tab @code{64}
+@item @code{ENOPKG}
+@tab @code{65}
+@item @code{ENOPROTOOPT}
+@tab @code{92}
+@item @code{ENOSPC}
+@tab @code{28}
+@item @code{ENOSR}
+@tab @code{63}
+@item @code{ENOSTR}
+@tab @code{60}
+@item @code{ENOSYS}
+@tab @code{38}
+@item @code{ENOTBLK}
+@tab @code{15}
+@item @code{ENOTCONN}
+@tab @code{107}
+@item @code{ENOTDIR}
+@tab @code{20}
+@item @code{ENOTEMPTY}
+@tab @code{39}
+@item @code{ENOTNAM}
+@tab @code{118}
+@item @code{ENOTRECOVERABLE}
+@tab @code{131}
+@item @code{ENOTSOCK}
+@tab @code{88}
+@item @code{ENOTSUP}
+@tab @code{95}
+@item @code{ENOTTY}
+@tab @code{25}
+@item @code{ENOTUNIQ}
+@tab @code{76}
+@item @code{ENXIO}
+@tab @code{6}
+@item @code{EOPNOTSUPP}
+@tab @code{95}
+@item @code{EOVERFLOW}
+@tab @code{75}
+@item @code{EOWNERDEAD}
+@tab @code{130}
+@item @code{EPERM}
+@tab @code{1}
+@item @code{EPFNOSUPPORT}
+@tab @code{96}
+@item @code{EPIPE}
+@tab @code{32}
+@item @code{EPROTO}
+@tab @code{71}
+@item @code{EPROTONOSUPPORT}
+@tab @code{93}
+@item @code{EPROTOTYPE}
+@tab @code{91}
+@item @code{ERANGE}
+@tab @code{34}
+@item @code{EREMCHG}
+@tab @code{78}
+@item @code{EREMOTE}
+@tab @code{66}
+@item @code{EREMOTEIO}
+@tab @code{121}
+@item @code{ERESTART}
+@tab @code{85}
+@item @code{EROFS}
+@tab @code{30}
+@item @code{ESHUTDOWN}
+@tab @code{108}
+@item @code{ESOCKTNOSUPPORT}
+@tab @code{94}
+@item @code{ESPIPE}
+@tab @code{29}
+@item @code{ESRCH}
+@tab @code{3}
+@item @code{ESRMNT}
+@tab @code{69}
+@item @code{ESTALE}
+@tab @code{116}
+@item @code{ESTRPIPE}
+@tab @code{86}
+@item @code{ETIME}
+@tab @code{62}
+@item @code{ETIMEDOUT}
+@tab @code{110}
+@item @code{ETOOMANYREFS}
+@tab @code{109}
+@item @code{ETXTBSY}
+@tab @code{26}
+@item @code{EUCLEAN}
+@tab @code{117}
+@item @code{EUNATCH}
+@tab @code{49}
+@item @code{EUSERS}
+@tab @code{87}
+@item @code{EWOULDBLOCK}
+@tab @code{11}
+@item @code{EXDEV}
+@tab @code{18}
+@item @code{EXFULL}
+@tab @code{54}
+@end multitable
+
+@subsection Sorted by value
+@multitable @columnfractions .2 .2
+@item @code{EPERM}
+@tab @code{1}
+@item @code{ENOENT}
+@tab @code{2}
+@item @code{ESRCH}
+@tab @code{3}
+@item @code{EINTR}
+@tab @code{4}
+@item @code{EIO}
+@tab @code{5}
+@item @code{ENXIO}
+@tab @code{6}
+@item @code{E2BIG}
+@tab @code{7}
+@item @code{ENOEXEC}
+@tab @code{8}
+@item @code{EBADF}
+@tab @code{9}
+@item @code{ECHILD}
+@tab @code{10}
+@item @code{EAGAIN}
+@tab @code{11}
+@item @code{EWOULDBLOCK}
+@tab @code{11}
+@item @code{ENOMEM}
+@tab @code{12}
+@item @code{EACCES}
+@tab @code{13}
+@item @code{EFAULT}
+@tab @code{14}
+@item @code{ENOTBLK}
+@tab @code{15}
+@item @code{EBUSY}
+@tab @code{16}
+@item @code{EEXIST}
+@tab @code{17}
+@item @code{EXDEV}
+@tab @code{18}
+@item @code{ENODEV}
+@tab @code{19}
+@item @code{ENOTDIR}
+@tab @code{20}
+@item @code{EISDIR}
+@tab @code{21}
+@item @code{EINVAL}
+@tab @code{22}
+@item @code{ENFILE}
+@tab @code{23}
+@item @code{EMFILE}
+@tab @code{24}
+@item @code{ENOTTY}
+@tab @code{25}
+@item @code{ETXTBSY}
+@tab @code{26}
+@item @code{EFBIG}
+@tab @code{27}
+@item @code{ENOSPC}
+@tab @code{28}
+@item @code{ESPIPE}
+@tab @code{29}
+@item @code{EROFS}
+@tab @code{30}
+@item @code{EMLINK}
+@tab @code{31}
+@item @code{EPIPE}
+@tab @code{32}
+@item @code{EDOM}
+@tab @code{33}
+@item @code{ERANGE}
+@tab @code{34}
+@item @code{EDEADLK}
+@tab @code{35}
+@item @code{EDEADLOCK}
+@tab @code{35}
+@item @code{ENAMETOOLONG}
+@tab @code{36}
+@item @code{ENOLCK}
+@tab @code{37}
+@item @code{ENOSYS}
+@tab @code{38}
+@item @code{ENOTEMPTY}
+@tab @code{39}
+@item @code{ELOOP}
+@tab @code{40}
+@item @code{ENOMSG}
+@tab @code{42}
+@item @code{EIDRM}
+@tab @code{43}
+@item @code{ECHRNG}
+@tab @code{44}
+@item @code{EL2NSYNC}
+@tab @code{45}
+@item @code{EL3HLT}
+@tab @code{46}
+@item @code{EL3RST}
+@tab @code{47}
+@item @code{ELNRNG}
+@tab @code{48}
+@item @code{EUNATCH}
+@tab @code{49}
+@item @code{ENOCSI}
+@tab @code{50}
+@item @code{EL2HLT}
+@tab @code{51}
+@item @code{EBADE}
+@tab @code{52}
+@item @code{EBADR}
+@tab @code{53}
+@item @code{EXFULL}
+@tab @code{54}
+@item @code{ENOANO}
+@tab @code{55}
+@item @code{EBADRQC}
+@tab @code{56}
+@item @code{EBADSLT}
+@tab @code{57}
+@item @code{EBFONT}
+@tab @code{59}
+@item @code{EFTYPE}
+@tab @code{59}
+@item @code{ENOSTR}
+@tab @code{60}
+@item @code{ENODATA}
+@tab @code{61}
+@item @code{ETIME}
+@tab @code{62}
+@item @code{ENOSR}
+@tab @code{63}
+@item @code{ENONET}
+@tab @code{64}
+@item @code{ENOPKG}
+@tab @code{65}
+@item @code{EREMOTE}
+@tab @code{66}
+@item @code{ENOLINK}
+@tab @code{67}
+@item @code{EADV}
+@tab @code{68}
+@item @code{ESRMNT}
+@tab @code{69}
+@item @code{ECOMM}
+@tab @code{70}
+@item @code{EPROTO}
+@tab @code{71}
+@item @code{EMULTIHOP}
+@tab @code{72}
+@item @code{EDOTDOT}
+@tab @code{73}
+@item @code{EBADMSG}
+@tab @code{74}
+@item @code{EOVERFLOW}
+@tab @code{75}
+@item @code{ENOTUNIQ}
+@tab @code{76}
+@item @code{EBADFD}
+@tab @code{77}
+@item @code{EREMCHG}
+@tab @code{78}
+@item @code{ELIBACC}
+@tab @code{79}
+@item @code{ELIBBAD}
+@tab @code{80}
+@item @code{ELIBSCN}
+@tab @code{81}
+@item @code{ELIBMAX}
+@tab @code{82}
+@item @code{ELIBEXEC}
+@tab @code{83}
+@item @code{EILSEQ}
+@tab @code{84}
+@item @code{ERESTART}
+@tab @code{85}
+@item @code{ESTRPIPE}
+@tab @code{86}
+@item @code{EUSERS}
+@tab @code{87}
+@item @code{ENOTSOCK}
+@tab @code{88}
+@item @code{EDESTADDRREQ}
+@tab @code{89}
+@item @code{EMSGSIZE}
+@tab @code{90}
+@item @code{EPROTOTYPE}
+@tab @code{91}
+@item @code{ENOPROTOOPT}
+@tab @code{92}
+@item @code{EPROTONOSUPPORT}
+@tab @code{93}
+@item @code{ESOCKTNOSUPPORT}
+@tab @code{94}
+@item @code{ENOTSUP}
+@tab @code{95}
+@item @code{EOPNOTSUPP}
+@tab @code{95}
+@item @code{EPFNOSUPPORT}
+@tab @code{96}
+@item @code{EAFNOSUPPORT}
+@tab @code{97}
+@item @code{EADDRINUSE}
+@tab @code{98}
+@item @code{EADDRNOTAVAIL}
+@tab @code{99}
+@item @code{ENETDOWN}
+@tab @code{100}
+@item @code{ENETUNREACH}
+@tab @code{101}
+@item @code{ENETRESET}
+@tab @code{102}
+@item @code{ECONNABORTED}
+@tab @code{103}
+@item @code{ECONNRESET}
+@tab @code{104}
+@item @code{ENOBUFS}
+@tab @code{105}
+@item @code{EISCONN}
+@tab @code{106}
+@item @code{ENOTCONN}
+@tab @code{107}
+@item @code{ESHUTDOWN}
+@tab @code{108}
+@item @code{ETOOMANYREFS}
+@tab @code{109}
+@item @code{ETIMEDOUT}
+@tab @code{110}
+@item @code{ECONNREFUSED}
+@tab @code{111}
+@item @code{EHOSTDOWN}
+@tab @code{112}
+@item @code{EHOSTUNREACH}
+@tab @code{113}
+@item @code{EALREADY}
+@tab @code{114}
+@item @code{EINPROGRESS}
+@tab @code{115}
+@item @code{ESTALE}
+@tab @code{116}
+@item @code{EUCLEAN}
+@tab @code{117}
+@item @code{ENOTNAM}
+@tab @code{118}
+@item @code{ENAVAIL}
+@tab @code{119}
+@item @code{EISNAM}
+@tab @code{120}
+@item @code{EREMOTEIO}
+@tab @code{121}
+@item @code{EDQUOT}
+@tab @code{122}
+@item @code{ENOMEDIUM}
+@tab @code{123}
+@item @code{EMEDIUMTYPE}
+@tab @code{124}
+@item @code{ECANCELED}
+@tab @code{125}
+@item @code{ENOKEY}
+@tab @code{126}
+@item @code{EKEYEXPIRED}
+@tab @code{127}
+@item @code{EKEYREVOKED}
+@tab @code{128}
+@item @code{EKEYREJECTED}
+@tab @code{129}
+@item @code{EOWNERDEAD}
+@tab @code{130}
+@item @code{ENOTRECOVERABLE}
+@tab @code{131}
+@end multitable
diff --git a/newlib/libc/machine/spu/Makefile.inc b/newlib/libc/machine/spu/Makefile.inc
index 5384a5f28..be265a414 100644
--- a/newlib/libc/machine/spu/Makefile.inc
+++ b/newlib/libc/machine/spu/Makefile.inc
@@ -26,3 +26,6 @@ libc_a_SOURCES += \
 	%D%/pread_ea.c %D%/readv_ea.c %D%/write_ea.c %D%/pwrite_ea.c %D%/writev_ea.c %D%/spu-mcount.S \
 	%D%/spu-gmon.c
 endif
+
+## NB: Not using LIBC_CHAPTERS because libc.texi includes this directly.
+libc_libc_TEXINFOS += %D%/constants-errno.tex
diff --git a/newlib/libc/machine/spu/constants-errno.tex b/newlib/libc/machine/spu/constants-errno.tex
new file mode 100644
index 000000000..0d71176cf
--- /dev/null
+++ b/newlib/libc/machine/spu/constants-errno.tex
@@ -0,0 +1,517 @@
+@c This file is machine generated by gennltvals.py.
+
+@subsection Sorted by name
+@multitable @columnfractions .2 .2
+@item @code{E2BIG}
+@tab @code{7}
+@item @code{EACCES}
+@tab @code{13}
+@item @code{EADDRINUSE}
+@tab @code{98}
+@item @code{EADDRNOTAVAIL}
+@tab @code{99}
+@item @code{EADV}
+@tab @code{68}
+@item @code{EAFNOSUPPORT}
+@tab @code{97}
+@item @code{EAGAIN}
+@tab @code{11}
+@item @code{EALREADY}
+@tab @code{114}
+@item @code{EBADE}
+@tab @code{52}
+@item @code{EBADF}
+@tab @code{9}
+@item @code{EBADFD}
+@tab @code{77}
+@item @code{EBADMSG}
+@tab @code{74}
+@item @code{EBADR}
+@tab @code{53}
+@item @code{EBADRQC}
+@tab @code{56}
+@item @code{EBADSLT}
+@tab @code{57}
+@item @code{EBFONT}
+@tab @code{59}
+@item @code{EBUSY}
+@tab @code{16}
+@item @code{ECANCELED}
+@tab @code{125}
+@item @code{ECHILD}
+@tab @code{10}
+@item @code{ECHRNG}
+@tab @code{44}
+@item @code{ECOMM}
+@tab @code{70}
+@item @code{ECONNABORTED}
+@tab @code{103}
+@item @code{ECONNREFUSED}
+@tab @code{111}
+@item @code{ECONNRESET}
+@tab @code{104}
+@item @code{EDEADLK}
+@tab @code{35}
+@item @code{EDEADLOCK}
+@tab @code{58}
+@item @code{EDESTADDRREQ}
+@tab @code{89}
+@item @code{EDOM}
+@tab @code{33}
+@item @code{EDOTDOT}
+@tab @code{73}
+@item @code{EDQUOT}
+@tab @code{122}
+@item @code{EEXIST}
+@tab @code{17}
+@item @code{EFAULT}
+@tab @code{14}
+@item @code{EFBIG}
+@tab @code{27}
+@item @code{EFTYPE}
+@tab @code{59}
+@item @code{EHOSTDOWN}
+@tab @code{112}
+@item @code{EHOSTUNREACH}
+@tab @code{113}
+@item @code{EIDRM}
+@tab @code{43}
+@item @code{EILSEQ}
+@tab @code{84}
+@item @code{EINPROGRESS}
+@tab @code{115}
+@item @code{EINTR}
+@tab @code{4}
+@item @code{EINVAL}
+@tab @code{22}
+@item @code{EIO}
+@tab @code{5}
+@item @code{EISCONN}
+@tab @code{106}
+@item @code{EISDIR}
+@tab @code{21}
+@item @code{EISNAM}
+@tab @code{120}
+@item @code{EL2HLT}
+@tab @code{51}
+@item @code{EL2NSYNC}
+@tab @code{45}
+@item @code{EL3HLT}
+@tab @code{46}
+@item @code{EL3RST}
+@tab @code{47}
+@item @code{ELIBACC}
+@tab @code{79}
+@item @code{ELIBBAD}
+@tab @code{80}
+@item @code{ELIBEXEC}
+@tab @code{83}
+@item @code{ELIBMAX}
+@tab @code{82}
+@item @code{ELIBSCN}
+@tab @code{81}
+@item @code{ELNRNG}
+@tab @code{48}
+@item @code{ELOOP}
+@tab @code{40}
+@item @code{EMEDIUMTYPE}
+@tab @code{124}
+@item @code{EMFILE}
+@tab @code{24}
+@item @code{EMLINK}
+@tab @code{31}
+@item @code{EMSGSIZE}
+@tab @code{90}
+@item @code{EMULTIHOP}
+@tab @code{72}
+@item @code{ENAMETOOLONG}
+@tab @code{36}
+@item @code{ENAVAIL}
+@tab @code{119}
+@item @code{ENETDOWN}
+@tab @code{100}
+@item @code{ENETRESET}
+@tab @code{102}
+@item @code{ENETUNREACH}
+@tab @code{101}
+@item @code{ENFILE}
+@tab @code{23}
+@item @code{ENOANO}
+@tab @code{55}
+@item @code{ENOBUFS}
+@tab @code{105}
+@item @code{ENOCSI}
+@tab @code{50}
+@item @code{ENODATA}
+@tab @code{61}
+@item @code{ENODEV}
+@tab @code{19}
+@item @code{ENOENT}
+@tab @code{2}
+@item @code{ENOEXEC}
+@tab @code{8}
+@item @code{ENOLCK}
+@tab @code{37}
+@item @code{ENOLINK}
+@tab @code{67}
+@item @code{ENOMEDIUM}
+@tab @code{123}
+@item @code{ENOMEM}
+@tab @code{12}
+@item @code{ENOMSG}
+@tab @code{42}
+@item @code{ENONET}
+@tab @code{64}
+@item @code{ENOPKG}
+@tab @code{65}
+@item @code{ENOPROTOOPT}
+@tab @code{92}
+@item @code{ENOSPC}
+@tab @code{28}
+@item @code{ENOSR}
+@tab @code{63}
+@item @code{ENOSTR}
+@tab @code{60}
+@item @code{ENOSYS}
+@tab @code{38}
+@item @code{ENOTBLK}
+@tab @code{15}
+@item @code{ENOTCONN}
+@tab @code{107}
+@item @code{ENOTDIR}
+@tab @code{20}
+@item @code{ENOTEMPTY}
+@tab @code{39}
+@item @code{ENOTNAM}
+@tab @code{118}
+@item @code{ENOTSOCK}
+@tab @code{88}
+@item @code{ENOTSUP}
+@tab @code{95}
+@item @code{ENOTTY}
+@tab @code{25}
+@item @code{ENOTUNIQ}
+@tab @code{76}
+@item @code{ENXIO}
+@tab @code{6}
+@item @code{EOPNOTSUPP}
+@tab @code{95}
+@item @code{EOVERFLOW}
+@tab @code{75}
+@item @code{EPERM}
+@tab @code{1}
+@item @code{EPFNOSUPPORT}
+@tab @code{96}
+@item @code{EPIPE}
+@tab @code{32}
+@item @code{EPROTO}
+@tab @code{71}
+@item @code{EPROTONOSUPPORT}
+@tab @code{93}
+@item @code{EPROTOTYPE}
+@tab @code{91}
+@item @code{ERANGE}
+@tab @code{34}
+@item @code{EREMCHG}
+@tab @code{78}
+@item @code{EREMOTE}
+@tab @code{66}
+@item @code{EREMOTEIO}
+@tab @code{121}
+@item @code{ERESTART}
+@tab @code{85}
+@item @code{EROFS}
+@tab @code{30}
+@item @code{ESHUTDOWN}
+@tab @code{108}
+@item @code{ESOCKTNOSUPPORT}
+@tab @code{94}
+@item @code{ESPIPE}
+@tab @code{29}
+@item @code{ESRCH}
+@tab @code{3}
+@item @code{ESRMNT}
+@tab @code{69}
+@item @code{ESTALE}
+@tab @code{116}
+@item @code{ESTRPIPE}
+@tab @code{86}
+@item @code{ETIME}
+@tab @code{62}
+@item @code{ETIMEDOUT}
+@tab @code{110}
+@item @code{ETOOMANYREFS}
+@tab @code{109}
+@item @code{ETXTBSY}
+@tab @code{26}
+@item @code{EUCLEAN}
+@tab @code{117}
+@item @code{EUNATCH}
+@tab @code{49}
+@item @code{EUSERS}
+@tab @code{87}
+@item @code{EWOULDBLOCK}
+@tab @code{11}
+@item @code{EXDEV}
+@tab @code{18}
+@item @code{EXFULL}
+@tab @code{54}
+@end multitable
+
+@subsection Sorted by value
+@multitable @columnfractions .2 .2
+@item @code{EPERM}
+@tab @code{1}
+@item @code{ENOENT}
+@tab @code{2}
+@item @code{ESRCH}
+@tab @code{3}
+@item @code{EINTR}
+@tab @code{4}
+@item @code{EIO}
+@tab @code{5}
+@item @code{ENXIO}
+@tab @code{6}
+@item @code{E2BIG}
+@tab @code{7}
+@item @code{ENOEXEC}
+@tab @code{8}
+@item @code{EBADF}
+@tab @code{9}
+@item @code{ECHILD}
+@tab @code{10}
+@item @code{EAGAIN}
+@tab @code{11}
+@item @code{EWOULDBLOCK}
+@tab @code{11}
+@item @code{ENOMEM}
+@tab @code{12}
+@item @code{EACCES}
+@tab @code{13}
+@item @code{EFAULT}
+@tab @code{14}
+@item @code{ENOTBLK}
+@tab @code{15}
+@item @code{EBUSY}
+@tab @code{16}
+@item @code{EEXIST}
+@tab @code{17}
+@item @code{EXDEV}
+@tab @code{18}
+@item @code{ENODEV}
+@tab @code{19}
+@item @code{ENOTDIR}
+@tab @code{20}
+@item @code{EISDIR}
+@tab @code{21}
+@item @code{EINVAL}
+@tab @code{22}
+@item @code{ENFILE}
+@tab @code{23}
+@item @code{EMFILE}
+@tab @code{24}
+@item @code{ENOTTY}
+@tab @code{25}
+@item @code{ETXTBSY}
+@tab @code{26}
+@item @code{EFBIG}
+@tab @code{27}
+@item @code{ENOSPC}
+@tab @code{28}
+@item @code{ESPIPE}
+@tab @code{29}
+@item @code{EROFS}
+@tab @code{30}
+@item @code{EMLINK}
+@tab @code{31}
+@item @code{EPIPE}
+@tab @code{32}
+@item @code{EDOM}
+@tab @code{33}
+@item @code{ERANGE}
+@tab @code{34}
+@item @code{EDEADLK}
+@tab @code{35}
+@item @code{ENAMETOOLONG}
+@tab @code{36}
+@item @code{ENOLCK}
+@tab @code{37}
+@item @code{ENOSYS}
+@tab @code{38}
+@item @code{ENOTEMPTY}
+@tab @code{39}
+@item @code{ELOOP}
+@tab @code{40}
+@item @code{ENOMSG}
+@tab @code{42}
+@item @code{EIDRM}
+@tab @code{43}
+@item @code{ECHRNG}
+@tab @code{44}
+@item @code{EL2NSYNC}
+@tab @code{45}
+@item @code{EL3HLT}
+@tab @code{46}
+@item @code{EL3RST}
+@tab @code{47}
+@item @code{ELNRNG}
+@tab @code{48}
+@item @code{EUNATCH}
+@tab @code{49}
+@item @code{ENOCSI}
+@tab @code{50}
+@item @code{EL2HLT}
+@tab @code{51}
+@item @code{EBADE}
+@tab @code{52}
+@item @code{EBADR}
+@tab @code{53}
+@item @code{EXFULL}
+@tab @code{54}
+@item @code{ENOANO}
+@tab @code{55}
+@item @code{EBADRQC}
+@tab @code{56}
+@item @code{EBADSLT}
+@tab @code{57}
+@item @code{EDEADLOCK}
+@tab @code{58}
+@item @code{EBFONT}
+@tab @code{59}
+@item @code{EFTYPE}
+@tab @code{59}
+@item @code{ENOSTR}
+@tab @code{60}
+@item @code{ENODATA}
+@tab @code{61}
+@item @code{ETIME}
+@tab @code{62}
+@item @code{ENOSR}
+@tab @code{63}
+@item @code{ENONET}
+@tab @code{64}
+@item @code{ENOPKG}
+@tab @code{65}
+@item @code{EREMOTE}
+@tab @code{66}
+@item @code{ENOLINK}
+@tab @code{67}
+@item @code{EADV}
+@tab @code{68}
+@item @code{ESRMNT}
+@tab @code{69}
+@item @code{ECOMM}
+@tab @code{70}
+@item @code{EPROTO}
+@tab @code{71}
+@item @code{EMULTIHOP}
+@tab @code{72}
+@item @code{EDOTDOT}
+@tab @code{73}
+@item @code{EBADMSG}
+@tab @code{74}
+@item @code{EOVERFLOW}
+@tab @code{75}
+@item @code{ENOTUNIQ}
+@tab @code{76}
+@item @code{EBADFD}
+@tab @code{77}
+@item @code{EREMCHG}
+@tab @code{78}
+@item @code{ELIBACC}
+@tab @code{79}
+@item @code{ELIBBAD}
+@tab @code{80}
+@item @code{ELIBSCN}
+@tab @code{81}
+@item @code{ELIBMAX}
+@tab @code{82}
+@item @code{ELIBEXEC}
+@tab @code{83}
+@item @code{EILSEQ}
+@tab @code{84}
+@item @code{ERESTART}
+@tab @code{85}
+@item @code{ESTRPIPE}
+@tab @code{86}
+@item @code{EUSERS}
+@tab @code{87}
+@item @code{ENOTSOCK}
+@tab @code{88}
+@item @code{EDESTADDRREQ}
+@tab @code{89}
+@item @code{EMSGSIZE}
+@tab @code{90}
+@item @code{EPROTOTYPE}
+@tab @code{91}
+@item @code{ENOPROTOOPT}
+@tab @code{92}
+@item @code{EPROTONOSUPPORT}
+@tab @code{93}
+@item @code{ESOCKTNOSUPPORT}
+@tab @code{94}
+@item @code{ENOTSUP}
+@tab @code{95}
+@item @code{EOPNOTSUPP}
+@tab @code{95}
+@item @code{EPFNOSUPPORT}
+@tab @code{96}
+@item @code{EAFNOSUPPORT}
+@tab @code{97}
+@item @code{EADDRINUSE}
+@tab @code{98}
+@item @code{EADDRNOTAVAIL}
+@tab @code{99}
+@item @code{ENETDOWN}
+@tab @code{100}
+@item @code{ENETUNREACH}
+@tab @code{101}
+@item @code{ENETRESET}
+@tab @code{102}
+@item @code{ECONNABORTED}
+@tab @code{103}
+@item @code{ECONNRESET}
+@tab @code{104}
+@item @code{ENOBUFS}
+@tab @code{105}
+@item @code{EISCONN}
+@tab @code{106}
+@item @code{ENOTCONN}
+@tab @code{107}
+@item @code{ESHUTDOWN}
+@tab @code{108}
+@item @code{ETOOMANYREFS}
+@tab @code{109}
+@item @code{ETIMEDOUT}
+@tab @code{110}
+@item @code{ECONNREFUSED}
+@tab @code{111}
+@item @code{EHOSTDOWN}
+@tab @code{112}
+@item @code{EHOSTUNREACH}
+@tab @code{113}
+@item @code{EALREADY}
+@tab @code{114}
+@item @code{EINPROGRESS}
+@tab @code{115}
+@item @code{ESTALE}
+@tab @code{116}
+@item @code{EUCLEAN}
+@tab @code{117}
+@item @code{ENOTNAM}
+@tab @code{118}
+@item @code{ENAVAIL}
+@tab @code{119}
+@item @code{EISNAM}
+@tab @code{120}
+@item @code{EREMOTEIO}
+@tab @code{121}
+@item @code{EDQUOT}
+@tab @code{122}
+@item @code{ENOMEDIUM}
+@tab @code{123}
+@item @code{EMEDIUMTYPE}
+@tab @code{124}
+@item @code{ECANCELED}
+@tab @code{125}
+@end multitable

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-01-02  4:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-01-02  4:37 [newlib-cygwin/users/vapier/wip] [RFC] newlib: libc: start manual appendix to hold various ABI constants Michael Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).