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