mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-26 04:31:03 +00:00
f578f97b97
Similar to the x86_64 build issues, glibc fails to build for armv7 with current mainline GCC because of aliases declared in the course of defining IFUNCs, which copy their attributes from a header declaration, ending up with fewer attributes than the (built-in) string function they alias: the relevant attributes (nonnull, leaf) are present on the header declaration, but elided therefrom when glibc itself if being built (whatever the reasons are for disabling the nonnull and leaf attributes in that case, and whether or not those reasons are actually still valid). This patch fixes the issue similarly to the x86_64 fix, by adding an addition __attribute_copy__ use (in this case, on the definition of arm_libc_ifunc_hidden_def). Tested with build-many-glibcs.py build for armeb-linux-gnueabi-be8. * sysdeps/arm/arm-ifunc.h [SHARED] (arm_libc_ifunc_hidden_def): Use __attribute_copy__ to copy attributes from name.
35 lines
1.3 KiB
C
35 lines
1.3 KiB
C
/* Common definition for ifunc resolvers. Linux/ARM version.
|
|
This file is part of the GNU C Library.
|
|
Copyright (C) 2017-2018 Free Software Foundation, Inc.
|
|
|
|
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/>. */
|
|
|
|
#include <sysdep.h>
|
|
#include <ifunc-init.h>
|
|
|
|
#define INIT_ARCH()
|
|
|
|
#define arm_libc_ifunc_redirected(redirected_name, name, expr) \
|
|
__ifunc (redirected_name, name, expr(hwcap), int hwcap, INIT_ARCH)
|
|
|
|
#if defined SHARED
|
|
# define arm_libc_ifunc_hidden_def(redirect_name, name) \
|
|
__hidden_ver1 (name, __GI_##name, redirect_name) \
|
|
__attribute__ ((visibility ("hidden"))) \
|
|
__attribute_copy__ (name)
|
|
#else
|
|
# define arm_libc_ifunc_hidden_def(redirect_name, name)
|
|
#endif
|