From: H.J. Lu Date: Thu, 19 Dec 2013 22:22:30 +0000 (-0800) Subject: Zero-extend address from 32-bit to 64-bit for ADDR32 prefix X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e85596e021d0c4246a4ea21885c52e91583c463e;p=binutils-gdb.git Zero-extend address from 32-bit to 64-bit for ADDR32 prefix When there is ADDR32 prefix in 64-bit mode, we should zero-extend address from 32-bit to 64-bit. PR gdb/16304 * i386-tdep.c (i386_record_lea_modrm_addr): Zero-extend 32-bit address to 64-bit in 64-bit mode. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c8cd42a7cb6..c12e90766af 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2013-12-19 H.J. Lu + + PR gdb/16304 + * i386-tdep.c (i386_record_lea_modrm_addr): Zero-extend 32-bit + address to 64-bit in 64-bit mode. + 2013-12-19 H.J. Lu PR gdb/16304 diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index f876675c4d8..ff378517817 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -4282,6 +4282,13 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) else *addr = (uint32_t) (*addr + (offset64 << scale)); } + + if (!irp->aflag) + { + /* Since we are in 64-bit mode with ADDR32 prefix, zero-extend + address from 32-bit to 64-bit. */ + *addr = (uint32_t) *addr; + } } else {