2004-01-17 Andrew Cagney <cagney@redhat.com>
[external/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_FRAME_INIT_SAVED_REGS)
1540 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_INIT_SAVED_REGS */
1541 #if !defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
1542 #define DEPRECATED_FRAME_INIT_SAVED_REGS_P() (1)
1543 #endif
1544 #endif
1545
1546 extern int gdbarch_deprecated_frame_init_saved_regs_p (struct gdbarch *gdbarch);
1547 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
1548 #error "Non multi-arch definition of DEPRECATED_FRAME_INIT_SAVED_REGS"
1549 #endif
1550 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_INIT_SAVED_REGS_P)
1551 #define DEPRECATED_FRAME_INIT_SAVED_REGS_P() (gdbarch_deprecated_frame_init_saved_regs_p (current_gdbarch))
1552 #endif
1553
1554 typedef void (gdbarch_deprecated_frame_init_saved_regs_ftype) (struct frame_info *frame);
1555 extern void gdbarch_deprecated_frame_init_saved_regs (struct gdbarch *gdbarch, struct frame_info *frame);
1556 extern void set_gdbarch_deprecated_frame_init_saved_regs (struct gdbarch *gdbarch, gdbarch_deprecated_frame_init_saved_regs_ftype *deprecated_frame_init_saved_regs);
1557 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
1558 #error "Non multi-arch definition of DEPRECATED_FRAME_INIT_SAVED_REGS"
1559 #endif
1560 #if !defined (DEPRECATED_FRAME_INIT_SAVED_REGS)
1561 #define DEPRECATED_FRAME_INIT_SAVED_REGS(frame) (gdbarch_deprecated_frame_init_saved_regs (current_gdbarch, frame))
1562 #endif
1563
1564 #if defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
1565 /* Legacy for systems yet to multi-arch DEPRECATED_INIT_EXTRA_FRAME_INFO */
1566 #if !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
1567 #define DEPRECATED_INIT_EXTRA_FRAME_INFO_P() (1)
1568 #endif
1569 #endif
1570
1571 extern int gdbarch_deprecated_init_extra_frame_info_p (struct gdbarch *gdbarch);
1572 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
1573 #error "Non multi-arch definition of DEPRECATED_INIT_EXTRA_FRAME_INFO"
1574 #endif
1575 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO_P)
1576 #define DEPRECATED_INIT_EXTRA_FRAME_INFO_P() (gdbarch_deprecated_init_extra_frame_info_p (current_gdbarch))
1577 #endif
1578
1579 typedef void (gdbarch_deprecated_init_extra_frame_info_ftype) (int fromleaf, struct frame_info *frame);
1580 extern void gdbarch_deprecated_init_extra_frame_info (struct gdbarch *gdbarch, int fromleaf, struct frame_info *frame);
1581 extern void set_gdbarch_deprecated_init_extra_frame_info (struct gdbarch *gdbarch, gdbarch_deprecated_init_extra_frame_info_ftype *deprecated_init_extra_frame_info);
1582 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
1583 #error "Non multi-arch definition of DEPRECATED_INIT_EXTRA_FRAME_INFO"
1584 #endif
1585 #if !defined (DEPRECATED_INIT_EXTRA_FRAME_INFO)
1586 #define DEPRECATED_INIT_EXTRA_FRAME_INFO(fromleaf, frame) (gdbarch_deprecated_init_extra_frame_info (current_gdbarch, fromleaf, frame))
1587 #endif
1588
1589 typedef CORE_ADDR (gdbarch_skip_prologue_ftype) (CORE_ADDR ip);
1590 extern CORE_ADDR gdbarch_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR ip);
1591 extern void set_gdbarch_skip_prologue (struct gdbarch *gdbarch, gdbarch_skip_prologue_ftype *skip_prologue);
1592 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SKIP_PROLOGUE)
1593 #error "Non multi-arch definition of SKIP_PROLOGUE"
1594 #endif
1595 #if !defined (SKIP_PROLOGUE)
1596 #define SKIP_PROLOGUE(ip) (gdbarch_skip_prologue (current_gdbarch, ip))
1597 #endif
1598
1599 typedef int (gdbarch_prologue_frameless_p_ftype) (CORE_ADDR ip);
1600 extern int gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, CORE_ADDR ip);
1601 extern void set_gdbarch_prologue_frameless_p (struct gdbarch *gdbarch, gdbarch_prologue_frameless_p_ftype *prologue_frameless_p);
1602 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PROLOGUE_FRAMELESS_P)
1603 #error "Non multi-arch definition of PROLOGUE_FRAMELESS_P"
1604 #endif
1605 #if !defined (PROLOGUE_FRAMELESS_P)
1606 #define PROLOGUE_FRAMELESS_P(ip) (gdbarch_prologue_frameless_p (current_gdbarch, ip))
1607 #endif
1608
1609 typedef int (gdbarch_inner_than_ftype) (CORE_ADDR lhs, CORE_ADDR rhs);
1610 extern int gdbarch_inner_than (struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs);
1611 extern void set_gdbarch_inner_than (struct gdbarch *gdbarch, gdbarch_inner_than_ftype *inner_than);
1612 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (INNER_THAN)
1613 #error "Non multi-arch definition of INNER_THAN"
1614 #endif
1615 #if !defined (INNER_THAN)
1616 #define INNER_THAN(lhs, rhs) (gdbarch_inner_than (current_gdbarch, lhs, rhs))
1617 #endif
1618
1619 typedef const unsigned char * (gdbarch_breakpoint_from_pc_ftype) (CORE_ADDR *pcptr, int *lenptr);
1620 extern const unsigned char * gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr, int *lenptr);
1621 extern void set_gdbarch_breakpoint_from_pc (struct gdbarch *gdbarch, gdbarch_breakpoint_from_pc_ftype *breakpoint_from_pc);
1622 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (BREAKPOINT_FROM_PC)
1623 #error "Non multi-arch definition of BREAKPOINT_FROM_PC"
1624 #endif
1625 #if !defined (BREAKPOINT_FROM_PC)
1626 #define BREAKPOINT_FROM_PC(pcptr, lenptr) (gdbarch_breakpoint_from_pc (current_gdbarch, pcptr, lenptr))
1627 #endif
1628
1629 extern int gdbarch_adjust_breakpoint_address_p (struct gdbarch *gdbarch);
1630
1631 typedef CORE_ADDR (gdbarch_adjust_breakpoint_address_ftype) (struct gdbarch *gdbarch, CORE_ADDR bpaddr);
1632 extern CORE_ADDR gdbarch_adjust_breakpoint_address (struct gdbarch *gdbarch, CORE_ADDR bpaddr);
1633 extern void set_gdbarch_adjust_breakpoint_address (struct gdbarch *gdbarch, gdbarch_adjust_breakpoint_address_ftype *adjust_breakpoint_address);
1634
1635 typedef int (gdbarch_memory_insert_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
1636 extern int gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
1637 extern void set_gdbarch_memory_insert_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_insert_breakpoint_ftype *memory_insert_breakpoint);
1638 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (MEMORY_INSERT_BREAKPOINT)
1639 #error "Non multi-arch definition of MEMORY_INSERT_BREAKPOINT"
1640 #endif
1641 #if !defined (MEMORY_INSERT_BREAKPOINT)
1642 #define MEMORY_INSERT_BREAKPOINT(addr, contents_cache) (gdbarch_memory_insert_breakpoint (current_gdbarch, addr, contents_cache))
1643 #endif
1644
1645 typedef int (gdbarch_memory_remove_breakpoint_ftype) (CORE_ADDR addr, char *contents_cache);
1646 extern int gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, CORE_ADDR addr, char *contents_cache);
1647 extern void set_gdbarch_memory_remove_breakpoint (struct gdbarch *gdbarch, gdbarch_memory_remove_breakpoint_ftype *memory_remove_breakpoint);
1648 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (MEMORY_REMOVE_BREAKPOINT)
1649 #error "Non multi-arch definition of MEMORY_REMOVE_BREAKPOINT"
1650 #endif
1651 #if !defined (MEMORY_REMOVE_BREAKPOINT)
1652 #define MEMORY_REMOVE_BREAKPOINT(addr, contents_cache) (gdbarch_memory_remove_breakpoint (current_gdbarch, addr, contents_cache))
1653 #endif
1654
1655 extern CORE_ADDR gdbarch_decr_pc_after_break (struct gdbarch *gdbarch);
1656 extern void set_gdbarch_decr_pc_after_break (struct gdbarch *gdbarch, CORE_ADDR decr_pc_after_break);
1657 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DECR_PC_AFTER_BREAK)
1658 #error "Non multi-arch definition of DECR_PC_AFTER_BREAK"
1659 #endif
1660 #if !defined (DECR_PC_AFTER_BREAK)
1661 #define DECR_PC_AFTER_BREAK (gdbarch_decr_pc_after_break (current_gdbarch))
1662 #endif
1663
1664 extern CORE_ADDR gdbarch_function_start_offset (struct gdbarch *gdbarch);
1665 extern void set_gdbarch_function_start_offset (struct gdbarch *gdbarch, CORE_ADDR function_start_offset);
1666 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FUNCTION_START_OFFSET)
1667 #error "Non multi-arch definition of FUNCTION_START_OFFSET"
1668 #endif
1669 #if !defined (FUNCTION_START_OFFSET)
1670 #define FUNCTION_START_OFFSET (gdbarch_function_start_offset (current_gdbarch))
1671 #endif
1672
1673 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);
1674 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);
1675 extern void set_gdbarch_remote_translate_xfer_address (struct gdbarch *gdbarch, gdbarch_remote_translate_xfer_address_ftype *remote_translate_xfer_address);
1676
1677 extern CORE_ADDR gdbarch_frame_args_skip (struct gdbarch *gdbarch);
1678 extern void set_gdbarch_frame_args_skip (struct gdbarch *gdbarch, CORE_ADDR frame_args_skip);
1679 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_ARGS_SKIP)
1680 #error "Non multi-arch definition of FRAME_ARGS_SKIP"
1681 #endif
1682 #if !defined (FRAME_ARGS_SKIP)
1683 #define FRAME_ARGS_SKIP (gdbarch_frame_args_skip (current_gdbarch))
1684 #endif
1685
1686 typedef int (gdbarch_frameless_function_invocation_ftype) (struct frame_info *fi);
1687 extern int gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, struct frame_info *fi);
1688 extern void set_gdbarch_frameless_function_invocation (struct gdbarch *gdbarch, gdbarch_frameless_function_invocation_ftype *frameless_function_invocation);
1689 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAMELESS_FUNCTION_INVOCATION)
1690 #error "Non multi-arch definition of FRAMELESS_FUNCTION_INVOCATION"
1691 #endif
1692 #if !defined (FRAMELESS_FUNCTION_INVOCATION)
1693 #define FRAMELESS_FUNCTION_INVOCATION(fi) (gdbarch_frameless_function_invocation (current_gdbarch, fi))
1694 #endif
1695
1696 #if defined (DEPRECATED_FRAME_CHAIN)
1697 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_CHAIN */
1698 #if !defined (DEPRECATED_FRAME_CHAIN_P)
1699 #define DEPRECATED_FRAME_CHAIN_P() (1)
1700 #endif
1701 #endif
1702
1703 extern int gdbarch_deprecated_frame_chain_p (struct gdbarch *gdbarch);
1704 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_P)
1705 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN"
1706 #endif
1707 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_CHAIN_P)
1708 #define DEPRECATED_FRAME_CHAIN_P() (gdbarch_deprecated_frame_chain_p (current_gdbarch))
1709 #endif
1710
1711 typedef CORE_ADDR (gdbarch_deprecated_frame_chain_ftype) (struct frame_info *frame);
1712 extern CORE_ADDR gdbarch_deprecated_frame_chain (struct gdbarch *gdbarch, struct frame_info *frame);
1713 extern void set_gdbarch_deprecated_frame_chain (struct gdbarch *gdbarch, gdbarch_deprecated_frame_chain_ftype *deprecated_frame_chain);
1714 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN)
1715 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN"
1716 #endif
1717 #if !defined (DEPRECATED_FRAME_CHAIN)
1718 #define DEPRECATED_FRAME_CHAIN(frame) (gdbarch_deprecated_frame_chain (current_gdbarch, frame))
1719 #endif
1720
1721 #if defined (DEPRECATED_FRAME_CHAIN_VALID)
1722 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_CHAIN_VALID */
1723 #if !defined (DEPRECATED_FRAME_CHAIN_VALID_P)
1724 #define DEPRECATED_FRAME_CHAIN_VALID_P() (1)
1725 #endif
1726 #endif
1727
1728 extern int gdbarch_deprecated_frame_chain_valid_p (struct gdbarch *gdbarch);
1729 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_VALID_P)
1730 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN_VALID"
1731 #endif
1732 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_CHAIN_VALID_P)
1733 #define DEPRECATED_FRAME_CHAIN_VALID_P() (gdbarch_deprecated_frame_chain_valid_p (current_gdbarch))
1734 #endif
1735
1736 typedef int (gdbarch_deprecated_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe);
1737 extern int gdbarch_deprecated_frame_chain_valid (struct gdbarch *gdbarch, CORE_ADDR chain, struct frame_info *thisframe);
1738 extern void set_gdbarch_deprecated_frame_chain_valid (struct gdbarch *gdbarch, gdbarch_deprecated_frame_chain_valid_ftype *deprecated_frame_chain_valid);
1739 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_CHAIN_VALID)
1740 #error "Non multi-arch definition of DEPRECATED_FRAME_CHAIN_VALID"
1741 #endif
1742 #if !defined (DEPRECATED_FRAME_CHAIN_VALID)
1743 #define DEPRECATED_FRAME_CHAIN_VALID(chain, thisframe) (gdbarch_deprecated_frame_chain_valid (current_gdbarch, chain, thisframe))
1744 #endif
1745
1746 /* DEPRECATED_FRAME_SAVED_PC has been replaced by UNWIND_PC.  Please
1747    note, per UNWIND_PC's doco, that while the two have similar
1748    interfaces they have very different underlying implementations. */
1749
1750 #if defined (DEPRECATED_FRAME_SAVED_PC)
1751 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_SAVED_PC */
1752 #if !defined (DEPRECATED_FRAME_SAVED_PC_P)
1753 #define DEPRECATED_FRAME_SAVED_PC_P() (1)
1754 #endif
1755 #endif
1756
1757 extern int gdbarch_deprecated_frame_saved_pc_p (struct gdbarch *gdbarch);
1758 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_SAVED_PC_P)
1759 #error "Non multi-arch definition of DEPRECATED_FRAME_SAVED_PC"
1760 #endif
1761 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_SAVED_PC_P)
1762 #define DEPRECATED_FRAME_SAVED_PC_P() (gdbarch_deprecated_frame_saved_pc_p (current_gdbarch))
1763 #endif
1764
1765 typedef CORE_ADDR (gdbarch_deprecated_frame_saved_pc_ftype) (struct frame_info *fi);
1766 extern CORE_ADDR gdbarch_deprecated_frame_saved_pc (struct gdbarch *gdbarch, struct frame_info *fi);
1767 extern void set_gdbarch_deprecated_frame_saved_pc (struct gdbarch *gdbarch, gdbarch_deprecated_frame_saved_pc_ftype *deprecated_frame_saved_pc);
1768 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_SAVED_PC)
1769 #error "Non multi-arch definition of DEPRECATED_FRAME_SAVED_PC"
1770 #endif
1771 #if !defined (DEPRECATED_FRAME_SAVED_PC)
1772 #define DEPRECATED_FRAME_SAVED_PC(fi) (gdbarch_deprecated_frame_saved_pc (current_gdbarch, fi))
1773 #endif
1774
1775 extern int gdbarch_unwind_pc_p (struct gdbarch *gdbarch);
1776
1777 typedef CORE_ADDR (gdbarch_unwind_pc_ftype) (struct gdbarch *gdbarch, struct frame_info *next_frame);
1778 extern CORE_ADDR gdbarch_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame);
1779 extern void set_gdbarch_unwind_pc (struct gdbarch *gdbarch, gdbarch_unwind_pc_ftype *unwind_pc);
1780
1781 extern int gdbarch_unwind_sp_p (struct gdbarch *gdbarch);
1782
1783 typedef CORE_ADDR (gdbarch_unwind_sp_ftype) (struct gdbarch *gdbarch, struct frame_info *next_frame);
1784 extern CORE_ADDR gdbarch_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame);
1785 extern void set_gdbarch_unwind_sp (struct gdbarch *gdbarch, gdbarch_unwind_sp_ftype *unwind_sp);
1786
1787 /* DEPRECATED_FRAME_ARGS_ADDRESS as been replaced by the per-frame
1788    frame-base.  Enable frame-base before frame-unwind. */
1789
1790 #if defined (DEPRECATED_FRAME_ARGS_ADDRESS)
1791 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_ARGS_ADDRESS */
1792 #if !defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
1793 #define DEPRECATED_FRAME_ARGS_ADDRESS_P() (1)
1794 #endif
1795 #endif
1796
1797 extern int gdbarch_deprecated_frame_args_address_p (struct gdbarch *gdbarch);
1798 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
1799 #error "Non multi-arch definition of DEPRECATED_FRAME_ARGS_ADDRESS"
1800 #endif
1801 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_ARGS_ADDRESS_P)
1802 #define DEPRECATED_FRAME_ARGS_ADDRESS_P() (gdbarch_deprecated_frame_args_address_p (current_gdbarch))
1803 #endif
1804
1805 typedef CORE_ADDR (gdbarch_deprecated_frame_args_address_ftype) (struct frame_info *fi);
1806 extern CORE_ADDR gdbarch_deprecated_frame_args_address (struct gdbarch *gdbarch, struct frame_info *fi);
1807 extern void set_gdbarch_deprecated_frame_args_address (struct gdbarch *gdbarch, gdbarch_deprecated_frame_args_address_ftype *deprecated_frame_args_address);
1808 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_ARGS_ADDRESS)
1809 #error "Non multi-arch definition of DEPRECATED_FRAME_ARGS_ADDRESS"
1810 #endif
1811 #if !defined (DEPRECATED_FRAME_ARGS_ADDRESS)
1812 #define DEPRECATED_FRAME_ARGS_ADDRESS(fi) (gdbarch_deprecated_frame_args_address (current_gdbarch, fi))
1813 #endif
1814
1815 /* DEPRECATED_FRAME_LOCALS_ADDRESS as been replaced by the per-frame
1816    frame-base.  Enable frame-base before frame-unwind. */
1817
1818 #if defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
1819 /* Legacy for systems yet to multi-arch DEPRECATED_FRAME_LOCALS_ADDRESS */
1820 #if !defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
1821 #define DEPRECATED_FRAME_LOCALS_ADDRESS_P() (1)
1822 #endif
1823 #endif
1824
1825 extern int gdbarch_deprecated_frame_locals_address_p (struct gdbarch *gdbarch);
1826 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
1827 #error "Non multi-arch definition of DEPRECATED_FRAME_LOCALS_ADDRESS"
1828 #endif
1829 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_FRAME_LOCALS_ADDRESS_P)
1830 #define DEPRECATED_FRAME_LOCALS_ADDRESS_P() (gdbarch_deprecated_frame_locals_address_p (current_gdbarch))
1831 #endif
1832
1833 typedef CORE_ADDR (gdbarch_deprecated_frame_locals_address_ftype) (struct frame_info *fi);
1834 extern CORE_ADDR gdbarch_deprecated_frame_locals_address (struct gdbarch *gdbarch, struct frame_info *fi);
1835 extern void set_gdbarch_deprecated_frame_locals_address (struct gdbarch *gdbarch, gdbarch_deprecated_frame_locals_address_ftype *deprecated_frame_locals_address);
1836 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
1837 #error "Non multi-arch definition of DEPRECATED_FRAME_LOCALS_ADDRESS"
1838 #endif
1839 #if !defined (DEPRECATED_FRAME_LOCALS_ADDRESS)
1840 #define DEPRECATED_FRAME_LOCALS_ADDRESS(fi) (gdbarch_deprecated_frame_locals_address (current_gdbarch, fi))
1841 #endif
1842
1843 #if defined (DEPRECATED_SAVED_PC_AFTER_CALL)
1844 /* Legacy for systems yet to multi-arch DEPRECATED_SAVED_PC_AFTER_CALL */
1845 #if !defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
1846 #define DEPRECATED_SAVED_PC_AFTER_CALL_P() (1)
1847 #endif
1848 #endif
1849
1850 extern int gdbarch_deprecated_saved_pc_after_call_p (struct gdbarch *gdbarch);
1851 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
1852 #error "Non multi-arch definition of DEPRECATED_SAVED_PC_AFTER_CALL"
1853 #endif
1854 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_SAVED_PC_AFTER_CALL_P)
1855 #define DEPRECATED_SAVED_PC_AFTER_CALL_P() (gdbarch_deprecated_saved_pc_after_call_p (current_gdbarch))
1856 #endif
1857
1858 typedef CORE_ADDR (gdbarch_deprecated_saved_pc_after_call_ftype) (struct frame_info *frame);
1859 extern CORE_ADDR gdbarch_deprecated_saved_pc_after_call (struct gdbarch *gdbarch, struct frame_info *frame);
1860 extern void set_gdbarch_deprecated_saved_pc_after_call (struct gdbarch *gdbarch, gdbarch_deprecated_saved_pc_after_call_ftype *deprecated_saved_pc_after_call);
1861 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_SAVED_PC_AFTER_CALL)
1862 #error "Non multi-arch definition of DEPRECATED_SAVED_PC_AFTER_CALL"
1863 #endif
1864 #if !defined (DEPRECATED_SAVED_PC_AFTER_CALL)
1865 #define DEPRECATED_SAVED_PC_AFTER_CALL(frame) (gdbarch_deprecated_saved_pc_after_call (current_gdbarch, frame))
1866 #endif
1867
1868 #if defined (FRAME_NUM_ARGS)
1869 /* Legacy for systems yet to multi-arch FRAME_NUM_ARGS */
1870 #if !defined (FRAME_NUM_ARGS_P)
1871 #define FRAME_NUM_ARGS_P() (1)
1872 #endif
1873 #endif
1874
1875 extern int gdbarch_frame_num_args_p (struct gdbarch *gdbarch);
1876 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_NUM_ARGS_P)
1877 #error "Non multi-arch definition of FRAME_NUM_ARGS"
1878 #endif
1879 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FRAME_NUM_ARGS_P)
1880 #define FRAME_NUM_ARGS_P() (gdbarch_frame_num_args_p (current_gdbarch))
1881 #endif
1882
1883 typedef int (gdbarch_frame_num_args_ftype) (struct frame_info *frame);
1884 extern int gdbarch_frame_num_args (struct gdbarch *gdbarch, struct frame_info *frame);
1885 extern void set_gdbarch_frame_num_args (struct gdbarch *gdbarch, gdbarch_frame_num_args_ftype *frame_num_args);
1886 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_NUM_ARGS)
1887 #error "Non multi-arch definition of FRAME_NUM_ARGS"
1888 #endif
1889 #if !defined (FRAME_NUM_ARGS)
1890 #define FRAME_NUM_ARGS(frame) (gdbarch_frame_num_args (current_gdbarch, frame))
1891 #endif
1892
1893 /* DEPRECATED_STACK_ALIGN has been replaced by an initial aligning call
1894    to frame_align and the requirement that methods such as
1895    push_dummy_call and frame_red_zone_size maintain correct stack/frame
1896    alignment. */
1897
1898 #if defined (DEPRECATED_STACK_ALIGN)
1899 /* Legacy for systems yet to multi-arch DEPRECATED_STACK_ALIGN */
1900 #if !defined (DEPRECATED_STACK_ALIGN_P)
1901 #define DEPRECATED_STACK_ALIGN_P() (1)
1902 #endif
1903 #endif
1904
1905 extern int gdbarch_deprecated_stack_align_p (struct gdbarch *gdbarch);
1906 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STACK_ALIGN_P)
1907 #error "Non multi-arch definition of DEPRECATED_STACK_ALIGN"
1908 #endif
1909 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_STACK_ALIGN_P)
1910 #define DEPRECATED_STACK_ALIGN_P() (gdbarch_deprecated_stack_align_p (current_gdbarch))
1911 #endif
1912
1913 typedef CORE_ADDR (gdbarch_deprecated_stack_align_ftype) (CORE_ADDR sp);
1914 extern CORE_ADDR gdbarch_deprecated_stack_align (struct gdbarch *gdbarch, CORE_ADDR sp);
1915 extern void set_gdbarch_deprecated_stack_align (struct gdbarch *gdbarch, gdbarch_deprecated_stack_align_ftype *deprecated_stack_align);
1916 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_STACK_ALIGN)
1917 #error "Non multi-arch definition of DEPRECATED_STACK_ALIGN"
1918 #endif
1919 #if !defined (DEPRECATED_STACK_ALIGN)
1920 #define DEPRECATED_STACK_ALIGN(sp) (gdbarch_deprecated_stack_align (current_gdbarch, sp))
1921 #endif
1922
1923 extern int gdbarch_frame_align_p (struct gdbarch *gdbarch);
1924
1925 typedef CORE_ADDR (gdbarch_frame_align_ftype) (struct gdbarch *gdbarch, CORE_ADDR address);
1926 extern CORE_ADDR gdbarch_frame_align (struct gdbarch *gdbarch, CORE_ADDR address);
1927 extern void set_gdbarch_frame_align (struct gdbarch *gdbarch, gdbarch_frame_align_ftype *frame_align);
1928
1929 /* DEPRECATED_REG_STRUCT_HAS_ADDR has been replaced by
1930    stabs_argument_has_addr. */
1931
1932 #if defined (DEPRECATED_REG_STRUCT_HAS_ADDR)
1933 /* Legacy for systems yet to multi-arch DEPRECATED_REG_STRUCT_HAS_ADDR */
1934 #if !defined (DEPRECATED_REG_STRUCT_HAS_ADDR_P)
1935 #define DEPRECATED_REG_STRUCT_HAS_ADDR_P() (1)
1936 #endif
1937 #endif
1938
1939 extern int gdbarch_deprecated_reg_struct_has_addr_p (struct gdbarch *gdbarch);
1940 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REG_STRUCT_HAS_ADDR_P)
1941 #error "Non multi-arch definition of DEPRECATED_REG_STRUCT_HAS_ADDR"
1942 #endif
1943 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (DEPRECATED_REG_STRUCT_HAS_ADDR_P)
1944 #define DEPRECATED_REG_STRUCT_HAS_ADDR_P() (gdbarch_deprecated_reg_struct_has_addr_p (current_gdbarch))
1945 #endif
1946
1947 typedef int (gdbarch_deprecated_reg_struct_has_addr_ftype) (int gcc_p, struct type *type);
1948 extern int gdbarch_deprecated_reg_struct_has_addr (struct gdbarch *gdbarch, int gcc_p, struct type *type);
1949 extern void set_gdbarch_deprecated_reg_struct_has_addr (struct gdbarch *gdbarch, gdbarch_deprecated_reg_struct_has_addr_ftype *deprecated_reg_struct_has_addr);
1950 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (DEPRECATED_REG_STRUCT_HAS_ADDR)
1951 #error "Non multi-arch definition of DEPRECATED_REG_STRUCT_HAS_ADDR"
1952 #endif
1953 #if !defined (DEPRECATED_REG_STRUCT_HAS_ADDR)
1954 #define DEPRECATED_REG_STRUCT_HAS_ADDR(gcc_p, type) (gdbarch_deprecated_reg_struct_has_addr (current_gdbarch, gcc_p, type))
1955 #endif
1956
1957 typedef int (gdbarch_stabs_argument_has_addr_ftype) (struct gdbarch *gdbarch, struct type *type);
1958 extern int gdbarch_stabs_argument_has_addr (struct gdbarch *gdbarch, struct type *type);
1959 extern void set_gdbarch_stabs_argument_has_addr (struct gdbarch *gdbarch, gdbarch_stabs_argument_has_addr_ftype *stabs_argument_has_addr);
1960
1961 extern int gdbarch_frame_red_zone_size (struct gdbarch *gdbarch);
1962 extern void set_gdbarch_frame_red_zone_size (struct gdbarch *gdbarch, int frame_red_zone_size);
1963 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FRAME_RED_ZONE_SIZE)
1964 #error "Non multi-arch definition of FRAME_RED_ZONE_SIZE"
1965 #endif
1966 #if !defined (FRAME_RED_ZONE_SIZE)
1967 #define FRAME_RED_ZONE_SIZE (gdbarch_frame_red_zone_size (current_gdbarch))
1968 #endif
1969
1970 extern int gdbarch_parm_boundary (struct gdbarch *gdbarch);
1971 extern void set_gdbarch_parm_boundary (struct gdbarch *gdbarch, int parm_boundary);
1972 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PARM_BOUNDARY)
1973 #error "Non multi-arch definition of PARM_BOUNDARY"
1974 #endif
1975 #if !defined (PARM_BOUNDARY)
1976 #define PARM_BOUNDARY (gdbarch_parm_boundary (current_gdbarch))
1977 #endif
1978
1979 extern const struct floatformat * gdbarch_float_format (struct gdbarch *gdbarch);
1980 extern void set_gdbarch_float_format (struct gdbarch *gdbarch, const struct floatformat * float_format);
1981 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_FLOAT_FORMAT)
1982 #error "Non multi-arch definition of TARGET_FLOAT_FORMAT"
1983 #endif
1984 #if !defined (TARGET_FLOAT_FORMAT)
1985 #define TARGET_FLOAT_FORMAT (gdbarch_float_format (current_gdbarch))
1986 #endif
1987
1988 extern const struct floatformat * gdbarch_double_format (struct gdbarch *gdbarch);
1989 extern void set_gdbarch_double_format (struct gdbarch *gdbarch, const struct floatformat * double_format);
1990 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_DOUBLE_FORMAT)
1991 #error "Non multi-arch definition of TARGET_DOUBLE_FORMAT"
1992 #endif
1993 #if !defined (TARGET_DOUBLE_FORMAT)
1994 #define TARGET_DOUBLE_FORMAT (gdbarch_double_format (current_gdbarch))
1995 #endif
1996
1997 extern const struct floatformat * gdbarch_long_double_format (struct gdbarch *gdbarch);
1998 extern void set_gdbarch_long_double_format (struct gdbarch *gdbarch, const struct floatformat * long_double_format);
1999 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_LONG_DOUBLE_FORMAT)
2000 #error "Non multi-arch definition of TARGET_LONG_DOUBLE_FORMAT"
2001 #endif
2002 #if !defined (TARGET_LONG_DOUBLE_FORMAT)
2003 #define TARGET_LONG_DOUBLE_FORMAT (gdbarch_long_double_format (current_gdbarch))
2004 #endif
2005
2006 typedef CORE_ADDR (gdbarch_convert_from_func_ptr_addr_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ);
2007 extern CORE_ADDR gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ);
2008 extern void set_gdbarch_convert_from_func_ptr_addr (struct gdbarch *gdbarch, gdbarch_convert_from_func_ptr_addr_ftype *convert_from_func_ptr_addr);
2009
2010 /* On some machines there are bits in addresses which are not really
2011    part of the address, but are used by the kernel, the hardware, etc.
2012    for special purposes.  ADDR_BITS_REMOVE takes out any such bits so
2013    we get a "real" address such as one would find in a symbol table.
2014    This is used only for addresses of instructions, and even then I'm
2015    not sure it's used in all contexts.  It exists to deal with there
2016    being a few stray bits in the PC which would mislead us, not as some
2017    sort of generic thing to handle alignment or segmentation (it's
2018    possible it should be in TARGET_READ_PC instead). */
2019
2020 typedef CORE_ADDR (gdbarch_addr_bits_remove_ftype) (CORE_ADDR addr);
2021 extern CORE_ADDR gdbarch_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr);
2022 extern void set_gdbarch_addr_bits_remove (struct gdbarch *gdbarch, gdbarch_addr_bits_remove_ftype *addr_bits_remove);
2023 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDR_BITS_REMOVE)
2024 #error "Non multi-arch definition of ADDR_BITS_REMOVE"
2025 #endif
2026 #if !defined (ADDR_BITS_REMOVE)
2027 #define ADDR_BITS_REMOVE(addr) (gdbarch_addr_bits_remove (current_gdbarch, addr))
2028 #endif
2029
2030 /* It is not at all clear why SMASH_TEXT_ADDRESS is not folded into
2031    ADDR_BITS_REMOVE. */
2032
2033 typedef CORE_ADDR (gdbarch_smash_text_address_ftype) (CORE_ADDR addr);
2034 extern CORE_ADDR gdbarch_smash_text_address (struct gdbarch *gdbarch, CORE_ADDR addr);
2035 extern void set_gdbarch_smash_text_address (struct gdbarch *gdbarch, gdbarch_smash_text_address_ftype *smash_text_address);
2036 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SMASH_TEXT_ADDRESS)
2037 #error "Non multi-arch definition of SMASH_TEXT_ADDRESS"
2038 #endif
2039 #if !defined (SMASH_TEXT_ADDRESS)
2040 #define SMASH_TEXT_ADDRESS(addr) (gdbarch_smash_text_address (current_gdbarch, addr))
2041 #endif
2042
2043 /* FIXME/cagney/2001-01-18: This should be split in two.  A target method that indicates if
2044    the target needs software single step.  An ISA method to implement it.
2045   
2046    FIXME/cagney/2001-01-18: This should be replaced with something that inserts breakpoints
2047    using the breakpoint system instead of blatting memory directly (as with rs6000).
2048   
2049    FIXME/cagney/2001-01-18: The logic is backwards.  It should be asking if the target can
2050    single step.  If not, then implement single step using breakpoints. */
2051
2052 #if defined (SOFTWARE_SINGLE_STEP)
2053 /* Legacy for systems yet to multi-arch SOFTWARE_SINGLE_STEP */
2054 #if !defined (SOFTWARE_SINGLE_STEP_P)
2055 #define SOFTWARE_SINGLE_STEP_P() (1)
2056 #endif
2057 #endif
2058
2059 extern int gdbarch_software_single_step_p (struct gdbarch *gdbarch);
2060 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SOFTWARE_SINGLE_STEP_P)
2061 #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP"
2062 #endif
2063 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SOFTWARE_SINGLE_STEP_P)
2064 #define SOFTWARE_SINGLE_STEP_P() (gdbarch_software_single_step_p (current_gdbarch))
2065 #endif
2066
2067 typedef void (gdbarch_software_single_step_ftype) (enum target_signal sig, int insert_breakpoints_p);
2068 extern void gdbarch_software_single_step (struct gdbarch *gdbarch, enum target_signal sig, int insert_breakpoints_p);
2069 extern void set_gdbarch_software_single_step (struct gdbarch *gdbarch, gdbarch_software_single_step_ftype *software_single_step);
2070 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SOFTWARE_SINGLE_STEP)
2071 #error "Non multi-arch definition of SOFTWARE_SINGLE_STEP"
2072 #endif
2073 #if !defined (SOFTWARE_SINGLE_STEP)
2074 #define SOFTWARE_SINGLE_STEP(sig, insert_breakpoints_p) (gdbarch_software_single_step (current_gdbarch, sig, insert_breakpoints_p))
2075 #endif
2076
2077 /* FIXME: cagney/2003-08-28: Need to find a better way of selecting the
2078    disassembler.  Perhaphs objdump can handle it? */
2079
2080 typedef int (gdbarch_print_insn_ftype) (bfd_vma vma, struct disassemble_info *info);
2081 extern int gdbarch_print_insn (struct gdbarch *gdbarch, bfd_vma vma, struct disassemble_info *info);
2082 extern void set_gdbarch_print_insn (struct gdbarch *gdbarch, gdbarch_print_insn_ftype *print_insn);
2083 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (TARGET_PRINT_INSN)
2084 #error "Non multi-arch definition of TARGET_PRINT_INSN"
2085 #endif
2086 #if !defined (TARGET_PRINT_INSN)
2087 #define TARGET_PRINT_INSN(vma, info) (gdbarch_print_insn (current_gdbarch, vma, info))
2088 #endif
2089
2090 typedef CORE_ADDR (gdbarch_skip_trampoline_code_ftype) (CORE_ADDR pc);
2091 extern CORE_ADDR gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, CORE_ADDR pc);
2092 extern void set_gdbarch_skip_trampoline_code (struct gdbarch *gdbarch, gdbarch_skip_trampoline_code_ftype *skip_trampoline_code);
2093 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SKIP_TRAMPOLINE_CODE)
2094 #error "Non multi-arch definition of SKIP_TRAMPOLINE_CODE"
2095 #endif
2096 #if !defined (SKIP_TRAMPOLINE_CODE)
2097 #define SKIP_TRAMPOLINE_CODE(pc) (gdbarch_skip_trampoline_code (current_gdbarch, pc))
2098 #endif
2099
2100 /* If IN_SOLIB_DYNSYM_RESOLVE_CODE returns true, and SKIP_SOLIB_RESOLVER
2101    evaluates non-zero, this is the address where the debugger will place
2102    a step-resume breakpoint to get us past the dynamic linker. */
2103
2104 typedef CORE_ADDR (gdbarch_skip_solib_resolver_ftype) (struct gdbarch *gdbarch, CORE_ADDR pc);
2105 extern CORE_ADDR gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc);
2106 extern void set_gdbarch_skip_solib_resolver (struct gdbarch *gdbarch, gdbarch_skip_solib_resolver_ftype *skip_solib_resolver);
2107
2108 /* For SVR4 shared libraries, each call goes through a small piece of
2109    trampoline code in the ".plt" section.  IN_SOLIB_CALL_TRAMPOLINE evaluates
2110    to nonzero if we are currently stopped in one of these. */
2111
2112 typedef int (gdbarch_in_solib_call_trampoline_ftype) (CORE_ADDR pc, char *name);
2113 extern int gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
2114 extern void set_gdbarch_in_solib_call_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_call_trampoline_ftype *in_solib_call_trampoline);
2115 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (IN_SOLIB_CALL_TRAMPOLINE)
2116 #error "Non multi-arch definition of IN_SOLIB_CALL_TRAMPOLINE"
2117 #endif
2118 #if !defined (IN_SOLIB_CALL_TRAMPOLINE)
2119 #define IN_SOLIB_CALL_TRAMPOLINE(pc, name) (gdbarch_in_solib_call_trampoline (current_gdbarch, pc, name))
2120 #endif
2121
2122 /* Some systems also have trampoline code for returning from shared libs. */
2123
2124 typedef int (gdbarch_in_solib_return_trampoline_ftype) (CORE_ADDR pc, char *name);
2125 extern int gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
2126 extern void set_gdbarch_in_solib_return_trampoline (struct gdbarch *gdbarch, gdbarch_in_solib_return_trampoline_ftype *in_solib_return_trampoline);
2127 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (IN_SOLIB_RETURN_TRAMPOLINE)
2128 #error "Non multi-arch definition of IN_SOLIB_RETURN_TRAMPOLINE"
2129 #endif
2130 #if !defined (IN_SOLIB_RETURN_TRAMPOLINE)
2131 #define IN_SOLIB_RETURN_TRAMPOLINE(pc, name) (gdbarch_in_solib_return_trampoline (current_gdbarch, pc, name))
2132 #endif
2133
2134 /* Sigtramp is a routine that the kernel calls (which then calls the
2135    signal handler).  On most machines it is a library routine that is
2136    linked into the executable.
2137   
2138    This macro, given a program counter value and the name of the
2139    function in which that PC resides (which can be null if the name is
2140    not known), returns nonzero if the PC and name show that we are in
2141    sigtramp.
2142   
2143    On most machines just see if the name is sigtramp (and if we have
2144    no name, assume we are not in sigtramp).
2145   
2146    FIXME: cagney/2002-04-21: The function find_pc_partial_function
2147    calls find_pc_sect_partial_function() which calls PC_IN_SIGTRAMP.
2148    This means PC_IN_SIGTRAMP function can't be implemented by doing its
2149    own local NAME lookup.
2150   
2151    FIXME: cagney/2002-04-21: PC_IN_SIGTRAMP is something of a mess.
2152    Some code also depends on SIGTRAMP_START and SIGTRAMP_END but other
2153    does not. */
2154
2155 typedef int (gdbarch_pc_in_sigtramp_ftype) (CORE_ADDR pc, char *name);
2156 extern int gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, CORE_ADDR pc, char *name);
2157 extern void set_gdbarch_pc_in_sigtramp (struct gdbarch *gdbarch, gdbarch_pc_in_sigtramp_ftype *pc_in_sigtramp);
2158 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (PC_IN_SIGTRAMP)
2159 #error "Non multi-arch definition of PC_IN_SIGTRAMP"
2160 #endif
2161 #if !defined (PC_IN_SIGTRAMP)
2162 #define PC_IN_SIGTRAMP(pc, name) (gdbarch_pc_in_sigtramp (current_gdbarch, pc, name))
2163 #endif
2164
2165 #if defined (SIGTRAMP_START)
2166 /* Legacy for systems yet to multi-arch SIGTRAMP_START */
2167 #if !defined (SIGTRAMP_START_P)
2168 #define SIGTRAMP_START_P() (1)
2169 #endif
2170 #endif
2171
2172 extern int gdbarch_sigtramp_start_p (struct gdbarch *gdbarch);
2173 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_START_P)
2174 #error "Non multi-arch definition of SIGTRAMP_START"
2175 #endif
2176 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SIGTRAMP_START_P)
2177 #define SIGTRAMP_START_P() (gdbarch_sigtramp_start_p (current_gdbarch))
2178 #endif
2179
2180 typedef CORE_ADDR (gdbarch_sigtramp_start_ftype) (CORE_ADDR pc);
2181 extern CORE_ADDR gdbarch_sigtramp_start (struct gdbarch *gdbarch, CORE_ADDR pc);
2182 extern void set_gdbarch_sigtramp_start (struct gdbarch *gdbarch, gdbarch_sigtramp_start_ftype *sigtramp_start);
2183 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_START)
2184 #error "Non multi-arch definition of SIGTRAMP_START"
2185 #endif
2186 #if !defined (SIGTRAMP_START)
2187 #define SIGTRAMP_START(pc) (gdbarch_sigtramp_start (current_gdbarch, pc))
2188 #endif
2189
2190 #if defined (SIGTRAMP_END)
2191 /* Legacy for systems yet to multi-arch SIGTRAMP_END */
2192 #if !defined (SIGTRAMP_END_P)
2193 #define SIGTRAMP_END_P() (1)
2194 #endif
2195 #endif
2196
2197 extern int gdbarch_sigtramp_end_p (struct gdbarch *gdbarch);
2198 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_END_P)
2199 #error "Non multi-arch definition of SIGTRAMP_END"
2200 #endif
2201 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (SIGTRAMP_END_P)
2202 #define SIGTRAMP_END_P() (gdbarch_sigtramp_end_p (current_gdbarch))
2203 #endif
2204
2205 typedef CORE_ADDR (gdbarch_sigtramp_end_ftype) (CORE_ADDR pc);
2206 extern CORE_ADDR gdbarch_sigtramp_end (struct gdbarch *gdbarch, CORE_ADDR pc);
2207 extern void set_gdbarch_sigtramp_end (struct gdbarch *gdbarch, gdbarch_sigtramp_end_ftype *sigtramp_end);
2208 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (SIGTRAMP_END)
2209 #error "Non multi-arch definition of SIGTRAMP_END"
2210 #endif
2211 #if !defined (SIGTRAMP_END)
2212 #define SIGTRAMP_END(pc) (gdbarch_sigtramp_end (current_gdbarch, pc))
2213 #endif
2214
2215 /* A target might have problems with watchpoints as soon as the stack
2216    frame of the current function has been destroyed.  This mostly happens
2217    as the first action in a funtion's epilogue.  in_function_epilogue_p()
2218    is defined to return a non-zero value if either the given addr is one
2219    instruction after the stack destroying instruction up to the trailing
2220    return instruction or if we can figure out that the stack frame has
2221    already been invalidated regardless of the value of addr.  Targets
2222    which don't suffer from that problem could just let this functionality
2223    untouched. */
2224
2225 typedef int (gdbarch_in_function_epilogue_p_ftype) (struct gdbarch *gdbarch, CORE_ADDR addr);
2226 extern int gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR addr);
2227 extern void set_gdbarch_in_function_epilogue_p (struct gdbarch *gdbarch, gdbarch_in_function_epilogue_p_ftype *in_function_epilogue_p);
2228
2229 /* Given a vector of command-line arguments, return a newly allocated
2230    string which, when passed to the create_inferior function, will be
2231    parsed (on Unix systems, by the shell) to yield the same vector.
2232    This function should call error() if the argument vector is not
2233    representable for this target or if this target does not support
2234    command-line arguments.
2235    ARGC is the number of elements in the vector.
2236    ARGV is an array of strings, one per argument. */
2237
2238 typedef char * (gdbarch_construct_inferior_arguments_ftype) (struct gdbarch *gdbarch, int argc, char **argv);
2239 extern char * gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, int argc, char **argv);
2240 extern void set_gdbarch_construct_inferior_arguments (struct gdbarch *gdbarch, gdbarch_construct_inferior_arguments_ftype *construct_inferior_arguments);
2241
2242 typedef void (gdbarch_elf_make_msymbol_special_ftype) (asymbol *sym, struct minimal_symbol *msym);
2243 extern void gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, asymbol *sym, struct minimal_symbol *msym);
2244 extern void set_gdbarch_elf_make_msymbol_special (struct gdbarch *gdbarch, gdbarch_elf_make_msymbol_special_ftype *elf_make_msymbol_special);
2245 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ELF_MAKE_MSYMBOL_SPECIAL)
2246 #error "Non multi-arch definition of ELF_MAKE_MSYMBOL_SPECIAL"
2247 #endif
2248 #if !defined (ELF_MAKE_MSYMBOL_SPECIAL)
2249 #define ELF_MAKE_MSYMBOL_SPECIAL(sym, msym) (gdbarch_elf_make_msymbol_special (current_gdbarch, sym, msym))
2250 #endif
2251
2252 typedef void (gdbarch_coff_make_msymbol_special_ftype) (int val, struct minimal_symbol *msym);
2253 extern void gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, int val, struct minimal_symbol *msym);
2254 extern void set_gdbarch_coff_make_msymbol_special (struct gdbarch *gdbarch, gdbarch_coff_make_msymbol_special_ftype *coff_make_msymbol_special);
2255 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (COFF_MAKE_MSYMBOL_SPECIAL)
2256 #error "Non multi-arch definition of COFF_MAKE_MSYMBOL_SPECIAL"
2257 #endif
2258 #if !defined (COFF_MAKE_MSYMBOL_SPECIAL)
2259 #define COFF_MAKE_MSYMBOL_SPECIAL(val, msym) (gdbarch_coff_make_msymbol_special (current_gdbarch, val, msym))
2260 #endif
2261
2262 extern const char * gdbarch_name_of_malloc (struct gdbarch *gdbarch);
2263 extern void set_gdbarch_name_of_malloc (struct gdbarch *gdbarch, const char * name_of_malloc);
2264 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (NAME_OF_MALLOC)
2265 #error "Non multi-arch definition of NAME_OF_MALLOC"
2266 #endif
2267 #if !defined (NAME_OF_MALLOC)
2268 #define NAME_OF_MALLOC (gdbarch_name_of_malloc (current_gdbarch))
2269 #endif
2270
2271 extern int gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch);
2272 extern void set_gdbarch_cannot_step_breakpoint (struct gdbarch *gdbarch, int cannot_step_breakpoint);
2273 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (CANNOT_STEP_BREAKPOINT)
2274 #error "Non multi-arch definition of CANNOT_STEP_BREAKPOINT"
2275 #endif
2276 #if !defined (CANNOT_STEP_BREAKPOINT)
2277 #define CANNOT_STEP_BREAKPOINT (gdbarch_cannot_step_breakpoint (current_gdbarch))
2278 #endif
2279
2280 extern int gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch);
2281 extern void set_gdbarch_have_nonsteppable_watchpoint (struct gdbarch *gdbarch, int have_nonsteppable_watchpoint);
2282 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (HAVE_NONSTEPPABLE_WATCHPOINT)
2283 #error "Non multi-arch definition of HAVE_NONSTEPPABLE_WATCHPOINT"
2284 #endif
2285 #if !defined (HAVE_NONSTEPPABLE_WATCHPOINT)
2286 #define HAVE_NONSTEPPABLE_WATCHPOINT (gdbarch_have_nonsteppable_watchpoint (current_gdbarch))
2287 #endif
2288
2289 #if defined (ADDRESS_CLASS_TYPE_FLAGS)
2290 /* Legacy for systems yet to multi-arch ADDRESS_CLASS_TYPE_FLAGS */
2291 #if !defined (ADDRESS_CLASS_TYPE_FLAGS_P)
2292 #define ADDRESS_CLASS_TYPE_FLAGS_P() (1)
2293 #endif
2294 #endif
2295
2296 extern int gdbarch_address_class_type_flags_p (struct gdbarch *gdbarch);
2297 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDRESS_CLASS_TYPE_FLAGS_P)
2298 #error "Non multi-arch definition of ADDRESS_CLASS_TYPE_FLAGS"
2299 #endif
2300 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (ADDRESS_CLASS_TYPE_FLAGS_P)
2301 #define ADDRESS_CLASS_TYPE_FLAGS_P() (gdbarch_address_class_type_flags_p (current_gdbarch))
2302 #endif
2303
2304 typedef int (gdbarch_address_class_type_flags_ftype) (int byte_size, int dwarf2_addr_class);
2305 extern int gdbarch_address_class_type_flags (struct gdbarch *gdbarch, int byte_size, int dwarf2_addr_class);
2306 extern void set_gdbarch_address_class_type_flags (struct gdbarch *gdbarch, gdbarch_address_class_type_flags_ftype *address_class_type_flags);
2307 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (ADDRESS_CLASS_TYPE_FLAGS)
2308 #error "Non multi-arch definition of ADDRESS_CLASS_TYPE_FLAGS"
2309 #endif
2310 #if !defined (ADDRESS_CLASS_TYPE_FLAGS)
2311 #define ADDRESS_CLASS_TYPE_FLAGS(byte_size, dwarf2_addr_class) (gdbarch_address_class_type_flags (current_gdbarch, byte_size, dwarf2_addr_class))
2312 #endif
2313
2314 extern int gdbarch_address_class_type_flags_to_name_p (struct gdbarch *gdbarch);
2315
2316 typedef const char * (gdbarch_address_class_type_flags_to_name_ftype) (struct gdbarch *gdbarch, int type_flags);
2317 extern const char * gdbarch_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags);
2318 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);
2319
2320 extern int gdbarch_address_class_name_to_type_flags_p (struct gdbarch *gdbarch);
2321
2322 typedef int (gdbarch_address_class_name_to_type_flags_ftype) (struct gdbarch *gdbarch, const char *name, int *type_flags_ptr);
2323 extern int gdbarch_address_class_name_to_type_flags (struct gdbarch *gdbarch, const char *name, int *type_flags_ptr);
2324 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);
2325
2326 /* Is a register in a group */
2327
2328 typedef int (gdbarch_register_reggroup_p_ftype) (struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup);
2329 extern int gdbarch_register_reggroup_p (struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup);
2330 extern void set_gdbarch_register_reggroup_p (struct gdbarch *gdbarch, gdbarch_register_reggroup_p_ftype *register_reggroup_p);
2331
2332 /* Fetch the pointer to the ith function argument. */
2333
2334 #if defined (FETCH_POINTER_ARGUMENT)
2335 /* Legacy for systems yet to multi-arch FETCH_POINTER_ARGUMENT */
2336 #if !defined (FETCH_POINTER_ARGUMENT_P)
2337 #define FETCH_POINTER_ARGUMENT_P() (1)
2338 #endif
2339 #endif
2340
2341 extern int gdbarch_fetch_pointer_argument_p (struct gdbarch *gdbarch);
2342 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_POINTER_ARGUMENT_P)
2343 #error "Non multi-arch definition of FETCH_POINTER_ARGUMENT"
2344 #endif
2345 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (FETCH_POINTER_ARGUMENT_P)
2346 #define FETCH_POINTER_ARGUMENT_P() (gdbarch_fetch_pointer_argument_p (current_gdbarch))
2347 #endif
2348
2349 typedef CORE_ADDR (gdbarch_fetch_pointer_argument_ftype) (struct frame_info *frame, int argi, struct type *type);
2350 extern CORE_ADDR gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, struct frame_info *frame, int argi, struct type *type);
2351 extern void set_gdbarch_fetch_pointer_argument (struct gdbarch *gdbarch, gdbarch_fetch_pointer_argument_ftype *fetch_pointer_argument);
2352 #if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (FETCH_POINTER_ARGUMENT)
2353 #error "Non multi-arch definition of FETCH_POINTER_ARGUMENT"
2354 #endif
2355 #if !defined (FETCH_POINTER_ARGUMENT)
2356 #define FETCH_POINTER_ARGUMENT(frame, argi, type) (gdbarch_fetch_pointer_argument (current_gdbarch, frame, argi, type))
2357 #endif
2358
2359 /* Return the appropriate register set for a core file section with
2360    name SECT_NAME and size SECT_SIZE. */
2361
2362 extern int gdbarch_regset_from_core_section_p (struct gdbarch *gdbarch);
2363
2364 typedef const struct regset * (gdbarch_regset_from_core_section_ftype) (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size);
2365 extern const struct regset * gdbarch_regset_from_core_section (struct gdbarch *gdbarch, const char *sect_name, size_t sect_size);
2366 extern void set_gdbarch_regset_from_core_section (struct gdbarch *gdbarch, gdbarch_regset_from_core_section_ftype *regset_from_core_section);
2367
2368 extern struct gdbarch_tdep *gdbarch_tdep (struct gdbarch *gdbarch);
2369
2370
2371 /* Mechanism for co-ordinating the selection of a specific
2372    architecture.
2373
2374    GDB targets (*-tdep.c) can register an interest in a specific
2375    architecture.  Other GDB components can register a need to maintain
2376    per-architecture data.
2377
2378    The mechanisms below ensures that there is only a loose connection
2379    between the set-architecture command and the various GDB
2380    components.  Each component can independently register their need
2381    to maintain architecture specific data with gdbarch.
2382
2383    Pragmatics:
2384
2385    Previously, a single TARGET_ARCHITECTURE_HOOK was provided.  It
2386    didn't scale.
2387
2388    The more traditional mega-struct containing architecture specific
2389    data for all the various GDB components was also considered.  Since
2390    GDB is built from a variable number of (fairly independent)
2391    components it was determined that the global aproach was not
2392    applicable. */
2393
2394
2395 /* Register a new architectural family with GDB.
2396
2397    Register support for the specified ARCHITECTURE with GDB.  When
2398    gdbarch determines that the specified architecture has been
2399    selected, the corresponding INIT function is called.
2400
2401    --
2402
2403    The INIT function takes two parameters: INFO which contains the
2404    information available to gdbarch about the (possibly new)
2405    architecture; ARCHES which is a list of the previously created
2406    ``struct gdbarch'' for this architecture.
2407
2408    The INFO parameter is, as far as possible, be pre-initialized with
2409    information obtained from INFO.ABFD or the previously selected
2410    architecture.
2411
2412    The ARCHES parameter is a linked list (sorted most recently used)
2413    of all the previously created architures for this architecture
2414    family.  The (possibly NULL) ARCHES->gdbarch can used to access
2415    values from the previously selected architecture for this
2416    architecture family.  The global ``current_gdbarch'' shall not be
2417    used.
2418
2419    The INIT function shall return any of: NULL - indicating that it
2420    doesn't recognize the selected architecture; an existing ``struct
2421    gdbarch'' from the ARCHES list - indicating that the new
2422    architecture is just a synonym for an earlier architecture (see
2423    gdbarch_list_lookup_by_info()); a newly created ``struct gdbarch''
2424    - that describes the selected architecture (see gdbarch_alloc()).
2425
2426    The DUMP_TDEP function shall print out all target specific values.
2427    Care should be taken to ensure that the function works in both the
2428    multi-arch and non- multi-arch cases. */
2429
2430 struct gdbarch_list
2431 {
2432   struct gdbarch *gdbarch;
2433   struct gdbarch_list *next;
2434 };
2435
2436 struct gdbarch_info
2437 {
2438   /* Use default: NULL (ZERO). */
2439   const struct bfd_arch_info *bfd_arch_info;
2440
2441   /* Use default: BFD_ENDIAN_UNKNOWN (NB: is not ZERO).  */
2442   int byte_order;
2443
2444   /* Use default: NULL (ZERO). */
2445   bfd *abfd;
2446
2447   /* Use default: NULL (ZERO). */
2448   struct gdbarch_tdep_info *tdep_info;
2449
2450   /* Use default: GDB_OSABI_UNINITIALIZED (-1).  */
2451   enum gdb_osabi osabi;
2452 };
2453
2454 typedef struct gdbarch *(gdbarch_init_ftype) (struct gdbarch_info info, struct gdbarch_list *arches);
2455 typedef void (gdbarch_dump_tdep_ftype) (struct gdbarch *gdbarch, struct ui_file *file);
2456
2457 /* DEPRECATED - use gdbarch_register() */
2458 extern void register_gdbarch_init (enum bfd_architecture architecture, gdbarch_init_ftype *);
2459
2460 extern void gdbarch_register (enum bfd_architecture architecture,
2461                               gdbarch_init_ftype *,
2462                               gdbarch_dump_tdep_ftype *);
2463
2464
2465 /* Return a freshly allocated, NULL terminated, array of the valid
2466    architecture names.  Since architectures are registered during the
2467    _initialize phase this function only returns useful information
2468    once initialization has been completed. */
2469
2470 extern const char **gdbarch_printable_names (void);
2471
2472
2473 /* Helper function.  Search the list of ARCHES for a GDBARCH that
2474    matches the information provided by INFO. */
2475
2476 extern struct gdbarch_list *gdbarch_list_lookup_by_info (struct gdbarch_list *arches,  const struct gdbarch_info *info);
2477
2478
2479 /* Helper function.  Create a preliminary ``struct gdbarch''.  Perform
2480    basic initialization using values obtained from the INFO andTDEP
2481    parameters.  set_gdbarch_*() functions are called to complete the
2482    initialization of the object. */
2483
2484 extern struct gdbarch *gdbarch_alloc (const struct gdbarch_info *info, struct gdbarch_tdep *tdep);
2485
2486
2487 /* Helper function.  Free a partially-constructed ``struct gdbarch''.
2488    It is assumed that the caller freeds the ``struct
2489    gdbarch_tdep''. */
2490
2491 extern void gdbarch_free (struct gdbarch *);
2492
2493
2494 /* Helper function.  Allocate memory from the ``struct gdbarch''
2495    obstack.  The memory is freed when the corresponding architecture
2496    is also freed.  */
2497
2498 extern void *gdbarch_obstack_zalloc (struct gdbarch *gdbarch, long size);
2499 #define GDBARCH_OBSTACK_CALLOC(GDBARCH, NR, TYPE) ((TYPE *) gdbarch_obstack_zalloc ((GDBARCH), (NR) * sizeof (TYPE)))
2500 #define GDBARCH_OBSTACK_ZALLOC(GDBARCH, TYPE) ((TYPE *) gdbarch_obstack_zalloc ((GDBARCH), sizeof (TYPE)))
2501
2502
2503 /* Helper function. Force an update of the current architecture.
2504
2505    The actual architecture selected is determined by INFO, ``(gdb) set
2506    architecture'' et.al., the existing architecture and BFD's default
2507    architecture.  INFO should be initialized to zero and then selected
2508    fields should be updated.
2509
2510    Returns non-zero if the update succeeds */
2511
2512 extern int gdbarch_update_p (struct gdbarch_info info);
2513
2514
2515 /* Helper function.  Find an architecture matching info.
2516
2517    INFO should be initialized using gdbarch_info_init, relevant fields
2518    set, and then finished using gdbarch_info_fill.
2519
2520    Returns the corresponding architecture, or NULL if no matching
2521    architecture was found.  "current_gdbarch" is not updated.  */
2522
2523 extern struct gdbarch *gdbarch_find_by_info (struct gdbarch_info info);
2524
2525
2526 /* Helper function.  Set the global "current_gdbarch" to "gdbarch".
2527
2528    FIXME: kettenis/20031124: Of the functions that follow, only
2529    gdbarch_from_bfd is supposed to survive.  The others will
2530    dissappear since in the future GDB will (hopefully) be truly
2531    multi-arch.  However, for now we're still stuck with the concept of
2532    a single active architecture.  */
2533
2534 extern void deprecated_current_gdbarch_select_hack (struct gdbarch *gdbarch);
2535
2536
2537 /* Register per-architecture data-pointer.
2538
2539    Reserve space for a per-architecture data-pointer.  An identifier
2540    for the reserved data-pointer is returned.  That identifer should
2541    be saved in a local static variable.
2542
2543    The per-architecture data-pointer is either initialized explicitly
2544    (set_gdbarch_data()) or implicitly (by INIT() via a call to
2545    gdbarch_data()).
2546
2547    Memory for the per-architecture data shall be allocated using
2548    gdbarch_obstack_zalloc.  That memory will be deleted when the
2549    corresponding architecture object is deleted.
2550
2551    When a previously created architecture is re-selected, the
2552    per-architecture data-pointer for that previous architecture is
2553    restored.  INIT() is not re-called.
2554
2555    Multiple registrarants for any architecture are allowed (and
2556    strongly encouraged).  */
2557
2558 struct gdbarch_data;
2559
2560 typedef void *(gdbarch_data_init_ftype) (struct gdbarch *gdbarch);
2561 extern struct gdbarch_data *register_gdbarch_data (gdbarch_data_init_ftype *init);
2562 extern void set_gdbarch_data (struct gdbarch *gdbarch,
2563                               struct gdbarch_data *data,
2564                               void *pointer);
2565
2566 extern void *gdbarch_data (struct gdbarch *gdbarch, struct gdbarch_data *);
2567
2568
2569
2570 /* Register per-architecture memory region.
2571
2572    Provide a memory-region swap mechanism.  Per-architecture memory
2573    region are created.  These memory regions are swapped whenever the
2574    architecture is changed.  For a new architecture, the memory region
2575    is initialized with zero (0) and the INIT function is called.
2576
2577    Memory regions are swapped / initialized in the order that they are
2578    registered.  NULL DATA and/or INIT values can be specified.
2579
2580    New code should use register_gdbarch_data(). */
2581
2582 typedef void (gdbarch_swap_ftype) (void);
2583 extern void register_gdbarch_swap (void *data, unsigned long size, gdbarch_swap_ftype *init);
2584 #define REGISTER_GDBARCH_SWAP(VAR) register_gdbarch_swap (&(VAR), sizeof ((VAR)), NULL)
2585
2586
2587
2588 /* Set the dynamic target-system-dependent parameters (architecture,
2589    byte-order, ...) using information found in the BFD */
2590
2591 extern void set_gdbarch_from_file (bfd *);
2592
2593
2594 /* Initialize the current architecture to the "first" one we find on
2595    our list.  */
2596
2597 extern void initialize_current_architecture (void);
2598
2599 /* gdbarch trace variable */
2600 extern int gdbarch_debug;
2601
2602 extern void gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file);
2603
2604 #endif