我正在尝试编写一个llvm工具通道,该通道创建一个内存不足的影子表(在Linux中从0x10000开始,因为这是最小值),我很好奇完成此操作的规范方法是什么。我同时查看了DataFlowSanitizer和MemorySanitizer代码,但在理解系统如何为特殊用途保留此空间并确保不会被alloca踩踏时遇到一些困难。
答案 0 :(得分:2)
如果我正确理解了这个问题,那么解决该问题的方法称为linker script。
链接器脚本将链接器定向到输出中数据的位置以及放置方式。 “将只读数据放置在0x70000上,将读写全局变量放置在0x9000上,将代码放置在0x42420000上”,就是这种情况。您可以编写一个链接描述文件,以将全局变量置于0x0,将GlobalVariable设置为字节数组,并对全局变量列表进行重新排序,以便您的GlobalVariable在列表中排在首位。
那应该行得通……就可以将有效数据置于0x0为止……