Blame gdb/i386-windows-nat.c

Packit Service 706eca
/* Copyright (C) 2008-2018 Free Software Foundation, Inc.
Packit Service 706eca
Packit Service 706eca
   This file is part of GDB.
Packit Service 706eca
Packit Service 706eca
   This program is free software; you can redistribute it and/or modify
Packit Service 706eca
   it under the terms of the GNU General Public License as published by
Packit Service 706eca
   the Free Software Foundation; either version 3 of the License, or
Packit Service 706eca
   (at your option) any later version.
Packit Service 706eca
Packit Service 706eca
   This program is distributed in the hope that it will be useful,
Packit Service 706eca
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 706eca
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 706eca
   GNU General Public License for more details.
Packit Service 706eca
Packit Service 706eca
   You should have received a copy of the GNU General Public License
Packit Service 706eca
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
Packit Service 706eca
Packit Service 706eca
#include "defs.h"
Packit Service 706eca
#include "windows-nat.h"
Packit Service 706eca
#include "x86-nat.h"
Packit Service 706eca
#include "i386-tdep.h"
Packit Service 706eca
Packit Service 706eca
#include <windows.h>
Packit Service 706eca
Packit Service 706eca
#define context_offset(x) ((int)&(((CONTEXT *)NULL)->x))
Packit Service 706eca
static const int mappings[] =
Packit Service 706eca
{
Packit Service 706eca
  context_offset (Eax),
Packit Service 706eca
  context_offset (Ecx),
Packit Service 706eca
  context_offset (Edx),
Packit Service 706eca
  context_offset (Ebx),
Packit Service 706eca
  context_offset (Esp),
Packit Service 706eca
  context_offset (Ebp),
Packit Service 706eca
  context_offset (Esi),
Packit Service 706eca
  context_offset (Edi),
Packit Service 706eca
  context_offset (Eip),
Packit Service 706eca
  context_offset (EFlags),
Packit Service 706eca
  context_offset (SegCs),
Packit Service 706eca
  context_offset (SegSs),
Packit Service 706eca
  context_offset (SegDs),
Packit Service 706eca
  context_offset (SegEs),
Packit Service 706eca
  context_offset (SegFs),
Packit Service 706eca
  context_offset (SegGs),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[0 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[1 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[2 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[3 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[4 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[5 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[6 * 10]),
Packit Service 706eca
  context_offset (FloatSave.RegisterArea[7 * 10]),
Packit Service 706eca
  context_offset (FloatSave.ControlWord),
Packit Service 706eca
  context_offset (FloatSave.StatusWord),
Packit Service 706eca
  context_offset (FloatSave.TagWord),
Packit Service 706eca
  context_offset (FloatSave.ErrorSelector),
Packit Service 706eca
  context_offset (FloatSave.ErrorOffset),
Packit Service 706eca
  context_offset (FloatSave.DataSelector),
Packit Service 706eca
  context_offset (FloatSave.DataOffset),
Packit Service 706eca
  context_offset (FloatSave.ErrorSelector)
Packit Service 706eca
  /* XMM0-7 */ ,
Packit Service 706eca
  context_offset (ExtendedRegisters[10*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[11*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[12*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[13*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[14*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[15*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[16*16]),
Packit Service 706eca
  context_offset (ExtendedRegisters[17*16]),
Packit Service 706eca
  /* MXCSR */
Packit Service 706eca
  context_offset (ExtendedRegisters[24])
Packit Service 706eca
};
Packit Service 706eca
#undef context_offset
Packit Service 706eca
Packit Service 706eca
/* segment_register_p_ftype implementation for x86.  */
Packit Service 706eca
Packit Service 706eca
static int
Packit Service 706eca
i386_windows_segment_register_p (int regnum)
Packit Service 706eca
{
Packit Service 706eca
  return regnum >= I386_CS_REGNUM && regnum <= I386_GS_REGNUM;
Packit Service 706eca
}
Packit Service 706eca
Packit Service 706eca
void
Packit Service 706eca
_initialize_i386_windows_nat (void)
Packit Service 706eca
{
Packit Service 706eca
  windows_set_context_register_offsets (mappings);
Packit Service 706eca
  windows_set_segment_register_p (i386_windows_segment_register_p);
Packit Service 706eca
  x86_set_debug_register_length (4);
Packit Service 706eca
}