OpenAFS Master Repository branch, master, updated. openafs-devel-1_9_2-220-geddd5a0
Gerrit Code Review
gerrit@openafs.org
Mon, 5 May 2025 18:44:36 -0400
The following commit has been merged in the master branch:
commit eddd5a060e9ed5acf10ee23359d54e22d4681592
Author: Cheyenne Wills <cwills@sinenomine.net>
Date: Fri Apr 25 11:43:01 2025 -0600
ubik: Use typedef for ubik_call function parameter
One of ubik_Call()/ubik_CallIter()/ubik_Call_SingleServer() parameters
is a function pointer (aproc). A function signature for this parameter
is not specified which leads to a strict-prototype warning which has
been addressed by suppressing the check by adding the
-Wno-strict-prototypes compiler flag for the files that need it.
A new C standard (C23) is coming out and newer versions of C compilers
(e.g. gcc 15) are using the new standard (or an extension of that
standard) as their default. The C23 standard has removed the ability to
declare functions with unspecified parameters; now any function that is
declared as:
int foo();
is treated as:
int foo(void);
Building with gcc-15 results in the following types of compile time
errors (even when -Wno-strict-prototypes is used):
ubikclient.c: In function ‘CallIter’:
ubikclient.c:391:10: error: too many arguments to function ‘aproc’; expected 0, have 17
391 | (*aproc) (tc, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13,
| ~^~~~~~~ ~~
ubikclient.c: In function ‘ubik_Call’:
ubikclient.c:577:18: error: too many arguments to function ‘aproc’; expected 0, have 17
577 | (*aproc) (tc, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11,
| ~^~~~~~~ ~~
To avoid this error, we must declare the parameters for the 'aproc'
function pointer.
Define a typedef, ubik_call_func, that can be used to define the data
type for the function parameter and can also be used as a cast on the
function parameter when calling ubik_Call() ubik_CallIter() or
ubik_Call_SingleServer().
Update the function prototypes and definitions for ubik_Call()
ubik_CallIter() and ubik_Call_SingleServer(), and add casts where
needed.
Define "UBIK_LEGACY_CALLITER" in ubik_db_if.c, so it can also use the
ubik_call_func typedef for its ubik_Call_SingleServer variant.
Remove the -Wno-strict-prototypes for the files that were updated. The
CFLAGS_NOSTRICT_PROTOTYPES autoconf var is now unused, so remove it.
Some minor whitespace/indentation cleanup.
Note: This problem occurred on Fedora 42 which comes with gcc 15.
Change-Id: Ib5e069ac3a0c16498161b70ee121666f02e5276e
Reviewed-on: https://gerrit.openafs.org/16370
Reviewed-by: Michael Meffie <mmeffie@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Tested-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
doc/process/compiler-warnings.md | 5 -----
src/bucoord/Makefile.in | 1 -
src/bucoord/ubik_db_if.c | 7 ++++---
src/cf/osconf.m4 | 3 ---
src/kauth/Makefile.in | 3 ---
src/kauth/admin_tools.c | 4 ++--
src/kauth/authclient.c | 8 ++++----
src/libadmin/kas/Makefile.in | 1 -
src/libadmin/kas/afs_kasAdmin.c | 4 ++--
src/tbutc/Makefile.in | 1 -
src/ubik/Makefile.in | 2 --
src/ubik/ubik.p.h | 13 ++++++++++---
src/ubik/ubikclient.c | 8 ++++----
13 files changed, 26 insertions(+), 34 deletions(-)
--
OpenAFS Master Repository