rqsall(1)

rqsall - Re-quickstarts out-of-sync ELF shared objects/executables

Showing IRIX 6.5.30 (default release). Last changed in IRIX 6.5.19.

NAME
     rqsall - Re-quickstarts out-of-sync ELF shared objects/executables

SYNOPSIS
     rqsall [options] ifile

DESCRIPTION
     The rqsall command is used to re-quickstart ELF files that are out of
     sync on a system.  This command reads a description of the ELF files
     that have been recorded (in an undocumented plain text format) in
     ifile.  Those descriptions are generated using the rqsread command.
     Using those descriptions, this command determines which ELF files will
     not quickstart when executed.  For each of those files, this command
     normally executes the command /usr/etc/rqs or /usr/etc/rqs64 (as
     appropriate) on that file to resynchronize that file with the ELF
     files that it depends on (for example, the objects that are on that
     file's liblist).  This command is normally invoked whenever software
     is installed using inst or swmgr.  The ifile that it is invoked on is
     /var/inst/.rqsfiles.  At most, one so_locations file per ABI can
     possibly be read.  At most, one so_locations file per ABI can possibly
     be updated.  By default, so_locations files found are updated (though
     the contents may not change, the files are still rewritten).

     rqsall uses only the $range entry from any so_locations file entry to
     help determine what address range should be assigned if the DSO named
     in that entry needs to be moved.  If no $range entry is found for a
     DSO that must be moved, a default range is used.  The address assigned
     a DSO being moved is not allowed to conflict  with any DSO previously
     processed in this execution of rqsall.  Within any range, rqsall
     selects the highest available address.  For 64-bit objects, the
     default address range is 0x00400000 to 0x1000000000.  For 32-bit
     objects (both old and new 32-bit ABIs), the default address range is
     0x00400000 to 0x60000000.  If the dso cannot be moved to that range
     (the range is full from other DSOs or the range is too small) it is an
     error (a warning is emitted on stderr), and the DSO is not moved.

     Cycles of DSOs (where the DSO which references itself via its library
     list directly or indirectly) are not properly handled.

     -cmd rqs_cmd
                 Change the command to be run on out-of-sync 32-bit file to
                 be rqs_cmd.  By default, the command that is executed is
                 /usr/etc/rqs.

     -cmd64 rqs64_cmd
                 Change the command to be run on out-of-sync 64-bit file to
                 be rqs64_cmd.  By default, the command that is executed is
                 /usr/etc/rqs64.

     -cmd_prefix path
                 Prepends path to the name of the command to be run on an
                 out-of-sync file.

     -count      Prints to stdout the total number of files that were re-
                 quickstarted, the number of files that were successfully
                 re-quickstarted, and the number of files failed to be re-
                 quickstarted.

     -debug noexec
                 Keeps the out-of-sync files from actually being re-
                 quickstarted.  This is typically used as a debugging aid
                 to determine which files will be re-quickstarted.  This
                 option prevents re-quickstarting files and also prevents
                 updating of any so_locations file.

     -debug reason
                 Dumps relocation information.  Displays the reason why a
                 file needs to be re-quickstarted.

     -force      Files that are marked as non-quickstart will be re-
                 quickstarted.

     -inst #filedesc or -inst filename
                 A special flag used when calling this command from our
                 installation software.  Status is written out to either
                 the file descriptor given by filedesc (for example, to
                 write to file descriptor 10, -inst #10 would be the
                 correct option) or to the file given by filename.  The
                 output is appended if specified by #filedesc.  The output
                 is written (not appended) if specified by filename.  The
                 information written includes the count of the files that
                 are going to be re-quickstarted. For each file that is
                 being re-quickstarted, the name of the file, its original
                 inst checksum value, and an indication of success ('S') or
                 failure ('F') is indicated.  The fields are separated by
                 Control-A's.

     -o outfile  Causes an updated version (after re-quickstarting) of the
                 description file to be written to outfile.  outfile can be
                 the same as the input file, file.

     -prefix dir Treats dir as the prefix for the files being read.  When
                 the description file is read, the prefix is prepended to
                 all file names.  Similarly, when the output file is
                 generated, the prefix directory is removed.  This option,
                 along with the -root option, is used to re-quickstart
                 files that are located in a directory beginning at other
                 than /e.

     -rescan     Causes the descriptions of the files recorded in file to
                 be rescanned.  This option would be used in the case where
                 the files on the system have been changed since the last
                 time the descriptions have been recorded.

     -root dir   Passes dir down to rqs to adjust where that command looks
                 for shared objects.

     -timestamp value
                 Passes down value to rqs as the timestamp to be recorded
                 in the re-quickstarted file.

     -rld rldname
                 Supplies the name of the rld(1).  If this option is
                 supplied, the address of the rld applicable to the object
                 is checked against the rld address in the object (checked
                 against DT_MIPS_RLD_TEXT_RESOLVE_ADDR) and if the
                 addresses do not match, the address of the rld given by
                 rldname is passed to rqs with the -rld_addr option.  If
                 nothing else is to be changed in this object, the
                 -rld_addr_only option is also passed to rqs.  This option
                 may not work well for 32-bit objects since the rld address
                 need not be identical for old 32-bit ABI and new 32-bit
                 ABI rld, but there is no way to separate the different
                 versions of rld for the different 32-bit ABIs in this
                 option.

     -check_registry location_file_for_32_bit_objects
                 Uses location_file_for_32_bit_objects as the list of
                 potential shared object locations.  This information is
                 used when determining a new location for a 32-bit shared
                 object.  The default is /lib/so_locations for old 32-bit
                 ABI objects and /lib32/so_locations for new 32-bit ABI
                 objects.  This option is ignored (and the default is used)
                 if -check_registry_path is provided.

     -check_registry_64 location_file_for_64_bit_objects
                 Uses location_file_for_64_bit_objects as the list of
                 potential shared object locations.  This information is
                 used when determining a new location for a 64-bit shared
                 object.  The default is /lib64/so_locations.  This option
                 is ignored (and the default is used) if
                 -check_registry_path is provided.

     -check_registry_path pathname
                 Changes the default path of the registry file to check to
                 pathname.  The default value is /usr.

     -update_registry location_file_for_32_bit_objects
                 Uses location_file_for_32_bit_objects as the list of
                 potential shared object locations.  This information is
                 used when determining a new location for a 32-bit shared
                 object.  The default for this is /lib/so_locations for old
                 32-bit ABI objects and /lib32/so_locations for new 32-bit
                 ABI objects.  This option is ignored (and the default is
                 used) if -update_registry_path is provided.

     -update_registry_64 location_file_for_64_bit_objects
                 Uses location_file_for_64_bit_objects as the list of
                 potential shared object locations.  This information is
                 used when determining a new location for a 64-bit shared
                 object.  The default for this is /lib64/so_locations.
                 This option is ignored (and the default is used) if
                 -update_registry_path is provided.

     -update_registry_path pathname
                 Changes the default path of the registry file update to
                 pathname.  The default value is /usr.

     -no_registry
                 No default registry files should be used for checking.

     -file objname
                 The object is re-quickstarted to this single object.
                 Other object re-quickstarting is suppressed when this
                 option is specified.  If multiple instances of this option
                 are specified, only the last is effective.

     -log logfilename
                 Writes a file name and action letter (T for re-
                 quickstarted) in the named file for each file re-
                 quickstarted.  The file is opened for output (not append)
                 so previous contents are deleted.

     -no_timestamp
                 Stops rqsall from passing the -timestamp option to rqs.

     -no_echo    Turns off echoing to standard output of each rqs command
                 to be executed.

     -rqs_update_registry
                 Enables passing of -check_registry and/or -update_registry
                 commands to rqs using the file names from the
                 -check_registry, -update_registry, -check_registry_64,
                 -update_registry_64 options.  Suppresses update of any
                 so_locations file by rqsall and lets rqs or rqs64 do the
                 update.

     -rqs_error_log rqslogname
                 Passes the rqslogname to rqs via the -log option.

     -v          Turns on additional output.  Primarily used for debugging
                 rqsall.

     -same_age   Allows rqs to run even if no dependent DSO changed (that
                 is, the library-list entries seem to have the same
                 identical checksums and dates as the actual referenced
                 DSOs).

     -read_only_registry
                 Open registry files as read only.  Useful for rqs testing.

     -move       Reassign load addresses for every DSO listed in the
                 description file.  Each DSO is re-quickstarted using the
                 -load_address option of rqs.  Although slow, the use of
                 this option defragments virtual address ranges assigned to
                 each DSO and maximize available contiguous heap.  See
                 Example 2.

EXAMPLES
     Example 1:  The following example shows a typical invocation of this
     command:

          cp /var/inst/.rqsfiles t

          rqsall -force -o t -update_registry /usr/lib/so_locations \
          -update_registry_64 /usr/lib64/so_locations  t
          # Make sure t is not empty!

          cp t t1

          rqsall -rescan -same_age -force -move -o t2 t1
          # Make sure t2 is not empty!

          cp t2 /var/inst/.rqsfiles

     Example 2:  The following example shows, by specifying the -move
     option, a typical invocation of rqsall for every DSO listed in
     /var/inst/.rqsfiles, using the default so_locations files:

          # Ensure that you save a copy of your original .rqsfiles!
          # If lost it is hard to recover!
          cp /var/inst/.rqsfiles/var/inst/bkuprqsfiles

          rqsall -rescan -same_age -force -move \
          -o /var/inst/.rqsfiles /var/inst/.rqsfiles

NOTES
     Usually, only a single ifile is specified on the command line because
     rqsread creates only one file.  Because this is the normal case (and
     the only case used in practice) the SYNOPSIS shows only one ifile.  If
     multiple files are specified, they are logically concatenated.
     However, each ifile must be complete in the sense that the information
     (in the undocumented plain text format used) contains complete
     information sets for each object.

FILES
     /usr/etc/rqsall
     /usr/etc/rqs
     /usr/etc/rqs32
     /usr/etc/rqs64
     /usr/lib/so_locations   (for old 32-bit ABI)
     /usr/lib32/so_locations (for new 32-bit ABI)
     /usr/lib64/so_locations
     /var/inst/.rqsfiles

SEE ALSO
     rqs(1), rqs64(1), rqsread(1), rqsprint(1), ld(1), rld(1), inst(1M),
     swmgr(1M)