Visual C++ has an intrinsic function called _AddressOfReturnAddress
which returns the address of the current function's return address on the stack.
Note that this is not the same as _ReturnAddress
, which only returns a copy of the return address.
Is there any equivalent for _AddressOfReturnAddress
in Clang/LLVM?
As rustyx pointed out, Clang/LLVM (and gcc) provides __builtin_return_address()
which is equivalent to _ReturnAddress()
. Clang/LLVM also provides __builtin_frame_address()
which (depending on the particulars of your ABI, architecture, etc.) may be somewhat analogous to _AddressOfReturnAddress()
.
As an example, the following code...
std::cout<< ((int64_t) __builtin_return_address(0)) << ' '
<< ((int64_t) __builtin_frame_address (0)) << ' '
<<*((int64_t*)__builtin_frame_address (0)+1)<<'\n';
...prints the following on an OSX machine.
140735807202733 140734600362944 140735807202733
No. LLVM IR does not provide an intrinsic for this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With