diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-04-24 21:25:31 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-07-07 14:10:58 -0300 |
commit | f13d260190d47bd38c0ae939080001e7bb58bd04 (patch) | |
tree | b64784f84e80dd326419c079852b1988d84ae8e5 /sysdeps/gnu/errlist.awk | |
parent | b1ccfc061feee9ce616444ded8e1cd5acf9fa97f (diff) | |
download | glibc-f13d260190d47bd38c0ae939080001e7bb58bd04.tar.gz glibc-f13d260190d47bd38c0ae939080001e7bb58bd04.tar.xz glibc-f13d260190d47bd38c0ae939080001e7bb58bd04.zip |
signal: Move sys_errlist to a compat symbol
The symbol is deprecated by strerror since its usage imposes some issues such as copy relocations. Its internal name is also changed to _sys_errlist_internal to avoid static linking usage. The compat code is also refactored by removing the over enginered errlist-compat.c generation from manual entried and extra comment token in linker script file. It disantangle the code generation from manual and simplify both Linux and Hurd compat code. The definitions from errlist.c are moved to errlist.h and a new test is added to avoid a new errno entry without an associated one in manual. Checked on x86_64-linux-gnu and i686-linux-gnu. I also run a check-abi on all affected platforms. Tested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'sysdeps/gnu/errlist.awk')
-rw-r--r-- | sysdeps/gnu/errlist.awk | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/sysdeps/gnu/errlist.awk b/sysdeps/gnu/errlist.awk deleted file mode 100644 index 09f80f5b44..0000000000 --- a/sysdeps/gnu/errlist.awk +++ /dev/null @@ -1,110 +0,0 @@ -# Copyright (C) 1991-2020 Free Software Foundation, Inc. -# This file is part of the GNU C Library. - -# The GNU C Library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. - -# The GNU C Library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. - -# You should have received a copy of the GNU Lesser General Public -# License along with the GNU C Library; if not, see -# <https://www.gnu.org/licenses/>. - -# errno.texi contains lines like: -# @deftypevr Macro int ENOSYS -# @errno{ENOSYS, 78, Function not implemented} -# Descriptive paragraph... -# @end deftypevr - -BEGIN { - - # Here we list the E* names that might be duplicate names for the - # same integer value on some systems. This causes the code below - # to generate ``#if defined (ALIAS) && ALIAS != ORIGINAL'' in the code, - # so the output does not presume that these are in fact aliases. - # We list here all the known potential cases on any system, - # so that the C source we produce will do the right thing based - # on the actual #define'd values it's compiled with. - alias["EWOULDBLOCK"]= "EAGAIN"; - alias["EDEADLOCK"] = "EDEADLK"; - alias["ENOTSUP"] = "EOPNOTSUPP"; - - print "/* This file is generated from errno.texi by errlist.awk. */" - print ""; - print "#include <errno.h>"; - print "#include <libintl.h>"; - print ""; - print "#ifndef ERR_REMAP"; - print "# define ERR_REMAP(n) n"; - print "#endif"; - print ""; - - print "#if !defined EMIT_ERR_MAX && !defined ERRLIST_NO_COMPAT"; - print "# include <errlist-compat.h>"; - print "#endif"; - print "#ifdef ERR_MAX"; - print "# define ERRLIST_SIZE ERR_MAX + 1"; - print "#else" - print "# define ERR_MAX 0"; - print "# define ERRLIST_SIZE"; - print "#endif"; - - print "const char *const _sys_errlist_internal[ERRLIST_SIZE] ="; - print " {"; - print " [0] = N_(\"Success\")," - } - -/^@errno\{/ \ - { - etext = $3; - for (i = 4; i <= NF; ++i) - etext = etext " " $i; - etext = substr(etext, 1, length(etext)-1) - e = substr($1, 8, length($1)-8) - errno = substr($2, 1, length($2)-1) + 0 - if (alias[e]) - printf "#if defined (%s) && %s != %s\n", e, e, alias[e]; - else - printf "#ifdef %s\n", e; - errnoh = 4; - desc=""; - next; - } -errnoh == 4 && $1 == "@end" && $2 == "deftypevr" \ - { - printf "/*%s */\n", desc; - printf " [ERR_REMAP (%s)] = N_(\"%s\"),\n", e, etext; - printf "# if %s > ERR_MAX\n", e; - print "# undef ERR_MAX"; - printf "# define ERR_MAX %s\n", e; - print "# endif"; - print "#endif"; - errnoh = 0; - next; - } -errnoh == 4 \ - { - # This magic tag in C comments gets them copied into libc.pot. - desc = desc "\nTRANS" ($0 != "" ? " " : "") $0; next - } -END { - print " };"; - print ""; - print "#define NERR \\"; - print " (sizeof _sys_errlist_internal / sizeof _sys_errlist_internal [0])"; - print "const int _sys_nerr_internal = NERR;" - print ""; - print "#if IS_IN (libc) && !defined ERRLIST_NO_COMPAT"; - print "# include <errlist-compat.c>"; - print "#endif"; - print ""; - print "#ifdef EMIT_ERR_MAX"; - print "void dummy (void)" - print "{ asm volatile (\" @@@ %0 @@@ \" : : \"i\" (ERR_REMAP (ERR_MAX))); }" - print "#endif"; -} |