Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rqs32(1) — IRIX 6.5.3f

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ld(1)

rld(1)

rqs64(1)

rqsall(1)



RQS(1)                                                                  RQS(1)



NAME
     rqs: rqs32 - make 32-bit executable or shared object QUICKSTARTable

SYNOPSIS
     rqs [-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

DESCRIPTION
     rqs and rqs32 function identically and take identical options.  rqs is an
     old 32bit ABI program (-32). rqs32 is a new 32-bit ABI program (-n32).
     Either can process old 32-bit ABI and new 32-bit ABI applications and
     DSOs (so they can be used interchangeably).

     rqs takes an object, either an executable or a shared object, and using
     its liblist will then redo all the pre-relocations. For shared objects
     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, just like ld.

     rqs 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.

     -forcerequickstart
          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
          is an alternate spelling of the -t option.

     -l text_address_in_hex
          specifies the lowest virtual address for the shared object being
          rqs'ed, when specified, options -check_registry and -update_registry



                                                                        Page 1





RQS(1)                                                                  RQS(1)



          will be ignored.

     -loadaddress text_address_in_hex
          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, either with -c or -u is allowed.  Applicable
          to shared object only.

     -checkregistry so_locations_file
          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 is allowed.  Applicable to shared object
          only.

     -updateregistry so_locations_file
          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 -L in ld.

     -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 -Ldir in ld.  The environment variable LD_LIBRARY_PATH
          can also be used for this purpose.  (For a new 32bit ABI object
          LD_LIBRARYN32_PATH is used if it exists, else LD_LIBRARY_PATH is
          used if it exists.)

     -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 on the command line.

     -v   Makes rqs more verbose.  Generally intended for debugging, but is
          useful if one wants to know if the -m option detected any address
          overlaps, as this enables a message 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.  In fact, the environment variable
          _RLD_ROOT can also be used for this purpose. (For a new 32bit ABI



                                                                        Page 2





RQS(1)                                                                  RQS(1)



          object, use _RLDN32_ROOT instead of _RLD_ROOT).

     -root root_path
          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 /.

     -log file
          Pipes all error messages to <file> instead of standard output.

     -rldaddr address
          Sets the dynamic section DT_MIPS_RLD_TEXT_RESOLVE_ADDR to address.

     -rldaddronly
          Restricts the changes to only be to the dynamic section
          DT_MIPS_RLD_TEXT_RESOLVE_ADDR (only effective if the -rld_addr
          option is also on the command line).

     -rldunresolvecheckonly
          Restricts the changes to be to the dynamic section's
           DT_MIPS_FLAGS to set or unset RHF_NO_UNRES_UNDEF depending on if
          there were-not or were any undefined variables.

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

     The following options must be put into the environment variable RQSARGS
     to be understood: they cannot be 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
          searching a hash table for a symbol.  Prints  information about how







                                                                        Page 3





RQS(1)                                                                  RQS(1)



FILES
     /usr/etc/rqs
     /usr/etc/rqs32
     /usr/lib/so_locations (for old 32bit ABI)
     /usr/lib32/so_locations (for new 32bit ABI)

SEE ALSO
     ld(1), rld(1), rqs64(1), and rqsall(1)

NOTES
     To move a set of DSOs to a common base address a command such as in this
     example
         #!/bin/sh
         for in dso1.so dso2.so dso3.so
         do
            rqs -l 0x300000 -m -f  $i
         done
     is useful.  One might want to do this 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.

     Some options have long and short spellings. For example, -f and
     -forcerequickstart 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.


























                                                                        Page 4



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026