glibc/sysdeps/unix/sysv/linux/errlist-compat-data.h
Adhemerval Zanella 900fa25736 stdio: Remove the usage of $(fno-unit-at-a-time) for errlist.c
The errlist.c is built with -fno-toplevel-reorder to avoid compiler to
reorder the compat assembly directives due an assembler issue [1]
(fixed on 2.39).

This patch removes the compiler flags by split the compat symbol
generation in two phases.  First the _sys_errlist_internal internal
without any compat symbol directive is preprocessed to generate an
assembly source code.  This generate assembly is then used as input
on a platform agnostic errlist-data.S which then creates the compat
definitions.  This prevents compiler to move any compat directive
prior the _sys_errlist_internal definition itself.

Checked on a make check run-built-tests=no on all affected ABIs.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=29012
2022-05-13 10:54:41 -03:00

40 lines
1.3 KiB
C

/* Linux sys_errlist compat symbol definitions. Generic version.
Copyright (C) 2020-2022 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/>. */
#include <errlist-compat.h>
#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
DEFINE_COMPAT_ERRLIST (123, GLIBC_2_0)
#endif
#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3)
DEFINE_COMPAT_ERRLIST (125, GLIBC_2_1)
#endif
#if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_4)
DEFINE_COMPAT_ERRLIST (126, GLIBC_2_3)
#endif
#if SHLIB_COMPAT (libc, GLIBC_2_4, GLIBC_2_12)
DEFINE_COMPAT_ERRLIST (132, GLIBC_2_4)
#endif
#if SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_32)
DEFINE_COMPAT_ERRLIST (135, GLIBC_2_12)
#endif