rqs64(1)

rqs64 - Modifies 64-bit executable or shared object to be quickstart- ready

As shipped in IRIX 6.5.30. Last changed in IRIX 6.5.19.

NAME
     rqs64 - Modifies 64-bit executable or shared object to be quickstart-
     ready

SYNOPSIS
     rqs64 [options] object

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

     rqs64 creates a new version of the object and saves it back in place,
     overwriting the previous version, so user may want to save a copy of
     the object somewhere before re-quickstarting it.

     For an object to be re-quickstartable, 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 re-quickstarted, the
     bit RHF_REQUICKSTARTED is set in the DT_MIPS_FLAGS field of its
     .dynamic section.

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

     The following options are available:

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

     -t timestamp_value_in_hex or -timestamp 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.

     -l text_address_in_hex or -load_address 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.

     -c so_locations_file or -check_registry 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.

     -u so_locations_file or -update_registry 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.

     -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 or -root 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).

     -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
                 DT_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 are 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 moves 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)