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.

[参考译文] ARM-CGT-CLANG -1 v1.3.1.LTS 警告标志选项(AWR2944)

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1113042/arm-cgt-clang--1-v1-3-1-lts-warning-flag-options-awr2944

您好(代表客户)、

我对 TI CLANG 编译器标志有一些疑问、  

 

在我们的软件中 ,使用了 TI Clang 编译器标志“-Werror”。

 

“-Werror” (-Werror):将检测到的警告视为错误。

 

我在编译器选项中删除了“-Werror”并添加了“-W万物”,现在我可以在 SW 构建日志中看到编译器警告列表。

 

您能否提供“-Werror”标志检测到的软件警告列表?

 

对于生产程序中使用的编译器警告、您会建议使用哪种选项、因此我们不应 错过软件中的任何重要警告修复。

我们正在使用:  

编译器版本- ARM-CGT-CLANG -1 v1.3.1.LTS

谢谢、Stefan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="3095" URL"~//support/tools/code-composer-studio 组/CCs/f/code-composer-studio 论坛/1113042/arm-cgt-clang-1-v1-3-1-ls-warning-flag-options-awr2944"]您建议在生产程序中使用哪种选项[引用]

    没有一个单一的答案、这就是编译器 提供不同选项的原因。   

    [引用 userid="3095" URL"~//support/tools/code-composer-studio 组/CCs/f/code-composer-studio 论坛/1113042/arm-cgt-clang-1-v1-3-1-ls-warning-flag-options-awr2944"]您是否可以提供“Wquot/flag”检测到的 SW 警告列表?]

    这些详细信息未记录、这就是我提交 EXT_EP-10855条目的原因 。  请随时通过该链接访问该链接。  同时、请使用 此页面上的文档。  我们尚未测试此页面上的每个选项。  但是、其中许多都像描述的那样工作。

    谢谢、此致、

    乔治

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

    标记"-Weverming"列出所有警告。

    当同时标记 Werror 和"Wther"时、代码构建将失败。

    如果我单独保留"Werror"标志,则编译将通过,这不能理解为什么"Werror"不能将警告检测为错误

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

    对于一个出现此情况的源文件...

    [~引脚 userid="525756" URL"//support/tools/code-composer-studio 组/CCS/f/code-composer-studio 论坛/1113042/ARM-CGT-clang-1-v1-3-1-LTS 警告标志选项-awr2944/4125407#4125407"]

    当同时标记 Werror 和"Wther"时、代码构建将失败。

    如果我单独保留"Werror"标志,则编译将通过

    [/报价]

    ... 请按照文章 How to submit a Compiler Test Case 中的说明进行操作

    谢谢、此致、

    乔治

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

    大家好、

    附加显示问题的相关文件。

    我们尝试了3个编译器选项,随附的是.c 文件、.ti_compiler_flags.bzL 和 command.txt 文件,它们显示了我们的编译与每个选项的行为方式。

    未使用、W万物、Werror 和 W万物

    Werror Wevery (Werror Wevery):这会导致每次警告的生成崩溃

    未使用:生成仅通过列出未使用类别中的警告

    W万物:生成因警告而崩溃

    我们还单独尝试了 Werror、其中编译会进行、而不会列出任何警告。

    我们现在的要求是提供正确/有效的编译器选项、以便我们不会错过生产 SW.e2e.ti.com/.../command_5F00_WError_5F00_WEverything.loge2e.ti.com/.../mss_5F00_main_5F00_WError_5F00_WEverything.ce2e.ti.com/.../ti_5F00_compiler_5F00_flags_5F00_WError_5F00_WEverything.bzl.txte2e.ti.com/.../command_5F00_Weverything.loge2e.ti.com/.../mss_5F00_main_5F00_Weverything.ce2e.ti.com/.../ti_5F00_compiler_5F00_flags_5F00_Weverything.bzl.txte2e.ti.com/.../command_5F00_Wunused.loge2e.ti.com/.../mss_5F00_main_5F00_Wunused.ce2e.ti.com/.../ti_5F00_compiler_5F00_flags_5F00_Wunused.bzl.txt 中与生产相关的警告

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

    感谢您提交源文件和构建日志。  不幸的是,我仍然无法再现这种行为...

    [引用 userid="527295" URL" URL"~//support/tools/code-composer-studio 组/CCs/f/code-composer-studio 论坛/1113042/arm-cgt-clang-1-v1-3-1-ls-warning-flag-options-awr2944/4142332#4142332#Wquote 针对此错误生成以下所有内容:[Wquote w]

    我无法使用提供的任何源文件、因为它们都#include 许多文件、而且我没有这些文件。  这就是为什么文章 https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_How-to-Submit-a-Compiler-Test-Case.html 显示了如何预处理文件的原因。  预处理完成后、只需提交一个文件。  请关注标题为  Makefile 方法和 Clang 编译器的文章部分。  这些说明仅用作一般指南。  根据构建工作方式的详细信息对其进行调整。

    谢谢、此致、

    乔治

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

    感谢您提交测试案例。

    当你说...

    [引用 userid="525756" URL"~//support/tools/code-composer-studio 组/CCS/f/code-composer-studio 论坛/1113042/arm-cgt-clang-1-v1-3-1-ls-warning-flag-options-awr2944/4125407#4125407#4125407'、然后生成所有错误/代码时、'Wquote '/'。]

    (笑声) 我认为这意味着编译器本身发生了灾难性故障。  我从未复制过这一结果。  我确实看到了这个...

    tiarmclang @options.txt -Weverything -Werror -c file.c
    <many diagnostics omitted>
    fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.

    (文件 options.txt 具有您所有的构建选项、但您看到的三个选项除外。 file.c 是您的预处理文件、已复制到正常 C 源文件中)。  当看到20个错误时、会发出最后一个诊断、编译会暂停。  我想这就是你看到的。  要克服这一问题、请将-ferrror limit 设置为一个高数字。  然后编译完成...

    tiarmclang @options.txt -Weverything -Werror -c -ferror-limit=100 file.c
    <many diagnostics omitted>
    54 errors generated.

    据我所知、所有54项诊断都是合法的。  第一个...

    In file included from software/app/mss/src/mss_main.c:38:
    In file included from bazel-out/ti_arm-fastbuild/bin/software/app/mss/mcal/wrappers/adc/_virtual_includes/dd_adc_h\dd_adc.h:32:
    bazel-out/ti_arm-fastbuild/bin/software/app/mss/mcal/Workspace/AWR294x/_virtual_includes/Adc_Cfg_h\Adc_Cfg.h:812:12: error:
          padding struct 'Adc_ChannelConfigType' with 1 byte to align 'channelConfigValue' [-Werror,-Wpadded]
        uint32 channelConfigValue;
               ^

    ...说在这个结构中...

    typedef struct
    {
        Adc_ChannelType hwChannelId;
    # 800 "bazel-out/ti_arm-fastbuild/bin/software/app/mss/mcal/Workspace/AWR294x/_virtual_includes/Adc_Cfg_h\\Adc_Cfg.h"
        uint8 settlingTime;
    
    
    
        boolean isConfigured;
    
    
    
    
    
    
    
        uint32 channelConfigValue;

    ...编译器在字段  channelConfigValue 之前插入一个填充字节。  这是准确的。  C 的一个要求是结构的字段的布局顺序与源代码中的排列顺序相同。  32位宽字段必须与4字节边界对齐。   通道配置值之前所有字段的总大小为3字节。  因此、需要1个字节的填充。  默认情况下、不会发出此诊断。  添加-W万物 会导致此诊断作为警告发出。  添加-Werror 会导致错误发出。  所有其他诊断的情况都是类似的。

    在同时使用-Wwhile -Werror 的情况下成功构建是可能的、但很难做到。  这是否值得所有麻烦?  只有您可以决定。

    谢谢、此致、

    乔治