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