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.

[参考译文] 只要使用 C++虚拟方法、TI CGT ARMLLVM 1.0.0 STS 链接器就会保留 stdio 符号

Guru**** 2589300 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/972200/ti-cgt-armllvm-1-0-0-sts-linker-retains-stdio-symbols-whenever-c-virtual-methods-are-used

当我不使用 C++虚拟方法时、我遇到了一个构建完全如预期的问题。 只要我使用单个虚拟方法、编译器就会开始保留所有 stdio 符号(printf、fputs 等)。 将~4K 的.text 代码大小添加到我的项目中。 我的项目非常小(.text 的~1K)、我已验证代码中没有任何 stdio 方法的引用。 如果虚拟方法是空函数、也会发生这种情况。

谢谢、

Stuart

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

    您好 Stuart、  

     请指明您正在使用的处理器。  

    谢谢、

    ~Leonard   

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

    Cortex-M0+

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

    我无法重现问题。  您的代码是否组织为 CCS 项目?  如果是、请按照文章 共享项目中的说明 压缩项目。  然后将其附加到您的下一个帖子、或将其秘密发送给我。

    谢谢、此致、

    乔治

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

    感谢您私下提供测试用例。  我能够重现相同的结果。  我提交 了 EXT_EP-10217 以进行此调查。  欢迎您访问该链接。

    谢谢、此致、

    乔治

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

    编译器团队正在为下一个版本进行修复。 临时权变措施是覆盖__cxa_pete_virtual()的库定义:

    extern "C"{
    void __cxa_pete_virtual ()
    {
    abort();
    }
    // extern "C" 

    谢谢、

    Stuart