builtin_return_address
时间: 2023-06-19 11:08:23 浏览: 56
`builtin_return_address` 是GCC内置函数,用于获取当前函数调用的返回地址。它的原型定义在 `#include <stddef.h>` 头文件中,其函数定义如下:
```
void * __builtin_return_address (unsigned int level);
```
其中,level 参数表示要获取的返回地址的层数,0 表示当前函数的返回地址,1 表示当前函数调用者的返回地址,以此类推。函数返回值是返回地址,类型为 `void*`。需要注意的是,该函数可能会有平台相关的实现,因此在使用时需要参考相关的文档或手册。
相关问题
GCC怎么支持 __builtin_return_address
GCC内置函数__builtin_return_address()用于获取当前函数调用者的返回地址。它的语法如下所示:
```
void* __builtin_return_address(unsigned int level);
```
其中level表示想要获取的返回地址的层数,0表示当前函数的返回地址,1表示调用当前函数的函数的返回地址,以此类推。例如,调用__builtin_return_address(0)将返回当前函数的返回地址。
GCC支持__builtin_return_address()函数的原理是利用了x86架构中的ebp寄存器和ret指令。当函数被调用时,ebp寄存器会被用来保存上一级函数的栈帧指针,而ret指令则会将当前函数的返回地址弹出栈顶。因此,通过访问ebp寄存器和栈空间,__builtin_return_address()函数可以获取到当前函数调用者的返回地址。
__builtin_return_address
__builtin_return_address是GCC内置函数,用于获取当前函数调用的返回地址。它的参数是一个整数,表示要获取的返回地址的层数。如果参数为,则返回当前函数的返回地址;如果参数为1,则返回调用当前函数的函数的返回地址,以此类推。