[08/11] configure: Use -Wno-ignored-attributes if compiler warns about multiple aliases
Checks
Context |
Check |
Description |
dj/TryBot-apply_patch |
success
|
Patch applied to master at the time it was sent
|
Commit Message
clang emits an warning when a double alias redirection is used, to warn
the the original symbol will be used even when weak definition is
overridden. Howerver, this is a common pattern for weak_alias, where
multiple alias are set to same symbol.
---
argp/Makefile | 7 ++++---
configure | 29 +++++++++++++++++++++++++++++
configure.ac | 22 ++++++++++++++++++++++
dirent/Makefile | 1 +
inet/Makefile | 3 +++
io/Makefile | 18 ++++++++++--------
libio/Makefile | 14 +++++++++++---
login/Makefile | 1 +
misc/Makefile | 2 ++
posix/Makefile | 6 +++---
resolv/Makefile | 1 +
resource/Makefile | 3 +++
socket/Makefile | 10 +++++-----
stdio-common/Makefile | 2 ++
stdlib/Makefile | 12 ++++++++++++
string/Makefile | 9 +++++++++
sysdeps/aarch64/Makefile | 1 +
sysdeps/arm/Makefile | 4 ++++
sysdeps/wordsize-64/Makefile | 5 +++++
termios/Makefile | 1 +
time/Makefile | 1 +
wcsmbs/Makefile | 24 ++++++++++++++++--------
wctype/Makefile | 2 ++
23 files changed, 148 insertions(+), 30 deletions(-)
Comments
On 2022-10-28, Adhemerval Zanella via Libc-alpha wrote:
>clang emits an warning when a double alias redirection is used, to warn
>the the original symbol will be used even when weak definition is
>overridden. Howerver, this is a common pattern for weak_alias, where
>multiple alias are set to same symbol.
Confirmed that the pattern is common.
% rg -U 'libc_hidden_def.*\nweak_alias.*\nlibc_hidden_weak' -l
login/getlogin_r.c
libio/iofgets_u.c
libio/iofflush.c
libio/iofputs_u.c
libio/iofflush_u.c
libio/iofgets.c
libio/fileno.c
string/memmem.c
resource/getrlimit64.c
string/argz-next.c
inet/if_index.c
io/open.c
string/basename.c
wcsmbs/wmemset.c
wcsmbs/wcschr.c
wcsmbs/wmemchr.c
wctype/wcfuncs.c
resolv/inet_pton.c
sysdeps/x86_64/wmemchr.S
sysdeps/x86_64/memset.S
sysdeps/unix/getlogin_r.c
sysdeps/x86_64/wcschr.S
sysdeps/mach/hurd/getpid.c
sysdeps/mach/hurd/read.c
sysdeps/mach/hurd/write.c
sysdeps/mach/hurd/getlogin_r.c
sysdeps/mach/hurd/if_index.c
sysdeps/mach/hurd/fcntl.c
sysdeps/mach/hurd/open.c
sysdeps/unix/sysv/linux/getlogin_r.c
sysdeps/unix/sysv/linux/fcntl64.c
sysdeps/unix/sysv/linux/if_index.c
The three macros can be reordered and there may be more results.
I just took some notes here https://maskray.me/blog/2021-10-10-when-can-glibc-be-built-with-clang#alias-to-a-weak-alias
I feel that the pattern is ugly but I cannot figure out a better way. Clang has a reasonable diagnostic. It is fine to
ignore it as the Clang symbol codegen matches GCC.
```
26: 0000000000000000 596 FUNC GLOBAL HIDDEN 1 __GI___mbrtowc
33: 0000000000000000 596 FUNC GLOBAL DEFAULT 1 __mbrtowc
34: 0000000000000000 596 FUNC WEAK HIDDEN 1 __GI_mbrtowc
35: 0000000000000000 596 FUNC WEAK DEFAULT 1 mbrtowc
```
So here is a Reviewed-by tag: but I really hope that we can come up with a better way.
Reviewed-by: Fangrui Song <maskray@google.com>
On 29/10/22 02:59, Fangrui Song wrote:
> On 2022-10-28, Adhemerval Zanella via Libc-alpha wrote:
>> clang emits an warning when a double alias redirection is used, to warn
>> the the original symbol will be used even when weak definition is
>> overridden. Howerver, this is a common pattern for weak_alias, where
>> multiple alias are set to same symbol.
>
> Confirmed that the pattern is common.
> % rg -U 'libc_hidden_def.*\nweak_alias.*\nlibc_hidden_weak' -l
> login/getlogin_r.c
> libio/iofgets_u.c
> libio/iofflush.c
> libio/iofputs_u.c
> libio/iofflush_u.c
> libio/iofgets.c
> libio/fileno.c
> string/memmem.c
> resource/getrlimit64.c
> string/argz-next.c
> inet/if_index.c
> io/open.c
> string/basename.c
> wcsmbs/wmemset.c
> wcsmbs/wcschr.c
> wcsmbs/wmemchr.c
> wctype/wcfuncs.c
> resolv/inet_pton.c
> sysdeps/x86_64/wmemchr.S
> sysdeps/x86_64/memset.S
> sysdeps/unix/getlogin_r.c
> sysdeps/x86_64/wcschr.S
> sysdeps/mach/hurd/getpid.c
> sysdeps/mach/hurd/read.c
> sysdeps/mach/hurd/write.c
> sysdeps/mach/hurd/getlogin_r.c
> sysdeps/mach/hurd/if_index.c
> sysdeps/mach/hurd/fcntl.c
> sysdeps/mach/hurd/open.c
> sysdeps/unix/sysv/linux/getlogin_r.c
> sysdeps/unix/sysv/linux/fcntl64.c
> sysdeps/unix/sysv/linux/if_index.c
>
> The three macros can be reordered and there may be more results.
Yes, I added as per need for the ABIs I am working now (aarch64, x86_64, i686,
and armhf). It would most likely need to add such warning suppression when/if
more architecture are enabled.
>
> I just took some notes here https://maskray.me/blog/2021-10-10-when-can-glibc-be-built-with-clang#alias-to-a-weak-alias
> I feel that the pattern is ugly but I cannot figure out a better way. Clang has a reasonable diagnostic. It is fine to ignore it as the Clang symbol codegen matches GCC.
>
> ```
> 26: 0000000000000000 596 FUNC GLOBAL HIDDEN 1 __GI___mbrtowc
> 33: 0000000000000000 596 FUNC GLOBAL DEFAULT 1 __mbrtowc
> 34: 0000000000000000 596 FUNC WEAK HIDDEN 1 __GI_mbrtowc
> 35: 0000000000000000 596 FUNC WEAK DEFAULT 1 mbrtowc
> ```
>
> So here is a Reviewed-by tag: but I really hope that we can come up with a better way.
I am open to how to better solve as well, I might revise it in the future.
>
> Reviewed-by: Fangrui Song <maskray@google.com>
Thanks.
On 2022-10-31, Adhemerval Zanella Netto wrote:
>
>
>On 29/10/22 02:59, Fangrui Song wrote:
>> On 2022-10-28, Adhemerval Zanella via Libc-alpha wrote:
>>> clang emits an warning when a double alias redirection is used, to warn
>>> the the original symbol will be used even when weak definition is
>>> overridden. Howerver, this is a common pattern for weak_alias, where
>>> multiple alias are set to same symbol.
>>
>> Confirmed that the pattern is common.
>> % rg -U 'libc_hidden_def.*\nweak_alias.*\nlibc_hidden_weak' -l
>> login/getlogin_r.c
>> libio/iofgets_u.c
>> libio/iofflush.c
>> libio/iofputs_u.c
>> libio/iofflush_u.c
>> libio/iofgets.c
>> libio/fileno.c
>> string/memmem.c
>> resource/getrlimit64.c
>> string/argz-next.c
>> inet/if_index.c
>> io/open.c
>> string/basename.c
>> wcsmbs/wmemset.c
>> wcsmbs/wcschr.c
>> wcsmbs/wmemchr.c
>> wctype/wcfuncs.c
>> resolv/inet_pton.c
>> sysdeps/x86_64/wmemchr.S
>> sysdeps/x86_64/memset.S
>> sysdeps/unix/getlogin_r.c
>> sysdeps/x86_64/wcschr.S
>> sysdeps/mach/hurd/getpid.c
>> sysdeps/mach/hurd/read.c
>> sysdeps/mach/hurd/write.c
>> sysdeps/mach/hurd/getlogin_r.c
>> sysdeps/mach/hurd/if_index.c
>> sysdeps/mach/hurd/fcntl.c
>> sysdeps/mach/hurd/open.c
>> sysdeps/unix/sysv/linux/getlogin_r.c
>> sysdeps/unix/sysv/linux/fcntl64.c
>> sysdeps/unix/sysv/linux/if_index.c
>>
>> The three macros can be reordered and there may be more results.
>
>Yes, I added as per need for the ABIs I am working now (aarch64, x86_64, i686,
>and armhf). It would most likely need to add such warning suppression when/if
>more architecture are enabled.
>
>>
>> I just took some notes here https://maskray.me/blog/2021-10-10-when-can-glibc-be-built-with-clang#alias-to-a-weak-alias
>> I feel that the pattern is ugly but I cannot figure out a better way. Clang has a reasonable diagnostic. It is fine to ignore it as the Clang symbol codegen matches GCC.
>>
>> ```
>> 26: 0000000000000000 596 FUNC GLOBAL HIDDEN 1 __GI___mbrtowc
>> 33: 0000000000000000 596 FUNC GLOBAL DEFAULT 1 __mbrtowc
>> 34: 0000000000000000 596 FUNC WEAK HIDDEN 1 __GI_mbrtowc
>> 35: 0000000000000000 596 FUNC WEAK DEFAULT 1 mbrtowc
>> ```
>>
>> So here is a Reviewed-by tag: but I really hope that we can come up with a better way.
>
>I am open to how to better solve as well, I might revise it in the future.
I think there is likely room for improvement but that can be very tricky (need to think how to reorganize the attributes and need to refactor at least the above files).
-Wno-ignored-attributes is a decent solution for now, so I provided a Reviewed-by: :)
>>
>> Reviewed-by: Fangrui Song <maskray@google.com>
>
>Thanks.
@@ -29,9 +29,10 @@ routines = $(addprefix argp-, ba fmtstream fs-xinl help parse pv \
tests = argp-test tst-argp1 bug-argp1 tst-argp2 bug-argp2 \
tst-ldbl-argp
-CFLAGS-argp-help.c += $(uses-callbacks) -fexceptions
-CFLAGS-argp-parse.c += $(uses-callbacks)
-CFLAGS-argp-fmtstream.c += -fexceptions
+CFLAGS-argp-help.c += $(uses-callbacks) -fexceptions $(config-cflags-wno-ignored-attributes)
+CFLAGS-argp-parse.c += $(uses-callbacks) $(config-cflags-wno-ignored-attributes)
+CFLAGS-argp-fmtstream.c += -fexceptions $(config-cflags-wno-ignored-attributes)
+CFLAGS-argp-fs-xinl.c += $(config-cflags-wno-ignored-attributes)
bug-argp1-ARGS = -- --help
bug-argp2-ARGS = -- -d 111 --dstaddr 222 -p 333 --peer 444
@@ -6257,6 +6257,35 @@ $as_echo "$libc_cv_mtls_dialect_gnu2" >&6; }
config_vars="$config_vars
have-mtls-dialect-gnu2 = $libc_cv_mtls_dialect_gnu2"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if -Wno-ignored-attributes is required for aliases" >&5
+$as_echo_n "checking if -Wno-ignored-attributes is required for aliases... " >&6; }
+if ${libc_cv_wno_ignored_attributes+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat > conftest.c <<EOF
+void __foo (void)
+{
+}
+extern __typeof (__foo) foo __attribute__ ((weak, alias ("__foo")));
+extern __typeof (__foo) bar __attribute__ ((weak, alias ("foo")));
+EOF
+libc_cv_wno_ignored_attributes=""
+if ! { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then
+ libc_cv_wno_ignored_attributes="-Wno-ignored-attributes"
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_wno_ignored_attributes" >&5
+$as_echo "$libc_cv_wno_ignored_attributes" >&6; }
+config_vars="$config_vars
+config-cflags-wno-ignored-attributes = $libc_cv_wno_ignored_attributes"
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc puts quotes around section names" >&5
$as_echo_n "checking whether cc puts quotes around section names... " >&6; }
if ${libc_cv_have_section_quotes+:} false; then :
@@ -1403,6 +1403,28 @@ rm -f conftest*])
AC_SUBST(libc_cv_mtls_dialect_gnu2)
LIBC_CONFIG_VAR([have-mtls-dialect-gnu2], [$libc_cv_mtls_dialect_gnu2])
+dnl clang emits an warning when a double alias redirection is used, to warn
+dnl the the original symbol will be used even when weak definition is overridden.
+dnl This is a common pattern for weak_alias, where multiple alias are set to
+dnl same symbol.
+AC_CACHE_CHECK([if -Wno-ignored-attributes is required for aliases],
+ libc_cv_wno_ignored_attributes, [dnl
+cat > conftest.c <<EOF
+void __foo (void)
+{
+}
+extern __typeof (__foo) foo __attribute__ ((weak, alias ("__foo")));
+extern __typeof (__foo) bar __attribute__ ((weak, alias ("foo")));
+EOF
+libc_cv_wno_ignored_attributes=""
+if ! AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Werror -c conftest.c])
+then
+ libc_cv_wno_ignored_attributes="-Wno-ignored-attributes"
+fi
+rm -f conftest*])
+LIBC_CONFIG_VAR([config-cflags-wno-ignored-attributes],
+ [$libc_cv_wno_ignored_attributes])
+
AC_CACHE_CHECK(whether cc puts quotes around section names,
libc_cv_have_section_quotes,
[cat > conftest.c <<EOF
@@ -37,6 +37,7 @@ CFLAGS-scandir.c += $(uses-callbacks)
CFLAGS-scandir64.c += $(uses-callbacks)
CFLAGS-scandir-tail.c += $(uses-callbacks)
CFLAGS-scandir64-tail.c += $(uses-callbacks)
+CFLAGS-dirfd.c += $(config-cflags-wno-ignored-attributes)
include ../Rules
@@ -106,6 +106,9 @@ CFLAGS-either_ntoh.c += -fexceptions
CFLAGS-either_hton.c += -fexceptions
CFLAGS-getnetgrent.c += -fexceptions
CFLAGS-getnetgrent_r.c += -fexceptions
+CFLAGS-in6_addr.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-if_index.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-ifaddrs.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-tst-checks-posix.c += -std=c99
CFLAGS-tst-sockaddr.c += -fno-strict-aliasing
@@ -107,20 +107,21 @@ endif
include ../Rules
-CFLAGS-open.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-open.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
+CFLAGS-openat.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-open64.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-creat.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-creat64.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fcntl.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fcntl64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-fcntl.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
+CFLAGS-fcntl64.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-poll.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-ppoll.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-lockf.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-lockf64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-lockf64.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-statfs.c += -fexceptions
CFLAGS-fstatfs.c += -fexceptions
-CFLAGS-statvfs.c += -fexceptions
-CFLAGS-fstatvfs.c += -fexceptions
+CFLAGS-statvfs.c += -fexceptions $(config-cflags-wno-ignored-attributes)
+CFLAGS-fstatvfs.c += -fexceptions $(config-cflags-wno-ignored-attributes)
CFLAGS-fts.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
CFLAGS-fts64.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
CFLAGS-fts64-time64.c += -Wno-uninitialized $(uses-callbacks) -fexceptions
@@ -131,9 +132,10 @@ CFLAGS-posix_fallocate.c += -fexceptions
CFLAGS-posix_fallocate64.c += -fexceptions
CFLAGS-fallocate.c += -fexceptions
CFLAGS-fallocate64.c += -fexceptions
-CFLAGS-read.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-write.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-read.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
+CFLAGS-write.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-close.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-lseek64.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-test-stat.c += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
CFLAGS-test-lfs.c += -D_LARGEFILE64_SOURCE
@@ -112,18 +112,18 @@ CFLAGS-getchar.c += -fexceptions
CFLAGS-getwc.c += -fexceptions
CFLAGS-getwchar.c += -fexceptions
CFLAGS-iofclose.c += -fexceptions
-CFLAGS-iofflush.c += -fexceptions
+CFLAGS-iofflush.c += -fexceptions $(config-cflags-wno-ignored-attributes)
CFLAGS-iofgetpos64.c += -fexceptions
CFLAGS-iofgetpos.c += -fexceptions
CFLAGS-iofgets.c += -fexceptions
CFLAGS-iofgetws.c += -fexceptions
-CFLAGS-iofputs.c += -fexceptions
+CFLAGS-iofputs.c += -fexceptions $(config-cflags-wno-ignored-attributes)
CFLAGS-iofputws.c += -fexceptions
CFLAGS-iofread.c += -fexceptions
CFLAGS-iofsetpos64.c += -fexceptions
CFLAGS-iofsetpos.c += -fexceptions
CFLAGS-ioftell.c += -fexceptions
-CFLAGS-iofwrite.c += -fexceptions
+CFLAGS-iofwrite.c += -fexceptions $(config-cflags-wno-ignored-attributes)
CFLAGS-iogetdelim.c += -fexceptions
CFLAGS-iogetline.c += -fexceptions
CFLAGS-iogets.c += -fexceptions
@@ -153,6 +153,14 @@ CFLAGS-oldiofopen.c += -fexceptions
CFLAGS-iofopen.c += -fexceptions
CFLAGS-iofopen64.c += -fexceptions
CFLAGS-oldtmpfile.c += -fexceptions
+CFLAGS-fileno.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-feof_u.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-ferror_u.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-getc_u.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-iofflush_u.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-putc_u.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-iofgets_u.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-iofputs_u.c += $(config-cflags-wno-ignored-attributes)
# XXX Do we need filedoalloc and wfiledoalloc? Others?
CFLAGS-tst_putwc.c += -DOBJPFX=\"$(objpfx)\"
@@ -64,6 +64,7 @@ endif # $(have-GLIBC_2.33)
include ../Rules
CFLAGS-getpt.c += -fexceptions
+CFLAGS-getlogin_r.c += $(config-cflags-wno-ignored-attributes)
ifeq (yesyes,$(have-fpie)$(build-shared))
pt_chown-cflags += $(pie-ccflag)
@@ -144,6 +144,8 @@ CFLAGS-tst-tsearch.c += $(stack-align-test-flags)
CFLAGS-msync.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-fdatasync.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-fsync.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-makedev.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-mmap64.c += $(config-cflags-wno-ignored-attributes)
# Called during static library initialization, so turn stack-protection
# off for non-shared builds.
@@ -248,9 +248,9 @@ $(objpfx)config-name.h: $(..)scripts/config-uname.sh $(common-objpfx)config.make
CFLAGS-getaddrinfo.c += -DRESOLVER -fexceptions
CFLAGS-pause.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-pread.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pread64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pread64.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-pwrite.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-pwrite64.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-pwrite64.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-sleep.c += -fexceptions
CFLAGS-wait.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-waitid.c += -fexceptions -fasynchronous-unwind-tables
@@ -279,7 +279,7 @@ CFLAGS-execl.os = -fomit-frame-pointer
CFLAGS-execvp.os = -fomit-frame-pointer
CFLAGS-execlp.os = -fomit-frame-pointer
CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-fork.c = $(libio-mtsafe)
+CFLAGS-fork.c = $(libio-mtsafe) $(config-cflags-wno-ignored-attributes)
tstgetopt-ARGS = -a -b -cfoobar --required foobar --optional=bazbug \
--none random --col --color --colour
@@ -234,6 +234,7 @@ LOCALES := en_US.UTF-8 en_US.ISO-8859-1
include ../gen-locales.mk
CFLAGS-res_hconf.c += -fexceptions
+CFLAGS-inet_pton.c += $(config-cflags-wno-ignored-attributes)
# The DNS NSS modules needs the resolver.
$(objpfx)libnss_dns.so: $(objpfx)libresolv.so
@@ -28,3 +28,6 @@ routines := getrlimit setrlimit getrlimit64 setrlimit64 getrusage ulimit \
tests = tst-getrlimit bug-ulimit1
include ../Rules
+
+CFLAGS-getrlimit64.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-getrlimit.c += $(config-cflags-wno-ignored-attributes)
@@ -49,11 +49,11 @@ aux := sa_len
include ../Rules
-CFLAGS-recv.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-recv.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
CFLAGS-recvfrom.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-sendto.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-recvmsg.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendmsg.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-send.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-connect.c += -fexceptions -fasynchronous-unwind-tables
-CFLAGS-accept.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sendmsg.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
+CFLAGS-send.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
+CFLAGS-connect.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
+CFLAGS-accept.c += -fexceptions -fasynchronous-unwind-tables $(config-cflags-wno-ignored-attributes)
@@ -381,6 +381,8 @@ CFLAGS-isoc99_vscanf.c += -fexceptions
CFLAGS-isoc99_fscanf.c += -fexceptions
CFLAGS-isoc99_scanf.c += -fexceptions
+CFLAGS-dprintf.c += $(config-cflags-wno-ignored-attributes)
+
# scanf14a.c and scanf16a.c test a deprecated extension which is no
# longer visible under most conformance levels; see the source files
# for more detail.
@@ -375,6 +375,18 @@ CFLAGS-strfromd.c += $(libio-mtsafe)
CFLAGS-strfromf.c += $(libio-mtsafe)
CFLAGS-strfroml.c += $(libio-mtsafe)
+CFLAGS-strtol.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtoul.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtoll.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtoull.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtof.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtof_l.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtod.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtod_l.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtold.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strtold_l.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-secure-getenv.c += $(config-cflags-wno-ignored-attributes)
+
CFLAGS-tst-bsearch.c += $(stack-align-test-flags)
CFLAGS-tst-qsort.c += $(stack-align-test-flags)
CFLAGS-tst-makecontext.c += -funwind-tables
@@ -231,6 +231,15 @@ LDFLAGS-tst-xbzero-opt = -z now
CFLAGS-memcpy.c += $(no-stack-protector)
CFLAGS-wordcopy.c += $(no-stack-protector)
+CFLAGS-argz-next.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-basename.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-ffs.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-memmem.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-memchr.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-mempcpy.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-stpcpy.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-strnlen.c += $(config-cflags-wno-ignored-attributes)
+
ifeq ($(run-built-tests),yes)
$(objpfx)tst-svc-cmp.out: tst-svc.expect $(objpfx)tst-svc.out
cmp $^ > $@; \
@@ -57,6 +57,7 @@ endif
ifeq ($(subdir),math)
CPPFLAGS += -I../soft-fp
+CFLAGS-feupdateenv.c += $(config-cflags-wno-ignored-attributes)
endif
ifeq ($(subdir),misc)
@@ -54,6 +54,10 @@ ifeq ($(subdir),gmon)
sysdep_routines += arm-mcount
endif
+ifeq ($(subdir),math)
+CFLAGS-feupdateenv.c += $(config-cflags-wno-ignored-attributes)
+endif
+
ifeq ($(subdir),rt)
librt-sysdep_routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
librt-shared-only-routines += rt-aeabi_unwind_cpp_pr1 rt-arm-unwind-resume
@@ -1,3 +1,8 @@
ifeq ($(subdir),misc)
tests += tst-writev
endif
+
+# strtol is aliased to stroll
+CFLAGS-strtol.c += -fno-builtin-strtoll $(config-cflags-wno-ignored-attributes)
+# strtoul is aliased to strtoull
+CFLAGS-strtoul.c += -fno-builtin-strtoull $(config-cflags-wno-ignored-attributes)
@@ -31,3 +31,4 @@ routines := speed cfsetspeed tcsetattr tcgetattr tcgetpgrp tcsetpgrp \
include ../Rules
CFLAGS-tcdrain.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-tcsetattr.c += $(config-cflags-wno-ignored-attributes)
@@ -98,6 +98,7 @@ CFLAGS-tzset.c += $(tz-cflags)
CFLAGS-getdate.c += -fexceptions
CFLAGS-clock_nanosleep.c += -fexceptions -fasynchronous-unwind-tables
CFLAGS-nanosleep.c += -fexceptions -fasynchronous-unwind-tables
+CFLAGS-mktime.c += $(config-cflags-wno-ignored-attributes)
# Don't warn about Y2k problem in strftime format string.
CFLAGS-test_time.c += -Wno-format
@@ -84,24 +84,32 @@ CFLAGS-wcwidth.c += -I../wctype
CFLAGS-wcswidth.c += -I../wctype
strtox-CFLAGS = -I../include
-CFLAGS-wcstol.c += $(strtox-CFLAGS)
-CFLAGS-wcstoul.c += $(strtox-CFLAGS)
+CFLAGS-wcstol.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
+CFLAGS-wcstoul.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstoll.c += $(strtox-CFLAGS)
CFLAGS-wcstoull.c += $(strtox-CFLAGS)
-CFLAGS-wcstod.c += $(strtox-CFLAGS)
-CFLAGS-wcstold.c += $(strtox-CFLAGS)
+CFLAGS-wcstod.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
+CFLAGS-wcstold.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstof128.c += $(strtox-CFLAGS)
-CFLAGS-wcstof.c += $(strtox-CFLAGS)
+CFLAGS-wcstof.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstol_l.c += $(strtox-CFLAGS)
CFLAGS-wcstoul_l.c += $(strtox-CFLAGS)
CFLAGS-wcstoll_l.c += $(strtox-CFLAGS)
CFLAGS-wcstoull_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstod_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstold_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstod_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
+CFLAGS-wcstold_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
-CFLAGS-wcstof_l.c += $(strtox-CFLAGS)
+CFLAGS-wcstof_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CPPFLAGS-tst-wchar-h.c += -D_FORTIFY_SOURCE=2
+CFLAGS-wcschr.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-wmemchr.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-wmemset.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-mbrtowc.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-wcrtomb.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-wcstoll.c += $(config-cflags-wno-ignored-attributes)
+CFLAGS-wcstoull.c += $(config-cflags-wno-ignored-attributes)
+
CFLAGS-isoc99_wscanf.c += -fexceptions
CFLAGS-isoc99_fwscanf.c += -fexceptions
CFLAGS-isoc99_vwscanf.c += -fexceptions
@@ -29,3 +29,5 @@ routines := wcfuncs wctype iswctype wctrans towctrans \
tests := test_wctype test_wcfuncs bug-wctypeh
include ../Rules
+
+CFLAGS-wcfuncs.c += $(config-cflags-wno-ignored-attributes)