5

Visual C++ 有一个内部函数调用_AddressOfReturnAddress,它返回当前函数在堆栈上的返回地址的地址

请注意,这与 不同_ReturnAddress后者仅返回返回地址的副本

_AddressOfReturnAddress在 Clang/LLVM 中是否有任何等价物?

4

2 回答 2

5

正如rustyx 所指出的,Clang/LLVM(和 gcc)提供了__builtin_return_address()相当于_ReturnAddress(). Clang /LLVM 还提供了__builtin_frame_address()可能与._AddressOfReturnAddress()

例如,以下代码...

std::cout<< ((int64_t) __builtin_return_address(0)) << ' '
         << ((int64_t) __builtin_frame_address (0)) << ' '
         <<*((int64_t*)__builtin_frame_address (0)+1)<<'\n';

...在 OSX 机器上打印以下内容。

140735807202733 140734600362944 140735807202733
于 2016-08-06T01:53:15.907 回答
2

不,LLVM IR 没有为此提供内在函数。

于 2014-06-01T13:22:16.077 回答