Globs of changes. See the ChangeLog for details. Most related to
[binutils-gdb.git] / gdb / defs.h
1 /* Basic, host-specific, and target-specific definitions for GDB.
2 Copyright (C) 1986, 1989, 1991 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
19
20 #if !defined (DEFS_H)
21 #define DEFS_H 1
22
23 #include <stdio.h>
24
25 /* First include ansidecl.h so we can use the various macro definitions
26 in all subsequent file inclusions. FIXME: This inclusion can now
27 be removed from all files that include defs.h */
28
29 #include "ansidecl.h"
30
31 /* We could use the EXFUN macro in ansidecl.h to handle prototypes, but
32 the name is misleading the the result is ugly. So just define a simple
33 macro to handle the parameter lists. */
34
35 #ifdef __STDC__
36 #define PARAMS(paramlist) paramlist
37 #else
38 #define PARAMS(paramlist) ()
39 #endif
40
41 /* An address in the program being debugged. Host byte order. */
42 typedef unsigned int CORE_ADDR;
43
44 #define min(a, b) ((a) < (b) ? (a) : (b))
45 #define max(a, b) ((a) > (b) ? (a) : (b))
46
47 /* The character C++ uses to build identifiers that must be unique from
48 the program's identifiers (such as $this and $$vptr). */
49 #define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */
50
51 extern int errno; /* System call error return status */
52
53 extern int quit_flag;
54 extern int immediate_quit;
55
56 extern void
57 quit PARAMS ((void));
58
59 #define QUIT { if (quit_flag) quit (); }
60
61 /* Notes on classes: class_alias is for alias commands which are not
62 abbreviations of the original command. */
63
64 enum command_class
65 {
66 /* Special args to help_list */
67 all_classes = -2, all_commands = -1,
68 /* Classes of commands */
69 no_class = -1, class_run = 0, class_vars, class_stack,
70 class_files, class_support, class_info, class_breakpoint,
71 class_alias, class_obscure, class_user
72 };
73
74 /* the cleanup list records things that have to be undone
75 if an error happens (descriptors to be closed, memory to be freed, etc.)
76 Each link in the chain records a function to call and an
77 argument to give it.
78
79 Use make_cleanup to add an element to the cleanup chain.
80 Use do_cleanups to do all cleanup actions back to a given
81 point in the chain. Use discard_cleanups to remove cleanups
82 from the chain back to a given point, not doing them. */
83
84 struct cleanup
85 {
86 struct cleanup *next;
87 void (*function) PARAMS ((PTR));
88 PTR arg;
89 };
90
91 /* From blockframe.c */
92
93 extern int
94 inside_entry_scope PARAMS ((CORE_ADDR));
95
96 extern int
97 outside_startup_file PARAMS ((CORE_ADDR addr));
98
99 extern int
100 inside_main_scope PARAMS ((CORE_ADDR pc));
101
102 /* From cplus-dem.c */
103
104 extern char *
105 cplus_demangle PARAMS ((const char *, int));
106
107 extern char *
108 cplus_mangle_opname PARAMS ((char *, int));
109
110 /* From libmmalloc.a (memory mapped malloc library) */
111
112 extern PTR
113 mmalloc_attach PARAMS ((int, PTR));
114
115 extern PTR
116 mmalloc_detach PARAMS ((PTR));
117
118 extern PTR
119 mmalloc PARAMS ((PTR, long));
120
121 extern PTR
122 mrealloc PARAMS ((PTR, PTR, long));
123
124 extern void
125 mfree PARAMS ((PTR, PTR));
126
127 extern int
128 mmalloc_setkey PARAMS ((PTR, int, PTR));
129
130 extern PTR
131 mmalloc_getkey PARAMS ((PTR, int));
132
133 /* From utils.c */
134
135 extern void
136 init_malloc PARAMS ((PTR));
137
138 extern void
139 request_quit PARAMS ((int));
140
141 extern void
142 do_cleanups PARAMS ((struct cleanup *));
143
144 extern void
145 discard_cleanups PARAMS ((struct cleanup *));
146
147 /* The bare make_cleanup function is one of those rare beasts that
148 takes almost any type of function as the first arg and anything that
149 will fit in a "void *" as the second arg.
150
151 Should be, once all calls and called-functions are cleaned up:
152 extern struct cleanup *
153 make_cleanup PARAMS ((void (*function) (PTR), PTR));
154
155 Until then, lint and/or various type-checking compiler options will
156 complain about make_cleanup calls. It'd be wrong to just cast things,
157 since the type actually passed when the function is called would be
158 wrong. */
159
160 extern struct cleanup *
161 make_cleanup ();
162
163 extern struct cleanup *
164 save_cleanups PARAMS ((void));
165
166 extern void
167 restore_cleanups PARAMS ((struct cleanup *));
168
169 extern void
170 free_current_contents PARAMS ((char **));
171
172 extern void
173 null_cleanup PARAMS ((char **));
174
175 extern int
176 myread PARAMS ((int, char *, int));
177
178 extern int
179 query ();
180
181 extern void
182 wrap_here PARAMS ((char *));
183
184 extern void
185 reinitialize_more_filter PARAMS ((void));
186
187 extern int
188 print_insn PARAMS ((CORE_ADDR, FILE *));
189
190 extern void
191 fputs_filtered PARAMS ((const char *, FILE *));
192
193 extern void
194 puts_filtered PARAMS ((char *));
195
196 extern void
197 fprintf_filtered ();
198
199 extern void
200 printf_filtered ();
201
202 extern void
203 print_spaces PARAMS ((int, FILE *));
204
205 extern void
206 print_spaces_filtered PARAMS ((int, FILE *));
207
208 extern char *
209 n_spaces PARAMS ((int));
210
211 extern void
212 printchar PARAMS ((int, FILE *, int));
213
214 extern void
215 fprint_symbol PARAMS ((FILE *, char *));
216
217 extern void
218 fputs_demangled PARAMS ((char *, FILE *, int));
219
220 extern void
221 perror_with_name PARAMS ((char *));
222
223 extern void
224 print_sys_errmsg PARAMS ((char *, int));
225
226 /* From regex.c */
227
228 extern char *
229 re_comp PARAMS ((char *));
230
231 /* From symfile.c */
232
233 extern void
234 symbol_file_command PARAMS ((char *, int));
235
236 /* From main.c */
237
238 extern char *
239 gdb_readline PARAMS ((char *));
240
241 extern char *
242 command_line_input PARAMS ((char *, int));
243
244 extern void
245 print_prompt PARAMS ((void));
246
247 extern int
248 batch_mode PARAMS ((void));
249
250 extern int
251 input_from_terminal_p PARAMS ((void));
252
253 extern int
254 catch_errors PARAMS ((int (*) (char *), char *, char *));
255
256 /* From printcmd.c */
257
258 extern void
259 set_next_address PARAMS ((CORE_ADDR));
260
261 extern void
262 print_address_symbolic PARAMS ((CORE_ADDR, FILE *, int, char *));
263
264 extern void
265 print_address PARAMS ((CORE_ADDR, FILE *));
266
267 /* From source.c */
268
269 extern int
270 openp PARAMS ((char *, int, char *, int, int, char **));
271
272 extern void
273 mod_path PARAMS ((char *, char **));
274
275 extern void
276 directory_command PARAMS ((char *, int));
277
278 extern void
279 init_source_path PARAMS ((void));
280
281 /* From findvar.c */
282
283 extern int
284 read_relative_register_raw_bytes PARAMS ((int, char *));
285
286 /* From readline (but not in any readline .h files). */
287
288 extern char *
289 tilde_expand PARAMS ((char *));
290
291 /* Structure for saved commands lines
292 (for breakpoints, defined commands, etc). */
293
294 struct command_line
295 {
296 struct command_line *next;
297 char *line;
298 };
299
300 extern struct command_line *
301 read_command_lines PARAMS ((void));
302
303 extern void
304 free_command_lines PARAMS ((struct command_line **));
305
306 /* String containing the current directory (what getwd would return). */
307
308 extern char *current_directory;
309
310 /* Default radixes for input and output. Only some values supported. */
311 extern unsigned input_radix;
312 extern unsigned output_radix;
313
314 /* Baud rate specified for communication with serial target systems. */
315 extern char *baud_rate;
316
317 /* Languages represented in the symbol table and elsewhere. */
318
319 enum language
320 {
321 language_unknown, /* Language not known */
322 language_auto, /* Placeholder for automatic setting */
323 language_c, /* C */
324 language_cplus, /* C++ */
325 language_m2 /* Modula-2 */
326 };
327
328 /* Return a format string for printf that will print a number in the local
329 (language-specific) hexadecimal format. Result is static and is
330 overwritten by the next call. local_hex_format_custom takes printf
331 options like "08" or "l" (to produce e.g. %08x or %lx). */
332
333 #define local_hex_format() (current_language->la_hex_format)
334
335 extern char *
336 local_hex_format_custom PARAMS ((char *)); /* language.c */
337
338 /* Return a string that contains a number formatted in the local
339 (language-specific) hexadecimal format. Result is static and is
340 overwritten by the next call. local_hex_string_custom takes printf
341 options like "08" or "l". */
342
343 extern char *
344 local_hex_string PARAMS ((int)); /* language.c */
345
346 extern char *
347 local_hex_string_custom PARAMS ((int, char *)); /* language.c */
348
349 \f
350 /* Host machine definition. This will be a symlink to one of the
351 xm-*.h files, built by the `configure' script. */
352
353 #include "xm.h"
354
355 /*
356 * Allow things in gdb to be declared "const". If compiling ANSI, it
357 * just works. If compiling with gcc but non-ansi, redefine to __const__.
358 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
359 * objects be read-write rather than read-only.
360 */
361
362 #ifndef const
363 #ifndef __STDC__
364 # ifdef __GNUC__
365 # define const __const__
366 # else
367 # define const /*nothing*/
368 # endif /* GNUC */
369 #endif /* STDC */
370 #endif /* const */
371
372 #ifndef volatile
373 #ifndef __STDC__
374 # ifdef __GNUC__
375 # define volatile __volatile__
376 # else
377 # define volatile /*nothing*/
378 # endif /* GNUC */
379 #endif /* STDC */
380 #endif /* volatile */
381
382 /* Some compilers (many AT&T SVR4 compilers for instance), do not accept
383 declarations of functions that never return (exit for instance) as
384 "volatile void". For such compilers "NORETURN" can be defined away
385 to keep them happy */
386
387 #ifndef NORETURN
388 # define NORETURN volatile
389 #endif
390
391 /* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
392
393 #if !defined (UINT_MAX)
394 #define UINT_MAX 0xffffffff
395 #endif
396
397 #if !defined (LONG_MAX)
398 #define LONG_MAX 0x7fffffff
399 #endif
400
401 #if !defined (INT_MAX)
402 #define INT_MAX 0x7fffffff
403 #endif
404
405 #if !defined (INT_MIN)
406 /* Two's complement, 32 bit. */
407 #define INT_MIN -0x80000000
408 #endif
409
410 /* Number of bits in a char or unsigned char for the target machine.
411 Just like CHAR_BIT in <limits.h> but describes the target machine. */
412 #if !defined (TARGET_CHAR_BIT)
413 #define TARGET_CHAR_BIT 8
414 #endif
415
416 /* Number of bits in a short or unsigned short for the target machine. */
417 #if !defined (TARGET_SHORT_BIT)
418 #define TARGET_SHORT_BIT (sizeof (short) * TARGET_CHAR_BIT)
419 #endif
420
421 /* Number of bits in an int or unsigned int for the target machine. */
422 #if !defined (TARGET_INT_BIT)
423 #define TARGET_INT_BIT (sizeof (int) * TARGET_CHAR_BIT)
424 #endif
425
426 /* Number of bits in a long or unsigned long for the target machine. */
427 #if !defined (TARGET_LONG_BIT)
428 #define TARGET_LONG_BIT (sizeof (long) * TARGET_CHAR_BIT)
429 #endif
430
431 /* Number of bits in a long long or unsigned long long for the target machine. */
432 #if !defined (TARGET_LONG_LONG_BIT)
433 #define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
434 #endif
435
436 /* Number of bits in a float for the target machine. */
437 #if !defined (TARGET_FLOAT_BIT)
438 #define TARGET_FLOAT_BIT (sizeof (float) * TARGET_CHAR_BIT)
439 #endif
440
441 /* Number of bits in a double for the target machine. */
442 #if !defined (TARGET_DOUBLE_BIT)
443 #define TARGET_DOUBLE_BIT (sizeof (double) * TARGET_CHAR_BIT)
444 #endif
445
446 /* Number of bits in a long double for the target machine. */
447 #if !defined (TARGET_LONG_DOUBLE_BIT)
448 #define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
449 #endif
450
451 /* Number of bits in a "complex" for the target machine. */
452 #if !defined (TARGET_COMPLEX_BIT)
453 #define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
454 #endif
455
456 /* Number of bits in a "double complex" for the target machine. */
457 #if !defined (TARGET_DOUBLE_COMPLEX_BIT)
458 #define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
459 #endif
460
461 /* Number of bits in a pointer for the target machine */
462 #if !defined (TARGET_PTR_BIT)
463 #define TARGET_PTR_BIT TARGET_INT_BIT
464 #endif
465
466 /* Convert a LONGEST to an int. This is used in contexts (e.g. number
467 of arguments to a function, number in a value history, register
468 number, etc.) where the value must not be larger than can fit
469 in an int. */
470 #if !defined (longest_to_int)
471 #if defined (LONG_LONG)
472 #define longest_to_int(x) (((x) > INT_MAX || (x) < INT_MIN) \
473 ? error ("Value out of range.") : (int) (x))
474 #else /* No LONG_LONG. */
475 /* Assume sizeof (int) == sizeof (long). */
476 #define longest_to_int(x) ((int) (x))
477 #endif /* No LONG_LONG. */
478 #endif /* No longest_to_int. */
479
480 /* This should not be a typedef, because "unsigned LONGEST" needs
481 to work. LONG_LONG is defined if the host has "long long". */
482
483 #ifndef LONGEST
484 # ifdef LONG_LONG
485 # define LONGEST long long
486 # else
487 # define LONGEST long
488 # endif
489 #endif
490
491 /* Assorted functions we can declare, now that const and volatile are
492 defined. */
493
494 extern char *
495 savestring PARAMS ((const char *, int));
496
497 extern char *
498 msavestring PARAMS ((void *, const char *, int));
499
500 extern char *
501 strsave PARAMS ((const char *));
502
503 extern char *
504 mstrsave PARAMS ((void *, const char *));
505
506 extern char *
507 concat PARAMS ((char *, ...));
508
509 extern PTR
510 xmalloc PARAMS ((long));
511
512 extern PTR
513 xrealloc PARAMS ((PTR, long));
514
515 extern PTR
516 xmmalloc PARAMS ((PTR, long));
517
518 extern PTR
519 xmrealloc PARAMS ((PTR, PTR, long));
520
521 extern PTR
522 mmalloc PARAMS ((PTR, long));
523
524 extern PTR
525 mrealloc PARAMS ((PTR, PTR, long));
526
527 extern void
528 mfree PARAMS ((PTR, PTR));
529
530 extern int
531 mmcheck PARAMS ((PTR, void (*) (void)));
532
533 extern int
534 mmtrace PARAMS ((void));
535
536 extern int
537 parse_escape PARAMS ((char **));
538
539 extern char *reg_names[];
540
541 extern NORETURN void /* Does not return to the caller. */
542 error ();
543
544 extern NORETURN void /* Does not return to the caller. */
545 fatal ();
546
547 extern NORETURN void /* Not specified as volatile in ... */
548 exit PARAMS ((int)); /* 4.10.4.3 */
549
550 extern NORETURN void /* Does not return to the caller. */
551 nomem PARAMS ((long));
552
553 extern NORETURN void /* Does not return to the caller. */
554 return_to_top_level PARAMS ((void));
555
556 extern void
557 warning_setup PARAMS ((void));
558
559 extern void
560 warning ();
561
562 /* Global functions from other, non-gdb GNU thingies (libiberty for
563 instance) */
564
565 extern char *
566 basename PARAMS ((char *));
567
568 extern char *
569 getenv PARAMS ((CONST char *));
570
571 extern char **
572 buildargv PARAMS ((char *));
573
574 extern void
575 freeargv PARAMS ((char **));
576
577 /* For now, we can't include <stdlib.h> because it conflicts with
578 "../include/getopt.h". (FIXME)
579
580 However, if a function is defined in the ANSI C standard and a prototype
581 for that function is defined and visible in any header file in an ANSI
582 conforming environment, then that prototype must match the definition in
583 the ANSI standard. So we can just duplicate them here without conflict,
584 since they must be the same in all conforming ANSI environments. If
585 these cause problems, then the environment is not ANSI conformant. */
586
587 #ifdef __STDC__
588 #include <stddef.h>
589 #endif
590
591 extern int
592 fclose PARAMS ((FILE *stream)); /* 4.9.5.1 */
593
594 extern double
595 atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
596
597 #ifndef MALLOC_INCOMPATIBLE
598
599 extern PTR
600 malloc PARAMS ((size_t size)); /* 4.10.3.3 */
601
602 extern PTR
603 realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
604
605 extern void
606 free PARAMS ((void *)); /* 4.10.3.2 */
607
608 #endif /* MALLOC_INCOMPATIBLE */
609
610 extern void
611 qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
612 size_t size,
613 int (*comp)(const void *, const void *)));
614
615 extern char *
616 strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
617
618 extern char *
619 strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
620
621 extern char *
622 strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
623
624 extern char *
625 strerror PARAMS ((int)); /* 4.11.6.2 */
626
627 /* Various possibilities for alloca. */
628 #ifndef alloca
629 # ifdef __GNUC__
630 # define alloca __builtin_alloca
631 # else
632 # ifdef sparc
633 # include <alloca.h>
634 # endif
635 extern char *alloca ();
636 # endif
637 #endif
638
639 /* TARGET_BYTE_ORDER and HOST_BYTE_ORDER should be defined to one of these. */
640
641 #if !defined (BIG_ENDIAN)
642 #define BIG_ENDIAN 4321
643 #endif
644
645 #if !defined (LITTLE_ENDIAN)
646 #define LITTLE_ENDIAN 1234
647 #endif
648
649 /* Target-system-dependent parameters for GDB.
650
651 The standard thing is to include defs.h. However, files that are
652 specific to a particular target can define TM_FILE_OVERRIDE before
653 including defs.h, then can include any particular tm-file they desire. */
654
655 /* Target machine definition. This will be a symlink to one of the
656 tm-*.h files, built by the `configure' script. */
657
658 #ifndef TM_FILE_OVERRIDE
659 #include "tm.h"
660 #endif
661
662 /* The bit byte-order has to do just with numbering of bits in
663 debugging symbols and such. Conceptually, it's quite separate
664 from byte/word byte order. */
665
666 #if !defined (BITS_BIG_ENDIAN)
667 #if TARGET_BYTE_ORDER == BIG_ENDIAN
668 #define BITS_BIG_ENDIAN 1
669 #endif /* Big endian. */
670
671 #if TARGET_BYTE_ORDER == LITTLE_ENDIAN
672 #define BITS_BIG_ENDIAN 0
673 #endif /* Little endian. */
674 #endif /* BITS_BIG_ENDIAN not defined. */
675
676 /* Swap LEN bytes at BUFFER between target and host byte-order. */
677 #if TARGET_BYTE_ORDER == HOST_BYTE_ORDER
678 #define SWAP_TARGET_AND_HOST(buffer,len)
679 #else /* Target and host byte order differ. */
680 #define SWAP_TARGET_AND_HOST(buffer,len) \
681 { \
682 char tmp; \
683 char *p = (char *)(buffer); \
684 char *q = ((char *)(buffer)) + len - 1; \
685 for (; p < q; p++, q--) \
686 { \
687 tmp = *q; \
688 *q = *p; \
689 *p = tmp; \
690 } \
691 }
692 #endif /* Target and host byte order differ. */
693
694 /* On some machines there are bits in addresses which are not really
695 part of the address, but are used by the kernel, the hardware, etc.
696 for special purposes. ADDR_BITS_REMOVE takes out any such bits
697 so we get a "real" address such as one would find in a symbol
698 table. ADDR_BITS_SET sets those bits the way the system wants
699 them. */
700 #if !defined (ADDR_BITS_REMOVE)
701 #define ADDR_BITS_REMOVE(addr) (addr)
702 #define ADDR_BITS_SET(addr) (addr)
703 #endif /* No ADDR_BITS_REMOVE. */
704
705 #if !defined (SYS_SIGLIST_MISSING)
706 #define SYS_SIGLIST_MISSING defined (USG)
707 #endif /* No SYS_SIGLIST_MISSING */
708
709 /* From valops.c */
710
711 extern CORE_ADDR
712 push_bytes PARAMS ((CORE_ADDR, char *, int));
713
714 /* In some modules, we don't have a definition of REGISTER_TYPE yet, so we
715 must avoid prototyping this function for now. FIXME. Should be:
716 extern CORE_ADDR
717 push_word PARAMS ((CORE_ADDR, REGISTER_TYPE));
718 */
719 extern CORE_ADDR
720 push_word ();
721
722 #endif /* !defined (DEFS_H) */