gpt4 book ai didi

c - 强制编译器不链接到某些目标文件

转载 作者:行者123 更新时间:2023-12-04 05:25:16 26 4
gpt4 key购买 nike

我目前正在研究强制 rvct 编译器不链接特定翻译单元并假装它已链接它的可能性。

我们的产品在空间限制上运行得非常紧张,并且在控制空间的同时无法将一些单元测试与其集成。

基本上,我们在运行时可以利用的内存足以存储我们的单元测试,但是我们没有足够的 rom 空间来保存它们。

我们有办法在分散文件中准确控制我们代码的哪个内存段进入我们的设备,所以我们正在考虑定义单元测试代码将位于哪个区域并以某种方式强制编译器不链接在编译期间的特定代码中。

类似于以下内容:

Result UnitTestEntryPoint (UnitTest suite) {
if (hasTestInMemory) {
switch (suite) {
case EncrpytionTest:
return EncrptyUnitTest();
// more tests.
}
}
}

// Actual Tests, can we not link this code, but just pretend we link to them?
Result EncrpyUnitTest (void) {
// Do stuff...
}

然后在运行时,我们将单元测试二进制文件上传到我们在分散文件中定义的指定内存区域,并翻转 hasTestInMemorytrue .

这可能吗?

或者,如果没有,有人可以指出我寻找解决方案的正确方向,该解决方案以某种方式满足我们的空间限制并能够在运行时加载单元测试。

谢谢,

最佳答案

您应该能够使用分散文件将所有单元测试功能放入单独的加载区域。当您链接图像时,您将获得一个 AXF,但是当您将其转换为二进制文件以加载到内存中时,您应该获得两个文件,每个区域一个。

您还可以在单​​元测试镜像中有一些标记,您的 ROM 镜像可以检查这些标记以验证二进制文件是否已加载。此检查将替换您代码中的 hadTestInMemory 检查。同样,您应该能够使用分散文件在第二个二进制文件的开头放置一些特定的 RO 数据。

随着你的进步,我可能会提供更多细节方面的帮助。

关于c - 强制编译器不链接到某些目标文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com