glibc/misc
Martin Sebor 1626a1cfcd Add support for GCC 9 attribute copy.
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.
2018-11-09 17:24:12 -07:00
..
bits Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sys Add support for GCC 9 attribute copy. 2018-11-09 17:24:12 -07:00
acct.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
allocate_once.c Implement allocate_once for atomic initialization with allocation 2018-05-23 15:27:01 +02:00
ar.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
brk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
bug-hsearch1.c .. 2009-01-23 20:41:36 +00:00
bug18240.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
chflags.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
chroot.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
daemon.c Consolidate non cancellable close call 2017-08-18 18:38:55 -03:00
dirname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
efgcvt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
efgcvt_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
err.c error, warn, warnx: Use __fxprintf for wide printing [BZ #23519] 2018-08-14 17:54:49 +02:00
err.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
error.c error, warn, warnx: Use __fxprintf for wide printing [BZ #23519] 2018-08-14 17:54:49 +02:00
error.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fchflags.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fdatasync.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fgetxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
flistxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fremovexattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fsetxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstab.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
fstab.h Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
fsync.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftruncate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ftruncate64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
futimes.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
futimesat.c Add missing start-of-file descriptive comment. 2018-03-06 09:21:04 +01:00
getauxval.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getclktck.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getdomain.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getdtsz.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gethostid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gethostname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getloadavg.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getpagesize.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getpass.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getsysstats.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
getttyent.c Fix -Os getc_unlocked linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-21 18:01:11 +00:00
getusershell.c Use (void) in no-arguments function definitions. 2013-06-08 00:22:23 +00:00
getxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
gtty.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
hsearch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
hsearch_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ifunc-impl-list.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
init-misc.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
insremque.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ioctl.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lgetxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
libgen.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
listxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
llistxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lremovexattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lsearch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lsetxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
lutimes.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
madvise.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
makedev.c Fix -Os gnu_dev_* linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-07 14:57:31 +00:00
Makefile Add tests with floating-point arguments for err* and verr* functions 2018-11-06 11:22:34 -02:00
mincore.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkdtemp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkostemp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkostemp64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkostemps.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkostemps64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkstemp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkstemp64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkstemps.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mkstemps64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mktemp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mlockall.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mmap.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mmap64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mntent.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mntent.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mntent_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mprotect.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
msync.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
munlock.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
munlockall.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
munmap.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
preadv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
preadv2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
preadv64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
preadv64v2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pselect.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ptrace.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pwritev.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pwritev2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pwritev64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
pwritev64v2.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
qefgcvt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
qefgcvt_r.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
readv.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
reboot.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
regexp.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
regexp.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
remap_file_pages.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
removexattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
revoke.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sbrk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
search.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
select.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setdomain.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setegid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
seteuid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sethostid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sethostname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setregid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setreuid.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
setxattr.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sgtty.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sstk.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
stab.h
stty.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
swapoff.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
swapon.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
sync.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syncfs.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syscall.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syscall.h
sysexits.h
syslog.c Fix -Os putc_unlocked, fputc_unlocked linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-21 18:02:24 +00:00
syslog.h
truncate.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
truncate64.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tsearch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-allocate_once.c Implement allocate_once for atomic initialization with allocation 2018-05-23 15:27:01 +02:00
tst-atomic-long.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-atomic.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-dirname.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-efgcvt.c Convert tst-efgcvt to the new test framework 2018-11-09 16:16:38 -02:00
tst-empty.c Move all tests out of the csu subdirectory 2016-12-21 11:52:19 +01:00
tst-error1.c Split DIAG_* macros to new header libc-diag.h. 2017-02-25 09:59:46 -05:00
tst-fdset.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-gethostid.c misc: New test misc/tst-gethostid 2018-09-20 12:03:01 +02:00
tst-hsearch.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-insremque.c [BZ #2766] 2006-06-17 17:01:42 +00:00
tst-ldbl-error.c Use TEST_COMPARE_STRING in recently added test 2018-11-08 22:42:01 -02:00
tst-ldbl-warn.c Use TEST_COMPARE_STRING in recently added test 2018-11-08 22:42:01 -02:00
tst-makedev.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mntent-blank-corrupt.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mntent-blank-passno.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-mntent.c getmntent: fix memory corruption w/blank lines [BZ #18887] 2015-08-29 18:07:00 -04:00
tst-mntent2.c Fix warning in misc/tst-mntent2.c. 2014-12-16 10:27:16 +01:00
tst-preadvwritev-common.c Avoid running some tests if the file system does not support holes 2018-08-21 12:56:53 +02:00
tst-preadvwritev.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-preadvwritev2-common.c Fix tst-preadvwritev2 build failure on HURD 2018-10-23 14:57:02 -03:00
tst-preadvwritev2.c Fix misreported errno on preadv2/pwritev2 (BZ#23579) 2018-09-28 10:08:09 -03:00
tst-preadvwritev64.c Avoid running some tests if the file system does not support holes 2018-08-21 12:56:53 +02:00
tst-preadvwritev64v2.c Fix misreported errno on preadv2/pwritev2 (BZ#23579) 2018-09-28 10:08:09 -03:00
tst-pselect.c misc/tst-pselect.c: Add copyright header 2018-01-02 22:07:59 +01:00
tst-tsearch.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
tst-warn-wide.c error, warn, warnx: Use __fxprintf for wide printing [BZ #23519] 2018-08-14 17:54:49 +02:00
ttyent.h Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
ttyslot.c As a minor cleanup remove the (r)index defines from include/string.h as 2017-02-06 18:15:18 +00:00
ualarm.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
usleep.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ustat.c Deprecate ustat syscall interface 2018-05-02 08:43:31 -03:00
utimes.c Add missing start-of-file descriptive comment. 2018-03-06 09:21:04 +01:00
Versions Implement allocate_once for atomic initialization with allocation 2018-05-23 15:27:01 +02:00
vhangup.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
writev.c Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00