gpt4 book ai didi

使用 gcc 捕获类型转换溢出

转载 作者:太空宇宙 更新时间:2023-11-04 02:32:54 33 4
gpt4 key购买 nike

我有一个遗留的 c 项目,其中包含许多类型转换和强制转换。通常检查溢出动态行为,gcc (和 C 语言)为此定义了一个内置函数:

Built-in Function: bool __builtin_add_overflow (type1 a, type2 b, type3 *res)

如果结果溢出,函数返回真。然后我的程序可能会捕捉到这种情况并采取相应的行动。

为了在不更改任何遗留代码的情况下拥有相同的功能,是否可以指示 gcc 使用此类内置函数并在内置函数返回 true 时调用提供的函数作为捕获器?我希望我能找到类似的东西:

void _cyg_add_overflow_catcher(A, B, __FILE, LINE);

GCC已经可以instrument functions ,用于可追溯性和分析,所以这个概念并不奇怪。有什么想法吗?

最佳答案

这些函数被 GCC 降低为高效的 asm 序列,因此它们不会出现在最终目标代码中。另一方面,在 UBSan mode 中编译时GCC 将在溢出时从 libubsan.so 调用专用回调。您可以在您的可执行文件中覆盖这些回调并进行必要的处理(这当然是非常 hacky)。

请注意,GCC 仅跟踪有符号 数的溢出,因为无符号溢出由标准定义。

关于使用 gcc 捕获类型转换溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40959590/

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