gpt4 book ai didi

c - 调试低级 gcc 中间代码表示

转载 作者:太空宇宙 更新时间:2023-11-04 07:47:01 25 4
gpt4 key购买 nike

关于 this question我还有一个问题。

我设法重现了它,我不再在这里复制粘贴代码,因为你可以找到代码。我只将编译的输出粘贴到我的计算机上。

% gcc -std=c11 -O3 -g -Wall -Wextra -Werror -USUPPRESS_BUG  -c  msg_gcc.c
msg_gcc.c: In function 'function_under_test':
msg_gcc.c:30:9: error: 'strncpy' output may be truncated copying 128 bytes from a string of length 128 [-Werror=stringop-truncation]
strncpy(name, name_in_queue, SERVERNAME_LEN);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
-root-@ @...| test | stub
% gcc --version
gcc (GCC) 8.2.1 20181127
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

-root-@ @...| test | stub
% cat /proc/version
Linux version 5.0.7-arch1-1-ARCH (builduser@heftig-20167) (gcc version 8.2.1 20181127 (GCC)) #1 SMP PREEMPT Mon Apr 8 10:37:08 UTC 2019
-root-@ @...| test | stub

我希望我能理解编译器在哪个阶段检测到这种库问题。我知道代码以许多中间语言进行了转换,例如泛型、gimple、ssa、rtl、组合器等,但我不知道在这些表示中的哪些代码中检查了此编译命令中的此类问题.

如果我想调试中间表示并发现此问题的存在,我应该向 gcc 传递哪些参数,以便它在生成此警告之前尽可能停止中间语言的生成?

最佳答案

您的错误/警告似乎源自 here .如果我没理解错的话,这是来自 SSA 表单生成阶段。

还有 this问题可能会提供有关如何为 gcc 转储不同中间表示的有用提示。我知道如何为 clang 做这件事,但你的问题似乎是特定于 gcc 的。

关于c - 调试低级 gcc 中间代码表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56260253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com