]> Git Repo - binutils.git/blob - gdb/gdbarch.h
2004-01-17 Andrew Cagney <[email protected]>
[binutils.git] / gdb / gdbarch.h
1 /* *INDENT-OFF* */ /* THIS FILE IS GENERATED */
2
3 /* Dynamic architecture support for GDB, the GNU debugger.
4    Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
5
6    This file is part of GDB.
7
8    This program is free software; you can redistribute it and/or modify
9    it under the terms of the GNU General Public License as published by
10    the Free Software Foundation; either version 2 of the License, or
11    (at your option) any later version.
12
13    This program is distributed in the hope that it will be useful,
14    but WITHOUT ANY WARRANTY; without even the implied warranty of
15    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16    GNU General Public License for more details.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, write to the Free Software
20    Foundation, Inc., 59 Temple Place - Suite 330,
21    Boston, MA 02111-1307, USA.  */
22
23 /* This file was created with the aid of ``gdbarch.sh''.
24
25    The Bourne shell script ``gdbarch.sh'' creates the files
26    ``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
27    against the existing ``gdbarch.[hc]''.  Any differences found
28    being reported.
29
30    If editing this file, please also run gdbarch.sh and merge any
31    changes into that script. Conversely, when making sweeping changes
32    to this file, modifying gdbarch.sh and using its output may prove
33    easier. */
34
35 #ifndef GDBARCH_H
36 #define GDBARCH_H
37
38 struct floatformat;
39 struct ui_file;
40 struct frame_info;
41 struct value;
42 struct objfile;
43 struct minimal_symbol;
44 struct regcache;
45 struct reggroup;
46 struct regset;
47 struct disassemble_info;
48 struct target_ops;
49
50 extern struct gdbarch *current_gdbarch;
51
52
53 /* If any of the following are defined, the target wasn't correctly
54    converted. */
55
56 #if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PURE) && defined (GDB_TM_FILE)
57 #error "GDB_TM_FILE: Pure multi-arch targets do not have a tm.h file."
58 #endif
59
60
61 /* The following are pre-initialized by GDBARCH. */
62
63 extern const struct bfd_arch_info * gdbarch_bfd_arch_info (struct gdbarch *gdbarch);
64 /* set_gdbarch_bfd_arch_info() - not applicable - pre-initialized. */
65 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_ARCHITECTURE)
66 #error "Non multi-arch definition of TARGET_ARCHITECTURE"
67 #endif
68 #if !defined (TARGET_ARCHITECTURE)
69 #define TARGET_ARCHITECTURE (gdbarch_bfd_arch_info (current_gdbarch))
70 #endif
71
72 extern int gdbarch_byte_order (struct gdbarch *gdbarch);
73 /* set_gdbarch_byte_order() - not applicable - pre-initialized. */
74 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_BYTE_ORDER)
75 #error "Non multi-arch definition of TARGET_BYTE_ORDER"
76 #endif
77 #if !defined (TARGET_BYTE_ORDER)
78 #define TARGET_BYTE_ORDER (gdbarch_byte_order (current_gdbarch))
79 #endif
80
81 extern enum gdb_osabi gdbarch_osabi (struct gdbarch *gdbarch);
82 /* set_gdbarch_osabi() - not applicable - pre-initialized. */
83 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_OSABI)
84 #error "Non multi-arch definition of TARGET_OSABI"
85 #endif
86 #if !defined (TARGET_OSABI)
87 #define TARGET_OSABI (gdbarch_osabi (current_gdbarch))
88 #endif
89
90
91 /* The following are initialized by the target dependent code. */
92
93 /* Number of bits in a char or unsigned char for the target machine.
94    Just like CHAR_BIT in <limits.h> but describes the target machine.
95    v:2:TARGET_CHAR_BIT:int:char_bit::::8 * sizeof (char):8::0:
96   
97    Number of bits in a short or unsigned short for the target machine. */
98
99 extern int gdbarch_short_bit (struct gdbarch *gdbarch);
100 extern void set_gdbarch_short_bit (struct gdbarch *gdbarch, int short_bit);
101 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_SHORT_BIT)
102 #error "Non multi-arch definition of TARGET_SHORT_BIT"
103 #endif
104 #if !defined (TARGET_SHORT_BIT)
105 #define TARGET_SHORT_BIT (gdbarch_short_bit (current_gdbarch))
106 #endif
107
108 /* Number of bits in an int or unsigned int for the target machine. */
109
110 extern int gdbarch_int_bit (struct gdbarch *gdbarch);
111 extern void set_gdbarch_int_bit (struct gdbarch *gdbarch, int int_bit);
112 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_INT_BIT)
113 #error "Non multi-arch definition of TARGET_INT_BIT"
114 #endif
115 #if !defined (TARGET_INT_BIT)
116 #define TARGET_INT_BIT (gdbarch_int_bit (current_gdbarch))
117 #endif
118
119 /* Number of bits in a long or unsigned long for the target machine. */
120
121 extern int gdbarch_long_bit (struct gdbarch *gdbarch);
122 extern void set_gdbarch_long_bit (struct gdbarch *gdbarch, int long_bit);
123 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_BIT)
124 #error "Non multi-arch definition of TARGET_LONG_BIT"
125 #endif
126 #if !defined (TARGET_LONG_BIT)
127 #define TARGET_LONG_BIT (gdbarch_long_bit (current_gdbarch))
128 #endif
129
130 /* Number of bits in a long long or unsigned long long for the target
131    machine. */
132
133 extern int gdbarch_long_long_bit (struct gdbarch *gdbarch);
134 extern void set_gdbarch_long_long_bit (struct gdbarch *gdbarch, int long_long_bit);
135 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_LONG_BIT)
136 #error "Non multi-arch definition of TARGET_LONG_LONG_BIT"
137 #endif
138 #if !defined (TARGET_LONG_LONG_BIT)
139 #define TARGET_LONG_LONG_BIT (gdbarch_long_long_bit (current_gdbarch))
140 #endif
141
142 /* Number of bits in a float for the target machine. */
143
144 extern int gdbarch_float_bit (struct gdbarch *gdbarch);
145 extern void set_gdbarch_float_bit (struct gdbarch *gdbarch, int float_bit);
146 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_FLOAT_BIT)
147 #error "Non multi-arch definition of TARGET_FLOAT_BIT"
148 #endif
149 #if !defined (TARGET_FLOAT_BIT)
150 #define TARGET_FLOAT_BIT (gdbarch_float_bit (current_gdbarch))
151 #endif
152
153 /* Number of bits in a double for the target machine. */
154
155 extern int gdbarch_double_bit (struct gdbarch *gdbarch);
156 extern void set_gdbarch_double_bit (struct gdbarch *gdbarch, int double_bit);
157 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_DOUBLE_BIT)
158 #error "Non multi-arch definition of TARGET_DOUBLE_BIT"
159 #endif
160 #if !defined (TARGET_DOUBLE_BIT)
161 #define TARGET_DOUBLE_BIT (gdbarch_double_bit (current_gdbarch))
162 #endif
163
164 /* Number of bits in a long double for the target machine. */
165
166 extern int gdbarch_long_double_bit (struct gdbarch *gdbarch);
167 extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_double_bit);
168 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_DOUBLE_BIT)
169 #error "Non multi-arch definition of TARGET_LONG_DOUBLE_BIT"
170 #endif
171 #if !defined (TARGET_LONG_DOUBLE_BIT)
172 #define TARGET_LONG_DOUBLE_BIT (gdbarch_long_double_bit (current_gdbarch))
173 #endif
174
175 /* For most targets, a pointer on the target and its representation as an
176    address in GDB have the same size and "look the same".  For such a
177    target, you need only set TARGET_PTR_BIT / ptr_bit and TARGET_ADDR_BIT
178    / addr_bit will be set from it.
179   
180    If TARGET_PTR_BIT and TARGET_ADDR_BIT are different, you'll probably
181    also need to set POINTER_TO_ADDRESS and ADDRESS_TO_POINTER as well.
182   
183    ptr_bit is the size of a pointer on the target */
184
185 extern int gdbarch_ptr_bit (struct gdbarch *gdbarch);
186 extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit);
187 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_PTR_BIT)
188 #error "Non multi-arch definition of TARGET_PTR_BIT"
189 #endif
190 #if !defined (TARGET_PTR_BIT)
191 #define TARGET_PTR_BIT (gdbarch_ptr_bit (current_gdbarch))
192 #endif
193
194 /* addr_bit is the size of a target address as represented in gdb */
195
196 extern int gdbarch_addr_bit (struct gdbarch *gdbarch);
197 extern void set_gdbarch_addr_bit (struct gdbarch *gdbarch, int addr_bit);
198 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_ADDR_BIT)
199 #error "Non multi-arch definition of TARGET_ADDR_BIT"
200 #endif
201 #if !defined (TARGET_ADDR_BIT)
202 #define TARGET_ADDR_BIT (gdbarch_addr_bit (current_gdbarch))
203 #endif
204
205 /* Number of bits in a BFD_VMA for the target object file format. */
206
207 extern int gdbarch_bfd_vma_bit (struct gdbarch *gdbarch);
208 extern void set_gdbarch_bfd_vma_bit (struct gdbarch *gdbarch, int bfd_vma_bit);
209 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_BFD_VMA_BIT)
210 #error "Non multi-arch definition of TARGET_BFD_VMA_BIT"
211 #endif
212 #if !defined (TARGET_BFD_VMA_BIT)
213 #define TARGET_BFD_VMA_BIT (gdbarch_bfd_vma_bit (current_gdbarch))
214 #endif
215
216 /* One if `char' acts like `signed char', zero if `unsigned char'. */
217
218 extern int gdbarch_char_signed (struct gdbarch *gdbarch);
219 extern void set_gdbarch_char_signed (struct gdbarch *gdbarch, int char_signed);
220 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_CHAR_SIGNED)
221 #error "Non multi-arch definition of TARGET_CHAR_SIGNED"
222 #endif
223 #if !defined (TARGET_CHAR_SIGNED)
224 #define TARGET_CHAR_SIGNED (gdbarch_char_signed (current_gdbarch))
225 #endif
226
227 #if defined (TARGET_READ_PC)
228 /* Legacy for systems yet to multi-arch TARGET_READ_PC */
229 #if !defined (TARGET_READ_PC_P)
230 #define TARGET_READ_PC_P() (1)
231 #endif
232 #endif
233
234 extern int gdbarch_read_pc_p (struct gdbarch *gdbarch);
235 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_PC_P)
236 #error "Non multi-arch definition of TARGET_READ_PC"
237 #endif
238 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_READ_PC_P)
239 #define TARGET_READ_PC_P() (gdbarch_read_pc_p (current_gdbarch))
240 #endif
241
242 typedef CORE_ADDR (gdbarch_read_pc_ftype) (ptid_t ptid);
243 extern CORE_ADDR gdbarch_read_pc (struct gdbarch *gdbarch, ptid_t ptid);
244 extern void set_gdbarch_read_pc (struct gdbarch *gdbarch, gdbarch_read_pc_ftype *read_pc);
245 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_PC)
246 #error "Non multi-arch definition of TARGET_READ_PC"
247 #endif
248 #if !defined (TARGET_READ_PC)
249 #define TARGET_READ_PC(ptid) (gdbarch_read_pc (current_gdbarch, ptid))
250 #endif
251
252 typedef void (gdbarch_write_pc_ftype) (CORE_ADDR val, ptid_t ptid);
253 extern void gdbarch_write_pc (struct gdbarch *gdbarch, CORE_ADDR val, ptid_t ptid);
254 extern void set_gdbarch_write_pc (struct gdbarch *gdbarch, gdbarch_write_pc_ftype *write_pc);
255 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_WRITE_PC)
256 #error "Non multi-arch definition of TARGET_WRITE_PC"
257 #endif
258 #if !defined (TARGET_WRITE_PC)
259 #define TARGET_WRITE_PC(val, ptid) (gdbarch_write_pc (current_gdbarch, val, ptid))
260 #endif
261
262 /* UNWIND_SP is a direct replacement for TARGET_READ_SP. */
263
264 #if defined (TARGET_READ_SP)
265 /* Legacy for systems yet to multi-arch TARGET_READ_SP */
266 #if !defined (TARGET_READ_SP_P)
267 #define TARGET_READ_SP_P() (1)
268 #endif
269 #endif
270
271 extern int gdbarch_read_sp_p (struct gdbarch *gdbarch);
272 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_SP_P)
273 #error "Non multi-arch definition of TARGET_READ_SP"
274 #endif
275 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_READ_SP_P)
276 #define TARGET_READ_SP_P() (gdbarch_read_sp_p (current_gdbarch))
277 #endif
278
279 typedef CORE_ADDR (gdbarch_read_sp_ftype) (void);
280 extern CORE_ADDR gdbarch_read_sp (struct gdbarch *gdbarch);
281 extern void set_gdbarch_read_sp (struct gdbarch *gdbarch, gdbarch_read_sp_ftype *read_sp);
282 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_READ_SP)
283 #error "Non multi-arch definition of TARGET_READ_SP"
284 #endif
285 #if !defined (TARGET_READ_SP)
286 #define TARGET_READ_SP() (gdbarch_read_sp (current_gdbarch))
287 #endif
288
289 /* Function for getting target's idea of a frame pointer.  FIXME: GDB's
290    whole scheme for dealing with "frames" and "frame pointers" needs a
291    serious shakedown. */
292
293 typedef void (gdbarch_virtual_frame_pointer_ftype) (CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
294 extern void gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, CORE_ADDR pc, int *frame_regnum, LONGEST *frame_offset);
295 extern void set_gdbarch_virtual_frame_pointer (struct gdbarch *gdbarch, gdbarch_virtual_frame_pointer_ftype *virtual_frame_pointer);
296 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_VIRTUAL_FRAME_POINTER)
297 #error "Non multi-arch definition of TARGET_VIRTUAL_FRAME_POINTER"
298 #endif
299 #if !defined (TARGET_VIRTUAL_FRAME_POINTER)
300 #define TARGET_VIRTUAL_FRAME_POINTER(pc, frame_regnum, frame_offset) (gdbarch_virtual_frame_pointer (current_gdbarch, pc, frame_regnum, frame_offset))
301 #endif
302
303 extern int gdbarch_pseudo_register_read_p (struct gdbarch *gdbarch);
304
305 typedef void (gdbarch_pseudo_register_read_ftype) (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, void *buf);
306 extern void gdbarch_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, void *buf);
307 extern void set_gdbarch_pseudo_register_read (struct gdbarch *gdbarch, gdbarch_pseudo_register_read_ftype *pseudo_register_read);
308
309 extern int gdbarch_pseudo_register_write_p (struct gdbarch *gdbarch);
310
311 typedef void (gdbarch_pseudo_register_write_ftype) (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf);
312 extern void gdbarch_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int cookednum, const void *buf);
313 extern void set_gdbarch_pseudo_register_write (struct gdbarch *gdbarch, gdbarch_pseudo_register_write_ftype *pseudo_register_write);
314
315 extern int gdbarch_num_regs (struct gdbarch *gdbarch);
316 extern void set_gdbarch_num_regs (struct gdbarch *gdbarch, int num_regs);
317 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NUM_REGS)
318 #error "Non multi-arch definition of NUM_REGS"
319 #endif
320 #if !defined (NUM_REGS)
321 #define NUM_REGS (gdbarch_num_regs (current_gdbarch))
322 #endif
323
324 /* This macro gives the number of pseudo-registers that live in the
325    register namespace but do not get fetched or stored on the target.
326    These pseudo-registers may be aliases for other registers,
327    combinations of other registers, or they may be computed by GDB. */
328
329 extern int gdbarch_num_pseudo_regs (struct gdbarch *gdbarch);
330 extern void set_gdbarch_num_pseudo_regs (struct gdbarch *gdbarch, int num_pseudo_regs);
331 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NUM_PSEUDO_REGS)
332 #error "Non multi-arch definition of NUM_PSEUDO_REGS"
333 #endif
334 #if !defined (NUM_PSEUDO_REGS)
335 #define NUM_PSEUDO_REGS (gdbarch_num_pseudo_regs (current_gdbarch))
336 #endif
337
338 /* GDB's standard (or well known) register numbers.  These can map onto
339    a real register or a pseudo (computed) register or not be defined at
340    all (-1).
341    SP_REGNUM will hopefully be replaced by UNWIND_SP. */
342
343 extern int gdbarch_sp_regnum (struct gdbarch *gdbarch);
344 extern void set_gdbarch_sp_regnum (struct gdbarch *gdbarch, int sp_regnum);
345 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SP_REGNUM)
346 #error "Non multi-arch definition of SP_REGNUM"
347 #endif
348 #if !defined (SP_REGNUM)
349 #define SP_REGNUM (gdbarch_sp_regnum (current_gdbarch))
350 #endif
351
352 extern int gdbarch_pc_regnum (struct gdbarch *gdbarch);
353 extern void set_gdbarch_pc_regnum (struct gdbarch *gdbarch, int pc_regnum);
354 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PC_REGNUM)
355 #error "Non multi-arch definition of PC_REGNUM"
356 #endif
357 #if !defined (PC_REGNUM)
358 #define PC_REGNUM (gdbarch_pc_regnum (current_gdbarch))
359 #endif
360
361 extern int gdbarch_ps_regnum (struct gdbarch *gdbarch);
362 extern void set_gdbarch_ps_regnum (struct gdbarch *gdbarch, int ps_regnum);
363 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PS_REGNUM)
364 #error "Non multi-arch definition of PS_REGNUM"
365 #endif
366 #if !defined (PS_REGNUM)
367 #define PS_REGNUM (gdbarch_ps_regnum (current_gdbarch))
368 #endif
369
370 extern int gdbarch_fp0_regnum (struct gdbarch *gdbarch);
371 extern void set_gdbarch_fp0_regnum (struct gdbarch *gdbarch, int fp0_regnum);
372 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FP0_REGNUM)
373 #error "Non multi-arch definition of FP0_REGNUM"
374 #endif
375 #if !defined (FP0_REGNUM)
376 #define FP0_REGNUM (gdbarch_fp0_regnum (current_gdbarch))
377 #endif
378
379 /* Convert stab register number (from `r' declaration) to a gdb REGNUM. */
380
381 typedef int (gdbarch_stab_reg_to_regnum_ftype) (int stab_regnr);
382 extern int gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, int stab_regnr);
383 extern void set_gdbarch_stab_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_stab_reg_to_regnum_ftype *stab_reg_to_regnum);
384 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (STAB_REG_TO_REGNUM)
385 #error "Non multi-arch definition of STAB_REG_TO_REGNUM"
386 #endif
387 #if !defined (STAB_REG_TO_REGNUM)
388 #define STAB_REG_TO_REGNUM(stab_regnr) (gdbarch_stab_reg_to_regnum (current_gdbarch, stab_regnr))
389 #endif
390
391 /* Provide a default mapping from a ecoff register number to a gdb REGNUM. */
392
393 typedef int (gdbarch_ecoff_reg_to_regnum_ftype) (int ecoff_regnr);
394 extern int gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, int ecoff_regnr);
395 extern void set_gdbarch_ecoff_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_ecoff_reg_to_regnum_ftype *ecoff_reg_to_regnum);
396 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ECOFF_REG_TO_REGNUM)
397 #error "Non multi-arch definition of ECOFF_REG_TO_REGNUM"
398 #endif
399 #if !defined (ECOFF_REG_TO_REGNUM)
400 #define ECOFF_REG_TO_REGNUM(ecoff_regnr) (gdbarch_ecoff_reg_to_regnum (current_gdbarch, ecoff_regnr))
401 #endif
402
403 /* Provide a default mapping from a DWARF register number to a gdb REGNUM. */
404
405 typedef int (gdbarch_dwarf_reg_to_regnum_ftype) (int dwarf_regnr);
406 extern int gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_regnr);
407 extern void set_gdbarch_dwarf_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf_reg_to_regnum_ftype *dwarf_reg_to_regnum);
408 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DWARF_REG_TO_REGNUM)
409 #error "Non multi-arch definition of DWARF_REG_TO_REGNUM"
410 #endif
411 #if !defined (DWARF_REG_TO_REGNUM)
412 #define DWARF_REG_TO_REGNUM(dwarf_regnr) (gdbarch_dwarf_reg_to_regnum (current_gdbarch, dwarf_regnr))
413 #endif
414
415 /* Convert from an sdb register number to an internal gdb register number. */
416
417 typedef int (gdbarch_sdb_reg_to_regnum_ftype) (int sdb_regnr);
418 extern int gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, int sdb_regnr);
419 extern void set_gdbarch_sdb_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_sdb_reg_to_regnum_ftype *sdb_reg_to_regnum);
420 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SDB_REG_TO_REGNUM)
421 #error "Non multi-arch definition of SDB_REG_TO_REGNUM"
422 #endif
423 #if !defined (SDB_REG_TO_REGNUM)
424 #define SDB_REG_TO_REGNUM(sdb_regnr) (gdbarch_sdb_reg_to_regnum (current_gdbarch, sdb_regnr))
425 #endif
426
427 typedef int (gdbarch_dwarf2_reg_to_regnum_ftype) (int dwarf2_regnr);
428 extern int gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, int dwarf2_regnr);
429 extern void set_gdbarch_dwarf2_reg_to_regnum (struct gdbarch *gdbarch, gdbarch_dwarf2_reg_to_regnum_ftype *dwarf2_reg_to_regnum);
430 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DWARF2_REG_TO_REGNUM)
431 #error "Non multi-arch definition of DWARF2_REG_TO_REGNUM"
432 #endif
433 #if !defined (DWARF2_REG_TO_REGNUM)
434 #define DWARF2_REG_TO_REGNUM(dwarf2_regnr) (gdbarch_dwarf2_reg_to_regnum (current_gdbarch, dwarf2_regnr))
435 #endif
436
437 typedef const char * (gdbarch_register_name_ftype) (int regnr);
438 extern const char * gdbarch_register_name (struct gdbarch *gdbarch, int regnr);
439 extern void set_gdbarch_register_name (struct gdbarch *gdbarch, gdbarch_register_name_ftype *register_name);
440 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_NAME)
441 #error "Non multi-arch definition of REGISTER_NAME"
442 #endif
443 #if !defined (REGISTER_NAME)
444 #define REGISTER_NAME(regnr) (gdbarch_register_name (current_gdbarch, regnr))
445 #endif
446
447 /* REGISTER_TYPE is a direct replacement for DEPRECATED_REGISTER_VIRTUAL_TYPE. */
448
449 extern int gdbarch_register_type_p (struct gdbarch *gdbarch);
450
451 typedef struct type * (gdbarch_register_type_ftype) (struct gdbarch *gdbarch, int reg_nr);
452 extern struct type * gdbarch_register_type (struct gdbarch *gdbarch, int reg_nr);
453 extern void set_gdbarch_register_type (struct gdbarch *gdbarch, gdbarch_register_type_ftype *register_type);
454
455 /* REGISTER_TYPE is a direct replacement for DEPRECATED_REGISTER_VIRTUAL_TYPE. */
456
457 #if defined (DEPRECATED_REGISTER_VIRTUAL_TYPE)
458 /* Legacy for systems yet to multi-arch DEPRECATED_REGISTER_VIRTUAL_TYPE */
459 #if !defined (DEPRECATED_REGISTER_VIRTUAL_TYPE_P)
460 #define DEPRECATED_REGISTER_VIRTUAL_TYPE_P() (1)
461 #endif
462 #endif
463
464 extern int gdbarch_deprecated_register_virtual_type_p (struct gdbarch *gdbarch);
465 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_VIRTUAL_TYPE_P)
466 #error "Non multi-arch definition of DEPRECATED_REGISTER_VIRTUAL_TYPE"
467 #endif
468 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REGISTER_VIRTUAL_TYPE_P)
469 #define DEPRECATED_REGISTER_VIRTUAL_TYPE_P() (gdbarch_deprecated_register_virtual_type_p (current_gdbarch))
470 #endif
471
472 typedef struct type * (gdbarch_deprecated_register_virtual_type_ftype) (int reg_nr);
473 extern struct type * gdbarch_deprecated_register_virtual_type (struct gdbarch *gdbarch, int reg_nr);
474 extern void set_gdbarch_deprecated_register_virtual_type (struct gdbarch *gdbarch, gdbarch_deprecated_register_virtual_type_ftype *deprecated_register_virtual_type);
475 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_VIRTUAL_TYPE)
476 #error "Non multi-arch definition of DEPRECATED_REGISTER_VIRTUAL_TYPE"
477 #endif
478 #if !defined (DEPRECATED_REGISTER_VIRTUAL_TYPE)
479 #define DEPRECATED_REGISTER_VIRTUAL_TYPE(reg_nr) (gdbarch_deprecated_register_virtual_type (current_gdbarch, reg_nr))
480 #endif
481
482 /* DEPRECATED_REGISTER_BYTES can be deleted.  The value is computed
483    from REGISTER_TYPE. */
484
485 extern int gdbarch_deprecated_register_bytes (struct gdbarch *gdbarch);
486 extern void set_gdbarch_deprecated_register_bytes (struct gdbarch *gdbarch, int deprecated_register_bytes);
487 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_BYTES)
488 #error "Non multi-arch definition of DEPRECATED_REGISTER_BYTES"
489 #endif
490 #if !defined (DEPRECATED_REGISTER_BYTES)
491 #define DEPRECATED_REGISTER_BYTES (gdbarch_deprecated_register_bytes (current_gdbarch))
492 #endif
493
494 /* If the value returned by DEPRECATED_REGISTER_BYTE agrees with the
495    register offsets computed using just REGISTER_TYPE, this can be
496    deleted.  See: maint print registers.  NOTE: cagney/2002-05-02: This
497    function with predicate has a valid (callable) initial value.  As a
498    consequence, even when the predicate is false, the corresponding
499    function works.  This simplifies the migration process - old code,
500    calling DEPRECATED_REGISTER_BYTE, doesn't need to be modified. */
501
502 #if defined (DEPRECATED_REGISTER_BYTE)
503 /* Legacy for systems yet to multi-arch DEPRECATED_REGISTER_BYTE */
504 #if !defined (DEPRECATED_REGISTER_BYTE_P)
505 #define DEPRECATED_REGISTER_BYTE_P() (1)
506 #endif
507 #endif
508
509 extern int gdbarch_deprecated_register_byte_p (struct gdbarch *gdbarch);
510 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_BYTE_P)
511 #error "Non multi-arch definition of DEPRECATED_REGISTER_BYTE"
512 #endif
513 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REGISTER_BYTE_P)
514 #define DEPRECATED_REGISTER_BYTE_P() (gdbarch_deprecated_register_byte_p (current_gdbarch))
515 #endif
516
517 typedef int (gdbarch_deprecated_register_byte_ftype) (int reg_nr);
518 extern int gdbarch_deprecated_register_byte (struct gdbarch *gdbarch, int reg_nr);
519 extern void set_gdbarch_deprecated_register_byte (struct gdbarch *gdbarch, gdbarch_deprecated_register_byte_ftype *deprecated_register_byte);
520 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_BYTE)
521 #error "Non multi-arch definition of DEPRECATED_REGISTER_BYTE"
522 #endif
523 #if !defined (DEPRECATED_REGISTER_BYTE)
524 #define DEPRECATED_REGISTER_BYTE(reg_nr) (gdbarch_deprecated_register_byte (current_gdbarch, reg_nr))
525 #endif
526
527 /* If all registers have identical raw and virtual sizes and those
528    sizes agree with the value computed from REGISTER_TYPE,
529    DEPRECATED_REGISTER_RAW_SIZE can be deleted.  See: maint print
530    registers. */
531
532 #if defined (DEPRECATED_REGISTER_RAW_SIZE)
533 /* Legacy for systems yet to multi-arch DEPRECATED_REGISTER_RAW_SIZE */
534 #if !defined (DEPRECATED_REGISTER_RAW_SIZE_P)
535 #define DEPRECATED_REGISTER_RAW_SIZE_P() (1)
536 #endif
537 #endif
538
539 extern int gdbarch_deprecated_register_raw_size_p (struct gdbarch *gdbarch);
540 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_RAW_SIZE_P)
541 #error "Non multi-arch definition of DEPRECATED_REGISTER_RAW_SIZE"
542 #endif
543 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REGISTER_RAW_SIZE_P)
544 #define DEPRECATED_REGISTER_RAW_SIZE_P() (gdbarch_deprecated_register_raw_size_p (current_gdbarch))
545 #endif
546
547 typedef int (gdbarch_deprecated_register_raw_size_ftype) (int reg_nr);
548 extern int gdbarch_deprecated_register_raw_size (struct gdbarch *gdbarch, int reg_nr);
549 extern void set_gdbarch_deprecated_register_raw_size (struct gdbarch *gdbarch, gdbarch_deprecated_register_raw_size_ftype *deprecated_register_raw_size);
550 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_RAW_SIZE)
551 #error "Non multi-arch definition of DEPRECATED_REGISTER_RAW_SIZE"
552 #endif
553 #if !defined (DEPRECATED_REGISTER_RAW_SIZE)
554 #define DEPRECATED_REGISTER_RAW_SIZE(reg_nr) (gdbarch_deprecated_register_raw_size (current_gdbarch, reg_nr))
555 #endif
556
557 /* If all registers have identical raw and virtual sizes and those
558    sizes agree with the value computed from REGISTER_TYPE,
559    DEPRECATED_REGISTER_VIRTUAL_SIZE can be deleted.  See: maint print
560    registers. */
561
562 #if defined (DEPRECATED_REGISTER_VIRTUAL_SIZE)
563 /* Legacy for systems yet to multi-arch DEPRECATED_REGISTER_VIRTUAL_SIZE */
564 #if !defined (DEPRECATED_REGISTER_VIRTUAL_SIZE_P)
565 #define DEPRECATED_REGISTER_VIRTUAL_SIZE_P() (1)
566 #endif
567 #endif
568
569 extern int gdbarch_deprecated_register_virtual_size_p (struct gdbarch *gdbarch);
570 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_VIRTUAL_SIZE_P)
571 #error "Non multi-arch definition of DEPRECATED_REGISTER_VIRTUAL_SIZE"
572 #endif
573 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REGISTER_VIRTUAL_SIZE_P)
574 #define DEPRECATED_REGISTER_VIRTUAL_SIZE_P() (gdbarch_deprecated_register_virtual_size_p (current_gdbarch))
575 #endif
576
577 typedef int (gdbarch_deprecated_register_virtual_size_ftype) (int reg_nr);
578 extern int gdbarch_deprecated_register_virtual_size (struct gdbarch *gdbarch, int reg_nr);
579 extern void set_gdbarch_deprecated_register_virtual_size (struct gdbarch *gdbarch, gdbarch_deprecated_register_virtual_size_ftype *deprecated_register_virtual_size);
580 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_VIRTUAL_SIZE)
581 #error "Non multi-arch definition of DEPRECATED_REGISTER_VIRTUAL_SIZE"
582 #endif
583 #if !defined (DEPRECATED_REGISTER_VIRTUAL_SIZE)
584 #define DEPRECATED_REGISTER_VIRTUAL_SIZE(reg_nr) (gdbarch_deprecated_register_virtual_size (current_gdbarch, reg_nr))
585 #endif
586
587 /* DEPRECATED_MAX_REGISTER_RAW_SIZE can be deleted.  It has been
588    replaced by the constant MAX_REGISTER_SIZE. */
589
590 #if defined (DEPRECATED_MAX_REGISTER_RAW_SIZE)
591 /* Legacy for systems yet to multi-arch DEPRECATED_MAX_REGISTER_RAW_SIZE */
592 #if !defined (DEPRECATED_MAX_REGISTER_RAW_SIZE_P)
593 #define DEPRECATED_MAX_REGISTER_RAW_SIZE_P() (1)
594 #endif
595 #endif
596
597 extern int gdbarch_deprecated_max_register_raw_size_p (struct gdbarch *gdbarch);
598 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_RAW_SIZE_P)
599 #error "Non multi-arch definition of DEPRECATED_MAX_REGISTER_RAW_SIZE"
600 #endif
601 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_MAX_REGISTER_RAW_SIZE_P)
602 #define DEPRECATED_MAX_REGISTER_RAW_SIZE_P() (gdbarch_deprecated_max_register_raw_size_p (current_gdbarch))
603 #endif
604
605 extern int gdbarch_deprecated_max_register_raw_size (struct gdbarch *gdbarch);
606 extern void set_gdbarch_deprecated_max_register_raw_size (struct gdbarch *gdbarch, int deprecated_max_register_raw_size);
607 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_RAW_SIZE)
608 #error "Non multi-arch definition of DEPRECATED_MAX_REGISTER_RAW_SIZE"
609 #endif
610 #if !defined (DEPRECATED_MAX_REGISTER_RAW_SIZE)
611 #define DEPRECATED_MAX_REGISTER_RAW_SIZE (gdbarch_deprecated_max_register_raw_size (current_gdbarch))
612 #endif
613
614 /* DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE can be deleted.  It has been
615    replaced by the constant MAX_REGISTER_SIZE. */
616
617 #if defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE)
618 /* Legacy for systems yet to multi-arch DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE */
619 #if !defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P)
620 #define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P() (1)
621 #endif
622 #endif
623
624 extern int gdbarch_deprecated_max_register_virtual_size_p (struct gdbarch *gdbarch);
625 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P)
626 #error "Non multi-arch definition of DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE"
627 #endif
628 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P)
629 #define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE_P() (gdbarch_deprecated_max_register_virtual_size_p (current_gdbarch))
630 #endif
631
632 extern int gdbarch_deprecated_max_register_virtual_size (struct gdbarch *gdbarch);
633 extern void set_gdbarch_deprecated_max_register_virtual_size (struct gdbarch *gdbarch, int deprecated_max_register_virtual_size);
634 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE)
635 #error "Non multi-arch definition of DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE"
636 #endif
637 #if !defined (DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE)
638 #define DEPRECATED_MAX_REGISTER_VIRTUAL_SIZE (gdbarch_deprecated_max_register_virtual_size (current_gdbarch))
639 #endif
640
641 /* See gdbint.texinfo, and PUSH_DUMMY_CALL. */
642
643 extern int gdbarch_unwind_dummy_id_p (struct gdbarch *gdbarch);
644
645 typedef struct frame_id (gdbarch_unwind_dummy_id_ftype) (struct gdbarch *gdbarch, struct frame_info *info);
646 extern struct frame_id gdbarch_unwind_dummy_id (struct gdbarch *gdbarch, struct frame_info *info);
647 extern void set_gdbarch_unwind_dummy_id (struct gdbarch *gdbarch, gdbarch_unwind_dummy_id_ftype *unwind_dummy_id);
648
649 /* Implement UNWIND_DUMMY_ID and PUSH_DUMMY_CALL, then delete
650    SAVE_DUMMY_FRAME_TOS. */
651
652 #if defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS)
653 /* Legacy for systems yet to multi-arch DEPRECATED_SAVE_DUMMY_FRAME_TOS */
654 #if !defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS_P)
655 #define DEPRECATED_SAVE_DUMMY_FRAME_TOS_P() (1)
656 #endif
657 #endif
658
659 extern int gdbarch_deprecated_save_dummy_frame_tos_p (struct gdbarch *gdbarch);
660 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS_P)
661 #error "Non multi-arch definition of DEPRECATED_SAVE_DUMMY_FRAME_TOS"
662 #endif
663 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS_P)
664 #define DEPRECATED_SAVE_DUMMY_FRAME_TOS_P() (gdbarch_deprecated_save_dummy_frame_tos_p (current_gdbarch))
665 #endif
666
667 typedef void (gdbarch_deprecated_save_dummy_frame_tos_ftype) (CORE_ADDR sp);
668 extern void gdbarch_deprecated_save_dummy_frame_tos (struct gdbarch *gdbarch, CORE_ADDR sp);
669 extern void set_gdbarch_deprecated_save_dummy_frame_tos (struct gdbarch *gdbarch, gdbarch_deprecated_save_dummy_frame_tos_ftype *deprecated_save_dummy_frame_tos);
670 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS)
671 #error "Non multi-arch definition of DEPRECATED_SAVE_DUMMY_FRAME_TOS"
672 #endif
673 #if !defined (DEPRECATED_SAVE_DUMMY_FRAME_TOS)
674 #define DEPRECATED_SAVE_DUMMY_FRAME_TOS(sp) (gdbarch_deprecated_save_dummy_frame_tos (current_gdbarch, sp))
675 #endif
676
677 /* Implement UNWIND_DUMMY_ID and PUSH_DUMMY_CALL, then delete
678    DEPRECATED_FP_REGNUM. */
679
680 extern int gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch);
681 extern void set_gdbarch_deprecated_fp_regnum (struct gdbarch *gdbarch, int deprecated_fp_regnum);
682 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FP_REGNUM)
683 #error "Non multi-arch definition of DEPRECATED_FP_REGNUM"
684 #endif
685 #if !defined (DEPRECATED_FP_REGNUM)
686 #define DEPRECATED_FP_REGNUM (gdbarch_deprecated_fp_regnum (current_gdbarch))
687 #endif
688
689 /* Implement UNWIND_DUMMY_ID and PUSH_DUMMY_CALL, then delete
690    DEPRECATED_TARGET_READ_FP. */
691
692 #if defined (DEPRECATED_TARGET_READ_FP)
693 /* Legacy for systems yet to multi-arch DEPRECATED_TARGET_READ_FP */
694 #if !defined (DEPRECATED_TARGET_READ_FP_P)
695 #define DEPRECATED_TARGET_READ_FP_P() (1)
696 #endif
697 #endif
698
699 extern int gdbarch_deprecated_target_read_fp_p (struct gdbarch *gdbarch);
700 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_TARGET_READ_FP_P)
701 #error "Non multi-arch definition of DEPRECATED_TARGET_READ_FP"
702 #endif
703 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_TARGET_READ_FP_P)
704 #define DEPRECATED_TARGET_READ_FP_P() (gdbarch_deprecated_target_read_fp_p (current_gdbarch))
705 #endif
706
707 typedef CORE_ADDR (gdbarch_deprecated_target_read_fp_ftype) (void);
708 extern CORE_ADDR gdbarch_deprecated_target_read_fp (struct gdbarch *gdbarch);
709 extern void set_gdbarch_deprecated_target_read_fp (struct gdbarch *gdbarch, gdbarch_deprecated_target_read_fp_ftype *deprecated_target_read_fp);
710 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_TARGET_READ_FP)
711 #error "Non multi-arch definition of DEPRECATED_TARGET_READ_FP"
712 #endif
713 #if !defined (DEPRECATED_TARGET_READ_FP)
714 #define DEPRECATED_TARGET_READ_FP() (gdbarch_deprecated_target_read_fp (current_gdbarch))
715 #endif
716
717 /* See gdbint.texinfo.  See infcall.c.  New, all singing all dancing,
718    replacement for DEPRECATED_PUSH_ARGUMENTS. */
719
720 extern int gdbarch_push_dummy_call_p (struct gdbarch *gdbarch);
721
722 typedef CORE_ADDR (gdbarch_push_dummy_call_ftype) (struct gdbarch *gdbarch, CORE_ADDR func_addr, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
723 extern CORE_ADDR gdbarch_push_dummy_call (struct gdbarch *gdbarch, CORE_ADDR func_addr, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
724 extern void set_gdbarch_push_dummy_call (struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype *push_dummy_call);
725
726 /* PUSH_DUMMY_CALL is a direct replacement for DEPRECATED_PUSH_ARGUMENTS. */
727
728 #if defined (DEPRECATED_PUSH_ARGUMENTS)
729 /* Legacy for systems yet to multi-arch DEPRECATED_PUSH_ARGUMENTS */
730 #if !defined (DEPRECATED_PUSH_ARGUMENTS_P)
731 #define DEPRECATED_PUSH_ARGUMENTS_P() (1)
732 #endif
733 #endif
734
735 extern int gdbarch_deprecated_push_arguments_p (struct gdbarch *gdbarch);
736 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_ARGUMENTS_P)
737 #error "Non multi-arch definition of DEPRECATED_PUSH_ARGUMENTS"
738 #endif
739 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_PUSH_ARGUMENTS_P)
740 #define DEPRECATED_PUSH_ARGUMENTS_P() (gdbarch_deprecated_push_arguments_p (current_gdbarch))
741 #endif
742
743 typedef CORE_ADDR (gdbarch_deprecated_push_arguments_ftype) (int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
744 extern CORE_ADDR gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, int nargs, struct value **args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr);
745 extern void set_gdbarch_deprecated_push_arguments (struct gdbarch *gdbarch, gdbarch_deprecated_push_arguments_ftype *deprecated_push_arguments);
746 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_ARGUMENTS)
747 #error "Non multi-arch definition of DEPRECATED_PUSH_ARGUMENTS"
748 #endif
749 #if !defined (DEPRECATED_PUSH_ARGUMENTS)
750 #define DEPRECATED_PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) (gdbarch_deprecated_push_arguments (current_gdbarch, nargs, args, sp, struct_return, struct_addr))
751 #endif
752
753 /* DEPRECATED_USE_GENERIC_DUMMY_FRAMES can be deleted.  Always true. */
754
755 extern int gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch);
756 extern void set_gdbarch_deprecated_use_generic_dummy_frames (struct gdbarch *gdbarch, int deprecated_use_generic_dummy_frames);
757 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
758 #error "Non multi-arch definition of DEPRECATED_USE_GENERIC_DUMMY_FRAMES"
759 #endif
760 #if !defined (DEPRECATED_USE_GENERIC_DUMMY_FRAMES)
761 #define DEPRECATED_USE_GENERIC_DUMMY_FRAMES (gdbarch_deprecated_use_generic_dummy_frames (current_gdbarch))
762 #endif
763
764 /* Implement PUSH_RETURN_ADDRESS, and then merge in
765    DEPRECATED_PUSH_RETURN_ADDRESS. */
766
767 #if defined (DEPRECATED_PUSH_RETURN_ADDRESS)
768 /* Legacy for systems yet to multi-arch DEPRECATED_PUSH_RETURN_ADDRESS */
769 #if !defined (DEPRECATED_PUSH_RETURN_ADDRESS_P)
770 #define DEPRECATED_PUSH_RETURN_ADDRESS_P() (1)
771 #endif
772 #endif
773
774 extern int gdbarch_deprecated_push_return_address_p (struct gdbarch *gdbarch);
775 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_RETURN_ADDRESS_P)
776 #error "Non multi-arch definition of DEPRECATED_PUSH_RETURN_ADDRESS"
777 #endif
778 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_PUSH_RETURN_ADDRESS_P)
779 #define DEPRECATED_PUSH_RETURN_ADDRESS_P() (gdbarch_deprecated_push_return_address_p (current_gdbarch))
780 #endif
781
782 typedef CORE_ADDR (gdbarch_deprecated_push_return_address_ftype) (CORE_ADDR pc, CORE_ADDR sp);
783 extern CORE_ADDR gdbarch_deprecated_push_return_address (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp);
784 extern void set_gdbarch_deprecated_push_return_address (struct gdbarch *gdbarch, gdbarch_deprecated_push_return_address_ftype *deprecated_push_return_address);
785 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_RETURN_ADDRESS)
786 #error "Non multi-arch definition of DEPRECATED_PUSH_RETURN_ADDRESS"
787 #endif
788 #if !defined (DEPRECATED_PUSH_RETURN_ADDRESS)
789 #define DEPRECATED_PUSH_RETURN_ADDRESS(pc, sp) (gdbarch_deprecated_push_return_address (current_gdbarch, pc, sp))
790 #endif
791
792 /* Implement PUSH_DUMMY_CALL, then merge in DEPRECATED_DUMMY_WRITE_SP. */
793
794 #if defined (DEPRECATED_DUMMY_WRITE_SP)
795 /* Legacy for systems yet to multi-arch DEPRECATED_DUMMY_WRITE_SP */
796 #if !defined (DEPRECATED_DUMMY_WRITE_SP_P)
797 #define DEPRECATED_DUMMY_WRITE_SP_P() (1)
798 #endif
799 #endif
800
801 extern int gdbarch_deprecated_dummy_write_sp_p (struct gdbarch *gdbarch);
802 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_DUMMY_WRITE_SP_P)
803 #error "Non multi-arch definition of DEPRECATED_DUMMY_WRITE_SP"
804 #endif
805 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_DUMMY_WRITE_SP_P)
806 #define DEPRECATED_DUMMY_WRITE_SP_P() (gdbarch_deprecated_dummy_write_sp_p (current_gdbarch))
807 #endif
808
809 typedef void (gdbarch_deprecated_dummy_write_sp_ftype) (CORE_ADDR val);
810 extern void gdbarch_deprecated_dummy_write_sp (struct gdbarch *gdbarch, CORE_ADDR val);
811 extern void set_gdbarch_deprecated_dummy_write_sp (struct gdbarch *gdbarch, gdbarch_deprecated_dummy_write_sp_ftype *deprecated_dummy_write_sp);
812 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_DUMMY_WRITE_SP)
813 #error "Non multi-arch definition of DEPRECATED_DUMMY_WRITE_SP"
814 #endif
815 #if !defined (DEPRECATED_DUMMY_WRITE_SP)
816 #define DEPRECATED_DUMMY_WRITE_SP(val) (gdbarch_deprecated_dummy_write_sp (current_gdbarch, val))
817 #endif
818
819 /* DEPRECATED_REGISTER_SIZE can be deleted. */
820
821 extern int gdbarch_deprecated_register_size (struct gdbarch *gdbarch);
822 extern void set_gdbarch_deprecated_register_size (struct gdbarch *gdbarch, int deprecated_register_size);
823 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_SIZE)
824 #error "Non multi-arch definition of DEPRECATED_REGISTER_SIZE"
825 #endif
826 #if !defined (DEPRECATED_REGISTER_SIZE)
827 #define DEPRECATED_REGISTER_SIZE (gdbarch_deprecated_register_size (current_gdbarch))
828 #endif
829
830 extern int gdbarch_call_dummy_location (struct gdbarch *gdbarch);
831 extern void set_gdbarch_call_dummy_location (struct gdbarch *gdbarch, int call_dummy_location);
832 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CALL_DUMMY_LOCATION)
833 #error "Non multi-arch definition of CALL_DUMMY_LOCATION"
834 #endif
835 #if !defined (CALL_DUMMY_LOCATION)
836 #define CALL_DUMMY_LOCATION (gdbarch_call_dummy_location (current_gdbarch))
837 #endif
838
839 #if defined (DEPRECATED_CALL_DUMMY_ADDRESS)
840 /* Legacy for systems yet to multi-arch DEPRECATED_CALL_DUMMY_ADDRESS */
841 #if !defined (DEPRECATED_CALL_DUMMY_ADDRESS_P)
842 #define DEPRECATED_CALL_DUMMY_ADDRESS_P() (1)
843 #endif
844 #endif
845
846 extern int gdbarch_deprecated_call_dummy_address_p (struct gdbarch *gdbarch);
847 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_ADDRESS_P)
848 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_ADDRESS"
849 #endif
850 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_CALL_DUMMY_ADDRESS_P)
851 #define DEPRECATED_CALL_DUMMY_ADDRESS_P() (gdbarch_deprecated_call_dummy_address_p (current_gdbarch))
852 #endif
853
854 typedef CORE_ADDR (gdbarch_deprecated_call_dummy_address_ftype) (void);
855 extern CORE_ADDR gdbarch_deprecated_call_dummy_address (struct gdbarch *gdbarch);
856 extern void set_gdbarch_deprecated_call_dummy_address (struct gdbarch *gdbarch, gdbarch_deprecated_call_dummy_address_ftype *deprecated_call_dummy_address);
857 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_ADDRESS)
858 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_ADDRESS"
859 #endif
860 #if !defined (DEPRECATED_CALL_DUMMY_ADDRESS)
861 #define DEPRECATED_CALL_DUMMY_ADDRESS() (gdbarch_deprecated_call_dummy_address (current_gdbarch))
862 #endif
863
864 /* DEPRECATED_CALL_DUMMY_START_OFFSET can be deleted. */
865
866 extern CORE_ADDR gdbarch_deprecated_call_dummy_start_offset (struct gdbarch *gdbarch);
867 extern void set_gdbarch_deprecated_call_dummy_start_offset (struct gdbarch *gdbarch, CORE_ADDR deprecated_call_dummy_start_offset);
868 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_START_OFFSET)
869 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_START_OFFSET"
870 #endif
871 #if !defined (DEPRECATED_CALL_DUMMY_START_OFFSET)
872 #define DEPRECATED_CALL_DUMMY_START_OFFSET (gdbarch_deprecated_call_dummy_start_offset (current_gdbarch))
873 #endif
874
875 /* DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET can be deleted. */
876
877 extern CORE_ADDR gdbarch_deprecated_call_dummy_breakpoint_offset (struct gdbarch *gdbarch);
878 extern void set_gdbarch_deprecated_call_dummy_breakpoint_offset (struct gdbarch *gdbarch, CORE_ADDR deprecated_call_dummy_breakpoint_offset);
879 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET)
880 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET"
881 #endif
882 #if !defined (DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET)
883 #define DEPRECATED_CALL_DUMMY_BREAKPOINT_OFFSET (gdbarch_deprecated_call_dummy_breakpoint_offset (current_gdbarch))
884 #endif
885
886 /* DEPRECATED_CALL_DUMMY_LENGTH can be deleted. */
887
888 extern int gdbarch_deprecated_call_dummy_length (struct gdbarch *gdbarch);
889 extern void set_gdbarch_deprecated_call_dummy_length (struct gdbarch *gdbarch, int deprecated_call_dummy_length);
890 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_LENGTH)
891 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_LENGTH"
892 #endif
893 #if !defined (DEPRECATED_CALL_DUMMY_LENGTH)
894 #define DEPRECATED_CALL_DUMMY_LENGTH (gdbarch_deprecated_call_dummy_length (current_gdbarch))
895 #endif
896
897 /* DEPRECATED_CALL_DUMMY_WORDS can be deleted. */
898
899 extern LONGEST * gdbarch_deprecated_call_dummy_words (struct gdbarch *gdbarch);
900 extern void set_gdbarch_deprecated_call_dummy_words (struct gdbarch *gdbarch, LONGEST * deprecated_call_dummy_words);
901 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_WORDS)
902 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_WORDS"
903 #endif
904 #if !defined (DEPRECATED_CALL_DUMMY_WORDS)
905 #define DEPRECATED_CALL_DUMMY_WORDS (gdbarch_deprecated_call_dummy_words (current_gdbarch))
906 #endif
907
908 /* Implement PUSH_DUMMY_CALL, then delete DEPRECATED_SIZEOF_CALL_DUMMY_WORDS. */
909
910 extern int gdbarch_deprecated_sizeof_call_dummy_words (struct gdbarch *gdbarch);
911 extern void set_gdbarch_deprecated_sizeof_call_dummy_words (struct gdbarch *gdbarch, int deprecated_sizeof_call_dummy_words);
912 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS)
913 #error "Non multi-arch definition of DEPRECATED_SIZEOF_CALL_DUMMY_WORDS"
914 #endif
915 #if !defined (DEPRECATED_SIZEOF_CALL_DUMMY_WORDS)
916 #define DEPRECATED_SIZEOF_CALL_DUMMY_WORDS (gdbarch_deprecated_sizeof_call_dummy_words (current_gdbarch))
917 #endif
918
919 /* Implement PUSH_DUMMY_CALL, then delete DEPRECATED_CALL_DUMMY_STACK_ADJUST. */
920
921 #if defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST)
922 /* Legacy for systems yet to multi-arch DEPRECATED_CALL_DUMMY_STACK_ADJUST */
923 #if !defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P)
924 #define DEPRECATED_CALL_DUMMY_STACK_ADJUST_P() (1)
925 #endif
926 #endif
927
928 extern int gdbarch_deprecated_call_dummy_stack_adjust_p (struct gdbarch *gdbarch);
929 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P)
930 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_STACK_ADJUST"
931 #endif
932 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST_P)
933 #define DEPRECATED_CALL_DUMMY_STACK_ADJUST_P() (gdbarch_deprecated_call_dummy_stack_adjust_p (current_gdbarch))
934 #endif
935
936 extern int gdbarch_deprecated_call_dummy_stack_adjust (struct gdbarch *gdbarch);
937 extern void set_gdbarch_deprecated_call_dummy_stack_adjust (struct gdbarch *gdbarch, int deprecated_call_dummy_stack_adjust);
938 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST)
939 #error "Non multi-arch definition of DEPRECATED_CALL_DUMMY_STACK_ADJUST"
940 #endif
941 #if !defined (DEPRECATED_CALL_DUMMY_STACK_ADJUST)
942 #define DEPRECATED_CALL_DUMMY_STACK_ADJUST (gdbarch_deprecated_call_dummy_stack_adjust (current_gdbarch))
943 #endif
944
945 /* DEPRECATED_FIX_CALL_DUMMY can be deleted.  For the SPARC, implement
946    PUSH_DUMMY_CODE and set CALL_DUMMY_LOCATION to ON_STACK. */
947
948 #if defined (DEPRECATED_FIX_CALL_DUMMY)
949 /* Legacy for systems yet to multi-arch DEPRECATED_FIX_CALL_DUMMY */
950 #if !defined (DEPRECATED_FIX_CALL_DUMMY_P)
951 #define DEPRECATED_FIX_CALL_DUMMY_P() (1)
952 #endif
953 #endif
954
955 extern int gdbarch_deprecated_fix_call_dummy_p (struct gdbarch *gdbarch);
956 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FIX_CALL_DUMMY_P)
957 #error "Non multi-arch definition of DEPRECATED_FIX_CALL_DUMMY"
958 #endif
959 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FIX_CALL_DUMMY_P)
960 #define DEPRECATED_FIX_CALL_DUMMY_P() (gdbarch_deprecated_fix_call_dummy_p (current_gdbarch))
961 #endif
962
963 typedef void (gdbarch_deprecated_fix_call_dummy_ftype) (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p);
964 extern void gdbarch_deprecated_fix_call_dummy (struct gdbarch *gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value **args, struct type *type, int gcc_p);
965 extern void set_gdbarch_deprecated_fix_call_dummy (struct gdbarch *gdbarch, gdbarch_deprecated_fix_call_dummy_ftype *deprecated_fix_call_dummy);
966 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FIX_CALL_DUMMY)
967 #error "Non multi-arch definition of DEPRECATED_FIX_CALL_DUMMY"
968 #endif
969 #if !defined (DEPRECATED_FIX_CALL_DUMMY)
970 #define DEPRECATED_FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p) (gdbarch_deprecated_fix_call_dummy (current_gdbarch, dummy, pc, fun, nargs, args, type, gcc_p))
971 #endif
972
973 /* This is a replacement for DEPRECATED_FIX_CALL_DUMMY et.al. */
974
975 extern int gdbarch_push_dummy_code_p (struct gdbarch *gdbarch);
976
977 typedef CORE_ADDR (gdbarch_push_dummy_code_ftype) (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, int using_gcc, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr);
978 extern CORE_ADDR gdbarch_push_dummy_code (struct gdbarch *gdbarch, CORE_ADDR sp, CORE_ADDR funaddr, int using_gcc, struct value **args, int nargs, struct type *value_type, CORE_ADDR *real_pc, CORE_ADDR *bp_addr);
979 extern void set_gdbarch_push_dummy_code (struct gdbarch *gdbarch, gdbarch_push_dummy_code_ftype *push_dummy_code);
980
981 /* Implement PUSH_DUMMY_CALL, then delete DEPRECATED_PUSH_DUMMY_FRAME. */
982
983 #if defined (DEPRECATED_PUSH_DUMMY_FRAME)
984 /* Legacy for systems yet to multi-arch DEPRECATED_PUSH_DUMMY_FRAME */
985 #if !defined (DEPRECATED_PUSH_DUMMY_FRAME_P)
986 #define DEPRECATED_PUSH_DUMMY_FRAME_P() (1)
987 #endif
988 #endif
989
990 extern int gdbarch_deprecated_push_dummy_frame_p (struct gdbarch *gdbarch);
991 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_DUMMY_FRAME_P)
992 #error "Non multi-arch definition of DEPRECATED_PUSH_DUMMY_FRAME"
993 #endif
994 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_PUSH_DUMMY_FRAME_P)
995 #define DEPRECATED_PUSH_DUMMY_FRAME_P() (gdbarch_deprecated_push_dummy_frame_p (current_gdbarch))
996 #endif
997
998 typedef void (gdbarch_deprecated_push_dummy_frame_ftype) (void);
999 extern void gdbarch_deprecated_push_dummy_frame (struct gdbarch *gdbarch);
1000 extern void set_gdbarch_deprecated_push_dummy_frame (struct gdbarch *gdbarch, gdbarch_deprecated_push_dummy_frame_ftype *deprecated_push_dummy_frame);
1001 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PUSH_DUMMY_FRAME)
1002 #error "Non multi-arch definition of DEPRECATED_PUSH_DUMMY_FRAME"
1003 #endif
1004 #if !defined (DEPRECATED_PUSH_DUMMY_FRAME)
1005 #define DEPRECATED_PUSH_DUMMY_FRAME (gdbarch_deprecated_push_dummy_frame (current_gdbarch))
1006 #endif
1007
1008 /* Implement PUSH_DUMMY_CALL, then delete
1009    DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED. */
1010
1011 extern int gdbarch_deprecated_extra_stack_alignment_needed (struct gdbarch *gdbarch);
1012 extern void set_gdbarch_deprecated_extra_stack_alignment_needed (struct gdbarch *gdbarch, int deprecated_extra_stack_alignment_needed);
1013 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED)
1014 #error "Non multi-arch definition of DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED"
1015 #endif
1016 #if !defined (DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED)
1017 #define DEPRECATED_EXTRA_STACK_ALIGNMENT_NEEDED (gdbarch_deprecated_extra_stack_alignment_needed (current_gdbarch))
1018 #endif
1019
1020 #if defined (DEPRECATED_DO_REGISTERS_INFO)
1021 /* Legacy for systems yet to multi-arch DEPRECATED_DO_REGISTERS_INFO */
1022 #if !defined (DEPRECATED_DO_REGISTERS_INFO_P)
1023 #define DEPRECATED_DO_REGISTERS_INFO_P() (1)
1024 #endif
1025 #endif
1026
1027 extern int gdbarch_deprecated_do_registers_info_p (struct gdbarch *gdbarch);
1028 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_DO_REGISTERS_INFO_P)
1029 #error "Non multi-arch definition of DEPRECATED_DO_REGISTERS_INFO"
1030 #endif
1031 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_DO_REGISTERS_INFO_P)
1032 #define DEPRECATED_DO_REGISTERS_INFO_P() (gdbarch_deprecated_do_registers_info_p (current_gdbarch))
1033 #endif
1034
1035 typedef void (gdbarch_deprecated_do_registers_info_ftype) (int reg_nr, int fpregs);
1036 extern void gdbarch_deprecated_do_registers_info (struct gdbarch *gdbarch, int reg_nr, int fpregs);
1037 extern void set_gdbarch_deprecated_do_registers_info (struct gdbarch *gdbarch, gdbarch_deprecated_do_registers_info_ftype *deprecated_do_registers_info);
1038 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_DO_REGISTERS_INFO)
1039 #error "Non multi-arch definition of DEPRECATED_DO_REGISTERS_INFO"
1040 #endif
1041 #if !defined (DEPRECATED_DO_REGISTERS_INFO)
1042 #define DEPRECATED_DO_REGISTERS_INFO(reg_nr, fpregs) (gdbarch_deprecated_do_registers_info (current_gdbarch, reg_nr, fpregs))
1043 #endif
1044
1045 typedef void (gdbarch_print_registers_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int all);
1046 extern void gdbarch_print_registers_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int all);
1047 extern void set_gdbarch_print_registers_info (struct gdbarch *gdbarch, gdbarch_print_registers_info_ftype *print_registers_info);
1048
1049 extern int gdbarch_print_float_info_p (struct gdbarch *gdbarch);
1050
1051 typedef void (gdbarch_print_float_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args);
1052 extern void gdbarch_print_float_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args);
1053 extern void set_gdbarch_print_float_info (struct gdbarch *gdbarch, gdbarch_print_float_info_ftype *print_float_info);
1054
1055 extern int gdbarch_print_vector_info_p (struct gdbarch *gdbarch);
1056
1057 typedef void (gdbarch_print_vector_info_ftype) (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args);
1058 extern void gdbarch_print_vector_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, const char *args);
1059 extern void set_gdbarch_print_vector_info (struct gdbarch *gdbarch, gdbarch_print_vector_info_ftype *print_vector_info);
1060
1061 /* MAP a GDB RAW register number onto a simulator register number.  See
1062    also include/...-sim.h. */
1063
1064 typedef int (gdbarch_register_sim_regno_ftype) (int reg_nr);
1065 extern int gdbarch_register_sim_regno (struct gdbarch *gdbarch, int reg_nr);
1066 extern void set_gdbarch_register_sim_regno (struct gdbarch *gdbarch, gdbarch_register_sim_regno_ftype *register_sim_regno);
1067 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_SIM_REGNO)
1068 #error "Non multi-arch definition of REGISTER_SIM_REGNO"
1069 #endif
1070 #if !defined (REGISTER_SIM_REGNO)
1071 #define REGISTER_SIM_REGNO(reg_nr) (gdbarch_register_sim_regno (current_gdbarch, reg_nr))
1072 #endif
1073
1074 #if defined (REGISTER_BYTES_OK)
1075 /* Legacy for systems yet to multi-arch REGISTER_BYTES_OK */
1076 #if !defined (REGISTER_BYTES_OK_P)
1077 #define REGISTER_BYTES_OK_P() (1)
1078 #endif
1079 #endif
1080
1081 extern int gdbarch_register_bytes_ok_p (struct gdbarch *gdbarch);
1082 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_BYTES_OK_P)
1083 #error "Non multi-arch definition of REGISTER_BYTES_OK"
1084 #endif
1085 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (REGISTER_BYTES_OK_P)
1086 #define REGISTER_BYTES_OK_P() (gdbarch_register_bytes_ok_p (current_gdbarch))
1087 #endif
1088
1089 typedef int (gdbarch_register_bytes_ok_ftype) (long nr_bytes);
1090 extern int gdbarch_register_bytes_ok (struct gdbarch *gdbarch, long nr_bytes);
1091 extern void set_gdbarch_register_bytes_ok (struct gdbarch *gdbarch, gdbarch_register_bytes_ok_ftype *register_bytes_ok);
1092 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_BYTES_OK)
1093 #error "Non multi-arch definition of REGISTER_BYTES_OK"
1094 #endif
1095 #if !defined (REGISTER_BYTES_OK)
1096 #define REGISTER_BYTES_OK(nr_bytes) (gdbarch_register_bytes_ok (current_gdbarch, nr_bytes))
1097 #endif
1098
1099 typedef int (gdbarch_cannot_fetch_register_ftype) (int regnum);
1100 extern int gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, int regnum);
1101 extern void set_gdbarch_cannot_fetch_register (struct gdbarch *gdbarch, gdbarch_cannot_fetch_register_ftype *cannot_fetch_register);
1102 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CANNOT_FETCH_REGISTER)
1103 #error "Non multi-arch definition of CANNOT_FETCH_REGISTER"
1104 #endif
1105 #if !defined (CANNOT_FETCH_REGISTER)
1106 #define CANNOT_FETCH_REGISTER(regnum) (gdbarch_cannot_fetch_register (current_gdbarch, regnum))
1107 #endif
1108
1109 typedef int (gdbarch_cannot_store_register_ftype) (int regnum);
1110 extern int gdbarch_cannot_store_register (struct gdbarch *gdbarch, int regnum);
1111 extern void set_gdbarch_cannot_store_register (struct gdbarch *gdbarch, gdbarch_cannot_store_register_ftype *cannot_store_register);
1112 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CANNOT_STORE_REGISTER)
1113 #error "Non multi-arch definition of CANNOT_STORE_REGISTER"
1114 #endif
1115 #if !defined (CANNOT_STORE_REGISTER)
1116 #define CANNOT_STORE_REGISTER(regnum) (gdbarch_cannot_store_register (current_gdbarch, regnum))
1117 #endif
1118
1119 /* setjmp/longjmp support. */
1120
1121 #if defined (GET_LONGJMP_TARGET)
1122 /* Legacy for systems yet to multi-arch GET_LONGJMP_TARGET */
1123 #if !defined (GET_LONGJMP_TARGET_P)
1124 #define GET_LONGJMP_TARGET_P() (1)
1125 #endif
1126 #endif
1127
1128 extern int gdbarch_get_longjmp_target_p (struct gdbarch *gdbarch);
1129 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (GET_LONGJMP_TARGET_P)
1130 #error "Non multi-arch definition of GET_LONGJMP_TARGET"
1131 #endif
1132 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (GET_LONGJMP_TARGET_P)
1133 #define GET_LONGJMP_TARGET_P() (gdbarch_get_longjmp_target_p (current_gdbarch))
1134 #endif
1135
1136 typedef int (gdbarch_get_longjmp_target_ftype) (CORE_ADDR *pc);
1137 extern int gdbarch_get_longjmp_target (struct gdbarch *gdbarch, CORE_ADDR *pc);
1138 extern void set_gdbarch_get_longjmp_target (struct gdbarch *gdbarch, gdbarch_get_longjmp_target_ftype *get_longjmp_target);
1139 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (GET_LONGJMP_TARGET)
1140 #error "Non multi-arch definition of GET_LONGJMP_TARGET"
1141 #endif
1142 #if !defined (GET_LONGJMP_TARGET)
1143 #define GET_LONGJMP_TARGET(pc) (gdbarch_get_longjmp_target (current_gdbarch, pc))
1144 #endif
1145
1146 /* NOTE: cagney/2002-11-24: This function with predicate has a valid
1147    (callable) initial value.  As a consequence, even when the predicate
1148    is false, the corresponding function works.  This simplifies the
1149    migration process - old code, calling DEPRECATED_PC_IN_CALL_DUMMY(),
1150    doesn't need to be modified. */
1151
1152 #if defined (DEPRECATED_PC_IN_CALL_DUMMY)
1153 /* Legacy for systems yet to multi-arch DEPRECATED_PC_IN_CALL_DUMMY */
1154 #if !defined (DEPRECATED_PC_IN_CALL_DUMMY_P)
1155 #define DEPRECATED_PC_IN_CALL_DUMMY_P() (1)
1156 #endif
1157 #endif
1158
1159 extern int gdbarch_deprecated_pc_in_call_dummy_p (struct gdbarch *gdbarch);
1160 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PC_IN_CALL_DUMMY_P)
1161 #error "Non multi-arch definition of DEPRECATED_PC_IN_CALL_DUMMY"
1162 #endif
1163 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_PC_IN_CALL_DUMMY_P)
1164 #define DEPRECATED_PC_IN_CALL_DUMMY_P() (gdbarch_deprecated_pc_in_call_dummy_p (current_gdbarch))
1165 #endif
1166
1167 typedef int (gdbarch_deprecated_pc_in_call_dummy_ftype) (CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address);
1168 extern int gdbarch_deprecated_pc_in_call_dummy (struct gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address);
1169 extern void set_gdbarch_deprecated_pc_in_call_dummy (struct gdbarch *gdbarch, gdbarch_deprecated_pc_in_call_dummy_ftype *deprecated_pc_in_call_dummy);
1170 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_PC_IN_CALL_DUMMY)
1171 #error "Non multi-arch definition of DEPRECATED_PC_IN_CALL_DUMMY"
1172 #endif
1173 #if !defined (DEPRECATED_PC_IN_CALL_DUMMY)
1174 #define DEPRECATED_PC_IN_CALL_DUMMY(pc, sp, frame_address) (gdbarch_deprecated_pc_in_call_dummy (current_gdbarch, pc, sp, frame_address))
1175 #endif
1176
1177 #if defined (DEPRECATED_INIT_FRAME_PC_FIRST)
1178 /* Legacy for systems yet to multi-arch DEPRECATED_INIT_FRAME_PC_FIRST */
1179 #if !defined (DEPRECATED_INIT_FRAME_PC_FIRST_P)
1180 #define DEPRECATED_INIT_FRAME_PC_FIRST_P() (1)
1181 #endif
1182 #endif
1183
1184 extern int gdbarch_deprecated_init_frame_pc_first_p (struct gdbarch *gdbarch);
1185 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_FRAME_PC_FIRST_P)
1186 #error "Non multi-arch definition of DEPRECATED_INIT_FRAME_PC_FIRST"
1187 #endif
1188 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_INIT_FRAME_PC_FIRST_P)
1189 #define DEPRECATED_INIT_FRAME_PC_FIRST_P() (gdbarch_deprecated_init_frame_pc_first_p (current_gdbarch))
1190 #endif
1191
1192 typedef CORE_ADDR (gdbarch_deprecated_init_frame_pc_first_ftype) (int fromleaf, struct frame_info *prev);
1193 extern CORE_ADDR gdbarch_deprecated_init_frame_pc_first (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev);
1194 extern void set_gdbarch_deprecated_init_frame_pc_first (struct gdbarch *gdbarch, gdbarch_deprecated_init_frame_pc_first_ftype *deprecated_init_frame_pc_first);
1195 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_FRAME_PC_FIRST)
1196 #error "Non multi-arch definition of DEPRECATED_INIT_FRAME_PC_FIRST"
1197 #endif
1198 #if !defined (DEPRECATED_INIT_FRAME_PC_FIRST)
1199 #define DEPRECATED_INIT_FRAME_PC_FIRST(fromleaf, prev) (gdbarch_deprecated_init_frame_pc_first (current_gdbarch, fromleaf, prev))
1200 #endif
1201
1202 #if defined (DEPRECATED_INIT_FRAME_PC)
1203 /* Legacy for systems yet to multi-arch DEPRECATED_INIT_FRAME_PC */
1204 #if !defined (DEPRECATED_INIT_FRAME_PC_P)
1205 #define DEPRECATED_INIT_FRAME_PC_P() (1)
1206 #endif
1207 #endif
1208
1209 extern int gdbarch_deprecated_init_frame_pc_p (struct gdbarch *gdbarch);
1210 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_FRAME_PC_P)
1211 #error "Non multi-arch definition of DEPRECATED_INIT_FRAME_PC"
1212 #endif
1213 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_INIT_FRAME_PC_P)
1214 #define DEPRECATED_INIT_FRAME_PC_P() (gdbarch_deprecated_init_frame_pc_p (current_gdbarch))
1215 #endif
1216
1217 typedef CORE_ADDR (gdbarch_deprecated_init_frame_pc_ftype) (int fromleaf, struct frame_info *prev);
1218 extern CORE_ADDR gdbarch_deprecated_init_frame_pc (struct gdbarch *gdbarch, int fromleaf, struct frame_info *prev);
1219 extern void set_gdbarch_deprecated_init_frame_pc (struct gdbarch *gdbarch, gdbarch_deprecated_init_frame_pc_ftype *deprecated_init_frame_pc);
1220 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_FRAME_PC)
1221 #error "Non multi-arch definition of DEPRECATED_INIT_FRAME_PC"
1222 #endif
1223 #if !defined (DEPRECATED_INIT_FRAME_PC)
1224 #define DEPRECATED_INIT_FRAME_PC(fromleaf, prev) (gdbarch_deprecated_init_frame_pc (current_gdbarch, fromleaf, prev))
1225 #endif
1226
1227 extern int gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch);
1228 extern void set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch, int believe_pcc_promotion);
1229 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (BELIEVE_PCC_PROMOTION)
1230 #error "Non multi-arch definition of BELIEVE_PCC_PROMOTION"
1231 #endif
1232 #if !defined (BELIEVE_PCC_PROMOTION)
1233 #define BELIEVE_PCC_PROMOTION (gdbarch_believe_pcc_promotion (current_gdbarch))
1234 #endif
1235
1236 extern int gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch);
1237 extern void set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int believe_pcc_promotion_type);
1238 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (BELIEVE_PCC_PROMOTION_TYPE)
1239 #error "Non multi-arch definition of BELIEVE_PCC_PROMOTION_TYPE"
1240 #endif
1241 #if !defined (BELIEVE_PCC_PROMOTION_TYPE)
1242 #define BELIEVE_PCC_PROMOTION_TYPE (gdbarch_believe_pcc_promotion_type (current_gdbarch))
1243 #endif
1244
1245 #if defined (DEPRECATED_GET_SAVED_REGISTER)
1246 /* Legacy for systems yet to multi-arch DEPRECATED_GET_SAVED_REGISTER */
1247 #if !defined (DEPRECATED_GET_SAVED_REGISTER_P)
1248 #define DEPRECATED_GET_SAVED_REGISTER_P() (1)
1249 #endif
1250 #endif
1251
1252 extern int gdbarch_deprecated_get_saved_register_p (struct gdbarch *gdbarch);
1253 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_GET_SAVED_REGISTER_P)
1254 #error "Non multi-arch definition of DEPRECATED_GET_SAVED_REGISTER"
1255 #endif
1256 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_GET_SAVED_REGISTER_P)
1257 #define DEPRECATED_GET_SAVED_REGISTER_P() (gdbarch_deprecated_get_saved_register_p (current_gdbarch))
1258 #endif
1259
1260 typedef void (gdbarch_deprecated_get_saved_register_ftype) (char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
1261 extern void gdbarch_deprecated_get_saved_register (struct gdbarch *gdbarch, char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval);
1262 extern void set_gdbarch_deprecated_get_saved_register (struct gdbarch *gdbarch, gdbarch_deprecated_get_saved_register_ftype *deprecated_get_saved_register);
1263 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_GET_SAVED_REGISTER)
1264 #error "Non multi-arch definition of DEPRECATED_GET_SAVED_REGISTER"
1265 #endif
1266 #if !defined (DEPRECATED_GET_SAVED_REGISTER)
1267 #define DEPRECATED_GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) (gdbarch_deprecated_get_saved_register (current_gdbarch, raw_buffer, optimized, addrp, frame, regnum, lval))
1268 #endif
1269
1270 /* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
1271    For raw <-> cooked register conversions, replaced by pseudo registers. */
1272
1273 typedef int (gdbarch_deprecated_register_convertible_ftype) (int nr);
1274 extern int gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, int nr);
1275 extern void set_gdbarch_deprecated_register_convertible (struct gdbarch *gdbarch, gdbarch_deprecated_register_convertible_ftype *deprecated_register_convertible);
1276 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_CONVERTIBLE)
1277 #error "Non multi-arch definition of DEPRECATED_REGISTER_CONVERTIBLE"
1278 #endif
1279 #if !defined (DEPRECATED_REGISTER_CONVERTIBLE)
1280 #define DEPRECATED_REGISTER_CONVERTIBLE(nr) (gdbarch_deprecated_register_convertible (current_gdbarch, nr))
1281 #endif
1282
1283 /* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
1284    For raw <-> cooked register conversions, replaced by pseudo registers. */
1285
1286 typedef void (gdbarch_deprecated_register_convert_to_virtual_ftype) (int regnum, struct type *type, char *from, char *to);
1287 extern void gdbarch_deprecated_register_convert_to_virtual (struct gdbarch *gdbarch, int regnum, struct type *type, char *from, char *to);
1288 extern void set_gdbarch_deprecated_register_convert_to_virtual (struct gdbarch *gdbarch, gdbarch_deprecated_register_convert_to_virtual_ftype *deprecated_register_convert_to_virtual);
1289 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL)
1290 #error "Non multi-arch definition of DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL"
1291 #endif
1292 #if !defined (DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL)
1293 #define DEPRECATED_REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (gdbarch_deprecated_register_convert_to_virtual (current_gdbarch, regnum, type, from, to))
1294 #endif
1295
1296 /* For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
1297    For raw <-> cooked register conversions, replaced by pseudo registers. */
1298
1299 typedef void (gdbarch_deprecated_register_convert_to_raw_ftype) (struct type *type, int regnum, const char *from, char *to);
1300 extern void gdbarch_deprecated_register_convert_to_raw (struct gdbarch *gdbarch, struct type *type, int regnum, const char *from, char *to);
1301 extern void set_gdbarch_deprecated_register_convert_to_raw (struct gdbarch *gdbarch, gdbarch_deprecated_register_convert_to_raw_ftype *deprecated_register_convert_to_raw);
1302 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REGISTER_CONVERT_TO_RAW)
1303 #error "Non multi-arch definition of DEPRECATED_REGISTER_CONVERT_TO_RAW"
1304 #endif
1305 #if !defined (DEPRECATED_REGISTER_CONVERT_TO_RAW)
1306 #define DEPRECATED_REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (gdbarch_deprecated_register_convert_to_raw (current_gdbarch, type, regnum, from, to))
1307 #endif
1308
1309 typedef int (gdbarch_convert_register_p_ftype) (int regnum, struct type *type);
1310 extern int gdbarch_convert_register_p (struct gdbarch *gdbarch, int regnum, struct type *type);
1311 extern void set_gdbarch_convert_register_p (struct gdbarch *gdbarch, gdbarch_convert_register_p_ftype *convert_register_p);
1312 #if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (CONVERT_REGISTER_P)
1313 #error "Non multi-arch definition of CONVERT_REGISTER_P"
1314 #endif
1315 #if !defined (CONVERT_REGISTER_P)
1316 #define CONVERT_REGISTER_P(regnum, type) (gdbarch_convert_register_p (current_gdbarch, regnum, type))
1317 #endif
1318
1319 typedef void (gdbarch_register_to_value_ftype) (struct frame_info *frame, int regnum, struct type *type, void *buf);
1320 extern void gdbarch_register_to_value (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, void *buf);
1321 extern void set_gdbarch_register_to_value (struct gdbarch *gdbarch, gdbarch_register_to_value_ftype *register_to_value);
1322 #if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (REGISTER_TO_VALUE)
1323 #error "Non multi-arch definition of REGISTER_TO_VALUE"
1324 #endif
1325 #if !defined (REGISTER_TO_VALUE)
1326 #define REGISTER_TO_VALUE(frame, regnum, type, buf) (gdbarch_register_to_value (current_gdbarch, frame, regnum, type, buf))
1327 #endif
1328
1329 typedef void (gdbarch_value_to_register_ftype) (struct frame_info *frame, int regnum, struct type *type, const void *buf);
1330 extern void gdbarch_value_to_register (struct gdbarch *gdbarch, struct frame_info *frame, int regnum, struct type *type, const void *buf);
1331 extern void set_gdbarch_value_to_register (struct gdbarch *gdbarch, gdbarch_value_to_register_ftype *value_to_register);
1332 #if (GDB_MULTI_ARCH >= GDB_MULTI_ARCH_PARTIAL) && defined (VALUE_TO_REGISTER)
1333 #error "Non multi-arch definition of VALUE_TO_REGISTER"
1334 #endif
1335 #if !defined (VALUE_TO_REGISTER)
1336 #define VALUE_TO_REGISTER(frame, regnum, type, buf) (gdbarch_value_to_register (current_gdbarch, frame, regnum, type, buf))
1337 #endif
1338
1339 typedef CORE_ADDR (gdbarch_pointer_to_address_ftype) (struct type *type, const void *buf);
1340 extern CORE_ADDR gdbarch_pointer_to_address (struct gdbarch *gdbarch, struct type *type, const void *buf);
1341 extern void set_gdbarch_pointer_to_address (struct gdbarch *gdbarch, gdbarch_pointer_to_address_ftype *pointer_to_address);
1342 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (POINTER_TO_ADDRESS)
1343 #error "Non multi-arch definition of POINTER_TO_ADDRESS"
1344 #endif
1345 #if !defined (POINTER_TO_ADDRESS)
1346 #define POINTER_TO_ADDRESS(type, buf) (gdbarch_pointer_to_address (current_gdbarch, type, buf))
1347 #endif
1348
1349 typedef void (gdbarch_address_to_pointer_ftype) (struct type *type, void *buf, CORE_ADDR addr);
1350 extern void gdbarch_address_to_pointer (struct gdbarch *gdbarch, struct type *type, void *buf, CORE_ADDR addr);
1351 extern void set_gdbarch_address_to_pointer (struct gdbarch *gdbarch, gdbarch_address_to_pointer_ftype *address_to_pointer);
1352 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDRESS_TO_POINTER)
1353 #error "Non multi-arch definition of ADDRESS_TO_POINTER"
1354 #endif
1355 #if !defined (ADDRESS_TO_POINTER)
1356 #define ADDRESS_TO_POINTER(type, buf, addr) (gdbarch_address_to_pointer (current_gdbarch, type, buf, addr))
1357 #endif
1358
1359 #if defined (INTEGER_TO_ADDRESS)
1360 /* Legacy for systems yet to multi-arch INTEGER_TO_ADDRESS */
1361 #if !defined (INTEGER_TO_ADDRESS_P)
1362 #define INTEGER_TO_ADDRESS_P() (1)
1363 #endif
1364 #endif
1365
1366 extern int gdbarch_integer_to_address_p (struct gdbarch *gdbarch);
1367 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (INTEGER_TO_ADDRESS_P)
1368 #error "Non multi-arch definition of INTEGER_TO_ADDRESS"
1369 #endif
1370 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (INTEGER_TO_ADDRESS_P)
1371 #define INTEGER_TO_ADDRESS_P() (gdbarch_integer_to_address_p (current_gdbarch))
1372 #endif
1373
1374 typedef CORE_ADDR (gdbarch_integer_to_address_ftype) (struct type *type, void *buf);
1375 extern CORE_ADDR gdbarch_integer_to_address (struct gdbarch *gdbarch, struct type *type, void *buf);
1376 extern void set_gdbarch_integer_to_address (struct gdbarch *gdbarch, gdbarch_integer_to_address_ftype *integer_to_address);
1377 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (INTEGER_TO_ADDRESS)
1378 #error "Non multi-arch definition of INTEGER_TO_ADDRESS"
1379 #endif
1380 #if !defined (INTEGER_TO_ADDRESS)
1381 #define INTEGER_TO_ADDRESS(type, buf) (gdbarch_integer_to_address (current_gdbarch, type, buf))
1382 #endif
1383
1384 #if defined (DEPRECATED_POP_FRAME)
1385 /* Legacy for systems yet to multi-arch DEPRECATED_POP_FRAME */
1386 #if !defined (DEPRECATED_POP_FRAME_P)
1387 #define DEPRECATED_POP_FRAME_P() (1)
1388 #endif
1389 #endif
1390
1391 extern int gdbarch_deprecated_pop_frame_p (struct gdbarch *gdbarch);
1392 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_POP_FRAME_P)
1393 #error "Non multi-arch definition of DEPRECATED_POP_FRAME"
1394 #endif
1395 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_POP_FRAME_P)
1396 #define DEPRECATED_POP_FRAME_P() (gdbarch_deprecated_pop_frame_p (current_gdbarch))
1397 #endif
1398
1399 typedef void (gdbarch_deprecated_pop_frame_ftype) (void);
1400 extern void gdbarch_deprecated_pop_frame (struct gdbarch *gdbarch);
1401 extern void set_gdbarch_deprecated_pop_frame (struct gdbarch *gdbarch, gdbarch_deprecated_pop_frame_ftype *deprecated_pop_frame);
1402 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_POP_FRAME)
1403 #error "Non multi-arch definition of DEPRECATED_POP_FRAME"
1404 #endif
1405 #if !defined (DEPRECATED_POP_FRAME)
1406 #define DEPRECATED_POP_FRAME (gdbarch_deprecated_pop_frame (current_gdbarch))
1407 #endif
1408
1409 /* NOTE: cagney/2003-03-24: Replaced by PUSH_ARGUMENTS. */
1410
1411 #if defined (DEPRECATED_STORE_STRUCT_RETURN)
1412 /* Legacy for systems yet to multi-arch DEPRECATED_STORE_STRUCT_RETURN */
1413 #if !defined (DEPRECATED_STORE_STRUCT_RETURN_P)
1414 #define DEPRECATED_STORE_STRUCT_RETURN_P() (1)
1415 #endif
1416 #endif
1417
1418 extern int gdbarch_deprecated_store_struct_return_p (struct gdbarch *gdbarch);
1419 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STORE_STRUCT_RETURN_P)
1420 #error "Non multi-arch definition of DEPRECATED_STORE_STRUCT_RETURN"
1421 #endif
1422 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_STORE_STRUCT_RETURN_P)
1423 #define DEPRECATED_STORE_STRUCT_RETURN_P() (gdbarch_deprecated_store_struct_return_p (current_gdbarch))
1424 #endif
1425
1426 typedef void (gdbarch_deprecated_store_struct_return_ftype) (CORE_ADDR addr, CORE_ADDR sp);
1427 extern void gdbarch_deprecated_store_struct_return (struct gdbarch *gdbarch, CORE_ADDR addr, CORE_ADDR sp);
1428 extern void set_gdbarch_deprecated_store_struct_return (struct gdbarch *gdbarch, gdbarch_deprecated_store_struct_return_ftype *deprecated_store_struct_return);
1429 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STORE_STRUCT_RETURN)
1430 #error "Non multi-arch definition of DEPRECATED_STORE_STRUCT_RETURN"
1431 #endif
1432 #if !defined (DEPRECATED_STORE_STRUCT_RETURN)
1433 #define DEPRECATED_STORE_STRUCT_RETURN(addr, sp) (gdbarch_deprecated_store_struct_return (current_gdbarch, addr, sp))
1434 #endif
1435
1436 /* It has been suggested that this, well actually its predecessor,
1437    should take the type/value of the function to be called and not the
1438    return type.  This is left as an exercise for the reader. */
1439
1440 extern int gdbarch_return_value_p (struct gdbarch *gdbarch);
1441
1442 typedef enum return_value_convention (gdbarch_return_value_ftype) (struct gdbarch *gdbarch, struct type *valtype, struct regcache *regcache, void *readbuf, const void *writebuf);
1443 extern enum return_value_convention gdbarch_return_value (struct gdbarch *gdbarch, struct type *valtype, struct regcache *regcache, void *readbuf, const void *writebuf);
1444 extern void set_gdbarch_return_value (struct gdbarch *gdbarch, gdbarch_return_value_ftype *return_value);
1445
1446 /* The deprecated methods RETURN_VALUE_ON_STACK, EXTRACT_RETURN_VALUE,
1447    STORE_RETURN_VALUE and USE_STRUCT_CONVENTION have all been folded
1448    into RETURN_VALUE.  For the moment do not try to fold in
1449    EXTRACT_STRUCT_VALUE_ADDRESS as, dependant on the ABI, the debug
1450    info, and the level of effort, it may well be possible to find the
1451    address of a structure being return on the stack.  Someone else can
1452    make that change. */
1453
1454 typedef int (gdbarch_return_value_on_stack_ftype) (struct type *type);
1455 extern int gdbarch_return_value_on_stack (struct gdbarch *gdbarch, struct type *type);
1456 extern void set_gdbarch_return_value_on_stack (struct gdbarch *gdbarch, gdbarch_return_value_on_stack_ftype *return_value_on_stack);
1457 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (RETURN_VALUE_ON_STACK)
1458 #error "Non multi-arch definition of RETURN_VALUE_ON_STACK"
1459 #endif
1460 #if !defined (RETURN_VALUE_ON_STACK)
1461 #define RETURN_VALUE_ON_STACK(type) (gdbarch_return_value_on_stack (current_gdbarch, type))
1462 #endif
1463
1464 typedef void (gdbarch_extract_return_value_ftype) (struct type *type, struct regcache *regcache, void *valbuf);
1465 extern void gdbarch_extract_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, void *valbuf);
1466 extern void set_gdbarch_extract_return_value (struct gdbarch *gdbarch, gdbarch_extract_return_value_ftype *extract_return_value);
1467 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (EXTRACT_RETURN_VALUE)
1468 #error "Non multi-arch definition of EXTRACT_RETURN_VALUE"
1469 #endif
1470 #if !defined (EXTRACT_RETURN_VALUE)
1471 #define EXTRACT_RETURN_VALUE(type, regcache, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regcache, valbuf))
1472 #endif
1473
1474 typedef void (gdbarch_store_return_value_ftype) (struct type *type, struct regcache *regcache, const void *valbuf);
1475 extern void gdbarch_store_return_value (struct gdbarch *gdbarch, struct type *type, struct regcache *regcache, const void *valbuf);
1476 extern void set_gdbarch_store_return_value (struct gdbarch *gdbarch, gdbarch_store_return_value_ftype *store_return_value);
1477 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (STORE_RETURN_VALUE)
1478 #error "Non multi-arch definition of STORE_RETURN_VALUE"
1479 #endif
1480 #if !defined (STORE_RETURN_VALUE)
1481 #define STORE_RETURN_VALUE(type, regcache, valbuf) (gdbarch_store_return_value (current_gdbarch, type, regcache, valbuf))
1482 #endif
1483
1484 typedef void (gdbarch_deprecated_extract_return_value_ftype) (struct type *type, char *regbuf, char *valbuf);
1485 extern void gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, struct type *type, char *regbuf, char *valbuf);
1486 extern void set_gdbarch_deprecated_extract_return_value (struct gdbarch *gdbarch, gdbarch_deprecated_extract_return_value_ftype *deprecated_extract_return_value);
1487 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_RETURN_VALUE)
1488 #error "Non multi-arch definition of DEPRECATED_EXTRACT_RETURN_VALUE"
1489 #endif
1490 #if !defined (DEPRECATED_EXTRACT_RETURN_VALUE)
1491 #define DEPRECATED_EXTRACT_RETURN_VALUE(type, regbuf, valbuf) (gdbarch_deprecated_extract_return_value (current_gdbarch, type, regbuf, valbuf))
1492 #endif
1493
1494 typedef void (gdbarch_deprecated_store_return_value_ftype) (struct type *type, char *valbuf);
1495 extern void gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, struct type *type, char *valbuf);
1496 extern void set_gdbarch_deprecated_store_return_value (struct gdbarch *gdbarch, gdbarch_deprecated_store_return_value_ftype *deprecated_store_return_value);
1497 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STORE_RETURN_VALUE)
1498 #error "Non multi-arch definition of DEPRECATED_STORE_RETURN_VALUE"
1499 #endif
1500 #if !defined (DEPRECATED_STORE_RETURN_VALUE)
1501 #define DEPRECATED_STORE_RETURN_VALUE(type, valbuf) (gdbarch_deprecated_store_return_value (current_gdbarch, type, valbuf))
1502 #endif
1503
1504 typedef int (gdbarch_use_struct_convention_ftype) (int gcc_p, struct type *value_type);
1505 extern int gdbarch_use_struct_convention (struct gdbarch *gdbarch, int gcc_p, struct type *value_type);
1506 extern void set_gdbarch_use_struct_convention (struct gdbarch *gdbarch, gdbarch_use_struct_convention_ftype *use_struct_convention);
1507 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (USE_STRUCT_CONVENTION)
1508 #error "Non multi-arch definition of USE_STRUCT_CONVENTION"
1509 #endif
1510 #if !defined (USE_STRUCT_CONVENTION)
1511 #define USE_STRUCT_CONVENTION(gcc_p, value_type) (gdbarch_use_struct_convention (current_gdbarch, gcc_p, value_type))
1512 #endif
1513
1514 #if defined (EXTRACT_STRUCT_VALUE_ADDRESS)
1515 /* Legacy for systems yet to multi-arch EXTRACT_STRUCT_VALUE_ADDRESS */
1516 #if !defined (EXTRACT_STRUCT_VALUE_ADDRESS_P)
1517 #define EXTRACT_STRUCT_VALUE_ADDRESS_P() (1)
1518 #endif
1519 #endif
1520
1521 extern int gdbarch_extract_struct_value_address_p (struct gdbarch *gdbarch);
1522 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (EXTRACT_STRUCT_VALUE_ADDRESS_P)
1523 #error "Non multi-arch definition of EXTRACT_STRUCT_VALUE_ADDRESS"
1524 #endif
1525 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (EXTRACT_STRUCT_VALUE_ADDRESS_P)
1526 #define EXTRACT_STRUCT_VALUE_ADDRESS_P() (gdbarch_extract_struct_value_address_p (current_gdbarch))
1527 #endif
1528
1529 typedef CORE_ADDR (gdbarch_extract_struct_value_address_ftype) (struct regcache *regcache);
1530 extern CORE_ADDR gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, struct regcache *regcache);
1531 extern void set_gdbarch_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch_extract_struct_value_address_ftype *extract_struct_value_address);
1532 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (EXTRACT_STRUCT_VALUE_ADDRESS)
1533 #error "Non multi-arch definition of EXTRACT_STRUCT_VALUE_ADDRESS"
1534 #endif
1535 #if !defined (EXTRACT_STRUCT_VALUE_ADDRESS)
1536 #define EXTRACT_STRUCT_VALUE_ADDRESS(regcache) (gdbarch_extract_struct_value_address (current_gdbarch, regcache))
1537 #endif
1538
1539 #if defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
1540 /* Legacy for systems yet to multi-arch DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS */
1541 #if !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
1542 #define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() (1)
1543 #endif
1544 #endif
1545
1546 extern int gdbarch_deprecated_extract_struct_value_address_p (struct gdbarch *gdbarch);
1547 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
1548 #error "Non multi-arch definition of DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS"
1549 #endif
1550 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P)
1551 #define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS_P() (gdbarch_deprecated_extract_struct_value_address_p (current_gdbarch))
1552 #endif
1553
1554 typedef CORE_ADDR (gdbarch_deprecated_extract_struct_value_address_ftype) (char *regbuf);
1555 extern CORE_ADDR gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, char *regbuf);
1556 extern void set_gdbarch_deprecated_extract_struct_value_address (struct gdbarch *gdbarch, gdbarch_deprecated_extract_struct_value_address_ftype *deprecated_extract_struct_value_address);
1557 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
1558 #error "Non multi-arch definition of DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS"
1559 #endif
1560 #if !defined (DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS)
1561 #define DEPRECATED_EXTRACT_STRUCT_VALUE_ADDRESS(regbuf) (gdbarch_deprecated_extract_struct_value_address (current_gdbarch, regbuf))
1562 #endif
1563
1564 #if defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
1565 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_INIT_SAVED_REGS */
1566 #if !defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
1567 #define DEPRECATED_FRAME_INIT_SAVED_REGS_P() (1)
1568 #endif
1569 #endif
1570
1571 extern int gdbarch_deprecated_frame_init_saved_regs_p (struct gdbarch *gdbarch);
1572 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
1573 #error "Non multi-arch definition of DEPRECATED_FRAME_INIT_SAVED_REGS"
1574 #endif
1575 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
1576 #define DEPRECATED_FRAME_INIT_SAVED_REGS_P() (gdbarch_deprecated_frame_init_saved_regs_p (current_gdbarch))
1577 #endif
1578
1579 typedef void (gdbarch_deprecated_frame_init_saved_regs_ftype) (struct frame_info *frame);
1580 extern void gdbarch_deprecated_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame);
1581 extern void set_gdbarch_deprecated_frame_init_saved_regs (struct gdbarch *gdbarch, gdbarch_deprecated_frame_init_saved_regs_ftype *deprecated_frame_init_saved_regs);
1582 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
1583 #error "Non multi-arch definition of DEPRECATED_FRAME_INIT_SAVED_REGS"
1584 #endif
1585 #if !defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
1586 #define DEPRECATED_FRAME_INIT_SAVED_REGS(frame) (gdbarch_deprecated_frame_init_saved_regs (current_gdbarch, frame))
1587 #endif
1588
1589 #if defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
1590 /* Legacy for systems yet to multi-arch DEPRECATED_INIT_EXTRA_FRAME_INFO */
1591 #if !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
1592 #define DEPRECATED_INIT_EXTRA_FRAME_INFO_P() (1)
1593 #endif
1594 #endif
1595
1596 extern int gdbarch_deprecated_init_extra_frame_info_p (struct gdbarch *gdbarch);
1597 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
1598 #error "Non multi-arch definition of DEPRECATED_INIT_EXTRA_FRAME_INFO"
1599 #endif
1600 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
1601 #define DEPRECATED_INIT_EXTRA_FRAME_INFO_P() (gdbarch_deprecated_init_extra_frame_info_p (current_gdbarch))
1602 #endif
1603
1604 typedef void (gdbarch_deprecated_init_extra_frame_info_ftype) (int fromleaf, struct frame_info *frame);
1605 extern void gdbarch_deprecated_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame);
1606 extern void set_gdbarch_deprecated_init_extra_frame_info (struct gdbarch *gdbarch, gdbarch_deprecated_init_extra_frame_info_ftype *deprecated_init_extra_frame_info);
1607 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
1608 #error "Non multi-arch definition of DEPRECATED_INIT_EXTRA_FRAME_INFO"
1609 #endif
1610 #if !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
1611 #define DEPRECATED_INIT_EXTRA_FRAME_INFO(fromleaf, frame) (gdbarch_deprecated_init_extra_frame_info (current_gdbarch, fromleaf, frame))
1612 #endif
1613
1614 typedef CORE_ADDR (gdbarch_skip_prologue_ftype) (CORE_ADDR ip);
1615 extern CORE_ADDR gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip);
1616 extern void set_gdbarch_skip_prologue (struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype *skip_prologue);
1617 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SKIP_PROLOGUE)
1618 #error "Non multi-arch definition of SKIP_PROLOGUE"
1619 #endif
1620 #if !defined (SKIP_PROLOGUE)
1621 #define SKIP_PROLOGUE(ip) (gdbarch_skip_prologue (current_gdbarch, ip))
1622 #endif
1623
1624 typedef int (gdbarch_prologue_frameless_p_ftype) (CORE_ADDR ip);
1625 extern int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip);
1626 extern void set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, gdbarch_prologue_frameless_p_ftype *prologue_frameless_p);
1627 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PROLOGUE_FRAMELESS_P)
1628 #error "Non multi-arch definition of PROLOGUE_FRAMELESS_P"
1629 #endif
1630 #if !defined (PROLOGUE_FRAMELESS_P)
1631 #define PROLOGUE_FRAMELESS_P(ip) (gdbarch_prologue_frameless_p (current_gdbarch, ip))
1632 #endif
1633
1634 typedef int (gdbarch_inner_than_ftype) (CORE_ADDR lhs, CORE_ADDR rhs);
1635 extern int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs);
1636 extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_ftype *inner_than);
1637 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (INNER_THAN)
1638 #error "Non multi-arch definition of INNER_THAN"
1639 #endif
1640 #if !defined (INNER_THAN)
1641 #define INNER_THAN(lhs, rhs) (gdbarch_inner_than (current_gdbarch, lhs, rhs))
1642 #endif
1643
1644 typedef const unsigned char * (gdbarch_breakpoint_from_pc_ftype) (CORE_ADDR *pcptr, int *lenptr);
1645 extern const unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr);
1646 extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc);
1647 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (BREAKPOINT_FROM_PC)
1648 #error "Non multi-arch definition of BREAKPOINT_FROM_PC"
1649 #endif
1650 #if !defined (BREAKPOINT_FROM_PC)
1651 #define BREAKPOINT_FROM_PC(pcptr, lenptr) (gdbarch_breakpoint_from_pc (current_gdbarch, pcptr, lenptr))
1652 #endif
1653
1654 extern int gdbarch_adjust_breakpoint_address_p (struct gdbarch *gdbarch);
1655
1656 typedef CORE_ADDR (gdbarch_adjust_breakpoint_address_ftype) (struct gdbarch *gdbarch, CORE_ADDR bpaddr);
1657 extern CORE_ADDR gdbarch_adjust_breakpoint_address (struct gdbarch *gdbarch, CORE_ADDR bpaddr);
1658 extern void set_gdbarch_adjust_breakpoint_address (struct gdbarch *gdbarch, gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address);
1659
1660 typedef int (gdbarch_memory_insert_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
1661 extern int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
1662 extern void set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint);
1663 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (MEMORY_INSERT_BREAKPOINT)
1664 #error "Non multi-arch definition of MEMORY_INSERT_BREAKPOINT"
1665 #endif
1666 #if !defined (MEMORY_INSERT_BREAKPOINT)
1667 #define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (gdbarch_memory_insert_breakpoint (current_gdbarch, addr, contents_cache))
1668 #endif
1669
1670 typedef int (gdbarch_memory_remove_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
1671 extern int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
1672 extern void set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint);
1673 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (MEMORY_REMOVE_BREAKPOINT)
1674 #error "Non multi-arch definition of MEMORY_REMOVE_BREAKPOINT"
1675 #endif
1676 #if !defined (MEMORY_REMOVE_BREAKPOINT)
1677 #define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (gdbarch_memory_remove_breakpoint (current_gdbarch, addr, contents_cache))
1678 #endif
1679
1680 extern CORE_ADDR gdbarch_decr_pc_after_break (struct gdbarch *gdbarch);
1681 extern void set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break);
1682 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DECR_PC_AFTER_BREAK)
1683 #error "Non multi-arch definition of DECR_PC_AFTER_BREAK"
1684 #endif
1685 #if !defined (DECR_PC_AFTER_BREAK)
1686 #define DECR_PC_AFTER_BREAK (gdbarch_decr_pc_after_break (current_gdbarch))
1687 #endif
1688
1689 extern CORE_ADDR gdbarch_function_start_offset (struct gdbarch *gdbarch);
1690 extern void set_gdbarch_function_start_offset (struct gdbarch *gdbarch, CORE_ADDR function_start_offset);
1691 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FUNCTION_START_OFFSET)
1692 #error "Non multi-arch definition of FUNCTION_START_OFFSET"
1693 #endif
1694 #if !defined (FUNCTION_START_OFFSET)
1695 #define FUNCTION_START_OFFSET (gdbarch_function_start_offset (current_gdbarch))
1696 #endif
1697
1698 typedef void (gdbarch_remote_translate_xfer_address_ftype) (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
1699 extern void gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR *rem_addr, int *rem_len);
1700 extern void set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address);
1701
1702 extern CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch);
1703 extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR frame_args_skip);
1704 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_ARGS_SKIP)
1705 #error "Non multi-arch definition of FRAME_ARGS_SKIP"
1706 #endif
1707 #if !defined (FRAME_ARGS_SKIP)
1708 #define FRAME_ARGS_SKIP (gdbarch_frame_args_skip (current_gdbarch))
1709 #endif
1710
1711 typedef int (gdbarch_frameless_function_invocation_ftype) (struct frame_info *fi);
1712 extern int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi);
1713 extern void set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, gdbarch_frameless_function_invocation_ftype *frameless_function_invocation);
1714 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAMELESS_FUNCTION_INVOCATION)
1715 #error "Non multi-arch definition of FRAMELESS_FUNCTION_INVOCATION"
1716 #endif
1717 #if !defined (FRAMELESS_FUNCTION_INVOCATION)
1718 #define FRAMELESS_FUNCTION_INVOCATION(fi) (gdbarch_frameless_function_invocation (current_gdbarch, fi))
1719 #endif
1720
1721 #if defined (DEPRECATED_FRAME_CHAIN)
1722 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_CHAIN */
1723 #if !defined (DEPRECATED_FRAME_CHAIN_P)
1724 #define DEPRECATED_FRAME_CHAIN_P() (1)
1725 #endif
1726 #endif
1727
1728 extern int gdbarch_deprecated_frame_chain_p (struct gdbarch *gdbarch);
1729 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_P)
1730 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN"
1731 #endif
1732 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_CHAIN_P)
1733 #define DEPRECATED_FRAME_CHAIN_P() (gdbarch_deprecated_frame_chain_p (current_gdbarch))
1734 #endif
1735
1736 typedef CORE_ADDR (gdbarch_deprecated_frame_chain_ftype) (struct frame_info *frame);
1737 extern CORE_ADDR gdbarch_deprecated_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame);
1738 extern void set_gdbarch_deprecated_frame_chain (struct gdbarch *gdbarch, gdbarch_deprecated_frame_chain_ftype *deprecated_frame_chain);
1739 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN)
1740 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN"
1741 #endif
1742 #if !defined (DEPRECATED_FRAME_CHAIN)
1743 #define DEPRECATED_FRAME_CHAIN(frame) (gdbarch_deprecated_frame_chain (current_gdbarch, frame))
1744 #endif
1745
1746 #if defined (DEPRECATED_FRAME_CHAIN_VALID)
1747 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_CHAIN_VALID */
1748 #if !defined (DEPRECATED_FRAME_CHAIN_VALID_P)
1749 #define DEPRECATED_FRAME_CHAIN_VALID_P() (1)
1750 #endif
1751 #endif
1752
1753 extern int gdbarch_deprecated_frame_chain_valid_p (struct gdbarch *gdbarch);
1754 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_VALID_P)
1755 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN_VALID"
1756 #endif
1757 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_CHAIN_VALID_P)
1758 #define DEPRECATED_FRAME_CHAIN_VALID_P() (gdbarch_deprecated_frame_chain_valid_p (current_gdbarch))
1759 #endif
1760
1761 typedef int (gdbarch_deprecated_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe);
1762 extern int gdbarch_deprecated_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe);
1763 extern void set_gdbarch_deprecated_frame_chain_valid (struct gdbarch *gdbarch, gdbarch_deprecated_frame_chain_valid_ftype *deprecated_frame_chain_valid);
1764 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_VALID)
1765 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN_VALID"
1766 #endif
1767 #if !defined (DEPRECATED_FRAME_CHAIN_VALID)
1768 #define DEPRECATED_FRAME_CHAIN_VALID(chain, thisframe) (gdbarch_deprecated_frame_chain_valid (current_gdbarch, chain, thisframe))
1769 #endif
1770
1771 /* DEPRECATED_FRAME_SAVED_PC has been replaced by UNWIND_PC.  Please
1772    note, per UNWIND_PC's doco, that while the two have similar
1773    interfaces they have very different underlying implementations. */
1774
1775 #if defined (DEPRECATED_FRAME_SAVED_PC)
1776 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_SAVED_PC */
1777 #if !defined (DEPRECATED_FRAME_SAVED_PC_P)
1778 #define DEPRECATED_FRAME_SAVED_PC_P() (1)
1779 #endif
1780 #endif
1781
1782 extern int gdbarch_deprecated_frame_saved_pc_p (struct gdbarch *gdbarch);
1783 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_SAVED_PC_P)
1784 #error "Non multi-arch definition of DEPRECATED_FRAME_SAVED_PC"
1785 #endif
1786 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_SAVED_PC_P)
1787 #define DEPRECATED_FRAME_SAVED_PC_P() (gdbarch_deprecated_frame_saved_pc_p (current_gdbarch))
1788 #endif
1789
1790 typedef CORE_ADDR (gdbarch_deprecated_frame_saved_pc_ftype) (struct frame_info *fi);
1791 extern CORE_ADDR gdbarch_deprecated_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi);
1792 extern void set_gdbarch_deprecated_frame_saved_pc (struct gdbarch *gdbarch, gdbarch_deprecated_frame_saved_pc_ftype *deprecated_frame_saved_pc);
1793 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_SAVED_PC)
1794 #error "Non multi-arch definition of DEPRECATED_FRAME_SAVED_PC"
1795 #endif
1796 #if !defined (DEPRECATED_FRAME_SAVED_PC)
1797 #define DEPRECATED_FRAME_SAVED_PC(fi) (gdbarch_deprecated_frame_saved_pc (current_gdbarch, fi))
1798 #endif
1799
1800 extern int gdbarch_unwind_pc_p (struct gdbarch *gdbarch);
1801
1802 typedef CORE_ADDR (gdbarch_unwind_pc_ftype) (struct gdbarch *gdbarch, struct frame_info *next_frame);
1803 extern CORE_ADDR gdbarch_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame);
1804 extern void set_gdbarch_unwind_pc (struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype *unwind_pc);
1805
1806 extern int gdbarch_unwind_sp_p (struct gdbarch *gdbarch);
1807
1808 typedef CORE_ADDR (gdbarch_unwind_sp_ftype) (struct gdbarch *gdbarch, struct frame_info *next_frame);
1809 extern CORE_ADDR gdbarch_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame);
1810 extern void set_gdbarch_unwind_sp (struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype *unwind_sp);
1811
1812 /* DEPRECATED_FRAME_ARGS_ADDRESS as been replaced by the per-frame
1813    frame-base.  Enable frame-base before frame-unwind. */
1814
1815 #if defined (DEPRECATED_FRAME_ARGS_ADDRESS)
1816 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_ARGS_ADDRESS */
1817 #if !defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
1818 #define DEPRECATED_FRAME_ARGS_ADDRESS_P() (1)
1819 #endif
1820 #endif
1821
1822 extern int gdbarch_deprecated_frame_args_address_p (struct gdbarch *gdbarch);
1823 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
1824 #error "Non multi-arch definition of DEPRECATED_FRAME_ARGS_ADDRESS"
1825 #endif
1826 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
1827 #define DEPRECATED_FRAME_ARGS_ADDRESS_P() (gdbarch_deprecated_frame_args_address_p (current_gdbarch))
1828 #endif
1829
1830 typedef CORE_ADDR (gdbarch_deprecated_frame_args_address_ftype) (struct frame_info *fi);
1831 extern CORE_ADDR gdbarch_deprecated_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi);
1832 extern void set_gdbarch_deprecated_frame_args_address (struct gdbarch *gdbarch, gdbarch_deprecated_frame_args_address_ftype *deprecated_frame_args_address);
1833 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_ARGS_ADDRESS)
1834 #error "Non multi-arch definition of DEPRECATED_FRAME_ARGS_ADDRESS"
1835 #endif
1836 #if !defined (DEPRECATED_FRAME_ARGS_ADDRESS)
1837 #define DEPRECATED_FRAME_ARGS_ADDRESS(fi) (gdbarch_deprecated_frame_args_address (current_gdbarch, fi))
1838 #endif
1839
1840 /* DEPRECATED_FRAME_LOCALS_ADDRESS as been replaced by the per-frame
1841    frame-base.  Enable frame-base before frame-unwind. */
1842
1843 #if defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
1844 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_LOCALS_ADDRESS */
1845 #if !defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
1846 #define DEPRECATED_FRAME_LOCALS_ADDRESS_P() (1)
1847 #endif
1848 #endif
1849
1850 extern int gdbarch_deprecated_frame_locals_address_p (struct gdbarch *gdbarch);
1851 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
1852 #error "Non multi-arch definition of DEPRECATED_FRAME_LOCALS_ADDRESS"
1853 #endif
1854 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
1855 #define DEPRECATED_FRAME_LOCALS_ADDRESS_P() (gdbarch_deprecated_frame_locals_address_p (current_gdbarch))
1856 #endif
1857
1858 typedef CORE_ADDR (gdbarch_deprecated_frame_locals_address_ftype) (struct frame_info *fi);
1859 extern CORE_ADDR gdbarch_deprecated_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi);
1860 extern void set_gdbarch_deprecated_frame_locals_address (struct gdbarch *gdbarch, gdbarch_deprecated_frame_locals_address_ftype *deprecated_frame_locals_address);
1861 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
1862 #error "Non multi-arch definition of DEPRECATED_FRAME_LOCALS_ADDRESS"
1863 #endif
1864 #if !defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
1865 #define DEPRECATED_FRAME_LOCALS_ADDRESS(fi) (gdbarch_deprecated_frame_locals_address (current_gdbarch, fi))
1866 #endif
1867
1868 #if defined (DEPRECATED_SAVED_PC_AFTER_CALL)
1869 /* Legacy for systems yet to multi-arch DEPRECATED_SAVED_PC_AFTER_CALL */
1870 #if !defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
1871 #define DEPRECATED_SAVED_PC_AFTER_CALL_P() (1)
1872 #endif
1873 #endif
1874
1875 extern int gdbarch_deprecated_saved_pc_after_call_p (struct gdbarch *gdbarch);
1876 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
1877 #error "Non multi-arch definition of DEPRECATED_SAVED_PC_AFTER_CALL"
1878 #endif
1879 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
1880 #define DEPRECATED_SAVED_PC_AFTER_CALL_P() (gdbarch_deprecated_saved_pc_after_call_p (current_gdbarch))
1881 #endif
1882
1883 typedef CORE_ADDR (gdbarch_deprecated_saved_pc_after_call_ftype) (struct frame_info *frame);
1884 extern CORE_ADDR gdbarch_deprecated_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame);
1885 extern void set_gdbarch_deprecated_saved_pc_after_call (struct gdbarch *gdbarch, gdbarch_deprecated_saved_pc_after_call_ftype *deprecated_saved_pc_after_call);
1886 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVED_PC_AFTER_CALL)
1887 #error "Non multi-arch definition of DEPRECATED_SAVED_PC_AFTER_CALL"
1888 #endif
1889 #if !defined (DEPRECATED_SAVED_PC_AFTER_CALL)
1890 #define DEPRECATED_SAVED_PC_AFTER_CALL(frame) (gdbarch_deprecated_saved_pc_after_call (current_gdbarch, frame))
1891 #endif
1892
1893 #if defined (FRAME_NUM_ARGS)
1894 /* Legacy for systems yet to multi-arch FRAME_NUM_ARGS */
1895 #if !defined (FRAME_NUM_ARGS_P)
1896 #define FRAME_NUM_ARGS_P() (1)
1897 #endif
1898 #endif
1899
1900 extern int gdbarch_frame_num_args_p (struct gdbarch *gdbarch);
1901 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_NUM_ARGS_P)
1902 #error "Non multi-arch definition of FRAME_NUM_ARGS"
1903 #endif
1904 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FRAME_NUM_ARGS_P)
1905 #define FRAME_NUM_ARGS_P() (gdbarch_frame_num_args_p (current_gdbarch))
1906 #endif
1907
1908 typedef int (gdbarch_frame_num_args_ftype) (struct frame_info *frame);
1909 extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame);
1910 extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_num_args_ftype *frame_num_args);
1911 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_NUM_ARGS)
1912 #error "Non multi-arch definition of FRAME_NUM_ARGS"
1913 #endif
1914 #if !defined (FRAME_NUM_ARGS)
1915 #define FRAME_NUM_ARGS(frame) (gdbarch_frame_num_args (current_gdbarch, frame))
1916 #endif
1917
1918 /* DEPRECATED_STACK_ALIGN has been replaced by an initial aligning call
1919    to frame_align and the requirement that methods such as
1920    push_dummy_call and frame_red_zone_size maintain correct stack/frame
1921    alignment. */
1922
1923 #if defined (DEPRECATED_STACK_ALIGN)
1924 /* Legacy for systems yet to multi-arch DEPRECATED_STACK_ALIGN */
1925 #if !defined (DEPRECATED_STACK_ALIGN_P)
1926 #define DEPRECATED_STACK_ALIGN_P() (1)
1927 #endif
1928 #endif
1929
1930 extern int gdbarch_deprecated_stack_align_p (struct gdbarch *gdbarch);
1931 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STACK_ALIGN_P)
1932 #error "Non multi-arch definition of DEPRECATED_STACK_ALIGN"
1933 #endif
1934 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_STACK_ALIGN_P)
1935 #define DEPRECATED_STACK_ALIGN_P() (gdbarch_deprecated_stack_align_p (current_gdbarch))
1936 #endif
1937
1938 typedef CORE_ADDR (gdbarch_deprecated_stack_align_ftype) (CORE_ADDR sp);
1939 extern CORE_ADDR gdbarch_deprecated_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp);
1940 extern void set_gdbarch_deprecated_stack_align (struct gdbarch *gdbarch, gdbarch_deprecated_stack_align_ftype *deprecated_stack_align);
1941 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STACK_ALIGN)
1942 #error "Non multi-arch definition of DEPRECATED_STACK_ALIGN"
1943 #endif
1944 #if !defined (DEPRECATED_STACK_ALIGN)
1945 #define DEPRECATED_STACK_ALIGN(sp) (gdbarch_deprecated_stack_align (current_gdbarch, sp))
1946 #endif
1947
1948 extern int gdbarch_frame_align_p (struct gdbarch *gdbarch);
1949
1950 typedef CORE_ADDR (gdbarch_frame_align_ftype) (struct gdbarch *gdbarch, CORE_ADDR address);
1951 extern CORE_ADDR gdbarch_frame_align (struct gdbarch *gdbarch, CORE_ADDR address);
1952 extern void set_gdbarch_frame_align (struct gdbarch *gdbarch, gdbarch_frame_align_ftype *frame_align);
1953
1954 /* DEPRECATED_REG_STRUCT_HAS_ADDR has been replaced by
1955    stabs_argument_has_addr. */
1956
1957 #if defined (DEPRECATED_REG_STRUCT_HAS_ADDR)
1958 /* Legacy for systems yet to multi-arch DEPRECATED_REG_STRUCT_HAS_ADDR */
1959 #if !defined (DEPRECATED_REG_STRUCT_HAS_ADDR_P)
1960 #define DEPRECATED_REG_STRUCT_HAS_ADDR_P() (1)
1961 #endif
1962 #endif
1963
1964 extern int gdbarch_deprecated_reg_struct_has_addr_p (struct gdbarch *gdbarch);
1965 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REG_STRUCT_HAS_ADDR_P)
1966 #error "Non multi-arch definition of DEPRECATED_REG_STRUCT_HAS_ADDR"
1967 #endif
1968 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REG_STRUCT_HAS_ADDR_P)
1969 #define DEPRECATED_REG_STRUCT_HAS_ADDR_P() (gdbarch_deprecated_reg_struct_has_addr_p (current_gdbarch))
1970 #endif
1971
1972 typedef int (gdbarch_deprecated_reg_struct_has_addr_ftype) (int gcc_p, struct type *type);
1973 extern int gdbarch_deprecated_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type);
1974 extern void set_gdbarch_deprecated_reg_struct_has_addr (struct gdbarch *gdbarch, gdbarch_deprecated_reg_struct_has_addr_ftype *deprecated_reg_struct_has_addr);
1975 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REG_STRUCT_HAS_ADDR)
1976 #error "Non multi-arch definition of DEPRECATED_REG_STRUCT_HAS_ADDR"
1977 #endif
1978 #if !defined (DEPRECATED_REG_STRUCT_HAS_ADDR)
1979 #define DEPRECATED_REG_STRUCT_HAS_ADDR(gcc_p, type) (gdbarch_deprecated_reg_struct_has_addr (current_gdbarch, gcc_p, type))
1980 #endif
1981
1982 typedef int (gdbarch_stabs_argument_has_addr_ftype) (struct gdbarch *gdbarch, struct type *type);
1983 extern int gdbarch_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type);
1984 extern void set_gdbarch_stabs_argument_has_addr (struct gdbarch *gdbarch, gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr);
1985
1986 extern int gdbarch_frame_red_zone_size (struct gdbarch *gdbarch);
1987 extern void set_gdbarch_frame_red_zone_size (struct gdbarch *gdbarch, int frame_red_zone_size);
1988 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_RED_ZONE_SIZE)
1989 #error "Non multi-arch definition of FRAME_RED_ZONE_SIZE"
1990 #endif
1991 #if !defined (FRAME_RED_ZONE_SIZE)
1992 #define FRAME_RED_ZONE_SIZE (gdbarch_frame_red_zone_size (current_gdbarch))
1993 #endif
1994
1995 extern int gdbarch_parm_boundary (struct gdbarch *gdbarch);
1996 extern void set_gdbarch_parm_boundary (struct gdbarch *gdbarch, int parm_boundary);
1997 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PARM_BOUNDARY)
1998 #error "Non multi-arch definition of PARM_BOUNDARY"
1999 #endif
2000 #if !defined (PARM_BOUNDARY)
2001 #define PARM_BOUNDARY (gdbarch_parm_boundary (current_gdbarch))
2002 #endif
2003
2004 extern const struct floatformat * gdbarch_float_format (struct gdbarch *gdbarch);
2005 extern void set_gdbarch_float_format (struct gdbarch *gdbarch, const struct floatformat * float_format);
2006 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_FLOAT_FORMAT)
2007 #error "Non multi-arch definition of TARGET_FLOAT_FORMAT"
2008 #endif
2009 #if !defined (TARGET_FLOAT_FORMAT)
2010 #define TARGET_FLOAT_FORMAT (gdbarch_float_format (current_gdbarch))
2011 #endif
2012
2013 extern const struct floatformat * gdbarch_double_format (struct gdbarch *gdbarch);
2014 extern void set_gdbarch_double_format (struct gdbarch *gdbarch, const struct floatformat * double_format);
2015 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_DOUBLE_FORMAT)
2016 #error "Non multi-arch definition of TARGET_DOUBLE_FORMAT"
2017 #endif
2018 #if !defined (TARGET_DOUBLE_FORMAT)
2019 #define TARGET_DOUBLE_FORMAT (gdbarch_double_format (current_gdbarch))
2020 #endif
2021
2022 extern const struct floatformat * gdbarch_long_double_format (struct gdbarch *gdbarch);
2023 extern void set_gdbarch_long_double_format (struct gdbarch *gdbarch, const struct floatformat * long_double_format);
2024 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_DOUBLE_FORMAT)
2025 #error "Non multi-arch definition of TARGET_LONG_DOUBLE_FORMAT"
2026 #endif
2027 #if !defined (TARGET_LONG_DOUBLE_FORMAT)
2028 #define TARGET_LONG_DOUBLE_FORMAT (gdbarch_long_double_format (current_gdbarch))
2029 #endif
2030
2031 typedef CORE_ADDR (gdbarch_convert_from_func_ptr_addr_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ);
2032 extern CORE_ADDR gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ);
2033 extern void set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr);
2034
2035 /* On some machines there are bits in addresses which are not really
2036    part of the address, but are used by the kernel, the hardware, etc.
2037    for special purposes.  ADDR_BITS_REMOVE takes out any such bits so
2038    we get a "real" address such as one would find in a symbol table.
2039    This is used only for addresses of instructions, and even then I'm
2040    not sure it's used in all contexts.  It exists to deal with there
2041    being a few stray bits in the PC which would mislead us, not as some
2042    sort of generic thing to handle alignment or segmentation (it's
2043    possible it should be in TARGET_READ_PC instead). */
2044
2045 typedef CORE_ADDR (gdbarch_addr_bits_remove_ftype) (CORE_ADDR addr);
2046 extern CORE_ADDR gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr);
2047 extern void set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype *addr_bits_remove);
2048 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDR_BITS_REMOVE)
2049 #error "Non multi-arch definition of ADDR_BITS_REMOVE"
2050 #endif
2051 #if !defined (ADDR_BITS_REMOVE)
2052 #define ADDR_BITS_REMOVE(addr) (gdbarch_addr_bits_remove (current_gdbarch, addr))
2053 #endif
2054
2055 /* It is not at all clear why SMASH_TEXT_ADDRESS is not folded into
2056    ADDR_BITS_REMOVE. */
2057
2058 typedef CORE_ADDR (gdbarch_smash_text_address_ftype) (CORE_ADDR addr);
2059 extern CORE_ADDR gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr);
2060 extern void set_gdbarch_smash_text_address (struct gdbarch *gdbarch, gdbarch_smash_text_address_ftype *smash_text_address);
2061 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SMASH_TEXT_ADDRESS)
2062 #error "Non multi-arch definition of SMASH_TEXT_ADDRESS"
2063 #endif
2064 #if !defined (SMASH_TEXT_ADDRESS)
2065 #define SMASH_TEXT_ADDRESS(addr) (gdbarch_smash_text_address (current_gdbarch, addr))
2066 #endif
2067
2068 /* FIXME/cagney/2001-01-18: This should be split in two.  A target method that indicates if
2069    the target needs software single step.  An ISA method to implement it.
2070   
2071    FIXME/cagney/2001-01-18: This should be replaced with something that inserts breakpoints
2072    using the breakpoint system instead of blatting memory directly (as with rs6000).
2073   
2074    FIXME/cagney/2001-01-18: The logic is backwards.  It should be asking if the target can
2075    single step.  If not, then implement single step using breakpoints. */
2076
2077 #if defined (SOFTWARE_SINGLE_STEP)
2078 /* Legacy for systems yet to multi-arch SOFTWARE_SINGLE_STEP */
2079 #if !defined (SOFTWARE_SINGLE_STEP_P)
2080 #define SOFTWARE_SINGLE_STEP_P() (1)
2081 #endif
2082 #endif
2083
2084 extern int gdbarch_software_single_step_p (struct gdbarch *gdbarch);
2085 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SOFTWARE_SINGLE_STEP_P)
2086 #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP"
2087 #endif
2088 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SOFTWARE_SINGLE_STEP_P)
2089 #define SOFTWARE_SINGLE_STEP_P() (gdbarch_software_single_step_p (current_gdbarch))
2090 #endif
2091
2092 typedef void (gdbarch_software_single_step_ftype) (enum target_signal sig, int insert_breakpoints_p);
2093 extern void gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p);
2094 extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_software_single_step_ftype *software_single_step);
2095 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SOFTWARE_SINGLE_STEP)
2096 #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP"
2097 #endif
2098 #if !defined (SOFTWARE_SINGLE_STEP)
2099 #define SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p) (gdbarch_software_single_step (current_gdbarch, sig, insert_breakpoints_p))
2100 #endif
2101
2102 /* FIXME: cagney/2003-08-28: Need to find a better way of selecting the
2103    disassembler.  Perhaphs objdump can handle it? */
2104
2105 typedef int (gdbarch_print_insn_ftype) (bfd_vma vma, struct disassemble_info *info);
2106 extern int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, struct disassemble_info *info);
2107 extern void set_gdbarch_print_insn (struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn);
2108 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_PRINT_INSN)
2109 #error "Non multi-arch definition of TARGET_PRINT_INSN"
2110 #endif
2111 #if !defined (TARGET_PRINT_INSN)
2112 #define TARGET_PRINT_INSN(vma, info) (gdbarch_print_insn (current_gdbarch, vma, info))
2113 #endif
2114
2115 typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (CORE_ADDR pc);
2116 extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc);
2117 extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code);
2118 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SKIP_TRAMPOLINE_CODE)
2119 #error "Non multi-arch definition of SKIP_TRAMPOLINE_CODE"
2120 #endif
2121 #if !defined (SKIP_TRAMPOLINE_CODE)
2122 #define SKIP_TRAMPOLINE_CODE(pc) (gdbarch_skip_trampoline_code (current_gdbarch, pc))
2123 #endif
2124
2125 /* If IN_SOLIB_DYNSYM_RESOLVE_CODE returns true, and SKIP_SOLIB_RESOLVER
2126    evaluates non-zero, this is the address where the debugger will place
2127    a step-resume breakpoint to get us past the dynamic linker. */
2128
2129 typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc);
2130 extern CORE_ADDR gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc);
2131 extern void set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver);
2132
2133 /* For SVR4 shared libraries, each call goes through a small piece of
2134    trampoline code in the ".plt" section.  IN_SOLIB_CALL_TRAMPOLINE evaluates
2135    to nonzero if we are currently stopped in one of these. */
2136
2137 typedef int (gdbarch_in_solib_call_trampoline_ftype) (CORE_ADDR pc, char *name);
2138 extern int gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
2139 extern void set_gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline);
2140 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (IN_SOLIB_CALL_TRAMPOLINE)
2141 #error "Non multi-arch definition of IN_SOLIB_CALL_TRAMPOLINE"
2142 #endif
2143 #if !defined (IN_SOLIB_CALL_TRAMPOLINE)
2144 #define IN_SOLIB_CALL_TRAMPOLINE(pc, name) (gdbarch_in_solib_call_trampoline (current_gdbarch, pc, name))
2145 #endif
2146
2147 /* Some systems also have trampoline code for returning from shared libs. */
2148
2149 typedef int (gdbarch_in_solib_return_trampoline_ftype) (CORE_ADDR pc, char *name);
2150 extern int gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
2151 extern void set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline);
2152 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (IN_SOLIB_RETURN_TRAMPOLINE)
2153 #error "Non multi-arch definition of IN_SOLIB_RETURN_TRAMPOLINE"
2154 #endif
2155 #if !defined (IN_SOLIB_RETURN_TRAMPOLINE)
2156 #define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) (gdbarch_in_solib_return_trampoline (current_gdbarch, pc, name))
2157 #endif
2158
2159 /* Sigtramp is a routine that the kernel calls (which then calls the
2160    signal handler).  On most machines it is a library routine that is
2161    linked into the executable.
2162   
2163    This macro, given a program counter value and the name of the
2164    function in which that PC resides (which can be null if the name is
2165    not known), returns nonzero if the PC and name show that we are in
2166    sigtramp.
2167   
2168    On most machines just see if the name is sigtramp (and if we have
2169    no name, assume we are not in sigtramp).
2170   
2171    FIXME: cagney/2002-04-21: The function find_pc_partial_function
2172    calls find_pc_sect_partial_function() which calls PC_IN_SIGTRAMP.
2173    This means PC_IN_SIGTRAMP function can't be implemented by doing its
2174    own local NAME lookup.
2175   
2176    FIXME: cagney/2002-04-21: PC_IN_SIGTRAMP is something of a mess.
2177    Some code also depends on SIGTRAMP_START and SIGTRAMP_END but other
2178    does not. */
2179
2180 typedef int (gdbarch_pc_in_sigtramp_ftype) (CORE_ADDR pc, char *name);
2181 extern int gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
2182 extern void set_gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, gdbarch_pc_in_sigtramp_ftype *pc_in_sigtramp);
2183 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PC_IN_SIGTRAMP)
2184 #error "Non multi-arch definition of PC_IN_SIGTRAMP"
2185 #endif
2186 #if !defined (PC_IN_SIGTRAMP)
2187 #define PC_IN_SIGTRAMP(pc, name) (gdbarch_pc_in_sigtramp (current_gdbarch, pc, name))
2188 #endif
2189
2190 #if defined (SIGTRAMP_START)
2191 /* Legacy for systems yet to multi-arch SIGTRAMP_START */
2192 #if !defined (SIGTRAMP_START_P)
2193 #define SIGTRAMP_START_P() (1)
2194 #endif
2195 #endif
2196
2197 extern int gdbarch_sigtramp_start_p (struct gdbarch *gdbarch);
2198 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_START_P)
2199 #error "Non multi-arch definition of SIGTRAMP_START"
2200 #endif
2201 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SIGTRAMP_START_P)
2202 #define SIGTRAMP_START_P() (gdbarch_sigtramp_start_p (current_gdbarch))
2203 #endif
2204
2205 typedef CORE_ADDR (gdbarch_sigtramp_start_ftype) (CORE_ADDR pc);
2206 extern CORE_ADDR gdbarch_sigtramp_start (struct gdbarch *gdbarch, CORE_ADDR pc);
2207 extern void set_gdbarch_sigtramp_start (struct gdbarch *gdbarch, gdbarch_sigtramp_start_ftype *sigtramp_start);
2208 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_START)
2209 #error "Non multi-arch definition of SIGTRAMP_START"
2210 #endif
2211 #if !defined (SIGTRAMP_START)
2212 #define SIGTRAMP_START(pc) (gdbarch_sigtramp_start (current_gdbarch, pc))
2213 #endif
2214
2215 #if defined (SIGTRAMP_END)
2216 /* Legacy for systems yet to multi-arch SIGTRAMP_END */
2217 #if !defined (SIGTRAMP_END_P)
2218 #define SIGTRAMP_END_P() (1)
2219 #endif
2220 #endif
2221
2222 extern int gdbarch_sigtramp_end_p (struct gdbarch *gdbarch);
2223 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_END_P)
2224 #error "Non multi-arch definition of SIGTRAMP_END"
2225 #endif
2226 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SIGTRAMP_END_P)
2227 #define SIGTRAMP_END_P() (gdbarch_sigtramp_end_p (current_gdbarch))
2228 #endif
2229
2230 typedef CORE_ADDR (gdbarch_sigtramp_end_ftype) (CORE_ADDR pc);
2231 extern CORE_ADDR gdbarch_sigtramp_end (struct gdbarch *gdbarch, CORE_ADDR pc);
2232 extern void set_gdbarch_sigtramp_end (struct gdbarch *gdbarch, gdbarch_sigtramp_end_ftype *sigtramp_end);
2233 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_END)
2234 #error "Non multi-arch definition of SIGTRAMP_END"
2235 #endif
2236 #if !defined (SIGTRAMP_END)
2237 #define SIGTRAMP_END(pc) (gdbarch_sigtramp_end (current_gdbarch, pc))
2238 #endif
2239
2240 /* A target might have problems with watchpoints as soon as the stack
2241    frame of the current function has been destroyed.  This mostly happens
2242    as the first action in a funtion's epilogue.  in_function_epilogue_p()
2243    is defined to return a non-zero value if either the given addr is one
2244    instruction after the stack destroying instruction up to the trailing
2245    return instruction or if we can figure out that the stack frame has
2246    already been invalidated regardless of the value of addr.  Targets
2247    which don't suffer from that problem could just let this functionality
2248    untouched. */
2249
2250 typedef int (gdbarch_in_function_epilogue_p_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr);
2251 extern int gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr);
2252 extern void set_gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p);
2253
2254 /* Given a vector of command-line arguments, return a newly allocated
2255    string which, when passed to the create_inferior function, will be
2256    parsed (on Unix systems, by the shell) to yield the same vector.
2257    This function should call error() if the argument vector is not
2258    representable for this target or if this target does not support
2259    command-line arguments.
2260    ARGC is the number of elements in the vector.
2261    ARGV is an array of strings, one per argument. */
2262
2263 typedef char * (gdbarch_construct_inferior_arguments_ftype) (struct gdbarch *gdbarch, int argc, char **argv);
2264 extern char * gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv);
2265 extern void set_gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments);
2266
2267 typedef void (gdbarch_elf_make_msymbol_special_ftype) (asymbol *sym, struct minimal_symbol *msym);
2268 extern void gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, asymbol *sym, struct minimal_symbol *msym);
2269 extern void set_gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special);
2270 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ELF_MAKE_MSYMBOL_SPECIAL)
2271 #error "Non multi-arch definition of ELF_MAKE_MSYMBOL_SPECIAL"
2272 #endif
2273 #if !defined (ELF_MAKE_MSYMBOL_SPECIAL)
2274 #define ELF_MAKE_MSYMBOL_SPECIAL(sym, msym) (gdbarch_elf_make_msymbol_special (current_gdbarch, sym, msym))
2275 #endif
2276
2277 typedef void (gdbarch_coff_make_msymbol_special_ftype) (int val, struct minimal_symbol *msym);
2278 extern void gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, int val, struct minimal_symbol *msym);
2279 extern void set_gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special);
2280 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (COFF_MAKE_MSYMBOL_SPECIAL)
2281 #error "Non multi-arch definition of COFF_MAKE_MSYMBOL_SPECIAL"
2282 #endif
2283 #if !defined (COFF_MAKE_MSYMBOL_SPECIAL)
2284 #define COFF_MAKE_MSYMBOL_SPECIAL(val, msym) (gdbarch_coff_make_msymbol_special (current_gdbarch, val, msym))
2285 #endif
2286
2287 extern const char * gdbarch_name_of_malloc (struct gdbarch *gdbarch);
2288 extern void set_gdbarch_name_of_malloc (struct gdbarch *gdbarch, const char * name_of_malloc);
2289 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NAME_OF_MALLOC)
2290 #error "Non multi-arch definition of NAME_OF_MALLOC"
2291 #endif
2292 #if !defined (NAME_OF_MALLOC)
2293 #define NAME_OF_MALLOC (gdbarch_name_of_malloc (current_gdbarch))
2294 #endif
2295
2296 extern int gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch);
2297 extern void set_gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch, int cannot_step_breakpoint);
2298 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CANNOT_STEP_BREAKPOINT)
2299 #error "Non multi-arch definition of CANNOT_STEP_BREAKPOINT"
2300 #endif
2301 #if !defined (CANNOT_STEP_BREAKPOINT)
2302 #define CANNOT_STEP_BREAKPOINT (gdbarch_cannot_step_breakpoint (current_gdbarch))
2303 #endif
2304
2305 extern int gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch);
2306 extern void set_gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch, int have_nonsteppable_watchpoint);
2307 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (HAVE_NONSTEPPABLE_WATCHPOINT)
2308 #error "Non multi-arch definition of HAVE_NONSTEPPABLE_WATCHPOINT"
2309 #endif
2310 #if !defined (HAVE_NONSTEPPABLE_WATCHPOINT)
2311 #define HAVE_NONSTEPPABLE_WATCHPOINT (gdbarch_have_nonsteppable_watchpoint (current_gdbarch))
2312 #endif
2313
2314 #if defined (ADDRESS_CLASS_TYPE_FLAGS)
2315 /* Legacy for systems yet to multi-arch ADDRESS_CLASS_TYPE_FLAGS */
2316 #if !defined (ADDRESS_CLASS_TYPE_FLAGS_P)
2317 #define ADDRESS_CLASS_TYPE_FLAGS_P() (1)
2318 #endif
2319 #endif
2320
2321 extern int gdbarch_address_class_type_flags_p (struct gdbarch *gdbarch);
2322 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDRESS_CLASS_TYPE_FLAGS_P)
2323 #error "Non multi-arch definition of ADDRESS_CLASS_TYPE_FLAGS"
2324 #endif
2325 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (ADDRESS_CLASS_TYPE_FLAGS_P)
2326 #define ADDRESS_CLASS_TYPE_FLAGS_P() (gdbarch_address_class_type_flags_p (current_gdbarch))
2327 #endif
2328
2329 typedef int (gdbarch_address_class_type_flags_ftype) (int byte_size, int dwarf2_addr_class);
2330 extern int gdbarch_address_class_type_flags (struct gdbarch *gdbarch, int byte_size, int dwarf2_addr_class);
2331 extern void set_gdbarch_address_class_type_flags (struct gdbarch *gdbarch, gdbarch_address_class_type_flags_ftype *address_class_type_flags);
2332 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDRESS_CLASS_TYPE_FLAGS)
2333 #error "Non multi-arch definition of ADDRESS_CLASS_TYPE_FLAGS"
2334 #endif
2335 #if !defined (ADDRESS_CLASS_TYPE_FLAGS)
2336 #define ADDRESS_CLASS_TYPE_FLAGS(byte_size, dwarf2_addr_class) (gdbarch_address_class_type_flags (current_gdbarch, byte_size, dwarf2_addr_class))
2337 #endif
2338
2339 extern int gdbarch_address_class_type_flags_to_name_p (struct gdbarch *gdbarch);
2340
2341 typedef const char * (gdbarch_address_class_type_flags_to_name_ftype) (struct gdbarch *gdbarch, int type_flags);
2342 extern const char * gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags);
2343 extern void set_gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch, gdbarch_address_class_type_flags_to_name_ftype *address_class_type_flags_to_name);
2344
2345 extern int gdbarch_address_class_name_to_type_flags_p (struct gdbarch *gdbarch);
2346
2347 typedef int (gdbarch_address_class_name_to_type_flags_ftype) (struct gdbarch *gdbarch, const char *name, int *type_flags_ptr);
2348 extern int gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, const char *name, int *type_flags_ptr);
2349 extern void set_gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, gdbarch_address_class_name_to_type_flags_ftype *address_class_name_to_type_flags);
2350
2351 /* Is a register in a group */
2352
2353 typedef int (gdbarch_register_reggroup_p_ftype) (struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup);
2354 extern int gdbarch_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup);
2355 extern void set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch, gdbarch_register_reggroup_p_ftype *register_reggroup_p);
2356
2357 /* Fetch the pointer to the ith function argument. */
2358
2359 #if defined (FETCH_POINTER_ARGUMENT)
2360 /* Legacy for systems yet to multi-arch FETCH_POINTER_ARGUMENT */
2361 #if !defined (FETCH_POINTER_ARGUMENT_P)
2362 #define FETCH_POINTER_ARGUMENT_P() (1)
2363 #endif
2364 #endif
2365
2366 extern int gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch);
2367 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_POINTER_ARGUMENT_P)
2368 #error "Non multi-arch definition of FETCH_POINTER_ARGUMENT"
2369 #endif
2370 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FETCH_POINTER_ARGUMENT_P)
2371 #define FETCH_POINTER_ARGUMENT_P() (gdbarch_fetch_pointer_argument_p (current_gdbarch))
2372 #endif
2373
2374 typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (struct frame_info *frame, int argi, struct type *type);
2375 extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, struct frame_info *frame, int argi, struct type *type);
2376 extern void set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument);
2377 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_POINTER_ARGUMENT)
2378 #error "Non multi-arch definition of FETCH_POINTER_ARGUMENT"
2379 #endif
2380 #if !defined (FETCH_POINTER_ARGUMENT)
2381 #define FETCH_POINTER_ARGUMENT(frame, argi, type) (gdbarch_fetch_pointer_argument (current_gdbarch, frame, argi, type))
2382 #endif
2383
2384 /* Return the appropriate register set for a core file section with
2385    name SECT_NAME and size SECT_SIZE. */
2386
2387 extern int gdbarch_regset_from_core_section_p (struct gdbarch *gdbarch);
2388
2389 typedef const struct regset * (gdbarch_regset_from_core_section_ftype) (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size);
2390 extern const struct regset * gdbarch_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size);
2391 extern void set_gdbarch_regset_from_core_section (struct gdbarch *gdbarch, gdbarch_regset_from_core_section_ftype *regset_from_core_section);
2392
2393 extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
2394
2395
2396 /* Mechanism for co-ordinating the selection of a specific
2397    architecture.
2398
2399    GDB targets (*-tdep.c) can register an interest in a specific
2400    architecture.  Other GDB components can register a need to maintain
2401    per-architecture data.
2402
2403    The mechanisms below ensures that there is only a loose connection
2404    between the set-architecture command and the various GDB
2405    components.  Each component can independently register their need
2406    to maintain architecture specific data with gdbarch.
2407
2408    Pragmatics:
2409
2410    Previously, a single TARGET_ARCHITECTURE_HOOK was provided.  It
2411    didn't scale.
2412
2413    The more traditional mega-struct containing architecture specific
2414    data for all the various GDB components was also considered.  Since
2415    GDB is built from a variable number of (fairly independent)
2416    components it was determined that the global aproach was not
2417    applicable. */
2418
2419
2420 /* Register a new architectural family with GDB.
2421
2422    Register support for the specified ARCHITECTURE with GDB.  When
2423    gdbarch determines that the specified architecture has been
2424    selected, the corresponding INIT function is called.
2425
2426    --
2427
2428    The INIT function takes two parameters: INFO which contains the
2429    information available to gdbarch about the (possibly new)
2430    architecture; ARCHES which is a list of the previously created
2431    ``struct gdbarch'' for this architecture.
2432
2433    The INFO parameter is, as far as possible, be pre-initialized with
2434    information obtained from INFO.ABFD or the previously selected
2435    architecture.
2436
2437    The ARCHES parameter is a linked list (sorted most recently used)
2438    of all the previously created architures for this architecture
2439    family.  The (possibly NULL) ARCHES->gdbarch can used to access
2440    values from the previously selected architecture for this
2441    architecture family.  The global ``current_gdbarch'' shall not be
2442    used.
2443
2444    The INIT function shall return any of: NULL - indicating that it
2445    doesn't recognize the selected architecture; an existing ``struct
2446    gdbarch'' from the ARCHES list - indicating that the new
2447    architecture is just a synonym for an earlier architecture (see
2448    gdbarch_list_lookup_by_info()); a newly created ``struct gdbarch''
2449    - that describes the selected architecture (see gdbarch_alloc()).
2450
2451    The DUMP_TDEP function shall print out all target specific values.
2452    Care should be taken to ensure that the function works in both the
2453    multi-arch and non- multi-arch cases. */
2454
2455 struct gdbarch_list
2456 {
2457   struct gdbarch *gdbarch;
2458   struct gdbarch_list *next;
2459 };
2460
2461 struct gdbarch_info
2462 {
2463   /* Use default: NULL (ZERO). */
2464   const struct bfd_arch_info *bfd_arch_info;
2465
2466   /* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO).  */
2467   int byte_order;
2468
2469   /* Use default: NULL (ZERO). */
2470   bfd *abfd;
2471
2472   /* Use default: NULL (ZERO). */
2473   struct gdbarch_tdep_info *tdep_info;
2474
2475   /* Use default: GDB_OSABI_UNINITIALIZED (-1).  */
2476   enum gdb_osabi osabi;
2477 };
2478
2479 typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
2480 typedef void (gdbarch_dump_tdep_ftype) (struct gdbarch *gdbarch, struct ui_file *file);
2481
2482 /* DEPRECATED - use gdbarch_register() */
2483 extern void register_gdbarch_init (enum bfd_architecture architecture, gdbarch_init_ftype *);
2484
2485 extern void gdbarch_register (enum bfd_architecture architecture,
2486                               gdbarch_init_ftype *,
2487                               gdbarch_dump_tdep_ftype *);
2488
2489
2490 /* Return a freshly allocated, NULL terminated, array of the valid
2491    architecture names.  Since architectures are registered during the
2492    _initialize phase this function only returns useful information
2493    once initialization has been completed. */
2494
2495 extern const char **gdbarch_printable_names (void);
2496
2497
2498 /* Helper function.  Search the list of ARCHES for a GDBARCH that
2499    matches the information provided by INFO. */
2500
2501 extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *arches,  const struct gdbarch_info *info);
2502
2503
2504 /* Helper function.  Create a preliminary ``struct gdbarch''.  Perform
2505    basic initialization using values obtained from the INFO andTDEP
2506    parameters.  set_gdbarch_*() functions are called to complete the
2507    initialization of the object. */
2508
2509 extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep);
2510
2511
2512 /* Helper function.  Free a partially-constructed ``struct gdbarch''.
2513    It is assumed that the caller freeds the ``struct
2514    gdbarch_tdep''. */
2515
2516 extern void gdbarch_free (struct gdbarch *);
2517
2518
2519 /* Helper function.  Allocate memory from the ``struct gdbarch''
2520    obstack.  The memory is freed when the corresponding architecture
2521    is also freed.  */
2522
2523 extern void *gdbarch_obstack_zalloc (struct gdbarch *gdbarch, long size);
2524 #define GDBARCH_OBSTACK_CALLOC(GDBARCH, NR, TYPE) ((TYPE *) gdbarch_obstack_zalloc ((GDBARCH), (NR) * sizeof (TYPE)))
2525 #define GDBARCH_OBSTACK_ZALLOC(GDBARCH, TYPE) ((TYPE *) gdbarch_obstack_zalloc ((GDBARCH), sizeof (TYPE)))
2526
2527
2528 /* Helper function. Force an update of the current architecture.
2529
2530    The actual architecture selected is determined by INFO, ``(gdb) set
2531    architecture'' et.al., the existing architecture and BFD's default
2532    architecture.  INFO should be initialized to zero and then selected
2533    fields should be updated.
2534
2535    Returns non-zero if the update succeeds */
2536
2537 extern int gdbarch_update_p (struct gdbarch_info info);
2538
2539
2540 /* Helper function.  Find an architecture matching info.
2541
2542    INFO should be initialized using gdbarch_info_init, relevant fields
2543    set, and then finished using gdbarch_info_fill.
2544
2545    Returns the corresponding architecture, or NULL if no matching
2546    architecture was found.  "current_gdbarch" is not updated.  */
2547
2548 extern struct gdbarch *gdbarch_find_by_info (struct gdbarch_info info);
2549
2550
2551 /* Helper function.  Set the global "current_gdbarch" to "gdbarch".
2552
2553    FIXME: kettenis/20031124: Of the functions that follow, only
2554    gdbarch_from_bfd is supposed to survive.  The others will
2555    dissappear since in the future GDB will (hopefully) be truly
2556    multi-arch.  However, for now we're still stuck with the concept of
2557    a single active architecture.  */
2558
2559 extern void deprecated_current_gdbarch_select_hack (struct gdbarch *gdbarch);
2560
2561
2562 /* Register per-architecture data-pointer.
2563
2564    Reserve space for a per-architecture data-pointer.  An identifier
2565    for the reserved data-pointer is returned.  That identifer should
2566    be saved in a local static variable.
2567
2568    The per-architecture data-pointer is either initialized explicitly
2569    (set_gdbarch_data()) or implicitly (by INIT() via a call to
2570    gdbarch_data()).
2571
2572    Memory for the per-architecture data shall be allocated using
2573    gdbarch_obstack_zalloc.  That memory will be deleted when the
2574    corresponding architecture object is deleted.
2575
2576    When a previously created architecture is re-selected, the
2577    per-architecture data-pointer for that previous architecture is
2578    restored.  INIT() is not re-called.
2579
2580    Multiple registrarants for any architecture are allowed (and
2581    strongly encouraged).  */
2582
2583 struct gdbarch_data;
2584
2585 typedef void *(gdbarch_data_init_ftype) (struct gdbarch *gdbarch);
2586 extern struct gdbarch_data *register_gdbarch_data (gdbarch_data_init_ftype *init);
2587 extern void set_gdbarch_data (struct gdbarch *gdbarch,
2588                               struct gdbarch_data *data,
2589                               void *pointer);
2590
2591 extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
2592
2593
2594
2595 /* Register per-architecture memory region.
2596
2597    Provide a memory-region swap mechanism.  Per-architecture memory
2598    region are created.  These memory regions are swapped whenever the
2599    architecture is changed.  For a new architecture, the memory region
2600    is initialized with zero (0) and the INIT function is called.
2601
2602    Memory regions are swapped / initialized in the order that they are
2603    registered.  NULL DATA and/or INIT values can be specified.
2604
2605    New code should use register_gdbarch_data(). */
2606
2607 typedef void (gdbarch_swap_ftype) (void);
2608 extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_ftype *init);
2609 #define REGISTER_GDBARCH_SWAP(VAR) register_gdbarch_swap (&(VAR), sizeof ((VAR)), NULL)
2610
2611
2612
2613 /* Set the dynamic target-system-dependent parameters (architecture,
2614    byte-order, ...) using information found in the BFD */
2615
2616 extern void set_gdbarch_from_file (bfd *);
2617
2618
2619 /* Initialize the current architecture to the "first" one we find on
2620    our list.  */
2621
2622 extern void initialize_current_architecture (void);
2623
2624 /* gdbarch trace variable */
2625 extern int gdbarch_debug;
2626
2627 extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
2628
2629 #endif
This page took 0.164633 seconds and 4 git commands to generate.