1 /* GNU/Linux/x86 specific low level interface, for the in-process
4 Copyright (C) 2010 Free Software Foundation, Inc.
6 This file is part of GDB.
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */
23 /* GDB register numbers. */
27 I386_EAX_REGNUM
, /* %eax */
28 I386_ECX_REGNUM
, /* %ecx */
29 I386_EDX_REGNUM
, /* %edx */
30 I386_EBX_REGNUM
, /* %ebx */
31 I386_ESP_REGNUM
, /* %esp */
32 I386_EBP_REGNUM
, /* %ebp */
33 I386_ESI_REGNUM
, /* %esi */
34 I386_EDI_REGNUM
, /* %edi */
35 I386_EIP_REGNUM
, /* %eip */
36 I386_EFLAGS_REGNUM
, /* %eflags */
37 I386_CS_REGNUM
, /* %cs */
38 I386_SS_REGNUM
, /* %ss */
39 I386_DS_REGNUM
, /* %ds */
40 I386_ES_REGNUM
, /* %es */
41 I386_FS_REGNUM
, /* %fs */
42 I386_GS_REGNUM
, /* %gs */
43 I386_ST0_REGNUM
/* %st(0) */
46 #define i386_num_regs 16
48 /* Defined in auto-generated file i386-linux.c. */
49 void init_registers_i386_linux (void);
68 /* Mapping between the general-purpose registers in jump tracepoint
69 format and GDB's register array layout. */
71 static const int i386_ft_collect_regmap
[] =
73 FT_CR_EAX
* 4, FT_CR_ECX
* 4, FT_CR_EDX
* 4, FT_CR_EBX
* 4,
74 FT_CR_UESP
* 4, FT_CR_EBP
* 4, FT_CR_ESI
* 4, FT_CR_EDI
* 4,
75 FT_CR_EIP
* 4, FT_CR_EFL
* 4, FT_CR_CS
* 4, FT_CR_SS
* 4,
76 FT_CR_DS
* 4, FT_CR_ES
* 4, FT_CR_FS
* 4, FT_CR_GS
* 4
80 supply_fast_tracepoint_registers (struct regcache
*regcache
,
81 const unsigned char *buf
)
85 for (i
= 0; i
< i386_num_regs
; i
++)
89 if (i
>= I386_CS_REGNUM
&& i
<= I386_GS_REGNUM
)
90 regval
= *(short *) (((char *) buf
) + i386_ft_collect_regmap
[i
]);
92 regval
= *(int *) (((char *) buf
) + i386_ft_collect_regmap
[i
]);
94 supply_register (regcache
, i
, ®val
);
98 /* This is only needed because reg-i386-linux-lib.o references it. We
99 may use it proper at some point. */
100 const char *gdbserver_xmltarget
;
103 initialize_low_tracepoint (void)
105 init_registers_i386_linux ();
This page took 0.032702 seconds and 4 git commands to generate.