Ch 22. SOMPATCH [ MPE/iX System Utilities Reference Manual ] MPE/iX 5.0 Documentation
MPE/iX System Utilities Reference Manual
Chapter 22 SOMPATCH
Use the SOMPATCH utility for binary modification of a native mode
spectrum object module (SOM) program or library file. Binary
modification is referred to informally as patching.
WARNING Do not use this utility without service center support.
Unauthorized use will void your warranty and may cause data
loss.
This utility is capable of tracking all of the modifications that it
makes to a SOM file. This history is kept in the SOM file in an
unloadable buffer space, which affects neither performance nor memory
usage of the program. This buffer space is provided by linking in a
ypatch file when the executable SOM file is created.
The ypatch file to be linked into SOM 0 of NL.PUB.SYS creates loadable
code because the storage area needs to be in the boot images, and the
SAINT utility does not store unloadable spaces in the boot images. This
special ypatch file is ypatsom0 and would normally be used only in the
NL.
The SOMPATCH utility will accept as input a file not linked with a ypatch
file. However, you should use it to build files with the ypatch file, so
that at any time you can view and query the file and patch history. If
the ypatch file is not linked in, no logging is available. All
native-mode system products are required to link with the ypatch file if
the product is to be supported in the field to any extent with binary
patching.
MPE/iX contains a symbolic debugger that can be used for memory patching
or to generate patches that you will permanently apply with the SOMPATCH
utility.
To patch compatibility mode files, use the slpatch and patch files.
Input Files
The SOMPATCH utility has one required file and that is the input file to
be queried or patched. This file can be a relocatable or executable
library SOM or a program SOM. The SOMPATCH utility treats this file as a
read-only file. No backup copy is made; however, a QUIT command can be
used at any time, with this file remaining unchanged.
The user can also optionally specify a second input file, a script file
of modification instructions and logging information, referred to
hereafter as a patch file. A patch file is an ASCII file, created by an
editor or other text utility, that specifies one or more commands to the
SOMPATCH utility. The patch file is given on the command line, or by the
USE command, to apply one or more patches. Patches can also be applied
interactively. Refer to the paragraph "Interactive Patching" under
"Operation."
Error Handling
The input file is maintained in its original state until the user types
EXIT or SAVE. If there is a system malfunction between the EXIT command
and the colon prompt, purge the possibly modified file and start over
with a backup. If no backup is available, redo all patches on the
possibly modified input file. (This may cause the oval/verify option on
the modify command to generate false error messages). As long as the
ypatch file was used, all old patches can be backed out.
Output File
The user can optionally specify an output list file containing all patch
instructions issued, any error messages, and any displays. This is saved
as a permanent disk file, unless overridden by a user-specified file
equation.
The SOMPATCH utility writes to the primary file all patches that did not
contain errors. If a patch has several modify instructions, or the count
is greater than one for one modify, and one or more generated errors,
none of the modifies for that patch are applied. Patches are broken up
by LOG commands.
JCW Handling
The SOMPATCH utility sets two JCWs: the system JCW and a private JCW,
PATCHJCW. PATCHJCW is set as follows:
No error -- value of 0
Nonfatal error -- value of 1
Fatal error -- value of 2
Really fatal -- value of 3 (Program will gracefully abort.)
Under these error conditions, the SOMPATCH utility also sets the system
JCW to the standard MPE values, OKAY, WARN, and FATAL.
Preparation for Use
Patching modifies object code when a problem cannot be easily or
conveniently fixed in source code. The SOMPATCH utility is used to fix a
software problem without recompiling or relinking. A patch is usually
developed using the symbolic debugger, with the patch applier using the
SOMPATCH utility to permanently install a modification in the defective
software.
You should link in one of two available ypatch files when you build the
product that you are patching. Which one you link depends on how much
the product is patched.
When linking a single-SOM library, or a program file, specify the ypatch
file you want to use at the end of the source object files for the user's
executable SOM. For example:
link>LINK from=mysomfile,ypatch4.lib.sys; to=myprogfile
When linking a multi-SOM library, specify the desired ypatch file at the
end of the source object files for each SOM. For example:
link>LINK from=mymod1,mymod2,mymod3,ypatch4.lib.sys; to=myint1
link>LINK from=mymod4,mymod5,mymod6,ypatch4.lib.sys; to=myint2
link>BUILDXL mynl
link>LINK from=myint1,myint2; to=mynl
HP product files should contain a minimum of 300 bytes of storage for
each anticipated patch. Refer to "Error Handling" for information of how
to handle errors when this storage area overflows.
MPE/iX 5.0 Documentation