能够在输出 section 中显式的填入指定的信息,可以使用如下关键字:
-
BYTE(EXPRESSION) 1 字节
-
SHORT(EXPRESSION) 2 字节
-
LONG(EXPRESSION) 4 字节
-
QUAD(EXPRESSION) 8 字节
-
SQUAD(EXPRESSION) 64 位系统时是 8 字节
输出文件的字节顺序 big endiannesss 或 little endianness,可以由输出目标文件的
格式决定。如果输出目标文件的格式不能决定字节序,那么字节顺序与第一个输入文件的
字节序相同
一个简单的例子:
e.g. 三个源文件 DemoA.c,DemoB.c 和 DemoC.c,其中 DemoA.c 引用 DemoA.c 和
DemoB.c 里面的函数,使用 GCC 生成独立的目标文件 DemoA.o,DemoB.o 和 DemoC.o。
ld 使用链接脚本 Demo.lds, 并且在 Demo.lds 里面通过 BYTE, SHORT 等关键字在输出
文件中的特定 section 中添加数据:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
通过上面的运行数据可知,输出文件的 DemoData section 中已经被放入了指定的数据,
如 0x08048140 就被放入一个字节的数据。
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