mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-30 16:50:07 +00:00
bf9688e623
When passed a pointer to a zero-sized struct, the access attribute without the third argument misleads -Wstringop-overflow diagnostics to think that a function is writing 1 byte into the zero-sized structs. The attribute doesn't add that much value in this context, so drop it completely for _FORTIFY_SOURCE=3. Resolves: BZ #31383 Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
317 lines
6.9 KiB
Makefile
317 lines
6.9 KiB
Makefile
# Copyright (C) 1992-2024 Free Software Foundation, Inc.
|
|
# This file is part of the GNU C Library.
|
|
|
|
# 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
|
|
# <https://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
# Sub-makefile for I/O portion of the library.
|
|
#
|
|
subdir := io
|
|
|
|
include ../Makeconfig
|
|
|
|
headers := \
|
|
bits/fcntl.h \
|
|
bits/fcntl2.h \
|
|
bits/poll.h \
|
|
bits/poll2.h \
|
|
bits/stat.h \
|
|
bits/statfs.h \
|
|
bits/statvfs.h \
|
|
bits/statx-generic.h \
|
|
bits/statx.h \
|
|
bits/types/struct_statx.h \
|
|
bits/types/struct_statx_timestamp.h \
|
|
fcntl.h \
|
|
fts.h \
|
|
ftw.h \
|
|
poll.h \
|
|
sys/fcntl.h \
|
|
sys/poll.h \
|
|
sys/sendfile.h \
|
|
sys/stat.h \
|
|
sys/statfs.h \
|
|
sys/statvfs.h \
|
|
sys/vfs.h \
|
|
utime.h \
|
|
# headers
|
|
|
|
routines := \
|
|
access \
|
|
chdir \
|
|
chmod \
|
|
chown \
|
|
close \
|
|
close_range \
|
|
closefrom \
|
|
copy_file_range \
|
|
creat \
|
|
creat64 \
|
|
dup \
|
|
dup2 \
|
|
dup3 \
|
|
euidaccess \
|
|
faccessat \
|
|
fchdir \
|
|
fchmod \
|
|
fchmodat \
|
|
fchown \
|
|
fchownat \
|
|
fcntl \
|
|
fcntl64 \
|
|
file_change_detection \
|
|
flock \
|
|
fstat \
|
|
fstat64 \
|
|
fstatat \
|
|
fstatat64 \
|
|
fstatfs \
|
|
fstatfs64 \
|
|
fstatvfs \
|
|
fstatvfs64 \
|
|
fts \
|
|
fts64 \
|
|
fts64-time64 \
|
|
ftw \
|
|
ftw64 \
|
|
ftw64-time64 \
|
|
futimens \
|
|
getcwd \
|
|
getdirname \
|
|
getwd \
|
|
isatty \
|
|
lchmod \
|
|
lchown \
|
|
link \
|
|
linkat \
|
|
lockf \
|
|
lockf64 \
|
|
lseek \
|
|
lseek64 \
|
|
lstat \
|
|
lstat64 \
|
|
mkdir \
|
|
mkdirat \
|
|
mkfifo \
|
|
mkfifoat \
|
|
mknod \
|
|
mknodat \
|
|
open \
|
|
open64 \
|
|
open64_2 \
|
|
open_2 \
|
|
openat \
|
|
openat64 \
|
|
openat64_2 \
|
|
openat_2 \
|
|
pipe \
|
|
pipe2 \
|
|
poll \
|
|
posix_fadvise \
|
|
posix_fadvise64 \
|
|
posix_fallocate \
|
|
posix_fallocate64 \
|
|
ppoll \
|
|
read \
|
|
readlink \
|
|
readlinkat \
|
|
rmdir \
|
|
sendfile \
|
|
sendfile64 \
|
|
stat \
|
|
stat64 \
|
|
statfs \
|
|
statfs64 \
|
|
statvfs \
|
|
statvfs64 \
|
|
statx \
|
|
symlink \
|
|
symlinkat \
|
|
ttyname \
|
|
ttyname_r \
|
|
umask \
|
|
unlink \
|
|
unlinkat \
|
|
utime \
|
|
utimensat \
|
|
write \
|
|
# routines
|
|
|
|
# Exclude fortified routines from being built with _FORTIFY_SOURCE
|
|
routines_no_fortify += \
|
|
getcwd \
|
|
getwd \
|
|
open \
|
|
open64 \
|
|
openat \
|
|
openat64 \
|
|
poll \
|
|
ppoll \
|
|
read \
|
|
readlink \
|
|
readlinkat \
|
|
ttyname_r \
|
|
# routines_no_fortify
|
|
|
|
others := \
|
|
pwd \
|
|
# others
|
|
|
|
test-srcs := \
|
|
ftwtest \
|
|
ftwtest-time64 \
|
|
# test-srcs
|
|
|
|
tests := \
|
|
bug-ftw1 \
|
|
bug-ftw2 \
|
|
bug-ftw3 \
|
|
bug-ftw4 \
|
|
bug-ftw5 \
|
|
test-lfs \
|
|
test-stat \
|
|
test-stat2 \
|
|
test-utime \
|
|
tst-close_range \
|
|
tst-closefrom \
|
|
tst-copy_file_range \
|
|
tst-faccessat \
|
|
tst-fchmodat \
|
|
tst-fchownat \
|
|
tst-fcntl \
|
|
tst-fcntl-lock \
|
|
tst-fcntl-lock-lfs \
|
|
tst-fstatat \
|
|
tst-fts \
|
|
tst-fts-lfs \
|
|
tst-ftw-bz26353 \
|
|
tst-ftw-bz28126 \
|
|
tst-ftw-lnk \
|
|
tst-futimens \
|
|
tst-futimes \
|
|
tst-futimesat \
|
|
tst-getcwd \
|
|
tst-getcwd-abspath \
|
|
tst-lchmod \
|
|
tst-linkat \
|
|
tst-lockf \
|
|
tst-lutimes \
|
|
tst-mkdirat \
|
|
tst-mkfifoat \
|
|
tst-mknodat \
|
|
tst-open-tmpfile \
|
|
tst-openat \
|
|
tst-posix_fallocate \
|
|
tst-posix_fallocate64 \
|
|
tst-read-zero \
|
|
tst-readlinkat \
|
|
tst-renameat \
|
|
tst-stat \
|
|
tst-stat-lfs \
|
|
tst-statvfs \
|
|
tst-symlinkat \
|
|
tst-ttyname_r \
|
|
tst-unlinkat \
|
|
tst-utime \
|
|
tst-utimensat \
|
|
tst-utimes \
|
|
# tests
|
|
|
|
tests-time64 := \
|
|
tst-fcntl-time64 \
|
|
tst-fts-time64 \
|
|
tst-futimens-time64 \
|
|
tst-futimes-time64\
|
|
tst-futimesat-time64 \
|
|
tst-lchmod-time64 \
|
|
tst-lutimes-time64 \
|
|
tst-stat-time64 \
|
|
tst-utime-time64 \
|
|
tst-utimensat-time64 \
|
|
tst-utimes-time64 \
|
|
# tests-time64
|
|
|
|
# Likewise for statx, but we do not need static linking here.
|
|
tests-internal += \
|
|
tst-file_change_detection \
|
|
tst-statx \
|
|
# tests-internal
|
|
|
|
tests-static += \
|
|
tst-statx \
|
|
# tests-static
|
|
|
|
ifeq ($(run-built-tests),yes)
|
|
tests-special += \
|
|
$(objpfx)ftwtest-time64.out \
|
|
$(objpfx)ftwtest.out \
|
|
# tests-special
|
|
endif
|
|
|
|
include ../Rules
|
|
|
|
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 $(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 $(config-cflags-wno-ignored-attributes)
|
|
CFLAGS-statfs.c += -fexceptions
|
|
CFLAGS-fstatfs.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
|
|
CFLAGS-ftw.c += $(uses-callbacks) -fexceptions
|
|
CFLAGS-ftw64.c += $(uses-callbacks) -fexceptions
|
|
CFLAGS-ftw64-time64.c += $(uses-callbacks) -fexceptions
|
|
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 $(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-tst-read-zero.c += $(no-fortify-source),-D_FORTIFY_SOURCE=$(supported-fortify)
|
|
|
|
CFLAGS-test-stat.c += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
|
|
CFLAGS-test-lfs.c += -D_LARGEFILE64_SOURCE
|
|
CFLAGS-tst-lchmod.c += -D_FILE_OFFSET_BITS=64
|
|
|
|
test-stat2-ARGS = Makefile . $(objpfx)test-stat2
|
|
|
|
tst-statvfs-ARGS = $(objpfx)tst-statvfs tst-statvfs.c /tmp
|
|
|
|
tst-open-tmpfile-ARGS = --test-dir=$(objpfx)
|
|
|
|
CFLAGS-ftwtest-time64.c += -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64
|
|
|
|
ifeq ($(run-built-tests),yes)
|
|
$(objpfx)ftwtest.out: ftwtest-sh $(objpfx)ftwtest
|
|
$(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
|
|
$(evaluate-test)
|
|
|
|
$(objpfx)ftwtest-time64.out: ftwtest-sh $(objpfx)ftwtest-time64
|
|
$(SHELL) $< $(common-objpfx) '$(test-program-cmd)' > $@; \
|
|
$(evaluate-test)
|
|
endif
|