glibc/string
Adhemerval Zanella 6b7067460f Handle clang -Wignored-attributes on weak aliases
Clang issues a warning for double alias redirection, indicating that thei
original symbol is used even if a weak definition attempts to override it.

For instance, in the construction:

  int __internal_impl (...) {}
  weak_alias (__internal_impl, external_impl);
  #if SOMETHING
  weak_alias (external_impl, another_external_impl)
  #endif

Clang warns that another_external_impl always resolves to __internal_impl,
even if external_impl is a weak reference. Using the internal symbol for
both aliases resolves this warning.

This issue also occurs with certain libc_hidden_def usage:

  int __internal_impl (...) {}
  weak_alias (__internal_impl, __internal_alias)
  libc_hidden_weak (__internal_alias)

In this case, using a strong_alias is sufficient to avoid the warning
(since the alias is internal, there is no need to use a weak alias).

However, for the constructions like:

  int __internal_impl (...) {}
  weak_alias (__internal_impl, __internal_alias)
  libc_hidden_def (__internal_alias)
  weak_alias (__internal_impl, external_alias)
  libc_hidden_def (external_alias)

Clang warns that the internal external_alias will always resolve to
__GI___internal_impl, even if a weak definition of __GI_internal_impl is
overridden.  For this case, a new macro named static_weak_alias is used
to create a strong alias for SHARED, or a weak_alias otherwise.

With these changes, there is no need to check and enable the
-Wno-ignored-attributes suppression when using clang.

Checked with a build on affected ABIs, and a full check on aarch64,
armhf, i686, and x86_64.

Reviewed-by: Sam James <sam@gentoo.org>
2025-12-09 08:58:10 -03:00
..
bits Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
Depend
Makefile Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
Versions Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
_strerror.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-addsep.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-append.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-count.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-create.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-ctsep.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-delete.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-extract.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-insert.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-next.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
argz-replace.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz-stringify.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
argz.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
basename.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
bcopy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
bug-envz1.c
bug-strcoll1.c
bug-strcoll2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
bug-strncat1.c
bug-strpbrk1.c
bug-strspn1.c
bug-strtok1.c
byteswap.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
bzero.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
endian.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
envz.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
envz.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
explicit_bzero.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
ffs.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
ffsll.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
inl-tester.c
memccpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memcmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memcmpeq.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memfrob.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memmem.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
memmove.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memory.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
mempcpy.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
memrchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memset.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
memset_explicit.c Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
noinl-tester.c
rawmemchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
sigabbrev_np.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
sigdescr_np.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
stpcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
stpncpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
str-two-way.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
stratcliff.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcasecmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcasecmp_l.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcasestr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strchrnul.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcoll.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcoll_l.c Suppress -Wmaybe-uninitialized only for gcc 2025-10-21 09:24:05 -03:00
strcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strcspn.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strdup.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strerror.c Remove <libc-tsd.h> 2025-05-16 19:53:09 +02:00
strerror_l.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strerrordesc_np.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strerrorname_np.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strfry.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
string-inlines.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
string.h Define C23 header version macros 2025-11-27 19:32:49 +00:00
strings.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strlcat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strlcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strlen.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strncase.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strncase_l.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strncat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strncmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strncpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strndup.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strnlen.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strpbrk.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strrchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strsep.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strsignal.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strspn.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strstr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strtok.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strtok_r.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strverscmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strxfrm.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
strxfrm_l.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
swab.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-Xncmp-nonarray.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-Xnlen-nonarray.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-bcopy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-bzero.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-endian-file-scope.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-endian-sign-conversion.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-endian-types.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-explicit_bzero.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-ffs.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memccpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memchr.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
test-memcmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memcmpeq.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memcpy-large.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memcpy-support.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memmem.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memmove.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-mempcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memrchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-memset.c Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
test-memset_explicit.c Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
test-memswap.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-rawmemchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-sig_np.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-stpcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-stpncpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strcasecmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strcasestr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strcat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strchr.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
test-strchrnul.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strcmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strcspn.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strdup.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strerror-errno.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-string.h Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strlen.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
test-strncasecmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strncat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strncmp-nonarray.c Enhanced test coverage for strncmp, wcsncmp 2024-08-01 09:08:32 +02:00
test-strncmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strncpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strndup.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strnlen-nonarray.c Enhance test coverage for strnlen, wcsnlen 2024-08-01 09:07:34 +02:00
test-strnlen.c Handle clang -Wignored-attributes on weak aliases 2025-12-09 08:58:10 -03:00
test-strpbrk.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strrchr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strspn.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
test-strstr.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
testcopy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tester.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-bswap.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-cmp.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-const.c Implement C23 const-preserving standard library macros 2025-11-20 19:31:04 +00:00
tst-endian.c
tst-inlcall.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-memmove-overflow.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strcoll-overflow.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strerror-fail.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strerror.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strfry.c
tst-strlcat.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strlcat2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strlcpy.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strlcpy2.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strlen.c
tst-strsignal.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strtok.c
tst-strtok_r.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00
tst-strxfrm.c
tst-strxfrm2.c
tst-svc.c
tst-svc.expect
tst-svc.input
tst-svc2.c
tst-xbzero-opt.c Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
tst-xmemset-opt.c Implement C23 memset_explicit (bug 32378) 2025-10-01 15:14:09 +00:00
wordcopy.c Suppress -Wmaybe-uninitialized only for gcc 2025-10-21 09:24:05 -03:00
xpg-strerror.c Update copyright dates with scripts/update-copyrights 2025-01-01 11:22:09 -08:00