Visual C ++有an intrinsic function called _AddressOfReturnAddress
,它返回堆栈上当前函数返回地址的地址。
注意, 与_ReturnAddress
相同,只会返回返回地址的副本。
Clang / LLVM中是否有_AddressOfReturnAddress
的等价物?
答案 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';