* alpha-tdep.c (alpha_push_dummy_call): Transmography from
[external/binutils.git] / gdb / alpha-tdep.c
1 /* Target-dependent code for the ALPHA architecture, for GDB, the GNU Debugger.
2    Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
3    Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 59 Temple Place - Suite 330,
20    Boston, MA 02111-1307, USA.  */
21
22 #include "defs.h"
23 #include "frame.h"
24 #include "frame-unwind.h"
25 #include "frame-base.h"
26 #include "inferior.h"
27 #include "symtab.h"
28 #include "value.h"
29 #include "gdbcmd.h"
30 #include "gdbcore.h"
31 #include "dis-asm.h"
32 #include "symfile.h"
33 #include "objfiles.h"
34 #include "gdb_string.h"
35 #include "linespec.h"
36 #include "regcache.h"
37 #include "doublest.h"
38 #include "arch-utils.h"
39 #include "osabi.h"
40 #include "block.h"
41
42 #include "elf-bfd.h"
43
44 #include "alpha-tdep.h"
45
46 \f
47 static const char *
48 alpha_register_name (int regno)
49 {
50   static char *register_names[] =
51   {
52     "v0",   "t0",   "t1",   "t2",   "t3",   "t4",   "t5",   "t6",
53     "t7",   "s0",   "s1",   "s2",   "s3",   "s4",   "s5",   "fp",
54     "a0",   "a1",   "a2",   "a3",   "a4",   "a5",   "t8",   "t9",
55     "t10",  "t11",  "ra",   "t12",  "at",   "gp",   "sp",   "zero",
56     "f0",   "f1",   "f2",   "f3",   "f4",   "f5",   "f6",   "f7",
57     "f8",   "f9",   "f10",  "f11",  "f12",  "f13",  "f14",  "f15",
58     "f16",  "f17",  "f18",  "f19",  "f20",  "f21",  "f22",  "f23",
59     "f24",  "f25",  "f26",  "f27",  "f28",  "f29",  "f30",  "fpcr",
60     "pc",   "vfp",  "unique",
61   };
62
63   if (regno < 0)
64     return (NULL);
65   if (regno >= (sizeof(register_names) / sizeof(*register_names)))
66     return (NULL);
67   return (register_names[regno]);
68 }
69
70 static int
71 alpha_cannot_fetch_register (int regno)
72 {
73   return (regno == ALPHA_FP_REGNUM || regno == ALPHA_ZERO_REGNUM);
74 }
75
76 static int
77 alpha_cannot_store_register (int regno)
78 {
79   return (regno == ALPHA_FP_REGNUM || regno == ALPHA_ZERO_REGNUM);
80 }
81
82 static int
83 alpha_register_convertible (int regno)
84 {
85   return (regno >= FP0_REGNUM && regno <= FP0_REGNUM + 31);
86 }
87
88 static struct type *
89 alpha_register_virtual_type (int regno)
90 {
91   return ((regno >= FP0_REGNUM && regno < (FP0_REGNUM+31))
92           ? builtin_type_double : builtin_type_long);
93 }
94
95 static int
96 alpha_register_byte (int regno)
97 {
98   return (regno * 8);
99 }
100
101 static int
102 alpha_register_raw_size (int regno)
103 {
104   return 8;
105 }
106
107 static int
108 alpha_register_virtual_size (int regno)
109 {
110   return 8;
111 }
112
113 /* The alpha needs a conversion between register and memory format if the
114    register is a floating point register and memory format is float, as the
115    register format must be double or memory format is an integer with 4
116    bytes or less, as the representation of integers in floating point
117    registers is different. */
118
119 static void
120 alpha_register_convert_to_virtual (int regnum, struct type *valtype,
121                                    char *raw_buffer, char *virtual_buffer)
122 {
123   if (TYPE_LENGTH (valtype) >= REGISTER_RAW_SIZE (regnum))
124     {
125       memcpy (virtual_buffer, raw_buffer, REGISTER_VIRTUAL_SIZE (regnum));
126       return;
127     }
128
129   if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
130     {
131       double d = deprecated_extract_floating (raw_buffer, REGISTER_RAW_SIZE (regnum));
132       deprecated_store_floating (virtual_buffer, TYPE_LENGTH (valtype), d);
133     }
134   else if (TYPE_CODE (valtype) == TYPE_CODE_INT && TYPE_LENGTH (valtype) <= 4)
135     {
136       ULONGEST l;
137       l = extract_unsigned_integer (raw_buffer, REGISTER_RAW_SIZE (regnum));
138       l = ((l >> 32) & 0xc0000000) | ((l >> 29) & 0x3fffffff);
139       store_unsigned_integer (virtual_buffer, TYPE_LENGTH (valtype), l);
140     }
141   else
142     error ("Cannot retrieve value from floating point register");
143 }
144
145 static void
146 alpha_register_convert_to_raw (struct type *valtype, int regnum,
147                                char *virtual_buffer, char *raw_buffer)
148 {
149   if (TYPE_LENGTH (valtype) >= REGISTER_RAW_SIZE (regnum))
150     {
151       memcpy (raw_buffer, virtual_buffer, REGISTER_RAW_SIZE (regnum));
152       return;
153     }
154
155   if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
156     {
157       double d = deprecated_extract_floating (virtual_buffer, TYPE_LENGTH (valtype));
158       deprecated_store_floating (raw_buffer, REGISTER_RAW_SIZE (regnum), d);
159     }
160   else if (TYPE_CODE (valtype) == TYPE_CODE_INT && TYPE_LENGTH (valtype) <= 4)
161     {
162       ULONGEST l;
163       if (TYPE_UNSIGNED (valtype))
164         l = extract_unsigned_integer (virtual_buffer, TYPE_LENGTH (valtype));
165       else
166         l = extract_signed_integer (virtual_buffer, TYPE_LENGTH (valtype));
167       l = ((l & 0xc0000000) << 32) | ((l & 0x3fffffff) << 29);
168       store_unsigned_integer (raw_buffer, REGISTER_RAW_SIZE (regnum), l);
169     }
170   else
171     error ("Cannot store value in floating point register");
172 }
173
174 \f
175 /* The alpha passes the first six arguments in the registers, the rest on
176    the stack.  The register arguments are stored in ARG_REG_BUFFER, and
177    then moved into the register file; this simplifies the passing of a
178    large struct which extends from the registers to the stack, plus avoids
179    three ptrace invocations per word.
180
181    We don't bother tracking which register values should go in integer
182    regs or fp regs; we load the same values into both.
183
184    If the called function is returning a structure, the address of the
185    structure to be returned is passed as a hidden first argument.  */
186
187 static CORE_ADDR
188 alpha_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr,
189                        struct regcache *regcache, CORE_ADDR bp_addr,
190                        int nargs, struct value **args, CORE_ADDR sp,
191                        int struct_return, CORE_ADDR struct_addr)
192 {
193   int i;
194   int accumulate_size = struct_return ? 8 : 0;
195   struct alpha_arg
196     {
197       char *contents;
198       int len;
199       int offset;
200     };
201   struct alpha_arg *alpha_args
202     = (struct alpha_arg *) alloca (nargs * sizeof (struct alpha_arg));
203   register struct alpha_arg *m_arg;
204   char arg_reg_buffer[ALPHA_REGISTER_SIZE * ALPHA_NUM_ARG_REGS];
205   int required_arg_regs;
206
207   /* The ABI places the address of the called function in T12.  */
208   regcache_cooked_write_signed (regcache, ALPHA_T12_REGNUM, func_addr);
209
210   /* Set the return address register to point to the entry point
211      of the program, where a breakpoint lies in wait.  */
212   regcache_cooked_write_signed (regcache, ALPHA_RA_REGNUM, bp_addr);
213
214   /* Lay out the arguments in memory.  */
215   for (i = 0, m_arg = alpha_args; i < nargs; i++, m_arg++)
216     {
217       struct value *arg = args[i];
218       struct type *arg_type = check_typedef (VALUE_TYPE (arg));
219
220       /* Cast argument to long if necessary as the compiler does it too.  */
221       switch (TYPE_CODE (arg_type))
222         {
223         case TYPE_CODE_INT:
224         case TYPE_CODE_BOOL:
225         case TYPE_CODE_CHAR:
226         case TYPE_CODE_RANGE:
227         case TYPE_CODE_ENUM:
228           if (TYPE_LENGTH (arg_type) < TYPE_LENGTH (builtin_type_long))
229             {
230               arg_type = builtin_type_long;
231               arg = value_cast (arg_type, arg);
232             }
233           break;
234         case TYPE_CODE_FLT:
235           /* "float" arguments loaded in registers must be passed in
236              register format, aka "double".  */
237           if (accumulate_size < sizeof (arg_reg_buffer)
238               && TYPE_LENGTH (arg_type) == 4)
239             {
240               arg_type = builtin_type_double;
241               arg = value_cast (arg_type, arg);
242             }
243           /* Tru64 5.1 has a 128-bit long double, and passes this by
244              invisible reference.  No one else uses this data type.  */
245           else if (TYPE_LENGTH (arg_type) == 16)
246             {
247               /* Allocate aligned storage.  */
248               sp = (sp & -16) - 16;
249
250               /* Write the real data into the stack.  */
251               write_memory (sp, VALUE_CONTENTS (arg), 16);
252
253               /* Construct the indirection.  */
254               arg_type = lookup_pointer_type (arg_type);
255               arg = value_from_pointer (arg_type, sp);
256             }
257           break;
258         default:
259           break;
260         }
261       m_arg->len = TYPE_LENGTH (arg_type);
262       m_arg->offset = accumulate_size;
263       accumulate_size = (accumulate_size + m_arg->len + 7) & ~7;
264       m_arg->contents = VALUE_CONTENTS (arg);
265     }
266
267   /* Determine required argument register loads, loading an argument register
268      is expensive as it uses three ptrace calls.  */
269   required_arg_regs = accumulate_size / 8;
270   if (required_arg_regs > ALPHA_NUM_ARG_REGS)
271     required_arg_regs = ALPHA_NUM_ARG_REGS;
272
273   /* Make room for the arguments on the stack.  */
274   if (accumulate_size < sizeof(arg_reg_buffer))
275     accumulate_size = 0;
276   else
277     accumulate_size -= sizeof(arg_reg_buffer);
278   sp -= accumulate_size;
279
280   /* Keep sp aligned to a multiple of 16 as the ABI requires.  */
281   sp &= ~15;
282
283   /* `Push' arguments on the stack.  */
284   for (i = nargs; m_arg--, --i >= 0;)
285     {
286       char *contents = m_arg->contents;
287       int offset = m_arg->offset;
288       int len = m_arg->len;
289
290       /* Copy the bytes destined for registers into arg_reg_buffer.  */
291       if (offset < sizeof(arg_reg_buffer))
292         {
293           if (offset + len <= sizeof(arg_reg_buffer))
294             {
295               memcpy (arg_reg_buffer + offset, contents, len);
296               continue;
297             }
298           else
299             {
300               int tlen = sizeof(arg_reg_buffer) - offset;
301               memcpy (arg_reg_buffer + offset, contents, tlen);
302               offset += tlen;
303               contents += tlen;
304               len -= tlen;
305             }
306         }
307
308       /* Everything else goes to the stack.  */
309       write_memory (sp + offset - sizeof(arg_reg_buffer), contents, len);
310     }
311   if (struct_return)
312     store_unsigned_integer (arg_reg_buffer, ALPHA_REGISTER_SIZE, struct_addr);
313
314   /* Load the argument registers.  */
315   for (i = 0; i < required_arg_regs; i++)
316     {
317       LONGEST val;
318
319       val = extract_unsigned_integer (arg_reg_buffer + i*ALPHA_REGISTER_SIZE,
320                                       ALPHA_REGISTER_SIZE);
321       regcache_cooked_write_signed (regcache, ALPHA_A0_REGNUM + i, val);
322       regcache_cooked_write_signed (regcache, ALPHA_FPA0_REGNUM + i, val);
323     }
324
325   return sp;
326 }
327
328 /* Given a return value in `regbuf' with a type `valtype', 
329    extract and copy its value into `valbuf'.  */
330
331 static void
332 alpha_extract_return_value (struct type *valtype,
333                             char regbuf[ALPHA_REGISTER_BYTES], char *valbuf)
334 {
335   if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
336     alpha_register_convert_to_virtual (FP0_REGNUM, valtype,
337                                        regbuf + REGISTER_BYTE (FP0_REGNUM),
338                                        valbuf);
339   else
340     memcpy (valbuf, regbuf + REGISTER_BYTE (ALPHA_V0_REGNUM),
341             TYPE_LENGTH (valtype));
342 }
343
344 /* Given a return value in `regbuf' with a type `valtype', 
345    write its value into the appropriate register.  */
346
347 static void
348 alpha_store_return_value (struct type *valtype, char *valbuf)
349 {
350   char raw_buffer[ALPHA_MAX_REGISTER_RAW_SIZE];
351   int regnum = ALPHA_V0_REGNUM;
352   int length = TYPE_LENGTH (valtype);
353
354   if (TYPE_CODE (valtype) == TYPE_CODE_FLT)
355     {
356       regnum = FP0_REGNUM;
357       length = REGISTER_RAW_SIZE (regnum);
358       alpha_register_convert_to_raw (valtype, regnum, valbuf, raw_buffer);
359     }
360   else
361     memcpy (raw_buffer, valbuf, length);
362
363   deprecated_write_register_bytes (REGISTER_BYTE (regnum), raw_buffer, length);
364 }
365
366 static int
367 alpha_use_struct_convention (int gcc_p, struct type *type)
368 {
369   /* Structures are returned by ref in extra arg0.  */
370   return 1;
371 }
372
373 static void
374 alpha_store_struct_return (CORE_ADDR addr, CORE_ADDR sp)
375 {
376   /* Store the address of the place in which to copy the structure the
377      subroutine will return.  Handled by alpha_push_arguments.  */
378 }
379
380 static CORE_ADDR
381 alpha_extract_struct_value_address (char *regbuf)
382 {
383   return (extract_address (regbuf + REGISTER_BYTE (ALPHA_V0_REGNUM),
384                            REGISTER_RAW_SIZE (ALPHA_V0_REGNUM)));
385 }
386
387 \f
388 static const unsigned char *
389 alpha_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
390 {
391   static const unsigned char alpha_breakpoint[] =
392     { 0x80, 0, 0, 0 };  /* call_pal bpt */
393
394   *lenptr = sizeof(alpha_breakpoint);
395   return (alpha_breakpoint);
396 }
397
398 \f
399 /* This returns the PC of the first insn after the prologue.
400    If we can't find the prologue, then return 0.  */
401
402 CORE_ADDR
403 alpha_after_prologue (CORE_ADDR pc)
404 {
405   struct symtab_and_line sal;
406   CORE_ADDR func_addr, func_end;
407
408   if (!find_pc_partial_function (pc, NULL, &func_addr, &func_end))
409     return 0;
410
411   sal = find_pc_line (func_addr, 0);
412   if (sal.end < func_end)
413     return sal.end;
414
415   /* The line after the prologue is after the end of the function.  In this
416      case, tell the caller to find the prologue the hard way.  */
417   return 0;
418 }
419
420 /* Read an instruction from memory at PC, looking through breakpoints.  */
421
422 unsigned int
423 alpha_read_insn (CORE_ADDR pc)
424 {
425   char buf[4];
426   int status;
427
428   status = read_memory_nobpt (pc, buf, 4);
429   if (status)
430     memory_error (status, pc);
431   return extract_unsigned_integer (buf, 4);
432 }
433
434 /* To skip prologues, I use this predicate.  Returns either PC itself
435    if the code at PC does not look like a function prologue; otherwise
436    returns an address that (if we're lucky) follows the prologue.  If
437    LENIENT, then we must skip everything which is involved in setting
438    up the frame (it's OK to skip more, just so long as we don't skip
439    anything which might clobber the registers which are being saved.  */
440
441 static CORE_ADDR
442 alpha_skip_prologue (CORE_ADDR pc)
443 {
444   unsigned long inst;
445   int offset;
446   CORE_ADDR post_prologue_pc;
447   char buf[4];
448
449   /* Silently return the unaltered pc upon memory errors.
450      This could happen on OSF/1 if decode_line_1 tries to skip the
451      prologue for quickstarted shared library functions when the
452      shared library is not yet mapped in.
453      Reading target memory is slow over serial lines, so we perform
454      this check only if the target has shared libraries (which all
455      Alpha targets do).  */
456   if (target_read_memory (pc, buf, 4))
457     return pc;
458
459   /* See if we can determine the end of the prologue via the symbol table.
460      If so, then return either PC, or the PC after the prologue, whichever
461      is greater.  */
462
463   post_prologue_pc = alpha_after_prologue (pc);
464   if (post_prologue_pc != 0)
465     return max (pc, post_prologue_pc);
466
467   /* Can't determine prologue from the symbol table, need to examine
468      instructions.  */
469
470   /* Skip the typical prologue instructions. These are the stack adjustment
471      instruction and the instructions that save registers on the stack
472      or in the gcc frame.  */
473   for (offset = 0; offset < 100; offset += 4)
474     {
475       inst = alpha_read_insn (pc + offset);
476
477       if ((inst & 0xffff0000) == 0x27bb0000)    /* ldah $gp,n($t12) */
478         continue;
479       if ((inst & 0xffff0000) == 0x23bd0000)    /* lda $gp,n($gp) */
480         continue;
481       if ((inst & 0xffff0000) == 0x23de0000)    /* lda $sp,n($sp) */
482         continue;
483       if ((inst & 0xffe01fff) == 0x43c0153e)    /* subq $sp,n,$sp */
484         continue;
485
486       if (((inst & 0xfc1f0000) == 0xb41e0000            /* stq reg,n($sp) */
487            || (inst & 0xfc1f0000) == 0x9c1e0000)        /* stt reg,n($sp) */
488           && (inst & 0x03e00000) != 0x03e00000)         /* reg != $zero */
489         continue;
490
491       if (inst == 0x47de040f)                   /* bis sp,sp,fp */
492         continue;
493       if (inst == 0x47fe040f)                   /* bis zero,sp,fp */
494         continue;
495
496       break;
497     }
498   return pc + offset;
499 }
500
501 \f
502 /* Figure out where the longjmp will land.
503    We expect the first arg to be a pointer to the jmp_buf structure from
504    which we extract the PC (JB_PC) that we will land at.  The PC is copied
505    into the "pc".  This routine returns true on success.  */
506
507 static int
508 alpha_get_longjmp_target (CORE_ADDR *pc)
509 {
510   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
511   CORE_ADDR jb_addr;
512   char raw_buffer[ALPHA_MAX_REGISTER_RAW_SIZE];
513
514   jb_addr = read_register (ALPHA_A0_REGNUM);
515
516   if (target_read_memory (jb_addr + (tdep->jb_pc * tdep->jb_elt_size),
517                           raw_buffer, tdep->jb_elt_size))
518     return 0;
519
520   *pc = extract_address (raw_buffer, tdep->jb_elt_size);
521   return 1;
522 }
523
524 \f
525 /* Frame unwinder for signal trampolines.  We use alpha tdep bits that
526    describe the location and shape of the sigcontext structure.  After
527    that, all registers are in memory, so it's easy.  */
528 /* ??? Shouldn't we be able to do this generically, rather than with
529    OSABI data specific to Alpha?  */
530
531 struct alpha_sigtramp_unwind_cache
532 {
533   CORE_ADDR sigcontext_addr;
534 };
535
536 static struct alpha_sigtramp_unwind_cache *
537 alpha_sigtramp_frame_unwind_cache (struct frame_info *next_frame,
538                                    void **this_prologue_cache)
539 {
540   struct alpha_sigtramp_unwind_cache *info;
541   struct gdbarch_tdep *tdep;
542
543   if (*this_prologue_cache)
544     return *this_prologue_cache;
545
546   info = FRAME_OBSTACK_ZALLOC (struct alpha_sigtramp_unwind_cache);
547   *this_prologue_cache = info;
548
549   tdep = gdbarch_tdep (current_gdbarch);
550   info->sigcontext_addr = tdep->sigcontext_addr (next_frame);
551
552   return info;
553 }
554
555 /* Return the address of REGNO in a sigtramp frame.  Since this is all
556    arithmetic, it doesn't seem worthwhile to cache it.  */
557
558 #ifndef SIGFRAME_PC_OFF
559 #define SIGFRAME_PC_OFF         (2 * 8)
560 #define SIGFRAME_REGSAVE_OFF    (4 * 8)
561 #define SIGFRAME_FPREGSAVE_OFF  (SIGFRAME_REGSAVE_OFF + 32 * 8 + 8)
562 #endif
563
564 static CORE_ADDR
565 alpha_sigtramp_register_address (CORE_ADDR sigcontext_addr, unsigned int regno)
566
567   if (regno < 32)
568     return sigcontext_addr + SIGFRAME_REGSAVE_OFF + regno * 8;
569   if (regno >= FP0_REGNUM && regno < FP0_REGNUM + 32)
570     return sigcontext_addr + SIGFRAME_FPREGSAVE_OFF + regno * 8;
571   if (regno == PC_REGNUM)
572     return sigcontext_addr + SIGFRAME_PC_OFF; 
573
574   return 0;
575 }
576
577 /* Given a GDB frame, determine the address of the calling function's
578    frame.  This will be used to create a new GDB frame struct.  */
579
580 static void
581 alpha_sigtramp_frame_this_id (struct frame_info *next_frame,
582                               void **this_prologue_cache,
583                               struct frame_id *this_id)
584 {
585   struct alpha_sigtramp_unwind_cache *info
586     = alpha_sigtramp_frame_unwind_cache (next_frame, this_prologue_cache);
587   struct gdbarch_tdep *tdep;
588   CORE_ADDR stack_addr, code_addr;
589
590   /* If the OSABI couldn't locate the sigcontext, give up.  */
591   if (info->sigcontext_addr == 0)
592     return;
593
594   /* If we have dynamic signal trampolines, find their start.
595      If we do not, then we must assume there is a symbol record
596      that can provide the start address.  */
597   tdep = gdbarch_tdep (current_gdbarch);
598   if (tdep->dynamic_sigtramp_offset)
599     {
600       int offset;
601       code_addr = frame_pc_unwind (next_frame);
602       offset = tdep->dynamic_sigtramp_offset (code_addr);
603       if (offset >= 0)
604         code_addr -= offset;
605       else
606         code_addr = 0;
607     }
608   else
609     code_addr = frame_func_unwind (next_frame);
610
611   /* The stack address is trivially read from the sigcontext.  */
612   stack_addr = alpha_sigtramp_register_address (info->sigcontext_addr,
613                                                 ALPHA_SP_REGNUM);
614   stack_addr = read_memory_unsigned_integer (stack_addr, ALPHA_REGISTER_SIZE);
615
616   *this_id = frame_id_build (stack_addr, code_addr);
617 }
618
619 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
620
621 static void
622 alpha_sigtramp_frame_prev_register (struct frame_info *next_frame,
623                                     void **this_prologue_cache,
624                                     int regnum, int *optimizedp,
625                                     enum lval_type *lvalp, CORE_ADDR *addrp,
626                                     int *realnump, void *bufferp)
627 {
628   struct alpha_sigtramp_unwind_cache *info
629     = alpha_sigtramp_frame_unwind_cache (next_frame, this_prologue_cache);
630   CORE_ADDR addr;
631
632   if (info->sigcontext_addr != 0)
633     {
634       /* All integer and fp registers are stored in memory.  */
635       addr = alpha_sigtramp_register_address (info->sigcontext_addr, regnum);
636       if (addr != 0)
637         {
638           *optimizedp = 0;
639           *lvalp = lval_memory;
640           *addrp = addr;
641           *realnump = -1;
642           if (bufferp != NULL)
643             read_memory (addr, bufferp, ALPHA_REGISTER_SIZE);
644           return;
645         }
646     }
647
648   /* This extra register may actually be in the sigcontext, but our
649      current description of it in alpha_sigtramp_frame_unwind_cache
650      doesn't include it.  Too bad.  Fall back on whatever's in the
651      outer frame.  */
652   frame_register (next_frame, regnum, optimizedp, lvalp, addrp,
653                   realnump, bufferp);
654 }
655
656 static const struct frame_unwind alpha_sigtramp_frame_unwind = {
657   SIGTRAMP_FRAME,
658   alpha_sigtramp_frame_this_id,
659   alpha_sigtramp_frame_prev_register
660 };
661
662 static const struct frame_unwind *
663 alpha_sigtramp_frame_p (CORE_ADDR pc)
664 {
665   char *name;
666
667   /* We shouldn't even bother to try if the OSABI didn't register
668      a sigcontext_addr handler.  */
669   if (!gdbarch_tdep (current_gdbarch)->sigcontext_addr)
670     return NULL;
671
672   /* Otherwise we should be in a signal frame.  */
673   find_pc_partial_function (pc, &name, NULL, NULL);
674   if (PC_IN_SIGTRAMP (pc, name))
675     return &alpha_sigtramp_frame_unwind;
676
677   return NULL;
678 }
679 \f
680 /* Fallback alpha frame unwinder.  Uses instruction scanning and knows
681    something about the traditional layout of alpha stack frames.  */
682
683 struct alpha_heuristic_unwind_cache
684 {
685   CORE_ADDR *saved_regs;
686   CORE_ADDR vfp;
687   CORE_ADDR start_pc;
688   int return_reg;
689 };
690
691 /* Heuristic_proc_start may hunt through the text section for a long
692    time across a 2400 baud serial line.  Allows the user to limit this
693    search.  */
694 static unsigned int heuristic_fence_post = 0;
695
696 /* Attempt to locate the start of the function containing PC.  We assume that
697    the previous function ends with an about_to_return insn.  Not foolproof by
698    any means, since gcc is happy to put the epilogue in the middle of a
699    function.  But we're guessing anyway...  */
700
701 static CORE_ADDR
702 alpha_heuristic_proc_start (CORE_ADDR pc)
703 {
704   struct gdbarch_tdep *tdep = gdbarch_tdep (current_gdbarch);
705   CORE_ADDR last_non_nop = pc;
706   CORE_ADDR fence = pc - heuristic_fence_post;
707   CORE_ADDR orig_pc = pc;
708   CORE_ADDR func;
709
710   if (pc == 0)
711     return 0;
712
713   /* First see if we can find the start of the function from minimal
714      symbol information.  This can succeed with a binary that doesn't
715      have debug info, but hasn't been stripped.  */
716   func = get_pc_function_start (pc);
717   if (func)
718     return func;
719
720   if (heuristic_fence_post == UINT_MAX
721       || fence < tdep->vm_min_address)
722     fence = tdep->vm_min_address;
723
724   /* Search back for previous return; also stop at a 0, which might be
725      seen for instance before the start of a code section.  Don't include
726      nops, since this usually indicates padding between functions.  */
727   for (pc -= 4; pc >= fence; pc -= 4)
728     {
729       unsigned int insn = alpha_read_insn (pc);
730       switch (insn)
731         {
732         case 0:                 /* invalid insn */
733         case 0x6bfa8001:        /* ret $31,($26),1 */
734           return last_non_nop;
735
736         case 0x2ffe0000:        /* unop: ldq_u $31,0($30) */
737         case 0x47ff041f:        /* nop: bis $31,$31,$31 */
738           break;
739
740         default:
741           last_non_nop = pc;
742           break;
743         }
744     }
745
746   /* It's not clear to me why we reach this point when stopping quietly,
747      but with this test, at least we don't print out warnings for every
748      child forked (eg, on decstation).  22apr93 rich@cygnus.com.  */
749   if (stop_soon == NO_STOP_QUIETLY)
750     {
751       static int blurb_printed = 0;
752
753       if (fence == tdep->vm_min_address)
754         warning ("Hit beginning of text section without finding");
755       else
756         warning ("Hit heuristic-fence-post without finding");
757       warning ("enclosing function for address 0x%s", paddr_nz (orig_pc));
758
759       if (!blurb_printed)
760         {
761           printf_filtered ("\
762 This warning occurs if you are debugging a function without any symbols\n\
763 (for example, in a stripped executable).  In that case, you may wish to\n\
764 increase the size of the search with the `set heuristic-fence-post' command.\n\
765 \n\
766 Otherwise, you told GDB there was a function where there isn't one, or\n\
767 (more likely) you have encountered a bug in GDB.\n");
768           blurb_printed = 1;
769         }
770     }
771
772   return 0;
773 }
774
775 static struct alpha_heuristic_unwind_cache *
776 alpha_heuristic_frame_unwind_cache (struct frame_info *next_frame,
777                                     void **this_prologue_cache,
778                                     CORE_ADDR start_pc)
779 {
780   struct alpha_heuristic_unwind_cache *info;
781   ULONGEST val;
782   CORE_ADDR limit_pc, cur_pc;
783   int frame_reg, frame_size, return_reg, reg;
784
785   if (*this_prologue_cache)
786     return *this_prologue_cache;
787
788   info = FRAME_OBSTACK_ZALLOC (struct alpha_heuristic_unwind_cache);
789   *this_prologue_cache = info;
790   info->saved_regs = frame_obstack_zalloc (SIZEOF_FRAME_SAVED_REGS);
791
792   limit_pc = frame_pc_unwind (next_frame);
793   if (start_pc == 0)
794     start_pc = alpha_heuristic_proc_start (limit_pc);
795   info->start_pc = start_pc;
796
797   frame_reg = ALPHA_SP_REGNUM;
798   frame_size = 0;
799   return_reg = -1;
800
801   /* If we've identified a likely place to start, do code scanning.  */
802   if (start_pc != 0)
803     {
804       /* Limit the forward search to 50 instructions.  */
805       if (start_pc + 200 < limit_pc)
806         limit_pc = start_pc + 200;
807
808       for (cur_pc = start_pc; cur_pc < limit_pc; cur_pc += 4)
809         {
810           unsigned int word = alpha_read_insn (cur_pc);
811
812           if ((word & 0xffff0000) == 0x23de0000)        /* lda $sp,n($sp) */
813             {
814               if (word & 0x8000)
815                 {
816                   /* Consider only the first stack allocation instruction
817                      to contain the static size of the frame. */
818                   if (frame_size == 0)
819                     frame_size = (-word) & 0xffff;
820                 }
821               else
822                 {
823                   /* Exit loop if a positive stack adjustment is found, which
824                      usually means that the stack cleanup code in the function
825                      epilogue is reached.  */
826                   break;
827                 }
828             }
829           else if ((word & 0xfc1f0000) == 0xb41e0000)   /* stq reg,n($sp) */
830             {
831               reg = (word & 0x03e00000) >> 21;
832
833               if (reg == 31)
834                 continue;
835
836               /* Do not compute the address where the register was saved yet,
837                  because we don't know yet if the offset will need to be
838                  relative to $sp or $fp (we can not compute the address
839                  relative to $sp if $sp is updated during the execution of
840                  the current subroutine, for instance when doing some alloca).
841                  So just store the offset for the moment, and compute the
842                  address later when we know whether this frame has a frame
843                  pointer or not.  */
844               /* Hack: temporarily add one, so that the offset is non-zero
845                  and we can tell which registers have save offsets below.  */
846               info->saved_regs[reg] = (word & 0xffff) + 1;
847
848               /* Starting with OSF/1-3.2C, the system libraries are shipped
849                  without local symbols, but they still contain procedure
850                  descriptors without a symbol reference. GDB is currently
851                  unable to find these procedure descriptors and uses
852                  heuristic_proc_desc instead.
853                  As some low level compiler support routines (__div*, __add*)
854                  use a non-standard return address register, we have to
855                  add some heuristics to determine the return address register,
856                  or stepping over these routines will fail.
857                  Usually the return address register is the first register
858                  saved on the stack, but assembler optimization might
859                  rearrange the register saves.
860                  So we recognize only a few registers (t7, t9, ra) within
861                  the procedure prologue as valid return address registers.
862                  If we encounter a return instruction, we extract the
863                  the return address register from it.
864
865                  FIXME: Rewriting GDB to access the procedure descriptors,
866                  e.g. via the minimal symbol table, might obviate this hack.  */
867               if (return_reg == -1
868                   && cur_pc < (start_pc + 80)
869                   && (reg == ALPHA_T7_REGNUM
870                       || reg == ALPHA_T9_REGNUM
871                       || reg == ALPHA_RA_REGNUM))
872                 return_reg = reg;
873             }
874           else if ((word & 0xffe0ffff) == 0x6be08001)   /* ret zero,reg,1 */
875             return_reg = (word >> 16) & 0x1f;
876           else if (word == 0x47de040f)                  /* bis sp,sp,fp */
877             frame_reg = ALPHA_GCC_FP_REGNUM;
878           else if (word == 0x47fe040f)                  /* bis zero,sp,fp */
879             frame_reg = ALPHA_GCC_FP_REGNUM;
880         }
881
882       /* If we haven't found a valid return address register yet, keep
883          searching in the procedure prologue.  */
884       if (return_reg == -1)
885         {
886           while (cur_pc < (limit_pc + 80) && cur_pc < (start_pc + 80))
887             {
888               unsigned int word = alpha_read_insn (cur_pc);
889
890               if ((word & 0xfc1f0000) == 0xb41e0000)    /* stq reg,n($sp) */
891                 {
892                   reg = (word & 0x03e00000) >> 21;
893                   if (reg == ALPHA_T7_REGNUM
894                       || reg == ALPHA_T9_REGNUM
895                       || reg == ALPHA_RA_REGNUM)
896                     {
897                       return_reg = reg;
898                       break;
899                     }
900                 }
901               else if ((word & 0xffe0ffff) == 0x6be08001) /* ret zero,reg,1 */
902                 {
903                   return_reg = (word >> 16) & 0x1f;
904                   break;
905                 }
906
907               cur_pc += 4;
908             }
909         }
910     }
911
912   /* Failing that, do default to the customary RA.  */
913   if (return_reg == -1)
914     return_reg = ALPHA_RA_REGNUM;
915   info->return_reg = return_reg;
916
917   frame_unwind_unsigned_register (next_frame, frame_reg, &val);
918   info->vfp = val + frame_size;
919
920   /* Convert offsets to absolute addresses.  See above about adding
921      one to the offsets to make all detected offsets non-zero.  */
922   for (reg = 0; reg < ALPHA_NUM_REGS; ++reg)
923     if (info->saved_regs[reg])
924       info->saved_regs[reg] += val - 1;
925
926   return info;
927 }
928
929 /* Given a GDB frame, determine the address of the calling function's
930    frame.  This will be used to create a new GDB frame struct.  */
931
932 static void
933 alpha_heuristic_frame_this_id (struct frame_info *next_frame,
934                                  void **this_prologue_cache,
935                                  struct frame_id *this_id)
936 {
937   struct alpha_heuristic_unwind_cache *info
938     = alpha_heuristic_frame_unwind_cache (next_frame, this_prologue_cache, 0);
939
940   /* This is meant to halt the backtrace at "_start".  Make sure we
941      don't halt it at a generic dummy frame. */
942   if (inside_entry_file (info->start_pc))
943     return;
944
945   *this_id = frame_id_build (info->vfp, info->start_pc);
946 }
947
948 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
949
950 static void
951 alpha_heuristic_frame_prev_register (struct frame_info *next_frame,
952                                      void **this_prologue_cache,
953                                      int regnum, int *optimizedp,
954                                      enum lval_type *lvalp, CORE_ADDR *addrp,
955                                      int *realnump, void *bufferp)
956 {
957   struct alpha_heuristic_unwind_cache *info
958     = alpha_heuristic_frame_unwind_cache (next_frame, this_prologue_cache, 0);
959
960   /* The PC of the previous frame is stored in the link register of
961      the current frame.  Frob regnum so that we pull the value from
962      the correct place.  */
963   if (regnum == ALPHA_PC_REGNUM)
964     regnum = info->return_reg;
965   
966   /* For all registers known to be saved in the current frame, 
967      do the obvious and pull the value out.  */
968   if (info->saved_regs[regnum])
969     {
970       *optimizedp = 0;
971       *lvalp = lval_memory;
972       *addrp = info->saved_regs[regnum];
973       *realnump = -1;
974       if (bufferp != NULL)
975         read_memory (*addrp, bufferp, ALPHA_REGISTER_SIZE);
976       return;
977     }
978
979   /* The stack pointer of the previous frame is computed by popping
980      the current stack frame.  */
981   if (regnum == ALPHA_SP_REGNUM)
982     {
983       *optimizedp = 0;
984       *lvalp = not_lval;
985       *addrp = 0;
986       *realnump = -1;
987       if (bufferp != NULL)
988         store_unsigned_integer (bufferp, ALPHA_REGISTER_SIZE, info->vfp);
989       return;
990     }
991
992   /* Otherwise assume the next frame has the same register value.  */
993   frame_register (next_frame, regnum, optimizedp, lvalp, addrp,
994                   realnump, bufferp);
995 }
996
997 static const struct frame_unwind alpha_heuristic_frame_unwind = {
998   NORMAL_FRAME,
999   alpha_heuristic_frame_this_id,
1000   alpha_heuristic_frame_prev_register
1001 };
1002
1003 static const struct frame_unwind *
1004 alpha_heuristic_frame_p (CORE_ADDR pc)
1005 {
1006   return &alpha_heuristic_frame_unwind;
1007 }
1008
1009 static CORE_ADDR
1010 alpha_heuristic_frame_base_address (struct frame_info *next_frame,
1011                                     void **this_prologue_cache)
1012 {
1013   struct alpha_heuristic_unwind_cache *info
1014     = alpha_heuristic_frame_unwind_cache (next_frame, this_prologue_cache, 0);
1015
1016   return info->vfp;
1017 }
1018
1019 static const struct frame_base alpha_heuristic_frame_base = {
1020   &alpha_heuristic_frame_unwind,
1021   alpha_heuristic_frame_base_address,
1022   alpha_heuristic_frame_base_address,
1023   alpha_heuristic_frame_base_address
1024 };
1025
1026 /* Just like reinit_frame_cache, but with the right arguments to be
1027    callable as an sfunc.  Used by the "set heuristic-fence-post" command.  */
1028
1029 static void
1030 reinit_frame_cache_sfunc (char *args, int from_tty, struct cmd_list_element *c)
1031 {
1032   reinit_frame_cache ();
1033 }
1034
1035 \f
1036 /* ALPHA stack frames are almost impenetrable.  When execution stops,
1037    we basically have to look at symbol information for the function
1038    that we stopped in, which tells us *which* register (if any) is
1039    the base of the frame pointer, and what offset from that register
1040    the frame itself is at.  
1041
1042    This presents a problem when trying to examine a stack in memory
1043    (that isn't executing at the moment), using the "frame" command.  We
1044    don't have a PC, nor do we have any registers except SP.
1045
1046    This routine takes two arguments, SP and PC, and tries to make the
1047    cached frames look as if these two arguments defined a frame on the
1048    cache.  This allows the rest of info frame to extract the important
1049    arguments without difficulty.  */
1050
1051 struct frame_info *
1052 alpha_setup_arbitrary_frame (int argc, CORE_ADDR *argv)
1053 {
1054   if (argc != 2)
1055     error ("ALPHA frame specifications require two arguments: sp and pc");
1056
1057   return create_new_frame (argv[0], argv[1]);
1058 }
1059
1060 /* Assuming NEXT_FRAME->prev is a dummy, return the frame ID of that
1061    dummy frame.  The frame ID's base needs to match the TOS value
1062    saved by save_dummy_frame_tos(), and the PC match the dummy frame's
1063    breakpoint.  */
1064
1065 static struct frame_id
1066 alpha_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *next_frame)
1067 {
1068   ULONGEST base;
1069   frame_unwind_unsigned_register (next_frame, ALPHA_SP_REGNUM, &base);
1070   return frame_id_build (base, frame_pc_unwind (next_frame));
1071 }
1072
1073 static CORE_ADDR
1074 alpha_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
1075 {
1076   ULONGEST pc;
1077   frame_unwind_unsigned_register (next_frame, ALPHA_PC_REGNUM, &pc);
1078   return pc;
1079 }
1080
1081 \f
1082 /* alpha_software_single_step() is called just before we want to resume
1083    the inferior, if we want to single-step it but there is no hardware
1084    or kernel single-step support (NetBSD on Alpha, for example).  We find
1085    the target of the coming instruction and breakpoint it.
1086
1087    single_step is also called just after the inferior stops.  If we had
1088    set up a simulated single-step, we undo our damage.  */
1089
1090 static CORE_ADDR
1091 alpha_next_pc (CORE_ADDR pc)
1092 {
1093   unsigned int insn;
1094   unsigned int op;
1095   int offset;
1096   LONGEST rav;
1097
1098   insn = read_memory_unsigned_integer (pc, sizeof (insn));
1099
1100   /* Opcode is top 6 bits. */
1101   op = (insn >> 26) & 0x3f;
1102
1103   if (op == 0x1a)
1104     {
1105       /* Jump format: target PC is:
1106          RB & ~3  */
1107       return (read_register ((insn >> 16) & 0x1f) & ~3);
1108     }
1109
1110   if ((op & 0x30) == 0x30)
1111     {
1112       /* Branch format: target PC is:
1113          (new PC) + (4 * sext(displacement))  */
1114       if (op == 0x30 ||         /* BR */
1115           op == 0x34)           /* BSR */
1116         {
1117  branch_taken:
1118           offset = (insn & 0x001fffff);
1119           if (offset & 0x00100000)
1120             offset  |= 0xffe00000;
1121           offset *= 4;
1122           return (pc + 4 + offset);
1123         }
1124
1125       /* Need to determine if branch is taken; read RA.  */
1126       rav = (LONGEST) read_register ((insn >> 21) & 0x1f);
1127       switch (op)
1128         {
1129         case 0x38:              /* BLBC */
1130           if ((rav & 1) == 0)
1131             goto branch_taken;
1132           break;
1133         case 0x3c:              /* BLBS */
1134           if (rav & 1)
1135             goto branch_taken;
1136           break;
1137         case 0x39:              /* BEQ */
1138           if (rav == 0)
1139             goto branch_taken;
1140           break;
1141         case 0x3d:              /* BNE */
1142           if (rav != 0)
1143             goto branch_taken;
1144           break;
1145         case 0x3a:              /* BLT */
1146           if (rav < 0)
1147             goto branch_taken;
1148           break;
1149         case 0x3b:              /* BLE */
1150           if (rav <= 0)
1151             goto branch_taken;
1152           break;
1153         case 0x3f:              /* BGT */
1154           if (rav > 0)
1155             goto branch_taken;
1156           break;
1157         case 0x3e:              /* BGE */
1158           if (rav >= 0)
1159             goto branch_taken;
1160           break;
1161
1162         /* ??? Missing floating-point branches.  */
1163         }
1164     }
1165
1166   /* Not a branch or branch not taken; target PC is:
1167      pc + 4  */
1168   return (pc + 4);
1169 }
1170
1171 void
1172 alpha_software_single_step (enum target_signal sig, int insert_breakpoints_p)
1173 {
1174   static CORE_ADDR next_pc;
1175   typedef char binsn_quantum[BREAKPOINT_MAX];
1176   static binsn_quantum break_mem;
1177   CORE_ADDR pc;
1178
1179   if (insert_breakpoints_p)
1180     {
1181       pc = read_pc ();
1182       next_pc = alpha_next_pc (pc);
1183
1184       target_insert_breakpoint (next_pc, break_mem);
1185     }
1186   else
1187     {
1188       target_remove_breakpoint (next_pc, break_mem);
1189       write_pc (next_pc);
1190     }
1191 }
1192
1193 \f
1194 /* Initialize the current architecture based on INFO.  If possible, re-use an
1195    architecture from ARCHES, which is a list of architectures already created
1196    during this debugging session.
1197
1198    Called e.g. at program startup, when reading a core file, and when reading
1199    a binary file.  */
1200
1201 static struct gdbarch *
1202 alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
1203 {
1204   struct gdbarch_tdep *tdep;
1205   struct gdbarch *gdbarch;
1206
1207   /* Try to determine the ABI of the object we are loading.  */
1208   if (info.abfd != NULL && info.osabi == GDB_OSABI_UNKNOWN)
1209     {
1210       /* If it's an ECOFF file, assume it's OSF/1.  */
1211       if (bfd_get_flavour (info.abfd) == bfd_target_ecoff_flavour)
1212         info.osabi = GDB_OSABI_OSF1;
1213     }
1214
1215   /* Find a candidate among extant architectures.  */
1216   arches = gdbarch_list_lookup_by_info (arches, &info);
1217   if (arches != NULL)
1218     return arches->gdbarch;
1219
1220   tdep = xmalloc (sizeof (struct gdbarch_tdep));
1221   gdbarch = gdbarch_alloc (&info, tdep);
1222
1223   /* Lowest text address.  This is used by heuristic_proc_start()
1224      to decide when to stop looking.  */
1225   tdep->vm_min_address = (CORE_ADDR) 0x120000000;
1226
1227   tdep->dynamic_sigtramp_offset = NULL;
1228   tdep->sigcontext_addr = NULL;
1229
1230   tdep->jb_pc = -1;     /* longjmp support not enabled by default  */
1231
1232   /* Type sizes */
1233   set_gdbarch_short_bit (gdbarch, 16);
1234   set_gdbarch_int_bit (gdbarch, 32);
1235   set_gdbarch_long_bit (gdbarch, 64);
1236   set_gdbarch_long_long_bit (gdbarch, 64);
1237   set_gdbarch_float_bit (gdbarch, 32);
1238   set_gdbarch_double_bit (gdbarch, 64);
1239   set_gdbarch_long_double_bit (gdbarch, 64);
1240   set_gdbarch_ptr_bit (gdbarch, 64);
1241
1242   /* Register info */
1243   set_gdbarch_num_regs (gdbarch, ALPHA_NUM_REGS);
1244   set_gdbarch_sp_regnum (gdbarch, ALPHA_SP_REGNUM);
1245   set_gdbarch_deprecated_fp_regnum (gdbarch, ALPHA_FP_REGNUM);
1246   set_gdbarch_pc_regnum (gdbarch, ALPHA_PC_REGNUM);
1247   set_gdbarch_fp0_regnum (gdbarch, ALPHA_FP0_REGNUM);
1248
1249   set_gdbarch_register_name (gdbarch, alpha_register_name);
1250   set_gdbarch_deprecated_register_size (gdbarch, ALPHA_REGISTER_SIZE);
1251   set_gdbarch_deprecated_register_bytes (gdbarch, ALPHA_REGISTER_BYTES);
1252   set_gdbarch_register_byte (gdbarch, alpha_register_byte);
1253   set_gdbarch_register_raw_size (gdbarch, alpha_register_raw_size);
1254   set_gdbarch_deprecated_max_register_raw_size (gdbarch, ALPHA_MAX_REGISTER_RAW_SIZE);
1255   set_gdbarch_register_virtual_size (gdbarch, alpha_register_virtual_size);
1256   set_gdbarch_deprecated_max_register_virtual_size (gdbarch,
1257                                          ALPHA_MAX_REGISTER_VIRTUAL_SIZE);
1258   set_gdbarch_register_virtual_type (gdbarch, alpha_register_virtual_type);
1259
1260   set_gdbarch_cannot_fetch_register (gdbarch, alpha_cannot_fetch_register);
1261   set_gdbarch_cannot_store_register (gdbarch, alpha_cannot_store_register);
1262
1263   set_gdbarch_register_convertible (gdbarch, alpha_register_convertible);
1264   set_gdbarch_register_convert_to_virtual (gdbarch,
1265                                            alpha_register_convert_to_virtual);
1266   set_gdbarch_register_convert_to_raw (gdbarch, alpha_register_convert_to_raw);
1267
1268   /* Prologue heuristics.  */
1269   set_gdbarch_skip_prologue (gdbarch, alpha_skip_prologue);
1270
1271   /* Call info.  */
1272   set_gdbarch_frame_num_args (gdbarch, frame_num_args_unknown);
1273   set_gdbarch_frameless_function_invocation (gdbarch,
1274                                     generic_frameless_function_invocation_not);
1275
1276   set_gdbarch_use_struct_convention (gdbarch, alpha_use_struct_convention);
1277   set_gdbarch_deprecated_extract_return_value (gdbarch, alpha_extract_return_value);
1278   set_gdbarch_deprecated_store_struct_return (gdbarch, alpha_store_struct_return);
1279   set_gdbarch_deprecated_store_return_value (gdbarch, alpha_store_return_value);
1280   set_gdbarch_deprecated_extract_struct_value_address (gdbarch,
1281                                             alpha_extract_struct_value_address);
1282
1283   /* Settings for calling functions in the inferior.  */
1284   set_gdbarch_push_dummy_call (gdbarch, alpha_push_dummy_call);
1285
1286   /* Methods for saving / extracting a dummy frame's ID.  */
1287   set_gdbarch_unwind_dummy_id (gdbarch, alpha_unwind_dummy_id);
1288   set_gdbarch_save_dummy_frame_tos (gdbarch, generic_save_dummy_frame_tos);
1289
1290   /* Return the unwound PC value.  */
1291   set_gdbarch_unwind_pc (gdbarch, alpha_unwind_pc);
1292
1293   set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
1294   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
1295
1296   set_gdbarch_breakpoint_from_pc (gdbarch, alpha_breakpoint_from_pc);
1297   set_gdbarch_decr_pc_after_break (gdbarch, 4);
1298
1299   set_gdbarch_function_start_offset (gdbarch, 0);
1300   set_gdbarch_frame_args_skip (gdbarch, 0);
1301
1302   /* Hook in ABI-specific overrides, if they have been registered.  */
1303   gdbarch_init_osabi (info, gdbarch);
1304
1305   /* Now that we have tuned the configuration, set a few final things
1306      based on what the OS ABI has told us.  */
1307
1308   if (tdep->jb_pc >= 0)
1309     set_gdbarch_get_longjmp_target (gdbarch, alpha_get_longjmp_target);
1310
1311   frame_unwind_append_predicate (gdbarch, alpha_sigtramp_frame_p);
1312   frame_unwind_append_predicate (gdbarch, alpha_heuristic_frame_p);
1313
1314   frame_base_set_default (gdbarch, &alpha_heuristic_frame_base);
1315
1316   return gdbarch;
1317 }
1318
1319 void
1320 _initialize_alpha_tdep (void)
1321 {
1322   struct cmd_list_element *c;
1323
1324   gdbarch_register (bfd_arch_alpha, alpha_gdbarch_init, NULL);
1325   deprecated_tm_print_insn = print_insn_alpha;
1326
1327   /* Let the user set the fence post for heuristic_proc_start.  */
1328
1329   /* We really would like to have both "0" and "unlimited" work, but
1330      command.c doesn't deal with that.  So make it a var_zinteger
1331      because the user can always use "999999" or some such for unlimited.  */
1332   c = add_set_cmd ("heuristic-fence-post", class_support, var_zinteger,
1333                    (char *) &heuristic_fence_post,
1334                    "\
1335 Set the distance searched for the start of a function.\n\
1336 If you are debugging a stripped executable, GDB needs to search through the\n\
1337 program for the start of a function.  This command sets the distance of the\n\
1338 search.  The only need to set it is when debugging a stripped executable.",
1339                    &setlist);
1340   /* We need to throw away the frame cache when we set this, since it
1341      might change our ability to get backtraces.  */
1342   set_cmd_sfunc (c, reinit_frame_cache_sfunc);
1343   add_show_from_set (c, &showlist);
1344 }