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.

[参考译文] 编译器/TMS320C6678:不同的链接器输出

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/700868/compiler-tms320c6678-different-linker-output

器件型号:TMS320C6678

工具/软件:TI C/C++编译器

对于不同工作区中的同一代码库、链接器输出为何会不同(尤其是.cinit 段)?

.cinit 0 82337c4c 000028f4
82337c4c 00001da6 (.cinit、.fardata.load)[加载映像、压缩= rle]
823399f2 00000002 --hole --[填充= 0]
823399f4 00000a22 (.cinit.JPEGIENC_TI_dSect1.load)[加载图像、压缩= RLE]
8233a416 00000002 --hole --[填充= 0]
8233a418 00000081 (.cinit、.data.load)[加载映像、压缩= rle]
8233a499 00000003 --hole --[填充= 0]
8233a49c 00000012 (.cinit、.data:IRAM.load)[加载映像、压缩= RLE]
8233a4ae 00000002 --hole --[填充= 0]
8233a4b0 0000000c (_TI_handler_table)
8233a4bc 0000000b (.cinit.data:未缓存:PcibxDriver.load)[加载映像、压缩= rle]
8233a4c7 00000001 --hole --[填充= 0]
8233a4c8 00000008 (.cinit、.bss.load)[加载映像、压缩= zero_init]
8233a4d0 00000008 (.cinit.data:dsptrace.load)[加载映像、压缩= zero_init]
8233a4d8 00000008 (.cinit.data:IRAM_app.load)[加载映像、压缩= zero_init]
8233a4e0 00000008 (.cinit.far.load)[加载映像、压缩= zero_init]
8233a4e8 00000008 (.cinit.heap_DDR_cached_local.load)[加载映像、压缩= zero_init]
8233a4f0 00000050 (_TI_cinit_table)

.cinit 0 82337c6c 000028f0
82337c6c 00001da2 (.cinit、.fardata.load)[加载映像、压缩= rle]
82339a0e 00000002 --hole --[填充= 0]
82339a10 00000a22 (.cinit.JPEGIENC_TI_dSect1.load)[加载图像、压缩= RLE]
8233a432 00000002 --hole --[填充= 0]
8233a434 00000081 (.cinit.data.load)[加载映像、压缩= rle]
8233a4b5 00000003 --hole --[填充= 0]
8233a4b8 00000011 (.cinit.data:IRAM.load)[加载映像、压缩= RLE]
8233a4c9 00000003 --hole --[填充= 0]
8233a4cc 0000000c (_TI_handler_table)
8233a4d8 0000000b (.cinit.data:未缓存:PcibxDriver.load)[加载映像、压缩= RLE]
8233a4e3 00000001 --hole --[填充= 0]
8233a4e4 00000008 (.cinit、.bss.load)[加载映像、压缩= zero_init]
8233a4ec 00000008 (.cinit.data:dsptrace.load)[加载映像、压缩= zero_init]
8233a4f4 00000008 (.cinit.data:IRAM_app.load)[加载映像、压缩= zero_init]
8233a4fc 00000008 (.cinit.far.load)[加载映像、压缩= zero_init]
8233a504 00000008 (.cinit.heap_DDR_cached_local.load)[加载映像、压缩= zero_init]
8233a50c 00000050 (_TI_cinit_table)

我使用的是 CCS 5.3.0和 C6000编译器工具7.4.1

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

    虽然可以看到.cinit 中的更多差异、但这些差异距离问题的根本原因更远。  例如、.cinit 从其他地址开始。  这意味着较低地址的其他段必须更短。  通过压缩.fardata 和.data:IRAM 等初始化段来创建.cinit 段。  这两个段压缩到不同的长度。

    在两个构建的映射文件中、请仔细检查.fardata 和.data:IRAM 段。  我怀疑您会看到差异。  这些差异更接近问题的根本原因。

    谢谢、此致、

    乔治

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

    .fardata 和.data:IRAM 完全相同。 唯一不同于.cinit 的段是.text。 除了不同的起始位置(由于.text 的大小不同、地址不同)之外、什么原因会导致.cinit 的大小不同? 对于这个问题、是.text?

    对于.text 段,差异不是一致的 i.e;具有不同大小的函数因编译而异。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现在、忽略.cinit 中的差异。  关注.text 中的差异。  我怀疑这更接近根本原因。

    Smriti Verma 说:
    对于.text 段,差异不是一致的 i.e;具有不同大小的函数因编译而异。

    这很奇怪。  我无法想象是什么原因造成了这种情况。  选择一个您已看到更改大小的函数。  差异越大越好。  对于包含该函数 的源文件、请按照文章如何提交编译器测试用例中的说明提交测试用例。  此外、指示更改大小的函数的名称。  我不知道我将仅从这个测试案例中找到根本原因。  但我相信它会推动调查。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我无法使用网站"发送私人邮件"。 还有其他方法吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我收到了您通过私人渠道发送的测试案例。  谢谢你。   

    源代码没有什么解释函数在不同构建之间更改大小的原因。   

    但我确实注意到您使用的是非常旧的编译器版本7.4.2。  该编译器中的错误中包括 该线程中讨论的错误。  简而言之、编译器临时文件名可能不唯一。  在由于并行 make、大量编译同时发生的情况下、这可能会导致奇怪的问题。  我不知道这是否是您问题的原因。  但是、升级编译器是值得的、只是为了确保我们不会遇到此问题。

    该错误的修复程序首先出现在版本7.4.22中。  但是、由于您必须进行升级、您也可以获得最后的7.4.x 版本、即7.4.24。  请注意、所有7.4.x 版本之间的唯一区别是错误修复。  其他所有内容都是相同的。

    因此、我建议您从 这个网站获得版本7.4.24

    谢谢、此致、

    乔治

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

    您是否升级到 版本7.4.24?  这是否解决了问题?

    谢谢、此致、

    乔治

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

    因为已经有一段时间了,我想你已经解决了这个问题。  非常感谢您的解决。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    已升级到版本7.4.24、这似乎解决了问题。
x 出现错误。请重试或与管理员联系。