Some more on this…

 

The reason I’m getting into this is from the error message:

 

fusermount: mount failed: Invalid argument

 

I see from searching the mailing list archives that this is a common error message, and I’m pretty certain that I’m dealing with some dynamic linker weirdness, because when I comment out the .symver directives, all works great.  (I figured this out by checking what routines I were really being called, and the _compat() versions of many of the functions were being called, causing the problems: so I guessed and tried removing the .symver statements, which got me into the correct versions of the routines, and then it all works)

 

The programs in example/ (like “hello” and “fusexmp”) produce the same behavior as owfs, so now I have a simpler example, and know the problem is not related to owfs at all.

 

I’m at a loss as to where to go from here now.

 

Any ideas?  Where do I start looking to debug a dynamic linker problem or incompatibility?  Or am I completely off base?

 

Again, I’m cross-compiling for OpenWRT with a 2.4 kernel.  OpenWRT is a port for MIPS processors on Linksys routers.

 

Thanks,

 

Vince

 

 

I seem to be having a problem with FUSE versioning in fuse-2.6.0pre2…

 

I ported fuse-2.6.0pre2 to OpenWRT, but when I link libfuse with owfs-2.3p7, the linker links owfs to the older backward-compatible versions of some of the FUSE code.  Specifically, it seems to be anything where fuse uses .symver directives.

 

In my current case, statfs() had changed, and if I comment out these:

 

__asm__(".symver fuse_reply_statfs_compat,fuse_reply_statfs@FUSE_2.4");

__asm__(".symver fuse_reply_open_compat,fuse_reply_open@FUSE_2.4");

__asm__(".symver fuse_lowlevel_new_compat,fuse_lowlevel_new@FUSE_2.4");

 

from fuse_lowlevel.c, it works great.  I had similar problems with fuse_mount().  It seems to link incorrectly whenever a .symver is used.

 

I’m compiling owfs with FUSE_USE_VERSION=26.

 

Any ideas on where this weirdness might be coming from?

 

From what I can tell from the code, the compiler directive should work…

 

Thanks,


Vince