X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Famd64-windows-tdep.c;h=59a960a99e3b01d24751ef95b700ad53e8e1d54f;hb=2117c711ae07700adb57ea5b5ca61e4c32d7e3d2;hp=a75d6bafcf351e0124c878644f8d9a763ded6f2c;hpb=5b856f360b037357d147f20b7c20d3d463692b18;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c index a75d6bafcf..59a960a99e 100644 --- a/gdb/amd64-windows-tdep.c +++ b/gdb/amd64-windows-tdep.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2009-2013 Free Software Foundation, Inc. +/* Copyright (C) 2009-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -18,8 +18,6 @@ #include "defs.h" #include "osabi.h" #include "amd64-tdep.h" -#include "solib.h" -#include "solib-target.h" #include "gdbtypes.h" #include "gdbcore.h" #include "regcache.h" @@ -651,7 +649,8 @@ amd64_windows_frame_decode_insns (struct frame_info *this_frame, ex_ui.CountOfCodes, ex_ui.FrameRegisterOffset); /* Check version. */ - if (PEX64_UWI_VERSION (ex_ui.Version_Flags) != 1) + if (PEX64_UWI_VERSION (ex_ui.Version_Flags) != 1 + && PEX64_UWI_VERSION (ex_ui.Version_Flags) != 2) return; if (j == 0 @@ -698,7 +697,17 @@ amd64_windows_frame_decode_insns (struct frame_info *this_frame, return; end_insns = &insns[codes_count * 2]; - for (p = insns; p < end_insns; p += 2) + p = insns; + + /* Skip opcodes 6 of version 2. This opcode is not documented. */ + if (PEX64_UWI_VERSION (ex_ui.Version_Flags) == 2) + { + for (; p < end_insns; p += 2) + if (PEX64_UNWCODE_CODE (p[1]) != 6) + break; + } + + for (; p < end_insns; p += 2) { int reg; @@ -1177,6 +1186,8 @@ amd64_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_init_abi (info, gdbarch); + windows_init_abi (info, gdbarch); + /* On Windows, "long"s are only 32bit. */ set_gdbarch_long_bit (gdbarch, 32); @@ -1187,14 +1198,9 @@ amd64_windows_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_skip_trampoline_code (gdbarch, amd64_windows_skip_trampoline_code); - set_gdbarch_iterate_over_objfiles_in_search_order - (gdbarch, windows_iterate_over_objfiles_in_search_order); - set_gdbarch_skip_prologue (gdbarch, amd64_windows_skip_prologue); set_gdbarch_auto_wide_charset (gdbarch, amd64_windows_auto_wide_charset); - - set_solib_ops (gdbarch, &solib_target_so_ops); } /* -Wmissing-prototypes */