Hi, In x86, GETPC() is implemented as below:
# define GETPC() ((void *)((unsigned long)__builtin_return_address(0) - 1)) As I understand, it gets the returned address on the stack, then subtract 1 to get back to the above address. Imagine we have code like this (pseudo asm code): .... CALL <relative address> <next-insn> .... When we call GETPC, we get the address of <next-insn>, and subtract 1. But the problem is that the CALL insn is more than 1 byte, so how can GETPC() gives us the address of the CALL insn above? I guess I must misunderstood something here .... Many thanks, Jun
