RQS(1) Last changed: 1-7-99
rqs, rqs32 - Make 32-bit executable or shared object QUICKSTARTable
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
IRIX systems
rqs and rqs32 function identically and take the same options. rqs is
an old 32-bit 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 you may want to save a copy of
the object 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
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, either with -c or -u is allowed.
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 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 (/usr/lib:/lib). This option has the
same semantics as the -L option 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. The environment
variable LD_LIBRARY_PATH can also be used for this purpose. (For
a new 32-bit ABI object LD_LIBRARYN32_PATH is used if it exists,
or 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, this is
useful only if the -l option is also specified on the command
line.
-v Makes rqs more verbose. Generally intended for debugging, but it
is useful if you want to know if the -m option detected any
address overlaps (messages will be issued).
-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 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 file
Pipes all error messages to file 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 be made to the dynamic section,
DT_MIPS_RLD_TEXT_RESOLVE_ADDR (only effective if the -rld_addr
option is also specified on the command line).
-rld_unresolve_check_only
Restricts the changes to be 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 reset the dynamic section's
DT_MIPS_FLAGS 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 searching a hash table for a symbol.
The following command can be used to 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
You may 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 so_locations at link time.
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.
/usr/etc/rqs
/usr/etc/rqs32
/usr/lib/so_locations (for old 32-bit ABI)
/usr/lib32/so_locations (for new 32-bit ABI)
ld(1), rld(1), rqs64(1), rqsall(1)
This man page is available only online.
[ Back ]
|