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.

[参考译文] MSP432E401Y:如何隔离警告的原因:类型#10457-D 使用可变长度阵列时,线程不安全。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1240996/msp432e401y-how-to-isolate-the-cause-of-warning-type-10457-d-use-of-variable-length-arrays-is-not-thread-safe

器件型号:MSP432E401Y

我们有一个大型程序、在链接时会产生可怕的#10457-D 警告。

我已经学习了以下线程

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/883790/compiler-msp432e401y-warning-type-10457-d-use-of-variable-length-arrays-is-not-thread-safe/3284696?tisearch=e2e-sitesearch&keymatch=VLA%2520warning#3284696

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1097747/tm4c1290ncpdt-is-there-a-way-to-enable-a-more-descriptive-output-for-10457-d-use-of-variable-length-arrays-is-not-thread-safe/4067136?tisearch=e2e-sitesearch&keymatch=VLA%20warning#4067136

在其中一个线程中、

"如果您的程序确实同时使用 VLA 和多个线程、请了解该组合不受支持。  我们最能做的就是检测这种组合并发出警告。"

为什么编译器/链接器不能提供有关检测到的内容的一些详细信息?  我们在各种构建工件、映射文件等中是否可以寻找可以为我们提供一些线索的东西? 我们是否可以向编译器提供某种选项来列出它认为遇到的所有玻璃?   

我试图通过剥离代码和库直到警告消失来隔离这些警告的原因、然后将片段放回(通常需要修改这些片段和子片段以进一步隔离代码)。  建设时间慢,工程规模大,各项工作都很艰苦。  我对这项工作做了很深入的研究、但由于我被投入到更高优先级的任务中、不得不放弃这项工作。  我不敢回头,尤其是因为它已经有一段时间了。

对于如何更快速地隔离这一警告的原因的任何想法,我们都将不胜感激。

我的记忆是模糊的,但我记得能够隔离警告的一个原因,它必须与类似的东西

字符 a[some_size]; 其中 some_size 是  extern const uint16_t some_size;   

这看起来像是误报、因为常量是不可变的。  我运行了一个实验、移除了"外部"、然后直接输入一些类似的内容  

const uint16_t some_size = 30;

而 VLA 警告消失了。   片刻之后、我希望这可能是链接器警告的唯一来源、但一旦我输入更多代码、警告就会重新出现。

现在我想知道检测到多少,因为 VLA 是真实的。

