Clang / LLVM中的_AddressOfReturnAddress()等效?

时间:2013-04-11 08:32:48

标签: c visual-c++ llvm clang addressof

Visual C ++有an intrinsic function called _AddressOfReturnAddress,它返回堆栈上当前函数返回地址的地址

注意 _ReturnAddress相同,只会返回返回地址的副本

Clang / LLVM中是否有_AddressOfReturnAddress的等价物?

2 个答案:

答案 0 :(得分:2)

没有。 LLVM IR没有提供内在的功能。

答案 1 :(得分:2)

正如rustyx所指出的,Clang / LLVM(和gcc)提供的Text相当于__builtin_return_address()。 Clang / LLVM还提供_ReturnAddress()取决于您的ABI,架构等的详细信息)可能与__builtin_frame_address()有些类似。

例如,以下代码......

_AddressOfReturnAddress()

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

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