Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ld(1)

loader(5)

fixso(1)  —  Commands

NAME

fixso − Fixes a shared object so that it can be quickstarted

SYNOPSIS

fixso [+i|-i] [+w|-w] [+d|-d] [+n|-n]
            [-o outputobj] [-p path] inputobj

FLAGS

+i|-iTurns informational message reporting on and off, respectively.  By default, informational messages are not reported. 

+w|-wTurns warning  message reporting on and off, respectively.  By default, warning messages are reported. 

+d|-dTurns debugging message reporting on and off, respectively.  By default, debugging messages are not reported. 

+n|-nTurns output generation on and off, respectively.  By default, fixso writes output to a.out or to the file specified by the -o flag.  If you specify -n, fixso just analyzes the inputobj and generates no output. 

-o outputobj
Specifies the file to which fixso writes its output. By default, output is sent to a.out. 

-p pathAdds path to the beginning of the shared library search path. The default library search path, as explained in loader(5), is used.  fixso also honors any definition of the LD_LIBRARY_PATH environment variable. 

DESCRIPTION

The fixso utility allows executables that depend on a shared library registered in the so_locations database to continue to run quickstarted even if the shared library changed after the time the executable was originally linked against it.  fixso accomplishes this by adjusting the object’s checksum and timestamp, reconciling the object’s conflict table (the list of symbols that are multiply defined among the entries in the object’s library list), and resolving global symbols. 

You specify one executable or shared object in the inputobj parameter.  The fixso utility opens the target object, scanning its library list for dependencies on symbols defined in other objects. When it discovers a dependency, it automatically opens the associated object and continues processing it in the same manner, as long as it is located in the default library search path, the path indicated by the LD_LIBRARY_PATH environment variable, or specified by the -p flag. Otherwise, it generates a message, requiring you to run fixso on that object first. 

fixso examines each object’s interface version, shared object name (soname), timestamp, and checksum.  Although it can adjust timestamp and checksum discrepancies among the entries in the object’s library list, fixso has the following restrictions:

Increases in object size required in the conflict list

fixso does not change the size of the binary object; it will not expand the size of the conflict table if it encounters a new multiply-defined symbol while traversing the object’s library list. 

Movement in memory

An object’s actual run-time memory location must match the quickstart location recorded in the so_locations file. The fixso utility cannot make an object quick-startable if the object has been moved from its quickstart location, or if another object has been moved into its quickstart location. 

Discrepancies in interface versions

The version of the run-time linker interface used by an object mapped in the inputobj’s library list must be the same version used when inputobj was created by the linker. 

Changes to library path

An object mapped in inputobj’s library list must be located in the same library search path it was in when inputobj was created by the linker. 

Discrepancies in soname

The soname of an object mapped in inputobj’s library list must be the same as when inputobj was created by the linker. By default, an object’s soname is its filename (without a prepended pathname). 

ERRORS

The fixso utility generates the following categories of message:

       •Error messages that indicate when the current use of the tool violates one of its restrictions, as described above.  Error messages also help you determine the correct order in which to run fixso on a series of objects.  You cannot turn off error messages. 

       •Warning messages that indicate conflicts, such as timestamp and checksum mismatches, that fixso attempts to fix automatically. fixso generates warning messages by default. You can turn them off by specifying the -w flag. 

       •Informational and debug messages that record the fixso utility’s progress.  These messages are off by default, but you can turn them on by using the +i and +d flags, respectively. 

FILES

/usr/shlibShared library directory. 

/usr/ccs/libShared library directory. 

/usr/lib/cmplrs/ccShared library directory. 

/usr/libShared library directory. 

/usr/local/libShared library directory. 

/usr/bin/fixso, /usr/ccs/bin/fixso, /usr/ccs/lib/cmplrs/cc/fixso
Fix quickstarted shared objects utility.

RELATED INFORMATION

ld(1), loader(5). 

Programmer’s Guide

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026