printer / text mode version find mismatch

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 <guidod>
 Guido U. Draheim

Find Mismatch in 64on32

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