链接格式段
公开「元类型」
文言:链接格式者,Linux 所载之可执行文件也;此写静态之形,无动态链接,无节表。汉语:ELF64 写出器:生成 Linux 可直接执行的静态可执行文件(ET_EXEC、非位置无关、无动态链接、无节表)。每个载入段按给定虚址映射,文件内容可短于内存大小,余下部分由内核零填充。
文言:段者,虚址、内容、内存之大、权也。权以读四、写二、执行一相加。汉语:载入段:虚拟地址、文件内容、内存大小(不小于内容长度)、权限位(读 4、写 2、执行 1,与 ELF 的 p_flags 相同)。
载入段
公开化「整数」而化「字节串」而化「整数」而化「整数」而「链接格式段」
暂无说明。
链接格式对齐
公开「整数」
文言:对齐取六万五千五百三十六,页大四千、一万六千、六万五千之核皆可载。汉语:段对齐取 64 KiB,使 4 KiB、16 KiB、64 KiB 页的内核都能映射。
链接格式头长
公开「整数」
暂无说明。
链接格式段头长
公开「整数」
暂无说明。
链接格式段虚址
公开化「链接格式段」而「整数」
暂无说明。
链接格式段内容
公开化「链接格式段」而「字节串」
暂无说明。
链接格式段大小
公开化「链接格式段」而「整数」
暂无说明。
链接格式段权限
公开化「链接格式段」而「整数」
暂无说明。
向上对齐
公开化「整数」而化「整数」而「整数」
暂无说明。
链接格式同余偏移
公开化「整数」而化「整数」而「整数」
文言:内容所居之偏,须与虚址同余于对齐。汉语:给内容选文件偏移:不小于游标,且与虚址对对齐取余相同(ELF 要求 p_offset ≡ p_vaddr mod p_align)。
链接格式布局
公开化「整数」而化(「列」于「链接格式段」)而((「列」于「整数」)合「整数」)
文言:逐段定偏移;无内容之段不占文件,偏移取同余之最小者。汉语:依次为每段确定文件偏移,返回偏移列表与文件总长。无内容的段不占文件字节,偏移取与虚址同余的最小值。
链接格式载入头
公开化「链接格式段」而化「整数」而「字节串」
文言:段头五十六字节:类、权、偏、虚址、实址、文件长、内存长、对齐。汉语:生成一个 PT_LOAD 程序头(56 字节)。
链接格式栈头
公开化「有」而「字节串」
文言:栈不可执行之标,其类为 GNU 栈。汉语:PT_GNU_STACK 程序头:声明进程栈可读写、不可执行。
链接格式文件头
公开化「爻」而化「整数」而化「整数」而「字节串」
文言:文件之首六十四字节:魔数、六十四位、小端、版本,可执行之类,机器号,入口,段头之偏与数。汉语:ELF 文件头(64 字节)。臂为 EM_AARCH64(183),否则 EM_X86_64(62)。
链接格式检段
公开化「整数」而化(「列」于「链接格式段」)而「有」
文言:诸段须依虚址升序,前段之末不逾后段之始;首段之下须留六万五千五百三十六以置头段。汉语:检查各段按虚址升序且互不重叠,最低段虚址不低于 128 KiB(其下 64 KiB 放头段)。
生成链接格式可执行
公开化「爻」而化「整数」而化(「列」于「链接格式段」)而「字节串」
文言:成可执行之文件:头、头段、诸段头、栈头,然后依偏移置诸段之内容。头段者,映文件之首于最低段之下六万五千五百三十六处,只读;诸装载器多求首个载入段起于文件偏移零。汉语:生成完整的静态可执行文件:文件头、一个头段(把文件开头的文件头与程序头只读映射到最低段之下 64 KiB 处;不少装载器要求第一个 PT_LOAD 的文件偏移为零)、每段一个 PT_LOAD 程序头、一个 PT_GNU_STACK 程序头,再把各段内容放到布局算出的偏移处。各段须按虚址升序且互不重叠,内容与内存大小由调用方给定。