diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2020-11-02 10:26:14 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2020-11-02 10:28:45 -0500 |
commit | dda83cd783075941aabe9b0292b004b11f00c831 (patch) | |
tree | 185c06ef106c06ecc55ea045a4916495c1a3526b /gdb/i386-tdep.c | |
parent | 1c2bec1918cee91221bccc30db4f0253dc31d1b7 (diff) | |
download | fsf-binutils-gdb-dda83cd783075941aabe9b0292b004b11f00c831.zip fsf-binutils-gdb-dda83cd783075941aabe9b0292b004b11f00c831.tar.gz fsf-binutils-gdb-dda83cd783075941aabe9b0292b004b11f00c831.tar.bz2 |
gdb, gdbserver, gdbsupport: fix leading space vs tabs issues
Many spots incorrectly use only spaces for indentation (for example,
there are a lot of spots in ada-lang.c). I've always found it awkward
when I needed to edit one of these spots: do I keep the original wrong
indentation, or do I fix it? What if the lines around it are also
wrong, do I fix them too? I probably don't want to fix them in the same
patch, to avoid adding noise to my patch.
So I propose to fix as much as possible once and for all (hopefully).
One typical counter argument for this is that it makes code archeology
more difficult, because git-blame will show this commit as the last
change for these lines. My counter counter argument is: when
git-blaming, you often need to do "blame the file at the parent commit"
anyway, to go past some other refactor that touched the line you are
interested in, but is not the change you are looking for. So you
already need a somewhat efficient way to do this.
Using some interactive tool, rather than plain git-blame, makes this
trivial. For example, I use "tig blame <file>", where going back past
the commit that changed the currently selected line is one keystroke.
It looks like Magit in Emacs does it too (though I've never used it).
Web viewers of Github and Gitlab do it too. My point is that it won't
really make archeology more difficult.
The other typical counter argument is that it will cause conflicts with
existing patches. That's true... but it's a one time cost, and those
are not conflicts that are difficult to resolve. I have also tried "git
rebase --ignore-whitespace", it seems to work well. Although that will
re-introduce the faulty indentation, so one needs to take care of fixing
the indentation in the patch after that (which is easy).
gdb/ChangeLog:
* aarch64-linux-tdep.c: Fix indentation.
* aarch64-ravenscar-thread.c: Fix indentation.
* aarch64-tdep.c: Fix indentation.
* aarch64-tdep.h: Fix indentation.
* ada-lang.c: Fix indentation.
* ada-lang.h: Fix indentation.
* ada-tasks.c: Fix indentation.
* ada-typeprint.c: Fix indentation.
* ada-valprint.c: Fix indentation.
* ada-varobj.c: Fix indentation.
* addrmap.c: Fix indentation.
* addrmap.h: Fix indentation.
* agent.c: Fix indentation.
* aix-thread.c: Fix indentation.
* alpha-bsd-nat.c: Fix indentation.
* alpha-linux-tdep.c: Fix indentation.
* alpha-mdebug-tdep.c: Fix indentation.
* alpha-nbsd-tdep.c: Fix indentation.
* alpha-obsd-tdep.c: Fix indentation.
* alpha-tdep.c: Fix indentation.
* amd64-bsd-nat.c: Fix indentation.
* amd64-darwin-tdep.c: Fix indentation.
* amd64-linux-nat.c: Fix indentation.
* amd64-linux-tdep.c: Fix indentation.
* amd64-nat.c: Fix indentation.
* amd64-obsd-tdep.c: Fix indentation.
* amd64-tdep.c: Fix indentation.
* amd64-windows-tdep.c: Fix indentation.
* annotate.c: Fix indentation.
* arc-tdep.c: Fix indentation.
* arch-utils.c: Fix indentation.
* arch/arm-get-next-pcs.c: Fix indentation.
* arch/arm.c: Fix indentation.
* arm-linux-nat.c: Fix indentation.
* arm-linux-tdep.c: Fix indentation.
* arm-nbsd-tdep.c: Fix indentation.
* arm-pikeos-tdep.c: Fix indentation.
* arm-tdep.c: Fix indentation.
* arm-tdep.h: Fix indentation.
* arm-wince-tdep.c: Fix indentation.
* auto-load.c: Fix indentation.
* auxv.c: Fix indentation.
* avr-tdep.c: Fix indentation.
* ax-gdb.c: Fix indentation.
* ax-general.c: Fix indentation.
* bfin-linux-tdep.c: Fix indentation.
* block.c: Fix indentation.
* block.h: Fix indentation.
* blockframe.c: Fix indentation.
* bpf-tdep.c: Fix indentation.
* break-catch-sig.c: Fix indentation.
* break-catch-syscall.c: Fix indentation.
* break-catch-throw.c: Fix indentation.
* breakpoint.c: Fix indentation.
* breakpoint.h: Fix indentation.
* bsd-uthread.c: Fix indentation.
* btrace.c: Fix indentation.
* build-id.c: Fix indentation.
* buildsym-legacy.h: Fix indentation.
* buildsym.c: Fix indentation.
* c-typeprint.c: Fix indentation.
* c-valprint.c: Fix indentation.
* c-varobj.c: Fix indentation.
* charset.c: Fix indentation.
* cli/cli-cmds.c: Fix indentation.
* cli/cli-decode.c: Fix indentation.
* cli/cli-decode.h: Fix indentation.
* cli/cli-script.c: Fix indentation.
* cli/cli-setshow.c: Fix indentation.
* coff-pe-read.c: Fix indentation.
* coffread.c: Fix indentation.
* compile/compile-cplus-types.c: Fix indentation.
* compile/compile-object-load.c: Fix indentation.
* compile/compile-object-run.c: Fix indentation.
* completer.c: Fix indentation.
* corefile.c: Fix indentation.
* corelow.c: Fix indentation.
* cp-abi.h: Fix indentation.
* cp-namespace.c: Fix indentation.
* cp-support.c: Fix indentation.
* cp-valprint.c: Fix indentation.
* cris-linux-tdep.c: Fix indentation.
* cris-tdep.c: Fix indentation.
* darwin-nat-info.c: Fix indentation.
* darwin-nat.c: Fix indentation.
* darwin-nat.h: Fix indentation.
* dbxread.c: Fix indentation.
* dcache.c: Fix indentation.
* disasm.c: Fix indentation.
* dtrace-probe.c: Fix indentation.
* dwarf2/abbrev.c: Fix indentation.
* dwarf2/attribute.c: Fix indentation.
* dwarf2/expr.c: Fix indentation.
* dwarf2/frame.c: Fix indentation.
* dwarf2/index-cache.c: Fix indentation.
* dwarf2/index-write.c: Fix indentation.
* dwarf2/line-header.c: Fix indentation.
* dwarf2/loc.c: Fix indentation.
* dwarf2/macro.c: Fix indentation.
* dwarf2/read.c: Fix indentation.
* dwarf2/read.h: Fix indentation.
* elfread.c: Fix indentation.
* eval.c: Fix indentation.
* event-top.c: Fix indentation.
* exec.c: Fix indentation.
* exec.h: Fix indentation.
* expprint.c: Fix indentation.
* f-lang.c: Fix indentation.
* f-typeprint.c: Fix indentation.
* f-valprint.c: Fix indentation.
* fbsd-nat.c: Fix indentation.
* fbsd-tdep.c: Fix indentation.
* findvar.c: Fix indentation.
* fork-child.c: Fix indentation.
* frame-unwind.c: Fix indentation.
* frame-unwind.h: Fix indentation.
* frame.c: Fix indentation.
* frv-linux-tdep.c: Fix indentation.
* frv-tdep.c: Fix indentation.
* frv-tdep.h: Fix indentation.
* ft32-tdep.c: Fix indentation.
* gcore.c: Fix indentation.
* gdb_bfd.c: Fix indentation.
* gdbarch.sh: Fix indentation.
* gdbarch.c: Re-generate
* gdbarch.h: Re-generate.
* gdbcore.h: Fix indentation.
* gdbthread.h: Fix indentation.
* gdbtypes.c: Fix indentation.
* gdbtypes.h: Fix indentation.
* glibc-tdep.c: Fix indentation.
* gnu-nat.c: Fix indentation.
* gnu-nat.h: Fix indentation.
* gnu-v2-abi.c: Fix indentation.
* gnu-v3-abi.c: Fix indentation.
* go32-nat.c: Fix indentation.
* guile/guile-internal.h: Fix indentation.
* guile/scm-cmd.c: Fix indentation.
* guile/scm-frame.c: Fix indentation.
* guile/scm-iterator.c: Fix indentation.
* guile/scm-math.c: Fix indentation.
* guile/scm-ports.c: Fix indentation.
* guile/scm-pretty-print.c: Fix indentation.
* guile/scm-value.c: Fix indentation.
* h8300-tdep.c: Fix indentation.
* hppa-linux-nat.c: Fix indentation.
* hppa-linux-tdep.c: Fix indentation.
* hppa-nbsd-nat.c: Fix indentation.
* hppa-nbsd-tdep.c: Fix indentation.
* hppa-obsd-nat.c: Fix indentation.
* hppa-tdep.c: Fix indentation.
* hppa-tdep.h: Fix indentation.
* i386-bsd-nat.c: Fix indentation.
* i386-darwin-nat.c: Fix indentation.
* i386-darwin-tdep.c: Fix indentation.
* i386-dicos-tdep.c: Fix indentation.
* i386-gnu-nat.c: Fix indentation.
* i386-linux-nat.c: Fix indentation.
* i386-linux-tdep.c: Fix indentation.
* i386-nto-tdep.c: Fix indentation.
* i386-obsd-tdep.c: Fix indentation.
* i386-sol2-nat.c: Fix indentation.
* i386-tdep.c: Fix indentation.
* i386-tdep.h: Fix indentation.
* i386-windows-tdep.c: Fix indentation.
* i387-tdep.c: Fix indentation.
* i387-tdep.h: Fix indentation.
* ia64-libunwind-tdep.c: Fix indentation.
* ia64-libunwind-tdep.h: Fix indentation.
* ia64-linux-nat.c: Fix indentation.
* ia64-linux-tdep.c: Fix indentation.
* ia64-tdep.c: Fix indentation.
* ia64-tdep.h: Fix indentation.
* ia64-vms-tdep.c: Fix indentation.
* infcall.c: Fix indentation.
* infcmd.c: Fix indentation.
* inferior.c: Fix indentation.
* infrun.c: Fix indentation.
* iq2000-tdep.c: Fix indentation.
* language.c: Fix indentation.
* linespec.c: Fix indentation.
* linux-fork.c: Fix indentation.
* linux-nat.c: Fix indentation.
* linux-tdep.c: Fix indentation.
* linux-thread-db.c: Fix indentation.
* lm32-tdep.c: Fix indentation.
* m2-lang.c: Fix indentation.
* m2-typeprint.c: Fix indentation.
* m2-valprint.c: Fix indentation.
* m32c-tdep.c: Fix indentation.
* m32r-linux-tdep.c: Fix indentation.
* m32r-tdep.c: Fix indentation.
* m68hc11-tdep.c: Fix indentation.
* m68k-bsd-nat.c: Fix indentation.
* m68k-linux-nat.c: Fix indentation.
* m68k-linux-tdep.c: Fix indentation.
* m68k-tdep.c: Fix indentation.
* machoread.c: Fix indentation.
* macrocmd.c: Fix indentation.
* macroexp.c: Fix indentation.
* macroscope.c: Fix indentation.
* macrotab.c: Fix indentation.
* macrotab.h: Fix indentation.
* main.c: Fix indentation.
* mdebugread.c: Fix indentation.
* mep-tdep.c: Fix indentation.
* mi/mi-cmd-catch.c: Fix indentation.
* mi/mi-cmd-disas.c: Fix indentation.
* mi/mi-cmd-env.c: Fix indentation.
* mi/mi-cmd-stack.c: Fix indentation.
* mi/mi-cmd-var.c: Fix indentation.
* mi/mi-cmds.c: Fix indentation.
* mi/mi-main.c: Fix indentation.
* mi/mi-parse.c: Fix indentation.
* microblaze-tdep.c: Fix indentation.
* minidebug.c: Fix indentation.
* minsyms.c: Fix indentation.
* mips-linux-nat.c: Fix indentation.
* mips-linux-tdep.c: Fix indentation.
* mips-nbsd-tdep.c: Fix indentation.
* mips-tdep.c: Fix indentation.
* mn10300-linux-tdep.c: Fix indentation.
* mn10300-tdep.c: Fix indentation.
* moxie-tdep.c: Fix indentation.
* msp430-tdep.c: Fix indentation.
* namespace.h: Fix indentation.
* nat/fork-inferior.c: Fix indentation.
* nat/gdb_ptrace.h: Fix indentation.
* nat/linux-namespaces.c: Fix indentation.
* nat/linux-osdata.c: Fix indentation.
* nat/netbsd-nat.c: Fix indentation.
* nat/x86-dregs.c: Fix indentation.
* nbsd-nat.c: Fix indentation.
* nbsd-tdep.c: Fix indentation.
* nios2-linux-tdep.c: Fix indentation.
* nios2-tdep.c: Fix indentation.
* nto-procfs.c: Fix indentation.
* nto-tdep.c: Fix indentation.
* objfiles.c: Fix indentation.
* objfiles.h: Fix indentation.
* opencl-lang.c: Fix indentation.
* or1k-tdep.c: Fix indentation.
* osabi.c: Fix indentation.
* osabi.h: Fix indentation.
* osdata.c: Fix indentation.
* p-lang.c: Fix indentation.
* p-typeprint.c: Fix indentation.
* p-valprint.c: Fix indentation.
* parse.c: Fix indentation.
* ppc-linux-nat.c: Fix indentation.
* ppc-linux-tdep.c: Fix indentation.
* ppc-nbsd-nat.c: Fix indentation.
* ppc-nbsd-tdep.c: Fix indentation.
* ppc-obsd-nat.c: Fix indentation.
* ppc-ravenscar-thread.c: Fix indentation.
* ppc-sysv-tdep.c: Fix indentation.
* ppc64-tdep.c: Fix indentation.
* printcmd.c: Fix indentation.
* proc-api.c: Fix indentation.
* producer.c: Fix indentation.
* producer.h: Fix indentation.
* prologue-value.c: Fix indentation.
* prologue-value.h: Fix indentation.
* psymtab.c: Fix indentation.
* python/py-arch.c: Fix indentation.
* python/py-bpevent.c: Fix indentation.
* python/py-event.c: Fix indentation.
* python/py-event.h: Fix indentation.
* python/py-finishbreakpoint.c: Fix indentation.
* python/py-frame.c: Fix indentation.
* python/py-framefilter.c: Fix indentation.
* python/py-inferior.c: Fix indentation.
* python/py-infthread.c: Fix indentation.
* python/py-objfile.c: Fix indentation.
* python/py-prettyprint.c: Fix indentation.
* python/py-registers.c: Fix indentation.
* python/py-signalevent.c: Fix indentation.
* python/py-stopevent.c: Fix indentation.
* python/py-stopevent.h: Fix indentation.
* python/py-threadevent.c: Fix indentation.
* python/py-tui.c: Fix indentation.
* python/py-unwind.c: Fix indentation.
* python/py-value.c: Fix indentation.
* python/py-xmethods.c: Fix indentation.
* python/python-internal.h: Fix indentation.
* python/python.c: Fix indentation.
* ravenscar-thread.c: Fix indentation.
* record-btrace.c: Fix indentation.
* record-full.c: Fix indentation.
* record.c: Fix indentation.
* reggroups.c: Fix indentation.
* regset.h: Fix indentation.
* remote-fileio.c: Fix indentation.
* remote.c: Fix indentation.
* reverse.c: Fix indentation.
* riscv-linux-tdep.c: Fix indentation.
* riscv-ravenscar-thread.c: Fix indentation.
* riscv-tdep.c: Fix indentation.
* rl78-tdep.c: Fix indentation.
* rs6000-aix-tdep.c: Fix indentation.
* rs6000-lynx178-tdep.c: Fix indentation.
* rs6000-nat.c: Fix indentation.
* rs6000-tdep.c: Fix indentation.
* rust-lang.c: Fix indentation.
* rx-tdep.c: Fix indentation.
* s12z-tdep.c: Fix indentation.
* s390-linux-tdep.c: Fix indentation.
* score-tdep.c: Fix indentation.
* ser-base.c: Fix indentation.
* ser-mingw.c: Fix indentation.
* ser-uds.c: Fix indentation.
* ser-unix.c: Fix indentation.
* serial.c: Fix indentation.
* sh-linux-tdep.c: Fix indentation.
* sh-nbsd-tdep.c: Fix indentation.
* sh-tdep.c: Fix indentation.
* skip.c: Fix indentation.
* sol-thread.c: Fix indentation.
* solib-aix.c: Fix indentation.
* solib-darwin.c: Fix indentation.
* solib-frv.c: Fix indentation.
* solib-svr4.c: Fix indentation.
* solib.c: Fix indentation.
* source.c: Fix indentation.
* sparc-linux-tdep.c: Fix indentation.
* sparc-nbsd-tdep.c: Fix indentation.
* sparc-obsd-tdep.c: Fix indentation.
* sparc-ravenscar-thread.c: Fix indentation.
* sparc-tdep.c: Fix indentation.
* sparc64-linux-tdep.c: Fix indentation.
* sparc64-nbsd-tdep.c: Fix indentation.
* sparc64-obsd-tdep.c: Fix indentation.
* sparc64-tdep.c: Fix indentation.
* stabsread.c: Fix indentation.
* stack.c: Fix indentation.
* stap-probe.c: Fix indentation.
* stubs/ia64vms-stub.c: Fix indentation.
* stubs/m32r-stub.c: Fix indentation.
* stubs/m68k-stub.c: Fix indentation.
* stubs/sh-stub.c: Fix indentation.
* stubs/sparc-stub.c: Fix indentation.
* symfile-mem.c: Fix indentation.
* symfile.c: Fix indentation.
* symfile.h: Fix indentation.
* symmisc.c: Fix indentation.
* symtab.c: Fix indentation.
* symtab.h: Fix indentation.
* target-float.c: Fix indentation.
* target.c: Fix indentation.
* target.h: Fix indentation.
* tic6x-tdep.c: Fix indentation.
* tilegx-linux-tdep.c: Fix indentation.
* tilegx-tdep.c: Fix indentation.
* top.c: Fix indentation.
* tracefile-tfile.c: Fix indentation.
* tracepoint.c: Fix indentation.
* tui/tui-disasm.c: Fix indentation.
* tui/tui-io.c: Fix indentation.
* tui/tui-regs.c: Fix indentation.
* tui/tui-stack.c: Fix indentation.
* tui/tui-win.c: Fix indentation.
* tui/tui-winsource.c: Fix indentation.
* tui/tui.c: Fix indentation.
* typeprint.c: Fix indentation.
* ui-out.h: Fix indentation.
* unittests/copy_bitwise-selftests.c: Fix indentation.
* unittests/memory-map-selftests.c: Fix indentation.
* utils.c: Fix indentation.
* v850-tdep.c: Fix indentation.
* valarith.c: Fix indentation.
* valops.c: Fix indentation.
* valprint.c: Fix indentation.
* valprint.h: Fix indentation.
* value.c: Fix indentation.
* value.h: Fix indentation.
* varobj.c: Fix indentation.
* vax-tdep.c: Fix indentation.
* windows-nat.c: Fix indentation.
* windows-tdep.c: Fix indentation.
* xcoffread.c: Fix indentation.
* xml-syscall.c: Fix indentation.
* xml-tdesc.c: Fix indentation.
* xstormy16-tdep.c: Fix indentation.
* xtensa-config.c: Fix indentation.
* xtensa-linux-nat.c: Fix indentation.
* xtensa-linux-tdep.c: Fix indentation.
* xtensa-tdep.c: Fix indentation.
gdbserver/ChangeLog:
* ax.cc: Fix indentation.
* dll.cc: Fix indentation.
* inferiors.h: Fix indentation.
* linux-low.cc: Fix indentation.
* linux-nios2-low.cc: Fix indentation.
* linux-ppc-ipa.cc: Fix indentation.
* linux-ppc-low.cc: Fix indentation.
* linux-x86-low.cc: Fix indentation.
* linux-xtensa-low.cc: Fix indentation.
* regcache.cc: Fix indentation.
* server.cc: Fix indentation.
* tracepoint.cc: Fix indentation.
gdbsupport/ChangeLog:
* common-exceptions.h: Fix indentation.
* event-loop.cc: Fix indentation.
* fileio.cc: Fix indentation.
* filestuff.cc: Fix indentation.
* gdb-dlfcn.cc: Fix indentation.
* gdb_string_view.h: Fix indentation.
* job-control.cc: Fix indentation.
* signals.cc: Fix indentation.
Change-Id: I4bad7ae6be0fbe14168b8ebafb98ffe14964a695
Diffstat (limited to 'gdb/i386-tdep.c')
-rw-r--r-- | gdb/i386-tdep.c | 2046 |
1 files changed, 1023 insertions, 1023 deletions
diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index e680e98..00de4e1 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -490,11 +490,11 @@ i386_dbx_reg_to_regnum (struct gdbarch *gdbarch, int reg) if (reg >= 0 && reg <= 7) { /* General-purpose registers. The debug info calls %ebp - register 4, and %esp register 5. */ + register 4, and %esp register 5. */ if (reg == 4) - return 5; + return 5; else if (reg == 5) - return 4; + return 4; else return reg; } else if (reg >= 12 && reg <= 19) @@ -661,11 +661,11 @@ i386_absolute_jmp_p (const gdb_byte *insn) { /* jump near, absolute indirect (/4). */ if ((insn[1] & 0x38) == 0x20) - return 1; + return 1; /* jump far, absolute indirect (/5). */ if ((insn[1] & 0x38) == 0x28) - return 1; + return 1; } return 0; @@ -698,11 +698,11 @@ i386_absolute_call_p (const gdb_byte *insn) { /* Call near, absolute indirect (/2). */ if ((insn[1] & 0x38) == 0x10) - return 1; + return 1; /* Call far, absolute indirect (/3). */ if ((insn[1] & 0x38) == 0x18) - return 1; + return 1; } return 0; @@ -826,7 +826,7 @@ i386_displaced_step_copy_insn (struct gdbarch *gdbarch, write_memory (to, buf, len); displaced_debug_printf ("%s->%s: %s", - paddress (gdbarch, from), paddress (gdbarch, to), + paddress (gdbarch, from), paddress (gdbarch, to), displaced_step_dump_bytes (buf, len).c_str ()); /* This is a work around for a problem with g++ 4.8. */ @@ -838,9 +838,9 @@ i386_displaced_step_copy_insn (struct gdbarch *gdbarch, void i386_displaced_step_fixup (struct gdbarch *gdbarch, - struct displaced_step_closure *closure_, - CORE_ADDR from, CORE_ADDR to, - struct regcache *regs) + struct displaced_step_closure *closure_, + CORE_ADDR from, CORE_ADDR to, + struct regcache *regs) { enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); @@ -893,21 +893,21 @@ i386_displaced_step_fixup (struct gdbarch *gdbarch, regcache_cooked_read_unsigned (regs, I386_EIP_REGNUM, &orig_eip); /* A signal trampoline system call changes the %eip, resuming - execution of the main program after the signal handler has - returned. That makes them like 'return' instructions; we - shouldn't relocate %eip. - - But most system calls don't, and we do need to relocate %eip. - - Our heuristic for distinguishing these cases: if stepping - over the system call instruction left control directly after - the instruction, the we relocate --- control almost certainly - doesn't belong in the displaced copy. Otherwise, we assume - the instruction has put control where it belongs, and leave - it unrelocated. Goodness help us if there are PC-relative - system calls. */ + execution of the main program after the signal handler has + returned. That makes them like 'return' instructions; we + shouldn't relocate %eip. + + But most system calls don't, and we do need to relocate %eip. + + Our heuristic for distinguishing these cases: if stepping + over the system call instruction left control directly after + the instruction, the we relocate --- control almost certainly + doesn't belong in the displaced copy. Otherwise, we assume + the instruction has put control where it belongs, and leave + it unrelocated. Goodness help us if there are PC-relative + system calls. */ if (i386_syscall_p (insn, &insn_len) - && orig_eip != to + (insn - insn_start) + insn_len + && orig_eip != to + (insn - insn_start) + insn_len /* GDB can get control back after the insn after the syscall. Presumably this is a kernel bug. i386_displaced_step_copy_insn ensures its a nop, @@ -915,19 +915,19 @@ i386_displaced_step_fixup (struct gdbarch *gdbarch, && orig_eip != to + (insn - insn_start) + insn_len + 1) displaced_debug_printf ("syscall changed %%eip; not relocating"); else - { - ULONGEST eip = (orig_eip - insn_offset) & 0xffffffffUL; + { + ULONGEST eip = (orig_eip - insn_offset) & 0xffffffffUL; /* If we just stepped over a breakpoint insn, we don't backup the pc on purpose; this is to match behaviour without stepping. */ - regcache_cooked_write_unsigned (regs, I386_EIP_REGNUM, eip); + regcache_cooked_write_unsigned (regs, I386_EIP_REGNUM, eip); displaced_debug_printf ("relocated %%eip from %s to %s", paddress (gdbarch, orig_eip), paddress (gdbarch, eip)); - } + } } /* If the instruction was PUSHFL, then the TF bit will be set in the @@ -1126,7 +1126,7 @@ i386_follow_jump (struct gdbarch *gdbarch, CORE_ADDR pc) delta = read_memory_integer (pc + 2, 2, byte_order); /* Include the size of the jmp instruction (including the - 0x66 prefix). */ + 0x66 prefix). */ delta += 4; } else @@ -1160,8 +1160,8 @@ i386_analyze_struct_return (CORE_ADDR pc, CORE_ADDR current_pc, { /* Functions that return a structure or union start with: - popl %eax 0x58 - xchgl %eax, (%esp) 0x87 0x04 0x24 + popl %eax 0x58 + xchgl %eax, (%esp) 0x87 0x04 0x24 or xchgl %eax, 0(%esp) 0x87 0x44 0x24 0x00 (the System V compiler puts out the second `xchg' instruction, @@ -1211,13 +1211,13 @@ i386_skip_probe (CORE_ADDR pc) { /* A function may start with - pushl constant - call _probe + pushl constant + call _probe addl $4, %esp followed by - pushl %ebp + pushl %ebp etc. */ gdb_byte buf[8]; @@ -1846,13 +1846,13 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) struct compunit_symtab *cust = find_pc_compunit_symtab (func_addr); /* LLVM backend (Clang/Flang) always emits a line note before the - prologue and another one after. We trust clang to emit usable - line notes. */ + prologue and another one after. We trust clang to emit usable + line notes. */ if (post_prologue_pc && (cust != NULL && COMPUNIT_PRODUCER (cust) != NULL && producer_is_llvm (COMPUNIT_PRODUCER (cust)))) - return std::max (start_pc, post_prologue_pc); + return std::max (start_pc, post_prologue_pc); } cache.locals = -1; @@ -1866,10 +1866,10 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) to get the address of the global offset table (GOT) into register %ebx: - call 0x0 + call 0x0 popl %ebx - movl %ebx,x(%ebp) (optional) - addl y,%ebx + movl %ebx,x(%ebp) (optional) + addl y,%ebx This code is with the rest of the prologue (at the end of the function), so we have to skip it to get to the first real @@ -1901,7 +1901,7 @@ i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc) else /* Unexpected instruction. */ delta = 0; - if (target_read_code (pc + delta, &op, 1)) + if (target_read_code (pc + delta, &op, 1)) return pc; } @@ -2872,8 +2872,8 @@ i386_store_return_value (struct gdbarch *gdbarch, struct type *type, } /* Returning floating-point values is a bit tricky. Apart from - storing the return value in %st(0), we have to simulate the - state of the FPU at function return point. */ + storing the return value in %st(0), we have to simulate the + state of the FPU at function return point. */ /* Convert the value found in VALBUF to the extended floating-point format used by the FPU. This is probably @@ -2883,16 +2883,16 @@ i386_store_return_value (struct gdbarch *gdbarch, struct type *type, regcache->raw_write (I386_ST0_REGNUM, buf); /* Set the top of the floating-point register stack to 7. The - actual value doesn't really matter, but 7 is what a normal - function return would end up with if the program started out - with a freshly initialized FPU. */ + actual value doesn't really matter, but 7 is what a normal + function return would end up with if the program started out + with a freshly initialized FPU. */ regcache_raw_read_unsigned (regcache, I387_FSTAT_REGNUM (tdep), &fstat); fstat |= (7 << 11); regcache_raw_write_unsigned (regcache, I387_FSTAT_REGNUM (tdep), fstat); /* Mark %st(1) through %st(7) as empty. Since we set the top of - the floating-point register stack to 7, the appropriate value - for the tag word is 0x3fff. */ + the floating-point register stack to 7, the appropriate value + for the tag word is 0x3fff. */ regcache_raw_write_unsigned (regcache, I387_FTAG_REGNUM (tdep), 0x3fff); } else @@ -2941,8 +2941,8 @@ i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type) int len = TYPE_LENGTH (type); gdb_assert (code == TYPE_CODE_STRUCT - || code == TYPE_CODE_UNION - || code == TYPE_CODE_ARRAY); + || code == TYPE_CODE_UNION + || code == TYPE_CODE_ARRAY); if (struct_convention == pcc_struct_convention || (struct_convention == default_struct_convention @@ -2996,10 +2996,10 @@ i386_return_value (struct gdbarch *gdbarch, struct value *function, value just after the function has returned. */ /* Note that the ABI doesn't mention functions returning arrays, - which is something possible in certain languages such as Ada. - In this case, the value is returned as if it was wrapped in - a record, so the convention applied to records also applies - to arrays. */ + which is something possible in certain languages such as Ada. + In this case, the value is returned as if it was wrapped in + a record, so the convention applied to records also applies + to arrays. */ if (readbuf) { @@ -3158,14 +3158,14 @@ i386_ymm_type (struct gdbarch *gdbarch) #if 0 union __gdb_builtin_type_vec256i { - int128_t v2_int128[2]; - int64_t v4_int64[4]; - int32_t v8_int32[8]; - int16_t v16_int16[16]; - int8_t v32_int8[32]; - double v4_double[4]; - float v8_float[8]; - bfloat16_t v16_bfloat16[16]; + int128_t v2_int128[2]; + int64_t v4_int64[4]; + int32_t v8_int32[8]; + int16_t v16_int16[16]; + int8_t v32_int8[32]; + double v4_double[4]; + float v8_float[8]; + bfloat16_t v16_bfloat16[16]; }; #endif @@ -3212,10 +3212,10 @@ i386_mmx_type (struct gdbarch *gdbarch) #if 0 union __gdb_builtin_type_vec64i { - int64_t uint64; - int32_t v2_int32[2]; - int16_t v4_int16[4]; - int8_t v8_int8[8]; + int64_t uint64; + int32_t v2_int32[2]; + int16_t v4_int16[4]; + int8_t v8_int8[8]; }; #endif @@ -4789,23 +4789,23 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) offset64 = 0; if (base != 0xff) - { + { if (base == 4 && irp->popl_esp_hack) *addr += irp->popl_esp_hack; regcache_raw_read_unsigned (irp->regcache, irp->regmap[base], - &offset64); + &offset64); } if (irp->aflag == 2) - { + { *addr += offset64; - } + } else - *addr = (uint32_t) (offset64 + *addr); + *addr = (uint32_t) (offset64 + *addr); if (havesib && (index != 4 || scale != 0)) { regcache_raw_read_unsigned (irp->regcache, irp->regmap[index], - &offset64); + &offset64); if (irp->aflag == 2) *addr += offset64 << scale; else @@ -4854,65 +4854,65 @@ i386_record_lea_modrm_addr (struct i386_record_s *irp, uint64_t *addr) case 0: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBX_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESI_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 1: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBX_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REDI_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 2: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBP_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESI_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 3: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBP_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REDI_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 4: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_RESI_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 5: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REDI_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 6: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBP_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; case 7: regcache_raw_read_unsigned (irp->regcache, irp->regmap[X86_RECORD_REBX_REGNUM], - &offset64); + &offset64); *addr = (uint32_t) (*addr + offset64); break; } @@ -4936,14 +4936,14 @@ i386_record_lea_modrm (struct i386_record_s *irp) if (irp->override >= 0) { if (record_full_memory_query) - { - if (yquery (_("\ + { + if (yquery (_("\ Process record ignores the memory change of instruction at address %s\n\ because it can't get the value of the segment register.\n\ Do you want to stop the program?"), - paddress (gdbarch, irp->orig_addr))) + paddress (gdbarch, irp->orig_addr))) return -1; - } + } return 0; } @@ -4988,8 +4988,8 @@ i386_record_push (struct i386_record_s *irp, int size) wrong, 0 otherwise. */ static int i386_record_floats (struct gdbarch *gdbarch, - struct i386_record_s *ir, - uint32_t iregnum) + struct i386_record_s *ir, + uint32_t iregnum) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); int i; @@ -5002,32 +5002,32 @@ static int i386_record_floats (struct gdbarch *gdbarch, if (I386_SAVE_FPU_REGS == iregnum) { for (i = I387_ST0_REGNUM (tdep); i <= I387_ST0_REGNUM (tdep) + 7; i++) - { - if (record_full_arch_list_add_reg (ir->regcache, i)) - return -1; - } + { + if (record_full_arch_list_add_reg (ir->regcache, i)) + return -1; + } } else if (I386_SAVE_FPU_ENV == iregnum) { for (i = I387_FCTRL_REGNUM (tdep); i <= I387_FOP_REGNUM (tdep); i++) { if (record_full_arch_list_add_reg (ir->regcache, i)) - return -1; + return -1; } } else if (I386_SAVE_FPU_ENV_REG_STACK == iregnum) { for (i = I387_ST0_REGNUM (tdep); i <= I387_FOP_REGNUM (tdep); i++) { - if (record_full_arch_list_add_reg (ir->regcache, i)) - return -1; + if (record_full_arch_list_add_reg (ir->regcache, i)) + return -1; } } else if ((iregnum >= I387_ST0_REGNUM (tdep)) && - (iregnum <= I387_FOP_REGNUM (tdep))) + (iregnum <= I387_FOP_REGNUM (tdep))) { if (record_full_arch_list_add_reg (ir->regcache,iregnum)) - return -1; + return -1; } else { @@ -5039,7 +5039,7 @@ static int i386_record_floats (struct gdbarch *gdbarch, for (i = I387_FCTRL_REGNUM (tdep); i <= I387_FOP_REGNUM (tdep); i++) { if (record_full_arch_list_add_reg (ir->regcache, i)) - return -1; + return -1; } } return 0; @@ -5081,7 +5081,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, if (record_debug > 1) fprintf_unfiltered (gdb_stdlog, "Process record: i386_process_record " - "addr = %s\n", + "addr = %s\n", paddress (gdbarch, ir.addr)); /* prefixes */ @@ -5125,33 +5125,33 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case ADDR_PREFIX_OPCODE: prefixes |= PREFIX_ADDR; break; - case 0x40: /* i386 inc %eax */ - case 0x41: /* i386 inc %ecx */ - case 0x42: /* i386 inc %edx */ - case 0x43: /* i386 inc %ebx */ - case 0x44: /* i386 inc %esp */ - case 0x45: /* i386 inc %ebp */ - case 0x46: /* i386 inc %esi */ - case 0x47: /* i386 inc %edi */ - case 0x48: /* i386 dec %eax */ - case 0x49: /* i386 dec %ecx */ - case 0x4a: /* i386 dec %edx */ - case 0x4b: /* i386 dec %ebx */ - case 0x4c: /* i386 dec %esp */ - case 0x4d: /* i386 dec %ebp */ - case 0x4e: /* i386 dec %esi */ - case 0x4f: /* i386 dec %edi */ - if (ir.regmap[X86_RECORD_R8_REGNUM]) /* 64 bit target */ - { - /* REX */ - rex_w = (opcode8 >> 3) & 1; - rex_r = (opcode8 & 0x4) << 1; - ir.rex_x = (opcode8 & 0x2) << 2; - ir.rex_b = (opcode8 & 0x1) << 3; - } + case 0x40: /* i386 inc %eax */ + case 0x41: /* i386 inc %ecx */ + case 0x42: /* i386 inc %edx */ + case 0x43: /* i386 inc %ebx */ + case 0x44: /* i386 inc %esp */ + case 0x45: /* i386 inc %ebp */ + case 0x46: /* i386 inc %esi */ + case 0x47: /* i386 inc %edi */ + case 0x48: /* i386 dec %eax */ + case 0x49: /* i386 dec %ecx */ + case 0x4a: /* i386 dec %edx */ + case 0x4b: /* i386 dec %ebx */ + case 0x4c: /* i386 dec %esp */ + case 0x4d: /* i386 dec %ebp */ + case 0x4e: /* i386 dec %esi */ + case 0x4f: /* i386 dec %edi */ + if (ir.regmap[X86_RECORD_R8_REGNUM]) /* 64 bit target */ + { + /* REX */ + rex_w = (opcode8 >> 3) & 1; + rex_r = (opcode8 & 0x4) << 1; + ir.rex_x = (opcode8 & 0x2) << 2; + ir.rex_b = (opcode8 & 0x1) << 3; + } else /* 32 bit target */ goto out_prefixes; - break; + break; default: goto out_prefixes; break; @@ -5165,7 +5165,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, else { if (prefixes & PREFIX_DATA) - ir.dflag ^= 1; + ir.dflag ^= 1; } if (prefixes & PREFIX_ADDR) ir.aflag ^= 1; @@ -5252,7 +5252,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, } else { - ir.rm |= ir.rex_b; + ir.rm |= ir.rex_b; if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.rm &= 0x3; I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm); @@ -5261,7 +5261,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 1: /* OP Gv, Ev */ if (i386_record_modrm (&ir)) return -1; - ir.reg |= rex_r; + ir.reg |= rex_r; if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.reg &= 0x3; I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.reg); @@ -5290,10 +5290,10 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, if (ir.mod != 3) { - if (opcode == 0x83) - ir.rip_offset = 1; - else - ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); + if (opcode == 0x83) + ir.rip_offset = 1; + else + ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); if (i386_record_lea_modrm (&ir)) return -1; } @@ -5335,7 +5335,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, return -1; if (ir.mod != 3 && ir.reg == 0) - ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); + ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); switch (ir.reg) { @@ -5351,7 +5351,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, } else { - ir.rm |= ir.rex_b; + ir.rm |= ir.rex_b; if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.rm &= 0x3; I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm); @@ -5390,9 +5390,9 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, { case 0: /* inc */ case 1: /* dec */ - if ((opcode & 1) == 0) + if ((opcode & 1) == 0) ir.ot = OT_BYTE; - else + else ir.ot = ir.dflag + OT_WORD; if (ir.mod != 3) { @@ -5409,8 +5409,8 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; case 2: /* call */ - if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) - ir.dflag = 2; + if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) + ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); @@ -5426,8 +5426,8 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; case 6: /* push */ - if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) - ir.dflag = 2; + if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) + ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; break; @@ -5462,9 +5462,9 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, if (i386_record_modrm (&ir)) return -1; if (opcode == 0x69) - ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); + ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); else if (opcode == 0x6b) - ir.rip_offset = 1; + ir.rip_offset = 1; ir.reg |= rex_r; if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.reg &= 0x3; @@ -5511,7 +5511,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, return -1; if (ir.mod == 3) { - ir.reg |= rex_r; + ir.reg |= rex_r; I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.reg &= 0x3; @@ -5575,7 +5575,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x68: case 0x6a: if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) - ir.dflag = 2; + ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; break; @@ -5585,7 +5585,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x16: /* push ss */ case 0x1e: /* push ds */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -5596,7 +5596,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x0fa0: /* push fs */ case 0x0fa8: /* push gs */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 2; goto no_support; } @@ -5606,7 +5606,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x60: /* pusha */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -5628,7 +5628,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x61: /* popa */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -5642,14 +5642,14 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, if (ir.regmap[X86_RECORD_R8_REGNUM]) ir.ot = ir.dflag ? OT_QUAD : OT_WORD; else - ir.ot = ir.dflag + OT_WORD; + ir.ot = ir.dflag + OT_WORD; if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3) I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); else { - ir.popl_esp_hack = 1 << ir.ot; + ir.popl_esp_hack = 1 << ir.ot; if (i386_record_lea_modrm (&ir)) return -1; } @@ -5659,7 +5659,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0xc8: /* enter */ I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REBP_REGNUM); if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) - ir.dflag = 2; + ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) return -1; break; @@ -5671,7 +5671,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x07: /* pop es */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -5682,7 +5682,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x17: /* pop ss */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -5693,7 +5693,7 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0x1f: /* pop ds */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -5728,14 +5728,14 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, if (ir.mod != 3) { - if (opcode == 0xc6 || opcode == 0xc7) + if (opcode == 0xc6 || opcode == 0xc7) ir.rip_offset = (ir.ot > OT_LONG) ? 4 : (1 << ir.ot); if (i386_record_lea_modrm (&ir)) return -1; } else { - if (opcode == 0xc6 || opcode == 0xc7) + if (opcode == 0xc6 || opcode == 0xc7) ir.rm |= ir.rex_b; if (ir.ot == OT_BYTE && !ir.regmap[X86_RECORD_R8_REGNUM]) ir.rm &= 0x3; @@ -5842,47 +5842,47 @@ i386_process_record (struct gdbarch *gdbarch, struct regcache *regcache, case 0xa2: /* mov EAX */ case 0xa3: if (ir.override >= 0) - { - if (record_full_memory_query) - { - if (yquery (_("\ + { + if (record_full_memory_query) + { + if (yquery (_("\ Process record ignores the memory change of instruction at address %s\n\ because it can't get the value of the segment register.\n\ Do you want to stop the program?"), - paddress (gdbarch, ir.orig_addr))) - return -1; - } + paddress (gdbarch, ir.orig_addr))) + return -1; + } } else { - if ((opcode & 1) == 0) + if ((opcode & 1) == 0) ir.ot = OT_BYTE; else ir.ot = ir.dflag + OT_WORD; if (ir.aflag == 2) { - if (record_read_memory (gdbarch, ir.addr, buf, 8)) + if (record_read_memory (gdbarch, ir.addr, buf, 8)) return -1; ir.addr += 8; addr = extract_unsigned_integer (buf, 8, byte_order); } - else if (ir.aflag) + else if (ir.aflag) { - if (record_read_memory (gdbarch, ir.addr, buf, 4)) + if (record_read_memory (gdbarch, ir.addr, buf, 4)) return -1; ir.addr += 4; - addr = extract_unsigned_integer (buf, 4, byte_order); + addr = extract_unsigned_integer (buf, 4, byte_order); } - else + else { - if (record_read_memory (gdbarch, ir.addr, buf, 2)) + if (record_read_memory (gdbarch, ir.addr, buf, 2)) return -1; ir.addr += 2; - addr = extract_unsigned_integer (buf, 2, byte_order); + addr = extract_unsigned_integer (buf, 2, byte_order); } if (record_full_arch_list_add_mem (addr, 1 << ir.ot)) return -1; - } + } break; case 0xb0: /* mov R, Ib */ @@ -5949,7 +5949,7 @@ Do you want to stop the program?"), case 0xc4: /* les Gv */ case 0xc5: /* lds Gv */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { + { ir.addr -= 1; goto no_support; } @@ -6057,21 +6057,21 @@ Do you want to stop the program?"), switch (ir.reg) { case 0x02: - case 0x12: - case 0x22: - case 0x32: + case 0x12: + case 0x22: + case 0x32: /* For fcom, ficom nothing to do. */ - break; + break; case 0x03: - case 0x13: - case 0x23: - case 0x33: + case 0x13: + case 0x23: + case 0x33: /* For fcomp, ficomp pop FPU stack, store all. */ - if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) - return -1; - break; - case 0x00: - case 0x01: + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; + break; + case 0x00: + case 0x01: case 0x04: case 0x05: case 0x06: @@ -6094,11 +6094,11 @@ Do you want to stop the program?"), case 0x35: case 0x36: case 0x37: - /* For fadd, fmul, fsub, fsubr, fdiv, fdivr, fiadd, fimul, - fisub, fisubr, fidiv, fidivr, modR/M.reg is an extension - of code, always affects st(0) register. */ - if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) - return -1; + /* For fadd, fmul, fsub, fsubr, fdiv, fdivr, fiadd, fimul, + fisub, fisubr, fidiv, fidivr, modR/M.reg is an extension + of code, always affects st(0) register. */ + if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) + return -1; break; case 0x08: case 0x0a: @@ -6107,7 +6107,7 @@ Do you want to stop the program?"), case 0x19: case 0x1a: case 0x1b: - case 0x1d: + case 0x1d: case 0x28: case 0x29: case 0x2a: @@ -6116,8 +6116,8 @@ Do you want to stop the program?"), case 0x39: case 0x3a: case 0x3b: - case 0x3c: - case 0x3d: + case 0x3c: + case 0x3d: switch (ir.reg & 7) { case 0: @@ -6200,21 +6200,21 @@ Do you want to stop the program?"), } break; case 0x0c: - /* Insn fldenv. */ - if (i386_record_floats (gdbarch, &ir, - I386_SAVE_FPU_ENV_REG_STACK)) - return -1; - break; + /* Insn fldenv. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_ENV_REG_STACK)) + return -1; + break; case 0x0d: - /* Insn fldcw. */ - if (i386_record_floats (gdbarch, &ir, I387_FCTRL_REGNUM (tdep))) - return -1; - break; + /* Insn fldcw. */ + if (i386_record_floats (gdbarch, &ir, I387_FCTRL_REGNUM (tdep))) + return -1; + break; case 0x2c: - /* Insn frstor. */ - if (i386_record_floats (gdbarch, &ir, - I386_SAVE_FPU_ENV_REG_STACK)) - return -1; + /* Insn frstor. */ + if (i386_record_floats (gdbarch, &ir, + I386_SAVE_FPU_ENV_REG_STACK)) + return -1; break; case 0x0e: if (ir.dflag) @@ -6232,9 +6232,9 @@ Do you want to stop the program?"), case 0x2f: if (record_full_arch_list_add_mem (addr64, 2)) return -1; - /* Insn fstp, fbstp. */ - if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) - return -1; + /* Insn fstp, fbstp. */ + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) + return -1; break; case 0x1f: case 0x3e: @@ -6277,7 +6277,7 @@ Do you want to stop the program?"), } /* Opcode is an extension of modR/M byte. */ else - { + { switch (opcode) { case 0xd8: @@ -6293,7 +6293,7 @@ Do you want to stop the program?"), I386_SAVE_FPU_REGS)) return -1; } - else + else { if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) @@ -6309,8 +6309,8 @@ Do you want to stop the program?"), } } } - else - { + else + { switch (ir.modrm) { case 0xe0: @@ -6355,15 +6355,15 @@ Do you want to stop the program?"), break; } } - break; - case 0xda: - if (0xe9 == ir.modrm) - { + break; + case 0xda: + if (0xe9 == ir.modrm) + { if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) return -1; - } - else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4)) - { + } + else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4)) + { if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) return -1; @@ -6381,16 +6381,16 @@ Do you want to stop the program?"), ((ir.modrm & 0x0f) - 0x08))) return -1; } - } - break; - case 0xdb: - if (0xe3 == ir.modrm) - { + } + break; + case 0xdb: + if (0xe3 == ir.modrm) + { if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_ENV)) return -1; - } - else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4)) - { + } + else if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4)) + { if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep))) return -1; @@ -6408,13 +6408,13 @@ Do you want to stop the program?"), ((ir.modrm & 0x0f) - 0x08))) return -1; } - } - break; - case 0xdc: - if ((0x0c == ir.modrm >> 4) + } + break; + case 0xdc: + if ((0x0c == ir.modrm >> 4) || (0x0d == ir.modrm >> 4) || (0x0f == ir.modrm >> 4)) - { + { if ((ir.modrm & 0x0f) <= 7) { if (i386_record_floats (gdbarch, &ir, @@ -6429,55 +6429,55 @@ Do you want to stop the program?"), ((ir.modrm & 0x0f) - 0x08))) return -1; } - } + } break; - case 0xdd: - if (0x0c == ir.modrm >> 4) - { - if (i386_record_floats (gdbarch, &ir, - I387_FTAG_REGNUM (tdep))) - return -1; - } - else if ((0x0d == ir.modrm >> 4) || (0x0e == ir.modrm >> 4)) - { - if ((ir.modrm & 0x0f) <= 7) - { + case 0xdd: + if (0x0c == ir.modrm >> 4) + { + if (i386_record_floats (gdbarch, &ir, + I387_FTAG_REGNUM (tdep))) + return -1; + } + else if ((0x0d == ir.modrm >> 4) || (0x0e == ir.modrm >> 4)) + { + if ((ir.modrm & 0x0f) <= 7) + { if (i386_record_floats (gdbarch, &ir, I387_ST0_REGNUM (tdep) + (ir.modrm & 0x0f))) return -1; - } - else - { - if (i386_record_floats (gdbarch, &ir, + } + else + { + if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) - return -1; - } - } - break; - case 0xde: - if ((0x0c == ir.modrm >> 4) + return -1; + } + } + break; + case 0xde: + if ((0x0c == ir.modrm >> 4) || (0x0e == ir.modrm >> 4) || (0x0f == ir.modrm >> 4) || (0xd9 == ir.modrm)) - { + { if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) return -1; - } - break; - case 0xdf: - if (0xe0 == ir.modrm) - { + } + break; + case 0xdf: + if (0xe0 == ir.modrm) + { if (record_full_arch_list_add_reg (ir.regcache, I386_EAX_REGNUM)) return -1; - } - else if ((0x0f == ir.modrm >> 4) || (0x0e == ir.modrm >> 4)) - { + } + else if ((0x0f == ir.modrm >> 4) || (0x0e == ir.modrm >> 4)) + { if (i386_record_floats (gdbarch, &ir, I386_SAVE_FPU_REGS)) return -1; - } - break; + } + break; } } break; @@ -6489,51 +6489,51 @@ Do you want to stop the program?"), case 0x6c: /* insS */ case 0x6d: regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_RECX_REGNUM], - &addr); + ir.regmap[X86_RECORD_RECX_REGNUM], + &addr); if (addr) - { - ULONGEST es, ds; + { + ULONGEST es, ds; - if ((opcode & 1) == 0) + if ((opcode & 1) == 0) ir.ot = OT_BYTE; - else + else ir.ot = ir.dflag + OT_WORD; - regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_REDI_REGNUM], - &addr); - - regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_ES_REGNUM], - &es); - regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_DS_REGNUM], - &ds); - if (ir.aflag && (es != ds)) - { - /* addr += ((uint32_t) read_register (I386_ES_REGNUM)) << 4; */ - if (record_full_memory_query) - { - if (yquery (_("\ + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &addr); + + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_ES_REGNUM], + &es); + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_DS_REGNUM], + &ds); + if (ir.aflag && (es != ds)) + { + /* addr += ((uint32_t) read_register (I386_ES_REGNUM)) << 4; */ + if (record_full_memory_query) + { + if (yquery (_("\ Process record ignores the memory change of instruction at address %s\n\ because it can't get the value of the segment register.\n\ Do you want to stop the program?"), - paddress (gdbarch, ir.orig_addr))) - return -1; - } - } - else - { - if (record_full_arch_list_add_mem (addr, 1 << ir.ot)) - return -1; - } - - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); - if (opcode == 0xa4 || opcode == 0xa5) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + paddress (gdbarch, ir.orig_addr))) + return -1; + } + } + else + { + if (record_full_arch_list_add_mem (addr, 1 << ir.ot)) + return -1; + } + + if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + if (opcode == 0xa4 || opcode == 0xa5) + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); } break; @@ -6542,7 +6542,7 @@ Do you want to stop the program?"), I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6551,7 +6551,7 @@ Do you want to stop the program?"), I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6559,7 +6559,7 @@ Do you want to stop the program?"), case 0xaf: I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6567,7 +6567,7 @@ Do you want to stop the program?"), case 0x6f: I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6602,20 +6602,20 @@ Do you want to stop the program?"), case 0xe8: /* call im */ if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) - ir.dflag = 2; + ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) - return -1; + return -1; break; case 0x9a: /* lcall im */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - ir.addr -= 1; - goto no_support; - } + { + ir.addr -= 1; + goto no_support; + } I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_CS_REGNUM); if (i386_record_push (&ir, 1 << (ir.dflag + 1))) - return -1; + return -1; break; case 0xe9: /* jmp im */ @@ -6676,7 +6676,7 @@ Do you want to stop the program?"), if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rex_b ? (ir.rm | ir.rex_b) + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rex_b ? (ir.rm | ir.rex_b) : (ir.rm & 0x3)); else { @@ -6713,9 +6713,9 @@ Do you want to stop the program?"), case 0x9c: /* pushf */ I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); if (ir.regmap[X86_RECORD_R8_REGNUM] && ir.dflag) - ir.dflag = 2; + ir.dflag = 2; if (i386_record_push (&ir, 1 << (ir.dflag + 1))) - return -1; + return -1; break; case 0x9d: /* popf */ @@ -6725,10 +6725,10 @@ Do you want to stop the program?"), case 0x9e: /* sahf */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - ir.addr -= 1; - goto no_support; - } + { + ir.addr -= 1; + goto no_support; + } /* FALLTHROUGH */ case 0xf5: /* cmc */ case 0xf8: /* clc */ @@ -6740,10 +6740,10 @@ Do you want to stop the program?"), case 0x9f: /* lahf */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - ir.addr -= 1; - goto no_support; - } + { + ir.addr -= 1; + goto no_support; + } I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); break; @@ -6761,8 +6761,8 @@ Do you want to stop the program?"), } if (ir.reg != 4) { - if (ir.mod == 3) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + if (ir.mod == 3) + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); else { if (i386_record_lea_modrm (&ir)) @@ -6781,34 +6781,34 @@ Do you want to stop the program?"), case 0x0fbb: /* btc */ ir.ot = ir.dflag + OT_WORD; if (i386_record_modrm (&ir)) - return -1; + return -1; if (ir.mod == 3) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); else - { - uint64_t addr64; - if (i386_record_lea_modrm_addr (&ir, &addr64)) - return -1; - regcache_raw_read_unsigned (ir.regcache, - ir.regmap[ir.reg | rex_r], - &addr); - switch (ir.dflag) - { - case 0: - addr64 += ((int16_t) addr >> 4) << 4; - break; - case 1: - addr64 += ((int32_t) addr >> 5) << 5; - break; - case 2: - addr64 += ((int64_t) addr >> 6) << 6; - break; - } - if (record_full_arch_list_add_mem (addr64, 1 << ir.ot)) - return -1; - if (i386_record_lea_modrm (&ir)) - return -1; - } + { + uint64_t addr64; + if (i386_record_lea_modrm_addr (&ir, &addr64)) + return -1; + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[ir.reg | rex_r], + &addr); + switch (ir.dflag) + { + case 0: + addr64 += ((int16_t) addr >> 4) << 4; + break; + case 1: + addr64 += ((int32_t) addr >> 5) << 5; + break; + case 2: + addr64 += ((int64_t) addr >> 6) << 6; + break; + } + if (record_full_arch_list_add_mem (addr64, 1 << ir.ot)) + return -1; + if (i386_record_lea_modrm (&ir)) + return -1; + } I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6826,10 +6826,10 @@ Do you want to stop the program?"), case 0xd4: /* aam */ case 0xd5: /* aad */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - ir.addr -= 1; - goto no_support; - } + { + ir.addr -= 1; + goto no_support; + } I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6914,10 +6914,10 @@ Do you want to stop the program?"), case 0xd6: /* salc */ if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - ir.addr -= 1; - goto no_support; - } + { + ir.addr -= 1; + goto no_support; + } I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_REAX_REGNUM); I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; @@ -6952,11 +6952,11 @@ Do you want to stop the program?"), case 0x0f34: /* sysenter */ { int ret; - if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - ir.addr -= 2; - goto no_support; - } + if (ir.regmap[X86_RECORD_R8_REGNUM]) + { + ir.addr -= 2; + goto no_support; + } if (tdep->i386_sysenter_record == NULL) { printf_unfiltered (_("Process record does not support " @@ -6995,7 +6995,7 @@ Do you want to stop the program?"), case 0x0f07: /* sysret */ printf_unfiltered (_("Process record does not support " - "instruction sysret.\n")); + "instruction sysret.\n")); ir.addr -= 2; goto no_support; break; @@ -7022,7 +7022,7 @@ Do you want to stop the program?"), case 0: /* sldt */ case 1: /* str */ if (ir.mod == 3) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); else { ir.ot = OT_WORD; @@ -7035,7 +7035,7 @@ Do you want to stop the program?"), break; case 4: /* verr */ case 5: /* verw */ - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; default: ir.addr -= 3; @@ -7062,15 +7062,15 @@ Do you want to stop the program?"), } if (ir.override >= 0) { - if (record_full_memory_query) - { - if (yquery (_("\ + if (record_full_memory_query) + { + if (yquery (_("\ Process record ignores the memory change of instruction at address %s\n\ because it can't get the value of the segment register.\n\ Do you want to stop the program?"), - paddress (gdbarch, ir.orig_addr))) + paddress (gdbarch, ir.orig_addr))) return -1; - } + } } else { @@ -7079,16 +7079,16 @@ Do you want to stop the program?"), if (record_full_arch_list_add_mem (addr64, 2)) return -1; addr64 += 2; - if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - if (record_full_arch_list_add_mem (addr64, 8)) + if (ir.regmap[X86_RECORD_R8_REGNUM]) + { + if (record_full_arch_list_add_mem (addr64, 8)) return -1; - } - else - { - if (record_full_arch_list_add_mem (addr64, 4)) + } + else + { + if (record_full_arch_list_add_mem (addr64, 4)) return -1; - } + } } } break; @@ -7114,15 +7114,15 @@ Do you want to stop the program?"), /* sidt */ if (ir.override >= 0) { - if (record_full_memory_query) - { - if (yquery (_("\ + if (record_full_memory_query) + { + if (yquery (_("\ Process record ignores the memory change of instruction at address %s\n\ because it can't get the value of the segment register.\n\ Do you want to stop the program?"), - paddress (gdbarch, ir.orig_addr))) - return -1; - } + paddress (gdbarch, ir.orig_addr))) + return -1; + } } else { @@ -7133,16 +7133,16 @@ Do you want to stop the program?"), if (record_full_arch_list_add_mem (addr64, 2)) return -1; addr64 += 2; - if (ir.regmap[X86_RECORD_R8_REGNUM]) - { - if (record_full_arch_list_add_mem (addr64, 8)) - return -1; - } - else - { - if (record_full_arch_list_add_mem (addr64, 4)) - return -1; - } + if (ir.regmap[X86_RECORD_R8_REGNUM]) + { + if (record_full_arch_list_add_mem (addr64, 8)) + return -1; + } + else + { + if (record_full_arch_list_add_mem (addr64, 4)) + return -1; + } } } break; @@ -7190,13 +7190,13 @@ Do you want to stop the program?"), if (ir.mod == 3) { if (ir.rm == 0 && ir.regmap[X86_RECORD_R8_REGNUM]) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_GS_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_GS_REGNUM); else - { - ir.addr -= 3; - opcode = opcode << 8 | ir.modrm; - goto no_support; - } + { + ir.addr -= 3; + opcode = opcode << 8 | ir.modrm; + goto no_support; + } } else I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); @@ -7217,18 +7217,18 @@ Do you want to stop the program?"), if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3 || ir.regmap[X86_RECORD_R8_REGNUM]) - { - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.regmap[X86_RECORD_R8_REGNUM] + { + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.regmap[X86_RECORD_R8_REGNUM] ? (ir.reg | rex_r) : ir.rm); - } + } else - { - ir.ot = ir.dflag ? OT_LONG : OT_WORD; - if (i386_record_lea_modrm (&ir)) - return -1; - } + { + ir.ot = ir.dflag ? OT_LONG : OT_WORD; + if (i386_record_lea_modrm (&ir)) + return -1; + } if (!ir.regmap[X86_RECORD_R8_REGNUM]) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); break; case 0x0f02: /* lar */ @@ -7243,7 +7243,7 @@ Do you want to stop the program?"), if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3 && ir.reg == 3) - { + { ir.addr -= 3; opcode = opcode << 8 | ir.modrm; goto no_support; @@ -7280,7 +7280,7 @@ Do you want to stop the program?"), if (opcode & 2) I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); else - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); break; default: ir.addr -= 3; @@ -7302,7 +7302,7 @@ Do you want to stop the program?"), goto no_support; } if (opcode & 2) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); else I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); break; @@ -7319,7 +7319,7 @@ Do you want to stop the program?"), case 0x0f0e: /* 3DNow! femms */ case 0x0f77: /* emms */ if (i386_fpc_regnum_p (gdbarch, I387_FTAG_REGNUM(tdep))) - goto no_support; + goto no_support; record_full_arch_list_add_reg (ir.regcache, I387_FTAG_REGNUM(tdep)); break; @@ -7330,42 +7330,42 @@ Do you want to stop the program?"), return -1; ir.addr++; switch (opcode8) - { - case 0x0c: /* 3DNow! pi2fw */ - case 0x0d: /* 3DNow! pi2fd */ - case 0x1c: /* 3DNow! pf2iw */ - case 0x1d: /* 3DNow! pf2id */ - case 0x8a: /* 3DNow! pfnacc */ - case 0x8e: /* 3DNow! pfpnacc */ - case 0x90: /* 3DNow! pfcmpge */ - case 0x94: /* 3DNow! pfmin */ - case 0x96: /* 3DNow! pfrcp */ - case 0x97: /* 3DNow! pfrsqrt */ - case 0x9a: /* 3DNow! pfsub */ - case 0x9e: /* 3DNow! pfadd */ - case 0xa0: /* 3DNow! pfcmpgt */ - case 0xa4: /* 3DNow! pfmax */ - case 0xa6: /* 3DNow! pfrcpit1 */ - case 0xa7: /* 3DNow! pfrsqit1 */ - case 0xaa: /* 3DNow! pfsubr */ - case 0xae: /* 3DNow! pfacc */ - case 0xb0: /* 3DNow! pfcmpeq */ - case 0xb4: /* 3DNow! pfmul */ - case 0xb6: /* 3DNow! pfrcpit2 */ - case 0xb7: /* 3DNow! pmulhrw */ - case 0xbb: /* 3DNow! pswapd */ - case 0xbf: /* 3DNow! pavgusb */ - if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) - goto no_support_3dnow_data; - record_full_arch_list_add_reg (ir.regcache, ir.reg); - break; - - default: + { + case 0x0c: /* 3DNow! pi2fw */ + case 0x0d: /* 3DNow! pi2fd */ + case 0x1c: /* 3DNow! pf2iw */ + case 0x1d: /* 3DNow! pf2id */ + case 0x8a: /* 3DNow! pfnacc */ + case 0x8e: /* 3DNow! pfpnacc */ + case 0x90: /* 3DNow! pfcmpge */ + case 0x94: /* 3DNow! pfmin */ + case 0x96: /* 3DNow! pfrcp */ + case 0x97: /* 3DNow! pfrsqrt */ + case 0x9a: /* 3DNow! pfsub */ + case 0x9e: /* 3DNow! pfadd */ + case 0xa0: /* 3DNow! pfcmpgt */ + case 0xa4: /* 3DNow! pfmax */ + case 0xa6: /* 3DNow! pfrcpit1 */ + case 0xa7: /* 3DNow! pfrsqit1 */ + case 0xaa: /* 3DNow! pfsubr */ + case 0xae: /* 3DNow! pfacc */ + case 0xb0: /* 3DNow! pfcmpeq */ + case 0xb4: /* 3DNow! pfmul */ + case 0xb6: /* 3DNow! pfrcpit2 */ + case 0xb7: /* 3DNow! pmulhrw */ + case 0xbb: /* 3DNow! pswapd */ + case 0xbf: /* 3DNow! pavgusb */ + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) + goto no_support_3dnow_data; + record_full_arch_list_add_reg (ir.regcache, ir.reg); + break; + + default: no_support_3dnow_data: - opcode = (opcode << 8) | opcode8; - goto no_support; - break; - } + opcode = (opcode << 8) | opcode8; + goto no_support; + break; + } break; case 0x0faa: /* rsm */ @@ -7384,69 +7384,69 @@ no_support_3dnow_data: if (i386_record_modrm (&ir)) return -1; switch(ir.reg) - { - case 0: /* fxsave */ - { - uint64_t tmpu64; + { + case 0: /* fxsave */ + { + uint64_t tmpu64; - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); if (i386_record_lea_modrm_addr (&ir, &tmpu64)) return -1; - if (record_full_arch_list_add_mem (tmpu64, 512)) - return -1; - } - break; + if (record_full_arch_list_add_mem (tmpu64, 512)) + return -1; + } + break; - case 1: /* fxrstor */ - { - int i; + case 1: /* fxrstor */ + { + int i; - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); - for (i = I387_MM0_REGNUM (tdep); - i386_mmx_regnum_p (gdbarch, i); i++) - record_full_arch_list_add_reg (ir.regcache, i); + for (i = I387_MM0_REGNUM (tdep); + i386_mmx_regnum_p (gdbarch, i); i++) + record_full_arch_list_add_reg (ir.regcache, i); - for (i = I387_XMM0_REGNUM (tdep); - i386_xmm_regnum_p (gdbarch, i); i++) - record_full_arch_list_add_reg (ir.regcache, i); + for (i = I387_XMM0_REGNUM (tdep); + i386_xmm_regnum_p (gdbarch, i); i++) + record_full_arch_list_add_reg (ir.regcache, i); - if (i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) - record_full_arch_list_add_reg (ir.regcache, + if (i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) + record_full_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); - for (i = I387_ST0_REGNUM (tdep); - i386_fp_regnum_p (gdbarch, i); i++) - record_full_arch_list_add_reg (ir.regcache, i); - - for (i = I387_FCTRL_REGNUM (tdep); - i386_fpc_regnum_p (gdbarch, i); i++) - record_full_arch_list_add_reg (ir.regcache, i); - } - break; - - case 2: /* ldmxcsr */ - if (!i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); - break; - - case 3: /* stmxcsr */ - ir.ot = OT_LONG; - if (i386_record_lea_modrm (&ir)) - return -1; - break; - - case 5: /* lfence */ - case 6: /* mfence */ - case 7: /* sfence clflush */ - break; - - default: - opcode = (opcode << 8) | ir.modrm; - goto no_support; - break; - } + for (i = I387_ST0_REGNUM (tdep); + i386_fp_regnum_p (gdbarch, i); i++) + record_full_arch_list_add_reg (ir.regcache, i); + + for (i = I387_FCTRL_REGNUM (tdep); + i386_fpc_regnum_p (gdbarch, i); i++) + record_full_arch_list_add_reg (ir.regcache, i); + } + break; + + case 2: /* ldmxcsr */ + if (!i386_mxcsr_regnum_p (gdbarch, I387_MXCSR_REGNUM(tdep))) + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_MXCSR_REGNUM(tdep)); + break; + + case 3: /* stmxcsr */ + ir.ot = OT_LONG; + if (i386_record_lea_modrm (&ir)) + return -1; + break; + + case 5: /* lfence */ + case 6: /* mfence */ + case 7: /* sfence clflush */ + break; + + default: + opcode = (opcode << 8) | ir.modrm; + goto no_support; + break; + } break; case 0x0fc3: /* movnti */ @@ -7454,10 +7454,10 @@ no_support_3dnow_data: if (i386_record_modrm (&ir)) return -1; if (ir.mod == 3) - goto no_support; + goto no_support; ir.reg |= rex_r; if (i386_record_lea_modrm (&ir)) - return -1; + return -1; break; /* Add prefix to opcode. */ @@ -7577,541 +7577,541 @@ no_support_3dnow_data: case 0x0ffe: /* Mask out PREFIX_ADDR. */ switch ((prefixes & ~PREFIX_ADDR)) - { - case PREFIX_REPNZ: - opcode |= 0xf20000; - break; - case PREFIX_DATA: - opcode |= 0x660000; - break; - case PREFIX_REPZ: - opcode |= 0xf30000; - break; - } + { + case PREFIX_REPNZ: + opcode |= 0xf20000; + break; + case PREFIX_DATA: + opcode |= 0x660000; + break; + case PREFIX_REPZ: + opcode |= 0xf30000; + break; + } reswitch_prefix_add: switch (opcode) - { - case 0x0f38: - case 0x660f38: - case 0xf20f38: - case 0x0f3a: - case 0x660f3a: - if (record_read_memory (gdbarch, ir.addr, &opcode8, 1)) + { + case 0x0f38: + case 0x660f38: + case 0xf20f38: + case 0x0f3a: + case 0x660f3a: + if (record_read_memory (gdbarch, ir.addr, &opcode8, 1)) return -1; - ir.addr++; - opcode = (uint32_t) opcode8 | opcode << 8; - goto reswitch_prefix_add; - break; - - case 0x0f10: /* movups */ - case 0x660f10: /* movupd */ - case 0xf30f10: /* movss */ - case 0xf20f10: /* movsd */ - case 0x0f12: /* movlps */ - case 0x660f12: /* movlpd */ - case 0xf30f12: /* movsldup */ - case 0xf20f12: /* movddup */ - case 0x0f14: /* unpcklps */ - case 0x660f14: /* unpcklpd */ - case 0x0f15: /* unpckhps */ - case 0x660f15: /* unpckhpd */ - case 0x0f16: /* movhps */ - case 0x660f16: /* movhpd */ - case 0xf30f16: /* movshdup */ - case 0x0f28: /* movaps */ - case 0x660f28: /* movapd */ - case 0x0f2a: /* cvtpi2ps */ - case 0x660f2a: /* cvtpi2pd */ - case 0xf30f2a: /* cvtsi2ss */ - case 0xf20f2a: /* cvtsi2sd */ - case 0x0f2c: /* cvttps2pi */ - case 0x660f2c: /* cvttpd2pi */ - case 0x0f2d: /* cvtps2pi */ - case 0x660f2d: /* cvtpd2pi */ - case 0x660f3800: /* pshufb */ - case 0x660f3801: /* phaddw */ - case 0x660f3802: /* phaddd */ - case 0x660f3803: /* phaddsw */ - case 0x660f3804: /* pmaddubsw */ - case 0x660f3805: /* phsubw */ - case 0x660f3806: /* phsubd */ - case 0x660f3807: /* phsubsw */ - case 0x660f3808: /* psignb */ - case 0x660f3809: /* psignw */ - case 0x660f380a: /* psignd */ - case 0x660f380b: /* pmulhrsw */ - case 0x660f3810: /* pblendvb */ - case 0x660f3814: /* blendvps */ - case 0x660f3815: /* blendvpd */ - case 0x660f381c: /* pabsb */ - case 0x660f381d: /* pabsw */ - case 0x660f381e: /* pabsd */ - case 0x660f3820: /* pmovsxbw */ - case 0x660f3821: /* pmovsxbd */ - case 0x660f3822: /* pmovsxbq */ - case 0x660f3823: /* pmovsxwd */ - case 0x660f3824: /* pmovsxwq */ - case 0x660f3825: /* pmovsxdq */ - case 0x660f3828: /* pmuldq */ - case 0x660f3829: /* pcmpeqq */ - case 0x660f382a: /* movntdqa */ - case 0x660f3a08: /* roundps */ - case 0x660f3a09: /* roundpd */ - case 0x660f3a0a: /* roundss */ - case 0x660f3a0b: /* roundsd */ - case 0x660f3a0c: /* blendps */ - case 0x660f3a0d: /* blendpd */ - case 0x660f3a0e: /* pblendw */ - case 0x660f3a0f: /* palignr */ - case 0x660f3a20: /* pinsrb */ - case 0x660f3a21: /* insertps */ - case 0x660f3a22: /* pinsrd pinsrq */ - case 0x660f3a40: /* dpps */ - case 0x660f3a41: /* dppd */ - case 0x660f3a42: /* mpsadbw */ - case 0x660f3a60: /* pcmpestrm */ - case 0x660f3a61: /* pcmpestri */ - case 0x660f3a62: /* pcmpistrm */ - case 0x660f3a63: /* pcmpistri */ - case 0x0f51: /* sqrtps */ - case 0x660f51: /* sqrtpd */ - case 0xf20f51: /* sqrtsd */ - case 0xf30f51: /* sqrtss */ - case 0x0f52: /* rsqrtps */ - case 0xf30f52: /* rsqrtss */ - case 0x0f53: /* rcpps */ - case 0xf30f53: /* rcpss */ - case 0x0f54: /* andps */ - case 0x660f54: /* andpd */ - case 0x0f55: /* andnps */ - case 0x660f55: /* andnpd */ - case 0x0f56: /* orps */ - case 0x660f56: /* orpd */ - case 0x0f57: /* xorps */ - case 0x660f57: /* xorpd */ - case 0x0f58: /* addps */ - case 0x660f58: /* addpd */ - case 0xf20f58: /* addsd */ - case 0xf30f58: /* addss */ - case 0x0f59: /* mulps */ - case 0x660f59: /* mulpd */ - case 0xf20f59: /* mulsd */ - case 0xf30f59: /* mulss */ - case 0x0f5a: /* cvtps2pd */ - case 0x660f5a: /* cvtpd2ps */ - case 0xf20f5a: /* cvtsd2ss */ - case 0xf30f5a: /* cvtss2sd */ - case 0x0f5b: /* cvtdq2ps */ - case 0x660f5b: /* cvtps2dq */ - case 0xf30f5b: /* cvttps2dq */ - case 0x0f5c: /* subps */ - case 0x660f5c: /* subpd */ - case 0xf20f5c: /* subsd */ - case 0xf30f5c: /* subss */ - case 0x0f5d: /* minps */ - case 0x660f5d: /* minpd */ - case 0xf20f5d: /* minsd */ - case 0xf30f5d: /* minss */ - case 0x0f5e: /* divps */ - case 0x660f5e: /* divpd */ - case 0xf20f5e: /* divsd */ - case 0xf30f5e: /* divss */ - case 0x0f5f: /* maxps */ - case 0x660f5f: /* maxpd */ - case 0xf20f5f: /* maxsd */ - case 0xf30f5f: /* maxss */ - case 0x660f60: /* punpcklbw */ - case 0x660f61: /* punpcklwd */ - case 0x660f62: /* punpckldq */ - case 0x660f63: /* packsswb */ - case 0x660f64: /* pcmpgtb */ - case 0x660f65: /* pcmpgtw */ - case 0x660f66: /* pcmpgtd */ - case 0x660f67: /* packuswb */ - case 0x660f68: /* punpckhbw */ - case 0x660f69: /* punpckhwd */ - case 0x660f6a: /* punpckhdq */ - case 0x660f6b: /* packssdw */ - case 0x660f6c: /* punpcklqdq */ - case 0x660f6d: /* punpckhqdq */ - case 0x660f6e: /* movd */ - case 0x660f6f: /* movdqa */ - case 0xf30f6f: /* movdqu */ - case 0x660f70: /* pshufd */ - case 0xf20f70: /* pshuflw */ - case 0xf30f70: /* pshufhw */ - case 0x660f74: /* pcmpeqb */ - case 0x660f75: /* pcmpeqw */ - case 0x660f76: /* pcmpeqd */ - case 0x660f7c: /* haddpd */ - case 0xf20f7c: /* haddps */ - case 0x660f7d: /* hsubpd */ - case 0xf20f7d: /* hsubps */ - case 0xf30f7e: /* movq */ - case 0x0fc2: /* cmpps */ - case 0x660fc2: /* cmppd */ - case 0xf20fc2: /* cmpsd */ - case 0xf30fc2: /* cmpss */ - case 0x660fc4: /* pinsrw */ - case 0x0fc6: /* shufps */ - case 0x660fc6: /* shufpd */ - case 0x660fd0: /* addsubpd */ - case 0xf20fd0: /* addsubps */ - case 0x660fd1: /* psrlw */ - case 0x660fd2: /* psrld */ - case 0x660fd3: /* psrlq */ - case 0x660fd4: /* paddq */ - case 0x660fd5: /* pmullw */ - case 0xf30fd6: /* movq2dq */ - case 0x660fd8: /* psubusb */ - case 0x660fd9: /* psubusw */ - case 0x660fda: /* pminub */ - case 0x660fdb: /* pand */ - case 0x660fdc: /* paddusb */ - case 0x660fdd: /* paddusw */ - case 0x660fde: /* pmaxub */ - case 0x660fdf: /* pandn */ - case 0x660fe0: /* pavgb */ - case 0x660fe1: /* psraw */ - case 0x660fe2: /* psrad */ - case 0x660fe3: /* pavgw */ - case 0x660fe4: /* pmulhuw */ - case 0x660fe5: /* pmulhw */ - case 0x660fe6: /* cvttpd2dq */ - case 0xf20fe6: /* cvtpd2dq */ - case 0xf30fe6: /* cvtdq2pd */ - case 0x660fe8: /* psubsb */ - case 0x660fe9: /* psubsw */ - case 0x660fea: /* pminsw */ - case 0x660feb: /* por */ - case 0x660fec: /* paddsb */ - case 0x660fed: /* paddsw */ - case 0x660fee: /* pmaxsw */ - case 0x660fef: /* pxor */ - case 0xf20ff0: /* lddqu */ - case 0x660ff1: /* psllw */ - case 0x660ff2: /* pslld */ - case 0x660ff3: /* psllq */ - case 0x660ff4: /* pmuludq */ - case 0x660ff5: /* pmaddwd */ - case 0x660ff6: /* psadbw */ - case 0x660ff8: /* psubb */ - case 0x660ff9: /* psubw */ - case 0x660ffa: /* psubd */ - case 0x660ffb: /* psubq */ - case 0x660ffc: /* paddb */ - case 0x660ffd: /* paddw */ - case 0x660ffe: /* paddd */ - if (i386_record_modrm (&ir)) + ir.addr++; + opcode = (uint32_t) opcode8 | opcode << 8; + goto reswitch_prefix_add; + break; + + case 0x0f10: /* movups */ + case 0x660f10: /* movupd */ + case 0xf30f10: /* movss */ + case 0xf20f10: /* movsd */ + case 0x0f12: /* movlps */ + case 0x660f12: /* movlpd */ + case 0xf30f12: /* movsldup */ + case 0xf20f12: /* movddup */ + case 0x0f14: /* unpcklps */ + case 0x660f14: /* unpcklpd */ + case 0x0f15: /* unpckhps */ + case 0x660f15: /* unpckhpd */ + case 0x0f16: /* movhps */ + case 0x660f16: /* movhpd */ + case 0xf30f16: /* movshdup */ + case 0x0f28: /* movaps */ + case 0x660f28: /* movapd */ + case 0x0f2a: /* cvtpi2ps */ + case 0x660f2a: /* cvtpi2pd */ + case 0xf30f2a: /* cvtsi2ss */ + case 0xf20f2a: /* cvtsi2sd */ + case 0x0f2c: /* cvttps2pi */ + case 0x660f2c: /* cvttpd2pi */ + case 0x0f2d: /* cvtps2pi */ + case 0x660f2d: /* cvtpd2pi */ + case 0x660f3800: /* pshufb */ + case 0x660f3801: /* phaddw */ + case 0x660f3802: /* phaddd */ + case 0x660f3803: /* phaddsw */ + case 0x660f3804: /* pmaddubsw */ + case 0x660f3805: /* phsubw */ + case 0x660f3806: /* phsubd */ + case 0x660f3807: /* phsubsw */ + case 0x660f3808: /* psignb */ + case 0x660f3809: /* psignw */ + case 0x660f380a: /* psignd */ + case 0x660f380b: /* pmulhrsw */ + case 0x660f3810: /* pblendvb */ + case 0x660f3814: /* blendvps */ + case 0x660f3815: /* blendvpd */ + case 0x660f381c: /* pabsb */ + case 0x660f381d: /* pabsw */ + case 0x660f381e: /* pabsd */ + case 0x660f3820: /* pmovsxbw */ + case 0x660f3821: /* pmovsxbd */ + case 0x660f3822: /* pmovsxbq */ + case 0x660f3823: /* pmovsxwd */ + case 0x660f3824: /* pmovsxwq */ + case 0x660f3825: /* pmovsxdq */ + case 0x660f3828: /* pmuldq */ + case 0x660f3829: /* pcmpeqq */ + case 0x660f382a: /* movntdqa */ + case 0x660f3a08: /* roundps */ + case 0x660f3a09: /* roundpd */ + case 0x660f3a0a: /* roundss */ + case 0x660f3a0b: /* roundsd */ + case 0x660f3a0c: /* blendps */ + case 0x660f3a0d: /* blendpd */ + case 0x660f3a0e: /* pblendw */ + case 0x660f3a0f: /* palignr */ + case 0x660f3a20: /* pinsrb */ + case 0x660f3a21: /* insertps */ + case 0x660f3a22: /* pinsrd pinsrq */ + case 0x660f3a40: /* dpps */ + case 0x660f3a41: /* dppd */ + case 0x660f3a42: /* mpsadbw */ + case 0x660f3a60: /* pcmpestrm */ + case 0x660f3a61: /* pcmpestri */ + case 0x660f3a62: /* pcmpistrm */ + case 0x660f3a63: /* pcmpistri */ + case 0x0f51: /* sqrtps */ + case 0x660f51: /* sqrtpd */ + case 0xf20f51: /* sqrtsd */ + case 0xf30f51: /* sqrtss */ + case 0x0f52: /* rsqrtps */ + case 0xf30f52: /* rsqrtss */ + case 0x0f53: /* rcpps */ + case 0xf30f53: /* rcpss */ + case 0x0f54: /* andps */ + case 0x660f54: /* andpd */ + case 0x0f55: /* andnps */ + case 0x660f55: /* andnpd */ + case 0x0f56: /* orps */ + case 0x660f56: /* orpd */ + case 0x0f57: /* xorps */ + case 0x660f57: /* xorpd */ + case 0x0f58: /* addps */ + case 0x660f58: /* addpd */ + case 0xf20f58: /* addsd */ + case 0xf30f58: /* addss */ + case 0x0f59: /* mulps */ + case 0x660f59: /* mulpd */ + case 0xf20f59: /* mulsd */ + case 0xf30f59: /* mulss */ + case 0x0f5a: /* cvtps2pd */ + case 0x660f5a: /* cvtpd2ps */ + case 0xf20f5a: /* cvtsd2ss */ + case 0xf30f5a: /* cvtss2sd */ + case 0x0f5b: /* cvtdq2ps */ + case 0x660f5b: /* cvtps2dq */ + case 0xf30f5b: /* cvttps2dq */ + case 0x0f5c: /* subps */ + case 0x660f5c: /* subpd */ + case 0xf20f5c: /* subsd */ + case 0xf30f5c: /* subss */ + case 0x0f5d: /* minps */ + case 0x660f5d: /* minpd */ + case 0xf20f5d: /* minsd */ + case 0xf30f5d: /* minss */ + case 0x0f5e: /* divps */ + case 0x660f5e: /* divpd */ + case 0xf20f5e: /* divsd */ + case 0xf30f5e: /* divss */ + case 0x0f5f: /* maxps */ + case 0x660f5f: /* maxpd */ + case 0xf20f5f: /* maxsd */ + case 0xf30f5f: /* maxss */ + case 0x660f60: /* punpcklbw */ + case 0x660f61: /* punpcklwd */ + case 0x660f62: /* punpckldq */ + case 0x660f63: /* packsswb */ + case 0x660f64: /* pcmpgtb */ + case 0x660f65: /* pcmpgtw */ + case 0x660f66: /* pcmpgtd */ + case 0x660f67: /* packuswb */ + case 0x660f68: /* punpckhbw */ + case 0x660f69: /* punpckhwd */ + case 0x660f6a: /* punpckhdq */ + case 0x660f6b: /* packssdw */ + case 0x660f6c: /* punpcklqdq */ + case 0x660f6d: /* punpckhqdq */ + case 0x660f6e: /* movd */ + case 0x660f6f: /* movdqa */ + case 0xf30f6f: /* movdqu */ + case 0x660f70: /* pshufd */ + case 0xf20f70: /* pshuflw */ + case 0xf30f70: /* pshufhw */ + case 0x660f74: /* pcmpeqb */ + case 0x660f75: /* pcmpeqw */ + case 0x660f76: /* pcmpeqd */ + case 0x660f7c: /* haddpd */ + case 0xf20f7c: /* haddps */ + case 0x660f7d: /* hsubpd */ + case 0xf20f7d: /* hsubps */ + case 0xf30f7e: /* movq */ + case 0x0fc2: /* cmpps */ + case 0x660fc2: /* cmppd */ + case 0xf20fc2: /* cmpsd */ + case 0xf30fc2: /* cmpss */ + case 0x660fc4: /* pinsrw */ + case 0x0fc6: /* shufps */ + case 0x660fc6: /* shufpd */ + case 0x660fd0: /* addsubpd */ + case 0xf20fd0: /* addsubps */ + case 0x660fd1: /* psrlw */ + case 0x660fd2: /* psrld */ + case 0x660fd3: /* psrlq */ + case 0x660fd4: /* paddq */ + case 0x660fd5: /* pmullw */ + case 0xf30fd6: /* movq2dq */ + case 0x660fd8: /* psubusb */ + case 0x660fd9: /* psubusw */ + case 0x660fda: /* pminub */ + case 0x660fdb: /* pand */ + case 0x660fdc: /* paddusb */ + case 0x660fdd: /* paddusw */ + case 0x660fde: /* pmaxub */ + case 0x660fdf: /* pandn */ + case 0x660fe0: /* pavgb */ + case 0x660fe1: /* psraw */ + case 0x660fe2: /* psrad */ + case 0x660fe3: /* pavgw */ + case 0x660fe4: /* pmulhuw */ + case 0x660fe5: /* pmulhw */ + case 0x660fe6: /* cvttpd2dq */ + case 0xf20fe6: /* cvtpd2dq */ + case 0xf30fe6: /* cvtdq2pd */ + case 0x660fe8: /* psubsb */ + case 0x660fe9: /* psubsw */ + case 0x660fea: /* pminsw */ + case 0x660feb: /* por */ + case 0x660fec: /* paddsb */ + case 0x660fed: /* paddsw */ + case 0x660fee: /* pmaxsw */ + case 0x660fef: /* pxor */ + case 0xf20ff0: /* lddqu */ + case 0x660ff1: /* psllw */ + case 0x660ff2: /* pslld */ + case 0x660ff3: /* psllq */ + case 0x660ff4: /* pmuludq */ + case 0x660ff5: /* pmaddwd */ + case 0x660ff6: /* psadbw */ + case 0x660ff8: /* psubb */ + case 0x660ff9: /* psubw */ + case 0x660ffa: /* psubd */ + case 0x660ffb: /* psubq */ + case 0x660ffc: /* paddb */ + case 0x660ffd: /* paddw */ + case 0x660ffe: /* paddd */ + if (i386_record_modrm (&ir)) return -1; - ir.reg |= rex_r; - if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.reg)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + ir.reg |= rex_r; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.reg)) + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_XMM0_REGNUM (tdep) + ir.reg); - if ((opcode & 0xfffffffc) == 0x660f3a60) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); - break; - - case 0x0f11: /* movups */ - case 0x660f11: /* movupd */ - case 0xf30f11: /* movss */ - case 0xf20f11: /* movsd */ - case 0x0f13: /* movlps */ - case 0x660f13: /* movlpd */ - case 0x0f17: /* movhps */ - case 0x660f17: /* movhpd */ - case 0x0f29: /* movaps */ - case 0x660f29: /* movapd */ - case 0x660f3a14: /* pextrb */ - case 0x660f3a15: /* pextrw */ - case 0x660f3a16: /* pextrd pextrq */ - case 0x660f3a17: /* extractps */ - case 0x660f7f: /* movdqa */ - case 0xf30f7f: /* movdqu */ - if (i386_record_modrm (&ir)) + if ((opcode & 0xfffffffc) == 0x660f3a60) + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + case 0x0f11: /* movups */ + case 0x660f11: /* movupd */ + case 0xf30f11: /* movss */ + case 0xf20f11: /* movsd */ + case 0x0f13: /* movlps */ + case 0x660f13: /* movlpd */ + case 0x0f17: /* movhps */ + case 0x660f17: /* movhpd */ + case 0x0f29: /* movaps */ + case 0x660f29: /* movapd */ + case 0x660f3a14: /* pextrb */ + case 0x660f3a15: /* pextrw */ + case 0x660f3a16: /* pextrd pextrq */ + case 0x660f3a17: /* extractps */ + case 0x660f7f: /* movdqa */ + case 0xf30f7f: /* movdqu */ + if (i386_record_modrm (&ir)) return -1; - if (ir.mod == 3) - { - if (opcode == 0x0f13 || opcode == 0x660f13 - || opcode == 0x0f17 || opcode == 0x660f17) - goto no_support; - ir.rm |= ir.rex_b; - if (!i386_xmm_regnum_p (gdbarch, + if (ir.mod == 3) + { + if (opcode == 0x0f13 || opcode == 0x660f13 + || opcode == 0x0f17 || opcode == 0x660f17) + goto no_support; + ir.rm |= ir.rex_b; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_XMM0_REGNUM (tdep) + ir.rm); - } - else - { - switch (opcode) - { - case 0x660f3a14: - ir.ot = OT_BYTE; - break; - case 0x660f3a15: - ir.ot = OT_WORD; - break; - case 0x660f3a16: - ir.ot = OT_LONG; - break; - case 0x660f3a17: - ir.ot = OT_QUAD; - break; - default: - ir.ot = OT_DQUAD; - break; - } - if (i386_record_lea_modrm (&ir)) - return -1; - } - break; - - case 0x0f2b: /* movntps */ - case 0x660f2b: /* movntpd */ - case 0x0fe7: /* movntq */ - case 0x660fe7: /* movntdq */ - if (ir.mod == 3) - goto no_support; - if (opcode == 0x0fe7) - ir.ot = OT_QUAD; - else - ir.ot = OT_DQUAD; - if (i386_record_lea_modrm (&ir)) - return -1; - break; - - case 0xf30f2c: /* cvttss2si */ - case 0xf20f2c: /* cvttsd2si */ - case 0xf30f2d: /* cvtss2si */ - case 0xf20f2d: /* cvtsd2si */ - case 0xf20f38f0: /* crc32 */ - case 0xf20f38f1: /* crc32 */ - case 0x0f50: /* movmskps */ - case 0x660f50: /* movmskpd */ - case 0x0fc5: /* pextrw */ - case 0x660fc5: /* pextrw */ - case 0x0fd7: /* pmovmskb */ - case 0x660fd7: /* pmovmskb */ - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.reg | rex_r); - break; - - case 0x0f3800: /* pshufb */ - case 0x0f3801: /* phaddw */ - case 0x0f3802: /* phaddd */ - case 0x0f3803: /* phaddsw */ - case 0x0f3804: /* pmaddubsw */ - case 0x0f3805: /* phsubw */ - case 0x0f3806: /* phsubd */ - case 0x0f3807: /* phsubsw */ - case 0x0f3808: /* psignb */ - case 0x0f3809: /* psignw */ - case 0x0f380a: /* psignd */ - case 0x0f380b: /* pmulhrsw */ - case 0x0f381c: /* pabsb */ - case 0x0f381d: /* pabsw */ - case 0x0f381e: /* pabsd */ - case 0x0f382b: /* packusdw */ - case 0x0f3830: /* pmovzxbw */ - case 0x0f3831: /* pmovzxbd */ - case 0x0f3832: /* pmovzxbq */ - case 0x0f3833: /* pmovzxwd */ - case 0x0f3834: /* pmovzxwq */ - case 0x0f3835: /* pmovzxdq */ - case 0x0f3837: /* pcmpgtq */ - case 0x0f3838: /* pminsb */ - case 0x0f3839: /* pminsd */ - case 0x0f383a: /* pminuw */ - case 0x0f383b: /* pminud */ - case 0x0f383c: /* pmaxsb */ - case 0x0f383d: /* pmaxsd */ - case 0x0f383e: /* pmaxuw */ - case 0x0f383f: /* pmaxud */ - case 0x0f3840: /* pmulld */ - case 0x0f3841: /* phminposuw */ - case 0x0f3a0f: /* palignr */ - case 0x0f60: /* punpcklbw */ - case 0x0f61: /* punpcklwd */ - case 0x0f62: /* punpckldq */ - case 0x0f63: /* packsswb */ - case 0x0f64: /* pcmpgtb */ - case 0x0f65: /* pcmpgtw */ - case 0x0f66: /* pcmpgtd */ - case 0x0f67: /* packuswb */ - case 0x0f68: /* punpckhbw */ - case 0x0f69: /* punpckhwd */ - case 0x0f6a: /* punpckhdq */ - case 0x0f6b: /* packssdw */ - case 0x0f6e: /* movd */ - case 0x0f6f: /* movq */ - case 0x0f70: /* pshufw */ - case 0x0f74: /* pcmpeqb */ - case 0x0f75: /* pcmpeqw */ - case 0x0f76: /* pcmpeqd */ - case 0x0fc4: /* pinsrw */ - case 0x0fd1: /* psrlw */ - case 0x0fd2: /* psrld */ - case 0x0fd3: /* psrlq */ - case 0x0fd4: /* paddq */ - case 0x0fd5: /* pmullw */ - case 0xf20fd6: /* movdq2q */ - case 0x0fd8: /* psubusb */ - case 0x0fd9: /* psubusw */ - case 0x0fda: /* pminub */ - case 0x0fdb: /* pand */ - case 0x0fdc: /* paddusb */ - case 0x0fdd: /* paddusw */ - case 0x0fde: /* pmaxub */ - case 0x0fdf: /* pandn */ - case 0x0fe0: /* pavgb */ - case 0x0fe1: /* psraw */ - case 0x0fe2: /* psrad */ - case 0x0fe3: /* pavgw */ - case 0x0fe4: /* pmulhuw */ - case 0x0fe5: /* pmulhw */ - case 0x0fe8: /* psubsb */ - case 0x0fe9: /* psubsw */ - case 0x0fea: /* pminsw */ - case 0x0feb: /* por */ - case 0x0fec: /* paddsb */ - case 0x0fed: /* paddsw */ - case 0x0fee: /* pmaxsw */ - case 0x0fef: /* pxor */ - case 0x0ff1: /* psllw */ - case 0x0ff2: /* pslld */ - case 0x0ff3: /* psllq */ - case 0x0ff4: /* pmuludq */ - case 0x0ff5: /* pmaddwd */ - case 0x0ff6: /* psadbw */ - case 0x0ff8: /* psubb */ - case 0x0ff9: /* psubw */ - case 0x0ffa: /* psubd */ - case 0x0ffb: /* psubq */ - case 0x0ffc: /* paddb */ - case 0x0ffd: /* paddw */ - case 0x0ffe: /* paddd */ - if (i386_record_modrm (&ir)) + } + else + { + switch (opcode) + { + case 0x660f3a14: + ir.ot = OT_BYTE; + break; + case 0x660f3a15: + ir.ot = OT_WORD; + break; + case 0x660f3a16: + ir.ot = OT_LONG; + break; + case 0x660f3a17: + ir.ot = OT_QUAD; + break; + default: + ir.ot = OT_DQUAD; + break; + } + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0x0f2b: /* movntps */ + case 0x660f2b: /* movntpd */ + case 0x0fe7: /* movntq */ + case 0x660fe7: /* movntdq */ + if (ir.mod == 3) + goto no_support; + if (opcode == 0x0fe7) + ir.ot = OT_QUAD; + else + ir.ot = OT_DQUAD; + if (i386_record_lea_modrm (&ir)) return -1; - if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + break; + + case 0xf30f2c: /* cvttss2si */ + case 0xf20f2c: /* cvttsd2si */ + case 0xf30f2d: /* cvtss2si */ + case 0xf20f2d: /* cvtsd2si */ + case 0xf20f38f0: /* crc32 */ + case 0xf20f38f1: /* crc32 */ + case 0x0f50: /* movmskps */ + case 0x660f50: /* movmskpd */ + case 0x0fc5: /* pextrw */ + case 0x660fc5: /* pextrw */ + case 0x0fd7: /* pmovmskb */ + case 0x660fd7: /* pmovmskb */ + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.reg | rex_r); + break; + + case 0x0f3800: /* pshufb */ + case 0x0f3801: /* phaddw */ + case 0x0f3802: /* phaddd */ + case 0x0f3803: /* phaddsw */ + case 0x0f3804: /* pmaddubsw */ + case 0x0f3805: /* phsubw */ + case 0x0f3806: /* phsubd */ + case 0x0f3807: /* phsubsw */ + case 0x0f3808: /* psignb */ + case 0x0f3809: /* psignw */ + case 0x0f380a: /* psignd */ + case 0x0f380b: /* pmulhrsw */ + case 0x0f381c: /* pabsb */ + case 0x0f381d: /* pabsw */ + case 0x0f381e: /* pabsd */ + case 0x0f382b: /* packusdw */ + case 0x0f3830: /* pmovzxbw */ + case 0x0f3831: /* pmovzxbd */ + case 0x0f3832: /* pmovzxbq */ + case 0x0f3833: /* pmovzxwd */ + case 0x0f3834: /* pmovzxwq */ + case 0x0f3835: /* pmovzxdq */ + case 0x0f3837: /* pcmpgtq */ + case 0x0f3838: /* pminsb */ + case 0x0f3839: /* pminsd */ + case 0x0f383a: /* pminuw */ + case 0x0f383b: /* pminud */ + case 0x0f383c: /* pmaxsb */ + case 0x0f383d: /* pmaxsd */ + case 0x0f383e: /* pmaxuw */ + case 0x0f383f: /* pmaxud */ + case 0x0f3840: /* pmulld */ + case 0x0f3841: /* phminposuw */ + case 0x0f3a0f: /* palignr */ + case 0x0f60: /* punpcklbw */ + case 0x0f61: /* punpcklwd */ + case 0x0f62: /* punpckldq */ + case 0x0f63: /* packsswb */ + case 0x0f64: /* pcmpgtb */ + case 0x0f65: /* pcmpgtw */ + case 0x0f66: /* pcmpgtd */ + case 0x0f67: /* packuswb */ + case 0x0f68: /* punpckhbw */ + case 0x0f69: /* punpckhwd */ + case 0x0f6a: /* punpckhdq */ + case 0x0f6b: /* packssdw */ + case 0x0f6e: /* movd */ + case 0x0f6f: /* movq */ + case 0x0f70: /* pshufw */ + case 0x0f74: /* pcmpeqb */ + case 0x0f75: /* pcmpeqw */ + case 0x0f76: /* pcmpeqd */ + case 0x0fc4: /* pinsrw */ + case 0x0fd1: /* psrlw */ + case 0x0fd2: /* psrld */ + case 0x0fd3: /* psrlq */ + case 0x0fd4: /* paddq */ + case 0x0fd5: /* pmullw */ + case 0xf20fd6: /* movdq2q */ + case 0x0fd8: /* psubusb */ + case 0x0fd9: /* psubusw */ + case 0x0fda: /* pminub */ + case 0x0fdb: /* pand */ + case 0x0fdc: /* paddusb */ + case 0x0fdd: /* paddusw */ + case 0x0fde: /* pmaxub */ + case 0x0fdf: /* pandn */ + case 0x0fe0: /* pavgb */ + case 0x0fe1: /* psraw */ + case 0x0fe2: /* psrad */ + case 0x0fe3: /* pavgw */ + case 0x0fe4: /* pmulhuw */ + case 0x0fe5: /* pmulhw */ + case 0x0fe8: /* psubsb */ + case 0x0fe9: /* psubsw */ + case 0x0fea: /* pminsw */ + case 0x0feb: /* por */ + case 0x0fec: /* paddsb */ + case 0x0fed: /* paddsw */ + case 0x0fee: /* pmaxsw */ + case 0x0fef: /* pxor */ + case 0x0ff1: /* psllw */ + case 0x0ff2: /* pslld */ + case 0x0ff3: /* psllq */ + case 0x0ff4: /* pmuludq */ + case 0x0ff5: /* pmaddwd */ + case 0x0ff6: /* psadbw */ + case 0x0ff8: /* psubb */ + case 0x0ff9: /* psubw */ + case 0x0ffa: /* psubd */ + case 0x0ffb: /* psubq */ + case 0x0ffc: /* paddb */ + case 0x0ffd: /* paddw */ + case 0x0ffe: /* paddd */ + if (i386_record_modrm (&ir)) + return -1; + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.reg)) + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_MM0_REGNUM (tdep) + ir.reg); - break; + break; - case 0x0f71: /* psllw */ - case 0x0f72: /* pslld */ - case 0x0f73: /* psllq */ - if (i386_record_modrm (&ir)) + case 0x0f71: /* psllw */ + case 0x0f72: /* pslld */ + case 0x0f73: /* psllq */ + if (i386_record_modrm (&ir)) return -1; - if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_MM0_REGNUM (tdep) + ir.rm); - break; + break; - case 0x660f71: /* psllw */ - case 0x660f72: /* pslld */ - case 0x660f73: /* psllq */ - if (i386_record_modrm (&ir)) + case 0x660f71: /* psllw */ + case 0x660f72: /* pslld */ + case 0x660f73: /* psllq */ + if (i386_record_modrm (&ir)) return -1; - ir.rm |= ir.rex_b; - if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + ir.rm |= ir.rex_b; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_XMM0_REGNUM (tdep) + ir.rm); - break; + break; - case 0x0f7e: /* movd */ - case 0x660f7e: /* movd */ - if (i386_record_modrm (&ir)) + case 0x0f7e: /* movd */ + case 0x660f7e: /* movd */ + if (i386_record_modrm (&ir)) return -1; - if (ir.mod == 3) - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); - else - { - if (ir.dflag == 2) - ir.ot = OT_QUAD; - else - ir.ot = OT_LONG; - if (i386_record_lea_modrm (&ir)) - return -1; - } - break; - - case 0x0f7f: /* movq */ - if (i386_record_modrm (&ir)) + if (ir.mod == 3) + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.rm | ir.rex_b); + else + { + if (ir.dflag == 2) + ir.ot = OT_QUAD; + else + ir.ot = OT_LONG; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0x0f7f: /* movq */ + if (i386_record_modrm (&ir)) return -1; - if (ir.mod == 3) - { - if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + if (ir.mod == 3) + { + if (!i386_mmx_regnum_p (gdbarch, I387_MM0_REGNUM (tdep) + ir.rm)) + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_MM0_REGNUM (tdep) + ir.rm); - } - else - { - ir.ot = OT_QUAD; - if (i386_record_lea_modrm (&ir)) - return -1; - } - break; - - case 0xf30fb8: /* popcnt */ - if (i386_record_modrm (&ir)) + } + else + { + ir.ot = OT_QUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0xf30fb8: /* popcnt */ + if (i386_record_modrm (&ir)) return -1; - I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.reg); - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); - break; + I386_RECORD_FULL_ARCH_LIST_ADD_REG (ir.reg); + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; - case 0x660fd6: /* movq */ - if (i386_record_modrm (&ir)) + case 0x660fd6: /* movq */ + if (i386_record_modrm (&ir)) return -1; - if (ir.mod == 3) - { - ir.rm |= ir.rex_b; - if (!i386_xmm_regnum_p (gdbarch, + if (ir.mod == 3) + { + ir.rm |= ir.rex_b; + if (!i386_xmm_regnum_p (gdbarch, I387_XMM0_REGNUM (tdep) + ir.rm)) - goto no_support; - record_full_arch_list_add_reg (ir.regcache, + goto no_support; + record_full_arch_list_add_reg (ir.regcache, I387_XMM0_REGNUM (tdep) + ir.rm); - } - else - { - ir.ot = OT_QUAD; - if (i386_record_lea_modrm (&ir)) - return -1; - } - break; - - case 0x660f3817: /* ptest */ - case 0x0f2e: /* ucomiss */ - case 0x660f2e: /* ucomisd */ - case 0x0f2f: /* comiss */ - case 0x660f2f: /* comisd */ - I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); - break; - - case 0x0ff7: /* maskmovq */ - regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_REDI_REGNUM], - &addr); - if (record_full_arch_list_add_mem (addr, 64)) - return -1; - break; - - case 0x660ff7: /* maskmovdqu */ - regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_REDI_REGNUM], - &addr); - if (record_full_arch_list_add_mem (addr, 128)) - return -1; - break; - - default: - goto no_support; - break; - } + } + else + { + ir.ot = OT_QUAD; + if (i386_record_lea_modrm (&ir)) + return -1; + } + break; + + case 0x660f3817: /* ptest */ + case 0x0f2e: /* ucomiss */ + case 0x660f2e: /* ucomisd */ + case 0x0f2f: /* comiss */ + case 0x660f2f: /* comisd */ + I386_RECORD_FULL_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + break; + + case 0x0ff7: /* maskmovq */ + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &addr); + if (record_full_arch_list_add_mem (addr, 64)) + return -1; + break; + + case 0x660ff7: /* maskmovdqu */ + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_REDI_REGNUM], + &addr); + if (record_full_arch_list_add_mem (addr, 128)) + return -1; + break; + + default: + goto no_support; + break; + } break; default: @@ -8128,9 +8128,9 @@ reswitch_prefix_add: no_support: printf_unfiltered (_("Process record does not support instruction 0x%02x " - "at address %s.\n"), - (unsigned int) (opcode), - paddress (gdbarch, ir.orig_addr)); + "at address %s.\n"), + (unsigned int) (opcode), + paddress (gdbarch, ir.orig_addr)); return -1; } |