语法
ldedit -b Option [ -V ] File
描述
可以使用 ldedit 命令修改 XCOFF 头中或可执行文件的辅助头中的各种字段。 ldedit 命令可以将应用程序标记或取消标记为‘大页数据’程序。 使用 "ldedit命令还可以添加或修改 MAXDATA 和 MAXSTACK 的值,而无需重新连接。
-b 标志的格式与链接编辑器 ld 命令使用的格式类似。 -b标记可以在命令行中多次使用。
如果没有指定标志,"ldedit命令将通过标准错误输出显示使用信息。
标志
表 1. 标志
| 项 |
描述 |
| -b选项 |
修改由
Option 指定的可执行文件。 Option 的可能值是:
- aslr或 "aslr:[[+-][tdsmp]*]*
- aslr或 "aslr:[[+-][tdsmp]*]*指定程序的地址空间布局随机化。 如果只使用 "aslr选项,则会启用所有随机化属性。
- 如果 "aslr选项后有冒号,则可以启用单个属性。 正号 (+) 启用随机化,负号 (-) 关闭随机化。 以下属性可用于指定文本、数据、堆栈、mmap 和私有库:t、d、s、m 和p。 对于未列出的属性,随机化设置仍处于禁用状态。
注: 不能为 32 位程序指定 m 和 p 属性。
- 对某些程序进行了编译和链接,从而将可重定位的地址映射到文本部分中。 该选项要求在程序运行时重新定位地址。 如果对文本或数据启用了随机化,那么这些程序将失败。 因此,当存在文本段重置时,除非在使用 "aslr选项时明确指定t和d属性,否则不会启用文本和数据随机化。
- noaslr
- 清除程序的随机化属性设置。
- datapsize:psize
- 请求以字节为单位的psize数据页面大小。 该值可以指定为十进制、十六进制或八进制数。 数字规格与 C 编程语言相同。 此外,页面大小可以指定为一个数字,后跟一个单字符后缀:
- k 或 K(表示 KB 或 0x400 字节)
- m 或 M(表示 MB 或 0x100000 字节)
- g 或 G(表示 GB 或 0x40000000 字节)
- t 或 T(表示 TB 或 0x10000000000 字节)
- p 或 P(表示 PB 或 0x4000000000000 字节)
- x 或 X(表示 EB 或 0x1000000000000000 字节)
例如,"-b datapsize:16k或 "-b datapsize:0x4000请求0x4000数据,并在 "XCOFF报头中设置 "F_VARPG位。 具体方法是将辅助标头的相应成员设置为给定值psize 的对数基 2。 如果该值不同于 0,"XCOFF标头 "f_flags成员的 "F_VARPG位也会被设置。 否则,会清除该位。
- forkpolicy:policy
- 如果文件是 64 位程序,则设置 XCOFF 辅助头中的 _AOUT_FORK_POLICY 标志。 如果策略为cor,_AOUT_FORK_COW 也会被设置,从而要求使用写入时复制叉树策略。 如果策略为 "牛",_AOUT_FORK_COW 标志将被清除,从而要求使用 "引用复制 "叉树策略。 如果文件是 32 位程序,则不做任何更改。
- noforkpolicy
- 如果文件是 64 位程序,则重置 XCOFF 辅助头中的 _AOUT_FORK_POLICY 和 _AOUT_FORK_COR 标志。 将使用缺省派生树策略,除非通过 VMM_CNTRL 环境变量指定一个派生树策略。 如果文件是 32 位程序,则不做任何更改。
- llu
- 将可执行文件标记为支持在线库更新(LLU)。
- 诺卢
- 将可执行文件标记为不支持在线库更新(LLU)。
- lpdata
- 将文件标记为大型页面数据可执行文件。
- nolpdata
- 将文件取消标记为大型页面数据可执行文件。
- noshrsymtab
- 清除 XCOFF 辅助头中的 _AOUT_SHR_SYMTAB 标志。 如果文件是 32 位对象,则不做任何更改。
- M:<modtype>
- 更新文件中的模块类型字段和共享对象标志。 当模块类型以S字符开头且长度为 3 个字符时,XCOFF 标头中的 "F_SHROBJ标志将被设置。
- maxdata:值
- 设置 MAXDATA 值。 value 以
0 开始时是八进制数,以 0x 开始时是十六进制数,以其他字符开始时是十进制数。
- maxdata:值 "/dsa
- 设置 MAXDATA 值和 DSA 位。 value 以
0 开始时是八进制数,以 0x 开始时是十六进制数,以其他字符开始时是十进制数。
|
| |
- maxstack:值
- 设置 MAXSTACK 值。 value 以
0 开始时是八进制数,以 0x 开始时是十六进制数,以其他字符开始时是十进制数。
- norwexec
- 将文件的可写和可映射的部分和堆栈标记为不可执行。
- shmpsize:psize
- 请求共享内存的psize页面大小(以字节为单位)。 指定的值必须是 2 的幂。 如果不是,数值会向下舍入到最接近的 2 的幂。 该值可以指定为十进制、十六进制或八进制数。 此外,页面大小可以指定为一个数字,后跟一个单字符后缀:
- k 或 K(表示 KB 或 0x400 字节)
- m 或 M(表示 MB 或 0x100000 字节)
- g 或 G(表示 GB 或 0x40000000 字节)
- t 或 T(表示 TB 或 0x10000000000 字节)
- p 或 P(表示 PB 或 0x4000000000000 字节)
- x 或 X(表示 EB 或 0x1000000000000000 字节)
例如,"-b shmpsize:64k或 "-b shmpsize:0x10000要求共享内存的页面大小为 64 KB。 如果指定值不为 0,则设置 "XCOFF标头的 f_flags 成员的 F_VARPG 位。 如果指定为 0,则清除 F_VARPG。 程序使用共享内存的默认页面大小。 如果文件是 32 位对象,则不做任何更改。
- shrsymtab
- 在 XCOFF 辅助头中设置 _AOUT_SHR_SYMTAB 标志。 如果文件是 64 位程序,程序运行时会创建共享符号表。 如果Flag是 64 位对象,但不是 64 位程序,则可以设置 _AOUT_SHR_SYMTAB 标志,但在运行时无效。 如果文件是 32 位对象,则不做任何更改。
|
| |
- stackpsize:psize
- 请求进程主线程堆栈的psize页面大小(以字节为单位)。 该值可以指定为十进制、十六进制或八进制数。 数字规格与 C 编程语言相同。 此外,页面大小可以指定为一个数字,后跟一个单字符后缀:
- k 或 K(表示 KB 或 0x400 字节)
- m 或 M(表示 MB 或 0x100000 字节)
- g 或 G(表示 GB 或 0x40000000 字节)
- t 或 T(表示 TB 或 0x10000000000 字节)
- p 或 P(表示 PB 或 0x4000000000000 字节)
- x 或 X(表示 EB 或 0x1000000000000000 字节)
例如,"-b stackpsize:16k或 "-b stackpsize:0x4000请求0x4000用于处理主线程堆栈,并设置 "XCOFF头中的 "F_VARPG位。 具体方法是将辅助标头的相应成员设置为给定值psize 的对数基 2。 如果该值不同于 0,"XCOFF标头 "f_flags成员的 "F_VARPG位也会被设置。 否则,会清除该位。
- textpsize:psize
- 请求psize文本页面大小(以字节为单位)。 该值可以指定为十进制、十六进制或八进制数。 数字规格与 C 编程语言相同。 此外,页面大小可以指定为一个数字,后跟一个单字符后缀:
- k 或 K(表示 KB 或 0x400 字节)
- m 或 M(表示 MB 或 0x100000 字节)
- g 或 G(表示 GB 或 0x40000000 字节)
- t 或 T(表示 TB 或 0x10000000000 字节)
- p 或 P(表示 PB 或 0x4000000000000 字节)
- x 或 X(表示 EB 或 0x1000000000000000 字节)
例如,"-b textpsize:16k或 "-b textpsize:0x4000请求0x4000作为文本,并在 "XCOFF标头中设置 "F_VARPG位。 具体方法是将辅助标头的相应成员设置为给定值psize 的对数基 2。 如果该值不同于 0,"XCOFF标头 "f_flags成员的 "F_VARPG位也会被设置。 否则,会清除该位。
|
| -V |
在标准错误输出上打印 ldedit 命令的版本。 |
示例
- 要请求系统选定的页面大小的文本、数据和堆栈,请输入:
ldedit -b textpsize:0 -b datapsize:0 -b stackpsize:0
这将清除 "XCOFF标头中的 "F_VARPG位。
- 要启用所有随机化属性,请输入:
-baslr
如果存在文本部分重定位,请勿启用文本和数据随机化。
- 要对文本启用随机化,请禁用堆栈的随机化,并保持其他值不变,请输入:
-baslr:+t-s