import gdb-1999-07-07 post reformat
[external/binutils.git] / gdb / gdbarch.h
1 /* Architecture commands for GDB, the GNU debugger.
2    Copyright 1998-1999, Free Software Foundation, Inc.
3
4    This file is part of GDB.
5
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 2 of the License, or
9    (at your option) any later version.
10
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, Inc., 59 Temple Place - Suite 330,
19    Boston, MA 02111-1307, USA.  */
20
21 #ifndef GDBARCH_H
22 #define GDBARCH_H
23
24 #ifdef __STDC__
25 struct frame_info;
26 struct value;
27 enum lval_type;
28 #endif
29
30
31 #ifndef GDB_MULTI_ARCH
32 #define GDB_MULTI_ARCH 0
33 #endif
34
35 extern struct gdbarch *current_gdbarch;
36
37
38 /* See gdb/doc/gdbint.texi for a discussion of the GDB_MULTI_ARCH
39    macro */
40
41
42 /* If any of the following are defined, the target wasn't correctly
43    converted. */
44
45 #if GDB_MULTI_ARCH
46 #if defined (CALL_DUMMY)
47 #error "CALL_DUMMY: replaced by CALL_DUMMY_WORDS/SIZEOF_CALL_DUMMY_WORDS"
48 #endif
49 #endif
50
51 #if GDB_MULTI_ARCH
52 #if defined (REGISTER_NAMES)
53 #error "REGISTER_NAMES: replaced by REGISTER_NAME"
54 #endif
55 #endif
56
57 #if GDB_MULTI_ARCH
58 #if defined (EXTRA_FRAME_INFO)
59 #error "EXTRA_FRAME_INFO: replaced by struct frame_extra_info"
60 #endif
61 #endif
62
63 #if GDB_MULTI_ARCH
64 #if defined (FRAME_FIND_SAVED_REGS)
65 #error "FRAME_FIND_SAVED_REGS: replaced by FRAME_INIT_SAVED_REGS"
66 #endif
67 #endif
68
69
70 /* The following are pre-initialized by GDBARCH. */
71
72 extern const struct bfd_arch_info *gdbarch_bfd_arch_info PARAMS ((struct gdbarch * gdbarch));
73 /* set_gdbarch_bfd_arch_info() - not applicable - pre-initialized. */
74 #if GDB_MULTI_ARCH
75 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_ARCHITECTURE)
76 #define TARGET_ARCHITECTURE (gdbarch_bfd_arch_info (current_gdbarch))
77 #endif
78 #endif
79
80 extern int gdbarch_byte_order PARAMS ((struct gdbarch * gdbarch));
81 /* set_gdbarch_byte_order() - not applicable - pre-initialized. */
82 #if GDB_MULTI_ARCH
83 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_BYTE_ORDER)
84 #define TARGET_BYTE_ORDER (gdbarch_byte_order (current_gdbarch))
85 #endif
86 #endif
87
88
89 /* The following are initialized by the target dependant code. */
90
91 extern int gdbarch_ptr_bit PARAMS ((struct gdbarch * gdbarch));
92 extern void set_gdbarch_ptr_bit PARAMS ((struct gdbarch * gdbarch, int ptr_bit));
93 #if GDB_MULTI_ARCH
94 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_PTR_BIT)
95 #define TARGET_PTR_BIT (gdbarch_ptr_bit (current_gdbarch))
96 #endif
97 #endif
98
99 extern int gdbarch_short_bit PARAMS ((struct gdbarch * gdbarch));
100 extern void set_gdbarch_short_bit PARAMS ((struct gdbarch * gdbarch, int short_bit));
101 #if GDB_MULTI_ARCH
102 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_SHORT_BIT)
103 #define TARGET_SHORT_BIT (gdbarch_short_bit (current_gdbarch))
104 #endif
105 #endif
106
107 extern int gdbarch_int_bit PARAMS ((struct gdbarch * gdbarch));
108 extern void set_gdbarch_int_bit PARAMS ((struct gdbarch * gdbarch, int int_bit));
109 #if GDB_MULTI_ARCH
110 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_INT_BIT)
111 #define TARGET_INT_BIT (gdbarch_int_bit (current_gdbarch))
112 #endif
113 #endif
114
115 extern int gdbarch_long_bit PARAMS ((struct gdbarch * gdbarch));
116 extern void set_gdbarch_long_bit PARAMS ((struct gdbarch * gdbarch, int long_bit));
117 #if GDB_MULTI_ARCH
118 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_BIT)
119 #define TARGET_LONG_BIT (gdbarch_long_bit (current_gdbarch))
120 #endif
121 #endif
122
123 extern int gdbarch_long_long_bit PARAMS ((struct gdbarch * gdbarch));
124 extern void set_gdbarch_long_long_bit PARAMS ((struct gdbarch * gdbarch, int long_long_bit));
125 #if GDB_MULTI_ARCH
126 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_LONG_BIT)
127 #define TARGET_LONG_LONG_BIT (gdbarch_long_long_bit (current_gdbarch))
128 #endif
129 #endif
130
131 extern int gdbarch_float_bit PARAMS ((struct gdbarch * gdbarch));
132 extern void set_gdbarch_float_bit PARAMS ((struct gdbarch * gdbarch, int float_bit));
133 #if GDB_MULTI_ARCH
134 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_FLOAT_BIT)
135 #define TARGET_FLOAT_BIT (gdbarch_float_bit (current_gdbarch))
136 #endif
137 #endif
138
139 extern int gdbarch_double_bit PARAMS ((struct gdbarch * gdbarch));
140 extern void set_gdbarch_double_bit PARAMS ((struct gdbarch * gdbarch, int double_bit));
141 #if GDB_MULTI_ARCH
142 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_DOUBLE_BIT)
143 #define TARGET_DOUBLE_BIT (gdbarch_double_bit (current_gdbarch))
144 #endif
145 #endif
146
147 extern int gdbarch_long_double_bit PARAMS ((struct gdbarch * gdbarch));
148 extern void set_gdbarch_long_double_bit PARAMS ((struct gdbarch * gdbarch, int long_double_bit));
149 #if GDB_MULTI_ARCH
150 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_LONG_DOUBLE_BIT)
151 #define TARGET_LONG_DOUBLE_BIT (gdbarch_long_double_bit (current_gdbarch))
152 #endif
153 #endif
154
155 typedef
156 CORE_ADDR (gdbarch_read_pc_ftype) PARAMS ((int pid));
157      extern CORE_ADDR gdbarch_read_pc PARAMS ((struct gdbarch * gdbarch, int pid));
158      extern void set_gdbarch_read_pc PARAMS ((struct gdbarch * gdbarch, gdbarch_read_pc_ftype * read_pc));
159 #if GDB_MULTI_ARCH
160 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_READ_PC)
161 #define TARGET_READ_PC(pid) (gdbarch_read_pc (current_gdbarch, pid))
162 #endif
163 #endif
164
165      typedef void (gdbarch_write_pc_ftype) PARAMS ((CORE_ADDR val, int pid));
166      extern void gdbarch_write_pc PARAMS ((struct gdbarch * gdbarch, CORE_ADDR val, int pid));
167      extern void set_gdbarch_write_pc PARAMS ((struct gdbarch * gdbarch, gdbarch_write_pc_ftype * write_pc));
168 #if GDB_MULTI_ARCH
169 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_WRITE_PC)
170 #define TARGET_WRITE_PC(val, pid) (gdbarch_write_pc (current_gdbarch, val, pid))
171 #endif
172 #endif
173
174      typedef CORE_ADDR (gdbarch_read_fp_ftype) PARAMS ((void));
175      extern CORE_ADDR gdbarch_read_fp PARAMS ((struct gdbarch * gdbarch));
176      extern void set_gdbarch_read_fp PARAMS ((struct gdbarch * gdbarch, gdbarch_read_fp_ftype * read_fp));
177 #if GDB_MULTI_ARCH
178 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_READ_FP)
179 #define TARGET_READ_FP() (gdbarch_read_fp (current_gdbarch))
180 #endif
181 #endif
182
183      typedef void (gdbarch_write_fp_ftype) PARAMS ((CORE_ADDR val));
184      extern void gdbarch_write_fp PARAMS ((struct gdbarch * gdbarch, CORE_ADDR val));
185      extern void set_gdbarch_write_fp PARAMS ((struct gdbarch * gdbarch, gdbarch_write_fp_ftype * write_fp));
186 #if GDB_MULTI_ARCH
187 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_WRITE_FP)
188 #define TARGET_WRITE_FP(val) (gdbarch_write_fp (current_gdbarch, val))
189 #endif
190 #endif
191
192      typedef CORE_ADDR (gdbarch_read_sp_ftype) PARAMS ((void));
193      extern CORE_ADDR gdbarch_read_sp PARAMS ((struct gdbarch * gdbarch));
194      extern void set_gdbarch_read_sp PARAMS ((struct gdbarch * gdbarch, gdbarch_read_sp_ftype * read_sp));
195 #if GDB_MULTI_ARCH
196 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_READ_SP)
197 #define TARGET_READ_SP() (gdbarch_read_sp (current_gdbarch))
198 #endif
199 #endif
200
201      typedef void (gdbarch_write_sp_ftype) PARAMS ((CORE_ADDR val));
202      extern void gdbarch_write_sp PARAMS ((struct gdbarch * gdbarch, CORE_ADDR val));
203      extern void set_gdbarch_write_sp PARAMS ((struct gdbarch * gdbarch, gdbarch_write_sp_ftype * write_sp));
204 #if GDB_MULTI_ARCH
205 #if (GDB_MULTI_ARCH > 1) || !defined (TARGET_WRITE_SP)
206 #define TARGET_WRITE_SP(val) (gdbarch_write_sp (current_gdbarch, val))
207 #endif
208 #endif
209
210      extern int gdbarch_num_regs PARAMS ((struct gdbarch * gdbarch));
211      extern void set_gdbarch_num_regs PARAMS ((struct gdbarch * gdbarch, int num_regs));
212 #if GDB_MULTI_ARCH
213 #if (GDB_MULTI_ARCH > 1) || !defined (NUM_REGS)
214 #define NUM_REGS (gdbarch_num_regs (current_gdbarch))
215 #endif
216 #endif
217
218      extern int gdbarch_sp_regnum PARAMS ((struct gdbarch * gdbarch));
219      extern void set_gdbarch_sp_regnum PARAMS ((struct gdbarch * gdbarch, int sp_regnum));
220 #if GDB_MULTI_ARCH
221 #if (GDB_MULTI_ARCH > 1) || !defined (SP_REGNUM)
222 #define SP_REGNUM (gdbarch_sp_regnum (current_gdbarch))
223 #endif
224 #endif
225
226      extern int gdbarch_fp_regnum PARAMS ((struct gdbarch * gdbarch));
227      extern void set_gdbarch_fp_regnum PARAMS ((struct gdbarch * gdbarch, int fp_regnum));
228 #if GDB_MULTI_ARCH
229 #if (GDB_MULTI_ARCH > 1) || !defined (FP_REGNUM)
230 #define FP_REGNUM (gdbarch_fp_regnum (current_gdbarch))
231 #endif
232 #endif
233
234      extern int gdbarch_pc_regnum PARAMS ((struct gdbarch * gdbarch));
235      extern void set_gdbarch_pc_regnum PARAMS ((struct gdbarch * gdbarch, int pc_regnum));
236 #if GDB_MULTI_ARCH
237 #if (GDB_MULTI_ARCH > 1) || !defined (PC_REGNUM)
238 #define PC_REGNUM (gdbarch_pc_regnum (current_gdbarch))
239 #endif
240 #endif
241
242      typedef char *(gdbarch_register_name_ftype) PARAMS ((int regnr));
243      extern char *gdbarch_register_name PARAMS ((struct gdbarch * gdbarch, int regnr));
244      extern void set_gdbarch_register_name PARAMS ((struct gdbarch * gdbarch, gdbarch_register_name_ftype * register_name));
245 #if GDB_MULTI_ARCH
246 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_NAME)
247 #define REGISTER_NAME(regnr) (gdbarch_register_name (current_gdbarch, regnr))
248 #endif
249 #endif
250
251      extern int gdbarch_register_size PARAMS ((struct gdbarch * gdbarch));
252      extern void set_gdbarch_register_size PARAMS ((struct gdbarch * gdbarch, int register_size));
253 #if GDB_MULTI_ARCH
254 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_SIZE)
255 #define REGISTER_SIZE (gdbarch_register_size (current_gdbarch))
256 #endif
257 #endif
258
259      extern int gdbarch_register_bytes PARAMS ((struct gdbarch * gdbarch));
260      extern void set_gdbarch_register_bytes PARAMS ((struct gdbarch * gdbarch, int register_bytes));
261 #if GDB_MULTI_ARCH
262 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_BYTES)
263 #define REGISTER_BYTES (gdbarch_register_bytes (current_gdbarch))
264 #endif
265 #endif
266
267      typedef int (gdbarch_register_byte_ftype) PARAMS ((int reg_nr));
268      extern int gdbarch_register_byte PARAMS ((struct gdbarch * gdbarch, int reg_nr));
269      extern void set_gdbarch_register_byte PARAMS ((struct gdbarch * gdbarch, gdbarch_register_byte_ftype * register_byte));
270 #if GDB_MULTI_ARCH
271 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_BYTE)
272 #define REGISTER_BYTE(reg_nr) (gdbarch_register_byte (current_gdbarch, reg_nr))
273 #endif
274 #endif
275
276      typedef int (gdbarch_register_raw_size_ftype) PARAMS ((int reg_nr));
277      extern int gdbarch_register_raw_size PARAMS ((struct gdbarch * gdbarch, int reg_nr));
278      extern void set_gdbarch_register_raw_size PARAMS ((struct gdbarch * gdbarch, gdbarch_register_raw_size_ftype * register_raw_size));
279 #if GDB_MULTI_ARCH
280 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_RAW_SIZE)
281 #define REGISTER_RAW_SIZE(reg_nr) (gdbarch_register_raw_size (current_gdbarch, reg_nr))
282 #endif
283 #endif
284
285      extern int gdbarch_max_register_raw_size PARAMS ((struct gdbarch * gdbarch));
286      extern void set_gdbarch_max_register_raw_size PARAMS ((struct gdbarch * gdbarch, int max_register_raw_size));
287 #if GDB_MULTI_ARCH
288 #if (GDB_MULTI_ARCH > 1) || !defined (MAX_REGISTER_RAW_SIZE)
289 #define MAX_REGISTER_RAW_SIZE (gdbarch_max_register_raw_size (current_gdbarch))
290 #endif
291 #endif
292
293      typedef int (gdbarch_register_virtual_size_ftype) PARAMS ((int reg_nr));
294      extern int gdbarch_register_virtual_size PARAMS ((struct gdbarch * gdbarch, int reg_nr));
295      extern void set_gdbarch_register_virtual_size PARAMS ((struct gdbarch * gdbarch, gdbarch_register_virtual_size_ftype * register_virtual_size));
296 #if GDB_MULTI_ARCH
297 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_VIRTUAL_SIZE)
298 #define REGISTER_VIRTUAL_SIZE(reg_nr) (gdbarch_register_virtual_size (current_gdbarch, reg_nr))
299 #endif
300 #endif
301
302      extern int gdbarch_max_register_virtual_size PARAMS ((struct gdbarch * gdbarch));
303      extern void set_gdbarch_max_register_virtual_size PARAMS ((struct gdbarch * gdbarch, int max_register_virtual_size));
304 #if GDB_MULTI_ARCH
305 #if (GDB_MULTI_ARCH > 1) || !defined (MAX_REGISTER_VIRTUAL_SIZE)
306 #define MAX_REGISTER_VIRTUAL_SIZE (gdbarch_max_register_virtual_size (current_gdbarch))
307 #endif
308 #endif
309
310      typedef struct type *(gdbarch_register_virtual_type_ftype) PARAMS ((int reg_nr));
311      extern struct type *gdbarch_register_virtual_type PARAMS ((struct gdbarch * gdbarch, int reg_nr));
312      extern void set_gdbarch_register_virtual_type PARAMS ((struct gdbarch * gdbarch, gdbarch_register_virtual_type_ftype * register_virtual_type));
313 #if GDB_MULTI_ARCH
314 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_VIRTUAL_TYPE)
315 #define REGISTER_VIRTUAL_TYPE(reg_nr) (gdbarch_register_virtual_type (current_gdbarch, reg_nr))
316 #endif
317 #endif
318
319      extern int gdbarch_use_generic_dummy_frames PARAMS ((struct gdbarch * gdbarch));
320      extern void set_gdbarch_use_generic_dummy_frames PARAMS ((struct gdbarch * gdbarch, int use_generic_dummy_frames));
321 #if GDB_MULTI_ARCH
322 #if (GDB_MULTI_ARCH > 1) || !defined (USE_GENERIC_DUMMY_FRAMES)
323 #define USE_GENERIC_DUMMY_FRAMES (gdbarch_use_generic_dummy_frames (current_gdbarch))
324 #endif
325 #endif
326
327      extern int gdbarch_call_dummy_location PARAMS ((struct gdbarch * gdbarch));
328      extern void set_gdbarch_call_dummy_location PARAMS ((struct gdbarch * gdbarch, int call_dummy_location));
329 #if GDB_MULTI_ARCH
330 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_LOCATION)
331 #define CALL_DUMMY_LOCATION (gdbarch_call_dummy_location (current_gdbarch))
332 #endif
333 #endif
334
335      typedef CORE_ADDR (gdbarch_call_dummy_address_ftype) PARAMS ((void));
336      extern CORE_ADDR gdbarch_call_dummy_address PARAMS ((struct gdbarch * gdbarch));
337      extern void set_gdbarch_call_dummy_address PARAMS ((struct gdbarch * gdbarch, gdbarch_call_dummy_address_ftype * call_dummy_address));
338 #if GDB_MULTI_ARCH
339 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_ADDRESS)
340 #define CALL_DUMMY_ADDRESS() (gdbarch_call_dummy_address (current_gdbarch))
341 #endif
342 #endif
343
344      extern CORE_ADDR gdbarch_call_dummy_start_offset PARAMS ((struct gdbarch * gdbarch));
345      extern void set_gdbarch_call_dummy_start_offset PARAMS ((struct gdbarch * gdbarch, CORE_ADDR call_dummy_start_offset));
346 #if GDB_MULTI_ARCH
347 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_START_OFFSET)
348 #define CALL_DUMMY_START_OFFSET (gdbarch_call_dummy_start_offset (current_gdbarch))
349 #endif
350 #endif
351
352      extern CORE_ADDR gdbarch_call_dummy_breakpoint_offset PARAMS ((struct gdbarch * gdbarch));
353      extern void set_gdbarch_call_dummy_breakpoint_offset PARAMS ((struct gdbarch * gdbarch, CORE_ADDR call_dummy_breakpoint_offset));
354 #if GDB_MULTI_ARCH
355 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_BREAKPOINT_OFFSET)
356 #define CALL_DUMMY_BREAKPOINT_OFFSET (gdbarch_call_dummy_breakpoint_offset (current_gdbarch))
357 #endif
358 #endif
359
360      extern int gdbarch_call_dummy_breakpoint_offset_p PARAMS ((struct gdbarch * gdbarch));
361      extern void set_gdbarch_call_dummy_breakpoint_offset_p PARAMS ((struct gdbarch * gdbarch, int call_dummy_breakpoint_offset_p));
362 #if GDB_MULTI_ARCH
363 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_BREAKPOINT_OFFSET_P)
364 #define CALL_DUMMY_BREAKPOINT_OFFSET_P (gdbarch_call_dummy_breakpoint_offset_p (current_gdbarch))
365 #endif
366 #endif
367
368      extern int gdbarch_call_dummy_length PARAMS ((struct gdbarch * gdbarch));
369      extern void set_gdbarch_call_dummy_length PARAMS ((struct gdbarch * gdbarch, int call_dummy_length));
370 #if GDB_MULTI_ARCH
371 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_LENGTH)
372 #define CALL_DUMMY_LENGTH (gdbarch_call_dummy_length (current_gdbarch))
373 #endif
374 #endif
375
376      typedef int (gdbarch_pc_in_call_dummy_ftype) PARAMS ((CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address));
377      extern int gdbarch_pc_in_call_dummy PARAMS ((struct gdbarch * gdbarch, CORE_ADDR pc, CORE_ADDR sp, CORE_ADDR frame_address));
378      extern void set_gdbarch_pc_in_call_dummy PARAMS ((struct gdbarch * gdbarch, gdbarch_pc_in_call_dummy_ftype * pc_in_call_dummy));
379 #if GDB_MULTI_ARCH
380 #if (GDB_MULTI_ARCH > 1) || !defined (PC_IN_CALL_DUMMY)
381 #define PC_IN_CALL_DUMMY(pc, sp, frame_address) (gdbarch_pc_in_call_dummy (current_gdbarch, pc, sp, frame_address))
382 #endif
383 #endif
384
385      extern int gdbarch_call_dummy_p PARAMS ((struct gdbarch * gdbarch));
386      extern void set_gdbarch_call_dummy_p PARAMS ((struct gdbarch * gdbarch, int call_dummy_p));
387 #if GDB_MULTI_ARCH
388 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_P)
389 #define CALL_DUMMY_P (gdbarch_call_dummy_p (current_gdbarch))
390 #endif
391 #endif
392
393      extern LONGEST *gdbarch_call_dummy_words PARAMS ((struct gdbarch * gdbarch));
394      extern void set_gdbarch_call_dummy_words PARAMS ((struct gdbarch * gdbarch, LONGEST * call_dummy_words));
395 #if GDB_MULTI_ARCH
396 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_WORDS)
397 #define CALL_DUMMY_WORDS (gdbarch_call_dummy_words (current_gdbarch))
398 #endif
399 #endif
400
401      extern int gdbarch_sizeof_call_dummy_words PARAMS ((struct gdbarch * gdbarch));
402      extern void set_gdbarch_sizeof_call_dummy_words PARAMS ((struct gdbarch * gdbarch, int sizeof_call_dummy_words));
403 #if GDB_MULTI_ARCH
404 #if (GDB_MULTI_ARCH > 1) || !defined (SIZEOF_CALL_DUMMY_WORDS)
405 #define SIZEOF_CALL_DUMMY_WORDS (gdbarch_sizeof_call_dummy_words (current_gdbarch))
406 #endif
407 #endif
408
409      extern int gdbarch_call_dummy_stack_adjust_p PARAMS ((struct gdbarch * gdbarch));
410      extern void set_gdbarch_call_dummy_stack_adjust_p PARAMS ((struct gdbarch * gdbarch, int call_dummy_stack_adjust_p));
411 #if GDB_MULTI_ARCH
412 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_STACK_ADJUST_P)
413 #define CALL_DUMMY_STACK_ADJUST_P (gdbarch_call_dummy_stack_adjust_p (current_gdbarch))
414 #endif
415 #endif
416
417      extern int gdbarch_call_dummy_stack_adjust PARAMS ((struct gdbarch * gdbarch));
418      extern void set_gdbarch_call_dummy_stack_adjust PARAMS ((struct gdbarch * gdbarch, int call_dummy_stack_adjust));
419 #if GDB_MULTI_ARCH
420 #if (GDB_MULTI_ARCH > 1) || !defined (CALL_DUMMY_STACK_ADJUST)
421 #define CALL_DUMMY_STACK_ADJUST (gdbarch_call_dummy_stack_adjust (current_gdbarch))
422 #endif
423 #endif
424
425      typedef void (gdbarch_fix_call_dummy_ftype) PARAMS ((char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value ** args, struct type * type, int gcc_p));
426      extern void gdbarch_fix_call_dummy PARAMS ((struct gdbarch * gdbarch, char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs, struct value ** args, struct type * type, int gcc_p));
427      extern void set_gdbarch_fix_call_dummy PARAMS ((struct gdbarch * gdbarch, gdbarch_fix_call_dummy_ftype * fix_call_dummy));
428 #if GDB_MULTI_ARCH
429 #if (GDB_MULTI_ARCH > 1) || !defined (FIX_CALL_DUMMY)
430 #define FIX_CALL_DUMMY(dummy, pc, fun, nargs, args, type, gcc_p) (gdbarch_fix_call_dummy (current_gdbarch, dummy, pc, fun, nargs, args, type, gcc_p))
431 #endif
432 #endif
433
434      extern int gdbarch_believe_pcc_promotion PARAMS ((struct gdbarch * gdbarch));
435      extern void set_gdbarch_believe_pcc_promotion PARAMS ((struct gdbarch * gdbarch, int believe_pcc_promotion));
436 #if GDB_MULTI_ARCH
437 #if (GDB_MULTI_ARCH > 1) || !defined (BELIEVE_PCC_PROMOTION)
438 #define BELIEVE_PCC_PROMOTION (gdbarch_believe_pcc_promotion (current_gdbarch))
439 #endif
440 #endif
441
442      extern int gdbarch_believe_pcc_promotion_type PARAMS ((struct gdbarch * gdbarch));
443      extern void set_gdbarch_believe_pcc_promotion_type PARAMS ((struct gdbarch * gdbarch, int believe_pcc_promotion_type));
444 #if GDB_MULTI_ARCH
445 #if (GDB_MULTI_ARCH > 1) || !defined (BELIEVE_PCC_PROMOTION_TYPE)
446 #define BELIEVE_PCC_PROMOTION_TYPE (gdbarch_believe_pcc_promotion_type (current_gdbarch))
447 #endif
448 #endif
449
450      typedef void (gdbarch_get_saved_register_ftype) PARAMS ((char *raw_buffer, int *optimized, CORE_ADDR * addrp, struct frame_info * frame, int regnum, enum lval_type * lval));
451      extern void gdbarch_get_saved_register PARAMS ((struct gdbarch * gdbarch, char *raw_buffer, int *optimized, CORE_ADDR * addrp, struct frame_info * frame, int regnum, enum lval_type * lval));
452      extern void set_gdbarch_get_saved_register PARAMS ((struct gdbarch * gdbarch, gdbarch_get_saved_register_ftype * get_saved_register));
453 #if GDB_MULTI_ARCH
454 #if (GDB_MULTI_ARCH > 1) || !defined (GET_SAVED_REGISTER)
455 #define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) (gdbarch_get_saved_register (current_gdbarch, raw_buffer, optimized, addrp, frame, regnum, lval))
456 #endif
457 #endif
458
459      typedef int (gdbarch_register_convertible_ftype) PARAMS ((int nr));
460      extern int gdbarch_register_convertible PARAMS ((struct gdbarch * gdbarch, int nr));
461      extern void set_gdbarch_register_convertible PARAMS ((struct gdbarch * gdbarch, gdbarch_register_convertible_ftype * register_convertible));
462 #if GDB_MULTI_ARCH
463 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERTIBLE)
464 #define REGISTER_CONVERTIBLE(nr) (gdbarch_register_convertible (current_gdbarch, nr))
465 #endif
466 #endif
467
468      typedef void (gdbarch_register_convert_to_virtual_ftype) PARAMS ((int regnum, struct type * type, char *from, char *to));
469      extern void gdbarch_register_convert_to_virtual PARAMS ((struct gdbarch * gdbarch, int regnum, struct type * type, char *from, char *to));
470      extern void set_gdbarch_register_convert_to_virtual PARAMS ((struct gdbarch * gdbarch, gdbarch_register_convert_to_virtual_ftype * register_convert_to_virtual));
471 #if GDB_MULTI_ARCH
472 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERT_TO_VIRTUAL)
473 #define REGISTER_CONVERT_TO_VIRTUAL(regnum, type, from, to) (gdbarch_register_convert_to_virtual (current_gdbarch, regnum, type, from, to))
474 #endif
475 #endif
476
477      typedef void (gdbarch_register_convert_to_raw_ftype) PARAMS ((struct type * type, int regnum, char *from, char *to));
478      extern void gdbarch_register_convert_to_raw PARAMS ((struct gdbarch * gdbarch, struct type * type, int regnum, char *from, char *to));
479      extern void set_gdbarch_register_convert_to_raw PARAMS ((struct gdbarch * gdbarch, gdbarch_register_convert_to_raw_ftype * register_convert_to_raw));
480 #if GDB_MULTI_ARCH
481 #if (GDB_MULTI_ARCH > 1) || !defined (REGISTER_CONVERT_TO_RAW)
482 #define REGISTER_CONVERT_TO_RAW(type, regnum, from, to) (gdbarch_register_convert_to_raw (current_gdbarch, type, regnum, from, to))
483 #endif
484 #endif
485
486      typedef void (gdbarch_extract_return_value_ftype) PARAMS ((struct type * type, char *regbuf, char *valbuf));
487      extern void gdbarch_extract_return_value PARAMS ((struct gdbarch * gdbarch, struct type * type, char *regbuf, char *valbuf));
488      extern void set_gdbarch_extract_return_value PARAMS ((struct gdbarch * gdbarch, gdbarch_extract_return_value_ftype * extract_return_value));
489 #if GDB_MULTI_ARCH
490 #if (GDB_MULTI_ARCH > 1) || !defined (EXTRACT_RETURN_VALUE)
491 #define EXTRACT_RETURN_VALUE(type, regbuf, valbuf) (gdbarch_extract_return_value (current_gdbarch, type, regbuf, valbuf))
492 #endif
493 #endif
494
495      typedef CORE_ADDR (gdbarch_push_arguments_ftype) PARAMS ((int nargs, struct value ** args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr));
496      extern CORE_ADDR gdbarch_push_arguments PARAMS ((struct gdbarch * gdbarch, int nargs, struct value ** args, CORE_ADDR sp, int struct_return, CORE_ADDR struct_addr));
497      extern void set_gdbarch_push_arguments PARAMS ((struct gdbarch * gdbarch, gdbarch_push_arguments_ftype * push_arguments));
498 #if GDB_MULTI_ARCH
499 #if (GDB_MULTI_ARCH > 1) || !defined (PUSH_ARGUMENTS)
500 #define PUSH_ARGUMENTS(nargs, args, sp, struct_return, struct_addr) (gdbarch_push_arguments (current_gdbarch, nargs, args, sp, struct_return, struct_addr))
501 #endif
502 #endif
503
504      typedef void (gdbarch_push_dummy_frame_ftype) PARAMS ((void));
505      extern void gdbarch_push_dummy_frame PARAMS ((struct gdbarch * gdbarch));
506      extern void set_gdbarch_push_dummy_frame PARAMS ((struct gdbarch * gdbarch, gdbarch_push_dummy_frame_ftype * push_dummy_frame));
507 #if GDB_MULTI_ARCH
508 #if (GDB_MULTI_ARCH > 1) || !defined (PUSH_DUMMY_FRAME)
509 #define PUSH_DUMMY_FRAME (gdbarch_push_dummy_frame (current_gdbarch))
510 #endif
511 #endif
512
513      typedef CORE_ADDR (gdbarch_push_return_address_ftype) PARAMS ((CORE_ADDR pc, CORE_ADDR sp));
514      extern CORE_ADDR gdbarch_push_return_address PARAMS ((struct gdbarch * gdbarch, CORE_ADDR pc, CORE_ADDR sp));
515      extern void set_gdbarch_push_return_address PARAMS ((struct gdbarch * gdbarch, gdbarch_push_return_address_ftype * push_return_address));
516 #if GDB_MULTI_ARCH
517 #if (GDB_MULTI_ARCH > 1) || !defined (PUSH_RETURN_ADDRESS)
518 #define PUSH_RETURN_ADDRESS(pc, sp) (gdbarch_push_return_address (current_gdbarch, pc, sp))
519 #endif
520 #endif
521
522      typedef void (gdbarch_pop_frame_ftype) PARAMS ((void));
523      extern void gdbarch_pop_frame PARAMS ((struct gdbarch * gdbarch));
524      extern void set_gdbarch_pop_frame PARAMS ((struct gdbarch * gdbarch, gdbarch_pop_frame_ftype * pop_frame));
525 #if GDB_MULTI_ARCH
526 #if (GDB_MULTI_ARCH > 1) || !defined (POP_FRAME)
527 #define POP_FRAME (gdbarch_pop_frame (current_gdbarch))
528 #endif
529 #endif
530
531      typedef CORE_ADDR (gdbarch_d10v_make_daddr_ftype) PARAMS ((CORE_ADDR x));
532      extern CORE_ADDR gdbarch_d10v_make_daddr PARAMS ((struct gdbarch * gdbarch, CORE_ADDR x));
533      extern void set_gdbarch_d10v_make_daddr PARAMS ((struct gdbarch * gdbarch, gdbarch_d10v_make_daddr_ftype * d10v_make_daddr));
534 #if GDB_MULTI_ARCH
535 #if (GDB_MULTI_ARCH > 1) || !defined (D10V_MAKE_DADDR)
536 #define D10V_MAKE_DADDR(x) (gdbarch_d10v_make_daddr (current_gdbarch, x))
537 #endif
538 #endif
539
540      typedef CORE_ADDR (gdbarch_d10v_make_iaddr_ftype) PARAMS ((CORE_ADDR x));
541      extern CORE_ADDR gdbarch_d10v_make_iaddr PARAMS ((struct gdbarch * gdbarch, CORE_ADDR x));
542      extern void set_gdbarch_d10v_make_iaddr PARAMS ((struct gdbarch * gdbarch, gdbarch_d10v_make_iaddr_ftype * d10v_make_iaddr));
543 #if GDB_MULTI_ARCH
544 #if (GDB_MULTI_ARCH > 1) || !defined (D10V_MAKE_IADDR)
545 #define D10V_MAKE_IADDR(x) (gdbarch_d10v_make_iaddr (current_gdbarch, x))
546 #endif
547 #endif
548
549      typedef int (gdbarch_d10v_daddr_p_ftype) PARAMS ((CORE_ADDR x));
550      extern int gdbarch_d10v_daddr_p PARAMS ((struct gdbarch * gdbarch, CORE_ADDR x));
551      extern void set_gdbarch_d10v_daddr_p PARAMS ((struct gdbarch * gdbarch, gdbarch_d10v_daddr_p_ftype * d10v_daddr_p));
552 #if GDB_MULTI_ARCH
553 #if (GDB_MULTI_ARCH > 1) || !defined (D10V_DADDR_P)
554 #define D10V_DADDR_P(x) (gdbarch_d10v_daddr_p (current_gdbarch, x))
555 #endif
556 #endif
557
558      typedef int (gdbarch_d10v_iaddr_p_ftype) PARAMS ((CORE_ADDR x));
559      extern int gdbarch_d10v_iaddr_p PARAMS ((struct gdbarch * gdbarch, CORE_ADDR x));
560      extern void set_gdbarch_d10v_iaddr_p PARAMS ((struct gdbarch * gdbarch, gdbarch_d10v_iaddr_p_ftype * d10v_iaddr_p));
561 #if GDB_MULTI_ARCH
562 #if (GDB_MULTI_ARCH > 1) || !defined (D10V_IADDR_P)
563 #define D10V_IADDR_P(x) (gdbarch_d10v_iaddr_p (current_gdbarch, x))
564 #endif
565 #endif
566
567      typedef CORE_ADDR (gdbarch_d10v_convert_daddr_to_raw_ftype) PARAMS ((CORE_ADDR x));
568      extern CORE_ADDR gdbarch_d10v_convert_daddr_to_raw PARAMS ((struct gdbarch * gdbarch, CORE_ADDR x));
569      extern void set_gdbarch_d10v_convert_daddr_to_raw PARAMS ((struct gdbarch * gdbarch, gdbarch_d10v_convert_daddr_to_raw_ftype * d10v_convert_daddr_to_raw));
570 #if GDB_MULTI_ARCH
571 #if (GDB_MULTI_ARCH > 1) || !defined (D10V_CONVERT_DADDR_TO_RAW)
572 #define D10V_CONVERT_DADDR_TO_RAW(x) (gdbarch_d10v_convert_daddr_to_raw (current_gdbarch, x))
573 #endif
574 #endif
575
576      typedef CORE_ADDR (gdbarch_d10v_convert_iaddr_to_raw_ftype) PARAMS ((CORE_ADDR x));
577      extern CORE_ADDR gdbarch_d10v_convert_iaddr_to_raw PARAMS ((struct gdbarch * gdbarch, CORE_ADDR x));
578      extern void set_gdbarch_d10v_convert_iaddr_to_raw PARAMS ((struct gdbarch * gdbarch, gdbarch_d10v_convert_iaddr_to_raw_ftype * d10v_convert_iaddr_to_raw));
579 #if GDB_MULTI_ARCH
580 #if (GDB_MULTI_ARCH > 1) || !defined (D10V_CONVERT_IADDR_TO_RAW)
581 #define D10V_CONVERT_IADDR_TO_RAW(x) (gdbarch_d10v_convert_iaddr_to_raw (current_gdbarch, x))
582 #endif
583 #endif
584
585      typedef void (gdbarch_store_struct_return_ftype) PARAMS ((CORE_ADDR addr, CORE_ADDR sp));
586      extern void gdbarch_store_struct_return PARAMS ((struct gdbarch * gdbarch, CORE_ADDR addr, CORE_ADDR sp));
587      extern void set_gdbarch_store_struct_return PARAMS ((struct gdbarch * gdbarch, gdbarch_store_struct_return_ftype * store_struct_return));
588 #if GDB_MULTI_ARCH
589 #if (GDB_MULTI_ARCH > 1) || !defined (STORE_STRUCT_RETURN)
590 #define STORE_STRUCT_RETURN(addr, sp) (gdbarch_store_struct_return (current_gdbarch, addr, sp))
591 #endif
592 #endif
593
594      typedef void (gdbarch_store_return_value_ftype) PARAMS ((struct type * type, char *valbuf));
595      extern void gdbarch_store_return_value PARAMS ((struct gdbarch * gdbarch, struct type * type, char *valbuf));
596      extern void set_gdbarch_store_return_value PARAMS ((struct gdbarch * gdbarch, gdbarch_store_return_value_ftype * store_return_value));
597 #if GDB_MULTI_ARCH
598 #if (GDB_MULTI_ARCH > 1) || !defined (STORE_RETURN_VALUE)
599 #define STORE_RETURN_VALUE(type, valbuf) (gdbarch_store_return_value (current_gdbarch, type, valbuf))
600 #endif
601 #endif
602
603      typedef CORE_ADDR (gdbarch_extract_struct_value_address_ftype) PARAMS ((char *regbuf));
604      extern CORE_ADDR gdbarch_extract_struct_value_address PARAMS ((struct gdbarch * gdbarch, char *regbuf));
605      extern void set_gdbarch_extract_struct_value_address PARAMS ((struct gdbarch * gdbarch, gdbarch_extract_struct_value_address_ftype * extract_struct_value_address));
606 #if GDB_MULTI_ARCH
607 #if (GDB_MULTI_ARCH > 1) || !defined (EXTRACT_STRUCT_VALUE_ADDRESS)
608 #define EXTRACT_STRUCT_VALUE_ADDRESS(regbuf) (gdbarch_extract_struct_value_address (current_gdbarch, regbuf))
609 #endif
610 #endif
611
612      typedef int (gdbarch_use_struct_convention_ftype) PARAMS ((int gcc_p, struct type * value_type));
613      extern int gdbarch_use_struct_convention PARAMS ((struct gdbarch * gdbarch, int gcc_p, struct type * value_type));
614      extern void set_gdbarch_use_struct_convention PARAMS ((struct gdbarch * gdbarch, gdbarch_use_struct_convention_ftype * use_struct_convention));
615 #if GDB_MULTI_ARCH
616 #if (GDB_MULTI_ARCH > 1) || !defined (USE_STRUCT_CONVENTION)
617 #define USE_STRUCT_CONVENTION(gcc_p, value_type) (gdbarch_use_struct_convention (current_gdbarch, gcc_p, value_type))
618 #endif
619 #endif
620
621      typedef void (gdbarch_frame_init_saved_regs_ftype) PARAMS ((struct frame_info * frame));
622      extern void gdbarch_frame_init_saved_regs PARAMS ((struct gdbarch * gdbarch, struct frame_info * frame));
623      extern void set_gdbarch_frame_init_saved_regs PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_init_saved_regs_ftype * frame_init_saved_regs));
624 #if GDB_MULTI_ARCH
625 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_INIT_SAVED_REGS)
626 #define FRAME_INIT_SAVED_REGS(frame) (gdbarch_frame_init_saved_regs (current_gdbarch, frame))
627 #endif
628 #endif
629
630      typedef void (gdbarch_init_extra_frame_info_ftype) PARAMS ((int fromleaf, struct frame_info * frame));
631      extern void gdbarch_init_extra_frame_info PARAMS ((struct gdbarch * gdbarch, int fromleaf, struct frame_info * frame));
632      extern void set_gdbarch_init_extra_frame_info PARAMS ((struct gdbarch * gdbarch, gdbarch_init_extra_frame_info_ftype * init_extra_frame_info));
633 #if GDB_MULTI_ARCH
634 #if (GDB_MULTI_ARCH > 1) || !defined (INIT_EXTRA_FRAME_INFO)
635 #define INIT_EXTRA_FRAME_INFO(fromleaf, frame) (gdbarch_init_extra_frame_info (current_gdbarch, fromleaf, frame))
636 #endif
637 #endif
638
639      typedef CORE_ADDR (gdbarch_skip_prologue_ftype) PARAMS ((CORE_ADDR ip));
640      extern CORE_ADDR gdbarch_skip_prologue PARAMS ((struct gdbarch * gdbarch, CORE_ADDR ip));
641      extern void set_gdbarch_skip_prologue PARAMS ((struct gdbarch * gdbarch, gdbarch_skip_prologue_ftype * skip_prologue));
642 #if GDB_MULTI_ARCH
643 #if (GDB_MULTI_ARCH > 1) || !defined (SKIP_PROLOGUE)
644 #define SKIP_PROLOGUE(ip) (gdbarch_skip_prologue (current_gdbarch, ip))
645 #endif
646 #endif
647
648      typedef int (gdbarch_inner_than_ftype) PARAMS ((CORE_ADDR lhs, CORE_ADDR rhs));
649      extern int gdbarch_inner_than PARAMS ((struct gdbarch * gdbarch, CORE_ADDR lhs, CORE_ADDR rhs));
650      extern void set_gdbarch_inner_than PARAMS ((struct gdbarch * gdbarch, gdbarch_inner_than_ftype * inner_than));
651 #if GDB_MULTI_ARCH
652 #if (GDB_MULTI_ARCH > 1) || !defined (INNER_THAN)
653 #define INNER_THAN(lhs, rhs) (gdbarch_inner_than (current_gdbarch, lhs, rhs))
654 #endif
655 #endif
656
657      typedef unsigned char *(gdbarch_breakpoint_from_pc_ftype) PARAMS ((CORE_ADDR * pcptr, int *lenptr));
658      extern unsigned char *gdbarch_breakpoint_from_pc PARAMS ((struct gdbarch * gdbarch, CORE_ADDR * pcptr, int *lenptr));
659      extern void set_gdbarch_breakpoint_from_pc PARAMS ((struct gdbarch * gdbarch, gdbarch_breakpoint_from_pc_ftype * breakpoint_from_pc));
660 #if GDB_MULTI_ARCH
661 #if (GDB_MULTI_ARCH > 1) || !defined (BREAKPOINT_FROM_PC)
662 #define BREAKPOINT_FROM_PC(pcptr, lenptr) (gdbarch_breakpoint_from_pc (current_gdbarch, pcptr, lenptr))
663 #endif
664 #endif
665
666      extern CORE_ADDR gdbarch_decr_pc_after_break PARAMS ((struct gdbarch * gdbarch));
667      extern void set_gdbarch_decr_pc_after_break PARAMS ((struct gdbarch * gdbarch, CORE_ADDR decr_pc_after_break));
668 #if GDB_MULTI_ARCH
669 #if (GDB_MULTI_ARCH > 1) || !defined (DECR_PC_AFTER_BREAK)
670 #define DECR_PC_AFTER_BREAK (gdbarch_decr_pc_after_break (current_gdbarch))
671 #endif
672 #endif
673
674      extern CORE_ADDR gdbarch_function_start_offset PARAMS ((struct gdbarch * gdbarch));
675      extern void set_gdbarch_function_start_offset PARAMS ((struct gdbarch * gdbarch, CORE_ADDR function_start_offset));
676 #if GDB_MULTI_ARCH
677 #if (GDB_MULTI_ARCH > 1) || !defined (FUNCTION_START_OFFSET)
678 #define FUNCTION_START_OFFSET (gdbarch_function_start_offset (current_gdbarch))
679 #endif
680 #endif
681
682      typedef void (gdbarch_remote_translate_xfer_address_ftype) PARAMS ((CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR * rem_addr, int *rem_len));
683      extern void gdbarch_remote_translate_xfer_address PARAMS ((struct gdbarch * gdbarch, CORE_ADDR gdb_addr, int gdb_len, CORE_ADDR * rem_addr, int *rem_len));
684      extern void set_gdbarch_remote_translate_xfer_address PARAMS ((struct gdbarch * gdbarch, gdbarch_remote_translate_xfer_address_ftype * remote_translate_xfer_address));
685 #if GDB_MULTI_ARCH
686 #if (GDB_MULTI_ARCH > 1) || !defined (REMOTE_TRANSLATE_XFER_ADDRESS)
687 #define REMOTE_TRANSLATE_XFER_ADDRESS(gdb_addr, gdb_len, rem_addr, rem_len) (gdbarch_remote_translate_xfer_address (current_gdbarch, gdb_addr, gdb_len, rem_addr, rem_len))
688 #endif
689 #endif
690
691      extern CORE_ADDR gdbarch_frame_args_skip PARAMS ((struct gdbarch * gdbarch));
692      extern void set_gdbarch_frame_args_skip PARAMS ((struct gdbarch * gdbarch, CORE_ADDR frame_args_skip));
693 #if GDB_MULTI_ARCH
694 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_ARGS_SKIP)
695 #define FRAME_ARGS_SKIP (gdbarch_frame_args_skip (current_gdbarch))
696 #endif
697 #endif
698
699      typedef int (gdbarch_frameless_function_invocation_ftype) PARAMS ((struct frame_info * fi));
700      extern int gdbarch_frameless_function_invocation PARAMS ((struct gdbarch * gdbarch, struct frame_info * fi));
701      extern void set_gdbarch_frameless_function_invocation PARAMS ((struct gdbarch * gdbarch, gdbarch_frameless_function_invocation_ftype * frameless_function_invocation));
702 #if GDB_MULTI_ARCH
703 #if (GDB_MULTI_ARCH > 1) || !defined (FRAMELESS_FUNCTION_INVOCATION)
704 #define FRAMELESS_FUNCTION_INVOCATION(fi) (gdbarch_frameless_function_invocation (current_gdbarch, fi))
705 #endif
706 #endif
707
708      typedef CORE_ADDR (gdbarch_frame_chain_ftype) PARAMS ((struct frame_info * frame));
709      extern CORE_ADDR gdbarch_frame_chain PARAMS ((struct gdbarch * gdbarch, struct frame_info * frame));
710      extern void set_gdbarch_frame_chain PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_chain_ftype * frame_chain));
711 #if GDB_MULTI_ARCH
712 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_CHAIN)
713 #define FRAME_CHAIN(frame) (gdbarch_frame_chain (current_gdbarch, frame))
714 #endif
715 #endif
716
717      typedef int (gdbarch_frame_chain_valid_ftype) PARAMS ((CORE_ADDR chain, struct frame_info * thisframe));
718      extern int gdbarch_frame_chain_valid PARAMS ((struct gdbarch * gdbarch, CORE_ADDR chain, struct frame_info * thisframe));
719      extern void set_gdbarch_frame_chain_valid PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_chain_valid_ftype * frame_chain_valid));
720 #if GDB_MULTI_ARCH
721 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_CHAIN_VALID)
722 #define FRAME_CHAIN_VALID(chain, thisframe) (gdbarch_frame_chain_valid (current_gdbarch, chain, thisframe))
723 #endif
724 #endif
725
726      typedef CORE_ADDR (gdbarch_frame_saved_pc_ftype) PARAMS ((struct frame_info * fi));
727      extern CORE_ADDR gdbarch_frame_saved_pc PARAMS ((struct gdbarch * gdbarch, struct frame_info * fi));
728      extern void set_gdbarch_frame_saved_pc PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_saved_pc_ftype * frame_saved_pc));
729 #if GDB_MULTI_ARCH
730 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_SAVED_PC)
731 #define FRAME_SAVED_PC(fi) (gdbarch_frame_saved_pc (current_gdbarch, fi))
732 #endif
733 #endif
734
735      typedef CORE_ADDR (gdbarch_frame_args_address_ftype) PARAMS ((struct frame_info * fi));
736      extern CORE_ADDR gdbarch_frame_args_address PARAMS ((struct gdbarch * gdbarch, struct frame_info * fi));
737      extern void set_gdbarch_frame_args_address PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_args_address_ftype * frame_args_address));
738 #if GDB_MULTI_ARCH
739 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_ARGS_ADDRESS)
740 #define FRAME_ARGS_ADDRESS(fi) (gdbarch_frame_args_address (current_gdbarch, fi))
741 #endif
742 #endif
743
744      typedef CORE_ADDR (gdbarch_frame_locals_address_ftype) PARAMS ((struct frame_info * fi));
745      extern CORE_ADDR gdbarch_frame_locals_address PARAMS ((struct gdbarch * gdbarch, struct frame_info * fi));
746      extern void set_gdbarch_frame_locals_address PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_locals_address_ftype * frame_locals_address));
747 #if GDB_MULTI_ARCH
748 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_LOCALS_ADDRESS)
749 #define FRAME_LOCALS_ADDRESS(fi) (gdbarch_frame_locals_address (current_gdbarch, fi))
750 #endif
751 #endif
752
753      typedef CORE_ADDR (gdbarch_saved_pc_after_call_ftype) PARAMS ((struct frame_info * frame));
754      extern CORE_ADDR gdbarch_saved_pc_after_call PARAMS ((struct gdbarch * gdbarch, struct frame_info * frame));
755      extern void set_gdbarch_saved_pc_after_call PARAMS ((struct gdbarch * gdbarch, gdbarch_saved_pc_after_call_ftype * saved_pc_after_call));
756 #if GDB_MULTI_ARCH
757 #if (GDB_MULTI_ARCH > 1) || !defined (SAVED_PC_AFTER_CALL)
758 #define SAVED_PC_AFTER_CALL(frame) (gdbarch_saved_pc_after_call (current_gdbarch, frame))
759 #endif
760 #endif
761
762      typedef int (gdbarch_frame_num_args_ftype) PARAMS ((struct frame_info * frame));
763      extern int gdbarch_frame_num_args PARAMS ((struct gdbarch * gdbarch, struct frame_info * frame));
764      extern void set_gdbarch_frame_num_args PARAMS ((struct gdbarch * gdbarch, gdbarch_frame_num_args_ftype * frame_num_args));
765 #if GDB_MULTI_ARCH
766 #if (GDB_MULTI_ARCH > 1) || !defined (FRAME_NUM_ARGS)
767 #define FRAME_NUM_ARGS(frame) (gdbarch_frame_num_args (current_gdbarch, frame))
768 #endif
769 #endif
770
771      extern struct gdbarch_tdep *gdbarch_tdep PARAMS ((struct gdbarch * gdbarch));
772
773
774 /* Mechanism for co-ordinating the selection of a specific
775    architecture.
776
777    GDB targets (*-tdep.c) can register an interest in a specific
778    architecture.  Other GDB components can register a need to maintain
779    per-architecture data.
780
781    The mechanisms below ensures that there is only a loose connection
782    between the set-architecture command and the various GDB
783    components.  Each component can independantly register their need
784    to maintain architecture specific data with gdbarch.
785
786    Pragmatics:
787
788    Previously, a single TARGET_ARCHITECTURE_HOOK was provided.  It
789    didn't scale.
790
791    The more traditional mega-struct containing architecture specific
792    data for all the various GDB components was also considered.  Since
793    GDB is built from a variable number of (fairly independant)
794    components it was determined that the global aproach was not
795    applicable. */
796
797
798 /* Register a new architectural family with GDB.
799
800    Register support for the specified ARCHITECTURE with GDB.  When
801    gdbarch determines that the specified architecture has been
802    selected, the corresponding INIT function is called.
803
804    --
805
806    The INIT function takes two parameters: INFO which contains the
807    information available to gdbarch about the (possibly new)
808    architecture; ARCHES which is a list of the previously created
809    ``struct gdbarch'' for this architecture.
810
811    The INIT function parameter INFO shall, as far as possible, be
812    pre-initialized with information obtained from INFO.ABFD or
813    previously selected architecture (if similar).  INIT shall ensure
814    that the INFO.BYTE_ORDER is non-zero.
815
816    The INIT function shall return any of: NULL - indicating that it
817    doesn't reconize the selected architecture; an existing ``struct
818    gdbarch'' from the ARCHES list - indicating that the new
819    architecture is just a synonym for an earlier architecture (see
820    gdbarch_list_lookup_by_info()); a newly created ``struct gdbarch''
821    - that describes the selected architecture (see
822    gdbarch_alloc()). */
823
824      struct gdbarch_list
825        {
826          struct gdbarch *gdbarch;
827          struct gdbarch_list *next;
828        };
829
830      struct gdbarch_info
831        {
832          /* Use default: bfd_arch_unknown (ZERO). */
833          enum bfd_architecture bfd_architecture;
834
835          /* Use default: NULL (ZERO). */
836          const struct bfd_arch_info *bfd_arch_info;
837
838          /* Use default: 0 (ZERO). */
839          int byte_order;
840
841          /* Use default: NULL (ZERO). */
842          bfd *abfd;
843
844          /* Use default: NULL (ZERO). */
845          struct gdbarch_tdep_info *tdep_info;
846        };
847
848      typedef struct gdbarch *(gdbarch_init_ftype) PARAMS ((struct gdbarch_info info, struct gdbarch_list * arches));
849
850      extern void register_gdbarch_init PARAMS ((enum bfd_architecture architecture, gdbarch_init_ftype *));
851
852
853 /* Helper function.  Search the list of ARCHES for a GDBARCH that
854    matches the information provided by INFO. */
855
856      extern struct gdbarch_list *gdbarch_list_lookup_by_info PARAMS ((struct gdbarch_list * arches, const struct gdbarch_info * info));
857
858
859 /* Helper function.  Create a preliminary ``struct gdbarch''.  Perform
860    basic initialization using values obtained from the INFO andTDEP
861    parameters.  set_gdbarch_*() functions are called to complete the
862    initialization of the object. */
863
864      extern struct gdbarch *gdbarch_alloc PARAMS ((const struct gdbarch_info * info, struct gdbarch_tdep * tdep));
865
866
867 /* Helper function. Force an update of the current architecture.  Used
868    by legacy targets that have added their own target specific
869    architecture manipulation commands.
870
871    The INFO parameter shall be fully initialized (``memset (&INFO,
872    sizeof (info), 0)'' set relevant fields) before gdbarch_update() is
873    called.  gdbarch_update() shall initialize any ``default'' fields
874    using information obtained from the previous architecture or
875    INFO.ABFD (if specified) before calling the corresponding
876    architectures INIT function. */
877
878      extern int gdbarch_update PARAMS ((struct gdbarch_info info));
879
880
881
882 /* Register per-architecture data-pointer.
883
884    Reserve space for a per-architecture data-pointer.  An identifier
885    for the reserved data-pointer is returned.  That identifer should
886    be saved in a local static.
887
888    When a new architecture is selected, INIT() is called.  When a
889    previous architecture is re-selected, the per-architecture
890    data-pointer for that previous architecture is restored (INIT() is
891    not called).
892
893    INIT() shall return the initial value for the per-architecture
894    data-pointer for the current architecture.
895
896    Multiple registrarants for any architecture are allowed (and
897    strongly encouraged).  */
898
899      typedef void *(gdbarch_data_ftype) PARAMS ((void));
900      extern struct gdbarch_data *register_gdbarch_data PARAMS ((gdbarch_data_ftype * init));
901
902 /* Return the value of the per-architecture data-pointer for the
903    current architecture. */
904
905      extern void *gdbarch_data PARAMS ((struct gdbarch_data *));
906
907
908
909 /* Register per-architecture memory region.
910
911    Provide a memory-region swap mechanism.  Per-architecture memory
912    region are created.  These memory regions are swapped whenever the
913    architecture is changed.  For a new architecture, the memory region
914    is initialized with zero (0) and the INIT function is called.
915
916    Memory regions are swapped / initialized in the order that they are
917    registered.  NULL DATA and/or INIT values can be specified.
918
919    New code should use register_gdbarch_data(). */
920
921      typedef void (gdbarch_swap_ftype) PARAMS ((void));
922      extern void register_gdbarch_swap PARAMS ((void *data, unsigned long size, gdbarch_swap_ftype * init));
923
924
925
926 /* The target-system-dependant byte order is dynamic */
927
928 /* TARGET_BYTE_ORDER_SELECTABLE_P determines if the target endianness
929    is selectable at runtime.  The user can use the ``set endian''
930    command to change it.  TARGET_BYTE_ORDER_AUTO is nonzero when
931    target_byte_order should be auto-detected (from the program image
932    say). */
933
934 #if GDB_MULTI_ARCH
935 /* Multi-arch GDB is always bi-endian. */
936 #define TARGET_BYTE_ORDER_SELECTABLE_P 1
937 #endif
938
939 #ifndef TARGET_BYTE_ORDER_SELECTABLE_P
940 /* compat - Catch old targets that define TARGET_BYTE_ORDER_SLECTABLE
941    when they should have defined TARGET_BYTE_ORDER_SELECTABLE_P 1 */
942 #ifdef TARGET_BYTE_ORDER_SELECTABLE
943 #define TARGET_BYTE_ORDER_SELECTABLE_P 1
944 #else
945 #define TARGET_BYTE_ORDER_SELECTABLE_P 0
946 #endif
947 #endif
948
949      extern int target_byte_order;
950 #ifdef TARGET_BYTE_ORDER_SELECTABLE
951 /* compat - Catch old targets that define TARGET_BYTE_ORDER_SELECTABLE
952    and expect defs.h to re-define TARGET_BYTE_ORDER. */
953 #undef TARGET_BYTE_ORDER
954 #endif
955 #ifndef TARGET_BYTE_ORDER
956 #define TARGET_BYTE_ORDER (target_byte_order + 0)
957 #endif
958
959      extern int target_byte_order_auto;
960 #ifndef TARGET_BYTE_ORDER_AUTO
961 #define TARGET_BYTE_ORDER_AUTO (target_byte_order_auto + 0)
962 #endif
963
964
965
966 /* The target-system-dependant BFD architecture is dynamic */
967
968      extern int target_architecture_auto;
969 #ifndef TARGET_ARCHITECTURE_AUTO
970 #define TARGET_ARCHITECTURE_AUTO (target_architecture_auto + 0)
971 #endif
972
973      extern const struct bfd_arch_info *target_architecture;
974 #ifndef TARGET_ARCHITECTURE
975 #define TARGET_ARCHITECTURE (target_architecture + 0)
976 #endif
977
978 /* Notify the target dependant backend of a change to the selected
979    architecture. A zero return status indicates that the target did
980    not like the change. */
981
982      extern int (*target_architecture_hook) PARAMS ((const struct bfd_arch_info *));
983
984
985
986 /* The target-system-dependant disassembler is semi-dynamic */
987
988 #include "dis-asm.h"            /* Get defs for disassemble_info */
989
990      extern int dis_asm_read_memory PARAMS ((bfd_vma memaddr, bfd_byte * myaddr,
991                                          int len, disassemble_info * info));
992
993      extern void dis_asm_memory_error PARAMS ((int status, bfd_vma memaddr,
994                                                disassemble_info * info));
995
996      extern void dis_asm_print_address PARAMS ((bfd_vma addr,
997                                                 disassemble_info * info));
998
999      extern int (*tm_print_insn) PARAMS ((bfd_vma, disassemble_info *));
1000      extern disassemble_info tm_print_insn_info;
1001 #ifndef TARGET_PRINT_INSN
1002 #define TARGET_PRINT_INSN(vma, info) (*tm_print_insn) (vma, info)
1003 #endif
1004 #ifndef TARGET_PRINT_INSN_INFO
1005 #define TARGET_PRINT_INSN_INFO (&tm_print_insn_info)
1006 #endif
1007
1008
1009
1010 /* Explicit test for D10V architecture.
1011    USE of these macro's is *STRONGLY* discouraged. */
1012
1013 #define GDB_TARGET_IS_D10V (TARGET_ARCHITECTURE->arch == bfd_arch_d10v)
1014 #ifndef D10V_MAKE_DADDR
1015 #define D10V_MAKE_DADDR(X) (fatal ("gdbarch: D10V_MAKE_DADDR"), 0)
1016 #endif
1017 #ifndef D10V_MAKE_IADDR
1018 #define D10V_MAKE_IADDR(X) (fatal ("gdbarch: D10V_MAKE_IADDR"), 0)
1019 #endif
1020
1021
1022 /* Fallback definition of FRAMELESS_FUNCTION_INVOCATION */
1023 #ifndef FRAMELESS_FUNCTION_INVOCATION
1024 #define FRAMELESS_FUNCTION_INVOCATION(FI) (0)
1025 #endif
1026
1027
1028 /* Fallback definition of REGISTER_CONVERTIBLE etc */
1029      extern int generic_register_convertible_not PARAMS ((int reg_nr));
1030 #ifndef REGISTER_CONVERTIBLE
1031 #define REGISTER_CONVERTIBLE(x) (0)
1032 #endif
1033 #ifndef REGISTER_CONVERT_TO_VIRTUAL
1034 #define REGISTER_CONVERT_TO_VIRTUAL(x, y, z, a)
1035 #endif
1036 #ifndef REGISTER_CONVERT_TO_RAW
1037 #define REGISTER_CONVERT_TO_RAW(x, y, z, a)
1038 #endif
1039
1040
1041 /* Fallback definition for EXTRACT_STRUCT_VALUE_ADDRESS */
1042 #ifndef EXTRACT_STRUCT_VALUE_ADDRESS
1043 #define EXTRACT_STRUCT_VALUE_ADDRESS_P (0)
1044 #define EXTRACT_STRUCT_VALUE_ADDRESS(X) (fatal ("gdbarch: EXTRACT_STRUCT_VALUE_ADDRESS"), 0)
1045 #else
1046 #ifndef EXTRACT_STRUCT_VALUE_ADDRESS_P
1047 #define EXTRACT_STRUCT_VALUE_ADDRESS_P (1)
1048 #endif
1049 #endif
1050
1051
1052 /* Fallback definition for REGISTER_NAME for systems still defining
1053    REGISTER_NAMES. */
1054 #ifndef REGISTER_NAME
1055      extern char *gdb_register_names[];
1056 #define REGISTER_NAME(i) gdb_register_names[i]
1057 #endif
1058
1059
1060 /* Set the dynamic target-system-dependant parameters (architecture,
1061    byte-order, ...) using information found in the BFD */
1062
1063      extern void set_gdbarch_from_file PARAMS ((bfd *));
1064
1065
1066 /* Explicitly set the dynamic target-system-dependant parameters based
1067    on bfd_architecture and machine. */
1068
1069      extern void set_architecture_from_arch_mach PARAMS ((enum bfd_architecture, unsigned long));
1070
1071
1072 /* Helper function for targets that don't know how my arguments are
1073    being passed */
1074
1075      extern int frame_num_args_unknown PARAMS ((struct frame_info * fi));
1076
1077
1078 /* gdbarch trace variable */
1079      extern int gdbarch_debug;
1080
1081      extern void gdbarch_dump PARAMS ((void));
1082
1083 #endif