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