Commit | Line | Data |
---|---|---|
c906108c | 1 | /* Definitions to make GDB run on an Alpha box under OSF1. This is |
92362027 AC |
2 | also used by the Alpha/Netware and Alpha GNU/Linux targets. |
3 | ||
4 | Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2002 Free | |
5 | Software Foundation, Inc. | |
c906108c | 6 | |
c5aa993b | 7 | This file is part of GDB. |
c906108c | 8 | |
c5aa993b JM |
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. | |
c906108c | 13 | |
c5aa993b JM |
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. | |
c906108c | 18 | |
c5aa993b JM |
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. */ | |
c906108c SS |
23 | |
24 | #ifndef TM_ALPHA_H | |
25 | #define TM_ALPHA_H | |
26 | ||
27 | #include "bfd.h" | |
28 | #include "coff/sym.h" /* Needed for PDR below. */ | |
29 | #include "coff/symconst.h" | |
30 | ||
c906108c | 31 | struct frame_info; |
c906108c | 32 | struct symbol; |
c906108c | 33 | |
36a6271d JT |
34 | /* Number of traps that happen between exec'ing the shell |
35 | to run an inferior, and when we finally get to | |
36 | the inferior code. This is 2 on most implementations. */ | |
c906108c SS |
37 | #define START_INFERIOR_TRAPS_EXPECTED 3 |
38 | ||
c906108c SS |
39 | /* Special symbol found in blocks associated with routines. We can hang |
40 | alpha_extra_func_info_t's off of this. */ | |
41 | ||
42 | #define MIPS_EFI_SYMBOL_NAME "__GDB_EFI_INFO__" | |
a14ed312 | 43 | extern void ecoff_relocate_efi (struct symbol *, CORE_ADDR); |
c906108c | 44 | |
dc129d82 JT |
45 | #define RA_REGNUM 26 /* XXXJRT needed by mdebugread.c */ |
46 | ||
c906108c SS |
47 | /* Specific information about a procedure. |
48 | This overlays the ALPHA's PDR records, | |
49 | alpharead.c (ab)uses this to save memory */ | |
50 | ||
c5aa993b JM |
51 | typedef struct alpha_extra_func_info |
52 | { | |
53 | long numargs; /* number of args to procedure (was iopt) */ | |
54 | PDR pdr; /* Procedure descriptor record */ | |
55 | } | |
56 | *alpha_extra_func_info_t; | |
c906108c SS |
57 | |
58 | /* Define the extra_func_info that mipsread.c needs. | |
59 | FIXME: We should define our own PDR interface, perhaps in a separate | |
60 | header file. This would get rid of the <bfd.h> inclusion in all sources | |
61 | and would abstract the mips/alpha interface from ecoff. */ | |
62 | #define mips_extra_func_info alpha_extra_func_info | |
63 | #define mips_extra_func_info_t alpha_extra_func_info_t | |
64 | ||
c906108c SS |
65 | /* It takes two values to specify a frame on the ALPHA. Sigh. |
66 | ||
67 | In fact, at the moment, the *PC* is the primary value that sets up | |
68 | a frame. The PC is looked up to see what function it's in; symbol | |
69 | information from that function tells us which register is the frame | |
70 | pointer base, and what offset from there is the "virtual frame pointer". | |
71 | (This is usually an offset from SP.) FIXME -- this should be cleaned | |
72 | up so that the primary value is the SP, and the PC is used to disambiguate | |
73 | multiple functions with the same SP that are at different stack levels. */ | |
74 | ||
a57f9e49 JT |
75 | #define SETUP_ARBITRARY_FRAME(argc, argv) \ |
76 | alpha_setup_arbitrary_frame (argc, argv) | |
77 | extern struct frame_info *alpha_setup_arbitrary_frame (int, CORE_ADDR *); | |
c906108c | 78 | |
c906108c | 79 | #endif /* TM_ALPHA_H */ |