我们正在使用 TI v20.2.1.LTS 版本的编译器、根据上述相关线程、该编译器不应生成误报。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于如何更快速地隔离此警告的原因的任何想法都会非常感激。

    我相信可以通过几种不同的方法来实现它。  这是我首先尝试的建议。

    只要看到 VLA (可变长度数组)、编译器生成的代码就会调用一个以下名称的 RTS 函数:  _VLA_alloc 。  这个建议很重要。

    在构建时、请使用编译器选项 -- src_interlist 。  这会使编译器不删除自动生成的汇编文件。  此文件与源文件同名、扩展名更改为 .asm 。  它中还有一些注释、便于理解。   

    假设您在 Windows 系统上、并且可以方便地将所有汇编文件收集到一个目录中。  然后你可以运行一个像这样的命令...

    C:\examples>findstr vla_alloc *.asm | findstr BL
    vla.asm:        BL        __vla_alloc           ; [] |6|

    findstr 命令在这些文件中搜索字符串、 VLA_alloc 函数 。  第二个 findstr 命令过滤 BL 来调用函数。  为 BL 指令是函数调用的实现方式。  在这个简单的示例中、只有一个命中。  文件命名为 VLA.ASM ,表示相应的 C 文件名为 VLA.c 。  为 6 在行的末尾、表示可变长度数组出现在的行6上。 VLA.c

    假设您使用的是类 Unix 系统。  将所有汇编文件收集在一个目录中是不方便的。  但有一个目录位于源代码的根目录下。  然后你可以运行一个像这样的命令...

    $ find . -name '*.asm' | xargs fgrep vla_alloc | fgrep BL
    ./vla.asm:        BL        __vla_alloc           ; [] |6|

    讨论命令的详细信息不在论坛帖子的讨论范围内、例如 查找 Xargs fgrep 。  在互联网上搜索这些详细信息。  在较高层次上、此命令查找从当前目录开始的所有汇编文件、并在它们中搜索字符串 VLA_alloc 函数 、然后将其筛选为同样具有 BL 。  输出与上一个示例中描述的输出类似。

    我希望大家现在可以大致了解这个问题。  您可能还可以添加其他一些调整、使之更实用。

    谢谢。此致、

    -乔治

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

    谢谢乔治。  非常感谢您的答复。  一旦我有机会尝试你的建议,我会回来,让你知道如何进行.

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

    你好,George。  我终于能够做到这一点。  我上周在度假。  我按照你上面的指令操作、并且没有在.asm 文件中出现任何 VLA_alloc 的出现。  这是否意味着#10457-D 警告是虚假报警?

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

    我发现了一样的! 我注意到在我的映射文件中提到了 VLA_alloc、因此它似乎在某个地方被使用。 我想知道某个库函数是否在某个位置使用它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我按照上述说明操作,但在.asm 文件中没有出现任何 VLA_alloc。  [/报价]

    谢谢你。

    这是否意味着#10457-D 警告是虚假警报?

    我不确定。  请再执行一个诊断步骤。  将此选项添加到链接:  -- emit_references:file=refs 。  这会创建一个名为 refs.txt 。  请 将其附加到您的下一个帖子。   搜索 VLA_alloc 函数 。  您应该会看到一个与此类似的条目。

    Section .text:__vla_alloc:rtsv7M4_T_le_v4SPD16_eabi.lib<vla_alloc.c.obj>:
          
        Section size: 332
    
        Defines:
          Symbol Name  Offset  TYPE      Scope   Size
          -----------  ------  ----      -----   ----
          __vla_alloc  0       function  global  328 
    
        Input references:
          Section        from symbol       to symbol    at offset
          -------        -----------       ---------    ---------
          .text:vla.obj  read_and_process  __vla_alloc  16

    这个条目来自我放在一起的玩具测试案例,明确使用了一个 VLA。  重点介绍最后一行。  即、 名为一个函数的符号(函数) 读取_和_处理 ,从输入部分 .text 在目标文件中 vla.obj ,  对符号进行引用(调用) _VLA_alloc 。  我很想知道什么是感应电阻器、 _VLA_alloc 限制。

    谢谢。此致、

    -乔治

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

    谢谢乔治。  生成 refs 文件需要永久性的时间。  我不得不停止,因为我需要用这个系统做其他事情。  我将让它一夜之间运行起来、我希望它将完成。  我认为它可以正常工作(因为文件正在生成)、但只需要很长时间。

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

    您好、George、

    我也尝试了您的建议(是的、Paul、这是非常慢的、我花了大约5个小时才能完成)。

    这是我得到的结果:

    段.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi.lib :

    分区大小:332

    定义:
    符号名称偏移类型范围大小
    ---------------- -------- ---------------- ---
    _VLA_alloc 0函数全局328

    输入基准:
    偏移处从符号到符号的段
    ---------------- ---------------- ---------------- ----------------
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 52
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 104
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE 和、char、long long) const _VLA_alloc 60
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、标准::_2::ios_BASE 和、char、long long) const _VLA_alloc 114
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 52
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 104
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 54
    .text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 108
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 52
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 104
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 60
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、标准::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 114
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 52
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 104
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 54
    .text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long long) const _VLA_alloc 108

    有什么建议吗?

    谢谢

    吉姆

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

    感谢您完成这一困难的诊断步骤。  我没有意识到这会是这样的痛苦。

    嗯、它不是假阳性。  这些函数确实使用了 VLA。  编译器 RTS 源代码是编译器安装的一部分。  它位于类似于

    C:\ti\ccs1200\ccs\tools\compiler\ti-CGT-ARM_20.2.1.LTS \lib\src

    使用 VLA 的文件位于子目录中。 libcxx 。  该代码来自 语言环境 ,包含在 locale.cpp

    template <class _CharT, class _OutputIterator>
    _OutputIterator
    num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
                                             char_type __fl, long __v) const
    {
        // Stage 1 - Get number in narrow char
        char __fmt[6] = {'%', 0};
        const char* __len = "l";
        this->__format_int(__fmt+1, __len, true, __iob.flags());
        const unsigned __nbuf = (numeric_limits<long>::digits / 3)
                              + ((numeric_limits<long>::digits % 3) != 0)
                              + ((__iob.flags() & ios_base::showbase) != 0)
                              + 2;
        char __nar[__nbuf];  // VLA 
        int __nc = __libcpp_snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
        char* __ne = __nar + __nc;
        char* __np = this->__identify_padding(__nar, __ne, __iob);
        // Stage 2 - Widen __nar while adding thousands separators
        char_type __o[2*(__nbuf-1) - 1];  // VLA
        char_type* __op;  // pad here
        char_type* __oe;  // end of output
        this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
        // [__o, __oe) contains thousands_sep'd wide number
        // Stage 3 & 4
        return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
    }

    我添加2条评论  // VLA 。  原始中未出现的特征值。  该功能的其他变体中也会出现类似的 处理 。  这些模板函数是为以下项实例化的: 字符型 wchar_t 更昂贵。  这就是您在参考文件中多次看到它的原因。

    您的代码可能永远不会调用这些函数。  由于 EXT_EP-10871这一已知问题、它们无论如何都是您程序的一部分。  如果是这样、那么您可以忽略连接器诊断  10457.  

    谢谢。此致、

    -乔治

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

    George 您好:

    我终于回来了。 生成参考文件需要9到10个小时。 当我查看生成的文件的内容时、它给了我一些关于将注意力集中在何处的想法。 我想,我可能能够找出根本原因,我做了一定程度,但我不知道,我是否会有追溯到你向吉姆描述的区域 libcxx 代码。

    我试着把问题解决到一个小项目,我可以很容易地分享。 我有一个 VLATest 项目、我将其整合在一起、至少演示了我们看到的一些警告、如果不是全部的话。 如果有用、我可以将其发送给您。 使用开源 fmt 代码会导致出现 VLA 警告。 以下是包含 refs 文件中 VLA_alloc 的行。

    第1行:__VLA_alloc 0函数全局328
    第5行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 52
    第6行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 104
    第7行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE 和、char、long long) const _VLA_alloc 60
    第8行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、标准::_2::ios_BASE 和、char、long long) const _VLA_alloc 114
    第9行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 52
    第10行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 104
    第11行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 54
    第12行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 108
    第13行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6do_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 52
    第14行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6do_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 104
    第15行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 60
    第16行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、标准::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 114
    第17行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 52
    第18行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 104
    第19行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 54
    第20行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long long) const _VLA_alloc 108
    新3次(19次点击)
    第1行:段.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi.lib :
    第8行:__VLA_alloc 0函数全局328
    第13行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 52
    第14行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 104
    第15行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE 和、char、long long) const _VLA_alloc 60
    第16行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、标准::_2::ios_BASE 和、char、long long) const _VLA_alloc 114
    第17行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 52
    第18行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 104
    第19行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 54
    第20行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 108
    第21行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 52
    第22行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6do_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 104
    第23行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 60
    第24行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、标准::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 114
    第25行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 52
    第26行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 104
    第27行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 54
    第28行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long long) const _VLA_alloc 108
    D:\Proteus\Git\GitLab\OS\TI-RTOS\VLAWarning\Workspace\VLATest\Release\refsWithVLAWarn.txt (79次点击)
    第1985行:.text:__VLA_dealloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib __ vla_dealloc 释放66
    第1986行:.text:__VLA_dealloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_dealloc 释放86
    第2007行:.text:_ZN33_internal_11_VLA_alloc_c_be8bd49b21free_dead_allocationsEPv:rtsv7M4_T_le_v4SPD16_eabi_eh.lib 免费80
    第2008行:.text:_ZN33_internal_11_vla_alloc_c_be8bd49b21free_dead_allocationsEPv:rtsv7M4_T_le_v4SPD16_eabi_eh.lib 免费96
    第4869行:.arm.exidx:rtsv7m4_T_le_v4SPD16_eabi_eh.lib __ aeabi_exund_cpp_pr0 0
    第4870行:.arm.exidx:rtsv7m4_T_le_v4SPD16_eabi_eh.lib __ aeabi_exund_cpp_pr0 0
    第4871行:.arm.exidx:rtsv7m4_T_le_v4SPD16_eabi_eh.lib __ aeabi_exund_cpp_pr0 0
    第5043行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib __VLA_alloc malloc 46
    第5044行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc malloc 68
    第5045行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc malloc 256
    第5046行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib __VLA_alloc malloc 302
    第5362行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc __abort_execution 14
    第5363行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc __abort_execution 206
    第5364行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc __abort_execution 312
    第49118行:section .text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第49125行:__VLA_alloc 0函数全局328
    第49130行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE660_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 52
    第49131行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE660_putES4_rns_8ios_baseEcl:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long) const _VLA_alloc 104
    第49132行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、long long) const _VLA_alloc 58
    第49133行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6DO_putES4_rns_8ios_baseEcx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE 和、char、long long) const _VLA_alloc 112
    第49134行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 52
    第49135行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcm:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 104
    第49136行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE660_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 54
    第49137行:.text:_ZNKSt3__27num_putIcNS_19ostreambuf_iteratorIcNS_11char_traitsIcEEE6do_putES4_rns_8ios_baseEcy:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<char、std::__2::ostreambuf_iterator<char、std::__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<char、std:__2::char_stances >、std::_2::ios_BASE &、char、unsigned long) const _VLA_alloc 108
    第49138行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 52
    第49139行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwl:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long) const _VLA_alloc 104
    第49140行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE &、wchar_t、long long) const _VLA_alloc 58
    第49141行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、long long) const _VLA_alloc 112
    第49142行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 52
    第49143行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwm:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 104
    第49144行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long) const _VLA_alloc 54
    第49145行:.text:_ZNKSt3__27num_putIwNS_19ostreambuf_iteratorIwNS_11char_traitsIwEEE6DO_putES4_rns_8ios_baseEwy:rtsv7M4_T_le_v4SPD16_eabi_eh.lib std::__2::num_put<wchar_t、std:__2:::ofstreambuf_iterator<wchar_t、std:__2::char_stances >>::do_put (std:__2::ostreambuf_iterator<wchar_t、std:__2::char_stances >、std::_2::ios_BASE 和、wchar_t、unsigned long long) const _VLA_alloc 108
    第49146行:.arm.exidx:rtsv7m4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc 0
    第49266行:section .text:__VLA_dealloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第49294行:.arm.exidx:rtsv7m4_T_le_v4SPD16_eabi_eh.lib _VLA_dealloc 0
    第56985行:section .text:_ZN33_internal_11_VLA_alloc_c_be8bd49b21free_dead_allocationsEPv:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第56994行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib __ vla_alloc _zn33_internal_11_vla_alloc_c_be8bd49b21free_dead_allocationsEPv 156
    第56995行:.arm.exidx:rtsv7m4_T_le_v4SPD16_eabi_eh.lib _ZN33_internal_11_vla_alloc_c_be8bd49b21free_dead_allocationsEPv 0
    第57010行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_alloc realloc 194
    第57016行:段.data:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第57028行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib __ VLA_alloc CURR_VLA_POOL 328
    第57029行:.text:__VLA_dealloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib _VLA_dealloc CURR_VLA_POOL 108
    第57030行:.text:_ZN33_internal_11_VLA_alloc_c_be8bd49b21free_dead_allocationsEPv:rtsv7M4_T_le_v4SPD16_eabi_eh.lib CURR_VLA_POOL 116
    第57033行:section .arm.exidx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第57042行:.text:__VLA_alloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib
    第57138行:section .arm.exidx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第57147行:.text:__VLA_dealloc:rtsv7M4_T_le_v4SPD16_eabi_eh.lib
    第60669行:section .arm.exidx:rtsv7M4_T_le_v4SPD16_eabi_eh.lib :
    第60678行:.text:_ZN33_internal_11_vla_alloc_c_be8bd49b21free_dead_allocationsEPv:rtsv7M4_T_le_v4SPD16_eabi_eh.lib



    你会注意到在 Jim 的案例中有与区域设置关联的 VLA_allocs、但是还有其他包含 VLA_alloc 的行、我想了解生成这些函数的原因、以及我们是否应该关注它们。

    在 VLATest 项目中、我还说明了前面提到的关于使用外部常量变量的误报(至少我认为是这样)。 您能否确认这确实是错误的肯定?

    我认为、对于 TI 来说、记录与10457警告相关的 libcxx 问题是不错的。 这对于任何试图理解该警告的人来说都可能非常有用。 现在,通过这个线程,它被记录:)。

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

    哎呀!  谢谢!

    但还有其他行包含 VLA_alloc,我想了解生成这些行的原因,以及我们是否应该关注它们。

    否。  回顾我的文章7月10日,在那里我描述了参考文件的内容。  我只对该函数的任何参考感兴趣、 _VLA_alloc 。  文件的这一部分以类似于...的行开始。

    Section .text:__vla_alloc:rtsv7M4_T_le_v4SPD16_eabi.lib<vla_alloc.c.obj>:

    文件中碰巧包含该字符串的其他行 VLA_alloc 函数 不相关。  例如、目标文件可能需要 vla_alloc.c.obj 还包含其他函数、在这里、这些函数都不是需要关注的。

    在 VLATest 项目中,我还说明了我前面提到的关于使用 extern const 变量的误报(至少我认为是这样)。 您能否确认这确实是错误的肯定吗?

    我无法确认它、因为我没有该项目。  请按照文章 共享项目中的说明 压缩该项目、然后 zip 文件附加到您的下一篇文章中。

    谢谢。此致、

    -乔治

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

    e2e.ti.com/.../VLATest.zip

    George 您好:

    我认为我已接近完全理解。  我以前仔细阅读过你的帖子、但我不确定。  我会尝试另一个角度,也许我首先应该尝试。  我们是否只关心 VLA_alloc 位于"to symbol"下面的条目、以及 VLA_alloc 出现在任何其他地方的条目、就 VLA 警告而言、可以忽略这些条目?

    我已附上我在上一篇文章中提到的项目。  我上次尝试附加它,但它不能使用插入图像/视频/文件。  在阅读了你发送的链接后,我记得我所要做的是把档案拖进窗口。

    在附加的中、您将在 Workspace/VLATest/Release 中找到生成的 refs 文件(refsWithoutVLAWarn.txt 和 refsWithVLAWarn.txt)。 使用 main.cpp 中定义的 make_VLA_warning_FMT 构建工程会生成 refsWithVLAWarn.txt。  

    在 main.cpp 中、我还说明了前面提到的关于使用外部常量变量的误报(至少我认为这是或应该是这样)。 这可通过定义 make_vla_warning_extern_const 来证明。  我很想知道这是否真的是假阳性?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们是否只关心 VLA_alloc 位于"to symbol"下面的条目,并且 VLA_alloc 出现在任何其他地方,就 VLA 警告而言,我们可以忽略这些条目?

    可以。

    我已附上我在上一篇文章中提到的项目。

    谢谢你。  很抱歉、今天没有机会完成整个演示。  我明天会回到你的身边。

    谢谢。此致、

    -乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在附件中,您将在 Workspace/VLATest/Release 中找到生成的参考文件(refsWithoutVLAWarn.txt 和 refsWithVLAWarn.txt)。 使用 main.cpp 中定义的 make_VLA_warning_FMT 构建工程会生成 refsWithVLAWarn.txt。  [/报价]

    带有 make_VLA_warning_FMT 的构建以某种方式引用了与区域设置相关的函数。  这些功能包括 处理 ,我已经展示过使用 VLA。

    在 main.cpp 中,我还说明了我前面提到的关于使用 extern const 变量的假阳性(至少我认为它是或应该是)。

    这个问题的一个简单的例子是...

    extern const int array_size;
    
    void do_work(int *);
    
    void example()
    {
       int array[array_size];  // VLA
       do_work(array);
    }

    由于 阵列大小 未知的 ARM Cortex R4F、 数组 最终成为一个 VLA。

    谢谢。此致、

    -乔治

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

    谢谢乔治。   

    因为 阵列大小 未知的 ARM Cortex R4F、 数组 最终成为一个 VLA。

    在我看来、应该在编译时发出警告、而不是由链接器发出、这将极大地便利隔离警告源。

    使用 make_vla_warning_FMT 的版本以某种方式引用了与区域设置相关的函数。  这些功能包括 处理 ,我已经显示使用 VLA。

    是否有某种方法可以覆盖库中单个函数的链接、例如 DO_PUT?

    引用的 VLA 相关线程创建的、该线程开头

    "问题在于 VLA 实施代码使用几个全局变量来跟踪 VLas,并且如果两个线程执行 VLA 操作,这些全局变量可能会被损坏并使程序崩溃。"

    是否有可能了解有关这两个全局变量如何跟踪 Vlas 的更多详细信息?

    我会在一周的剩余时间离开办公室。

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

    改用新的 TI Arm Clang 编译器是否可行?  VLA 的实现要好得多。  它始终从函数本地栈帧分配内存。  即使在编译时未知内存量也是如此。  该实现方案避免了所有这些问题。

    是否有办法覆盖库中单个函数的链接,如 do_put?

    遗憾的是、不能。

    是否可以了解有关这两个全局变量如何跟踪克拉斯的更多详细信息?

    文档中未涉及到这些类型的详细信息。  但编译器安装确实包括 RTS 库的源代码。  它位于一个目录中、其路径类似于:

    C:\ti\ccs1200\ccs\tools\compiler\ti-CGT-ARM_20.2.1.LTS \lib\src

    检查文件 vla_alloc.c vla_alloc.h 并了解它们如何使用全局变量。

    谢谢。此致、

    -乔治

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

    谢谢 乔治。  我从几天休假回来了。  一个后续问题。

    是否可以改用新的 TI Arm Clang 编译器?  VLA 的实现要好得多。  [/报价]

    "新型 TI Arm Clang 编译器"是什么?  我想这就是我们在使用的东西。  我们不使用 GCC。

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

    TI 发布了两种不同的 Arm 编译器。  此处对这两种模式进行了说明。  简而言之,我将旧版 TI ArmRegisteredC/C++编译器工具 机箱 以及更新的  TI ArmRegisteredClang 编译器工具 蒂亚姆克朗 。  这些是调用每个编译器时使用的编译器外壳命令的名称。   

    在第一篇文章你说...

    我们使用的是 TI v20.2.1.LTS 版本的编译器

    仅限 机箱 具有该版本号的发行版、因此我的结论是您使用 机箱 ,而不是 蒂亚姆克朗

    我先前的问题仍然存在。  VLA 得到以下更好的支持: 蒂亚姆克朗 。  改用其他选项是否实用?

    谢谢。此致、

    -乔治

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

    直到您在该线程中提到这两种不同的 TI Arm 编译器、我才不了解这两种情况。  在阅读您提供的链接后、新的 Clang 编译器似乎在 v20.2.x.LTS 发布后的某个时间变得可用。  是这样吗?  如果没有、更新的编译器何时可用?

    更改为使用新的 Clang 编译器是否实用?

    也许吧。  这取决于变化所涉及的内容。  我们能否只需对我们的项目文件进行极少的更新即可切换新编译器、或者它是否比这更复杂?  更改为使用较新的编译器会涉及什么?

    如果我们能够做出改变、似乎会有很多好处。  进行更改时是否有缺点?

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

    请观看标题为"什么是双向 与 armcl 的兼容性 tiarmclang 视频系列的第四个视频。

    谢谢。此致、

    -乔治

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

    谢谢你。  我将尝试切换到使用新编译器、看看具体涉及了什么。  我会让您知道情况如何。

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

    首先考虑迁移一个小型项目。  创建一个小而简单的项目、 机箱 。  越小越好。  然后将其迁移到 蒂亚姆克朗 。  然后从此处扩展到您的大型项目。  我怀疑这种方法比从一开始就去大型项目更容易。

    谢谢。此致、

    -乔治

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

    我想我将从我之前在该主题中附加的内容开始。 这是一个非常简单的项目。 我本来希望它可以很容易地转换,但却遇到了障碍。 我在线找不到太多帮助。 我得到的最接近的是下面的链接。
    e2e.ti.com/.../cc3235modasf-migration-to-clang、 我意识到在您提到的链接中、有一个映射编译器选项等的详细指南、但这与有一个结构类似于我们项目的工作示例不同。

    最好有一个与 MSP432 Simplelink SDK 提供的 tcpecho 项目类似的项目示例、该示例经过设置可以使用 TI ARM clang 编译器立即构建。 我们的项目采用类似的结构、其中有一个专用于 TIRTOS 配置的项目。 您可以指这样一个示例工程、该工程将使用较新的编译器成功编译、如果不是、您可以转换 tcpecho 工程、以便它能够使用较新的 TI ARM clang 编译器成功编译和运行? 具有这样的示例项目将会非常有帮助。

    另外、我从另一个线程了解到、新编译器的 LTS 版本不支持异常处理。  看起来如果我们需要异常处理、则需要使用 STS 版本。  您可以确认一下吗?  如果确实是这样、您是否知道 LTS 版本何时会提供异常处理?

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

    我不熟悉 MSP432 SimpleLink SDK。 一般来说、SDK 会记录测试它所使用的编译器。  您应该使用这些编译器之一。  如果 蒂亚姆克朗 不在这些编译器中、因此切换到它是不切实际的。  很抱歉、我以前没有提到这一点。

    关于 C++异常处理... 版本3.0.STS 中引入了对它的支持。  目前、任何 LTS 版本均不支持该特性。  支持它的 LTS 版本计划于今年第4季度发布。

    谢谢。此致、

    -乔治