[llvm-dev] *********Recuperate return addresses of virtual and non virtual C++ functions with Clang and LLVM

Paul Muntean via llvm-dev llvm-dev at lists.llvm.org
Wed Dec 21 02:48:36 PST 2016


I am working with this setup: LLVM+Clang Compiler on an Ubuntu 64bit OS.

Questions:

Is it  possible to get the return addresses of virtual function call
and non virtual C++ methods inside Clang and LLVM.

Is thre a way to get the candidate addresses where the return address
points back after each function return was performed.

I have a few questions and hopefully you guys can help me out.

The return-addresses of indirect function calls to virtual functions
(and thus v-tables), are they pointers?

If not, what format do they have? How are those handled by Clang?

Is the return address of a non virtual function in Clang a pointer or
a hardcoded value?

How can I get the return addresses of an indirect call to a virtual
function using LLVM? Do i have to import them from Clang and make them
available during LTO?

Is thinLTO a better candidate for helping me recuperate this information?

Does the return address of a function called from an indirect
call-site always jump back to the next line (instruction) of assembly
code after the callsite instruction. Are there some occurrences where
it doesn't?

How is this handled in Clang?


More information about the llvm-dev mailing list