aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/mach
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-04-24 21:25:31 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2020-07-07 14:10:58 -0300
commitf13d260190d47bd38c0ae939080001e7bb58bd04 (patch)
treeb64784f84e80dd326419c079852b1988d84ae8e5 /sysdeps/mach
parentb1ccfc061feee9ce616444ded8e1cd5acf9fa97f (diff)
downloadglibc-f13d260190d47bd38c0ae939080001e7bb58bd04.zip
glibc-f13d260190d47bd38c0ae939080001e7bb58bd04.tar.gz
glibc-f13d260190d47bd38c0ae939080001e7bb58bd04.tar.bz2
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/mach')
-rw-r--r--sysdeps/mach/hurd/err_hurd.sub5
-rw-r--r--sysdeps/mach/hurd/errlist.c11
2 files changed, 4 insertions, 12 deletions
diff --git a/sysdeps/mach/hurd/err_hurd.sub b/sysdeps/mach/hurd/err_hurd.sub
index 4a4dee3..3e9b37e 100644
--- a/sysdeps/mach/hurd/err_hurd.sub
+++ b/sysdeps/mach/hurd/err_hurd.sub
@@ -1,12 +1,11 @@
/* This file defines the Mach error system for Hurd server errors. */
#include <errno.h>
-
-extern const char *const _hurd_errlist[];
+#include <stdio.h> /* For _sys_errlist_internal */
/* Omit `const' because we are included with `static'
defined to `static const'. */
static struct error_subsystem err_hurd_sub[] =
{
- { "(os/hurd)", _HURD_ERRNOS, (const char *const *) _hurd_errlist },
+ { "(os/hurd)", _HURD_ERRNOS, _sys_errlist_internal },
};
diff --git a/sysdeps/mach/hurd/errlist.c b/sysdeps/mach/hurd/errlist.c
index 451e8fa..be752f0 100644
--- a/sysdeps/mach/hurd/errlist.c
+++ b/sysdeps/mach/hurd/errlist.c
@@ -15,14 +15,7 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-/* sys_errlist cannot have Unix semantics on the Hurd, so it is easier just
- to rename it. We also need to remap error codes to array indices by
- taking their subcode. */
-#define _sys_errlist_internal _hurd_errlist
-#define _sys_nerr_internal _hurd_nerr
-#define ERRLIST_NO_COMPAT 1
-
#include <mach/error.h>
-#define ERR_REMAP(n) (err_get_code (n))
-#include <sysdeps/gnu/errlist.c>
+#define ERR_MAP(value) err_get_code (value)
+#include <stdio-common/errlist.c>