On 09/14/2009 03:09 PM, Anand Avati wrote: >> It's not perfect - but at least any calls that fall through will still be >> handled properly. For example, if an application calls fopen(), which is not >> on the GlusterFS list of overridden system calls the last time I checked, >> then at least the fopen() will be intercepted by FUSE rather than fail >> altogether. >> > I think the deal with hidden PLTs is that fopen() cannot be trapped by > an alternate implementation of fopen() inside the LD_PRELOADed > library. But the system call open performed inside the libc's fopen() > (no matter how it was compiled) should get intercepted by the > LD_PRELOAD library. Because I dont think the PLT optimizations would > apply to system calls. > It's the opposite of this. fopen() can be overridden, but open() called by fopen() cannot, because fopen() calls an internal linkage table to find open() - it does not look back up through dlsym() to find your override of open(). You could override fopen() - but this becomes complicated, because this means overriding all of STDIO. Bleh. Cheers, mark -- Mark Mielke<mark at mielke.cc>