diff --git a/lib/bcheck.c b/lib/bcheck.c index 9996649d..48d76061 100644 --- a/lib/bcheck.c +++ b/lib/bcheck.c @@ -216,6 +216,14 @@ BOUND_PTR_INDIR(16) __asm__ __volatile__ ("movl %%ebp,%0" :"=g" (fp1));\ fp = fp1[0];\ } +#elif defined(__x86_64__) +/* TCC always creates %rbp frames also on x86_64, so use them. */ +#define GET_CALLER_FP(fp)\ +{\ + unsigned long *fp1;\ + __asm__ __volatile__ ("movq %%rbp,%0" :"=g" (fp1));\ + fp = fp1[0];\ +} #else #error put code to extract the calling frame pointer #endif