我如何在 LLVM IR 中分配一个从地址 0 开始的字节数组?

How do i allocate an array of bytes starting at address 0 in the LLVM IR?

我正在尝试编写一个 llvm 检测过程,它在内存中创建阴影 table(从 Linux 中的 0x10000 开始,因为这是最小值),我很好奇什么是规范完成这项工作的方式。我查看了 DataFlowSanitizer 和 MemorySanitizer 代码,但我在理解系统如何保留此 space 以供特殊使用并确保它不会被 alloca 践踏时遇到了一些困难。

如果我正确地理解了这个问题,那么这样做的方法称为 linker script

链接描述文件指示链接器在输出中的何处以及如何定位数据。 "Place the read-only data at 0x70000, the read-write global variables at 0x9000 and the code at 0x42420000",那种事。您可以编写一个链接描述文件将全局变量放在 0x0 处,创建一个字节数组的 GlobalVariable,然后重新排序全局变量列表,使您的 GlobalVariable 在列表中排在第一位。

这应该行得通……就可以说将有效数据放在 0x0 处行得通……