rqs64(1)

rqs64 - Fixes up 64-bit executable or shared object to be QUICKSTARTable

As shipped in IRIX 6.5.15. Last changed in IRIX 6.5.15.

NAME
     rqs64 - Fixes up 64-bit executable or shared object to be
     QUICKSTARTable

SYNOPSIS
     rqs64 [-t timestamp_value_in_hex] [-l text_address_in_hex] [-c
     so_locations_file] [-u so_locations_file] [-f] [-L] [-Ldir] [-r
     root_path] [-chroot root_path] [-log <file>] [-rld_addr <address>] [-
     rld_addr_only] [-rld_unresolve_check_only] [-
     rld_force_noquickstart_only] object

IMPLEMENTATION
     IRIX systems

DESCRIPTION
     rqs64 takes an object, either an executable or a shared object, and
     using its liblist will then redo all the pre-relocations.  For shared
     object only, if -load_address is specified, then the specified address
     will be used as the lowest virtual address for that shared object,
     otherwise options -check_registry and/or -update_registry will be used
     to figure out possible QUICKSTART addresses for that shared object, as
     does the ld command.

     rqs64 will create a new version of the object and save it back in
     place, overwriting the previous version, so user may want to save a
     copy of the object somewhere before requickstarting it.

     For an object to be requickstartable, the bit RHF_REQUICKSTART must be
     set in the DT_MIPS_FLAGS field of its .dynamic section.  This bit is
     normally set by ld.  After an object has been requickstarted, the bit
     RHF_REQUICKSTARTED will be set in the DT_MIPS_FLAGS field of its
     .dynamic section.

     With the -m option, rqs will move an object to a requested address
     even if the result will not quickstart.

     -f   Requickstart object even if RHF_REQUICKSTART is not set in
          object.

     -force_requickstart
          is an alternate spelling of the -f option.

     -t timestamp_value_in_hex
          Specifies a timestamp value in hex to replace the one in the
          DT_MIPS_TIME_STAMP field of the .dynamic section, applicable to
          shared object only.

     -timestamp timestamp_value_in_hex
          This is an alternate spelling of the -t option.

     -l text_address_in_hex
          Specifies the lowest virtual address for the shared object being
          rqs'd, when specified, options -check_registry and
          -update_registry will be ignored.

     -load_address text_address_in_hex
          This is an alternate spelling of the -l option.

     -c so_locations_file
          Check the location of this shared object's segments and make sure
          they stay out of the way of others in the so_locations_file.  A
          single registry file is allowed when either -c or -u is
          specified.  Applicable to shared object only.

     -check_registry so_locations_file
          This is an alternate spelling of the -c option.

     -u so_locations_file
          Register the location of this shared object's segments and make
          sure they stay out of the way of others in the so_locations_file.
          so_locations_file is updated if it is writable.  A single
          registry file, either with -c or -u specified is allowed.
          Applicable to shared object only.

     -update_registry so_locations_file
          This is an alternate spelling of the -u option.

     -L   Change the algorithm of searching for libraries to never look in
          the default directories, namely /usr/lib:/lib.  This option has
          the same semantics as the -L in the ld command.

     -Ldir
          Change the algorithm of searching for libraries to look in dir
          before looking in the default directories.  This option has the
          same semantics as the -Ldir option in the ld command.  The
          environment variable LD_LIBRARY64_PATH can also be used for this
          purpose.

     -m   Move the dso even if address overlaps are detected (without this
          option address overlaps cause rqs to exit without doing
          anything).  If an address overlap is detected the RHF_QUICKSTART
          flag is reset (to 0) in the dynamic section.  Generally useful
          only if the -l option is also specified on the command line.

     -v   Makes rqs more verbose.  Generally intended for debugging, but is
          useful if you want to know if whether the -m option detected any
          address overlaps.  This enables a message to be issued about such
          overlaps.

     -r root_path
          Change the path of the default directories that rqs uses for
          searching libraries by appending root_path to the front of the
          default path, just like that in _RLD_ROOT.  It can also be a
          colon(:) separated list.  The environment variable _RLD_ROOT can
          also be used for this purpose.  (For a new 32-bit ABI object, use
          _RLDN32_ROOT instead of _RLD_ROOT).

     -root root_path
          This is an alternate spelling of the -r option.

     -chroot root_path
          This causes the named directory root_path to become the root
          directory, the starting point for path searches for path names
          beginning with /e.

     -log logfile
          Pipes all error messages to logfile instead of standard output.

     -rld_addr address
          Sets the dynamic section DT_MIPS_RLD_TEXT_RESOLVE_ADDR to
          address.

     -rld_addr_only
          Restricts the changes to the dynamic section
          *CDT_MIPS_RLD_TEXT_RESOLVE_ADDR (effective only if the -rld_addr
          option is also specified on the command line).

     -rld_unresolve_check_only
          Restricts the changes to the dynamic section's DT_MIPS_FLAGS to
          set or unset RHF_NO_UNRES_UNDEF depending on whether there were
          any undefined variables.

     -rld_force_noquickstart_only
          Restricts the changes to be to the dynamic section's
          DT_MIPS_FLAGS to be to reset the RHF_QUICKSTART flag.

     The following options must be put into the environment variable
     _RQS_ARGS to be understood; they cannot be specified on the command
     line.

     "-debug map"
          Used for debugging rqs.  Prints information about the mapping
          (address) of the object.

     "-debug symbol"
          Used for debugging rqs.  Prints information about the symbol
          searches and symbol finding in the object (in symbol relocation).

     "-debug MALLOC"
          Used for debugging rqs.  Prints a trace of some of the
          malloc/realloc calls.

     "-debug hash"
          Used for debugging rqs.  Prints a trace of the hashing function
          used when searching a hash table for a symbol.

NOTES
     Some options have long and short spellings.  For example, -f and
     -force_requickstart do the same thing.  The short form is easier to
     remember and spell.  Because the long form is used in existing scripts
     and programs, both forms will be supported.

     Where any option specifies that a value supplied on the command line
     is to be in hexadecimal, the value is interpreted as hexadecimal
     digits whether or not a leading "0x" is part of the option value.

EXAMPLES
     You may want to use the following example if a set of DSOs used by an
     application takes too much virtual address space to lay out
     sequentially, and the set is too large to try to provide an
     so_locations at link time.  This will move a set of DSOs to a common
     base address.

          #!/bin/sh
          for in dso1.so dso2.so dso3.so
          do
             rqs -l 0x300000 -m -f  $i
          done

FILES
     /usr/etc/rqs64 /usr/lib64/so_locations

SEE ALSO
     ld(1), rld(1), rqsall(1), rqs(1)

     This man page is available only online.