The testscript provided on this site will read a binary or library and check for mismatching dependencies with respect to 64on32 in largefile-sensitive systems. It will classify each binary and dependency-lib by looking for the symbols from the transitional 64bit-off_t API in the largefile specification. If we see "open" in the list of dynamic symbols then it is "-32-", and if we see "open64" then it is "-64-".
Apart from these simple ones, there exist dualmode libraries called "3264" and those which don't seem to need any of the problematic callbacks which are marked as "-??-" by the testript. From the combinations only three are invalid:
3264>>-32- -64->>-32- and -32->>-64- ...
in other words: dualmode(largefile) libraries having dependencies on non-largefile libraries, largefile libraries and binaries having dependencies on non-largefile libraries, and finally the inverse of non-largefile binaries linking with largefile-libraries.
The script is smart enough to auto-dectect any 3264 that you have just made up - these will have imported the off_t as an 64bit-off_t entity but you do export both simple calls and calls64. That can be tested actually.
A probable result of running the testscript might look like this:
$ perl off_t_problem.pl /usr/lib/*.so -32- /lib/libnsl.so.1 open.. fopen.. -32- /lib/libpopt.so.0 open.. lseek.. -32- /lib/libutil.so.1 open.. -32- /lib/libz.so.1 fopen.. -32- /usr/lib/libORBit-2.so.0 open.. fopen.. -64- /usr/lib/libavcodec-0.4.6.so fopen64 -64- /usr/lib/libavcodec.so fopen64 -32- /usr/lib/libbonobo-activation.so.4 open.. fopen.. -32- /usr/lib/libcrypto.so.0 fopen.. lseek.. -32- /usr/lib/libgconf-2.so.4 open.. fopen.. -32- /usr/lib/libglib-1.2.so.0 lseek.. -64- /usr/lib/libgnomevfs-2.so fopen64 statvfs64 3264 /usr/lib/libgstreamer.so open64 fopen64 g_param_spec_int64 3264 /usr/lib/libgstreamer.so g_param_spec_int.. -64- /usr/lib/libmysqlclient.so open64 fopen64 fseeko64 ftello64 -64- /usr/lib/libmysqlclient_r.so open64 fopen64 fseeko64 ftello64 3264 /usr/lib/libopenquicktime.so fopen64 fseeko64 quicktime_atom_read_size64 3264 /usr/lib/libopenquicktime.so quicktime_atom_read_size.. -64- /usr/lib/libpython2.2.so open64 fopen64 fseeko64 ftello64 -32- /usr/lib/libxml2.so.2 open.. fopen.. /usr/lib/libavcodec-0.4.6.so -64->>-32- /lib/libz.so.1 /usr/lib/libavcodec.so -64->>-32- /lib/libz.so.1 /usr/lib/libgnomevfs-2.so -64->>-32- /usr/lib/libORBit-2.so.0 /usr/lib/libgnomevfs-2.so -64->>-32- /usr/lib/libbonobo-activation.so.4 /usr/lib/libgnomevfs-2.so -64->>-32- /usr/lib/libcrypto.so.0 /usr/lib/libgnomevfs-2.so -64->>-32- /usr/lib/libgconf-2.so.4 /usr/lib/libgnomevfs-2.so -64->>-32- /lib/libpopt.so.0 /usr/lib/libgnomevfs-2.so -64->>-32- /usr/lib/libxml2.so.2 /usr/lib/libgnomevfs-2.so -64->>-32- /lib/libz.so.1 /usr/lib/libgstreamer.so 3264>>-32- /lib/libpopt.so.0 /usr/lib/libgstreamer.so 3264>>-32- /usr/lib/libxml2.so.2 /usr/lib/libgstreamer.so 3264>>-32- /lib/libz.so.1 /usr/lib/libmysqlclient.so -64->>-32- /lib/libnsl.so.1 /usr/lib/libmysqlclient.so -64->>-32- /lib/libz.so.1 /usr/lib/libmysqlclient_r.so -64->>-32- /lib/libnsl.so.1 /usr/lib/libmysqlclient_r.so -64->>-32- /lib/libz.so.1 /usr/lib/libopenquicktime.so 3264>>-32- /usr/lib/libglib-1.2.so.0 /usr/lib/libopenquicktime.so 3264>>-32- /lib/libz.so.1 /usr/lib/libpython2.2.so -64->>-32- /lib/libutil.so.1