Purpose
Modifies an XCOFF
executable file header.
Syntax
ldedit -b Option [ -V ] File
Description
You can use the ldedit command to modify various fields in an XCOFF
header or the
auxiliary header of an executable file. The ldedit command makes it possible to mark or
unmark an application as a 'large page data' program. The ldedit command also makes it
possible to add or modify the values of MAXDATA and MAXSTACK without relinking.
The format of the -b flag is similar to the format used by the link editor, the
ld command. The -b flag can be used multiple times on the command
line.
If no flags are specified, the ldedit command displays a usage message by
using the standard error output.
Flags
Table 1. Flags
Item |
Description |
-bOption |
Modifies an executable as specified by Option. The possible values for
Option are:
- aslr or aslr:[[+-][tdsmp]*]*
- aslr or aslr:[[+-][tdsmp]*]*
specifies the address space layout randomization for the program. The aslr
option enables all the randomization attributes when only this option is used.
- If the aslr option is followed by a colon, individual attributes can be enabled. The plus
sign (+) enables randomization and the minus sign (-) disables randomization. The following
attributes can be used to specify text, data, stack, mmap, and private-libraries:
t, d, s, m, and
p. For the attributes that are not listed, the randomization setting remains
disabled.
Note: The m and p attributes cannot be specified for
32-bit programs.
- Some programs are compiled and linked such that relocatable addresses are mapped into the text
section. This option requires the relocation of the addresses when the program is run. These
programs fail if randomization is enabled for text or data. As a result, when text-section
relocations exist, text and data randomization are not enabled unless the t and
d attributes are explicitly specified when using the aslr
option.
- noaslr
- Clears the randomization attribute settings of the program.
- datapsize:psize
- Requests psize page sizes in bytes for data. The value can be specified as a
decimal, hexadecimal, or octal number. The number specifications are the same as in the C
programming language. Also, the page size can be specified as a number followed by a one-character
suffix:
- k or K for kilo or 0x400 bytes
- m or M for mega or 0x100000 bytes
- g or G for giga or 0x40000000 bytes
- t or T for tera or 0x10000000000 bytes
- p or P for peta or 0x4000000000000 bytes
- x or X for exo or 0x1000000000000000 bytes
For example, either -b datapsize:16k or -b datapsize:0x4000
requests 0x4000 for data and set the F_VARPG bit in the XCOFF
header. It is accomplished by setting the corresponding member of the auxiliary header to the
logarithm base 2 of the given value psize. If the value is different from 0, the
F_VARPG bit of the f_flags member of the XCOFF
header is also set. Otherwise, this bit is cleared.
- forkpolicy:policy
- Sets the _AOUT_FORK_POLICY flag in the XCOFF auxiliary header, if File is a
64-bit program. If policy is cor, the _AOUT_FORK_COW is
also set, requesting the use of the copy-on-write forktree policy. If policy is
cow, the _AOUT_FORK_COW flag is cleared, requesting the use of the
copy-on-reference forktree policy. If File is a 32-bit program, no change is
made.
- noforkpolicy
- Resets the _AOUT_FORK_POLICY and _AOUT_FORK_COR flags in the XCOFF auxiliary header, if
File is a 64-bit program. The default forktree policy is used, unless a forktree
policy is specified with the VMM_CNTRL environment variable. If File is a 32-bit
program, no change is made.
llu
Marks the executable file as capable for live library update (LLU).
nollu
Marks the executable file as not capable for live library update (LLU).
- lpdata
- Marks a file as a large page data executable.
- nolpdata
- Unmarks a file as a large page data executable.
- noshrsymtab
- Clears the _AOUT_SHR_SYMTAB flag in the XCOFF auxiliary header. If File is a
32-bit object, no change is made.
- M:<modtype>
- Updates the module-type field and the shared object flag in the file. The F_SHROBJ flag
is set in the XCOFF header when the module type begins with S character and is 3 characters
long.
- maxdata:value
- Sets the MAXDATA value. value is an octal number when it starts with
0 ,
a hexadecimal number when it starts with 0x , and a decimal number in all other
cases.
- maxdata:value/dsa
- Sets the MAXDATA value and the DSA bit. value is an octal number when it starts with
0 , a hexadecimal number when it starts with 0x , and a decimal
number in all other cases.
|
|
- maxstack:value
- Sets the MAXSTACK value. value is an octal number when it starts with
0 ,
a hexadecimal number when it starts with 0x , and a decimal number in all other
cases.
- norwexec
- Marks a file's writable and mappable sections and stack as non-executable.
- shmpsize:psize
- Requests psize page sizes in bytes for a shared memory. The value that is
specified must be a power of two. If not, the value is rounded down to the nearest power of two. The
value can be specified as a decimal, hexadecimal, or octal number. Also, the page size can be
specified as a number followed by a one-character suffix:
- k or K for kilo or 0x400 bytes
- m or M for mega or 0x100000 bytes
- g or G for giga or 0x40000000 bytes
- t or T for tera or 0x10000000000 bytes
- p or P for peta or 0x4000000000000 bytes
- x or X for exo or 0x1000000000000000 bytes
For example, either -b shmpsize:64k or -b shmpsize:0x10000
request a page size of 64 KB for shared memory. If the specified value is not 0, the F_VARPG bit of
the XCOFF header’s f_flags member is set. If 0 is specified, F_VARPG is cleared.
The program uses the default page size for shared memory. If the file is a 32-bit object, no change
is made.
- shrsymtab
- Sets the _AOUT_SHR_SYMTAB flag in the XCOFF auxiliary header. If File is a
64-bit program, a shared symbol table is created when the program is run. If Flag
is a 64-bit object but not a 64-bit program, the _AOUT_SHR_SYMTAB flag can be set, but has no effect
at run time. If File is a 32-bit object, no change is made.
|
|
- stackpsize:psize
- Requests psize page sizes in bytes for process main thread stack. The value
can be specified as a decimal, hexadecimal, or octal number. The number specifications are the same
as in the C programming language. Also, the page size can be specified as a number followed by a
one-character suffix:
- k or K for kilo or 0x400 bytes
- m or M for mega or 0x100000 bytes
- g or G for giga or 0x40000000 bytes
- t or T for tera or 0x10000000000 bytes
- p or P for peta or 0x4000000000000 bytes
- x or X for exo or 0x1000000000000000 bytes
For example, either -b stackpsize:16k or -b stackpsize:0x4000
requests 0x4000 for process main thread stack and set the F_VARPG bit in the
XCOFF header. It is accomplished by setting the corresponding member of the
auxiliary header to the logarithm base 2 of the given value psize. If the value
is different from 0, the F_VARPG bit of the f_flags member of the
XCOFF header is also set. Otherwise, this bit is cleared.
- textpsize:psize
- Requests psize page sizes in bytes for text. The value can be specified as a
decimal, hexadecimal, or octal number. The number specifications are the same as in the C
programming language. Also, the page size can be specified as a number followed by a one-character
suffix:
- k or K for kilo or 0x400 bytes
- m or M for mega or 0x100000 bytes
- g or G for giga or 0x40000000 bytes
- t or T for tera or 0x10000000000 bytes
- p or P for peta or 0x4000000000000 bytes
- x or X for exo or 0x1000000000000000 bytes
For example, either -b textpsize:16k or -b textpsize:0x4000
requests 0x4000 for text and set the F_VARPG bit in the XCOFF
header. It is accomplished by setting the corresponding member of the auxiliary header to the
logarithm base 2 of the given value psize. If the value is different from 0, the
F_VARPG bit of the f_flags member of the XCOFF
header is also set. Otherwise, this bit is cleared.
|
-V |
Prints the version of the ldedit command on the standard
error output. |
Examples
- To request system-selected page sizes for text, data, and stacks, enter:
ldedit -b textpsize:0 -b datapsize:0 -b stackpsize:0
This clears the
F_VARPG
bit in the XCOFF
header.
- To enable all of the randomization attributes, enter:
-baslr
If text-section relocations exist, do not enable
text and data randomization.
- To enable the randomization for text, disable the
randomization for stack, and leave the other values unchanged,
enter:
-baslr:+t-s