This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] c29-CGT:c29CLANG:当与--relocatable 进行链接时、符号赋值由–0x20 偏移

Guru**** 2952510 points

Other Parts Discussed in Thread: TI-CGT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1651188/c29-cgt-c29clang-symbol-assignment-is-offset-by--0x20-when-linking-with---relocatable

器件型号: C29-CGT

您好:

当从 C 文件中将链接器命令文件中的符号(例如函数名称)分配给符号时、生成的符号会提前 0x20 字节放置(根据映射文件)。 `、如果我使用`renamed_main = main;`m(其中` ain `放置在` 0x80 `re处)、` named_main `将放置在` 0x60 处。

这只是使用`--relocatable`时的问题、否则两个符号都被正确放置在相同的位置。 遗憾的是、当生成的可重定位 elf 文件重新链接到最终的绝对可执行文件时、此问题仍然存在。

我已附上最低复制 (TEST.zip)、并执行`C:\ti\ccs2031\ccs\tools\compiler\ti-cgt_c29_2.2.0.LTS\bin\c29clang.exe main.c test.cmd`此文件夹中应该会生成`test.map`文件(我还在 ti-cgt_c29_2.0.0.STS 上复制了此文件)。

这会将`renamed_main`和`renamed_test `分别置于` 0xffffffffe0`和`0xfffff0`处、即`0x20 `小于`main`和` test `(32 位包装)、而它们应仅置于` 0x0 `和` 0x10`处。

谢谢、

William

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 William、

    我能够重现此问题、并在我更好地描述问题后、将提交一个外部缺陷来跟踪此问题。 同时、我能够使用--symbol_map 选项来解决偏移放置问题、将重命名的符号映射到 main 和 test 的定义。 如需此选项的文档、请 点击此处。

    如果您还有其他问题、敬请告知。

    谢谢。此致、
    Mackay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 William、

    很抱歉延迟、此处跟踪缺陷: https://sir.ext.ti.com/jira/browse/EXT_EP-13476。

    感谢和祝贺、
    Mackay