Bug#1075599: uml-utilities: ftbfs with GCC-14
From
Marek Benc@21:1/5 to
All on Fri Apr 4 09:10:01 2025
Hello,
I found the problem, turns out that when you include fuse/fuse_lowlevel.h, you're supposed to also define the FUSE_USE_VERSION macro, otherwise
it defaults to 24 and uses the fuse_mount_compat22 function for fuse_mount, which doesn't match what the code in this package expects.
The code includes fuse_lowlevel.h, which contains the following warning:
/** @file
*
* Low level API
*
* IMPORTANT: you should define FUSE_USE_VERSION before including this
* header. To use the newest API define it to 26 (recommended for any
* new application), to use the old API define it to 24 (default) or
* 25
*/
Here is the code in question:
#include <fuse/fuse_lowlevel.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
static int init_fuse(int argc, char **argv)
{
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
char *mountpoint;
if (fuse_parse_cmdline(&args, &mountpoint, NULL, NULL) == -1)
return -EINVAL;
return fuse_mount(mountpoint, &args);
}
Here are the available fuse_mount() functions:
struct fuse_chan *fuse_mount(const char *mountpoint, struct fuse_args *args);
int fuse_mount_compat25(const char *mountpoint, struct fuse_args *args);
int fuse_mount_compat22(const char *mountpoint, const char *opts);
int fuse_mount_compat1(const char *mountpoint, const char *args[]);
Looking at the code and the prototypes, the code expects
fuse_mount_compat25,
so the FUSE_USE_VERSION macro should be set to 25, either by specifying it
in the makefile, or by adding a #define into the umlfs/uml_mount.c file:
--- uml-utilities-20070815.4.orig/umlfs/uml_mount.c
+++ uml-utilities-20070815.4/umlfs/uml_mount.c
@@ -1,3 +1,5 @@
+#define FUSE_USE_VERSION 25
+
#include <fuse/fuse_lowlevel.h>
#include <stdio.h>
#include <stdlib.h>
Best Regards,
Marek
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)