Solaris 10 Binary Application Guarantee

This document describes the use of the Solaris Application Scanner tool in conjunction with the Solaris 10 Binary Application Guarantee program.

Your participation in the Solaris 10 Binary Application Guarantee program may require running the Solaris Application Scanner over a number of application binaries and possibly sending the generated report file back to Sun.

To perform this action, follow these steps:
  1. Download the SolCAT-v1.0.0 tool collection from here:
    sun.com/software/solaris/programs/abi/solcat.html This page will instruct you how to download the tool from the Sun Download Center and how to install it. Follow the installation instructions to install the Solaris Application Scanner tool "abiscan" (you do not need to install Solaris Appcert). The self-installing script will be the file:

    pkgs/abiscan_install-1.0.sh

    To install type this command: "sh pkgs/abiscan_install-1.0.sh"

    You may also want to read the Solaris Application Scanner documentation in the "doc" subdirectory of the installation directory.

  2. Next, decide which application binaries need to be checked. There are a number of ways to pass this list to the Solaris Application Scanner tool:

    a) list each full filename on the command line.

    b) list a directory (or directories) and have the tool recursively find and check all binary program files it finds.

    c) use the "-f listfile" option where "listfile" is a file you create that contains the list of binaries to check (one per line).
  3. The name of the Solaris Application Scanner utility is "abiscan". To generate a report suitable for use with the Solaris 10 Binary Application Guarantee program you need to supply the "-s" option to abiscan and collect the output in a file for possible submission to Sun.

    The abiscan utility may be run on Solaris 7, 8, 9, or 10. It is not required to run the tool on Solaris 10.

    Here are examples corresponding to the three modes listed in 2) above:

    abiscan -s /opt/APP/bin/binary1 /opt/APP/bin/binary2 > myreport
    abiscan -s /opt/APP/bin > myreport
    abiscan -s -f /tmp/myfilelist > myreport

    These assume you have set your PATH environment variable to include the directory the abiscan utility resides in, e.g. /var/tmp/abiscan/bin (the actual directory will depend on how you chose to install the tool).

    Alternatively, you may specify the full path to abiscan, for example:

    /var/tmp/abiscan/bin/abiscan -s /opt/APP/bin/binary1 > myreport

    In all cases we collect the abiscan output in the file "myreport".

  4. To see if the application passed, examine the output file ("myreport" in the previous examples). It provides a list of all binaries that were checked. Binaries without problems are marked with an "OK" tag. If all binaries have the "OK" tag then the application has passed this test. (Note you may also see some "SKIP" lines indicated files you pointed abiscan to that are not ELF binaries).

    If any binary has a potential problem detected you can find more at about the issue rerun abiscan with the "-s" option replaced with "-v" for verbose output. Redirect to a new file, e.g.:

    abiscan -v /opt/APP/bin > myissues

    This output contains a readable description of the issues detected.

  5. To participate in the Solaris 10 Binary Application Guarantee program follow the instructions it provides and be prepared to upload the report file ("myreport" in the above examples) you generated if requested to.

Examples:

Here are some examples of using the Solaris Application Scanner abiscan tool in the Solaris 10 Binary Application Guarantee program.

One may set their PATH variable to find the abiscan utility with commands like:

setenv PATH /var/tmp/abiscan/bin:$PATH

for csh-like shells or this for sh-like shells:

PATH=/var/tmp/abiscan/bin:$PATH

The following assumes this has been done. The "%" symbol below represents the shell command line prompt.

The first example shows checking an application that has no problems detected by the abiscan utility:

% abiscan -s /home/user/netscape-7.0 > myreport

Examination of the "myreport" file indicates all of the application binaries (approximately 270 of them) received an "OK" tag. In this example, no problems were detected by the abiscan utility. The list of all binaries checked is in the report file.

The second example shows an application that has a potential failure mode detected for a number of its binaries:

% abiscan -s /home/user/faxtool-1.0 > myreport

Not all of the binaries received and "OK" in this case. Rerunning abiscan with the "-v" option yields output that looks like the following:

/home/user/faxtool-1.0/bin/faxtool:
Refers to the following removed interfaces which can cause it to fail:
TIFFGetFileSize from /usr/openwin/lib/libtiff.so.3 removed in SunOS 5.10
TIFFModeCCITTFax3 from /usr/openwin/lib/libtiff.so.3 removed in SunOS 5.10

The above interface(s) have been removed from Solaris.
Note: if the application provides its own non-system library interface replacement(s) it will not fail.
Note: if the application never actually calls the above interface(s) it will not fail. Careful testing of the application is required.


...

This indicates the "faxtool" binary uses above two undocumented interfaces "TIFFGetFileSize" and "TIFFModeCCITTFax3" in the libtiff.so.3 library. These interfaces have been removed from libtiff.so.3 in Solaris 10 (SunOS 5.10).

Some notes are also provided that indicate under what circumstance the application binary may continue to work on Solaris 10. In this example they are 1) a non-system compatibility library is used, or 2) the application binary never happens to call the removed interfaces. The abiscan tool is not able to determine if these are the case because the application is not actually run during the abiscan check.