The "lea" instruction cannot load the effective address into a memory location. The "g" constraint allows a compiler to use a memory location. A compiler that uses a register destination does so only because one is available. Use a general register constraint to make sure it always uses a register. Signed-off-by: Bill Wendling <morbo@xxxxxxxxxx> --- x86/debug.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x86/debug.c b/x86/debug.c index f66d1d0..2327dac 100644 --- a/x86/debug.c +++ b/x86/debug.c @@ -113,7 +113,7 @@ int main(int ac, char **av) "and $~(1<<8),%%rax\n\t" "push %%rax\n\t" "popf\n\t" - : "=g" (start) : : "rax"); + : "=r" (start) : : "rax"); report("single step", n == 3 && db_addr[0] == start+1+6 && dr6[0] == 0xffff4ff0 &&