am_common_libcommon_a_OBJECTS = \
common/common_libcommon_a-portability.$(OBJEXT) \
common/common_libcommon_a-sim-load.$(OBJEXT) \
+ common/common_libcommon_a-target-newlib-errno.$(OBJEXT) \
common/common_libcommon_a-version.$(OBJEXT)
common_libcommon_a_OBJECTS = $(am_common_libcommon_a_OBJECTS)
igen_libigen_a_AR = $(AR) $(ARFLAGS)
common_libcommon_a_SOURCES = \
common/portability.c \
common/sim-load.c \
+ common/target-newlib-errno.c \
common/version.c
@SIM_ENABLE_IGEN_TRUE@igen_libigen_a_SOURCES = \
common/$(am__dirstamp) common/$(DEPDIR)/$(am__dirstamp)
common/common_libcommon_a-sim-load.$(OBJEXT): common/$(am__dirstamp) \
common/$(DEPDIR)/$(am__dirstamp)
+common/common_libcommon_a-target-newlib-errno.$(OBJEXT): \
+ common/$(am__dirstamp) common/$(DEPDIR)/$(am__dirstamp)
common/common_libcommon_a-version.$(OBJEXT): common/$(am__dirstamp) \
common/$(DEPDIR)/$(am__dirstamp)
@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-portability.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-sim-load.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@common/$(DEPDIR)/common_libcommon_a-version.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@igen/$(DEPDIR)/filter.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@igen/$(DEPDIR)/filter_host.Po@am__quote@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o common/common_libcommon_a-sim-load.obj `if test -f 'common/sim-load.c'; then $(CYGPATH_W) 'common/sim-load.c'; else $(CYGPATH_W) '$(srcdir)/common/sim-load.c'; fi`
+common/common_libcommon_a-target-newlib-errno.o: common/target-newlib-errno.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/common_libcommon_a-target-newlib-errno.o -MD -MP -MF common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Tpo -c -o common/common_libcommon_a-target-newlib-errno.o `test -f 'common/target-newlib-errno.c' || echo '$(srcdir)/'`common/target-newlib-errno.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Tpo common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/target-newlib-errno.c' object='common/common_libcommon_a-target-newlib-errno.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o common/common_libcommon_a-target-newlib-errno.o `test -f 'common/target-newlib-errno.c' || echo '$(srcdir)/'`common/target-newlib-errno.c
+
+common/common_libcommon_a-target-newlib-errno.obj: common/target-newlib-errno.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/common_libcommon_a-target-newlib-errno.obj -MD -MP -MF common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Tpo -c -o common/common_libcommon_a-target-newlib-errno.obj `if test -f 'common/target-newlib-errno.c'; then $(CYGPATH_W) 'common/target-newlib-errno.c'; else $(CYGPATH_W) '$(srcdir)/common/target-newlib-errno.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Tpo common/$(DEPDIR)/common_libcommon_a-target-newlib-errno.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='common/target-newlib-errno.c' object='common/common_libcommon_a-target-newlib-errno.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o common/common_libcommon_a-target-newlib-errno.obj `if test -f 'common/target-newlib-errno.c'; then $(CYGPATH_W) 'common/target-newlib-errno.c'; else $(CYGPATH_W) '$(srcdir)/common/target-newlib-errno.c'; fi`
+
common/common_libcommon_a-version.o: common/version.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(common_libcommon_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT common/common_libcommon_a-version.o -MD -MP -MF common/$(DEPDIR)/common_libcommon_a-version.Tpo -c -o common/common_libcommon_a-version.o `test -f 'common/version.c' || echo '$(srcdir)/'`common/version.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) common/$(DEPDIR)/common_libcommon_a-version.Tpo common/$(DEPDIR)/common_libcommon_a-version.Po
COMMON_OBJS_NAMES = \
portability.o \
sim-load.o \
+ target-newlib-errno.o \
version.o
COMMON_OBJS = $(COMMON_OBJS_NAMES:%=../common/common_libcommon_a-%)
/* This file is machine generated by {PROG}. */\
"""
+# Used to update sections of files.
+START_MARKER = 'gennltvals: START'
+END_MARKER = 'gennltvals: END'
-def gentvals(output: TextIO, cpp: str, srctype: str, srcdir: Path,
+
+def extract_syms(cpp: str, srcdir: Path,
+ headers: Iterable[str],
+ pattern: str,
+ filter: str = r'^$') -> dict:
+ """Extract all the symbols from |headers| matching |pattern| using |cpp|."""
+ srcfile = ''.join(f'#include <{x}>\n' for x in headers)
+ syms = set()
+ define_pattern = re.compile(r'^#\s*define\s+(' + pattern + ')')
+ filter_pattern = re.compile(filter)
+ for header in headers:
+ with open(srcdir / header, 'r', encoding='utf-8') as fp:
+ data = fp.read()
+ for line in data.splitlines():
+ m = define_pattern.match(line)
+ if m and not filter_pattern.search(line):
+ syms.add(m.group(1))
+ for sym in syms:
+ srcfile += f'#ifdef {sym}\nDEFVAL "{sym}" {sym}\n#endif\n'
+
+ result = subprocess.run(
+ f'{cpp} -E -I"{srcdir}" -', shell=True, check=True, encoding='utf-8',
+ input=srcfile, capture_output=True)
+ ret = {}
+ for line in result.stdout.splitlines():
+ if line.startswith('DEFVAL '):
+ _, sym, val = line.split()
+ ret[sym.strip('"')] = val
+ return ret
+
+
+def gentvals(output_dir: Path, output: TextIO,
+ cpp: str, srctype: str, srcdir: Path,
headers: Iterable[str],
pattern: str,
filter: str = r'^$',
fullpath = srcdir / header
assert fullpath.exists(), f'{fullpath} does not exist'
+ syms = extract_syms(cpp, srcdir, headers, pattern, filter)
+
+ # If we have a map file, use it directly.
+ target_map = output_dir / f'target-newlib-{srctype}.c'
+ if target_map.exists():
+ old_lines = target_map.read_text().splitlines()
+ start_i = end_i = None
+ for i, line in enumerate(old_lines):
+ if START_MARKER in line:
+ start_i = i
+ if END_MARKER in line:
+ end_i = i
+ assert start_i and end_i
+ new_lines = old_lines[0:start_i + 1]
+ new_lines.extend(
+ f'#ifdef {sym}\n'
+ f' {{ "{sym}", {sym}, {val} }},\n'
+ f'#endif' for sym, val in sorted(syms.items()))
+ new_lines.extend(old_lines[end_i:])
+ target_map.write_text('\n'.join(new_lines) + '\n')
+ return
+
+ # Fallback to classic nltvals.def.
if target is not None:
print(f'#ifdef NL_TARGET_{target}', file=output)
print(f'#ifdef {srctype}_defs', file=output)
else:
print(f'/* begin {target} {srctype} target macros */', file=output)
- # Extract all the symbols.
- srcfile = ''.join(f'#include <{x}>\n' for x in headers)
- syms = set()
- define_pattern = re.compile(r'^#\s*define\s+(' + pattern + ')')
- filter_pattern = re.compile(filter)
- for header in headers:
- with open(srcdir / header, 'r', encoding='utf-8') as fp:
- data = fp.read()
- for line in data.splitlines():
- m = define_pattern.match(line)
- if m and not filter_pattern.search(line):
- syms.add(m.group(1))
- for sym in sorted(syms):
- srcfile += f'#ifdef {sym}\nDEFVAL {{ "{sym}", {sym} }},\n#endif\n'
-
- result = subprocess.run(
- f'{cpp} -E -I"{srcdir}" -', shell=True, check=True, encoding='utf-8',
- input=srcfile, capture_output=True)
- for line in result.stdout.splitlines():
- if line.startswith('DEFVAL '):
- print(line[6:].rstrip(), file=output)
+ for sym, val in sorted(syms.items()):
+ print(f' {{ "{sym}", {val} }},', file=output)
print(f'#undef {srctype}_defs', file=output)
if target is None:
print('#endif', file=output)
-def gen_common(output: TextIO, newlib: Path, cpp: str):
+def gen_common(output_dir: Path, output: TextIO, newlib: Path, cpp: str):
"""Generate the common C library constants.
No arch should override these.
"""
- gentvals(output, cpp, 'errno', newlib / 'newlib/libc/include',
+ gentvals(output_dir, output, cpp, 'errno', newlib / 'newlib/libc/include',
('errno.h', 'sys/errno.h'), 'E[A-Z0-9]*')
- gentvals(output, cpp, 'signal', newlib / 'newlib/libc/include',
+ gentvals(output_dir, output, cpp, 'signal', newlib / 'newlib/libc/include',
('signal.h', 'sys/signal.h'), r'SIG[A-Z0-9]*', filter=r'SIGSTKSZ')
- gentvals(output, cpp, 'open', newlib / 'newlib/libc/include',
+ gentvals(output_dir, output, cpp, 'open', newlib / 'newlib/libc/include',
('fcntl.h', 'sys/fcntl.h', 'sys/_default_fcntl.h'), r'O_[A-Z0-9]*')
-def gen_targets(output: TextIO, newlib: Path, cpp: str):
+def gen_targets(output_dir: Path, output: TextIO, newlib: Path, cpp: str):
"""Generate the target-specific lists."""
for target, subdir in sorted(TARGET_DIRS.items()):
- gentvals(output, cpp, 'sys', newlib / subdir, ('syscall.h',),
- r'SYS_[_a-zA-Z0-9]*', target=target)
+ gentvals(output_dir, output, cpp, 'sys', newlib / subdir,
+ ('syscall.h',), r'SYS_[_a-zA-Z0-9]*', target=target)
# Then output the common syscall targets.
- gentvals(output, cpp, 'sys', newlib / 'libgloss', ('syscall.h',),
- r'SYS_[_a-zA-Z0-9]*')
+ gentvals(output_dir, output, cpp, 'sys', newlib / 'libgloss',
+ ('syscall.h',), r'SYS_[_a-zA-Z0-9]*')
-def gen(output: TextIO, newlib: Path, cpp: str):
+def gen(output_dir: Path, output: TextIO, newlib: Path, cpp: str):
"""Generate all the things!"""
print(FILE_HEADER, file=output)
- gen_common(output, newlib, cpp)
- gen_targets(output, newlib, cpp)
+ gen_common(output_dir, output, newlib, cpp)
+ gen_targets(output_dir, output, newlib, cpp)
def get_parser() -> argparse.ArgumentParser:
output = (opts.output / 'nltvals.def').open('w', encoding='utf-8')
- gen(output, opts.newlib, opts.cpp)
+ gen(opts.output, output, opts.newlib, opts.cpp)
return 0
{ 0, 0 }
};
-static struct tdefs errno_tdefs[] = {
-#define errno_defs
-#include "nltvals.def"
-#undef errno_defs
- { 0, 0 }
-};
-
static struct tdefs signal_tdefs[] = {
#define signal_defs
#include "nltvals.def"
printf ("/* This file is machine generated by gentmap.c. */\n\n");
printf ("#include \"defs.h\"\n");
- printf ("#include <errno.h>\n");
printf ("#include <fcntl.h>\n");
printf ("#include <signal.h>\n");
printf ("#include \"ansidecl.h\"\n");
printf (" { 0, -1, -1 }\n");
printf ("};\n\n");
- printf ("/* errno mapping table */\n");
- printf ("CB_TARGET_DEFS_MAP cb_init_errno_map[] = {\n");
- for (t = &errno_tdefs[0]; t->symbol; ++t)
- {
- printf ("#define TARGET_%s %d\n", t->symbol, t->value);
- printf ("#ifdef %s\n", t->symbol);
- printf (" { \"%s\", %s, TARGET_%s },\n", t->symbol, t->symbol, t->symbol);
- printf ("#endif\n");
- }
- printf (" { 0, 0, 0 }\n");
- printf ("};\n\n");
-
printf ("/* signals mapping table */\n");
printf ("CB_TARGET_DEFS_MAP cb_init_signal_map[] = {\n");
for (t = &signal_tdefs[0]; t->symbol; ++t)
%C%_libcommon_a_SOURCES = \
%D%/portability.c \
%D%/sim-load.c \
+ %D%/target-newlib-errno.c \
%D%/version.c
%D%/version.c: %D%/version.c-stamp ; @true
/* Newlib/libgloss macro values needed by remote target support. */
/* This file is machine generated by gennltvals.py. */
-#ifdef errno_defs
-/* from errno.h */
-/* from sys/errno.h */
-/* begin errno target macros */
- { "E2BIG", 7 },
- { "EACCES", 13 },
- { "EADDRINUSE", 112 },
- { "EADDRNOTAVAIL", 125 },
- { "EAFNOSUPPORT", 106 },
- { "EAGAIN", 11 },
- { "EALREADY", 120 },
- { "EBADF", 9 },
- { "EBADMSG", 77 },
- { "EBUSY", 16 },
- { "ECANCELED", 140 },
- { "ECHILD", 10 },
- { "ECONNABORTED", 113 },
- { "ECONNREFUSED", 111 },
- { "ECONNRESET", 104 },
- { "EDEADLK", 45 },
- { "EDESTADDRREQ", 121 },
- { "EDOM", 33 },
- { "EDQUOT", 132 },
- { "EEXIST", 17 },
- { "EFAULT", 14 },
- { "EFBIG", 27 },
- { "EFTYPE", 79 },
- { "EHOSTDOWN", 117 },
- { "EHOSTUNREACH", 118 },
- { "EIDRM", 36 },
- { "EILSEQ", 138 },
- { "EINPROGRESS", 119 },
- { "EINTR", 4 },
- { "EINVAL", 22 },
- { "EIO", 5 },
- { "EISCONN", 127 },
- { "EISDIR", 21 },
- { "ELOOP", 92 },
- { "EMFILE", 24 },
- { "EMLINK", 31 },
- { "EMSGSIZE", 122 },
- { "EMULTIHOP", 74 },
- { "ENAMETOOLONG", 91 },
- { "ENETDOWN", 115 },
- { "ENETRESET", 126 },
- { "ENETUNREACH", 114 },
- { "ENFILE", 23 },
- { "ENOBUFS", 105 },
- { "ENODATA", 61 },
- { "ENODEV", 19 },
- { "ENOENT", 2 },
- { "ENOEXEC", 8 },
- { "ENOLCK", 46 },
- { "ENOLINK", 67 },
- { "ENOMEM", 12 },
- { "ENOMSG", 35 },
- { "ENOPROTOOPT", 109 },
- { "ENOSPC", 28 },
- { "ENOSR", 63 },
- { "ENOSTR", 60 },
- { "ENOSYS", 88 },
- { "ENOTCONN", 128 },
- { "ENOTDIR", 20 },
- { "ENOTEMPTY", 90 },
- { "ENOTRECOVERABLE", 141 },
- { "ENOTSOCK", 108 },
- { "ENOTSUP", 134 },
- { "ENOTTY", 25 },
- { "ENXIO", 6 },
- { "EOPNOTSUPP", 95 },
- { "EOVERFLOW", 139 },
- { "EOWNERDEAD", 142 },
- { "EPERM", 1 },
- { "EPFNOSUPPORT", 96 },
- { "EPIPE", 32 },
- { "EPROTO", 71 },
- { "EPROTONOSUPPORT", 123 },
- { "EPROTOTYPE", 107 },
- { "ERANGE", 34 },
- { "EROFS", 30 },
- { "ESPIPE", 29 },
- { "ESRCH", 3 },
- { "ESTALE", 133 },
- { "ETIME", 62 },
- { "ETIMEDOUT", 116 },
- { "ETOOMANYREFS", 129 },
- { "ETXTBSY", 26 },
- { "EWOULDBLOCK", 11 },
- { "EXDEV", 18 },
-#undef errno_defs
-/* end errno target macros */
-#endif
#ifdef signal_defs
/* from signal.h */
/* from sys/signal.h */
--- /dev/null
+/* Target errno mappings for newlib/libgloss environment.
+ Copyright 1995-2021 Free Software Foundation, Inc.
+ Contributed by Mike Frysinger.
+
+ This file is part of simulators.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This must come before any other includes. */
+#include "defs.h"
+
+#include <errno.h>
+
+#include "sim/callback.h"
+
+/* This file is kept up-to-date via the gennltvals.py script. Do not edit
+ anything between the START & END comment blocks below. */
+
+CB_TARGET_DEFS_MAP cb_init_errno_map[] = {
+ /* gennltvals: START */
+#ifdef E2BIG
+ { "E2BIG", E2BIG, 7 },
+#endif
+#ifdef EACCES
+ { "EACCES", EACCES, 13 },
+#endif
+#ifdef EADDRINUSE
+ { "EADDRINUSE", EADDRINUSE, 112 },
+#endif
+#ifdef EADDRNOTAVAIL
+ { "EADDRNOTAVAIL", EADDRNOTAVAIL, 125 },
+#endif
+#ifdef EAFNOSUPPORT
+ { "EAFNOSUPPORT", EAFNOSUPPORT, 106 },
+#endif
+#ifdef EAGAIN
+ { "EAGAIN", EAGAIN, 11 },
+#endif
+#ifdef EALREADY
+ { "EALREADY", EALREADY, 120 },
+#endif
+#ifdef EBADF
+ { "EBADF", EBADF, 9 },
+#endif
+#ifdef EBADMSG
+ { "EBADMSG", EBADMSG, 77 },
+#endif
+#ifdef EBUSY
+ { "EBUSY", EBUSY, 16 },
+#endif
+#ifdef ECANCELED
+ { "ECANCELED", ECANCELED, 140 },
+#endif
+#ifdef ECHILD
+ { "ECHILD", ECHILD, 10 },
+#endif
+#ifdef ECONNABORTED
+ { "ECONNABORTED", ECONNABORTED, 113 },
+#endif
+#ifdef ECONNREFUSED
+ { "ECONNREFUSED", ECONNREFUSED, 111 },
+#endif
+#ifdef ECONNRESET
+ { "ECONNRESET", ECONNRESET, 104 },
+#endif
+#ifdef EDEADLK
+ { "EDEADLK", EDEADLK, 45 },
+#endif
+#ifdef EDESTADDRREQ
+ { "EDESTADDRREQ", EDESTADDRREQ, 121 },
+#endif
+#ifdef EDOM
+ { "EDOM", EDOM, 33 },
+#endif
+#ifdef EDQUOT
+ { "EDQUOT", EDQUOT, 132 },
+#endif
+#ifdef EEXIST
+ { "EEXIST", EEXIST, 17 },
+#endif
+#ifdef EFAULT
+ { "EFAULT", EFAULT, 14 },
+#endif
+#ifdef EFBIG
+ { "EFBIG", EFBIG, 27 },
+#endif
+#ifdef EFTYPE
+ { "EFTYPE", EFTYPE, 79 },
+#endif
+#ifdef EHOSTDOWN
+ { "EHOSTDOWN", EHOSTDOWN, 117 },
+#endif
+#ifdef EHOSTUNREACH
+ { "EHOSTUNREACH", EHOSTUNREACH, 118 },
+#endif
+#ifdef EIDRM
+ { "EIDRM", EIDRM, 36 },
+#endif
+#ifdef EILSEQ
+ { "EILSEQ", EILSEQ, 138 },
+#endif
+#ifdef EINPROGRESS
+ { "EINPROGRESS", EINPROGRESS, 119 },
+#endif
+#ifdef EINTR
+ { "EINTR", EINTR, 4 },
+#endif
+#ifdef EINVAL
+ { "EINVAL", EINVAL, 22 },
+#endif
+#ifdef EIO
+ { "EIO", EIO, 5 },
+#endif
+#ifdef EISCONN
+ { "EISCONN", EISCONN, 127 },
+#endif
+#ifdef EISDIR
+ { "EISDIR", EISDIR, 21 },
+#endif
+#ifdef ELOOP
+ { "ELOOP", ELOOP, 92 },
+#endif
+#ifdef EMFILE
+ { "EMFILE", EMFILE, 24 },
+#endif
+#ifdef EMLINK
+ { "EMLINK", EMLINK, 31 },
+#endif
+#ifdef EMSGSIZE
+ { "EMSGSIZE", EMSGSIZE, 122 },
+#endif
+#ifdef EMULTIHOP
+ { "EMULTIHOP", EMULTIHOP, 74 },
+#endif
+#ifdef ENAMETOOLONG
+ { "ENAMETOOLONG", ENAMETOOLONG, 91 },
+#endif
+#ifdef ENETDOWN
+ { "ENETDOWN", ENETDOWN, 115 },
+#endif
+#ifdef ENETRESET
+ { "ENETRESET", ENETRESET, 126 },
+#endif
+#ifdef ENETUNREACH
+ { "ENETUNREACH", ENETUNREACH, 114 },
+#endif
+#ifdef ENFILE
+ { "ENFILE", ENFILE, 23 },
+#endif
+#ifdef ENOBUFS
+ { "ENOBUFS", ENOBUFS, 105 },
+#endif
+#ifdef ENODATA
+ { "ENODATA", ENODATA, 61 },
+#endif
+#ifdef ENODEV
+ { "ENODEV", ENODEV, 19 },
+#endif
+#ifdef ENOENT
+ { "ENOENT", ENOENT, 2 },
+#endif
+#ifdef ENOEXEC
+ { "ENOEXEC", ENOEXEC, 8 },
+#endif
+#ifdef ENOLCK
+ { "ENOLCK", ENOLCK, 46 },
+#endif
+#ifdef ENOLINK
+ { "ENOLINK", ENOLINK, 67 },
+#endif
+#ifdef ENOMEM
+ { "ENOMEM", ENOMEM, 12 },
+#endif
+#ifdef ENOMSG
+ { "ENOMSG", ENOMSG, 35 },
+#endif
+#ifdef ENOPROTOOPT
+ { "ENOPROTOOPT", ENOPROTOOPT, 109 },
+#endif
+#ifdef ENOSPC
+ { "ENOSPC", ENOSPC, 28 },
+#endif
+#ifdef ENOSR
+ { "ENOSR", ENOSR, 63 },
+#endif
+#ifdef ENOSTR
+ { "ENOSTR", ENOSTR, 60 },
+#endif
+#ifdef ENOSYS
+ { "ENOSYS", ENOSYS, 88 },
+#endif
+#ifdef ENOTCONN
+ { "ENOTCONN", ENOTCONN, 128 },
+#endif
+#ifdef ENOTDIR
+ { "ENOTDIR", ENOTDIR, 20 },
+#endif
+#ifdef ENOTEMPTY
+ { "ENOTEMPTY", ENOTEMPTY, 90 },
+#endif
+#ifdef ENOTRECOVERABLE
+ { "ENOTRECOVERABLE", ENOTRECOVERABLE, 141 },
+#endif
+#ifdef ENOTSOCK
+ { "ENOTSOCK", ENOTSOCK, 108 },
+#endif
+#ifdef ENOTSUP
+ { "ENOTSUP", ENOTSUP, 134 },
+#endif
+#ifdef ENOTTY
+ { "ENOTTY", ENOTTY, 25 },
+#endif
+#ifdef ENXIO
+ { "ENXIO", ENXIO, 6 },
+#endif
+#ifdef EOPNOTSUPP
+ { "EOPNOTSUPP", EOPNOTSUPP, 95 },
+#endif
+#ifdef EOVERFLOW
+ { "EOVERFLOW", EOVERFLOW, 139 },
+#endif
+#ifdef EOWNERDEAD
+ { "EOWNERDEAD", EOWNERDEAD, 142 },
+#endif
+#ifdef EPERM
+ { "EPERM", EPERM, 1 },
+#endif
+#ifdef EPFNOSUPPORT
+ { "EPFNOSUPPORT", EPFNOSUPPORT, 96 },
+#endif
+#ifdef EPIPE
+ { "EPIPE", EPIPE, 32 },
+#endif
+#ifdef EPROTO
+ { "EPROTO", EPROTO, 71 },
+#endif
+#ifdef EPROTONOSUPPORT
+ { "EPROTONOSUPPORT", EPROTONOSUPPORT, 123 },
+#endif
+#ifdef EPROTOTYPE
+ { "EPROTOTYPE", EPROTOTYPE, 107 },
+#endif
+#ifdef ERANGE
+ { "ERANGE", ERANGE, 34 },
+#endif
+#ifdef EROFS
+ { "EROFS", EROFS, 30 },
+#endif
+#ifdef ESPIPE
+ { "ESPIPE", ESPIPE, 29 },
+#endif
+#ifdef ESRCH
+ { "ESRCH", ESRCH, 3 },
+#endif
+#ifdef ESTALE
+ { "ESTALE", ESTALE, 133 },
+#endif
+#ifdef ETIME
+ { "ETIME", ETIME, 62 },
+#endif
+#ifdef ETIMEDOUT
+ { "ETIMEDOUT", ETIMEDOUT, 116 },
+#endif
+#ifdef ETOOMANYREFS
+ { "ETOOMANYREFS", ETOOMANYREFS, 129 },
+#endif
+#ifdef ETXTBSY
+ { "ETXTBSY", ETXTBSY, 26 },
+#endif
+#ifdef EWOULDBLOCK
+ { "EWOULDBLOCK", EWOULDBLOCK, 11 },
+#endif
+#ifdef EXDEV
+ { "EXDEV", EXDEV, 18 },
+#endif
+ /* gennltvals: END */
+ { NULL, -1, -1 },
+};