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