gdb:
[external/binutils.git] / gdb / i386-tdep.c
1 /* Intel 386 target-dependent stuff.
2
3    Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997,
4    1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
5    Free Software 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 3 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, see <http://www.gnu.org/licenses/>.  */
21
22 #include "defs.h"
23 #include "arch-utils.h"
24 #include "command.h"
25 #include "dummy-frame.h"
26 #include "dwarf2-frame.h"
27 #include "doublest.h"
28 #include "frame.h"
29 #include "frame-base.h"
30 #include "frame-unwind.h"
31 #include "inferior.h"
32 #include "gdbcmd.h"
33 #include "gdbcore.h"
34 #include "gdbtypes.h"
35 #include "objfiles.h"
36 #include "osabi.h"
37 #include "regcache.h"
38 #include "reggroups.h"
39 #include "regset.h"
40 #include "symfile.h"
41 #include "symtab.h"
42 #include "target.h"
43 #include "value.h"
44 #include "dis-asm.h"
45
46 #include "gdb_assert.h"
47 #include "gdb_string.h"
48
49 #include "i386-tdep.h"
50 #include "i387-tdep.h"
51
52 /* Register names.  */
53
54 static char *i386_register_names[] =
55 {
56   "eax",   "ecx",    "edx",   "ebx",
57   "esp",   "ebp",    "esi",   "edi",
58   "eip",   "eflags", "cs",    "ss",
59   "ds",    "es",     "fs",    "gs",
60   "st0",   "st1",    "st2",   "st3",
61   "st4",   "st5",    "st6",   "st7",
62   "fctrl", "fstat",  "ftag",  "fiseg",
63   "fioff", "foseg",  "fooff", "fop",
64   "xmm0",  "xmm1",   "xmm2",  "xmm3",
65   "xmm4",  "xmm5",   "xmm6",  "xmm7",
66   "mxcsr"
67 };
68
69 static const int i386_num_register_names = ARRAY_SIZE (i386_register_names);
70
71 /* Register names for MMX pseudo-registers.  */
72
73 static char *i386_mmx_names[] =
74 {
75   "mm0", "mm1", "mm2", "mm3",
76   "mm4", "mm5", "mm6", "mm7"
77 };
78
79 static const int i386_num_mmx_regs = ARRAY_SIZE (i386_mmx_names);
80
81 static int
82 i386_mmx_regnum_p (struct gdbarch *gdbarch, int regnum)
83 {
84   int mm0_regnum = gdbarch_tdep (gdbarch)->mm0_regnum;
85
86   if (mm0_regnum < 0)
87     return 0;
88
89   return (regnum >= mm0_regnum && regnum < mm0_regnum + i386_num_mmx_regs);
90 }
91
92 /* SSE register?  */
93
94 static int
95 i386_sse_regnum_p (struct gdbarch *gdbarch, int regnum)
96 {
97   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
98
99   if (I387_NUM_XMM_REGS (tdep) == 0)
100     return 0;
101
102   return (I387_XMM0_REGNUM (tdep) <= regnum
103           && regnum < I387_MXCSR_REGNUM (tdep));
104 }
105
106 static int
107 i386_mxcsr_regnum_p (struct gdbarch *gdbarch, int regnum)
108 {
109   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
110
111   if (I387_NUM_XMM_REGS (tdep) == 0)
112     return 0;
113
114   return (regnum == I387_MXCSR_REGNUM (tdep));
115 }
116
117 /* FP register?  */
118
119 int
120 i386_fp_regnum_p (struct gdbarch *gdbarch, int regnum)
121 {
122   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
123
124   if (I387_ST0_REGNUM (tdep) < 0)
125     return 0;
126
127   return (I387_ST0_REGNUM (tdep) <= regnum
128           && regnum < I387_FCTRL_REGNUM (tdep));
129 }
130
131 int
132 i386_fpc_regnum_p (struct gdbarch *gdbarch, int regnum)
133 {
134   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
135
136   if (I387_ST0_REGNUM (tdep) < 0)
137     return 0;
138
139   return (I387_FCTRL_REGNUM (tdep) <= regnum 
140           && regnum < I387_XMM0_REGNUM (tdep));
141 }
142
143 /* Return the name of register REGNUM.  */
144
145 const char *
146 i386_register_name (struct gdbarch *gdbarch, int regnum)
147 {
148   if (i386_mmx_regnum_p (gdbarch, regnum))
149     return i386_mmx_names[regnum - I387_MM0_REGNUM (gdbarch_tdep (gdbarch))];
150
151   if (regnum >= 0 && regnum < i386_num_register_names)
152     return i386_register_names[regnum];
153
154   return NULL;
155 }
156
157 /* Convert a dbx register number REG to the appropriate register
158    number used by GDB.  */
159
160 static int
161 i386_dbx_reg_to_regnum (struct gdbarch *gdbarch, int reg)
162 {
163   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
164
165   /* This implements what GCC calls the "default" register map
166      (dbx_register_map[]).  */
167
168   if (reg >= 0 && reg <= 7)
169     {
170       /* General-purpose registers.  The debug info calls %ebp
171          register 4, and %esp register 5.  */
172       if (reg == 4)
173         return 5;
174       else if (reg == 5)
175         return 4;
176       else return reg;
177     }
178   else if (reg >= 12 && reg <= 19)
179     {
180       /* Floating-point registers.  */
181       return reg - 12 + I387_ST0_REGNUM (tdep);
182     }
183   else if (reg >= 21 && reg <= 28)
184     {
185       /* SSE registers.  */
186       return reg - 21 + I387_XMM0_REGNUM (tdep);
187     }
188   else if (reg >= 29 && reg <= 36)
189     {
190       /* MMX registers.  */
191       return reg - 29 + I387_MM0_REGNUM (tdep);
192     }
193
194   /* This will hopefully provoke a warning.  */
195   return gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
196 }
197
198 /* Convert SVR4 register number REG to the appropriate register number
199    used by GDB.  */
200
201 static int
202 i386_svr4_reg_to_regnum (struct gdbarch *gdbarch, int reg)
203 {
204   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
205
206   /* This implements the GCC register map that tries to be compatible
207      with the SVR4 C compiler for DWARF (svr4_dbx_register_map[]).  */
208
209   /* The SVR4 register numbering includes %eip and %eflags, and
210      numbers the floating point registers differently.  */
211   if (reg >= 0 && reg <= 9)
212     {
213       /* General-purpose registers.  */
214       return reg;
215     }
216   else if (reg >= 11 && reg <= 18)
217     {
218       /* Floating-point registers.  */
219       return reg - 11 + I387_ST0_REGNUM (tdep);
220     }
221   else if (reg >= 21 && reg <= 36)
222     {
223       /* The SSE and MMX registers have the same numbers as with dbx.  */
224       return i386_dbx_reg_to_regnum (gdbarch, reg);
225     }
226
227   switch (reg)
228     {
229     case 37: return I387_FCTRL_REGNUM (tdep);
230     case 38: return I387_FSTAT_REGNUM (tdep);
231     case 39: return I387_MXCSR_REGNUM (tdep);
232     case 40: return I386_ES_REGNUM;
233     case 41: return I386_CS_REGNUM;
234     case 42: return I386_SS_REGNUM;
235     case 43: return I386_DS_REGNUM;
236     case 44: return I386_FS_REGNUM;
237     case 45: return I386_GS_REGNUM;
238     }
239
240   /* This will hopefully provoke a warning.  */
241   return gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch);
242 }
243
244 \f
245
246 /* This is the variable that is set with "set disassembly-flavor", and
247    its legitimate values.  */
248 static const char att_flavor[] = "att";
249 static const char intel_flavor[] = "intel";
250 static const char *valid_flavors[] =
251 {
252   att_flavor,
253   intel_flavor,
254   NULL
255 };
256 static const char *disassembly_flavor = att_flavor;
257 \f
258
259 /* Use the program counter to determine the contents and size of a
260    breakpoint instruction.  Return a pointer to a string of bytes that
261    encode a breakpoint instruction, store the length of the string in
262    *LEN and optionally adjust *PC to point to the correct memory
263    location for inserting the breakpoint.
264
265    On the i386 we have a single breakpoint that fits in a single byte
266    and can be inserted anywhere.
267
268    This function is 64-bit safe.  */
269
270 static const gdb_byte *
271 i386_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pc, int *len)
272 {
273   static gdb_byte break_insn[] = { 0xcc }; /* int 3 */
274
275   *len = sizeof (break_insn);
276   return break_insn;
277 }
278 \f
279 /* Displaced instruction handling.  */
280
281
282 static int
283 i386_absolute_jmp_p (gdb_byte *insn)
284 {
285   /* jmp far (absolute address in operand) */
286   if (insn[0] == 0xea)
287     return 1;
288
289   if (insn[0] == 0xff)
290     {
291       /* jump near, absolute indirect (/4) */
292       if ((insn[1] & 0x38) == 0x20)
293         return 1;
294
295       /* jump far, absolute indirect (/5) */
296       if ((insn[1] & 0x38) == 0x28)
297         return 1;
298     }
299
300   return 0;
301 }
302
303 static int
304 i386_absolute_call_p (gdb_byte *insn)
305 {
306   /* call far, absolute */
307   if (insn[0] == 0x9a)
308     return 1;
309
310   if (insn[0] == 0xff)
311     {
312       /* Call near, absolute indirect (/2) */
313       if ((insn[1] & 0x38) == 0x10)
314         return 1;
315
316       /* Call far, absolute indirect (/3) */
317       if ((insn[1] & 0x38) == 0x18)
318         return 1;
319     }
320
321   return 0;
322 }
323
324 static int
325 i386_ret_p (gdb_byte *insn)
326 {
327   switch (insn[0])
328     {
329     case 0xc2: /* ret near, pop N bytes */
330     case 0xc3: /* ret near */
331     case 0xca: /* ret far, pop N bytes */
332     case 0xcb: /* ret far */
333     case 0xcf: /* iret */
334       return 1;
335
336     default:
337       return 0;
338     }
339 }
340
341 static int
342 i386_call_p (gdb_byte *insn)
343 {
344   if (i386_absolute_call_p (insn))
345     return 1;
346
347   /* call near, relative */
348   if (insn[0] == 0xe8)
349     return 1;
350
351   return 0;
352 }
353
354 static int
355 i386_breakpoint_p (gdb_byte *insn)
356 {
357   return insn[0] == 0xcc;       /* int 3 */
358 }
359
360 /* Return non-zero if INSN is a system call, and set *LENGTHP to its
361    length in bytes.  Otherwise, return zero.  */
362 static int
363 i386_syscall_p (gdb_byte *insn, ULONGEST *lengthp)
364 {
365   if (insn[0] == 0xcd)
366     {
367       *lengthp = 2;
368       return 1;
369     }
370
371   return 0;
372 }
373
374 /* Fix up the state of registers and memory after having single-stepped
375    a displaced instruction.  */
376 void
377 i386_displaced_step_fixup (struct gdbarch *gdbarch,
378                            struct displaced_step_closure *closure,
379                            CORE_ADDR from, CORE_ADDR to,
380                            struct regcache *regs)
381 {
382   /* The offset we applied to the instruction's address.
383      This could well be negative (when viewed as a signed 32-bit
384      value), but ULONGEST won't reflect that, so take care when
385      applying it.  */
386   ULONGEST insn_offset = to - from;
387
388   /* Since we use simple_displaced_step_copy_insn, our closure is a
389      copy of the instruction.  */
390   gdb_byte *insn = (gdb_byte *) closure;
391
392   if (debug_displaced)
393     fprintf_unfiltered (gdb_stdlog,
394                         "displaced: fixup (0x%s, 0x%s), "
395                         "insn = 0x%02x 0x%02x ...\n",
396                         paddr_nz (from), paddr_nz (to), insn[0], insn[1]);
397
398   /* The list of issues to contend with here is taken from
399      resume_execution in arch/i386/kernel/kprobes.c, Linux 2.6.20.
400      Yay for Free Software!  */
401
402   /* Relocate the %eip, if necessary.  */
403
404   /* Except in the case of absolute or indirect jump or call
405      instructions, or a return instruction, the new eip is relative to
406      the displaced instruction; make it relative.  Well, signal
407      handler returns don't need relocation either, but we use the
408      value of %eip to recognize those; see below.  */
409   if (! i386_absolute_jmp_p (insn)
410       && ! i386_absolute_call_p (insn)
411       && ! i386_ret_p (insn))
412     {
413       ULONGEST orig_eip;
414       ULONGEST insn_len;
415
416       regcache_cooked_read_unsigned (regs, I386_EIP_REGNUM, &orig_eip);
417
418       /* A signal trampoline system call changes the %eip, resuming
419          execution of the main program after the signal handler has
420          returned.  That makes them like 'return' instructions; we
421          shouldn't relocate %eip.
422
423          But most system calls don't, and we do need to relocate %eip.
424
425          Our heuristic for distinguishing these cases: if stepping
426          over the system call instruction left control directly after
427          the instruction, the we relocate --- control almost certainly
428          doesn't belong in the displaced copy.  Otherwise, we assume
429          the instruction has put control where it belongs, and leave
430          it unrelocated.  Goodness help us if there are PC-relative
431          system calls.  */
432       if (i386_syscall_p (insn, &insn_len)
433           && orig_eip != to + insn_len)
434         {
435           if (debug_displaced)
436             fprintf_unfiltered (gdb_stdlog,
437                                 "displaced: syscall changed %%eip; "
438                                 "not relocating\n");
439         }
440       else
441         {
442           ULONGEST eip = (orig_eip - insn_offset) & 0xffffffffUL;
443
444           /* If we have stepped over a breakpoint, set the %eip to
445              point at the breakpoint instruction itself.
446
447              (gdbarch_decr_pc_after_break was never something the core
448              of GDB should have been concerned with; arch-specific
449              code should be making PC values consistent before
450              presenting them to GDB.)  */
451           if (i386_breakpoint_p (insn))
452             {
453               if (debug_displaced)
454                 fprintf_unfiltered (gdb_stdlog,
455                                     "displaced: stepped breakpoint\n");
456               eip--;
457             }
458
459           regcache_cooked_write_unsigned (regs, I386_EIP_REGNUM, eip);
460
461           if (debug_displaced)
462             fprintf_unfiltered (gdb_stdlog,
463                                 "displaced: "
464                                 "relocated %%eip from 0x%s to 0x%s\n",
465                                 paddr_nz (orig_eip), paddr_nz (eip));
466         }
467     }
468
469   /* If the instruction was PUSHFL, then the TF bit will be set in the
470      pushed value, and should be cleared.  We'll leave this for later,
471      since GDB already messes up the TF flag when stepping over a
472      pushfl.  */
473
474   /* If the instruction was a call, the return address now atop the
475      stack is the address following the copied instruction.  We need
476      to make it the address following the original instruction.  */
477   if (i386_call_p (insn))
478     {
479       ULONGEST esp;
480       ULONGEST retaddr;
481       const ULONGEST retaddr_len = 4;
482
483       regcache_cooked_read_unsigned (regs, I386_ESP_REGNUM, &esp);
484       retaddr = read_memory_unsigned_integer (esp, retaddr_len);
485       retaddr = (retaddr - insn_offset) & 0xffffffffUL;
486       write_memory_unsigned_integer (esp, retaddr_len, retaddr);
487
488       if (debug_displaced)
489         fprintf_unfiltered (gdb_stdlog,
490                             "displaced: relocated return addr at 0x%s "
491                             "to 0x%s\n",
492                             paddr_nz (esp),
493                             paddr_nz (retaddr));
494     }
495 }
496
497
498 \f
499 #ifdef I386_REGNO_TO_SYMMETRY
500 #error "The Sequent Symmetry is no longer supported."
501 #endif
502
503 /* According to the System V ABI, the registers %ebp, %ebx, %edi, %esi
504    and %esp "belong" to the calling function.  Therefore these
505    registers should be saved if they're going to be modified.  */
506
507 /* The maximum number of saved registers.  This should include all
508    registers mentioned above, and %eip.  */
509 #define I386_NUM_SAVED_REGS     I386_NUM_GREGS
510
511 struct i386_frame_cache
512 {
513   /* Base address.  */
514   CORE_ADDR base;
515   LONGEST sp_offset;
516   CORE_ADDR pc;
517
518   /* Saved registers.  */
519   CORE_ADDR saved_regs[I386_NUM_SAVED_REGS];
520   CORE_ADDR saved_sp;
521   int saved_sp_reg;
522   int pc_in_eax;
523
524   /* Stack space reserved for local variables.  */
525   long locals;
526 };
527
528 /* Allocate and initialize a frame cache.  */
529
530 static struct i386_frame_cache *
531 i386_alloc_frame_cache (void)
532 {
533   struct i386_frame_cache *cache;
534   int i;
535
536   cache = FRAME_OBSTACK_ZALLOC (struct i386_frame_cache);
537
538   /* Base address.  */
539   cache->base = 0;
540   cache->sp_offset = -4;
541   cache->pc = 0;
542
543   /* Saved registers.  We initialize these to -1 since zero is a valid
544      offset (that's where %ebp is supposed to be stored).  */
545   for (i = 0; i < I386_NUM_SAVED_REGS; i++)
546     cache->saved_regs[i] = -1;
547   cache->saved_sp = 0;
548   cache->saved_sp_reg = -1;
549   cache->pc_in_eax = 0;
550
551   /* Frameless until proven otherwise.  */
552   cache->locals = -1;
553
554   return cache;
555 }
556
557 /* If the instruction at PC is a jump, return the address of its
558    target.  Otherwise, return PC.  */
559
560 static CORE_ADDR
561 i386_follow_jump (CORE_ADDR pc)
562 {
563   gdb_byte op;
564   long delta = 0;
565   int data16 = 0;
566
567   target_read_memory (pc, &op, 1);
568   if (op == 0x66)
569     {
570       data16 = 1;
571       op = read_memory_unsigned_integer (pc + 1, 1);
572     }
573
574   switch (op)
575     {
576     case 0xe9:
577       /* Relative jump: if data16 == 0, disp32, else disp16.  */
578       if (data16)
579         {
580           delta = read_memory_integer (pc + 2, 2);
581
582           /* Include the size of the jmp instruction (including the
583              0x66 prefix).  */
584           delta += 4;
585         }
586       else
587         {
588           delta = read_memory_integer (pc + 1, 4);
589
590           /* Include the size of the jmp instruction.  */
591           delta += 5;
592         }
593       break;
594     case 0xeb:
595       /* Relative jump, disp8 (ignore data16).  */
596       delta = read_memory_integer (pc + data16 + 1, 1);
597
598       delta += data16 + 2;
599       break;
600     }
601
602   return pc + delta;
603 }
604
605 /* Check whether PC points at a prologue for a function returning a
606    structure or union.  If so, it updates CACHE and returns the
607    address of the first instruction after the code sequence that
608    removes the "hidden" argument from the stack or CURRENT_PC,
609    whichever is smaller.  Otherwise, return PC.  */
610
611 static CORE_ADDR
612 i386_analyze_struct_return (CORE_ADDR pc, CORE_ADDR current_pc,
613                             struct i386_frame_cache *cache)
614 {
615   /* Functions that return a structure or union start with:
616
617         popl %eax             0x58
618         xchgl %eax, (%esp)    0x87 0x04 0x24
619      or xchgl %eax, 0(%esp)   0x87 0x44 0x24 0x00
620
621      (the System V compiler puts out the second `xchg' instruction,
622      and the assembler doesn't try to optimize it, so the 'sib' form
623      gets generated).  This sequence is used to get the address of the
624      return buffer for a function that returns a structure.  */
625   static gdb_byte proto1[3] = { 0x87, 0x04, 0x24 };
626   static gdb_byte proto2[4] = { 0x87, 0x44, 0x24, 0x00 };
627   gdb_byte buf[4];
628   gdb_byte op;
629
630   if (current_pc <= pc)
631     return pc;
632
633   target_read_memory (pc, &op, 1);
634
635   if (op != 0x58)               /* popl %eax */
636     return pc;
637
638   target_read_memory (pc + 1, buf, 4);
639   if (memcmp (buf, proto1, 3) != 0 && memcmp (buf, proto2, 4) != 0)
640     return pc;
641
642   if (current_pc == pc)
643     {
644       cache->sp_offset += 4;
645       return current_pc;
646     }
647
648   if (current_pc == pc + 1)
649     {
650       cache->pc_in_eax = 1;
651       return current_pc;
652     }
653   
654   if (buf[1] == proto1[1])
655     return pc + 4;
656   else
657     return pc + 5;
658 }
659
660 static CORE_ADDR
661 i386_skip_probe (CORE_ADDR pc)
662 {
663   /* A function may start with
664
665         pushl constant
666         call _probe
667         addl $4, %esp
668            
669      followed by
670
671         pushl %ebp
672
673      etc.  */
674   gdb_byte buf[8];
675   gdb_byte op;
676
677   target_read_memory (pc, &op, 1);
678
679   if (op == 0x68 || op == 0x6a)
680     {
681       int delta;
682
683       /* Skip past the `pushl' instruction; it has either a one-byte or a
684          four-byte operand, depending on the opcode.  */
685       if (op == 0x68)
686         delta = 5;
687       else
688         delta = 2;
689
690       /* Read the following 8 bytes, which should be `call _probe' (6
691          bytes) followed by `addl $4,%esp' (2 bytes).  */
692       read_memory (pc + delta, buf, sizeof (buf));
693       if (buf[0] == 0xe8 && buf[6] == 0xc4 && buf[7] == 0x4)
694         pc += delta + sizeof (buf);
695     }
696
697   return pc;
698 }
699
700 /* GCC 4.1 and later, can put code in the prologue to realign the
701    stack pointer.  Check whether PC points to such code, and update
702    CACHE accordingly.  Return the first instruction after the code
703    sequence or CURRENT_PC, whichever is smaller.  If we don't
704    recognize the code, return PC.  */
705
706 static CORE_ADDR
707 i386_analyze_stack_align (CORE_ADDR pc, CORE_ADDR current_pc,
708                           struct i386_frame_cache *cache)
709 {
710   /* There are 2 code sequences to re-align stack before the frame
711      gets set up:
712
713         1. Use a caller-saved saved register:
714
715                 leal  4(%esp), %reg
716                 andl  $-XXX, %esp
717                 pushl -4(%reg)
718
719         2. Use a callee-saved saved register:
720
721                 pushl %reg
722                 leal  8(%esp), %reg
723                 andl  $-XXX, %esp
724                 pushl -4(%reg)
725
726      "andl $-XXX, %esp" can be either 3 bytes or 6 bytes:
727      
728         0x83 0xe4 0xf0                  andl $-16, %esp
729         0x81 0xe4 0x00 0xff 0xff 0xff   andl $-256, %esp
730    */
731
732   gdb_byte buf[14];
733   int reg;
734   int offset, offset_and;
735   static int regnums[8] = {
736     I386_EAX_REGNUM,            /* %eax */
737     I386_ECX_REGNUM,            /* %ecx */
738     I386_EDX_REGNUM,            /* %edx */
739     I386_EBX_REGNUM,            /* %ebx */
740     I386_ESP_REGNUM,            /* %esp */
741     I386_EBP_REGNUM,            /* %ebp */
742     I386_ESI_REGNUM,            /* %esi */
743     I386_EDI_REGNUM             /* %edi */
744   };
745
746   if (target_read_memory (pc, buf, sizeof buf))
747     return pc;
748
749   /* Check caller-saved saved register.  The first instruction has
750      to be "leal 4(%esp), %reg".  */
751   if (buf[0] == 0x8d && buf[2] == 0x24 && buf[3] == 0x4)
752     {
753       /* MOD must be binary 10 and R/M must be binary 100.  */
754       if ((buf[1] & 0xc7) != 0x44)
755         return pc;
756
757       /* REG has register number.  */
758       reg = (buf[1] >> 3) & 7;
759       offset = 4;
760     }
761   else
762     {
763       /* Check callee-saved saved register.  The first instruction
764          has to be "pushl %reg".  */
765       if ((buf[0] & 0xf8) != 0x50)
766         return pc;
767
768       /* Get register.  */
769       reg = buf[0] & 0x7;
770
771       /* The next instruction has to be "leal 8(%esp), %reg".  */
772       if (buf[1] != 0x8d || buf[3] != 0x24 || buf[4] != 0x8)
773         return pc;
774
775       /* MOD must be binary 10 and R/M must be binary 100.  */
776       if ((buf[2] & 0xc7) != 0x44)
777         return pc;
778       
779       /* REG has register number.  Registers in pushl and leal have to
780          be the same.  */
781       if (reg != ((buf[2] >> 3) & 7))
782         return pc;
783
784       offset = 5;
785     }
786
787   /* Rigister can't be %esp nor %ebp.  */
788   if (reg == 4 || reg == 5)
789     return pc;
790
791   /* The next instruction has to be "andl $-XXX, %esp".  */
792   if (buf[offset + 1] != 0xe4
793       || (buf[offset] != 0x81 && buf[offset] != 0x83))
794     return pc;
795
796   offset_and = offset;
797   offset += buf[offset] == 0x81 ? 6 : 3;
798
799   /* The next instruction has to be "pushl -4(%reg)".  8bit -4 is
800      0xfc.  REG must be binary 110 and MOD must be binary 01.  */
801   if (buf[offset] != 0xff
802       || buf[offset + 2] != 0xfc
803       || (buf[offset + 1] & 0xf8) != 0x70)
804     return pc;
805
806   /* R/M has register.  Registers in leal and pushl have to be the
807      same.  */
808   if (reg != (buf[offset + 1] & 7))
809     return pc;
810
811   if (current_pc > pc + offset_and)
812     cache->saved_sp_reg = regnums[reg];
813
814   return min (pc + offset + 3, current_pc);
815 }
816
817 /* Maximum instruction length we need to handle.  */
818 #define I386_MAX_MATCHED_INSN_LEN       6
819
820 /* Instruction description.  */
821 struct i386_insn
822 {
823   size_t len;
824   gdb_byte insn[I386_MAX_MATCHED_INSN_LEN];
825   gdb_byte mask[I386_MAX_MATCHED_INSN_LEN];
826 };
827
828 /* Search for the instruction at PC in the list SKIP_INSNS.  Return
829    the first instruction description that matches.  Otherwise, return
830    NULL.  */
831
832 static struct i386_insn *
833 i386_match_insn (CORE_ADDR pc, struct i386_insn *skip_insns)
834 {
835   struct i386_insn *insn;
836   gdb_byte op;
837
838   target_read_memory (pc, &op, 1);
839
840   for (insn = skip_insns; insn->len > 0; insn++)
841     {
842       if ((op & insn->mask[0]) == insn->insn[0])
843         {
844           gdb_byte buf[I386_MAX_MATCHED_INSN_LEN - 1];
845           int insn_matched = 1;
846           size_t i;
847
848           gdb_assert (insn->len > 1);
849           gdb_assert (insn->len <= I386_MAX_MATCHED_INSN_LEN);
850
851           target_read_memory (pc + 1, buf, insn->len - 1);
852           for (i = 1; i < insn->len; i++)
853             {
854               if ((buf[i - 1] & insn->mask[i]) != insn->insn[i])
855                 insn_matched = 0;
856             }
857
858           if (insn_matched)
859             return insn;
860         }
861     }
862
863   return NULL;
864 }
865
866 /* Some special instructions that might be migrated by GCC into the
867    part of the prologue that sets up the new stack frame.  Because the
868    stack frame hasn't been setup yet, no registers have been saved
869    yet, and only the scratch registers %eax, %ecx and %edx can be
870    touched.  */
871
872 struct i386_insn i386_frame_setup_skip_insns[] =
873 {
874   /* Check for `movb imm8, r' and `movl imm32, r'. 
875     
876      ??? Should we handle 16-bit operand-sizes here?  */
877
878   /* `movb imm8, %al' and `movb imm8, %ah' */
879   /* `movb imm8, %cl' and `movb imm8, %ch' */
880   { 2, { 0xb0, 0x00 }, { 0xfa, 0x00 } },
881   /* `movb imm8, %dl' and `movb imm8, %dh' */
882   { 2, { 0xb2, 0x00 }, { 0xfb, 0x00 } },
883   /* `movl imm32, %eax' and `movl imm32, %ecx' */
884   { 5, { 0xb8 }, { 0xfe } },
885   /* `movl imm32, %edx' */
886   { 5, { 0xba }, { 0xff } },
887
888   /* Check for `mov imm32, r32'.  Note that there is an alternative
889      encoding for `mov m32, %eax'.
890
891      ??? Should we handle SIB adressing here?
892      ??? Should we handle 16-bit operand-sizes here?  */
893
894   /* `movl m32, %eax' */
895   { 5, { 0xa1 }, { 0xff } },
896   /* `movl m32, %eax' and `mov; m32, %ecx' */
897   { 6, { 0x89, 0x05 }, {0xff, 0xf7 } },
898   /* `movl m32, %edx' */
899   { 6, { 0x89, 0x15 }, {0xff, 0xff } },
900
901   /* Check for `xorl r32, r32' and the equivalent `subl r32, r32'.
902      Because of the symmetry, there are actually two ways to encode
903      these instructions; opcode bytes 0x29 and 0x2b for `subl' and
904      opcode bytes 0x31 and 0x33 for `xorl'.  */
905
906   /* `subl %eax, %eax' */
907   { 2, { 0x29, 0xc0 }, { 0xfd, 0xff } },
908   /* `subl %ecx, %ecx' */
909   { 2, { 0x29, 0xc9 }, { 0xfd, 0xff } },
910   /* `subl %edx, %edx' */
911   { 2, { 0x29, 0xd2 }, { 0xfd, 0xff } },
912   /* `xorl %eax, %eax' */
913   { 2, { 0x31, 0xc0 }, { 0xfd, 0xff } },
914   /* `xorl %ecx, %ecx' */
915   { 2, { 0x31, 0xc9 }, { 0xfd, 0xff } },
916   /* `xorl %edx, %edx' */
917   { 2, { 0x31, 0xd2 }, { 0xfd, 0xff } },
918   { 0 }
919 };
920
921
922 /* Check whether PC points to a no-op instruction.  */
923 static CORE_ADDR
924 i386_skip_noop (CORE_ADDR pc)
925 {
926   gdb_byte op;
927   int check = 1;
928
929   target_read_memory (pc, &op, 1);
930
931   while (check) 
932     {
933       check = 0;
934       /* Ignore `nop' instruction.  */
935       if (op == 0x90) 
936         {
937           pc += 1;
938           target_read_memory (pc, &op, 1);
939           check = 1;
940         }
941       /* Ignore no-op instruction `mov %edi, %edi'.
942          Microsoft system dlls often start with
943          a `mov %edi,%edi' instruction.
944          The 5 bytes before the function start are
945          filled with `nop' instructions.
946          This pattern can be used for hot-patching:
947          The `mov %edi, %edi' instruction can be replaced by a
948          near jump to the location of the 5 `nop' instructions
949          which can be replaced by a 32-bit jump to anywhere
950          in the 32-bit address space.  */
951
952       else if (op == 0x8b)
953         {
954           target_read_memory (pc + 1, &op, 1);
955           if (op == 0xff)
956             {
957               pc += 2;
958               target_read_memory (pc, &op, 1);
959               check = 1;
960             }
961         }
962     }
963   return pc; 
964 }
965
966 /* Check whether PC points at a code that sets up a new stack frame.
967    If so, it updates CACHE and returns the address of the first
968    instruction after the sequence that sets up the frame or LIMIT,
969    whichever is smaller.  If we don't recognize the code, return PC.  */
970
971 static CORE_ADDR
972 i386_analyze_frame_setup (CORE_ADDR pc, CORE_ADDR limit,
973                           struct i386_frame_cache *cache)
974 {
975   struct i386_insn *insn;
976   gdb_byte op;
977   int skip = 0;
978
979   if (limit <= pc)
980     return limit;
981
982   target_read_memory (pc, &op, 1);
983
984   if (op == 0x55)               /* pushl %ebp */
985     {
986       /* Take into account that we've executed the `pushl %ebp' that
987          starts this instruction sequence.  */
988       cache->saved_regs[I386_EBP_REGNUM] = 0;
989       cache->sp_offset += 4;
990       pc++;
991
992       /* If that's all, return now.  */
993       if (limit <= pc)
994         return limit;
995
996       /* Check for some special instructions that might be migrated by
997          GCC into the prologue and skip them.  At this point in the
998          prologue, code should only touch the scratch registers %eax,
999          %ecx and %edx, so while the number of posibilities is sheer,
1000          it is limited.
1001
1002          Make sure we only skip these instructions if we later see the
1003          `movl %esp, %ebp' that actually sets up the frame.  */
1004       while (pc + skip < limit)
1005         {
1006           insn = i386_match_insn (pc + skip, i386_frame_setup_skip_insns);
1007           if (insn == NULL)
1008             break;
1009
1010           skip += insn->len;
1011         }
1012
1013       /* If that's all, return now.  */
1014       if (limit <= pc + skip)
1015         return limit;
1016
1017       target_read_memory (pc + skip, &op, 1);
1018
1019       /* Check for `movl %esp, %ebp' -- can be written in two ways.  */
1020       switch (op)
1021         {
1022         case 0x8b:
1023           if (read_memory_unsigned_integer (pc + skip + 1, 1) != 0xec)
1024             return pc;
1025           break;
1026         case 0x89:
1027           if (read_memory_unsigned_integer (pc + skip + 1, 1) != 0xe5)
1028             return pc;
1029           break;
1030         default:
1031           return pc;
1032         }
1033
1034       /* OK, we actually have a frame.  We just don't know how large
1035          it is yet.  Set its size to zero.  We'll adjust it if
1036          necessary.  We also now commit to skipping the special
1037          instructions mentioned before.  */
1038       cache->locals = 0;
1039       pc += (skip + 2);
1040
1041       /* If that's all, return now.  */
1042       if (limit <= pc)
1043         return limit;
1044
1045       /* Check for stack adjustment 
1046
1047             subl $XXX, %esp
1048
1049          NOTE: You can't subtract a 16-bit immediate from a 32-bit
1050          reg, so we don't have to worry about a data16 prefix.  */
1051       target_read_memory (pc, &op, 1);
1052       if (op == 0x83)
1053         {
1054           /* `subl' with 8-bit immediate.  */
1055           if (read_memory_unsigned_integer (pc + 1, 1) != 0xec)
1056             /* Some instruction starting with 0x83 other than `subl'.  */
1057             return pc;
1058
1059           /* `subl' with signed 8-bit immediate (though it wouldn't
1060              make sense to be negative).  */
1061           cache->locals = read_memory_integer (pc + 2, 1);
1062           return pc + 3;
1063         }
1064       else if (op == 0x81)
1065         {
1066           /* Maybe it is `subl' with a 32-bit immediate.  */
1067           if (read_memory_unsigned_integer (pc + 1, 1) != 0xec)
1068             /* Some instruction starting with 0x81 other than `subl'.  */
1069             return pc;
1070
1071           /* It is `subl' with a 32-bit immediate.  */
1072           cache->locals = read_memory_integer (pc + 2, 4);
1073           return pc + 6;
1074         }
1075       else
1076         {
1077           /* Some instruction other than `subl'.  */
1078           return pc;
1079         }
1080     }
1081   else if (op == 0xc8)          /* enter */
1082     {
1083       cache->locals = read_memory_unsigned_integer (pc + 1, 2);
1084       return pc + 4;
1085     }
1086
1087   return pc;
1088 }
1089
1090 /* Check whether PC points at code that saves registers on the stack.
1091    If so, it updates CACHE and returns the address of the first
1092    instruction after the register saves or CURRENT_PC, whichever is
1093    smaller.  Otherwise, return PC.  */
1094
1095 static CORE_ADDR
1096 i386_analyze_register_saves (CORE_ADDR pc, CORE_ADDR current_pc,
1097                              struct i386_frame_cache *cache)
1098 {
1099   CORE_ADDR offset = 0;
1100   gdb_byte op;
1101   int i;
1102
1103   if (cache->locals > 0)
1104     offset -= cache->locals;
1105   for (i = 0; i < 8 && pc < current_pc; i++)
1106     {
1107       target_read_memory (pc, &op, 1);
1108       if (op < 0x50 || op > 0x57)
1109         break;
1110
1111       offset -= 4;
1112       cache->saved_regs[op - 0x50] = offset;
1113       cache->sp_offset += 4;
1114       pc++;
1115     }
1116
1117   return pc;
1118 }
1119
1120 /* Do a full analysis of the prologue at PC and update CACHE
1121    accordingly.  Bail out early if CURRENT_PC is reached.  Return the
1122    address where the analysis stopped.
1123
1124    We handle these cases:
1125
1126    The startup sequence can be at the start of the function, or the
1127    function can start with a branch to startup code at the end.
1128
1129    %ebp can be set up with either the 'enter' instruction, or "pushl
1130    %ebp, movl %esp, %ebp" (`enter' is too slow to be useful, but was
1131    once used in the System V compiler).
1132
1133    Local space is allocated just below the saved %ebp by either the
1134    'enter' instruction, or by "subl $<size>, %esp".  'enter' has a
1135    16-bit unsigned argument for space to allocate, and the 'addl'
1136    instruction could have either a signed byte, or 32-bit immediate.
1137
1138    Next, the registers used by this function are pushed.  With the
1139    System V compiler they will always be in the order: %edi, %esi,
1140    %ebx (and sometimes a harmless bug causes it to also save but not
1141    restore %eax); however, the code below is willing to see the pushes
1142    in any order, and will handle up to 8 of them.
1143  
1144    If the setup sequence is at the end of the function, then the next
1145    instruction will be a branch back to the start.  */
1146
1147 static CORE_ADDR
1148 i386_analyze_prologue (CORE_ADDR pc, CORE_ADDR current_pc,
1149                        struct i386_frame_cache *cache)
1150 {
1151   pc = i386_skip_noop (pc);
1152   pc = i386_follow_jump (pc);
1153   pc = i386_analyze_struct_return (pc, current_pc, cache);
1154   pc = i386_skip_probe (pc);
1155   pc = i386_analyze_stack_align (pc, current_pc, cache);
1156   pc = i386_analyze_frame_setup (pc, current_pc, cache);
1157   return i386_analyze_register_saves (pc, current_pc, cache);
1158 }
1159
1160 /* Return PC of first real instruction.  */
1161
1162 static CORE_ADDR
1163 i386_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
1164 {
1165   static gdb_byte pic_pat[6] =
1166   {
1167     0xe8, 0, 0, 0, 0,           /* call 0x0 */
1168     0x5b,                       /* popl %ebx */
1169   };
1170   struct i386_frame_cache cache;
1171   CORE_ADDR pc;
1172   gdb_byte op;
1173   int i;
1174
1175   cache.locals = -1;
1176   pc = i386_analyze_prologue (start_pc, 0xffffffff, &cache);
1177   if (cache.locals < 0)
1178     return start_pc;
1179
1180   /* Found valid frame setup.  */
1181
1182   /* The native cc on SVR4 in -K PIC mode inserts the following code
1183      to get the address of the global offset table (GOT) into register
1184      %ebx:
1185
1186         call    0x0
1187         popl    %ebx
1188         movl    %ebx,x(%ebp)    (optional)
1189         addl    y,%ebx
1190
1191      This code is with the rest of the prologue (at the end of the
1192      function), so we have to skip it to get to the first real
1193      instruction at the start of the function.  */
1194
1195   for (i = 0; i < 6; i++)
1196     {
1197       target_read_memory (pc + i, &op, 1);
1198       if (pic_pat[i] != op)
1199         break;
1200     }
1201   if (i == 6)
1202     {
1203       int delta = 6;
1204
1205       target_read_memory (pc + delta, &op, 1);
1206
1207       if (op == 0x89)           /* movl %ebx, x(%ebp) */
1208         {
1209           op = read_memory_unsigned_integer (pc + delta + 1, 1);
1210
1211           if (op == 0x5d)       /* One byte offset from %ebp.  */
1212             delta += 3;
1213           else if (op == 0x9d)  /* Four byte offset from %ebp.  */
1214             delta += 6;
1215           else                  /* Unexpected instruction.  */
1216             delta = 0;
1217
1218           target_read_memory (pc + delta, &op, 1);
1219         }
1220
1221       /* addl y,%ebx */
1222       if (delta > 0 && op == 0x81
1223           && read_memory_unsigned_integer (pc + delta + 1, 1) == 0xc3)
1224         {
1225           pc += delta + 6;
1226         }
1227     }
1228
1229   /* If the function starts with a branch (to startup code at the end)
1230      the last instruction should bring us back to the first
1231      instruction of the real code.  */
1232   if (i386_follow_jump (start_pc) != start_pc)
1233     pc = i386_follow_jump (pc);
1234
1235   return pc;
1236 }
1237
1238 /* Check that the code pointed to by PC corresponds to a call to
1239    __main, skip it if so.  Return PC otherwise.  */
1240
1241 CORE_ADDR
1242 i386_skip_main_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
1243 {
1244   gdb_byte op;
1245
1246   target_read_memory (pc, &op, 1);
1247   if (op == 0xe8)
1248     {
1249       gdb_byte buf[4];
1250
1251       if (target_read_memory (pc + 1, buf, sizeof buf) == 0)
1252         {
1253           /* Make sure address is computed correctly as a 32bit
1254              integer even if CORE_ADDR is 64 bit wide.  */
1255           struct minimal_symbol *s;
1256           CORE_ADDR call_dest = pc + 5 + extract_signed_integer (buf, 4);
1257
1258           call_dest = call_dest & 0xffffffffU;
1259           s = lookup_minimal_symbol_by_pc (call_dest);
1260           if (s != NULL
1261               && SYMBOL_LINKAGE_NAME (s) != NULL
1262               && strcmp (SYMBOL_LINKAGE_NAME (s), "__main") == 0)
1263             pc += 5;
1264         }
1265     }
1266
1267   return pc;
1268 }
1269
1270 /* This function is 64-bit safe.  */
1271
1272 static CORE_ADDR
1273 i386_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
1274 {
1275   gdb_byte buf[8];
1276
1277   frame_unwind_register (next_frame, gdbarch_pc_regnum (gdbarch), buf);
1278   return extract_typed_address (buf, builtin_type_void_func_ptr);
1279 }
1280 \f
1281
1282 /* Normal frames.  */
1283
1284 static struct i386_frame_cache *
1285 i386_frame_cache (struct frame_info *this_frame, void **this_cache)
1286 {
1287   struct i386_frame_cache *cache;
1288   gdb_byte buf[4];
1289   int i;
1290
1291   if (*this_cache)
1292     return *this_cache;
1293
1294   cache = i386_alloc_frame_cache ();
1295   *this_cache = cache;
1296
1297   /* In principle, for normal frames, %ebp holds the frame pointer,
1298      which holds the base address for the current stack frame.
1299      However, for functions that don't need it, the frame pointer is
1300      optional.  For these "frameless" functions the frame pointer is
1301      actually the frame pointer of the calling frame.  Signal
1302      trampolines are just a special case of a "frameless" function.
1303      They (usually) share their frame pointer with the frame that was
1304      in progress when the signal occurred.  */
1305
1306   get_frame_register (this_frame, I386_EBP_REGNUM, buf);
1307   cache->base = extract_unsigned_integer (buf, 4);
1308   if (cache->base == 0)
1309     return cache;
1310
1311   /* For normal frames, %eip is stored at 4(%ebp).  */
1312   cache->saved_regs[I386_EIP_REGNUM] = 4;
1313
1314   cache->pc = get_frame_func (this_frame);
1315   if (cache->pc != 0)
1316     i386_analyze_prologue (cache->pc, get_frame_pc (this_frame), cache);
1317
1318   if (cache->saved_sp_reg != -1)
1319     {
1320       /* Saved stack pointer has been saved.  */
1321       get_frame_register (this_frame, cache->saved_sp_reg, buf);
1322       cache->saved_sp = extract_unsigned_integer(buf, 4);
1323     }
1324
1325   if (cache->locals < 0)
1326     {
1327       /* We didn't find a valid frame, which means that CACHE->base
1328          currently holds the frame pointer for our calling frame.  If
1329          we're at the start of a function, or somewhere half-way its
1330          prologue, the function's frame probably hasn't been fully
1331          setup yet.  Try to reconstruct the base address for the stack
1332          frame by looking at the stack pointer.  For truly "frameless"
1333          functions this might work too.  */
1334
1335       if (cache->saved_sp_reg != -1)
1336         {
1337           /* We're halfway aligning the stack.  */
1338           cache->base = ((cache->saved_sp - 4) & 0xfffffff0) - 4;
1339           cache->saved_regs[I386_EIP_REGNUM] = cache->saved_sp - 4;
1340
1341           /* This will be added back below.  */
1342           cache->saved_regs[I386_EIP_REGNUM] -= cache->base;
1343         }
1344       else
1345         {
1346           get_frame_register (this_frame, I386_ESP_REGNUM, buf);
1347           cache->base = extract_unsigned_integer (buf, 4) + cache->sp_offset;
1348         }
1349     }
1350
1351   /* Now that we have the base address for the stack frame we can
1352      calculate the value of %esp in the calling frame.  */
1353   if (cache->saved_sp == 0)
1354     cache->saved_sp = cache->base + 8;
1355
1356   /* Adjust all the saved registers such that they contain addresses
1357      instead of offsets.  */
1358   for (i = 0; i < I386_NUM_SAVED_REGS; i++)
1359     if (cache->saved_regs[i] != -1)
1360       cache->saved_regs[i] += cache->base;
1361
1362   return cache;
1363 }
1364
1365 static void
1366 i386_frame_this_id (struct frame_info *this_frame, void **this_cache,
1367                     struct frame_id *this_id)
1368 {
1369   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
1370
1371   /* This marks the outermost frame.  */
1372   if (cache->base == 0)
1373     return;
1374
1375   /* See the end of i386_push_dummy_call.  */
1376   (*this_id) = frame_id_build (cache->base + 8, cache->pc);
1377 }
1378
1379 static struct value *
1380 i386_frame_prev_register (struct frame_info *this_frame, void **this_cache,
1381                           int regnum)
1382 {
1383   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
1384
1385   gdb_assert (regnum >= 0);
1386
1387   /* The System V ABI says that:
1388
1389      "The flags register contains the system flags, such as the
1390      direction flag and the carry flag.  The direction flag must be
1391      set to the forward (that is, zero) direction before entry and
1392      upon exit from a function.  Other user flags have no specified
1393      role in the standard calling sequence and are not preserved."
1394
1395      To guarantee the "upon exit" part of that statement we fake a
1396      saved flags register that has its direction flag cleared.
1397
1398      Note that GCC doesn't seem to rely on the fact that the direction
1399      flag is cleared after a function return; it always explicitly
1400      clears the flag before operations where it matters.
1401
1402      FIXME: kettenis/20030316: I'm not quite sure whether this is the
1403      right thing to do.  The way we fake the flags register here makes
1404      it impossible to change it.  */
1405
1406   if (regnum == I386_EFLAGS_REGNUM)
1407     {
1408       ULONGEST val;
1409
1410       val = get_frame_register_unsigned (this_frame, regnum);
1411       val &= ~(1 << 10);
1412       return frame_unwind_got_constant (this_frame, regnum, val);
1413     }
1414
1415   if (regnum == I386_EIP_REGNUM && cache->pc_in_eax)
1416     return frame_unwind_got_register (this_frame, regnum, I386_EAX_REGNUM);
1417
1418   if (regnum == I386_ESP_REGNUM && cache->saved_sp)
1419     return frame_unwind_got_constant (this_frame, regnum, cache->saved_sp);
1420
1421   if (regnum < I386_NUM_SAVED_REGS && cache->saved_regs[regnum] != -1)
1422     return frame_unwind_got_memory (this_frame, regnum,
1423                                     cache->saved_regs[regnum]);
1424
1425   return frame_unwind_got_register (this_frame, regnum, regnum);
1426 }
1427
1428 static const struct frame_unwind i386_frame_unwind =
1429 {
1430   NORMAL_FRAME,
1431   i386_frame_this_id,
1432   i386_frame_prev_register,
1433   NULL,
1434   default_frame_sniffer
1435 };
1436 \f
1437
1438 /* Signal trampolines.  */
1439
1440 static struct i386_frame_cache *
1441 i386_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
1442 {
1443   struct i386_frame_cache *cache;
1444   struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
1445   CORE_ADDR addr;
1446   gdb_byte buf[4];
1447
1448   if (*this_cache)
1449     return *this_cache;
1450
1451   cache = i386_alloc_frame_cache ();
1452
1453   get_frame_register (this_frame, I386_ESP_REGNUM, buf);
1454   cache->base = extract_unsigned_integer (buf, 4) - 4;
1455
1456   addr = tdep->sigcontext_addr (this_frame);
1457   if (tdep->sc_reg_offset)
1458     {
1459       int i;
1460
1461       gdb_assert (tdep->sc_num_regs <= I386_NUM_SAVED_REGS);
1462
1463       for (i = 0; i < tdep->sc_num_regs; i++)
1464         if (tdep->sc_reg_offset[i] != -1)
1465           cache->saved_regs[i] = addr + tdep->sc_reg_offset[i];
1466     }
1467   else
1468     {
1469       cache->saved_regs[I386_EIP_REGNUM] = addr + tdep->sc_pc_offset;
1470       cache->saved_regs[I386_ESP_REGNUM] = addr + tdep->sc_sp_offset;
1471     }
1472
1473   *this_cache = cache;
1474   return cache;
1475 }
1476
1477 static void
1478 i386_sigtramp_frame_this_id (struct frame_info *this_frame, void **this_cache,
1479                              struct frame_id *this_id)
1480 {
1481   struct i386_frame_cache *cache =
1482     i386_sigtramp_frame_cache (this_frame, this_cache);
1483
1484   /* See the end of i386_push_dummy_call.  */
1485   (*this_id) = frame_id_build (cache->base + 8, get_frame_pc (this_frame));
1486 }
1487
1488 static struct value *
1489 i386_sigtramp_frame_prev_register (struct frame_info *this_frame,
1490                                    void **this_cache, int regnum)
1491 {
1492   /* Make sure we've initialized the cache.  */
1493   i386_sigtramp_frame_cache (this_frame, this_cache);
1494
1495   return i386_frame_prev_register (this_frame, this_cache, regnum);
1496 }
1497
1498 static int
1499 i386_sigtramp_frame_sniffer (const struct frame_unwind *self,
1500                              struct frame_info *this_frame,
1501                              void **this_prologue_cache)
1502 {
1503   struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
1504
1505   /* We shouldn't even bother if we don't have a sigcontext_addr
1506      handler.  */
1507   if (tdep->sigcontext_addr == NULL)
1508     return 0;
1509
1510   if (tdep->sigtramp_p != NULL)
1511     {
1512       if (tdep->sigtramp_p (this_frame))
1513         return 1;
1514     }
1515
1516   if (tdep->sigtramp_start != 0)
1517     {
1518       CORE_ADDR pc = get_frame_pc (this_frame);
1519
1520       gdb_assert (tdep->sigtramp_end != 0);
1521       if (pc >= tdep->sigtramp_start && pc < tdep->sigtramp_end)
1522         return 1;
1523     }
1524
1525   return 0;
1526 }
1527
1528 static const struct frame_unwind i386_sigtramp_frame_unwind =
1529 {
1530   SIGTRAMP_FRAME,
1531   i386_sigtramp_frame_this_id,
1532   i386_sigtramp_frame_prev_register,
1533   NULL,
1534   i386_sigtramp_frame_sniffer
1535 };
1536 \f
1537
1538 static CORE_ADDR
1539 i386_frame_base_address (struct frame_info *this_frame, void **this_cache)
1540 {
1541   struct i386_frame_cache *cache = i386_frame_cache (this_frame, this_cache);
1542
1543   return cache->base;
1544 }
1545
1546 static const struct frame_base i386_frame_base =
1547 {
1548   &i386_frame_unwind,
1549   i386_frame_base_address,
1550   i386_frame_base_address,
1551   i386_frame_base_address
1552 };
1553
1554 static struct frame_id
1555 i386_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
1556 {
1557   CORE_ADDR fp;
1558
1559   fp = get_frame_register_unsigned (this_frame, I386_EBP_REGNUM);
1560
1561   /* See the end of i386_push_dummy_call.  */
1562   return frame_id_build (fp + 8, get_frame_pc (this_frame));
1563 }
1564 \f
1565
1566 /* Figure out where the longjmp will land.  Slurp the args out of the
1567    stack.  We expect the first arg to be a pointer to the jmp_buf
1568    structure from which we extract the address that we will land at.
1569    This address is copied into PC.  This routine returns non-zero on
1570    success.  */
1571
1572 static int
1573 i386_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
1574 {
1575   gdb_byte buf[4];
1576   CORE_ADDR sp, jb_addr;
1577   struct gdbarch *gdbarch = get_frame_arch (frame);
1578   int jb_pc_offset = gdbarch_tdep (gdbarch)->jb_pc_offset;
1579
1580   /* If JB_PC_OFFSET is -1, we have no way to find out where the
1581      longjmp will land.  */
1582   if (jb_pc_offset == -1)
1583     return 0;
1584
1585   get_frame_register (frame, I386_ESP_REGNUM, buf);
1586   sp = extract_unsigned_integer (buf, 4);
1587   if (target_read_memory (sp + 4, buf, 4))
1588     return 0;
1589
1590   jb_addr = extract_unsigned_integer (buf, 4);
1591   if (target_read_memory (jb_addr + jb_pc_offset, buf, 4))
1592     return 0;
1593
1594   *pc = extract_unsigned_integer (buf, 4);
1595   return 1;
1596 }
1597 \f
1598
1599 /* Check whether TYPE must be 16-byte-aligned when passed as a
1600    function argument.  16-byte vectors, _Decimal128 and structures or
1601    unions containing such types must be 16-byte-aligned; other
1602    arguments are 4-byte-aligned.  */
1603
1604 static int
1605 i386_16_byte_align_p (struct type *type)
1606 {
1607   type = check_typedef (type);
1608   if ((TYPE_CODE (type) == TYPE_CODE_DECFLOAT
1609        || (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)))
1610       && TYPE_LENGTH (type) == 16)
1611     return 1;
1612   if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
1613     return i386_16_byte_align_p (TYPE_TARGET_TYPE (type));
1614   if (TYPE_CODE (type) == TYPE_CODE_STRUCT
1615       || TYPE_CODE (type) == TYPE_CODE_UNION)
1616     {
1617       int i;
1618       for (i = 0; i < TYPE_NFIELDS (type); i++)
1619         {
1620           if (i386_16_byte_align_p (TYPE_FIELD_TYPE (type, i)))
1621             return 1;
1622         }
1623     }
1624   return 0;
1625 }
1626
1627 static CORE_ADDR
1628 i386_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
1629                       struct regcache *regcache, CORE_ADDR bp_addr, int nargs,
1630                       struct value **args, CORE_ADDR sp, int struct_return,
1631                       CORE_ADDR struct_addr)
1632 {
1633   gdb_byte buf[4];
1634   int i;
1635   int write_pass;
1636   int args_space = 0;
1637
1638   /* Determine the total space required for arguments and struct
1639      return address in a first pass (allowing for 16-byte-aligned
1640      arguments), then push arguments in a second pass.  */
1641
1642   for (write_pass = 0; write_pass < 2; write_pass++)
1643     {
1644       int args_space_used = 0;
1645       int have_16_byte_aligned_arg = 0;
1646
1647       if (struct_return)
1648         {
1649           if (write_pass)
1650             {
1651               /* Push value address.  */
1652               store_unsigned_integer (buf, 4, struct_addr);
1653               write_memory (sp, buf, 4);
1654               args_space_used += 4;
1655             }
1656           else
1657             args_space += 4;
1658         }
1659
1660       for (i = 0; i < nargs; i++)
1661         {
1662           int len = TYPE_LENGTH (value_enclosing_type (args[i]));
1663
1664           if (write_pass)
1665             {
1666               if (i386_16_byte_align_p (value_enclosing_type (args[i])))
1667                 args_space_used = align_up (args_space_used, 16);
1668
1669               write_memory (sp + args_space_used,
1670                             value_contents_all (args[i]), len);
1671               /* The System V ABI says that:
1672
1673               "An argument's size is increased, if necessary, to make it a
1674               multiple of [32-bit] words.  This may require tail padding,
1675               depending on the size of the argument."
1676
1677               This makes sure the stack stays word-aligned.  */
1678               args_space_used += align_up (len, 4);
1679             }
1680           else
1681             {
1682               if (i386_16_byte_align_p (value_enclosing_type (args[i])))
1683                 {
1684                   args_space = align_up (args_space, 16);
1685                   have_16_byte_aligned_arg = 1;
1686                 }
1687               args_space += align_up (len, 4);
1688             }
1689         }
1690
1691       if (!write_pass)
1692         {
1693           if (have_16_byte_aligned_arg)
1694             args_space = align_up (args_space, 16);
1695           sp -= args_space;
1696         }
1697     }
1698
1699   /* Store return address.  */
1700   sp -= 4;
1701   store_unsigned_integer (buf, 4, bp_addr);
1702   write_memory (sp, buf, 4);
1703
1704   /* Finally, update the stack pointer...  */
1705   store_unsigned_integer (buf, 4, sp);
1706   regcache_cooked_write (regcache, I386_ESP_REGNUM, buf);
1707
1708   /* ...and fake a frame pointer.  */
1709   regcache_cooked_write (regcache, I386_EBP_REGNUM, buf);
1710
1711   /* MarkK wrote: This "+ 8" is all over the place:
1712      (i386_frame_this_id, i386_sigtramp_frame_this_id,
1713      i386_dummy_id).  It's there, since all frame unwinders for
1714      a given target have to agree (within a certain margin) on the
1715      definition of the stack address of a frame.  Otherwise
1716      frame_id_inner() won't work correctly.  Since DWARF2/GCC uses the
1717      stack address *before* the function call as a frame's CFA.  On
1718      the i386, when %ebp is used as a frame pointer, the offset
1719      between the contents %ebp and the CFA as defined by GCC.  */
1720   return sp + 8;
1721 }
1722
1723 /* These registers are used for returning integers (and on some
1724    targets also for returning `struct' and `union' values when their
1725    size and alignment match an integer type).  */
1726 #define LOW_RETURN_REGNUM       I386_EAX_REGNUM /* %eax */
1727 #define HIGH_RETURN_REGNUM      I386_EDX_REGNUM /* %edx */
1728
1729 /* Read, for architecture GDBARCH, a function return value of TYPE
1730    from REGCACHE, and copy that into VALBUF.  */
1731
1732 static void
1733 i386_extract_return_value (struct gdbarch *gdbarch, struct type *type,
1734                            struct regcache *regcache, gdb_byte *valbuf)
1735 {
1736   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1737   int len = TYPE_LENGTH (type);
1738   gdb_byte buf[I386_MAX_REGISTER_SIZE];
1739
1740   if (TYPE_CODE (type) == TYPE_CODE_FLT)
1741     {
1742       if (tdep->st0_regnum < 0)
1743         {
1744           warning (_("Cannot find floating-point return value."));
1745           memset (valbuf, 0, len);
1746           return;
1747         }
1748
1749       /* Floating-point return values can be found in %st(0).  Convert
1750          its contents to the desired type.  This is probably not
1751          exactly how it would happen on the target itself, but it is
1752          the best we can do.  */
1753       regcache_raw_read (regcache, I386_ST0_REGNUM, buf);
1754       convert_typed_floating (buf, builtin_type_i387_ext, valbuf, type);
1755     }
1756   else
1757     {
1758       int low_size = register_size (gdbarch, LOW_RETURN_REGNUM);
1759       int high_size = register_size (gdbarch, HIGH_RETURN_REGNUM);
1760
1761       if (len <= low_size)
1762         {
1763           regcache_raw_read (regcache, LOW_RETURN_REGNUM, buf);
1764           memcpy (valbuf, buf, len);
1765         }
1766       else if (len <= (low_size + high_size))
1767         {
1768           regcache_raw_read (regcache, LOW_RETURN_REGNUM, buf);
1769           memcpy (valbuf, buf, low_size);
1770           regcache_raw_read (regcache, HIGH_RETURN_REGNUM, buf);
1771           memcpy (valbuf + low_size, buf, len - low_size);
1772         }
1773       else
1774         internal_error (__FILE__, __LINE__,
1775                         _("Cannot extract return value of %d bytes long."), len);
1776     }
1777 }
1778
1779 /* Write, for architecture GDBARCH, a function return value of TYPE
1780    from VALBUF into REGCACHE.  */
1781
1782 static void
1783 i386_store_return_value (struct gdbarch *gdbarch, struct type *type,
1784                          struct regcache *regcache, const gdb_byte *valbuf)
1785 {
1786   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1787   int len = TYPE_LENGTH (type);
1788
1789   if (TYPE_CODE (type) == TYPE_CODE_FLT)
1790     {
1791       ULONGEST fstat;
1792       gdb_byte buf[I386_MAX_REGISTER_SIZE];
1793
1794       if (tdep->st0_regnum < 0)
1795         {
1796           warning (_("Cannot set floating-point return value."));
1797           return;
1798         }
1799
1800       /* Returning floating-point values is a bit tricky.  Apart from
1801          storing the return value in %st(0), we have to simulate the
1802          state of the FPU at function return point.  */
1803
1804       /* Convert the value found in VALBUF to the extended
1805          floating-point format used by the FPU.  This is probably
1806          not exactly how it would happen on the target itself, but
1807          it is the best we can do.  */
1808       convert_typed_floating (valbuf, type, buf, builtin_type_i387_ext);
1809       regcache_raw_write (regcache, I386_ST0_REGNUM, buf);
1810
1811       /* Set the top of the floating-point register stack to 7.  The
1812          actual value doesn't really matter, but 7 is what a normal
1813          function return would end up with if the program started out
1814          with a freshly initialized FPU.  */
1815       regcache_raw_read_unsigned (regcache, I387_FSTAT_REGNUM (tdep), &fstat);
1816       fstat |= (7 << 11);
1817       regcache_raw_write_unsigned (regcache, I387_FSTAT_REGNUM (tdep), fstat);
1818
1819       /* Mark %st(1) through %st(7) as empty.  Since we set the top of
1820          the floating-point register stack to 7, the appropriate value
1821          for the tag word is 0x3fff.  */
1822       regcache_raw_write_unsigned (regcache, I387_FTAG_REGNUM (tdep), 0x3fff);
1823     }
1824   else
1825     {
1826       int low_size = register_size (gdbarch, LOW_RETURN_REGNUM);
1827       int high_size = register_size (gdbarch, HIGH_RETURN_REGNUM);
1828
1829       if (len <= low_size)
1830         regcache_raw_write_part (regcache, LOW_RETURN_REGNUM, 0, len, valbuf);
1831       else if (len <= (low_size + high_size))
1832         {
1833           regcache_raw_write (regcache, LOW_RETURN_REGNUM, valbuf);
1834           regcache_raw_write_part (regcache, HIGH_RETURN_REGNUM, 0,
1835                                    len - low_size, valbuf + low_size);
1836         }
1837       else
1838         internal_error (__FILE__, __LINE__,
1839                         _("Cannot store return value of %d bytes long."), len);
1840     }
1841 }
1842 \f
1843
1844 /* This is the variable that is set with "set struct-convention", and
1845    its legitimate values.  */
1846 static const char default_struct_convention[] = "default";
1847 static const char pcc_struct_convention[] = "pcc";
1848 static const char reg_struct_convention[] = "reg";
1849 static const char *valid_conventions[] =
1850 {
1851   default_struct_convention,
1852   pcc_struct_convention,
1853   reg_struct_convention,
1854   NULL
1855 };
1856 static const char *struct_convention = default_struct_convention;
1857
1858 /* Return non-zero if TYPE, which is assumed to be a structure,
1859    a union type, or an array type, should be returned in registers
1860    for architecture GDBARCH.  */
1861
1862 static int
1863 i386_reg_struct_return_p (struct gdbarch *gdbarch, struct type *type)
1864 {
1865   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
1866   enum type_code code = TYPE_CODE (type);
1867   int len = TYPE_LENGTH (type);
1868
1869   gdb_assert (code == TYPE_CODE_STRUCT
1870               || code == TYPE_CODE_UNION
1871               || code == TYPE_CODE_ARRAY);
1872
1873   if (struct_convention == pcc_struct_convention
1874       || (struct_convention == default_struct_convention
1875           && tdep->struct_return == pcc_struct_return))
1876     return 0;
1877
1878   /* Structures consisting of a single `float', `double' or 'long
1879      double' member are returned in %st(0).  */
1880   if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
1881     {
1882       type = check_typedef (TYPE_FIELD_TYPE (type, 0));
1883       if (TYPE_CODE (type) == TYPE_CODE_FLT)
1884         return (len == 4 || len == 8 || len == 12);
1885     }
1886
1887   return (len == 1 || len == 2 || len == 4 || len == 8);
1888 }
1889
1890 /* Determine, for architecture GDBARCH, how a return value of TYPE
1891    should be returned.  If it is supposed to be returned in registers,
1892    and READBUF is non-zero, read the appropriate value from REGCACHE,
1893    and copy it into READBUF.  If WRITEBUF is non-zero, write the value
1894    from WRITEBUF into REGCACHE.  */
1895
1896 static enum return_value_convention
1897 i386_return_value (struct gdbarch *gdbarch, struct type *func_type,
1898                    struct type *type, struct regcache *regcache,
1899                    gdb_byte *readbuf, const gdb_byte *writebuf)
1900 {
1901   enum type_code code = TYPE_CODE (type);
1902
1903   if (((code == TYPE_CODE_STRUCT
1904         || code == TYPE_CODE_UNION
1905         || code == TYPE_CODE_ARRAY)
1906        && !i386_reg_struct_return_p (gdbarch, type))
1907       /* 128-bit decimal float uses the struct return convention.  */
1908       || (code == TYPE_CODE_DECFLOAT && TYPE_LENGTH (type) == 16))
1909     {
1910       /* The System V ABI says that:
1911
1912          "A function that returns a structure or union also sets %eax
1913          to the value of the original address of the caller's area
1914          before it returns.  Thus when the caller receives control
1915          again, the address of the returned object resides in register
1916          %eax and can be used to access the object."
1917
1918          So the ABI guarantees that we can always find the return
1919          value just after the function has returned.  */
1920
1921       /* Note that the ABI doesn't mention functions returning arrays,
1922          which is something possible in certain languages such as Ada.
1923          In this case, the value is returned as if it was wrapped in
1924          a record, so the convention applied to records also applies
1925          to arrays.  */
1926
1927       if (readbuf)
1928         {
1929           ULONGEST addr;
1930
1931           regcache_raw_read_unsigned (regcache, I386_EAX_REGNUM, &addr);
1932           read_memory (addr, readbuf, TYPE_LENGTH (type));
1933         }
1934
1935       return RETURN_VALUE_ABI_RETURNS_ADDRESS;
1936     }
1937
1938   /* This special case is for structures consisting of a single
1939      `float', `double' or 'long double' member.  These structures are
1940      returned in %st(0).  For these structures, we call ourselves
1941      recursively, changing TYPE into the type of the first member of
1942      the structure.  Since that should work for all structures that
1943      have only one member, we don't bother to check the member's type
1944      here.  */
1945   if (code == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
1946     {
1947       type = check_typedef (TYPE_FIELD_TYPE (type, 0));
1948       return i386_return_value (gdbarch, func_type, type, regcache,
1949                                 readbuf, writebuf);
1950     }
1951
1952   if (readbuf)
1953     i386_extract_return_value (gdbarch, type, regcache, readbuf);
1954   if (writebuf)
1955     i386_store_return_value (gdbarch, type, regcache, writebuf);
1956
1957   return RETURN_VALUE_REGISTER_CONVENTION;
1958 }
1959 \f
1960
1961 /* Type for %eflags.  */
1962 struct type *i386_eflags_type;
1963
1964 /* Type for %mxcsr.  */
1965 struct type *i386_mxcsr_type;
1966
1967 /* Construct types for ISA-specific registers.  */
1968 static void
1969 i386_init_types (void)
1970 {
1971   struct type *type;
1972
1973   type = init_flags_type ("builtin_type_i386_eflags", 4);
1974   append_flags_type_flag (type, 0, "CF");
1975   append_flags_type_flag (type, 1, NULL);
1976   append_flags_type_flag (type, 2, "PF");
1977   append_flags_type_flag (type, 4, "AF");
1978   append_flags_type_flag (type, 6, "ZF");
1979   append_flags_type_flag (type, 7, "SF");
1980   append_flags_type_flag (type, 8, "TF");
1981   append_flags_type_flag (type, 9, "IF");
1982   append_flags_type_flag (type, 10, "DF");
1983   append_flags_type_flag (type, 11, "OF");
1984   append_flags_type_flag (type, 14, "NT");
1985   append_flags_type_flag (type, 16, "RF");
1986   append_flags_type_flag (type, 17, "VM");
1987   append_flags_type_flag (type, 18, "AC");
1988   append_flags_type_flag (type, 19, "VIF");
1989   append_flags_type_flag (type, 20, "VIP");
1990   append_flags_type_flag (type, 21, "ID");
1991   i386_eflags_type = type;
1992
1993   type = init_flags_type ("builtin_type_i386_mxcsr", 4);
1994   append_flags_type_flag (type, 0, "IE");
1995   append_flags_type_flag (type, 1, "DE");
1996   append_flags_type_flag (type, 2, "ZE");
1997   append_flags_type_flag (type, 3, "OE");
1998   append_flags_type_flag (type, 4, "UE");
1999   append_flags_type_flag (type, 5, "PE");
2000   append_flags_type_flag (type, 6, "DAZ");
2001   append_flags_type_flag (type, 7, "IM");
2002   append_flags_type_flag (type, 8, "DM");
2003   append_flags_type_flag (type, 9, "ZM");
2004   append_flags_type_flag (type, 10, "OM");
2005   append_flags_type_flag (type, 11, "UM");
2006   append_flags_type_flag (type, 12, "PM");
2007   append_flags_type_flag (type, 15, "FZ");
2008   i386_mxcsr_type = type;
2009 }
2010
2011 /* Construct vector type for MMX registers.  */
2012 struct type *
2013 i386_mmx_type (struct gdbarch *gdbarch)
2014 {
2015   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2016
2017   if (!tdep->i386_mmx_type)
2018     {
2019       /* The type we're building is this: */
2020 #if 0
2021       union __gdb_builtin_type_vec64i
2022       {
2023         int64_t uint64;
2024         int32_t v2_int32[2];
2025         int16_t v4_int16[4];
2026         int8_t v8_int8[8];
2027       };
2028 #endif
2029
2030       struct type *t;
2031
2032       t = init_composite_type ("__gdb_builtin_type_vec64i", TYPE_CODE_UNION);
2033       append_composite_type_field (t, "uint64", builtin_type_int64);
2034       append_composite_type_field (t, "v2_int32",
2035                                    init_vector_type (builtin_type_int32, 2));
2036       append_composite_type_field (t, "v4_int16",
2037                                    init_vector_type (builtin_type_int16, 4));
2038       append_composite_type_field (t, "v8_int8",
2039                                    init_vector_type (builtin_type_int8, 8));
2040
2041       TYPE_VECTOR (t) = 1;
2042       TYPE_NAME (t) = "builtin_type_vec64i";
2043       tdep->i386_mmx_type = t;
2044     }
2045
2046   return tdep->i386_mmx_type;
2047 }
2048
2049 struct type *
2050 i386_sse_type (struct gdbarch *gdbarch)
2051 {
2052   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2053
2054   if (!tdep->i386_sse_type)
2055     {
2056       /* The type we're building is this: */
2057 #if 0
2058       union __gdb_builtin_type_vec128i
2059       {
2060         int128_t uint128;
2061         int64_t v2_int64[2];
2062         int32_t v4_int32[4];
2063         int16_t v8_int16[8];
2064         int8_t v16_int8[16];
2065         double v2_double[2];
2066         float v4_float[4];
2067       };
2068 #endif
2069
2070       struct type *t;
2071
2072       t = init_composite_type ("__gdb_builtin_type_vec128i", TYPE_CODE_UNION);
2073       append_composite_type_field (t, "v4_float",
2074                                    init_vector_type (builtin_type_float, 4));
2075       append_composite_type_field (t, "v2_double",
2076                                    init_vector_type (builtin_type_double, 2));
2077       append_composite_type_field (t, "v16_int8",
2078                                    init_vector_type (builtin_type_int8, 16));
2079       append_composite_type_field (t, "v8_int16",
2080                                    init_vector_type (builtin_type_int16, 8));
2081       append_composite_type_field (t, "v4_int32",
2082                                    init_vector_type (builtin_type_int32, 4));
2083       append_composite_type_field (t, "v2_int64",
2084                                    init_vector_type (builtin_type_int64, 2));
2085       append_composite_type_field (t, "uint128", builtin_type_int128);
2086
2087       TYPE_VECTOR (t) = 1;
2088       TYPE_NAME (t) = "builtin_type_vec128i";
2089       tdep->i386_sse_type = t;
2090     }
2091
2092   return tdep->i386_sse_type;
2093 }
2094
2095 /* Return the GDB type object for the "standard" data type of data in
2096    register REGNUM.  Perhaps %esi and %edi should go here, but
2097    potentially they could be used for things other than address.  */
2098
2099 static struct type *
2100 i386_register_type (struct gdbarch *gdbarch, int regnum)
2101 {
2102   if (regnum == I386_EIP_REGNUM)
2103     return builtin_type_void_func_ptr;
2104
2105   if (regnum == I386_EFLAGS_REGNUM)
2106     return i386_eflags_type;
2107
2108   if (regnum == I386_EBP_REGNUM || regnum == I386_ESP_REGNUM)
2109     return builtin_type_void_data_ptr;
2110
2111   if (i386_fp_regnum_p (gdbarch, regnum))
2112     return builtin_type_i387_ext;
2113
2114   if (i386_mmx_regnum_p (gdbarch, regnum))
2115     return i386_mmx_type (gdbarch);
2116
2117   if (i386_sse_regnum_p (gdbarch, regnum))
2118     return i386_sse_type (gdbarch);
2119
2120   if (regnum == I387_MXCSR_REGNUM (gdbarch_tdep (gdbarch)))
2121     return i386_mxcsr_type;
2122
2123   return builtin_type_int;
2124 }
2125
2126 /* Map a cooked register onto a raw register or memory.  For the i386,
2127    the MMX registers need to be mapped onto floating point registers.  */
2128
2129 static int
2130 i386_mmx_regnum_to_fp_regnum (struct regcache *regcache, int regnum)
2131 {
2132   struct gdbarch_tdep *tdep = gdbarch_tdep (get_regcache_arch (regcache));
2133   int mmxreg, fpreg;
2134   ULONGEST fstat;
2135   int tos;
2136
2137   mmxreg = regnum - tdep->mm0_regnum;
2138   regcache_raw_read_unsigned (regcache, I387_FSTAT_REGNUM (tdep), &fstat);
2139   tos = (fstat >> 11) & 0x7;
2140   fpreg = (mmxreg + tos) % 8;
2141
2142   return (I387_ST0_REGNUM (tdep) + fpreg);
2143 }
2144
2145 static void
2146 i386_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
2147                            int regnum, gdb_byte *buf)
2148 {
2149   if (i386_mmx_regnum_p (gdbarch, regnum))
2150     {
2151       gdb_byte mmx_buf[MAX_REGISTER_SIZE];
2152       int fpnum = i386_mmx_regnum_to_fp_regnum (regcache, regnum);
2153
2154       /* Extract (always little endian).  */
2155       regcache_raw_read (regcache, fpnum, mmx_buf);
2156       memcpy (buf, mmx_buf, register_size (gdbarch, regnum));
2157     }
2158   else
2159     regcache_raw_read (regcache, regnum, buf);
2160 }
2161
2162 static void
2163 i386_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
2164                             int regnum, const gdb_byte *buf)
2165 {
2166   if (i386_mmx_regnum_p (gdbarch, regnum))
2167     {
2168       gdb_byte mmx_buf[MAX_REGISTER_SIZE];
2169       int fpnum = i386_mmx_regnum_to_fp_regnum (regcache, regnum);
2170
2171       /* Read ...  */
2172       regcache_raw_read (regcache, fpnum, mmx_buf);
2173       /* ... Modify ... (always little endian).  */
2174       memcpy (mmx_buf, buf, register_size (gdbarch, regnum));
2175       /* ... Write.  */
2176       regcache_raw_write (regcache, fpnum, mmx_buf);
2177     }
2178   else
2179     regcache_raw_write (regcache, regnum, buf);
2180 }
2181 \f
2182
2183 /* Return the register number of the register allocated by GCC after
2184    REGNUM, or -1 if there is no such register.  */
2185
2186 static int
2187 i386_next_regnum (int regnum)
2188 {
2189   /* GCC allocates the registers in the order:
2190
2191      %eax, %edx, %ecx, %ebx, %esi, %edi, %ebp, %esp, ...
2192
2193      Since storing a variable in %esp doesn't make any sense we return
2194      -1 for %ebp and for %esp itself.  */
2195   static int next_regnum[] =
2196   {
2197     I386_EDX_REGNUM,            /* Slot for %eax.  */
2198     I386_EBX_REGNUM,            /* Slot for %ecx.  */
2199     I386_ECX_REGNUM,            /* Slot for %edx.  */
2200     I386_ESI_REGNUM,            /* Slot for %ebx.  */
2201     -1, -1,                     /* Slots for %esp and %ebp.  */
2202     I386_EDI_REGNUM,            /* Slot for %esi.  */
2203     I386_EBP_REGNUM             /* Slot for %edi.  */
2204   };
2205
2206   if (regnum >= 0 && regnum < sizeof (next_regnum) / sizeof (next_regnum[0]))
2207     return next_regnum[regnum];
2208
2209   return -1;
2210 }
2211
2212 /* Return nonzero if a value of type TYPE stored in register REGNUM
2213    needs any special handling.  */
2214
2215 static int
2216 i386_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type)
2217 {
2218   int len = TYPE_LENGTH (type);
2219
2220   /* Values may be spread across multiple registers.  Most debugging
2221      formats aren't expressive enough to specify the locations, so
2222      some heuristics is involved.  Right now we only handle types that
2223      have a length that is a multiple of the word size, since GCC
2224      doesn't seem to put any other types into registers.  */
2225   if (len > 4 && len % 4 == 0)
2226     {
2227       int last_regnum = regnum;
2228
2229       while (len > 4)
2230         {
2231           last_regnum = i386_next_regnum (last_regnum);
2232           len -= 4;
2233         }
2234
2235       if (last_regnum != -1)
2236         return 1;
2237     }
2238
2239   return i387_convert_register_p (gdbarch, regnum, type);
2240 }
2241
2242 /* Read a value of type TYPE from register REGNUM in frame FRAME, and
2243    return its contents in TO.  */
2244
2245 static void
2246 i386_register_to_value (struct frame_info *frame, int regnum,
2247                         struct type *type, gdb_byte *to)
2248 {
2249   struct gdbarch *gdbarch = get_frame_arch (frame);
2250   int len = TYPE_LENGTH (type);
2251
2252   /* FIXME: kettenis/20030609: What should we do if REGNUM isn't
2253      available in FRAME (i.e. if it wasn't saved)?  */
2254
2255   if (i386_fp_regnum_p (gdbarch, regnum))
2256     {
2257       i387_register_to_value (frame, regnum, type, to);
2258       return;
2259     }
2260
2261   /* Read a value spread across multiple registers.  */
2262
2263   gdb_assert (len > 4 && len % 4 == 0);
2264
2265   while (len > 0)
2266     {
2267       gdb_assert (regnum != -1);
2268       gdb_assert (register_size (gdbarch, regnum) == 4);
2269
2270       get_frame_register (frame, regnum, to);
2271       regnum = i386_next_regnum (regnum);
2272       len -= 4;
2273       to += 4;
2274     }
2275 }
2276
2277 /* Write the contents FROM of a value of type TYPE into register
2278    REGNUM in frame FRAME.  */
2279
2280 static void
2281 i386_value_to_register (struct frame_info *frame, int regnum,
2282                         struct type *type, const gdb_byte *from)
2283 {
2284   int len = TYPE_LENGTH (type);
2285
2286   if (i386_fp_regnum_p (get_frame_arch (frame), regnum))
2287     {
2288       i387_value_to_register (frame, regnum, type, from);
2289       return;
2290     }
2291
2292   /* Write a value spread across multiple registers.  */
2293
2294   gdb_assert (len > 4 && len % 4 == 0);
2295
2296   while (len > 0)
2297     {
2298       gdb_assert (regnum != -1);
2299       gdb_assert (register_size (get_frame_arch (frame), regnum) == 4);
2300
2301       put_frame_register (frame, regnum, from);
2302       regnum = i386_next_regnum (regnum);
2303       len -= 4;
2304       from += 4;
2305     }
2306 }
2307 \f
2308 /* Supply register REGNUM from the buffer specified by GREGS and LEN
2309    in the general-purpose register set REGSET to register cache
2310    REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
2311
2312 void
2313 i386_supply_gregset (const struct regset *regset, struct regcache *regcache,
2314                      int regnum, const void *gregs, size_t len)
2315 {
2316   const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
2317   const gdb_byte *regs = gregs;
2318   int i;
2319
2320   gdb_assert (len == tdep->sizeof_gregset);
2321
2322   for (i = 0; i < tdep->gregset_num_regs; i++)
2323     {
2324       if ((regnum == i || regnum == -1)
2325           && tdep->gregset_reg_offset[i] != -1)
2326         regcache_raw_supply (regcache, i, regs + tdep->gregset_reg_offset[i]);
2327     }
2328 }
2329
2330 /* Collect register REGNUM from the register cache REGCACHE and store
2331    it in the buffer specified by GREGS and LEN as described by the
2332    general-purpose register set REGSET.  If REGNUM is -1, do this for
2333    all registers in REGSET.  */
2334
2335 void
2336 i386_collect_gregset (const struct regset *regset,
2337                       const struct regcache *regcache,
2338                       int regnum, void *gregs, size_t len)
2339 {
2340   const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
2341   gdb_byte *regs = gregs;
2342   int i;
2343
2344   gdb_assert (len == tdep->sizeof_gregset);
2345
2346   for (i = 0; i < tdep->gregset_num_regs; i++)
2347     {
2348       if ((regnum == i || regnum == -1)
2349           && tdep->gregset_reg_offset[i] != -1)
2350         regcache_raw_collect (regcache, i, regs + tdep->gregset_reg_offset[i]);
2351     }
2352 }
2353
2354 /* Supply register REGNUM from the buffer specified by FPREGS and LEN
2355    in the floating-point register set REGSET to register cache
2356    REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
2357
2358 static void
2359 i386_supply_fpregset (const struct regset *regset, struct regcache *regcache,
2360                       int regnum, const void *fpregs, size_t len)
2361 {
2362   const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
2363
2364   if (len == I387_SIZEOF_FXSAVE)
2365     {
2366       i387_supply_fxsave (regcache, regnum, fpregs);
2367       return;
2368     }
2369
2370   gdb_assert (len == tdep->sizeof_fpregset);
2371   i387_supply_fsave (regcache, regnum, fpregs);
2372 }
2373
2374 /* Collect register REGNUM from the register cache REGCACHE and store
2375    it in the buffer specified by FPREGS and LEN as described by the
2376    floating-point register set REGSET.  If REGNUM is -1, do this for
2377    all registers in REGSET.  */
2378
2379 static void
2380 i386_collect_fpregset (const struct regset *regset,
2381                        const struct regcache *regcache,
2382                        int regnum, void *fpregs, size_t len)
2383 {
2384   const struct gdbarch_tdep *tdep = gdbarch_tdep (regset->arch);
2385
2386   if (len == I387_SIZEOF_FXSAVE)
2387     {
2388       i387_collect_fxsave (regcache, regnum, fpregs);
2389       return;
2390     }
2391
2392   gdb_assert (len == tdep->sizeof_fpregset);
2393   i387_collect_fsave (regcache, regnum, fpregs);
2394 }
2395
2396 /* Return the appropriate register set for the core section identified
2397    by SECT_NAME and SECT_SIZE.  */
2398
2399 const struct regset *
2400 i386_regset_from_core_section (struct gdbarch *gdbarch,
2401                                const char *sect_name, size_t sect_size)
2402 {
2403   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2404
2405   if (strcmp (sect_name, ".reg") == 0 && sect_size == tdep->sizeof_gregset)
2406     {
2407       if (tdep->gregset == NULL)
2408         tdep->gregset = regset_alloc (gdbarch, i386_supply_gregset,
2409                                       i386_collect_gregset);
2410       return tdep->gregset;
2411     }
2412
2413   if ((strcmp (sect_name, ".reg2") == 0 && sect_size == tdep->sizeof_fpregset)
2414       || (strcmp (sect_name, ".reg-xfp") == 0
2415           && sect_size == I387_SIZEOF_FXSAVE))
2416     {
2417       if (tdep->fpregset == NULL)
2418         tdep->fpregset = regset_alloc (gdbarch, i386_supply_fpregset,
2419                                        i386_collect_fpregset);
2420       return tdep->fpregset;
2421     }
2422
2423   return NULL;
2424 }
2425 \f
2426
2427 /* Stuff for WIN32 PE style DLL's but is pretty generic really.  */
2428
2429 CORE_ADDR
2430 i386_pe_skip_trampoline_code (CORE_ADDR pc, char *name)
2431 {
2432   if (pc && read_memory_unsigned_integer (pc, 2) == 0x25ff) /* jmp *(dest) */
2433     {
2434       unsigned long indirect = read_memory_unsigned_integer (pc + 2, 4);
2435       struct minimal_symbol *indsym =
2436         indirect ? lookup_minimal_symbol_by_pc (indirect) : 0;
2437       char *symname = indsym ? SYMBOL_LINKAGE_NAME (indsym) : 0;
2438
2439       if (symname)
2440         {
2441           if (strncmp (symname, "__imp_", 6) == 0
2442               || strncmp (symname, "_imp_", 5) == 0)
2443             return name ? 1 : read_memory_unsigned_integer (indirect, 4);
2444         }
2445     }
2446   return 0;                     /* Not a trampoline.  */
2447 }
2448 \f
2449
2450 /* Return whether the THIS_FRAME corresponds to a sigtramp
2451    routine.  */
2452
2453 static int
2454 i386_sigtramp_p (struct frame_info *this_frame)
2455 {
2456   CORE_ADDR pc = get_frame_pc (this_frame);
2457   char *name;
2458
2459   find_pc_partial_function (pc, &name, NULL, NULL);
2460   return (name && strcmp ("_sigtramp", name) == 0);
2461 }
2462 \f
2463
2464 /* We have two flavours of disassembly.  The machinery on this page
2465    deals with switching between those.  */
2466
2467 static int
2468 i386_print_insn (bfd_vma pc, struct disassemble_info *info)
2469 {
2470   gdb_assert (disassembly_flavor == att_flavor
2471               || disassembly_flavor == intel_flavor);
2472
2473   /* FIXME: kettenis/20020915: Until disassembler_options is properly
2474      constified, cast to prevent a compiler warning.  */
2475   info->disassembler_options = (char *) disassembly_flavor;
2476
2477   return print_insn_i386 (pc, info);
2478 }
2479 \f
2480
2481 /* There are a few i386 architecture variants that differ only
2482    slightly from the generic i386 target.  For now, we don't give them
2483    their own source file, but include them here.  As a consequence,
2484    they'll always be included.  */
2485
2486 /* System V Release 4 (SVR4).  */
2487
2488 /* Return whether THIS_FRAME corresponds to a SVR4 sigtramp
2489    routine.  */
2490
2491 static int
2492 i386_svr4_sigtramp_p (struct frame_info *this_frame)
2493 {
2494   CORE_ADDR pc = get_frame_pc (this_frame);
2495   char *name;
2496
2497   /* UnixWare uses _sigacthandler.  The origin of the other symbols is
2498      currently unknown.  */
2499   find_pc_partial_function (pc, &name, NULL, NULL);
2500   return (name && (strcmp ("_sigreturn", name) == 0
2501                    || strcmp ("_sigacthandler", name) == 0
2502                    || strcmp ("sigvechandler", name) == 0));
2503 }
2504
2505 /* Assuming THIS_FRAME is for a SVR4 sigtramp routine, return the
2506    address of the associated sigcontext (ucontext) structure.  */
2507
2508 static CORE_ADDR
2509 i386_svr4_sigcontext_addr (struct frame_info *this_frame)
2510 {
2511   gdb_byte buf[4];
2512   CORE_ADDR sp;
2513
2514   get_frame_register (this_frame, I386_ESP_REGNUM, buf);
2515   sp = extract_unsigned_integer (buf, 4);
2516
2517   return read_memory_unsigned_integer (sp + 8, 4);
2518 }
2519 \f
2520
2521 /* Generic ELF.  */
2522
2523 void
2524 i386_elf_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
2525 {
2526   /* We typically use stabs-in-ELF with the SVR4 register numbering.  */
2527   set_gdbarch_stab_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum);
2528 }
2529
2530 /* System V Release 4 (SVR4).  */
2531
2532 void
2533 i386_svr4_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
2534 {
2535   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2536
2537   /* System V Release 4 uses ELF.  */
2538   i386_elf_init_abi (info, gdbarch);
2539
2540   /* System V Release 4 has shared libraries.  */
2541   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
2542
2543   tdep->sigtramp_p = i386_svr4_sigtramp_p;
2544   tdep->sigcontext_addr = i386_svr4_sigcontext_addr;
2545   tdep->sc_pc_offset = 36 + 14 * 4;
2546   tdep->sc_sp_offset = 36 + 17 * 4;
2547
2548   tdep->jb_pc_offset = 20;
2549 }
2550
2551 /* DJGPP.  */
2552
2553 static void
2554 i386_go32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
2555 {
2556   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
2557
2558   /* DJGPP doesn't have any special frames for signal handlers.  */
2559   tdep->sigtramp_p = NULL;
2560
2561   tdep->jb_pc_offset = 36;
2562 }
2563 \f
2564
2565 /* i386 register groups.  In addition to the normal groups, add "mmx"
2566    and "sse".  */
2567
2568 static struct reggroup *i386_sse_reggroup;
2569 static struct reggroup *i386_mmx_reggroup;
2570
2571 static void
2572 i386_init_reggroups (void)
2573 {
2574   i386_sse_reggroup = reggroup_new ("sse", USER_REGGROUP);
2575   i386_mmx_reggroup = reggroup_new ("mmx", USER_REGGROUP);
2576 }
2577
2578 static void
2579 i386_add_reggroups (struct gdbarch *gdbarch)
2580 {
2581   reggroup_add (gdbarch, i386_sse_reggroup);
2582   reggroup_add (gdbarch, i386_mmx_reggroup);
2583   reggroup_add (gdbarch, general_reggroup);
2584   reggroup_add (gdbarch, float_reggroup);
2585   reggroup_add (gdbarch, all_reggroup);
2586   reggroup_add (gdbarch, save_reggroup);
2587   reggroup_add (gdbarch, restore_reggroup);
2588   reggroup_add (gdbarch, vector_reggroup);
2589   reggroup_add (gdbarch, system_reggroup);
2590 }
2591
2592 int
2593 i386_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
2594                           struct reggroup *group)
2595 {
2596   int sse_regnum_p = (i386_sse_regnum_p (gdbarch, regnum)
2597                       || i386_mxcsr_regnum_p (gdbarch, regnum));
2598   int fp_regnum_p = (i386_fp_regnum_p (gdbarch, regnum)
2599                      || i386_fpc_regnum_p (gdbarch, regnum));
2600   int mmx_regnum_p = (i386_mmx_regnum_p (gdbarch, regnum));
2601
2602   if (group == i386_mmx_reggroup)
2603     return mmx_regnum_p;
2604   if (group == i386_sse_reggroup)
2605     return sse_regnum_p;
2606   if (group == vector_reggroup)
2607     return (mmx_regnum_p || sse_regnum_p);
2608   if (group == float_reggroup)
2609     return fp_regnum_p;
2610   if (group == general_reggroup)
2611     return (!fp_regnum_p && !mmx_regnum_p && !sse_regnum_p);
2612
2613   return default_register_reggroup_p (gdbarch, regnum, group);
2614 }
2615 \f
2616
2617 /* Get the ARGIth function argument for the current function.  */
2618
2619 static CORE_ADDR
2620 i386_fetch_pointer_argument (struct frame_info *frame, int argi, 
2621                              struct type *type)
2622 {
2623   CORE_ADDR sp = get_frame_register_unsigned  (frame, I386_ESP_REGNUM);
2624   return read_memory_unsigned_integer (sp + (4 * (argi + 1)), 4);
2625 }
2626
2627 \f
2628 static struct gdbarch *
2629 i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
2630 {
2631   struct gdbarch_tdep *tdep;
2632   struct gdbarch *gdbarch;
2633
2634   /* If there is already a candidate, use it.  */
2635   arches = gdbarch_list_lookup_by_info (arches, &info);
2636   if (arches != NULL)
2637     return arches->gdbarch;
2638
2639   /* Allocate space for the new architecture.  */
2640   tdep = XCALLOC (1, struct gdbarch_tdep);
2641   gdbarch = gdbarch_alloc (&info, tdep);
2642
2643   /* General-purpose registers.  */
2644   tdep->gregset = NULL;
2645   tdep->gregset_reg_offset = NULL;
2646   tdep->gregset_num_regs = I386_NUM_GREGS;
2647   tdep->sizeof_gregset = 0;
2648
2649   /* Floating-point registers.  */
2650   tdep->fpregset = NULL;
2651   tdep->sizeof_fpregset = I387_SIZEOF_FSAVE;
2652
2653   /* The default settings include the FPU registers, the MMX registers
2654      and the SSE registers.  This can be overridden for a specific ABI
2655      by adjusting the members `st0_regnum', `mm0_regnum' and
2656      `num_xmm_regs' of `struct gdbarch_tdep', otherwise the registers
2657      will show up in the output of "info all-registers".  Ideally we
2658      should try to autodetect whether they are available, such that we
2659      can prevent "info all-registers" from displaying registers that
2660      aren't available.
2661
2662      NOTE: kevinb/2003-07-13: ... if it's a choice between printing
2663      [the SSE registers] always (even when they don't exist) or never
2664      showing them to the user (even when they do exist), I prefer the
2665      former over the latter.  */
2666
2667   tdep->st0_regnum = I386_ST0_REGNUM;
2668
2669   /* The MMX registers are implemented as pseudo-registers.  Put off
2670      calculating the register number for %mm0 until we know the number
2671      of raw registers.  */
2672   tdep->mm0_regnum = 0;
2673
2674   /* I386_NUM_XREGS includes %mxcsr, so substract one.  */
2675   tdep->num_xmm_regs = I386_NUM_XREGS - 1;
2676
2677   tdep->jb_pc_offset = -1;
2678   tdep->struct_return = pcc_struct_return;
2679   tdep->sigtramp_start = 0;
2680   tdep->sigtramp_end = 0;
2681   tdep->sigtramp_p = i386_sigtramp_p;
2682   tdep->sigcontext_addr = NULL;
2683   tdep->sc_reg_offset = NULL;
2684   tdep->sc_pc_offset = -1;
2685   tdep->sc_sp_offset = -1;
2686
2687   /* The format used for `long double' on almost all i386 targets is
2688      the i387 extended floating-point format.  In fact, of all targets
2689      in the GCC 2.95 tree, only OSF/1 does it different, and insists
2690      on having a `long double' that's not `long' at all.  */
2691   set_gdbarch_long_double_format (gdbarch, floatformats_i387_ext);
2692
2693   /* Although the i387 extended floating-point has only 80 significant
2694      bits, a `long double' actually takes up 96, probably to enforce
2695      alignment.  */
2696   set_gdbarch_long_double_bit (gdbarch, 96);
2697
2698   /* The default ABI includes general-purpose registers, 
2699      floating-point registers, and the SSE registers.  */
2700   set_gdbarch_num_regs (gdbarch, I386_SSE_NUM_REGS);
2701   set_gdbarch_register_name (gdbarch, i386_register_name);
2702   set_gdbarch_register_type (gdbarch, i386_register_type);
2703
2704   /* Register numbers of various important registers.  */
2705   set_gdbarch_sp_regnum (gdbarch, I386_ESP_REGNUM); /* %esp */
2706   set_gdbarch_pc_regnum (gdbarch, I386_EIP_REGNUM); /* %eip */
2707   set_gdbarch_ps_regnum (gdbarch, I386_EFLAGS_REGNUM); /* %eflags */
2708   set_gdbarch_fp0_regnum (gdbarch, I386_ST0_REGNUM); /* %st(0) */
2709
2710   /* NOTE: kettenis/20040418: GCC does have two possible register
2711      numbering schemes on the i386: dbx and SVR4.  These schemes
2712      differ in how they number %ebp, %esp, %eflags, and the
2713      floating-point registers, and are implemented by the arrays
2714      dbx_register_map[] and svr4_dbx_register_map in
2715      gcc/config/i386.c.  GCC also defines a third numbering scheme in
2716      gcc/config/i386.c, which it designates as the "default" register
2717      map used in 64bit mode.  This last register numbering scheme is
2718      implemented in dbx64_register_map, and is used for AMD64; see
2719      amd64-tdep.c.
2720
2721      Currently, each GCC i386 target always uses the same register
2722      numbering scheme across all its supported debugging formats
2723      i.e. SDB (COFF), stabs and DWARF 2.  This is because
2724      gcc/sdbout.c, gcc/dbxout.c and gcc/dwarf2out.c all use the
2725      DBX_REGISTER_NUMBER macro which is defined by each target's
2726      respective config header in a manner independent of the requested
2727      output debugging format.
2728
2729      This does not match the arrangement below, which presumes that
2730      the SDB and stabs numbering schemes differ from the DWARF and
2731      DWARF 2 ones.  The reason for this arrangement is that it is
2732      likely to get the numbering scheme for the target's
2733      default/native debug format right.  For targets where GCC is the
2734      native compiler (FreeBSD, NetBSD, OpenBSD, GNU/Linux) or for
2735      targets where the native toolchain uses a different numbering
2736      scheme for a particular debug format (stabs-in-ELF on Solaris)
2737      the defaults below will have to be overridden, like
2738      i386_elf_init_abi() does.  */
2739
2740   /* Use the dbx register numbering scheme for stabs and COFF.  */
2741   set_gdbarch_stab_reg_to_regnum (gdbarch, i386_dbx_reg_to_regnum);
2742   set_gdbarch_sdb_reg_to_regnum (gdbarch, i386_dbx_reg_to_regnum);
2743
2744   /* Use the SVR4 register numbering scheme for DWARF 2.  */
2745   set_gdbarch_dwarf2_reg_to_regnum (gdbarch, i386_svr4_reg_to_regnum);
2746
2747   /* We don't set gdbarch_stab_reg_to_regnum, since ECOFF doesn't seem to
2748      be in use on any of the supported i386 targets.  */
2749
2750   set_gdbarch_print_float_info (gdbarch, i387_print_float_info);
2751
2752   set_gdbarch_get_longjmp_target (gdbarch, i386_get_longjmp_target);
2753
2754   /* Call dummy code.  */
2755   set_gdbarch_push_dummy_call (gdbarch, i386_push_dummy_call);
2756
2757   set_gdbarch_convert_register_p (gdbarch, i386_convert_register_p);
2758   set_gdbarch_register_to_value (gdbarch,  i386_register_to_value);
2759   set_gdbarch_value_to_register (gdbarch, i386_value_to_register);
2760
2761   set_gdbarch_return_value (gdbarch, i386_return_value);
2762
2763   set_gdbarch_skip_prologue (gdbarch, i386_skip_prologue);
2764
2765   /* Stack grows downward.  */
2766   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
2767
2768   set_gdbarch_breakpoint_from_pc (gdbarch, i386_breakpoint_from_pc);
2769   set_gdbarch_decr_pc_after_break (gdbarch, 1);
2770   set_gdbarch_max_insn_length (gdbarch, I386_MAX_INSN_LEN);
2771
2772   set_gdbarch_frame_args_skip (gdbarch, 8);
2773
2774   /* Wire in the MMX registers.  */
2775   set_gdbarch_num_pseudo_regs (gdbarch, i386_num_mmx_regs);
2776   set_gdbarch_pseudo_register_read (gdbarch, i386_pseudo_register_read);
2777   set_gdbarch_pseudo_register_write (gdbarch, i386_pseudo_register_write);
2778
2779   set_gdbarch_print_insn (gdbarch, i386_print_insn);
2780
2781   set_gdbarch_dummy_id (gdbarch, i386_dummy_id);
2782
2783   set_gdbarch_unwind_pc (gdbarch, i386_unwind_pc);
2784
2785   /* Add the i386 register groups.  */
2786   i386_add_reggroups (gdbarch);
2787   set_gdbarch_register_reggroup_p (gdbarch, i386_register_reggroup_p);
2788
2789   /* Helper for function argument information.  */
2790   set_gdbarch_fetch_pointer_argument (gdbarch, i386_fetch_pointer_argument);
2791
2792   /* Hook in the DWARF CFI frame unwinder.  */
2793   dwarf2_append_unwinders (gdbarch);
2794
2795   frame_base_set_default (gdbarch, &i386_frame_base);
2796
2797   /* Hook in ABI-specific overrides, if they have been registered.  */
2798   gdbarch_init_osabi (info, gdbarch);
2799
2800   frame_unwind_append_unwinder (gdbarch, &i386_sigtramp_frame_unwind);
2801   frame_unwind_append_unwinder (gdbarch, &i386_frame_unwind);
2802
2803   /* If we have a register mapping, enable the generic core file
2804      support, unless it has already been enabled.  */
2805   if (tdep->gregset_reg_offset
2806       && !gdbarch_regset_from_core_section_p (gdbarch))
2807     set_gdbarch_regset_from_core_section (gdbarch,
2808                                           i386_regset_from_core_section);
2809
2810   /* Unless support for MMX has been disabled, make %mm0 the first
2811      pseudo-register.  */
2812   if (tdep->mm0_regnum == 0)
2813     tdep->mm0_regnum = gdbarch_num_regs (gdbarch);
2814
2815   return gdbarch;
2816 }
2817
2818 static enum gdb_osabi
2819 i386_coff_osabi_sniffer (bfd *abfd)
2820 {
2821   if (strcmp (bfd_get_target (abfd), "coff-go32-exe") == 0
2822       || strcmp (bfd_get_target (abfd), "coff-go32") == 0)
2823     return GDB_OSABI_GO32;
2824
2825   return GDB_OSABI_UNKNOWN;
2826 }
2827 \f
2828
2829 /* Provide a prototype to silence -Wmissing-prototypes.  */
2830 void _initialize_i386_tdep (void);
2831
2832 void
2833 _initialize_i386_tdep (void)
2834 {
2835   register_gdbarch_init (bfd_arch_i386, i386_gdbarch_init);
2836
2837   /* Add the variable that controls the disassembly flavor.  */
2838   add_setshow_enum_cmd ("disassembly-flavor", no_class, valid_flavors,
2839                         &disassembly_flavor, _("\
2840 Set the disassembly flavor."), _("\
2841 Show the disassembly flavor."), _("\
2842 The valid values are \"att\" and \"intel\", and the default value is \"att\"."),
2843                         NULL,
2844                         NULL, /* FIXME: i18n: */
2845                         &setlist, &showlist);
2846
2847   /* Add the variable that controls the convention for returning
2848      structs.  */
2849   add_setshow_enum_cmd ("struct-convention", no_class, valid_conventions,
2850                         &struct_convention, _("\
2851 Set the convention for returning small structs."), _("\
2852 Show the convention for returning small structs."), _("\
2853 Valid values are \"default\", \"pcc\" and \"reg\", and the default value\n\
2854 is \"default\"."),
2855                         NULL,
2856                         NULL, /* FIXME: i18n: */
2857                         &setlist, &showlist);
2858
2859   gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
2860                                   i386_coff_osabi_sniffer);
2861
2862   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_SVR4,
2863                           i386_svr4_init_abi);
2864   gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_GO32,
2865                           i386_go32_init_abi);
2866
2867   /* Initialize the i386-specific register groups & types.  */
2868   i386_init_reggroups ();
2869   i386_init_types();
2870 }