Add support for GCC 9 attribute copy

System Internals / glibc - Martin Sebor [redhat.com] - 10 November 2018 00:24 EST

GCC 9 has gained an enhancement to help detect attribute mismatches between alias declarations and their targets. It consists of a new warning, -Wattribute-alias, an enhancement to an existing warning,
-Wmissing-attributes, and a new attribute called copy.

The purpose of the warnings is to help identify either possible bugs (an alias declared with more restrictive attributes than its target promises) or optimization or diagnostic opportunities (an alias target missing some attributes that it could be declared with that might benefit analysis and code generation). The purpose of the new attribute is to easily apply (almost) the same set of attributes to one declaration as those already present on another.

As expected (and intended) the enhancement triggers warnings for many alias declarations in Glibc code. This change, tested on x86_64-linux, avoids all instances of the new warnings by making use of the attribute where appropriate. To fully benefit from the enhancement Glibc will need to be compiled with-Wattribute-alias=2 and remaining warnings reviewed and dealt with (there are a couple of thousand but most should be straightforward to deal with).

ChangeLog:

- include/libc-symbols.h (__attribute_copy__): Define macro unless it's already defined. (_strong_alias): Use __attribute_copy__. (_weak_alias, __hidden_ver1, __hidden_nolink2): Same.
- misc/sys/cdefs.h (__attribute_copy__): New macro.
- sysdeps/x86_64/multiarch/memchr.c (memchr): Use __attribute_copy__.
- sysdeps/x86_64/multiarch/memcmp.c (memcmp): Same.
- sysdeps/x86_64/multiarch/mempcpy.c (mempcpy): Same.
- sysdeps/x86_64/multiarch/memset.c (memset): Same.
- sysdeps/x86_64/multiarch/stpcpy.c (stpcpy): Same.
- sysdeps/x86_64/multiarch/strcat.c (strcat): Same.
- sysdeps/x86_64/multiarch/strchr.c (strchr): Same.
- sysdeps/x86_64/multiarch/strcmp.c (strcmp): Same.
- sysdeps/x86_64/multiarch/strcpy.c (strcpy): Same.
- sysdeps/x86_64/multiarch/strcspn.c (strcspn): Same.
- sysdeps/x86_64/multiarch/strlen.c (strlen): Same.
- sysdeps/x86_64/multiarch/strncmp.c (strncmp): Same.
- sysdeps/x86_64/multiarch/strncpy.c (strncpy): Same.
- sysdeps/x86_64/multiarch/strnlen.c (strnlen): Same.
- sysdeps/x86_64/multiarch/strpbrk.c (strpbrk): Same.
- sysdeps/x86_64/multiarch/strrchr.c (strrchr): Same.
- sysdeps/x86_64/multiarch/strspn.c (strspn): Same.

1626a1cfcd Add support for GCC 9 attribute copy.
ChangeLog | 25 +++++++++++++++++++++++++
include/libc-symbols.h | 20 +++++++++++++++-----
misc/sys/cdefs.h | 10 ++++++++++
sysdeps/x86_64/multiarch/memchr.c | 2 +-
sysdeps/x86_64/multiarch/memcmp.c | 2 +-
sysdeps/x86_64/multiarch/mempcpy.c | 4 ++--
sysdeps/x86_64/multiarch/memset.c | 2 +-
sysdeps/x86_64/multiarch/stpcpy.c | 4 ++--
sysdeps/x86_64/multiarch/strcat.c | 2 +-
sysdeps/x86_64/multiarch/strchr.c | 2 +-
sysdeps/x86_64/multiarch/strcmp.c | 2 +-
sysdeps/x86_64/multiarch/strcpy.c | 2 +-
sysdeps/x86_64/multiarch/strcspn.c | 2 +-
sysdeps/x86_64/multiarch/strlen.c | 2 +-
sysdeps/x86_64/multiarch/strncat.c | 2 +-
sysdeps/x86_64/multiarch/strncmp.c | 2 +-
sysdeps/x86_64/multiarch/strncpy.c | 2 +-
sysdeps/x86_64/multiarch/strnlen.c | 4 ++--
sysdeps/x86_64/multiarch/strpbrk.c | 2 +-
sysdeps/x86_64/multiarch/strrchr.c | 2 +-
sysdeps/x86_64/multiarch/strspn.c | 2 +-
21 files changed, 71 insertions(+), 26 deletions(-)

Upstream: sourceware.org


  • Share