diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2025-01-02 07:22:36 +0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2025-01-03 04:56:48 +0800 |
commit | ed97ef7a4ba990132e5eadcf95cb31ef602f3603 (patch) | |
tree | 74dd5098292e44fbf859d6769d7387ee577d6b5b /sysdeps/unix/sysv | |
parent | dbc9a4000703c75cb4867d66d2e2ce796b283893 (diff) | |
download | glibc-ed97ef7a4ba990132e5eadcf95cb31ef602f3603.zip glibc-ed97ef7a4ba990132e5eadcf95cb31ef602f3603.tar.gz glibc-ed97ef7a4ba990132e5eadcf95cb31ef602f3603.tar.bz2 |
not-cancel.h: Support testing fortify build with Clang
When Clang is used to test fortify glibc build configured with
--enable-fortify-source=N
clang issues errors like
In file included from tst-rfc3484.c:60:
In file included from ./getaddrinfo.c:81:
../sysdeps/unix/sysv/linux/not-cancel.h:36:10: error: reference to overloaded function could not be resolved; did you mean to call it?
36 | __typeof (open64) __open64_nocancel;
| ^~~~~~~~
../include/bits/../../io/bits/fcntl2.h:127:1: note: possible target for call
127 | open64 (__fortify_clang_overload_arg (const char *, ,__path), int __oflag,
| ^
../include/bits/../../io/bits/fcntl2.h:118:1: note: possible target for call
118 | open64 (__fortify_clang_overload_arg (const char *, ,__path), int __oflag)
| ^
../include/bits/../../io/bits/fcntl2.h:114:1: note: possible target for call
114 | open64 (const char *__path, int __oflag, mode_t __mode, ...)
| ^
../io/fcntl.h:219:12: note: possible target for call
219 | extern int open64 (const char *__file, int __oflag, ...) __nonnull ((1));
| ^
because clang fortify support for functions with variable arguments relies
on function overload. Update not-cancel.h to avoid __typeof on functions
with variable arguments.
Co-Authored-By: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r-- | sysdeps/unix/sysv/linux/not-cancel.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/sysdeps/unix/sysv/linux/not-cancel.h b/sysdeps/unix/sysv/linux/not-cancel.h index 62363c1..ece3297 100644 --- a/sysdeps/unix/sysv/linux/not-cancel.h +++ b/sysdeps/unix/sysv/linux/not-cancel.h @@ -30,16 +30,16 @@ #include <sys/random.h> /* Non cancellable open syscall. */ -__typeof (open) __open_nocancel; +extern int __open_nocancel (const char *, int, ...); /* Non cancellable open syscall (LFS version). */ -__typeof (open64) __open64_nocancel; +extern int __open64_nocancel (const char *, int, ...); /* Non cancellable openat syscall. */ -__typeof (openat) __openat_nocancel; +extern int __openat_nocancel (int fd, const char *, int, ...); /* Non cacellable openat syscall (LFS version). */ -__typeof (openat64) __openat64_nocancel; +extern int __openat64_nocancel (int fd, const char *, int, ...); /* Non cancellable read syscall. */ __typeof (__read) __read_nocancel; @@ -54,7 +54,7 @@ __typeof (__write) __write_nocancel; __typeof (__close) __close_nocancel; /* Uncancelable fcntl. */ -__typeof (__fcntl) __fcntl64_nocancel; +int __fcntl64_nocancel (int, int, ...); #if IS_IN (libc) || IS_IN (rtld) hidden_proto (__open_nocancel) |