CONSTANT
可以使用 CONSTANT 关键字引用一个目标特定的常数。语法如下:
name 可以为如下值:
-
MAXPAGESIZE: 目标的页大小
-
COMMONPAGESIZE:目标的默认也大小
一个简单例子
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 里面通过使用 CONSTANT 关键字对输出段
进行对齐:
DemoA.c
DemoB.c
DemoC.c
Demo.lds
使用如下命令进行编译和链接:
通过运行的数据可知,输出 DemoText 的 VMA 地址对齐到 0x0804a000,而不是
0x08049001。输出 DemoData 的 VMA 地址对齐到了 0x08051000,而不是 0x08050001。
附录
BiscuitOS Home
BiscuitOS Driver
BiscuitOS Kernel Build
Linux Kernel
Bootlin: Elixir Cross Referencer
赞赏一下吧 🙂