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.

[参考译文] CCStudio:关于 TI Clang 3.2.0LTS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1307058/ccstudio-about-ti-clang-3-2-0lts

器件型号:CCStudio
主题中讨论的其他器件:MSPM0G3507TEST2

您好!

我目前正在以下环境中进行开发、但我有一些问题。

Code Composer Studio:12.5.0.00007
编译器: ti-cgt-armllvm_3.2.0.LTS
使用的 MCU:MSMPM0G3507、CC234R05

如果您在该环境中构建以下代码①(NG case)、它将像这样嵌入在映射文件中。
       .rodata 0 000001a8 00000018
       000001a8 00000009 empty.o (.rodata.str1.117413490714450581041)
       000001b1 00000009 empty.o (.rodata.str1.57731210584388587101)

此外、如果您在不同的文件夹中创建完全相同的工程、请在不同的工作区中导入和编译每个工程、

差异将出现、差异也将出现在.txt/.hex 文件中。
这有什么解决方案吗?

顺便说一下、如果您使用 ti-cgt-armllvm_2.1.3.LTS、则差异不会出现。
或者、如果您在下面的代码中像②(OK case)那样对其进行更改、差异将消失、
我正在寻找另一种方法、因为更改量和代码的可见性会受到影响。

项目设置(.project)和源代码已略有改动、因此请检查随附的 zip 文件。
更改的来源是 MSMPM0G3507 (mspm0_SDK_1_20_00_05)的示例工程(empty_LP_MSPM0G3507_nortos_ticlang)。
在 workspace1中的 empty_test1中导入和编译工程而生成的映射文件,
如果在 workspace2中的 empty_test2中导入工程、生成它、并比较生成的映射文件、您将看到不同之处。

①NG ć 案

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define STR "ABCDEFGH"
int main(void)
{
char str1[7];
char str2[7];
SYSCFG_DL_init();
strcpy(str1, STR);
strcpy(str2, "IJKLMNOP");
while (1) {
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

②OK ć 案

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static const char STR[] = "ABCDEFGH";
int main(void)
{
char str1[7];
char str2[7];
static const char str3[] = "IJKLMNOP";
SYSCFG_DL_init();
strcpy(str1, STR);
strcpy(str2, str3);
while (1) {
}
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

e2e.ti.com/.../7484.Empty.zip

此致、

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

    您好!

    我已将此主题提请编译器专家注意。 请注意,许多人因假期外出,因此回复可能会延迟。

    谢谢

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

    我可以重现名称错误  .rodata 部分是不同的。  但它们的长度和内容相同 .rodata 段是相同的。  是您看到的吗?  为什么必须 .rodata 段具有相同的名称?

    谢谢。此致、

    -乔治

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

    您好!

    由于这种差异、差异也会出现在.txt/.hex 文件中、如下图所示。

    即使我在不同的环境中构建相同的源代码、我也希望生成的.txt/.hex 文件相同。

    这是因为、即使在构建相同的源代码时也存在差异、管理也会变得复杂。

    可以在 CCS 上进行设置吗? 或者是否有任何其他解决方案?

    此致、

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

    我现在明白了这个问题。  我不知道编译器为什么会这样。  似乎没有任何方法可以更改此行为。  我提交了条目 EXT_EP-11620 对此进行调查。  我们欢迎您通过这个链接来了解这一点。

    谢谢。此致、

    -乔治

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

    指示编译器不要将数字添加到 .rodata 像这样的节名称...

    [报价 userid="571405" url="~/support/processors-group/processors/f/processors-forum/1307058/ccstudio-about-ti-clang-3-2-0lts "]        000001a8 00000009 empty.o (.rodata.str1.117413490714450581041)
           000001b1 00000009 empty.o (.rodata.str1.57731210584388587101)

    ...构建与选项  -fno-unique-string-section-names

    谢谢。此致、

    -乔治