* i386-tdep.c: Fix spelling mistakes.
[deliverable/binutils-gdb.git] / gdb / i386-tdep.c
1 /* Intel 386 target-dependent stuff.
2
3 Copyright 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996,
4 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software
5 Foundation, Inc.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330,
22 Boston, MA 02111-1307, USA. */
23
24 #include "defs.h"
25 #include "arch-utils.h"
26 #include "command.h"
27 #include "dummy-frame.h"
28 #include "dwarf2-frame.h"
29 #include "doublest.h"
30 #include "floatformat.h"
31 #include "frame.h"
32 #include "frame-base.h"
33 #include "frame-unwind.h"
34 #include "inferior.h"
35 #include "gdbcmd.h"
36 #include "gdbcore.h"
37 #include "objfiles.h"
38 #include "osabi.h"
39 #include "regcache.h"
40 #include "reggroups.h"
41 #include "regset.h"
42 #include "symfile.h"
43 #include "symtab.h"
44 #include "target.h"
45 #include "value.h"
46 #include "dis-asm.h"
47
48 #include "gdb_assert.h"
49 #include "gdb_string.h"
50
51 #include "i386-tdep.h"
52 #include "i387-tdep.h"
53
54 /* Register names. */
55
56 static char *i386_register_names[] =
57 {
58 "eax", "ecx", "edx", "ebx",
59 "esp", "ebp", "esi", "edi",
60 "eip", "eflags", "cs", "ss",
61 "ds", "es", "fs", "gs",
62 "st0", "st1", "st2", "st3",
63 "st4", "st5", "st6", "st7",
64 "fctrl", "fstat", "ftag", "fiseg",
65 "fioff", "foseg", "fooff", "fop",
66 "xmm0", "xmm1", "xmm2", "xmm3",
67 "xmm4", "xmm5", "xmm6", "xmm7",
68 "mxcsr"
69 };
70
71 static const int i386_num_register_names = ARRAY_SIZE (i386_register_names);
72
73 /* Register names for MMX pseudo-registers. */
74
75 static char *i386_mmx_names[] =
76 {
77 "mm0", "mm1", "mm2", "mm3",
78 "mm4", "mm5", "mm6", "mm7"
79 };
80
81 static const int i386_num_mmx_regs = ARRAY_SIZE (i386_mmx_names);
82
83 static int
84 i386_mmx_regnum_p (struct gdbarch *gdbarch, int regnum)
85 {
86 int mm0_regnum = gdbarch_tdep (gdbarch)->mm0_regnum;
87
88 if (mm0_regnum < 0)
89 return 0;
90
91 return (regnum >= mm0_regnum && regnum < mm0_regnum + i386_num_mmx_regs);
92 }
93
94 /* SSE register? */
95
96 static int
97 i386_sse_regnum_p (struct gdbarch *gdbarch, int regnum)
98 {
99 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
100
101 #define I387_ST0_REGNUM tdep->st0_regnum
102 #define I387_NUM_XMM_REGS tdep->num_xmm_regs
103
104 if (I387_NUM_XMM_REGS == 0)
105 return 0;
106
107 return (I387_XMM0_REGNUM <= regnum && regnum < I387_MXCSR_REGNUM);
108
109 #undef I387_ST0_REGNUM
110 #undef I387_NUM_XMM_REGS
111 }
112
113 static int
114 i386_mxcsr_regnum_p (struct gdbarch *gdbarch, int regnum)
115 {
116 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
117
118 #define I387_ST0_REGNUM tdep->st0_regnum
119 #define I387_NUM_XMM_REGS tdep->num_xmm_regs
120
121 if (I387_NUM_XMM_REGS == 0)
122 return 0;
123
124 return (regnum == I387_MXCSR_REGNUM);
125
126 #undef I387_ST0_REGNUM
127 #undef I387_NUM_XMM_REGS
128 }
129
130 #define I387_ST0_REGNUM (gdbarch_tdep (current_gdbarch)->st0_regnum)
131 #define I387_MM0_REGNUM (gdbarch_tdep (current_gdbarch)->mm0_regnum)
132 #define I387_NUM_XMM_REGS (gdbarch_tdep (current_gdbarch)->num_xmm_regs)
133
134 /* FP register? */
135
136 int
137 i386_fp_regnum_p (int regnum)
138 {
139 if (I387_ST0_REGNUM < 0)
140 return 0;
141
142 return (I387_ST0_REGNUM <= regnum && regnum < I387_FCTRL_REGNUM);
143 }
144
145 int
146 i386_fpc_regnum_p (int regnum)
147 {
148 if (I387_ST0_REGNUM < 0)
149 return 0;
150
151 return (I387_FCTRL_REGNUM <= regnum && regnum < I387_XMM0_REGNUM);
152 }
153
154 /* Return the name of register REG. */
155
156 const char *
157 i386_register_name (int reg)
158 {
159 if (i386_mmx_regnum_p (current_gdbarch, reg))
160 return i386_mmx_names[reg - I387_MM0_REGNUM];
161
162 if (reg >= 0 && reg < i386_num_register_names)
163 return i386_register_names[reg];
164
165 return NULL;
166 }
167
168 /* Convert a dbx register number REG to the appropriate register
169 number used by GDB. */
170
171 static int
172 i386_dbx_reg_to_regnum (int reg)
173 {
174 /* This implements what GCC calls the "default" register map
175 (dbx_register_map[]). */
176
177 if (reg >= 0 && reg <= 7)
178 {
179 /* General-purpose registers. The debug info calls %ebp
180 register 4, and %esp register 5. */
181 if (reg == 4)
182 return 5;
183 else if (reg == 5)
184 return 4;
185 else return reg;
186 }
187 else if (reg >= 12 && reg <= 19)
188 {
189 /* Floating-point registers. */
190 return reg - 12 + I387_ST0_REGNUM;
191 }
192 else if (reg >= 21 && reg <= 28)
193 {
194 /* SSE registers. */
195 return reg - 21 + I387_XMM0_REGNUM;
196 }
197 else if (reg >= 29 && reg <= 36)
198 {
199 /* MMX registers. */
200 return reg - 29 + I387_MM0_REGNUM;
201 }
202
203 /* This will hopefully provoke a warning. */
204 return NUM_REGS + NUM_PSEUDO_REGS;
205 }
206
207 /* Convert SVR4 register number REG to the appropriate register number
208 used by GDB. */
209
210 static int
211 i386_svr4_reg_to_regnum (int reg)
212 {
213 /* This implements the GCC register map that tries to be compatible
214 with the SVR4 C compiler for DWARF (svr4_dbx_register_map[]). */
215
216 /* The SVR4 register numbering includes %eip and %eflags, and
217 numbers the floating point registers differently. */
218 if (reg >= 0 && reg <= 9)
219 {
220 /* General-purpose registers. */
221 return reg;
222 }
223 else if (reg >= 11 && reg <= 18)
224 {
225 /* Floating-point registers. */
226 return reg - 11 + I387_ST0_REGNUM;
227 }
228 else if (reg >= 21)
229 {
230 /* The SSE and MMX registers have the same numbers as with dbx. */
231 return i386_dbx_reg_to_regnum (reg);
232 }
233
234 /* This will hopefully provoke a warning. */
235 return NUM_REGS + NUM_PSEUDO_REGS;
236 }
237
238 #undef I387_ST0_REGNUM
239 #undef I387_MM0_REGNUM
240 #undef I387_NUM_XMM_REGS
241 \f
242
243 /* This is the variable that is set with "set disassembly-flavor", and
244 its legitimate values. */
245 static const char att_flavor[] = "att";
246 static const char intel_flavor[] = "intel";
247 static const char *valid_flavors[] =
248 {
249 att_flavor,
250 intel_flavor,
251 NULL
252 };
253 static const char *disassembly_flavor = att_flavor;
254 \f
255
256 /* Use the program counter to determine the contents and size of a
257 breakpoint instruction. Return a pointer to a string of bytes that
258 encode a breakpoint instruction, store the length of the string in
259 *LEN and optionally adjust *PC to point to the correct memory
260 location for inserting the breakpoint.
261
262 On the i386 we have a single breakpoint that fits in a single byte
263 and can be inserted anywhere.
264
265 This function is 64-bit safe. */
266
267 static const unsigned char *
268 i386_breakpoint_from_pc (CORE_ADDR *pc, int *len)
269 {
270 static unsigned char break_insn[] = { 0xcc }; /* int 3 */
271
272 *len = sizeof (break_insn);
273 return break_insn;
274 }
275 \f
276 #ifdef I386_REGNO_TO_SYMMETRY
277 #error "The Sequent Symmetry is no longer supported."
278 #endif
279
280 /* According to the System V ABI, the registers %ebp, %ebx, %edi, %esi
281 and %esp "belong" to the calling function. Therefore these
282 registers should be saved if they're going to be modified. */
283
284 /* The maximum number of saved registers. This should include all
285 registers mentioned above, and %eip. */
286 #define I386_NUM_SAVED_REGS I386_NUM_GREGS
287
288 struct i386_frame_cache
289 {
290 /* Base address. */
291 CORE_ADDR base;
292 CORE_ADDR sp_offset;
293 CORE_ADDR pc;
294
295 /* Saved registers. */
296 CORE_ADDR saved_regs[I386_NUM_SAVED_REGS];
297 CORE_ADDR saved_sp;
298 int pc_in_eax;
299
300 /* Stack space reserved for local variables. */
301 long locals;
302 };
303
304 /* Allocate and initialize a frame cache. */
305
306 static struct i386_frame_cache *
307 i386_alloc_frame_cache (void)
308 {
309 struct i386_frame_cache *cache;
310 int i;
311
312 cache = FRAME_OBSTACK_ZALLOC (struct i386_frame_cache);
313
314 /* Base address. */
315 cache->base = 0;
316 cache->sp_offset = -4;
317 cache->pc = 0;
318
319 /* Saved registers. We initialize these to -1 since zero is a valid
320 offset (that's where %ebp is supposed to be stored). */
321 for (i = 0; i < I386_NUM_SAVED_REGS; i++)
322 cache->saved_regs[i] = -1;
323 cache->saved_sp = 0;
324 cache->pc_in_eax = 0;
325
326 /* Frameless until proven otherwise. */
327 cache->locals = -1;
328
329 return cache;
330 }
331
332 /* If the instruction at PC is a jump, return the address of its
333 target. Otherwise, return PC. */
334
335 static CORE_ADDR
336 i386_follow_jump (CORE_ADDR pc)
337 {
338 unsigned char op;
339 long delta = 0;
340 int data16 = 0;
341
342 op = read_memory_unsigned_integer (pc, 1);
343 if (op == 0x66)
344 {
345 data16 = 1;
346 op = read_memory_unsigned_integer (pc + 1, 1);
347 }
348
349 switch (op)
350 {
351 case 0xe9:
352 /* Relative jump: if data16 == 0, disp32, else disp16. */
353 if (data16)
354 {
355 delta = read_memory_integer (pc + 2, 2);
356
357 /* Include the size of the jmp instruction (including the
358 0x66 prefix). */
359 delta += 4;
360 }
361 else
362 {
363 delta = read_memory_integer (pc + 1, 4);
364
365 /* Include the size of the jmp instruction. */
366 delta += 5;
367 }
368 break;
369 case 0xeb:
370 /* Relative jump, disp8 (ignore data16). */
371 delta = read_memory_integer (pc + data16 + 1, 1);
372
373 delta += data16 + 2;
374 break;
375 }
376
377 return pc + delta;
378 }
379
380 /* Check whether PC points at a prologue for a function returning a
381 structure or union. If so, it updates CACHE and returns the
382 address of the first instruction after the code sequence that
383 removes the "hidden" argument from the stack or CURRENT_PC,
384 whichever is smaller. Otherwise, return PC. */
385
386 static CORE_ADDR
387 i386_analyze_struct_return (CORE_ADDR pc, CORE_ADDR current_pc,
388 struct i386_frame_cache *cache)
389 {
390 /* Functions that return a structure or union start with:
391
392 popl %eax 0x58
393 xchgl %eax, (%esp) 0x87 0x04 0x24
394 or xchgl %eax, 0(%esp) 0x87 0x44 0x24 0x00
395
396 (the System V compiler puts out the second `xchg' instruction,
397 and the assembler doesn't try to optimize it, so the 'sib' form
398 gets generated). This sequence is used to get the address of the
399 return buffer for a function that returns a structure. */
400 static unsigned char proto1[3] = { 0x87, 0x04, 0x24 };
401 static unsigned char proto2[4] = { 0x87, 0x44, 0x24, 0x00 };
402 unsigned char buf[4];
403 unsigned char op;
404
405 if (current_pc <= pc)
406 return pc;
407
408 op = read_memory_unsigned_integer (pc, 1);
409
410 if (op != 0x58) /* popl %eax */
411 return pc;
412
413 read_memory (pc + 1, buf, 4);
414 if (memcmp (buf, proto1, 3) != 0 && memcmp (buf, proto2, 4) != 0)
415 return pc;
416
417 if (current_pc == pc)
418 {
419 cache->sp_offset += 4;
420 return current_pc;
421 }
422
423 if (current_pc == pc + 1)
424 {
425 cache->pc_in_eax = 1;
426 return current_pc;
427 }
428
429 if (buf[1] == proto1[1])
430 return pc + 4;
431 else
432 return pc + 5;
433 }
434
435 static CORE_ADDR
436 i386_skip_probe (CORE_ADDR pc)
437 {
438 /* A function may start with
439
440 pushl constant
441 call _probe
442 addl $4, %esp
443
444 followed by
445
446 pushl %ebp
447
448 etc. */
449 unsigned char buf[8];
450 unsigned char op;
451
452 op = read_memory_unsigned_integer (pc, 1);
453
454 if (op == 0x68 || op == 0x6a)
455 {
456 int delta;
457
458 /* Skip past the `pushl' instruction; it has either a one-byte or a
459 four-byte operand, depending on the opcode. */
460 if (op == 0x68)
461 delta = 5;
462 else
463 delta = 2;
464
465 /* Read the following 8 bytes, which should be `call _probe' (6
466 bytes) followed by `addl $4,%esp' (2 bytes). */
467 read_memory (pc + delta, buf, sizeof (buf));
468 if (buf[0] == 0xe8 && buf[6] == 0xc4 && buf[7] == 0x4)
469 pc += delta + sizeof (buf);
470 }
471
472 return pc;
473 }
474
475 /* Check whether PC points at a code that sets up a new stack frame.
476 If so, it updates CACHE and returns the address of the first
477 instruction after the sequence that sets removes the "hidden"
478 argument from the stack or CURRENT_PC, whichever is smaller.
479 Otherwise, return PC. */
480
481 static CORE_ADDR
482 i386_analyze_frame_setup (CORE_ADDR pc, CORE_ADDR current_pc,
483 struct i386_frame_cache *cache)
484 {
485 unsigned char op;
486 int skip = 0;
487
488 if (current_pc <= pc)
489 return current_pc;
490
491 op = read_memory_unsigned_integer (pc, 1);
492
493 if (op == 0x55) /* pushl %ebp */
494 {
495 /* Take into account that we've executed the `pushl %ebp' that
496 starts this instruction sequence. */
497 cache->saved_regs[I386_EBP_REGNUM] = 0;
498 cache->sp_offset += 4;
499
500 /* If that's all, return now. */
501 if (current_pc <= pc + 1)
502 return current_pc;
503
504 op = read_memory_unsigned_integer (pc + 1, 1);
505
506 /* Check for some special instructions that might be migrated
507 by GCC into the prologue. We check for
508
509 xorl %ebx, %ebx
510 xorl %ecx, %ecx
511 xorl %edx, %edx
512 xorl %eax, %eax
513
514 and the equivalent
515
516 subl %ebx, %ebx
517 subl %ecx, %ecx
518 subl %edx, %edx
519 subl %eax, %eax
520
521 Because of the symmetry, there are actually two ways to
522 encode these instructions; with opcode bytes 0x29 and 0x2b
523 for `subl' and opcode bytes 0x31 and 0x33 for `xorl'.
524
525 Make sure we only skip these instructions if we later see the
526 `movl %esp, %ebp' that actually sets up the frame. */
527 while (op == 0x29 || op == 0x2b || op == 0x31 || op == 0x33)
528 {
529 op = read_memory_unsigned_integer (pc + skip + 2, 1);
530 switch (op)
531 {
532 case 0xdb: /* %ebx */
533 case 0xc9: /* %ecx */
534 case 0xd2: /* %edx */
535 case 0xc0: /* %eax */
536 skip += 2;
537 break;
538 default:
539 return pc + 1;
540 }
541
542 op = read_memory_unsigned_integer (pc + skip + 1, 1);
543 }
544
545 /* Check for `movl %esp, %ebp' -- can be written in two ways. */
546 switch (op)
547 {
548 case 0x8b:
549 if (read_memory_unsigned_integer (pc + skip + 2, 1) != 0xec)
550 return pc + 1;
551 break;
552 case 0x89:
553 if (read_memory_unsigned_integer (pc + skip + 2, 1) != 0xe5)
554 return pc + 1;
555 break;
556 default:
557 return pc + 1;
558 }
559
560 /* OK, we actually have a frame. We just don't know how large
561 it is yet. Set its size to zero. We'll adjust it if
562 necessary. We also now commit to skipping the special
563 instructions mentioned before. */
564 cache->locals = 0;
565 pc += skip;
566
567 /* If that's all, return now. */
568 if (current_pc <= pc + 3)
569 return current_pc;
570
571 /* Check for stack adjustment
572
573 subl $XXX, %esp
574
575 NOTE: You can't subtract a 16-bit immediate from a 32-bit
576 reg, so we don't have to worry about a data16 prefix. */
577 op = read_memory_unsigned_integer (pc + 3, 1);
578 if (op == 0x83)
579 {
580 /* `subl' with 8-bit immediate. */
581 if (read_memory_unsigned_integer (pc + 4, 1) != 0xec)
582 /* Some instruction starting with 0x83 other than `subl'. */
583 return pc + 3;
584
585 /* `subl' with signed byte immediate (though it wouldn't make
586 sense to be negative). */
587 cache->locals = read_memory_integer (pc + 5, 1);
588 return pc + 6;
589 }
590 else if (op == 0x81)
591 {
592 /* Maybe it is `subl' with a 32-bit immediate. */
593 if (read_memory_unsigned_integer (pc + 4, 1) != 0xec)
594 /* Some instruction starting with 0x81 other than `subl'. */
595 return pc + 3;
596
597 /* It is `subl' with a 32-bit immediate. */
598 cache->locals = read_memory_integer (pc + 5, 4);
599 return pc + 9;
600 }
601 else
602 {
603 /* Some instruction other than `subl'. */
604 return pc + 3;
605 }
606 }
607 else if (op == 0xc8) /* enter $XXX */
608 {
609 cache->locals = read_memory_unsigned_integer (pc + 1, 2);
610 return pc + 4;
611 }
612
613 return pc;
614 }
615
616 /* Check whether PC points at code that saves registers on the stack.
617 If so, it updates CACHE and returns the address of the first
618 instruction after the register saves or CURRENT_PC, whichever is
619 smaller. Otherwise, return PC. */
620
621 static CORE_ADDR
622 i386_analyze_register_saves (CORE_ADDR pc, CORE_ADDR current_pc,
623 struct i386_frame_cache *cache)
624 {
625 CORE_ADDR offset = 0;
626 unsigned char op;
627 int i;
628
629 if (cache->locals > 0)
630 offset -= cache->locals;
631 for (i = 0; i < 8 && pc < current_pc; i++)
632 {
633 op = read_memory_unsigned_integer (pc, 1);
634 if (op < 0x50 || op > 0x57)
635 break;
636
637 offset -= 4;
638 cache->saved_regs[op - 0x50] = offset;
639 cache->sp_offset += 4;
640 pc++;
641 }
642
643 return pc;
644 }
645
646 /* Do a full analysis of the prologue at PC and update CACHE
647 accordingly. Bail out early if CURRENT_PC is reached. Return the
648 address where the analysis stopped.
649
650 We handle these cases:
651
652 The startup sequence can be at the start of the function, or the
653 function can start with a branch to startup code at the end.
654
655 %ebp can be set up with either the 'enter' instruction, or "pushl
656 %ebp, movl %esp, %ebp" (`enter' is too slow to be useful, but was
657 once used in the System V compiler).
658
659 Local space is allocated just below the saved %ebp by either the
660 'enter' instruction, or by "subl $<size>, %esp". 'enter' has a
661 16-bit unsigned argument for space to allocate, and the 'addl'
662 instruction could have either a signed byte, or 32-bit immediate.
663
664 Next, the registers used by this function are pushed. With the
665 System V compiler they will always be in the order: %edi, %esi,
666 %ebx (and sometimes a harmless bug causes it to also save but not
667 restore %eax); however, the code below is willing to see the pushes
668 in any order, and will handle up to 8 of them.
669
670 If the setup sequence is at the end of the function, then the next
671 instruction will be a branch back to the start. */
672
673 static CORE_ADDR
674 i386_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
675 struct i386_frame_cache *cache)
676 {
677 pc = i386_follow_jump (pc);
678 pc = i386_analyze_struct_return (pc, current_pc, cache);
679 pc = i386_skip_probe (pc);
680 pc = i386_analyze_frame_setup (pc, current_pc, cache);
681 return i386_analyze_register_saves (pc, current_pc, cache);
682 }
683
684 /* Return PC of first real instruction. */
685
686 static CORE_ADDR
687 i386_skip_prologue (CORE_ADDR start_pc)
688 {
689 static unsigned char pic_pat[6] =
690 {
691 0xe8, 0, 0, 0, 0, /* call 0x0 */
692 0x5b, /* popl %ebx */
693 };
694 struct i386_frame_cache cache;
695 CORE_ADDR pc;
696 unsigned char op;
697 int i;
698
699 cache.locals = -1;
700 pc = i386_analyze_prologue (start_pc, 0xffffffff, &cache);
701 if (cache.locals < 0)
702 return start_pc;
703
704 /* Found valid frame setup. */
705
706 /* The native cc on SVR4 in -K PIC mode inserts the following code
707 to get the address of the global offset table (GOT) into register
708 %ebx:
709
710 call 0x0
711 popl %ebx
712 movl %ebx,x(%ebp) (optional)
713 addl y,%ebx
714
715 This code is with the rest of the prologue (at the end of the
716 function), so we have to skip it to get to the first real
717 instruction at the start of the function. */
718
719 for (i = 0; i < 6; i++)
720 {
721 op = read_memory_unsigned_integer (pc + i, 1);
722 if (pic_pat[i] != op)
723 break;
724 }
725 if (i == 6)
726 {
727 int delta = 6;
728
729 op = read_memory_unsigned_integer (pc + delta, 1);
730
731 if (op == 0x89) /* movl %ebx, x(%ebp) */
732 {
733 op = read_memory_unsigned_integer (pc + delta + 1, 1);
734
735 if (op == 0x5d) /* One byte offset from %ebp. */
736 delta += 3;
737 else if (op == 0x9d) /* Four byte offset from %ebp. */
738 delta += 6;
739 else /* Unexpected instruction. */
740 delta = 0;
741
742 op = read_memory_unsigned_integer (pc + delta, 1);
743 }
744
745 /* addl y,%ebx */
746 if (delta > 0 && op == 0x81
747 && read_memory_unsigned_integer (pc + delta + 1, 1) == 0xc3);
748 {
749 pc += delta + 6;
750 }
751 }
752
753 return i386_follow_jump (pc);
754 }
755
756 /* This function is 64-bit safe. */
757
758 static CORE_ADDR
759 i386_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
760 {
761 char buf[8];
762
763 frame_unwind_register (next_frame, PC_REGNUM, buf);
764 return extract_typed_address (buf, builtin_type_void_func_ptr);
765 }
766 \f
767
768 /* Normal frames. */
769
770 static struct i386_frame_cache *
771 i386_frame_cache (struct frame_info *next_frame, void **this_cache)
772 {
773 struct i386_frame_cache *cache;
774 char buf[4];
775 int i;
776
777 if (*this_cache)
778 return *this_cache;
779
780 cache = i386_alloc_frame_cache ();
781 *this_cache = cache;
782
783 /* In principle, for normal frames, %ebp holds the frame pointer,
784 which holds the base address for the current stack frame.
785 However, for functions that don't need it, the frame pointer is
786 optional. For these "frameless" functions the frame pointer is
787 actually the frame pointer of the calling frame. Signal
788 trampolines are just a special case of a "frameless" function.
789 They (usually) share their frame pointer with the frame that was
790 in progress when the signal occurred. */
791
792 frame_unwind_register (next_frame, I386_EBP_REGNUM, buf);
793 cache->base = extract_unsigned_integer (buf, 4);
794 if (cache->base == 0)
795 return cache;
796
797 /* For normal frames, %eip is stored at 4(%ebp). */
798 cache->saved_regs[I386_EIP_REGNUM] = 4;
799
800 cache->pc = frame_func_unwind (next_frame);
801 if (cache->pc != 0)
802 i386_analyze_prologue (cache->pc, frame_pc_unwind (next_frame), cache);
803
804 if (cache->locals < 0)
805 {
806 /* We didn't find a valid frame, which means that CACHE->base
807 currently holds the frame pointer for our calling frame. If
808 we're at the start of a function, or somewhere half-way its
809 prologue, the function's frame probably hasn't been fully
810 setup yet. Try to reconstruct the base address for the stack
811 frame by looking at the stack pointer. For truly "frameless"
812 functions this might work too. */
813
814 frame_unwind_register (next_frame, I386_ESP_REGNUM, buf);
815 cache->base = extract_unsigned_integer (buf, 4) + cache->sp_offset;
816 }
817
818 /* Now that we have the base address for the stack frame we can
819 calculate the value of %esp in the calling frame. */
820 cache->saved_sp = cache->base + 8;
821
822 /* Adjust all the saved registers such that they contain addresses
823 instead of offsets. */
824 for (i = 0; i < I386_NUM_SAVED_REGS; i++)
825 if (cache->saved_regs[i] != -1)
826 cache->saved_regs[i] += cache->base;
827
828 return cache;
829 }
830
831 static void
832 i386_frame_this_id (struct frame_info *next_frame, void **this_cache,
833 struct frame_id *this_id)
834 {
835 struct i386_frame_cache *cache = i386_frame_cache (next_frame, this_cache);
836
837 /* This marks the outermost frame. */
838 if (cache->base == 0)
839 return;
840
841 /* See the end of i386_push_dummy_call. */
842 (*this_id) = frame_id_build (cache->base + 8, cache->pc);
843 }
844
845 static void
846 i386_frame_prev_register (struct frame_info *next_frame, void **this_cache,
847 int regnum, int *optimizedp,
848 enum lval_type *lvalp, CORE_ADDR *addrp,
849 int *realnump, void *valuep)
850 {
851 struct i386_frame_cache *cache = i386_frame_cache (next_frame, this_cache);
852
853 gdb_assert (regnum >= 0);
854
855 /* The System V ABI says that:
856
857 "The flags register contains the system flags, such as the
858 direction flag and the carry flag. The direction flag must be
859 set to the forward (that is, zero) direction before entry and
860 upon exit from a function. Other user flags have no specified
861 role in the standard calling sequence and are not preserved."
862
863 To guarantee the "upon exit" part of that statement we fake a
864 saved flags register that has its direction flag cleared.
865
866 Note that GCC doesn't seem to rely on the fact that the direction
867 flag is cleared after a function return; it always explicitly
868 clears the flag before operations where it matters.
869
870 FIXME: kettenis/20030316: I'm not quite sure whether this is the
871 right thing to do. The way we fake the flags register here makes
872 it impossible to change it. */
873
874 if (regnum == I386_EFLAGS_REGNUM)
875 {
876 *optimizedp = 0;
877 *lvalp = not_lval;
878 *addrp = 0;
879 *realnump = -1;
880 if (valuep)
881 {
882 ULONGEST val;
883
884 /* Clear the direction flag. */
885 val = frame_unwind_register_unsigned (next_frame,
886 I386_EFLAGS_REGNUM);
887 val &= ~(1 << 10);
888 store_unsigned_integer (valuep, 4, val);
889 }
890
891 return;
892 }
893
894 if (regnum == I386_EIP_REGNUM && cache->pc_in_eax)
895 {
896 frame_register_unwind (next_frame, I386_EAX_REGNUM,
897 optimizedp, lvalp, addrp, realnump, valuep);
898 return;
899 }
900
901 if (regnum == I386_ESP_REGNUM && cache->saved_sp)
902 {
903 *optimizedp = 0;
904 *lvalp = not_lval;
905 *addrp = 0;
906 *realnump = -1;
907 if (valuep)
908 {
909 /* Store the value. */
910 store_unsigned_integer (valuep, 4, cache->saved_sp);
911 }
912 return;
913 }
914
915 if (regnum < I386_NUM_SAVED_REGS && cache->saved_regs[regnum] != -1)
916 {
917 *optimizedp = 0;
918 *lvalp = lval_memory;
919 *addrp = cache->saved_regs[regnum];
920 *realnump = -1;
921 if (valuep)
922 {
923 /* Read the value in from memory. */
924 read_memory (*addrp, valuep,
925 register_size (current_gdbarch, regnum));
926 }
927 return;
928 }
929
930 frame_register_unwind (next_frame, regnum,
931 optimizedp, lvalp, addrp, realnump, valuep);
932 }
933
934 static const struct frame_unwind i386_frame_unwind =
935 {
936 NORMAL_FRAME,
937 i386_frame_this_id,
938 i386_frame_prev_register
939 };
940
941 static const struct frame_unwind *
942 i386_frame_sniffer (struct frame_info *next_frame)
943 {
944 return &i386_frame_unwind;
945 }
946 \f
947
948 /* Signal trampolines. */
949
950 static struct i386_frame_cache *
951 i386_sigtramp_frame_cache (struct frame_info *next_frame, void **this_cache)
952 {
953 struct i386_frame_cache *cache;
954 struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
955 CORE_ADDR addr;
956 char buf[4];
957
958 if (*this_cache)
959 return *this_cache;
960
961 cache = i386_alloc_frame_cache ();
962
963 frame_unwind_register (next_frame, I386_ESP_REGNUM, buf);
964 cache->base = extract_unsigned_integer (buf, 4) - 4;
965
966 addr = tdep->sigcontext_addr (next_frame);
967 if (tdep->sc_reg_offset)
968 {
969 int i;
970
971 gdb_assert (tdep->sc_num_regs <= I386_NUM_SAVED_REGS);
972
973 for (i = 0; i < tdep->sc_num_regs; i++)
974 if (tdep->sc_reg_offset[i] != -1)
975 cache->saved_regs[i] = addr + tdep->sc_reg_offset[i];
976 }
977 else
978 {
979 cache->saved_regs[I386_EIP_REGNUM] = addr + tdep->sc_pc_offset;
980 cache->saved_regs[I386_ESP_REGNUM] = addr + tdep->sc_sp_offset;
981 }
982
983 *this_cache = cache;
984 return cache;
985 }
986
987 static void
988 i386_sigtramp_frame_this_id (struct frame_info *next_frame, void **this_cache,
989 struct frame_id *this_id)
990 {
991 struct i386_frame_cache *cache =
992 i386_sigtramp_frame_cache (next_frame, this_cache);
993
994 /* See the end of i386_push_dummy_call. */
995 (*this_id) = frame_id_build (cache->base + 8, frame_pc_unwind (next_frame));
996 }
997
998 static void
999 i386_sigtramp_frame_prev_register (struct frame_info *next_frame,
1000 void **this_cache,
1001 int regnum, int *optimizedp,
1002 enum lval_type *lvalp, CORE_ADDR *addrp,
1003 int *realnump, void *valuep)
1004 {
1005 /* Make sure we've initialized the cache. */
1006 i386_sigtramp_frame_cache (next_frame, this_cache);
1007
1008 i386_frame_prev_register (next_frame, this_cache, regnum,
1009 optimizedp, lvalp, addrp, realnump, valuep);
1010 }
1011
1012 static const struct frame_unwind i386_sigtramp_frame_unwind =
1013 {
1014 SIGTRAMP_FRAME,
1015 i386_sigtramp_frame_this_id,
1016 i386_sigtramp_frame_prev_register
1017 };
1018
1019 static const struct frame_unwind *
1020 i386_sigtramp_frame_sniffer (struct frame_info *next_frame)
1021 {
1022 struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (next_frame));
1023
1024 /* We shouldn't even bother if we don't have a sigcontext_addr
1025 handler. */
1026 if (tdep->sigcontext_addr == NULL)
1027 return NULL;
1028
1029 if (tdep->sigtramp_p != NULL)
1030 {
1031 if (tdep->sigtramp_p (next_frame))
1032 return &i386_sigtramp_frame_unwind;
1033 }
1034
1035 if (tdep->sigtramp_start != 0)
1036 {
1037 CORE_ADDR pc = frame_pc_unwind (next_frame);
1038
1039 gdb_assert (tdep->sigtramp_end != 0);
1040 if (pc >= tdep->sigtramp_start && pc < tdep->sigtramp_end)
1041 return &i386_sigtramp_frame_unwind;
1042 }
1043
1044 return NULL;
1045 }
1046 \f
1047
1048 static CORE_ADDR
1049 i386_frame_base_address (struct frame_info *next_frame, void **this_cache)
1050 {
1051 struct i386_frame_cache *cache = i386_frame_cache (next_frame, this_cache);
1052
1053 return cache->base;
1054 }
1055
1056 static const struct frame_base i386_frame_base =
1057 {
1058 &i386_frame_unwind,
1059 i386_frame_base_address,
1060 i386_frame_base_address,
1061 i386_frame_base_address
1062 };
1063
1064 static struct frame_id
1065 i386_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
1066 {
1067 char buf[4];
1068 CORE_ADDR fp;
1069
1070 frame_unwind_register (next_frame, I386_EBP_REGNUM, buf);
1071 fp = extract_unsigned_integer (buf, 4);
1072
1073 /* See the end of i386_push_dummy_call. */
1074 return frame_id_build (fp + 8, frame_pc_unwind (next_frame));
1075 }
1076 \f
1077
1078 /* Figure out where the longjmp will land. Slurp the args out of the
1079 stack. We expect the first arg to be a pointer to the jmp_buf
1080 structure from which we extract the address that we will land at.
1081 This address is copied into PC. This routine returns non-zero on
1082 success.
1083
1084 This function is 64-bit safe. */
1085
1086 static int
1087 i386_get_longjmp_target (CORE_ADDR *pc)
1088 {
1089 char buf[8];
1090 CORE_ADDR sp, jb_addr;
1091 int jb_pc_offset = gdbarch_tdep (current_gdbarch)->jb_pc_offset;
1092 int len = TYPE_LENGTH (builtin_type_void_func_ptr);
1093
1094 /* If JB_PC_OFFSET is -1, we have no way to find out where the
1095 longjmp will land. */
1096 if (jb_pc_offset == -1)
1097 return 0;
1098
1099 /* Don't use I386_ESP_REGNUM here, since this function is also used
1100 for AMD64. */
1101 regcache_cooked_read (current_regcache, SP_REGNUM, buf);
1102 sp = extract_typed_address (buf, builtin_type_void_data_ptr);
1103 if (target_read_memory (sp + len, buf, len))
1104 return 0;
1105
1106 jb_addr = extract_typed_address (buf, builtin_type_void_data_ptr);
1107 if (target_read_memory (jb_addr + jb_pc_offset, buf, len))
1108 return 0;
1109
1110 *pc = extract_typed_address (buf, builtin_type_void_func_ptr);
1111 return 1;
1112 }
1113 \f
1114
1115 static CORE_ADDR
1116 i386_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
1117 struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
1118 struct value **args, CORE_ADDR sp, int struct_return,
1119 CORE_ADDR struct_addr)
1120 {
1121 char buf[4];
1122 int i;
1123
1124 /* Push arguments in reverse order. */
1125 for (i = nargs - 1; i >= 0; i--)
1126 {
1127 int len = TYPE_LENGTH (VALUE_ENCLOSING_TYPE (args[i]));
1128
1129 /* The System V ABI says that:
1130
1131 "An argument's size is increased, if necessary, to make it a
1132 multiple of [32-bit] words. This may require tail padding,
1133 depending on the size of the argument."
1134
1135 This makes sure the stack says word-aligned. */
1136 sp -= (len + 3) & ~3;
1137 write_memory (sp, VALUE_CONTENTS_ALL (args[i]), len);
1138 }
1139
1140 /* Push value address. */
1141 if (struct_return)
1142 {
1143 sp -= 4;
1144 store_unsigned_integer (buf, 4, struct_addr);
1145 write_memory (sp, buf, 4);
1146 }
1147
1148 /* Store return address. */
1149 sp -= 4;
1150 store_unsigned_integer (buf, 4, bp_addr);
1151 write_memory (sp, buf, 4);
1152
1153 /* Finally, update the stack pointer... */
1154 store_unsigned_integer (buf, 4, sp);
1155 regcache_cooked_write (regcache, I386_ESP_REGNUM, buf);
1156
1157 /* ...and fake a frame pointer. */
1158 regcache_cooked_write (regcache, I386_EBP_REGNUM, buf);
1159
1160 /* MarkK wrote: This "+ 8" is all over the place:
1161 (i386_frame_this_id, i386_sigtramp_frame_this_id,
1162 i386_unwind_dummy_id). It's there, since all frame unwinders for
1163 a given target have to agree (within a certain margin) on the
1164 definition of the stack address of a frame. Otherwise
1165 frame_id_inner() won't work correctly. Since DWARF2/GCC uses the
1166 stack address *before* the function call as a frame's CFA. On
1167 the i386, when %ebp is used as a frame pointer, the offset
1168 between the contents %ebp and the CFA as defined by GCC. */
1169 return sp + 8;
1170 }
1171
1172 /* These registers are used for returning integers (and on some
1173 targets also for returning `struct' and `union' values when their
1174 size and alignment match an integer type). */
1175 #define LOW_RETURN_REGNUM I386_EAX_REGNUM /* %eax */
1176 #define HIGH_RETURN_REGNUM I386_EDX_REGNUM /* %edx */
1177
1178 /* Read, for architecture GDBARCH, a function return value of TYPE
1179 from REGCACHE, and copy that into VALBUF. */
1180
1181 static void
1182 i386_extract_return_value (struct gdbarch *gdbarch, struct type *type,
1183 struct regcache *regcache, void *valbuf)
1184 {
1185 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1186 int len = TYPE_LENGTH (type);
1187 char buf[I386_MAX_REGISTER_SIZE];
1188
1189 if (TYPE_CODE (type) == TYPE_CODE_FLT)
1190 {
1191 if (tdep->st0_regnum < 0)
1192 {
1193 warning ("Cannot find floating-point return value.");
1194 memset (valbuf, 0, len);
1195 return;
1196 }
1197
1198 /* Floating-point return values can be found in %st(0). Convert
1199 its contents to the desired type. This is probably not
1200 exactly how it would happen on the target itself, but it is
1201 the best we can do. */
1202 regcache_raw_read (regcache, I386_ST0_REGNUM, buf);
1203 convert_typed_floating (buf, builtin_type_i387_ext, valbuf, type);
1204 }
1205 else
1206 {
1207 int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
1208 int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
1209
1210 if (len <= low_size)
1211 {
1212 regcache_raw_read (regcache, LOW_RETURN_REGNUM, buf);
1213 memcpy (valbuf, buf, len);
1214 }
1215 else if (len <= (low_size + high_size))
1216 {
1217 regcache_raw_read (regcache, LOW_RETURN_REGNUM, buf);
1218 memcpy (valbuf, buf, low_size);
1219 regcache_raw_read (regcache, HIGH_RETURN_REGNUM, buf);
1220 memcpy ((char *) valbuf + low_size, buf, len - low_size);
1221 }
1222 else
1223 internal_error (__FILE__, __LINE__,
1224 "Cannot extract return value of %d bytes long.", len);
1225 }
1226 }
1227
1228 /* Write, for architecture GDBARCH, a function return value of TYPE
1229 from VALBUF into REGCACHE. */
1230
1231 static void
1232 i386_store_return_value (struct gdbarch *gdbarch, struct type *type,
1233 struct regcache *regcache, const void *valbuf)
1234 {
1235 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1236 int len = TYPE_LENGTH (type);
1237
1238 /* Define I387_ST0_REGNUM such that we use the proper definitions
1239 for the architecture. */
1240 #define I387_ST0_REGNUM I386_ST0_REGNUM
1241
1242 if (TYPE_CODE (type) == TYPE_CODE_FLT)
1243 {
1244 ULONGEST fstat;
1245 char buf[I386_MAX_REGISTER_SIZE];
1246
1247 if (tdep->st0_regnum < 0)
1248 {
1249 warning ("Cannot set floating-point return value.");
1250 return;
1251 }
1252
1253 /* Returning floating-point values is a bit tricky. Apart from
1254 storing the return value in %st(0), we have to simulate the
1255 state of the FPU at function return point. */
1256
1257 /* Convert the value found in VALBUF to the extended
1258 floating-point format used by the FPU. This is probably
1259 not exactly how it would happen on the target itself, but
1260 it is the best we can do. */
1261 convert_typed_floating (valbuf, type, buf, builtin_type_i387_ext);
1262 regcache_raw_write (regcache, I386_ST0_REGNUM, buf);
1263
1264 /* Set the top of the floating-point register stack to 7. The
1265 actual value doesn't really matter, but 7 is what a normal
1266 function return would end up with if the program started out
1267 with a freshly initialized FPU. */
1268 regcache_raw_read_unsigned (regcache, I387_FSTAT_REGNUM, &fstat);
1269 fstat |= (7 << 11);
1270 regcache_raw_write_unsigned (regcache, I387_FSTAT_REGNUM, fstat);
1271
1272 /* Mark %st(1) through %st(7) as empty. Since we set the top of
1273 the floating-point register stack to 7, the appropriate value
1274 for the tag word is 0x3fff. */
1275 regcache_raw_write_unsigned (regcache, I387_FTAG_REGNUM, 0x3fff);
1276 }
1277 else
1278 {
1279 int low_size = register_size (current_gdbarch, LOW_RETURN_REGNUM);
1280 int high_size = register_size (current_gdbarch, HIGH_RETURN_REGNUM);
1281
1282 if (len <= low_size)
1283 regcache_raw_write_part (regcache, LOW_RETURN_REGNUM, 0, len, valbuf);
1284 else if (len <= (low_size + high_size))
1285 {
1286 regcache_raw_write (regcache, LOW_RETURN_REGNUM, valbuf);
1287 regcache_raw_write_part (regcache, HIGH_RETURN_REGNUM, 0,
1288 len - low_size, (char *) valbuf + low_size);
1289 }
1290 else
1291 internal_error (__FILE__, __LINE__,
1292 "Cannot store return value of %d bytes long.", len);
1293 }
1294
1295 #undef I387_ST0_REGNUM
1296 }
1297 \f
1298
1299 /* This is the variable that is set with "set struct-convention", and
1300 its legitimate values. */
1301 static const char default_struct_convention[] = "default";
1302 static const char pcc_struct_convention[] = "pcc";
1303 static const char reg_struct_convention[] = "reg";
1304 static const char *valid_conventions[] =
1305 {
1306 default_struct_convention,
1307 pcc_struct_convention,
1308 reg_struct_convention,
1309 NULL
1310 };
1311 static const char *struct_convention = default_struct_convention;
1312
1313 /* Return non-zero if TYPE, which is assumed to be a structure or
1314 union type, should be returned in registers for architecture
1315 GDBARCH. */
1316
1317 static int
1318 i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
1319 {
1320 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1321 enum type_code code = TYPE_CODE (type);
1322 int len = TYPE_LENGTH (type);
1323
1324 gdb_assert (code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION);
1325
1326 if (struct_convention == pcc_struct_convention
1327 || (struct_convention == default_struct_convention
1328 && tdep->struct_return == pcc_struct_return))
1329 return 0;
1330
1331 return (len == 1 || len == 2 || len == 4 || len == 8);
1332 }
1333
1334 /* Determine, for architecture GDBARCH, how a return value of TYPE
1335 should be returned. If it is supposed to be returned in registers,
1336 and READBUF is non-zero, read the appropriate value from REGCACHE,
1337 and copy it into READBUF. If WRITEBUF is non-zero, write the value
1338 from WRITEBUF into REGCACHE. */
1339
1340 static enum return_value_convention
1341 i386_return_value (struct gdbarch *gdbarch, struct type *type,
1342 struct regcache *regcache, void *readbuf,
1343 const void *writebuf)
1344 {
1345 enum type_code code = TYPE_CODE (type);
1346
1347 if ((code == TYPE_CODE_STRUCT || code == TYPE_CODE_UNION)
1348 && !i386_reg_struct_return_p (gdbarch, type))
1349 return RETURN_VALUE_STRUCT_CONVENTION;
1350
1351 /* This special case is for structures consisting of a single
1352 `float' or `double' member. These structures are returned in
1353 %st(0). For these structures, we call ourselves recursively,
1354 changing TYPE into the type of the first member of the structure.
1355 Since that should work for all structures that have only one
1356 member, we don't bother to check the member's type here. */
1357 if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
1358 {
1359 type = check_typedef (TYPE_FIELD_TYPE (type, 0));
1360 return i386_return_value (gdbarch, type, regcache, readbuf, writebuf);
1361 }
1362
1363 if (readbuf)
1364 i386_extract_return_value (gdbarch, type, regcache, readbuf);
1365 if (writebuf)
1366 i386_store_return_value (gdbarch, type, regcache, writebuf);
1367
1368 return RETURN_VALUE_REGISTER_CONVENTION;
1369 }
1370 \f
1371
1372 /* Return the GDB type object for the "standard" data type of data in
1373 register REGNUM. Perhaps %esi and %edi should go here, but
1374 potentially they could be used for things other than address. */
1375
1376 static struct type *
1377 i386_register_type (struct gdbarch *gdbarch, int regnum)
1378 {
1379 if (regnum == I386_EIP_REGNUM
1380 || regnum == I386_EBP_REGNUM || regnum == I386_ESP_REGNUM)
1381 return lookup_pointer_type (builtin_type_void);
1382
1383 if (i386_fp_regnum_p (regnum))
1384 return builtin_type_i387_ext;
1385
1386 if (i386_sse_regnum_p (gdbarch, regnum))
1387 return builtin_type_vec128i;
1388
1389 if (i386_mmx_regnum_p (gdbarch, regnum))
1390 return builtin_type_vec64i;
1391
1392 return builtin_type_int;
1393 }
1394
1395 /* Map a cooked register onto a raw register or memory. For the i386,
1396 the MMX registers need to be mapped onto floating point registers. */
1397
1398 static int
1399 i386_mmx_regnum_to_fp_regnum (struct regcache *regcache, int regnum)
1400 {
1401 struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache));
1402 int mmxreg, fpreg;
1403 ULONGEST fstat;
1404 int tos;
1405
1406 /* Define I387_ST0_REGNUM such that we use the proper definitions
1407 for REGCACHE's architecture. */
1408 #define I387_ST0_REGNUM tdep->st0_regnum
1409
1410 mmxreg = regnum - tdep->mm0_regnum;
1411 regcache_raw_read_unsigned (regcache, I387_FSTAT_REGNUM, &fstat);
1412 tos = (fstat >> 11) & 0x7;
1413 fpreg = (mmxreg + tos) % 8;
1414
1415 return (I387_ST0_REGNUM + fpreg);
1416
1417 #undef I387_ST0_REGNUM
1418 }
1419
1420 static void
1421 i386_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
1422 int regnum, void *buf)
1423 {
1424 if (i386_mmx_regnum_p (gdbarch, regnum))
1425 {
1426 char mmx_buf[MAX_REGISTER_SIZE];
1427 int fpnum = i386_mmx_regnum_to_fp_regnum (regcache, regnum);
1428
1429 /* Extract (always little endian). */
1430 regcache_raw_read (regcache, fpnum, mmx_buf);
1431 memcpy (buf, mmx_buf, register_size (gdbarch, regnum));
1432 }
1433 else
1434 regcache_raw_read (regcache, regnum, buf);
1435 }
1436
1437 static void
1438 i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
1439 int regnum, const void *buf)
1440 {
1441 if (i386_mmx_regnum_p (gdbarch, regnum))
1442 {
1443 char mmx_buf[MAX_REGISTER_SIZE];
1444 int fpnum = i386_mmx_regnum_to_fp_regnum (regcache, regnum);
1445
1446 /* Read ... */
1447 regcache_raw_read (regcache, fpnum, mmx_buf);
1448 /* ... Modify ... (always little endian). */
1449 memcpy (mmx_buf, buf, register_size (gdbarch, regnum));
1450 /* ... Write. */
1451 regcache_raw_write (regcache, fpnum, mmx_buf);
1452 }
1453 else
1454 regcache_raw_write (regcache, regnum, buf);
1455 }
1456 \f
1457
1458 /* Return the register number of the register allocated by GCC after
1459 REGNUM, or -1 if there is no such register. */
1460
1461 static int
1462 i386_next_regnum (int regnum)
1463 {
1464 /* GCC allocates the registers in the order:
1465
1466 %eax, %edx, %ecx, %ebx, %esi, %edi, %ebp, %esp, ...
1467
1468 Since storing a variable in %esp doesn't make any sense we return
1469 -1 for %ebp and for %esp itself. */
1470 static int next_regnum[] =
1471 {
1472 I386_EDX_REGNUM, /* Slot for %eax. */
1473 I386_EBX_REGNUM, /* Slot for %ecx. */
1474 I386_ECX_REGNUM, /* Slot for %edx. */
1475 I386_ESI_REGNUM, /* Slot for %ebx. */
1476 -1, -1, /* Slots for %esp and %ebp. */
1477 I386_EDI_REGNUM, /* Slot for %esi. */
1478 I386_EBP_REGNUM /* Slot for %edi. */
1479 };
1480
1481 if (regnum >= 0 && regnum < sizeof (next_regnum) / sizeof (next_regnum[0]))
1482 return next_regnum[regnum];
1483
1484 return -1;
1485 }
1486
1487 /* Return nonzero if a value of type TYPE stored in register REGNUM
1488 needs any special handling. */
1489
1490 static int
1491 i386_convert_register_p (int regnum, struct type *type)
1492 {
1493 int len = TYPE_LENGTH (type);
1494
1495 /* Values may be spread across multiple registers. Most debugging
1496 formats aren't expressive enough to specify the locations, so
1497 some heuristics is involved. Right now we only handle types that
1498 have a length that is a multiple of the word size, since GCC
1499 doesn't seem to put any other types into registers. */
1500 if (len > 4 && len % 4 == 0)
1501 {
1502 int last_regnum = regnum;
1503
1504 while (len > 4)
1505 {
1506 last_regnum = i386_next_regnum (last_regnum);
1507 len -= 4;
1508 }
1509
1510 if (last_regnum != -1)
1511 return 1;
1512 }
1513
1514 return i386_fp_regnum_p (regnum);
1515 }
1516
1517 /* Read a value of type TYPE from register REGNUM in frame FRAME, and
1518 return its contents in TO. */
1519
1520 static void
1521 i386_register_to_value (struct frame_info *frame, int regnum,
1522 struct type *type, void *to)
1523 {
1524 int len = TYPE_LENGTH (type);
1525 char *buf = to;
1526
1527 /* FIXME: kettenis/20030609: What should we do if REGNUM isn't
1528 available in FRAME (i.e. if it wasn't saved)? */
1529
1530 if (i386_fp_regnum_p (regnum))
1531 {
1532 i387_register_to_value (frame, regnum, type, to);
1533 return;
1534 }
1535
1536 /* Read a value spread across multiple registers. */
1537
1538 gdb_assert (len > 4 && len % 4 == 0);
1539
1540 while (len > 0)
1541 {
1542 gdb_assert (regnum != -1);
1543 gdb_assert (register_size (current_gdbarch, regnum) == 4);
1544
1545 get_frame_register (frame, regnum, buf);
1546 regnum = i386_next_regnum (regnum);
1547 len -= 4;
1548 buf += 4;
1549 }
1550 }
1551
1552 /* Write the contents FROM of a value of type TYPE into register
1553 REGNUM in frame FRAME. */
1554
1555 static void
1556 i386_value_to_register (struct frame_info *frame, int regnum,
1557 struct type *type, const void *from)
1558 {
1559 int len = TYPE_LENGTH (type);
1560 const char *buf = from;
1561
1562 if (i386_fp_regnum_p (regnum))
1563 {
1564 i387_value_to_register (frame, regnum, type, from);
1565 return;
1566 }
1567
1568 /* Write a value spread across multiple registers. */
1569
1570 gdb_assert (len > 4 && len % 4 == 0);
1571
1572 while (len > 0)
1573 {
1574 gdb_assert (regnum != -1);
1575 gdb_assert (register_size (current_gdbarch, regnum) == 4);
1576
1577 put_frame_register (frame, regnum, buf);
1578 regnum = i386_next_regnum (regnum);
1579 len -= 4;
1580 buf += 4;
1581 }
1582 }
1583 \f
1584 /* Supply register REGNUM from the general-purpose register set REGSET
1585 to register cache REGCACHE. If REGNUM is -1, do this for all
1586 registers in REGSET. */
1587
1588 void
1589 i386_supply_gregset (const struct regset *regset, struct regcache *regcache,
1590 int regnum, const void *gregs, size_t len)
1591 {
1592 const struct gdbarch_tdep *tdep = regset->descr;
1593 const char *regs = gregs;
1594 int i;
1595
1596 gdb_assert (len == tdep->sizeof_gregset);
1597
1598 for (i = 0; i < tdep->gregset_num_regs; i++)
1599 {
1600 if ((regnum == i || regnum == -1)
1601 && tdep->gregset_reg_offset[i] != -1)
1602 regcache_raw_supply (regcache, i, regs + tdep->gregset_reg_offset[i]);
1603 }
1604 }
1605
1606 /* Supply register REGNUM from the floating-point register set REGSET
1607 to register cache REGCACHE. If REGNUM is -1, do this for all
1608 registers in REGSET. */
1609
1610 static void
1611 i386_supply_fpregset (const struct regset *regset, struct regcache *regcache,
1612 int regnum, const void *fpregs, size_t len)
1613 {
1614 const struct gdbarch_tdep *tdep = regset->descr;
1615
1616 if (len == I387_SIZEOF_FXSAVE)
1617 {
1618 i387_supply_fxsave (regcache, regnum, fpregs);
1619 return;
1620 }
1621
1622 gdb_assert (len == tdep->sizeof_fpregset);
1623 i387_supply_fsave (regcache, regnum, fpregs);
1624 }
1625
1626 /* Return the appropriate register set for the core section identified
1627 by SECT_NAME and SECT_SIZE. */
1628
1629 const struct regset *
1630 i386_regset_from_core_section (struct gdbarch *gdbarch,
1631 const char *sect_name, size_t sect_size)
1632 {
1633 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1634
1635 if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
1636 {
1637 if (tdep->gregset == NULL)
1638 {
1639 tdep->gregset = XMALLOC (struct regset);
1640 tdep->gregset->descr = tdep;
1641 tdep->gregset->supply_regset = i386_supply_gregset;
1642 }
1643 return tdep->gregset;
1644 }
1645
1646 if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
1647 || (strcmp (sect_name, ".reg-xfp") == 0
1648 && sect_size == I387_SIZEOF_FXSAVE))
1649 {
1650 if (tdep->fpregset == NULL)
1651 {
1652 tdep->fpregset = XMALLOC (struct regset);
1653 tdep->fpregset->descr = tdep;
1654 tdep->fpregset->supply_regset = i386_supply_fpregset;
1655 }
1656 return tdep->fpregset;
1657 }
1658
1659 return NULL;
1660 }
1661 \f
1662
1663 #ifdef STATIC_TRANSFORM_NAME
1664 /* SunPRO encodes the static variables. This is not related to C++
1665 mangling, it is done for C too. */
1666
1667 char *
1668 sunpro_static_transform_name (char *name)
1669 {
1670 char *p;
1671 if (IS_STATIC_TRANSFORM_NAME (name))
1672 {
1673 /* For file-local statics there will be a period, a bunch of
1674 junk (the contents of which match a string given in the
1675 N_OPT), a period and the name. For function-local statics
1676 there will be a bunch of junk (which seems to change the
1677 second character from 'A' to 'B'), a period, the name of the
1678 function, and the name. So just skip everything before the
1679 last period. */
1680 p = strrchr (name, '.');
1681 if (p != NULL)
1682 name = p + 1;
1683 }
1684 return name;
1685 }
1686 #endif /* STATIC_TRANSFORM_NAME */
1687 \f
1688
1689 /* Stuff for WIN32 PE style DLL's but is pretty generic really. */
1690
1691 CORE_ADDR
1692 i386_pe_skip_trampoline_code (CORE_ADDR pc, char *name)
1693 {
1694 if (pc && read_memory_unsigned_integer (pc, 2) == 0x25ff) /* jmp *(dest) */
1695 {
1696 unsigned long indirect = read_memory_unsigned_integer (pc + 2, 4);
1697 struct minimal_symbol *indsym =
1698 indirect ? lookup_minimal_symbol_by_pc (indirect) : 0;
1699 char *symname = indsym ? SYMBOL_LINKAGE_NAME (indsym) : 0;
1700
1701 if (symname)
1702 {
1703 if (strncmp (symname, "__imp_", 6) == 0
1704 || strncmp (symname, "_imp_", 5) == 0)
1705 return name ? 1 : read_memory_unsigned_integer (indirect, 4);
1706 }
1707 }
1708 return 0; /* Not a trampoline. */
1709 }
1710 \f
1711
1712 /* Return whether the frame preceding NEXT_FRAME corresponds to a
1713 sigtramp routine. */
1714
1715 static int
1716 i386_sigtramp_p (struct frame_info *next_frame)
1717 {
1718 CORE_ADDR pc = frame_pc_unwind (next_frame);
1719 char *name;
1720
1721 find_pc_partial_function (pc, &name, NULL, NULL);
1722 return (name && strcmp ("_sigtramp", name) == 0);
1723 }
1724 \f
1725
1726 /* We have two flavours of disassembly. The machinery on this page
1727 deals with switching between those. */
1728
1729 static int
1730 i386_print_insn (bfd_vma pc, struct disassemble_info *info)
1731 {
1732 gdb_assert (disassembly_flavor == att_flavor
1733 || disassembly_flavor == intel_flavor);
1734
1735 /* FIXME: kettenis/20020915: Until disassembler_options is properly
1736 constified, cast to prevent a compiler warning. */
1737 info->disassembler_options = (char *) disassembly_flavor;
1738 info->mach = gdbarch_bfd_arch_info (current_gdbarch)->mach;
1739
1740 return print_insn_i386 (pc, info);
1741 }
1742 \f
1743
1744 /* There are a few i386 architecture variants that differ only
1745 slightly from the generic i386 target. For now, we don't give them
1746 their own source file, but include them here. As a consequence,
1747 they'll always be included. */
1748
1749 /* System V Release 4 (SVR4). */
1750
1751 /* Return whether the frame preceding NEXT_FRAME corresponds to a SVR4
1752 sigtramp routine. */
1753
1754 static int
1755 i386_svr4_sigtramp_p (struct frame_info *next_frame)
1756 {
1757 CORE_ADDR pc = frame_pc_unwind (next_frame);
1758 char *name;
1759
1760 /* UnixWare uses _sigacthandler. The origin of the other symbols is
1761 currently unknown. */
1762 find_pc_partial_function (pc, &name, NULL, NULL);
1763 return (name && (strcmp ("_sigreturn", name) == 0
1764 || strcmp ("_sigacthandler", name) == 0
1765 || strcmp ("sigvechandler", name) == 0));
1766 }
1767
1768 /* Assuming NEXT_FRAME is for a frame following a SVR4 sigtramp
1769 routine, return the address of the associated sigcontext (ucontext)
1770 structure. */
1771
1772 static CORE_ADDR
1773 i386_svr4_sigcontext_addr (struct frame_info *next_frame)
1774 {
1775 char buf[4];
1776 CORE_ADDR sp;
1777
1778 frame_unwind_register (next_frame, I386_ESP_REGNUM, buf);
1779 sp = extract_unsigned_integer (buf, 4);
1780
1781 return read_memory_unsigned_integer (sp + 8, 4);
1782 }
1783 \f
1784
1785 /* Generic COFF. */
1786
1787 void
1788 i386_coff_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
1789 {
1790 /* We typically use DWARF-in-COFF with the dbx register numbering. */
1791 set_gdbarch_dwarf_reg_to_regnum (gdbarch, i386_dbx_reg_to_regnum);
1792 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, i386_dbx_reg_to_regnum);
1793 }
1794
1795 /* Generic ELF. */
1796
1797 void
1798 i386_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
1799 {
1800 /* We typically use stabs-in-ELF with the SVR4 register numbering. */
1801 set_gdbarch_stab_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum);
1802 }
1803
1804 /* System V Release 4 (SVR4). */
1805
1806 void
1807 i386_svr4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
1808 {
1809 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1810
1811 /* System V Release 4 uses ELF. */
1812 i386_elf_init_abi (info, gdbarch);
1813
1814 /* System V Release 4 has shared libraries. */
1815 set_gdbarch_in_solib_call_trampoline (gdbarch, in_plt_section);
1816 set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
1817
1818 tdep->sigtramp_p = i386_svr4_sigtramp_p;
1819 tdep->sigcontext_addr = i386_svr4_sigcontext_addr;
1820 tdep->sc_pc_offset = 36 + 14 * 4;
1821 tdep->sc_sp_offset = 36 + 17 * 4;
1822
1823 tdep->jb_pc_offset = 20;
1824 }
1825
1826 /* DJGPP. */
1827
1828 static void
1829 i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
1830 {
1831 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1832
1833 /* DJGPP doesn't have any special frames for signal handlers. */
1834 tdep->sigtramp_p = NULL;
1835
1836 tdep->jb_pc_offset = 36;
1837 }
1838
1839 /* NetWare. */
1840
1841 static void
1842 i386_nw_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
1843 {
1844 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1845
1846 tdep->jb_pc_offset = 24;
1847 }
1848 \f
1849
1850 /* i386 register groups. In addition to the normal groups, add "mmx"
1851 and "sse". */
1852
1853 static struct reggroup *i386_sse_reggroup;
1854 static struct reggroup *i386_mmx_reggroup;
1855
1856 static void
1857 i386_init_reggroups (void)
1858 {
1859 i386_sse_reggroup = reggroup_new ("sse", USER_REGGROUP);
1860 i386_mmx_reggroup = reggroup_new ("mmx", USER_REGGROUP);
1861 }
1862
1863 static void
1864 i386_add_reggroups (struct gdbarch *gdbarch)
1865 {
1866 reggroup_add (gdbarch, i386_sse_reggroup);
1867 reggroup_add (gdbarch, i386_mmx_reggroup);
1868 reggroup_add (gdbarch, general_reggroup);
1869 reggroup_add (gdbarch, float_reggroup);
1870 reggroup_add (gdbarch, all_reggroup);
1871 reggroup_add (gdbarch, save_reggroup);
1872 reggroup_add (gdbarch, restore_reggroup);
1873 reggroup_add (gdbarch, vector_reggroup);
1874 reggroup_add (gdbarch, system_reggroup);
1875 }
1876
1877 int
1878 i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
1879 struct reggroup *group)
1880 {
1881 int sse_regnum_p = (i386_sse_regnum_p (gdbarch, regnum)
1882 || i386_mxcsr_regnum_p (gdbarch, regnum));
1883 int fp_regnum_p = (i386_fp_regnum_p (regnum)
1884 || i386_fpc_regnum_p (regnum));
1885 int mmx_regnum_p = (i386_mmx_regnum_p (gdbarch, regnum));
1886
1887 if (group == i386_mmx_reggroup)
1888 return mmx_regnum_p;
1889 if (group == i386_sse_reggroup)
1890 return sse_regnum_p;
1891 if (group == vector_reggroup)
1892 return (mmx_regnum_p || sse_regnum_p);
1893 if (group == float_reggroup)
1894 return fp_regnum_p;
1895 if (group == general_reggroup)
1896 return (!fp_regnum_p && !mmx_regnum_p && !sse_regnum_p);
1897
1898 return default_register_reggroup_p (gdbarch, regnum, group);
1899 }
1900 \f
1901
1902 /* Get the ARGIth function argument for the current function. */
1903
1904 static CORE_ADDR
1905 i386_fetch_pointer_argument (struct frame_info *frame, int argi,
1906 struct type *type)
1907 {
1908 CORE_ADDR sp = get_frame_register_unsigned (frame, I386_ESP_REGNUM);
1909 return read_memory_unsigned_integer (sp + (4 * (argi + 1)), 4);
1910 }
1911
1912 \f
1913 static struct gdbarch *
1914 i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
1915 {
1916 struct gdbarch_tdep *tdep;
1917 struct gdbarch *gdbarch;
1918
1919 /* If there is already a candidate, use it. */
1920 arches = gdbarch_list_lookup_by_info (arches, &info);
1921 if (arches != NULL)
1922 return arches->gdbarch;
1923
1924 /* Allocate space for the new architecture. */
1925 tdep = XMALLOC (struct gdbarch_tdep);
1926 gdbarch = gdbarch_alloc (&info, tdep);
1927
1928 /* General-purpose registers. */
1929 tdep->gregset = NULL;
1930 tdep->gregset_reg_offset = NULL;
1931 tdep->gregset_num_regs = I386_NUM_GREGS;
1932 tdep->sizeof_gregset = 0;
1933
1934 /* Floating-point registers. */
1935 tdep->fpregset = NULL;
1936 tdep->sizeof_fpregset = I387_SIZEOF_FSAVE;
1937
1938 /* The default settings include the FPU registers, the MMX registers
1939 and the SSE registers. This can be overridden for a specific ABI
1940 by adjusting the members `st0_regnum', `mm0_regnum' and
1941 `num_xmm_regs' of `struct gdbarch_tdep', otherwise the registers
1942 will show up in the output of "info all-registers". Ideally we
1943 should try to autodetect whether they are available, such that we
1944 can prevent "info all-registers" from displaying registers that
1945 aren't available.
1946
1947 NOTE: kevinb/2003-07-13: ... if it's a choice between printing
1948 [the SSE registers] always (even when they don't exist) or never
1949 showing them to the user (even when they do exist), I prefer the
1950 former over the latter. */
1951
1952 tdep->st0_regnum = I386_ST0_REGNUM;
1953
1954 /* The MMX registers are implemented as pseudo-registers. Put off
1955 calculating the register number for %mm0 until we know the number
1956 of raw registers. */
1957 tdep->mm0_regnum = 0;
1958
1959 /* I386_NUM_XREGS includes %mxcsr, so substract one. */
1960 tdep->num_xmm_regs = I386_NUM_XREGS - 1;
1961
1962 tdep->jb_pc_offset = -1;
1963 tdep->struct_return = pcc_struct_return;
1964 tdep->sigtramp_start = 0;
1965 tdep->sigtramp_end = 0;
1966 tdep->sigtramp_p = i386_sigtramp_p;
1967 tdep->sigcontext_addr = NULL;
1968 tdep->sc_reg_offset = NULL;
1969 tdep->sc_pc_offset = -1;
1970 tdep->sc_sp_offset = -1;
1971
1972 /* The format used for `long double' on almost all i386 targets is
1973 the i387 extended floating-point format. In fact, of all targets
1974 in the GCC 2.95 tree, only OSF/1 does it different, and insists
1975 on having a `long double' that's not `long' at all. */
1976 set_gdbarch_long_double_format (gdbarch, &floatformat_i387_ext);
1977
1978 /* Although the i387 extended floating-point has only 80 significant
1979 bits, a `long double' actually takes up 96, probably to enforce
1980 alignment. */
1981 set_gdbarch_long_double_bit (gdbarch, 96);
1982
1983 /* The default ABI includes general-purpose registers,
1984 floating-point registers, and the SSE registers. */
1985 set_gdbarch_num_regs (gdbarch, I386_SSE_NUM_REGS);
1986 set_gdbarch_register_name (gdbarch, i386_register_name);
1987 set_gdbarch_register_type (gdbarch, i386_register_type);
1988
1989 /* Register numbers of various important registers. */
1990 set_gdbarch_sp_regnum (gdbarch, I386_ESP_REGNUM); /* %esp */
1991 set_gdbarch_pc_regnum (gdbarch, I386_EIP_REGNUM); /* %eip */
1992 set_gdbarch_ps_regnum (gdbarch, I386_EFLAGS_REGNUM); /* %eflags */
1993 set_gdbarch_fp0_regnum (gdbarch, I386_ST0_REGNUM); /* %st(0) */
1994
1995 /* NOTE: kettenis/20040418: GCC does have two possible register
1996 numbering schemes on the i386: dbx and SVR4. These schemes
1997 differ in how they number %ebp, %esp, %eflags, and the
1998 floating-point registers, and are implemented by the arrays
1999 dbx_register_map[] and svr4_dbx_register_map in
2000 gcc/config/i386.c. GCC also defines a third numbering scheme in
2001 gcc/config/i386.c, which it designates as the "default" register
2002 map used in 64bit mode. This last register numbering scheme is
2003 implemented in dbx64_register_map, and us used for AMD64; see
2004 amd64-tdep.c.
2005
2006 Currently, each GCC i386 target always uses the same register
2007 numbering scheme across all its supported debugging formats
2008 i.e. SDB (COFF), stabs and DWARF 2. This is because
2009 gcc/sdbout.c, gcc/dbxout.c and gcc/dwarf2out.c all use the
2010 DBX_REGISTER_NUMBER macro which is defined by each target's
2011 respective config header in a manner independent of the requested
2012 output debugging format.
2013
2014 This does not match the arrangement below, which presumes that
2015 the SDB and stabs numbering schemes differ from the DWARF and
2016 DWARF 2 ones. The reason for this arrangement is that it is
2017 likely to get the numbering scheme for the target's
2018 default/native debug format right. For targets where GCC is the
2019 native compiler (FreeBSD, NetBSD, OpenBSD, GNU/Linux) or for
2020 targets where the native toolchain uses a different numbering
2021 scheme for a particular debug format (stabs-in-ELF on Solaris)
2022 the defaults below will have to be overridden, like the functions
2023 i386_coff_init_abi() and i386_elf_init_abi() do. */
2024
2025 /* Use the dbx register numbering scheme for stabs and COFF. */
2026 set_gdbarch_stab_reg_to_regnum (gdbarch, i386_dbx_reg_to_regnum);
2027 set_gdbarch_sdb_reg_to_regnum (gdbarch, i386_dbx_reg_to_regnum);
2028
2029 /* Use the SVR4 register numbering scheme for DWARF and DWARF 2. */
2030 set_gdbarch_dwarf_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum);
2031 set_gdbarch_dwarf2_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum);
2032
2033 /* We don't define ECOFF_REG_TO_REGNUM, since ECOFF doesn't seem to
2034 be in use on any of the supported i386 targets. */
2035
2036 set_gdbarch_print_float_info (gdbarch, i387_print_float_info);
2037
2038 set_gdbarch_get_longjmp_target (gdbarch, i386_get_longjmp_target);
2039
2040 /* Call dummy code. */
2041 set_gdbarch_push_dummy_call (gdbarch, i386_push_dummy_call);
2042
2043 set_gdbarch_convert_register_p (gdbarch, i386_convert_register_p);
2044 set_gdbarch_register_to_value (gdbarch, i386_register_to_value);
2045 set_gdbarch_value_to_register (gdbarch, i386_value_to_register);
2046
2047 set_gdbarch_return_value (gdbarch, i386_return_value);
2048
2049 set_gdbarch_skip_prologue (gdbarch, i386_skip_prologue);
2050
2051 /* Stack grows downward. */
2052 set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
2053
2054 set_gdbarch_breakpoint_from_pc (gdbarch, i386_breakpoint_from_pc);
2055 set_gdbarch_decr_pc_after_break (gdbarch, 1);
2056
2057 set_gdbarch_frame_args_skip (gdbarch, 8);
2058
2059 /* Wire in the MMX registers. */
2060 set_gdbarch_num_pseudo_regs (gdbarch, i386_num_mmx_regs);
2061 set_gdbarch_pseudo_register_read (gdbarch, i386_pseudo_register_read);
2062 set_gdbarch_pseudo_register_write (gdbarch, i386_pseudo_register_write);
2063
2064 set_gdbarch_print_insn (gdbarch, i386_print_insn);
2065
2066 set_gdbarch_unwind_dummy_id (gdbarch, i386_unwind_dummy_id);
2067
2068 set_gdbarch_unwind_pc (gdbarch, i386_unwind_pc);
2069
2070 /* Add the i386 register groups. */
2071 i386_add_reggroups (gdbarch);
2072 set_gdbarch_register_reggroup_p (gdbarch, i386_register_reggroup_p);
2073
2074 /* Helper for function argument information. */
2075 set_gdbarch_fetch_pointer_argument (gdbarch, i386_fetch_pointer_argument);
2076
2077 /* Hook in the DWARF CFI frame unwinder. */
2078 frame_unwind_append_sniffer (gdbarch, dwarf2_frame_sniffer);
2079
2080 frame_base_set_default (gdbarch, &i386_frame_base);
2081
2082 /* Hook in ABI-specific overrides, if they have been registered. */
2083 gdbarch_init_osabi (info, gdbarch);
2084
2085 frame_unwind_append_sniffer (gdbarch, i386_sigtramp_frame_sniffer);
2086 frame_unwind_append_sniffer (gdbarch, i386_frame_sniffer);
2087
2088 /* If we have a register mapping, enable the generic core file
2089 support, unless it has already been enabled. */
2090 if (tdep->gregset_reg_offset
2091 && !gdbarch_regset_from_core_section_p (gdbarch))
2092 set_gdbarch_regset_from_core_section (gdbarch,
2093 i386_regset_from_core_section);
2094
2095 /* Unless support for MMX has been disabled, make %mm0 the first
2096 pseudo-register. */
2097 if (tdep->mm0_regnum == 0)
2098 tdep->mm0_regnum = gdbarch_num_regs (gdbarch);
2099
2100 return gdbarch;
2101 }
2102
2103 static enum gdb_osabi
2104 i386_coff_osabi_sniffer (bfd *abfd)
2105 {
2106 if (strcmp (bfd_get_target (abfd), "coff-go32-exe") == 0
2107 || strcmp (bfd_get_target (abfd), "coff-go32") == 0)
2108 return GDB_OSABI_GO32;
2109
2110 return GDB_OSABI_UNKNOWN;
2111 }
2112
2113 static enum gdb_osabi
2114 i386_nlm_osabi_sniffer (bfd *abfd)
2115 {
2116 return GDB_OSABI_NETWARE;
2117 }
2118 \f
2119
2120 /* Provide a prototype to silence -Wmissing-prototypes. */
2121 void _initialize_i386_tdep (void);
2122
2123 void
2124 _initialize_i386_tdep (void)
2125 {
2126 register_gdbarch_init (bfd_arch_i386, i386_gdbarch_init);
2127
2128 /* Add the variable that controls the disassembly flavor. */
2129 {
2130 struct cmd_list_element *new_cmd;
2131
2132 new_cmd = add_set_enum_cmd ("disassembly-flavor", no_class,
2133 valid_flavors,
2134 &disassembly_flavor,
2135 "\
2136 Set the disassembly flavor, the valid values are \"att\" and \"intel\", \
2137 and the default value is \"att\".",
2138 &setlist);
2139 add_show_from_set (new_cmd, &showlist);
2140 }
2141
2142 /* Add the variable that controls the convention for returning
2143 structs. */
2144 {
2145 struct cmd_list_element *new_cmd;
2146
2147 new_cmd = add_set_enum_cmd ("struct-convention", no_class,
2148 valid_conventions,
2149 &struct_convention, "\
2150 Set the convention for returning small structs, valid values \
2151 are \"default\", \"pcc\" and \"reg\", and the default value is \"default\".",
2152 &setlist);
2153 add_show_from_set (new_cmd, &showlist);
2154 }
2155
2156 gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
2157 i386_coff_osabi_sniffer);
2158 gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_nlm_flavour,
2159 i386_nlm_osabi_sniffer);
2160
2161 gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_SVR4,
2162 i386_svr4_init_abi);
2163 gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_GO32,
2164 i386_go32_init_abi);
2165 gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_NETWARE,
2166 i386_nw_init_abi);
2167
2168 /* Initialize the i386 specific register groups. */
2169 i386_init_reggroups ();
2170 }
This page took 0.111269 seconds and 5 git commands to generate.