glibc/io/Makefile
Aurelien Jarno 5bdef6f27c io: Fix record locking contants for powerpc64 with __USE_FILE_OFFSET64
Commit 5f828ff824 ("io: Fix F_GETLK, F_SETLK, and F_SETLKW for
powerpc64") fixed an issue with the value of the lock constants on
powerpc64 when not using __USE_FILE_OFFSET64, but it ended-up also
changing the value when using __USE_FILE_OFFSET64 causing an API change.

Fix that by also checking that define, restoring the pre
4d0fe291ae commit values:

Default values:
- F_GETLK: 5
- F_SETLK: 6
- F_SETLKW: 7

With -D_FILE_OFFSET_BITS=64:
- F_GETLK: 12
- F_SETLK: 13
- F_SETLKW: 14

At the same time, it has been noticed that there was no test for io lock
with __USE_FILE_OFFSET64, so just add one.

Tested on x86_64-linux-gnu, i686-linux-gnu and
powerpc64le-unknown-linux-gnu.

Resolves: BZ #30804.
Co-authored-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
(cherry picked from commit 434bf72a94)
2023-09-07 22:45:43 +02:00

315 lines
6.8 KiB
Makefile

# Copyright (C) 1992-2023 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-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-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