index -summary -history -testscript perl / python problems -with callframes -with structures -largefile seeks -broken builds systems -freeBSD/darwin -linux/solaris -64on32 mix -distro makers -win32/other (2) libraries - libc ..(3264)
- zlib ..(-32-)
- gtk2 ..(-64-)
converting -old non-off_t code -going largefile -longlong default -face dualmode -make twinlibs -and defend (it) programming -largefile default -off_t in headers -make export64 -find mismatch -the autowrappers -environ changes -best practice? old library -dualmode renames -the extra function -largefile64_source -glibc headers -libgz example *** new library -dual export -largefiles win32 -compat32 calls -compat32 library -long32 dualmode links -some quotes -sitemap / mpl -large.file Group* -ac-archive Site*
(C) 2002-01-13 Guido U. Draheim |
Find Mismatch in 64on32The 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 |