rqsall(1)

rqsall - Requickstarts out-of-sync ELF shared objects/executables

As shipped in IRIX 6.5.5. Last changed in IRIX 6.5.5.

NAME
     rqsall - Requickstarts out-of-sync ELF shared objects/executables

SYNOPSIS
     rqsall [options] ifile

IMPLEMENTATION
     IRIX systems

DESCRIPTION
     The rqsall command is used to requickstart 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
     will normally execute 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 will still be 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 will not be 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
          requickstarted, the number of files that were successfully
          requickstarted, and the number of files failed to be
          requickstarted.

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

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

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

     -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 requickstarted. For each file that is
          being requickstarted, 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 requickstarting) 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 requickstart 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 will look for
          shared objects.

     -timestamp value
          Passes down value to rqs as the timestamp to be recorded in the
          requickstarted 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 requickstarted to this single object.  Other object
          requickstarting 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 requickstarted) in
          the named file for each file requickstarted.  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 will be requickstarted using the -load_address
          option of rqs.  Although slow, the use of this option will
          defragment 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)

     This man page is available only online.