diff options
author | Roland McGrath <roland@hack.frob.com> | 2015-04-17 09:02:19 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2015-04-17 09:02:19 -0700 |
commit | d1e44df1fa5fefd8a083f6c1e909bbcdc97c6438 (patch) | |
tree | a76176eca62c0907dd7f135979312c8e55ad06a5 /sysdeps/nacl/errnos.awk | |
parent | f70925993ada98039250d46c62fb89c168b8f9d6 (diff) | |
download | glibc-d1e44df1fa5fefd8a083f6c1e909bbcdc97c6438.tar.gz glibc-d1e44df1fa5fefd8a083f6c1e909bbcdc97c6438.tar.xz glibc-d1e44df1fa5fefd8a083f6c1e909bbcdc97c6438.zip |
Add arm-nacl port.
Diffstat (limited to 'sysdeps/nacl/errnos.awk')
-rw-r--r-- | sysdeps/nacl/errnos.awk | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/sysdeps/nacl/errnos.awk b/sysdeps/nacl/errnos.awk new file mode 100644 index 0000000000..65fa19bd06 --- /dev/null +++ b/sysdeps/nacl/errnos.awk @@ -0,0 +1,87 @@ +# Script to produce bits/errno.h for NaCl. + +# Copyright (C) 2015 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# <http://www.gnu.org/licenses/>. + +BEGIN { maxerrno = 0 } + +$1 == "#define" && $2 ~ /NACL_ABI_E[A-Z0-9_]+/ && $3 ~ /[0-9]+/ { + ename = $2; + sub(/NACL_ABI_/, "", ename); + errno = $3 + 0; + if (errno > maxerrno) maxerrno = errno; + errnos[errno] = ename; + errnos_by_name[ename] = errno; + if ($4 == "/*" && !(ename in errno_text)) { + etext = $5; + for (i = 6; i <= NF && $i != "*/"; ++i) + etext = etext " " $i; + errno_text[ename] = etext; + } + next; +} + +$1 == "@comment" && $2 == "errno.h" { errnoh=1; next } +errnoh == 1 && $1 == "@comment" { + ++errnoh; + etext = $3; + for (i = 4; i <= NF; ++i) + etext = etext " " $i; + next; +} +errnoh == 2 && $1 == "@deftypevr" && $2 == "Macro" && $3 == "int" { + ename = $4; + errno_text[ename] = etext; + next; +} + +function define_errno(errno, ename) { + etext = errno_text[ename]; + if (length(ename) < 8) ename = ename "\t"; + printf "#define\t%s\t%d\t/* %s */\n", ename, errno, etext; +} + +END { + print "\ +/* This file generated by errnos.awk. */\n\ +\n\ +#if !defined __Emath_defined && (defined _ERRNO_H || defined __need_Emath)\n\ +#undef __need_Emath\n\ +#define __Emath_defined 1"; + emath["EDOM"] = emath["EILSEQ"] = emath["ERANGE"] = 1; + for (ename in emath) { + errno = errnos_by_name[ename]; + define_errno(errno, ename); + delete errnos[errno]; + } + print "\ +#endif\n\ +\n\ +#ifdef _ERRNO_H\n"; + + for (i = 1; i <= maxerrno; ++i) + if (i in errnos) define_errno(i, errnos[i]); + + print "\n\ +#define EWOULDBLOCK EAGAIN\n\ +#define ENOTSUP EOPNOTSUPP\n\ +\n\ +extern __thread int errno __attribute__ ((__tls_model__ (\"initial-exec\")));\n\ +#define errno errno\n\ +\n\ +#endif"; +} |