* elf.c (_bfd_elf_make_section_from_shdr): Only set SEC_DATA if
[deliverable/binutils-gdb.git] / gdb / defs.h
CommitLineData
7d9884b9 1/* Basic, host-specific, and target-specific definitions for GDB.
bd5635a1
RP
2 Copyright (C) 1986, 1989, 1991 Free Software Foundation, Inc.
3
4This file is part of GDB.
5
a10c0d36 6This program is free software; you can redistribute it and/or modify
bd5635a1 7it under the terms of the GNU General Public License as published by
a10c0d36
JG
8the Free Software Foundation; either version 2 of the License, or
9(at your option) any later version.
bd5635a1 10
a10c0d36 11This program is distributed in the hope that it will be useful,
bd5635a1
RP
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
a10c0d36
JG
17along with this program; if not, write to the Free Software
18Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
bd5635a1 19
c1ace5b5 20#if !defined (DEFS_H)
d747e0af
MT
21#define DEFS_H 1
22
23#include <stdio.h>
24
25/* First include ansidecl.h so we can use the various macro definitions
debd3443 26 here and in all subsequent file inclusions. */
d747e0af
MT
27
28#include "ansidecl.h"
29
7343d716
JK
30/* For BFD64 and bfd_vma. */
31#include "bfd.h"
32
33/* An address in the program being debugged. Host byte order. Rather
34 than duplicate all the logic in BFD which figures out what type
35 this is (long, long long, etc.) and whether it needs to be 64
36 bits (the host/target interactions are subtle), we just use
37 bfd_vma. */
38
39typedef bfd_vma CORE_ADDR;
bd5635a1
RP
40
41#define min(a, b) ((a) < (b) ? (a) : (b))
42#define max(a, b) ((a) > (b) ? (a) : (b))
43
2e4964ad
FF
44/* Gdb does *lots* of string compares. Use macros to speed them up by
45 avoiding function calls if the first characters are not the same. */
46
bd5d07d9 47#define STRCMP(a,b) (*(a) == *(b) ? strcmp ((a), (b)) : (int)*(a) - (int)*(b))
2e4964ad
FF
48#define STREQ(a,b) (*(a) == *(b) ? !strcmp ((a), (b)) : 0)
49#define STREQN(a,b,c) (*(a) == *(b) ? !strncmp ((a), (b), (c)) : 0)
50
dd577ca5 51/* The character GNU C++ uses to build identifiers that must be unique from
bd5635a1
RP
52 the program's identifiers (such as $this and $$vptr). */
53#define CPLUS_MARKER '$' /* May be overridden to '.' for SysV */
54
e146177e 55#include <errno.h> /* System call error return status */
bd5635a1
RP
56
57extern int quit_flag;
58extern int immediate_quit;
51b80b00 59extern int sevenbit_strings;
d747e0af
MT
60
61extern void
62quit PARAMS ((void));
bd5635a1
RP
63
64#define QUIT { if (quit_flag) quit (); }
65
e58de8a2
FF
66/* Command classes are top-level categories into which commands are broken
67 down for "help" purposes.
68 Notes on classes: class_alias is for alias commands which are not
69 abbreviations of the original command. class-pseudo is for commands
70 which are not really commands nor help topics ("stop"). */
bd5635a1
RP
71
72enum command_class
73{
74 /* Special args to help_list */
75 all_classes = -2, all_commands = -1,
76 /* Classes of commands */
77 no_class = -1, class_run = 0, class_vars, class_stack,
78 class_files, class_support, class_info, class_breakpoint,
e58de8a2
FF
79 class_alias, class_obscure, class_user, class_maintenance,
80 class_pseudo
bd5635a1
RP
81};
82
bd5d07d9
FF
83/* Languages represented in the symbol table and elsewhere.
84 This should probably be in language.h, but since enum's can't
85 be forward declared to satisfy opaque references before their
86 actual definition, needs to be here. */
87
88enum language
89{
90 language_unknown, /* Language not known */
91 language_auto, /* Placeholder for automatic setting */
92 language_c, /* C */
93 language_cplus, /* C++ */
bd5d07d9 94 language_chill, /* Chill */
bd5d07d9
FF
95 language_m2 /* Modula-2 */
96};
97
bd5635a1
RP
98/* the cleanup list records things that have to be undone
99 if an error happens (descriptors to be closed, memory to be freed, etc.)
100 Each link in the chain records a function to call and an
101 argument to give it.
102
103 Use make_cleanup to add an element to the cleanup chain.
104 Use do_cleanups to do all cleanup actions back to a given
105 point in the chain. Use discard_cleanups to remove cleanups
106 from the chain back to a given point, not doing them. */
107
108struct cleanup
109{
110 struct cleanup *next;
d747e0af
MT
111 void (*function) PARAMS ((PTR));
112 PTR arg;
bd5635a1
RP
113};
114
d747e0af
MT
115/* From blockframe.c */
116
117extern int
e146177e 118inside_entry_func PARAMS ((CORE_ADDR));
d747e0af
MT
119
120extern int
e146177e 121inside_entry_file PARAMS ((CORE_ADDR addr));
d747e0af
MT
122
123extern int
e146177e 124inside_main_func PARAMS ((CORE_ADDR pc));
d747e0af 125
7532cf10
FF
126/* From ch-lang.c, for the moment. (FIXME) */
127
128extern char *
129chill_demangle PARAMS ((const char *));
7532cf10 130
2e4964ad 131/* From libiberty.a */
d747e0af
MT
132
133extern char *
134cplus_demangle PARAMS ((const char *, int));
135
136extern char *
137cplus_mangle_opname PARAMS ((char *, int));
138
318bf84f 139/* From libmmalloc.a (memory mapped malloc library) */
d747e0af
MT
140
141extern PTR
318bf84f 142mmalloc_attach PARAMS ((int, PTR));
d747e0af
MT
143
144extern PTR
318bf84f 145mmalloc_detach PARAMS ((PTR));
d747e0af
MT
146
147extern PTR
318bf84f 148mmalloc PARAMS ((PTR, long));
d747e0af
MT
149
150extern PTR
318bf84f 151mrealloc PARAMS ((PTR, PTR, long));
d747e0af
MT
152
153extern void
318bf84f 154mfree PARAMS ((PTR, PTR));
d747e0af 155
318bf84f
FF
156extern int
157mmalloc_setkey PARAMS ((PTR, int, PTR));
d747e0af
MT
158
159extern PTR
318bf84f 160mmalloc_getkey PARAMS ((PTR, int));
d747e0af
MT
161
162/* From utils.c */
163
d630b615
FF
164extern int
165strcmp_iw PARAMS ((const char *, const char *));
166
e146177e
SEF
167extern char *
168safe_strerror PARAMS ((int));
169
170extern char *
171safe_strsignal PARAMS ((int));
172
d747e0af 173extern void
e3c16900 174init_malloc PARAMS ((void *));
d747e0af
MT
175
176extern void
177request_quit PARAMS ((int));
178
179extern void
180do_cleanups PARAMS ((struct cleanup *));
181
182extern void
183discard_cleanups PARAMS ((struct cleanup *));
184
185/* The bare make_cleanup function is one of those rare beasts that
186 takes almost any type of function as the first arg and anything that
187 will fit in a "void *" as the second arg.
188
189 Should be, once all calls and called-functions are cleaned up:
190extern struct cleanup *
84d59861 191make_cleanup PARAMS ((void (*function) (void *), void *));
d747e0af
MT
192
193 Until then, lint and/or various type-checking compiler options will
194 complain about make_cleanup calls. It'd be wrong to just cast things,
195 since the type actually passed when the function is called would be
196 wrong. */
197
198extern struct cleanup *
199make_cleanup ();
200
201extern struct cleanup *
202save_cleanups PARAMS ((void));
203
204extern void
205restore_cleanups PARAMS ((struct cleanup *));
206
207extern void
208free_current_contents PARAMS ((char **));
209
210extern void
211null_cleanup PARAMS ((char **));
212
213extern int
214myread PARAMS ((int, char *, int));
215
216extern int
217query ();
6c803036 218\f
96f7edbd
JK
219/* Annotation stuff. */
220
6c803036
JK
221extern int annotation_level; /* in stack.c */
222\f
51b80b00
FF
223extern void
224begin_line PARAMS ((void));
225
d747e0af
MT
226extern void
227wrap_here PARAMS ((char *));
228
229extern void
230reinitialize_more_filter PARAMS ((void));
231
04f566a3
JK
232typedef FILE GDB_FILE;
233#define gdb_stdout stdout
234#define gdb_stderr stderr
235
d747e0af 236extern int
04f566a3
JK
237print_insn PARAMS ((CORE_ADDR, GDB_FILE *));
238
239extern void
240gdb_flush PARAMS ((GDB_FILE *));
241
242extern GDB_FILE *
243gdb_fopen PARAMS ((char * name, char * mode));
244
245extern void
246fputs_filtered PARAMS ((const char *, GDB_FILE *));
247
248extern void
249fputs_unfiltered PARAMS ((const char *, GDB_FILE *));
d747e0af
MT
250
251extern void
04f566a3
JK
252fputc_unfiltered PARAMS ((int, GDB_FILE *));
253
254extern void
255putc_unfiltered PARAMS ((int));
256
257#define putchar_unfiltered(C) putc_unfiltered(C)
d747e0af
MT
258
259extern void
260puts_filtered PARAMS ((char *));
261
04f566a3
JK
262extern void
263puts_unfiltered PARAMS ((char *));
264
51b80b00
FF
265extern void
266vprintf_filtered ();
267
a8e033f2 268extern void
4dba98fb 269vfprintf_filtered ();
a8e033f2 270
d747e0af
MT
271extern void
272fprintf_filtered ();
273
a8e033f2
SG
274extern void
275fprintfi_filtered ();
276
d747e0af
MT
277extern void
278printf_filtered ();
279
a8e033f2
SG
280extern void
281printfi_filtered ();
282
d747e0af 283extern void
04f566a3
JK
284vprintf_unfiltered ();
285
286extern void
287vfprintf_unfiltered ();
288
289extern void
290fprintf_unfiltered ();
d747e0af
MT
291
292extern void
04f566a3
JK
293printf_unfiltered ();
294
295extern void
296print_spaces PARAMS ((int, GDB_FILE *));
297
298extern void
299print_spaces_filtered PARAMS ((int, GDB_FILE *));
d747e0af
MT
300
301extern char *
302n_spaces PARAMS ((int));
303
304extern void
04f566a3 305gdb_printchar PARAMS ((int, GDB_FILE *, int));
d747e0af 306
833e0d94
JK
307/* Print a host address. */
308extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
309
d747e0af 310extern void
04f566a3 311fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
d747e0af
MT
312
313extern void
314perror_with_name PARAMS ((char *));
315
316extern void
317print_sys_errmsg PARAMS ((char *, int));
318
1bef45ea
JK
319/* From regex.c or libc. BSD 4.4 declares this with the argument type as
320 "const char *" in unistd.h, so we can't declare the argument
321 as "char *". */
d747e0af
MT
322
323extern char *
1bef45ea 324re_comp PARAMS ((const char *));
d747e0af
MT
325
326/* From symfile.c */
327
328extern void
329symbol_file_command PARAMS ((char *, int));
330
331/* From main.c */
332
d630b615
FF
333extern char *
334skip_quoted PARAMS ((char *));
335
d747e0af
MT
336extern char *
337gdb_readline PARAMS ((char *));
338
339extern char *
a0cf4681 340command_line_input PARAMS ((char *, int, char *));
d747e0af
MT
341
342extern void
343print_prompt PARAMS ((void));
344
345extern int
346batch_mode PARAMS ((void));
347
348extern int
349input_from_terminal_p PARAMS ((void));
350
bd5635a1 351/* From printcmd.c */
d747e0af
MT
352
353extern void
354set_next_address PARAMS ((CORE_ADDR));
355
356extern void
04f566a3 357print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int, char *));
d747e0af 358
833e0d94
JK
359extern void
360print_address_numeric PARAMS ((CORE_ADDR, GDB_FILE *));
361
d747e0af 362extern void
04f566a3 363print_address PARAMS ((CORE_ADDR, GDB_FILE *));
bd5635a1 364
e1ce8aa5 365/* From source.c */
d747e0af
MT
366
367extern int
368openp PARAMS ((char *, int, char *, int, int, char **));
369
370extern void
371mod_path PARAMS ((char *, char **));
372
373extern void
374directory_command PARAMS ((char *, int));
375
376extern void
377init_source_path PARAMS ((void));
378
379/* From findvar.c */
380
381extern int
382read_relative_register_raw_bytes PARAMS ((int, char *));
e1ce8aa5 383
bd5635a1 384/* From readline (but not in any readline .h files). */
d747e0af
MT
385
386extern char *
387tilde_expand PARAMS ((char *));
bd5635a1
RP
388
389/* Structure for saved commands lines
390 (for breakpoints, defined commands, etc). */
391
392struct command_line
393{
394 struct command_line *next;
395 char *line;
396};
397
d747e0af
MT
398extern struct command_line *
399read_command_lines PARAMS ((void));
400
401extern void
402free_command_lines PARAMS ((struct command_line **));
bd5635a1
RP
403
404/* String containing the current directory (what getwd would return). */
405
d747e0af 406extern char *current_directory;
bd5635a1
RP
407
408/* Default radixes for input and output. Only some values supported. */
409extern unsigned input_radix;
410extern unsigned output_radix;
411
a8a69e63
FF
412/* Possibilities for prettyprint parameters to routines which print
413 things. Like enum language, this should be in value.h, but needs
414 to be here for the same reason. FIXME: If we can eliminate this
415 as an arg to LA_VAL_PRINT, then we can probably move it back to
416 value.h. */
417
418enum val_prettyprint
419{
420 Val_no_prettyprint = 0,
421 Val_prettyprint,
422 /* Use the default setting which the user has specified. */
423 Val_pretty_default
424};
425
0a5d35ed
SG
426\f
427/* Host machine definition. This will be a symlink to one of the
428 xm-*.h files, built by the `configure' script. */
429
430#include "xm.h"
431
e58de8a2
FF
432/* Native machine support. This will be a symlink to one of the
433 nm-*.h files, built by the `configure' script. */
434
435#include "nm.h"
436
e146177e
SEF
437/* If the xm.h file did not define the mode string used to open the
438 files, assume that binary files are opened the same way as text
439 files */
440#ifndef FOPEN_RB
441#include "fopen-same.h"
442#endif
443
0a5d35ed
SG
444/*
445 * Allow things in gdb to be declared "const". If compiling ANSI, it
446 * just works. If compiling with gcc but non-ansi, redefine to __const__.
447 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
448 * objects be read-write rather than read-only.
449 */
450
451#ifndef const
452#ifndef __STDC__
453# ifdef __GNUC__
454# define const __const__
455# else
456# define const /*nothing*/
457# endif /* GNUC */
458#endif /* STDC */
459#endif /* const */
460
461#ifndef volatile
462#ifndef __STDC__
463# ifdef __GNUC__
464# define volatile __volatile__
465# else
466# define volatile /*nothing*/
467# endif /* GNUC */
468#endif /* STDC */
469#endif /* volatile */
470
e3c16900
JK
471#if 1
472#define NORETURN /*nothing*/
473#else /* not 1 */
474/* FIXME: This is bogus. Having "volatile void" mean a function doesn't
475 return is a gcc extension and should be based on #ifdef __GNUC__.
476 Also, as of Sep 93 I'm told gcc is changing the syntax for ansi
477 reasons (so declaring exit here as "volatile void" and as "void" in
478 a system header loses). Using the new "__attributes__ ((noreturn));"
479 syntax would lose for old versions of gcc; using
480 typedef void exit_fn_type PARAMS ((int));
481 volatile exit_fn_type exit;
482 would win. */
d747e0af
MT
483/* Some compilers (many AT&T SVR4 compilers for instance), do not accept
484 declarations of functions that never return (exit for instance) as
485 "volatile void". For such compilers "NORETURN" can be defined away
486 to keep them happy */
487
488#ifndef NORETURN
e676a15f
FF
489# ifdef __lucid
490# define NORETURN /*nothing*/
491# else
492# define NORETURN volatile
493# endif
d747e0af 494#endif
e3c16900 495#endif /* not 1 */
d747e0af 496
0a5d35ed
SG
497/* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
498
bd5635a1 499#if !defined (UINT_MAX)
38dc5e12 500#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
bd5635a1
RP
501#endif
502
e1ce8aa5 503#if !defined (INT_MAX)
dd577ca5 504#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
505#endif
506
507#if !defined (INT_MIN)
38dc5e12
SG
508#define INT_MIN (-INT_MAX - 1) /* 0x80000000 for 32-bits */
509#endif
510
511#if !defined (ULONG_MAX)
512#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
513#endif
514
515#if !defined (LONG_MAX)
516#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
517#endif
518
7343d716
JK
519#ifdef BFD64
520
521/* This is to make sure that LONGEST is at least as big as CORE_ADDR. */
522
70126bf9 523#define LONGEST BFD_HOST_64_BIT
7343d716
JK
524
525#else /* No BFD64 */
526
fad466eb
SS
527/* If all compilers for this host support "long long" and we want to
528 use it for LONGEST (the performance hit is about 10% on a testsuite
529 run based on one DECstation test), then the xm.h file can define
530 CC_HAS_LONG_LONG.
531
532 Using GCC 1.39 on BSDI with long long causes about 700 new
533 testsuite failures. Using long long for LONGEST on the DECstation
534 causes 3 new FAILs in the testsuite and many heuristic fencepost
535 warnings. These are not investigated, but a first guess would be
536 that the BSDI problems are GCC bugs in long long support and the
537 latter are GDB bugs. */
7efb57c3
FF
538
539#ifndef CC_HAS_LONG_LONG
fad466eb 540# if defined (__GNUC__) && defined (FORCE_LONG_LONG)
7efb57c3
FF
541# define CC_HAS_LONG_LONG 1
542# endif
543#endif
fad466eb 544
7efb57c3
FF
545/* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
546 CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
547 variables and we wish to make use of that support. */
d747e0af
MT
548
549#ifndef LONGEST
7efb57c3
FF
550# ifdef CC_HAS_LONG_LONG
551# define LONGEST long long
552# else
553# define LONGEST long
554# endif
555#endif
556
7343d716
JK
557#endif /* No BFD64 */
558
7efb57c3
FF
559/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
560 arguments to a function, number in a value history, register number, etc.)
561 where the value must not be larger than can fit in an int. */
562
fb0f4231 563extern int longest_to_int PARAMS ((LONGEST));
d747e0af 564
0a5d35ed
SG
565/* Assorted functions we can declare, now that const and volatile are
566 defined. */
d747e0af
MT
567
568extern char *
569savestring PARAMS ((const char *, int));
570
318bf84f
FF
571extern char *
572msavestring PARAMS ((void *, const char *, int));
573
d747e0af
MT
574extern char *
575strsave PARAMS ((const char *));
576
318bf84f
FF
577extern char *
578mstrsave PARAMS ((void *, const char *));
579
d747e0af
MT
580extern char *
581concat PARAMS ((char *, ...));
582
583extern PTR
584xmalloc PARAMS ((long));
585
586extern PTR
318bf84f
FF
587xrealloc PARAMS ((PTR, long));
588
589extern PTR
590xmmalloc PARAMS ((PTR, long));
591
592extern PTR
593xmrealloc PARAMS ((PTR, PTR, long));
594
595extern PTR
596mmalloc PARAMS ((PTR, long));
597
598extern PTR
599mrealloc PARAMS ((PTR, PTR, long));
600
601extern void
602mfree PARAMS ((PTR, PTR));
603
604extern int
605mmcheck PARAMS ((PTR, void (*) (void)));
606
607extern int
608mmtrace PARAMS ((void));
d747e0af
MT
609
610extern int
611parse_escape PARAMS ((char **));
612
e676a15f 613extern const char * const reg_names[];
d747e0af 614
833e0d94
JK
615/* Message to be printed before the error message, when an error occurs. */
616
617extern char *error_pre_print;
618
619/* Message to be printed before the warning message, when a warning occurs. */
620
621extern char *warning_pre_print;
622
d747e0af
MT
623extern NORETURN void /* Does not return to the caller. */
624error ();
a0cf4681
JK
625
626extern void error_begin PARAMS ((void));
d747e0af
MT
627
628extern NORETURN void /* Does not return to the caller. */
629fatal ();
630
631extern NORETURN void /* Not specified as volatile in ... */
632exit PARAMS ((int)); /* 4.10.4.3 */
633
318bf84f
FF
634extern NORETURN void /* Does not return to the caller. */
635nomem PARAMS ((long));
636
2fcdae93
PS
637/* Reasons for calling return_to_top_level. */
638enum return_reason {
639 /* User interrupt. */
640 RETURN_QUIT,
641
642 /* Any other error. */
643 RETURN_ERROR
644};
645
646#define RETURN_MASK_QUIT (1 << (int)RETURN_QUIT)
647#define RETURN_MASK_ERROR (1 << (int)RETURN_ERROR)
648#define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
649typedef int return_mask;
650
d747e0af 651extern NORETURN void /* Does not return to the caller. */
2fcdae93
PS
652return_to_top_level PARAMS ((enum return_reason));
653
654extern int catch_errors PARAMS ((int (*) (char *), void *, char *,
655 return_mask));
d747e0af
MT
656
657extern void
658warning_setup PARAMS ((void));
659
660extern void
661warning ();
662
663/* Global functions from other, non-gdb GNU thingies (libiberty for
664 instance) */
665
666extern char *
667basename PARAMS ((char *));
668
669extern char *
a8e033f2 670getenv PARAMS ((const char *));
d747e0af
MT
671
672extern char **
673buildargv PARAMS ((char *));
674
675extern void
676freeargv PARAMS ((char **));
677
e146177e
SEF
678extern char *
679strerrno PARAMS ((int));
680
681extern char *
682strsigno PARAMS ((int));
683
684extern int
685errno_max PARAMS ((void));
686
687extern int
688signo_max PARAMS ((void));
689
690extern int
691strtoerrno PARAMS ((char *));
692
693extern int
694strtosigno PARAMS ((char *));
695
696extern char *
697strsignal PARAMS ((int));
698
699/* From other system libraries */
700
701#ifndef PSIGNAL_IN_SIGNAL_H
702extern void
7efb57c3 703psignal PARAMS ((unsigned, const char *));
e146177e
SEF
704#endif
705
d747e0af
MT
706/* For now, we can't include <stdlib.h> because it conflicts with
707 "../include/getopt.h". (FIXME)
708
318bf84f
FF
709 However, if a function is defined in the ANSI C standard and a prototype
710 for that function is defined and visible in any header file in an ANSI
711 conforming environment, then that prototype must match the definition in
712 the ANSI standard. So we can just duplicate them here without conflict,
d747e0af
MT
713 since they must be the same in all conforming ANSI environments. If
714 these cause problems, then the environment is not ANSI conformant. */
715
0a5d35ed 716#ifdef __STDC__
d747e0af 717#include <stddef.h>
0a5d35ed 718#endif
d747e0af
MT
719
720extern int
04f566a3 721fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
d747e0af 722
e146177e
SEF
723extern void
724perror PARAMS ((const char *)); /* 4.9.10.4 */
725
d747e0af
MT
726extern double
727atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
728
51b57ded
FF
729extern int
730atoi PARAMS ((const char *)); /* 4.10.1.2 */
731
d747e0af 732#ifndef MALLOC_INCOMPATIBLE
318bf84f 733
d747e0af
MT
734extern PTR
735malloc PARAMS ((size_t size)); /* 4.10.3.3 */
736
737extern PTR
738realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
739
740extern void
318bf84f
FF
741free PARAMS ((void *)); /* 4.10.3.2 */
742
743#endif /* MALLOC_INCOMPATIBLE */
d747e0af 744
d630b615 745extern void
d747e0af
MT
746qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
747 size_t size,
fad466eb 748 int (*compar)(const void *, const void *)));
d747e0af 749
0f552c5f 750#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
751extern PTR
752memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
753
754extern int
755memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
38dc5e12 756#endif
51b57ded 757
d747e0af
MT
758extern char *
759strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
760
761extern char *
762strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
763
e146177e
SEF
764extern char *
765strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
766
d747e0af
MT
767extern char *
768strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
769
0f552c5f 770#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
771extern PTR
772memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
0f552c5f 773#endif
51b57ded 774
d747e0af
MT
775extern char *
776strerror PARAMS ((int)); /* 4.11.6.2 */
e2aab031 777
0a5d35ed
SG
778/* Various possibilities for alloca. */
779#ifndef alloca
780# ifdef __GNUC__
781# define alloca __builtin_alloca
7343d716 782# else /* Not GNU C */
0a5d35ed 783# ifdef sparc
22fd4704 784# include <alloca.h> /* NOTE: Doesn't declare alloca() */
e676a15f 785# endif
7343d716
JK
786
787/* We need to be careful not to declare this in a way which conflicts with
788 bison. Bison never declares it as char *, but under various circumstances
789 (like __hpux) we need to use void *. */
790# if defined (__STDC__) || defined (__hpux)
791 extern void *alloca ();
792# else /* Don't use void *. */
0f552c5f 793 extern char *alloca ();
7343d716
JK
794# endif /* Don't use void *. */
795# endif /* Not GNU C */
796#endif /* alloca not defined */
e2aab031 797
debd3443 798/* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
a10c0d36 799
0a5d35ed
SG
800#if !defined (BIG_ENDIAN)
801#define BIG_ENDIAN 4321
802#endif
a10c0d36 803
0a5d35ed
SG
804#if !defined (LITTLE_ENDIAN)
805#define LITTLE_ENDIAN 1234
806#endif
a10c0d36 807
2fcdae93 808/* Target-system-dependent parameters for GDB. */
7d9884b9
JG
809
810/* Target machine definition. This will be a symlink to one of the
811 tm-*.h files, built by the `configure' script. */
812
7d9884b9 813#include "tm.h"
7d9884b9 814
04f566a3
JK
815/* Number of bits in a char or unsigned char for the target machine.
816 Just like CHAR_BIT in <limits.h> but describes the target machine. */
817#if !defined (TARGET_CHAR_BIT)
818#define TARGET_CHAR_BIT 8
819#endif
820
821/* Number of bits in a short or unsigned short for the target machine. */
822#if !defined (TARGET_SHORT_BIT)
823#define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
824#endif
825
826/* Number of bits in an int or unsigned int for the target machine. */
827#if !defined (TARGET_INT_BIT)
828#define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
829#endif
830
831/* Number of bits in a long or unsigned long for the target machine. */
832#if !defined (TARGET_LONG_BIT)
833#define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
834#endif
835
836/* Number of bits in a long long or unsigned long long for the target machine. */
837#if !defined (TARGET_LONG_LONG_BIT)
838#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
839#endif
840
841/* Number of bits in a float for the target machine. */
842#if !defined (TARGET_FLOAT_BIT)
843#define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
844#endif
845
846/* Number of bits in a double for the target machine. */
847#if !defined (TARGET_DOUBLE_BIT)
848#define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
849#endif
850
851/* Number of bits in a long double for the target machine. */
852#if !defined (TARGET_LONG_DOUBLE_BIT)
853#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
854#endif
855
856/* Number of bits in a "complex" for the target machine. */
857#if !defined (TARGET_COMPLEX_BIT)
858#define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
859#endif
860
861/* Number of bits in a "double complex" for the target machine. */
862#if !defined (TARGET_DOUBLE_COMPLEX_BIT)
863#define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
864#endif
865
866/* Number of bits in a pointer for the target machine */
867#if !defined (TARGET_PTR_BIT)
868#define TARGET_PTR_BIT TARGET_INT_BIT
869#endif
870
871/* If we picked up a copy of CHAR_BIT from a configuration file
872 (which may get it by including <limits.h>) then use it to set
873 the number of bits in a host char. If not, use the same size
874 as the target. */
875
876#if defined (CHAR_BIT)
877#define HOST_CHAR_BIT CHAR_BIT
878#else
879#define HOST_CHAR_BIT TARGET_CHAR_BIT
880#endif
881
7d9884b9
JG
882/* The bit byte-order has to do just with numbering of bits in
883 debugging symbols and such. Conceptually, it's quite separate
884 from byte/word byte order. */
885
886#if !defined (BITS_BIG_ENDIAN)
887#if TARGET_BYTE_ORDER == BIG_ENDIAN
888#define BITS_BIG_ENDIAN 1
889#endif /* Big endian. */
890
891#if TARGET_BYTE_ORDER == LITTLE_ENDIAN
892#define BITS_BIG_ENDIAN 0
893#endif /* Little endian. */
894#endif /* BITS_BIG_ENDIAN not defined. */
895
e3c16900
JK
896/* In findvar.c. */
897LONGEST extract_signed_integer PARAMS ((void *, int));
898unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
899CORE_ADDR extract_address PARAMS ((void *, int));
900
901void store_signed_integer PARAMS ((void *, int, LONGEST));
902void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
903void store_address PARAMS ((void *, int, CORE_ADDR));
04f566a3
JK
904
905double extract_floating PARAMS ((void *, int));
906void store_floating PARAMS ((void *, int, double));
e3c16900 907\f
7d9884b9
JG
908/* On some machines there are bits in addresses which are not really
909 part of the address, but are used by the kernel, the hardware, etc.
910 for special purposes. ADDR_BITS_REMOVE takes out any such bits
911 so we get a "real" address such as one would find in a symbol
04f566a3 912 table. This is used only for addresses of instructions, and even then
e3c16900
JK
913 I'm not sure it's used in all contexts. It exists to deal with there
914 being a few stray bits in the PC which would mislead us, not as some sort
04f566a3
JK
915 of generic thing to handle alignment or segmentation (it's possible it
916 should be in TARGET_READ_PC instead). */
7d9884b9
JG
917#if !defined (ADDR_BITS_REMOVE)
918#define ADDR_BITS_REMOVE(addr) (addr)
7d9884b9
JG
919#endif /* No ADDR_BITS_REMOVE. */
920
d747e0af
MT
921/* From valops.c */
922
923extern CORE_ADDR
924push_bytes PARAMS ((CORE_ADDR, char *, int));
925
d747e0af 926extern CORE_ADDR
f4f0d174 927push_word PARAMS ((CORE_ADDR, unsigned LONGEST));
d747e0af 928
0239d9b3
FF
929/* Some parts of gdb might be considered optional, in the sense that they
930 are not essential for being able to build a working, usable debugger
931 for a specific environment. For example, the maintenance commands
932 are there for the benefit of gdb maintainers. As another example,
933 some environments really don't need gdb's that are able to read N
934 different object file formats. In order to make it possible (but
935 not necessarily recommended) to build "stripped down" versions of
936 gdb, the following defines control selective compilation of those
937 parts of gdb which can be safely left out when necessary. Note that
938 the default is to include everything. */
939
940#ifndef MAINTENANCE_CMDS
941#define MAINTENANCE_CMDS 1
942#endif
943
d747e0af 944#endif /* !defined (DEFS_H) */
This page took 0.227644 seconds and 4 git commands to generate.