While investigating a crash, I came across the following code snippet and immediately recognized that the mov instruction should actually be movq to get the correct 64-bit register operation.
#elif defined(__x86_64__) unsigned long rbp; __asm__ volatile ("mov %%rbp, %0" : "=r" (rbp)); sp = (void **) rbp; #else Further to this, I also found documentation that claims that the rbp register for x86-64 is general purpose and does not contain the address of the current frame. I have also found documentation that claims that rbp does contain the address of the current frame. Can someone clarify?
rbpcontains the base address if you don't use-fomit-frame-pointer(or similar options) stackoverflow.com/questions/579262/…