* serial.h (SERIAL_SET_TTY_STATE): Comment return value.
[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 298
833e0d94
JK
299/* Print a host address. */
300extern void gdb_print_address PARAMS ((void *, GDB_FILE *));
301
d747e0af 302extern void
04f566a3 303fprintf_symbol_filtered PARAMS ((GDB_FILE *, char *, enum language, int));
d747e0af
MT
304
305extern void
306perror_with_name PARAMS ((char *));
307
308extern void
309print_sys_errmsg PARAMS ((char *, int));
310
1bef45ea
JK
311/* From regex.c or libc. BSD 4.4 declares this with the argument type as
312 "const char *" in unistd.h, so we can't declare the argument
313 as "char *". */
d747e0af
MT
314
315extern char *
1bef45ea 316re_comp PARAMS ((const char *));
d747e0af
MT
317
318/* From symfile.c */
319
320extern void
321symbol_file_command PARAMS ((char *, int));
322
323/* From main.c */
324
d630b615
FF
325extern char *
326skip_quoted PARAMS ((char *));
327
d747e0af
MT
328extern char *
329gdb_readline PARAMS ((char *));
330
331extern char *
332command_line_input PARAMS ((char *, int));
333
334extern void
335print_prompt PARAMS ((void));
336
337extern int
338batch_mode PARAMS ((void));
339
340extern int
341input_from_terminal_p PARAMS ((void));
342
bd5635a1 343/* From printcmd.c */
d747e0af
MT
344
345extern void
346set_next_address PARAMS ((CORE_ADDR));
347
348extern void
04f566a3 349print_address_symbolic PARAMS ((CORE_ADDR, GDB_FILE *, int, char *));
d747e0af 350
833e0d94
JK
351extern void
352print_address_numeric PARAMS ((CORE_ADDR, GDB_FILE *));
353
d747e0af 354extern void
04f566a3 355print_address PARAMS ((CORE_ADDR, GDB_FILE *));
bd5635a1 356
e1ce8aa5 357/* From source.c */
d747e0af
MT
358
359extern int
360openp PARAMS ((char *, int, char *, int, int, char **));
361
362extern void
363mod_path PARAMS ((char *, char **));
364
365extern void
366directory_command PARAMS ((char *, int));
367
368extern void
369init_source_path PARAMS ((void));
370
371/* From findvar.c */
372
373extern int
374read_relative_register_raw_bytes PARAMS ((int, char *));
e1ce8aa5 375
bd5635a1 376/* From readline (but not in any readline .h files). */
d747e0af
MT
377
378extern char *
379tilde_expand PARAMS ((char *));
bd5635a1
RP
380
381/* Structure for saved commands lines
382 (for breakpoints, defined commands, etc). */
383
384struct command_line
385{
386 struct command_line *next;
387 char *line;
388};
389
d747e0af
MT
390extern struct command_line *
391read_command_lines PARAMS ((void));
392
393extern void
394free_command_lines PARAMS ((struct command_line **));
bd5635a1
RP
395
396/* String containing the current directory (what getwd would return). */
397
d747e0af 398extern char *current_directory;
bd5635a1
RP
399
400/* Default radixes for input and output. Only some values supported. */
401extern unsigned input_radix;
402extern unsigned output_radix;
403
a8a69e63
FF
404/* Possibilities for prettyprint parameters to routines which print
405 things. Like enum language, this should be in value.h, but needs
406 to be here for the same reason. FIXME: If we can eliminate this
407 as an arg to LA_VAL_PRINT, then we can probably move it back to
408 value.h. */
409
410enum val_prettyprint
411{
412 Val_no_prettyprint = 0,
413 Val_prettyprint,
414 /* Use the default setting which the user has specified. */
415 Val_pretty_default
416};
417
0a5d35ed
SG
418\f
419/* Host machine definition. This will be a symlink to one of the
420 xm-*.h files, built by the `configure' script. */
421
422#include "xm.h"
423
e58de8a2
FF
424/* Native machine support. This will be a symlink to one of the
425 nm-*.h files, built by the `configure' script. */
426
427#include "nm.h"
428
e146177e
SEF
429/* If the xm.h file did not define the mode string used to open the
430 files, assume that binary files are opened the same way as text
431 files */
432#ifndef FOPEN_RB
433#include "fopen-same.h"
434#endif
435
0a5d35ed
SG
436/*
437 * Allow things in gdb to be declared "const". If compiling ANSI, it
438 * just works. If compiling with gcc but non-ansi, redefine to __const__.
439 * If non-ansi, non-gcc, then eliminate "const" entirely, making those
440 * objects be read-write rather than read-only.
441 */
442
443#ifndef const
444#ifndef __STDC__
445# ifdef __GNUC__
446# define const __const__
447# else
448# define const /*nothing*/
449# endif /* GNUC */
450#endif /* STDC */
451#endif /* const */
452
453#ifndef volatile
454#ifndef __STDC__
455# ifdef __GNUC__
456# define volatile __volatile__
457# else
458# define volatile /*nothing*/
459# endif /* GNUC */
460#endif /* STDC */
461#endif /* volatile */
462
e3c16900
JK
463#if 1
464#define NORETURN /*nothing*/
465#else /* not 1 */
466/* FIXME: This is bogus. Having "volatile void" mean a function doesn't
467 return is a gcc extension and should be based on #ifdef __GNUC__.
468 Also, as of Sep 93 I'm told gcc is changing the syntax for ansi
469 reasons (so declaring exit here as "volatile void" and as "void" in
470 a system header loses). Using the new "__attributes__ ((noreturn));"
471 syntax would lose for old versions of gcc; using
472 typedef void exit_fn_type PARAMS ((int));
473 volatile exit_fn_type exit;
474 would win. */
d747e0af
MT
475/* Some compilers (many AT&T SVR4 compilers for instance), do not accept
476 declarations of functions that never return (exit for instance) as
477 "volatile void". For such compilers "NORETURN" can be defined away
478 to keep them happy */
479
480#ifndef NORETURN
e676a15f
FF
481# ifdef __lucid
482# define NORETURN /*nothing*/
483# else
484# define NORETURN volatile
485# endif
d747e0af 486#endif
e3c16900 487#endif /* not 1 */
d747e0af 488
0a5d35ed
SG
489/* Defaults for system-wide constants (if not defined by xm.h, we fake it). */
490
bd5635a1 491#if !defined (UINT_MAX)
38dc5e12 492#define UINT_MAX ((unsigned int)(~0)) /* 0xFFFFFFFF for 32-bits */
bd5635a1
RP
493#endif
494
e1ce8aa5 495#if !defined (INT_MAX)
dd577ca5 496#define INT_MAX ((int)(UINT_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
497#endif
498
499#if !defined (INT_MIN)
38dc5e12
SG
500#define INT_MIN (-INT_MAX - 1) /* 0x80000000 for 32-bits */
501#endif
502
503#if !defined (ULONG_MAX)
504#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF for 32-bits */
505#endif
506
507#if !defined (LONG_MAX)
508#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF for 32-bits */
e1ce8aa5
JK
509#endif
510
7efb57c3
FF
511/* Default to support for "long long" if the host compiler being used is gcc.
512 Config files must define CC_HAS_LONG_LONG to use other host compilers
513 that are capable of supporting "long long", and to cause gdb to use that
514 support. Not defining CC_HAS_LONG_LONG will suppress use of "long long"
515 regardless of what compiler is used.
516
517 FIXME: For now, automatic selection of "long long" as the default when
518 gcc is used is disabled, pending further testing. Concerns include the
519 impact on gdb performance and the universality of bugfree long long
520 support on platforms that do have gcc. Compiling with FORCE_LONG_LONG
521 will select "long long" use for testing purposes. -fnf */
522
523#ifndef CC_HAS_LONG_LONG
524# if defined (__GNUC__) && defined (FORCE_LONG_LONG) /* See FIXME above */
525# define CC_HAS_LONG_LONG 1
526# endif
527#endif
528
529/* LONGEST should not be a typedef, because "unsigned LONGEST" needs to work.
530 CC_HAS_LONG_LONG is defined if the host compiler supports "long long"
531 variables and we wish to make use of that support. */
d747e0af
MT
532
533#ifndef LONGEST
7efb57c3
FF
534# ifdef CC_HAS_LONG_LONG
535# define LONGEST long long
536# else
537# define LONGEST long
538# endif
539#endif
540
541/* Convert a LONGEST to an int. This is used in contexts (e.g. number of
542 arguments to a function, number in a value history, register number, etc.)
543 where the value must not be larger than can fit in an int. */
544
545#ifndef longest_to_int
546# ifdef CC_HAS_LONG_LONG
547# define longest_to_int(x) (((x) > INT_MAX || (x) < INT_MIN) \
548 ? (error ("Value out of range."),0) : (int) (x))
549# else
550 /* Assume sizeof (int) == sizeof (long). */
551# define longest_to_int(x) ((int) (x))
552# endif
d747e0af
MT
553#endif
554
0a5d35ed
SG
555/* Assorted functions we can declare, now that const and volatile are
556 defined. */
d747e0af
MT
557
558extern char *
559savestring PARAMS ((const char *, int));
560
318bf84f
FF
561extern char *
562msavestring PARAMS ((void *, const char *, int));
563
d747e0af
MT
564extern char *
565strsave PARAMS ((const char *));
566
318bf84f
FF
567extern char *
568mstrsave PARAMS ((void *, const char *));
569
d747e0af
MT
570extern char *
571concat PARAMS ((char *, ...));
572
573extern PTR
574xmalloc PARAMS ((long));
575
576extern PTR
318bf84f
FF
577xrealloc PARAMS ((PTR, long));
578
579extern PTR
580xmmalloc PARAMS ((PTR, long));
581
582extern PTR
583xmrealloc PARAMS ((PTR, PTR, long));
584
585extern PTR
586mmalloc PARAMS ((PTR, long));
587
588extern PTR
589mrealloc PARAMS ((PTR, PTR, long));
590
591extern void
592mfree PARAMS ((PTR, PTR));
593
594extern int
595mmcheck PARAMS ((PTR, void (*) (void)));
596
597extern int
598mmtrace PARAMS ((void));
d747e0af
MT
599
600extern int
601parse_escape PARAMS ((char **));
602
e676a15f 603extern const char * const reg_names[];
d747e0af 604
833e0d94
JK
605/* Message to be printed before the error message, when an error occurs. */
606
607extern char *error_pre_print;
608
609/* Message to be printed before the warning message, when a warning occurs. */
610
611extern char *warning_pre_print;
612
d747e0af
MT
613extern NORETURN void /* Does not return to the caller. */
614error ();
615
616extern NORETURN void /* Does not return to the caller. */
617fatal ();
618
619extern NORETURN void /* Not specified as volatile in ... */
620exit PARAMS ((int)); /* 4.10.4.3 */
621
318bf84f
FF
622extern NORETURN void /* Does not return to the caller. */
623nomem PARAMS ((long));
624
2fcdae93
PS
625/* Reasons for calling return_to_top_level. */
626enum return_reason {
627 /* User interrupt. */
628 RETURN_QUIT,
629
630 /* Any other error. */
631 RETURN_ERROR
632};
633
634#define RETURN_MASK_QUIT (1 << (int)RETURN_QUIT)
635#define RETURN_MASK_ERROR (1 << (int)RETURN_ERROR)
636#define RETURN_MASK_ALL (RETURN_MASK_QUIT | RETURN_MASK_ERROR)
637typedef int return_mask;
638
d747e0af 639extern NORETURN void /* Does not return to the caller. */
2fcdae93
PS
640return_to_top_level PARAMS ((enum return_reason));
641
642extern int catch_errors PARAMS ((int (*) (char *), void *, char *,
643 return_mask));
d747e0af
MT
644
645extern void
646warning_setup PARAMS ((void));
647
648extern void
649warning ();
650
651/* Global functions from other, non-gdb GNU thingies (libiberty for
652 instance) */
653
654extern char *
655basename PARAMS ((char *));
656
657extern char *
a8e033f2 658getenv PARAMS ((const char *));
d747e0af
MT
659
660extern char **
661buildargv PARAMS ((char *));
662
663extern void
664freeargv PARAMS ((char **));
665
e146177e
SEF
666extern char *
667strerrno PARAMS ((int));
668
669extern char *
670strsigno PARAMS ((int));
671
672extern int
673errno_max PARAMS ((void));
674
675extern int
676signo_max PARAMS ((void));
677
678extern int
679strtoerrno PARAMS ((char *));
680
681extern int
682strtosigno PARAMS ((char *));
683
684extern char *
685strsignal PARAMS ((int));
686
687/* From other system libraries */
688
689#ifndef PSIGNAL_IN_SIGNAL_H
690extern void
7efb57c3 691psignal PARAMS ((unsigned, const char *));
e146177e
SEF
692#endif
693
d747e0af
MT
694/* For now, we can't include <stdlib.h> because it conflicts with
695 "../include/getopt.h". (FIXME)
696
318bf84f
FF
697 However, if a function is defined in the ANSI C standard and a prototype
698 for that function is defined and visible in any header file in an ANSI
699 conforming environment, then that prototype must match the definition in
700 the ANSI standard. So we can just duplicate them here without conflict,
d747e0af
MT
701 since they must be the same in all conforming ANSI environments. If
702 these cause problems, then the environment is not ANSI conformant. */
703
0a5d35ed 704#ifdef __STDC__
d747e0af 705#include <stddef.h>
0a5d35ed 706#endif
d747e0af
MT
707
708extern int
04f566a3 709fclose PARAMS ((GDB_FILE *stream)); /* 4.9.5.1 */
d747e0af 710
e146177e
SEF
711extern void
712perror PARAMS ((const char *)); /* 4.9.10.4 */
713
d747e0af
MT
714extern double
715atof PARAMS ((const char *nptr)); /* 4.10.1.1 */
716
51b57ded
FF
717extern int
718atoi PARAMS ((const char *)); /* 4.10.1.2 */
719
d747e0af 720#ifndef MALLOC_INCOMPATIBLE
318bf84f 721
d747e0af
MT
722extern PTR
723malloc PARAMS ((size_t size)); /* 4.10.3.3 */
724
725extern PTR
726realloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */
727
728extern void
318bf84f
FF
729free PARAMS ((void *)); /* 4.10.3.2 */
730
731#endif /* MALLOC_INCOMPATIBLE */
d747e0af 732
d630b615 733extern void
d747e0af
MT
734qsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */
735 size_t size,
736 int (*comp)(const void *, const void *)));
737
0f552c5f 738#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
739extern PTR
740memcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */
741
742extern int
743memcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */
38dc5e12 744#endif
51b57ded 745
d747e0af
MT
746extern char *
747strchr PARAMS ((const char *, int)); /* 4.11.5.2 */
748
749extern char *
750strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */
751
e146177e
SEF
752extern char *
753strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */
754
d747e0af
MT
755extern char *
756strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */
757
0f552c5f 758#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */
51b57ded
FF
759extern PTR
760memset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */
0f552c5f 761#endif
51b57ded 762
d747e0af
MT
763extern char *
764strerror PARAMS ((int)); /* 4.11.6.2 */
e2aab031 765
0a5d35ed
SG
766/* Various possibilities for alloca. */
767#ifndef alloca
768# ifdef __GNUC__
769# define alloca __builtin_alloca
770# else
771# ifdef sparc
22fd4704 772# include <alloca.h> /* NOTE: Doesn't declare alloca() */
e676a15f 773# endif
0f552c5f
JG
774# ifdef __STDC__
775 extern void *alloca (size_t);
776# else /* __STDC__ */
777 extern char *alloca ();
778# endif
0a5d35ed
SG
779# endif
780#endif
e2aab031 781
debd3443 782/* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */
a10c0d36 783
0a5d35ed
SG
784#if !defined (BIG_ENDIAN)
785#define BIG_ENDIAN 4321
786#endif
a10c0d36 787
0a5d35ed
SG
788#if !defined (LITTLE_ENDIAN)
789#define LITTLE_ENDIAN 1234
790#endif
a10c0d36 791
2fcdae93 792/* Target-system-dependent parameters for GDB. */
7d9884b9
JG
793
794/* Target machine definition. This will be a symlink to one of the
795 tm-*.h files, built by the `configure' script. */
796
7d9884b9 797#include "tm.h"
7d9884b9 798
04f566a3
JK
799/* Number of bits in a char or unsigned char for the target machine.
800 Just like CHAR_BIT in <limits.h> but describes the target machine. */
801#if !defined (TARGET_CHAR_BIT)
802#define TARGET_CHAR_BIT 8
803#endif
804
805/* Number of bits in a short or unsigned short for the target machine. */
806#if !defined (TARGET_SHORT_BIT)
807#define TARGET_SHORT_BIT (2 * TARGET_CHAR_BIT)
808#endif
809
810/* Number of bits in an int or unsigned int for the target machine. */
811#if !defined (TARGET_INT_BIT)
812#define TARGET_INT_BIT (4 * TARGET_CHAR_BIT)
813#endif
814
815/* Number of bits in a long or unsigned long for the target machine. */
816#if !defined (TARGET_LONG_BIT)
817#define TARGET_LONG_BIT (4 * TARGET_CHAR_BIT)
818#endif
819
820/* Number of bits in a long long or unsigned long long for the target machine. */
821#if !defined (TARGET_LONG_LONG_BIT)
822#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)
823#endif
824
825/* Number of bits in a float for the target machine. */
826#if !defined (TARGET_FLOAT_BIT)
827#define TARGET_FLOAT_BIT (4 * TARGET_CHAR_BIT)
828#endif
829
830/* Number of bits in a double for the target machine. */
831#if !defined (TARGET_DOUBLE_BIT)
832#define TARGET_DOUBLE_BIT (8 * TARGET_CHAR_BIT)
833#endif
834
835/* Number of bits in a long double for the target machine. */
836#if !defined (TARGET_LONG_DOUBLE_BIT)
837#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)
838#endif
839
840/* Number of bits in a "complex" for the target machine. */
841#if !defined (TARGET_COMPLEX_BIT)
842#define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)
843#endif
844
845/* Number of bits in a "double complex" for the target machine. */
846#if !defined (TARGET_DOUBLE_COMPLEX_BIT)
847#define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)
848#endif
849
850/* Number of bits in a pointer for the target machine */
851#if !defined (TARGET_PTR_BIT)
852#define TARGET_PTR_BIT TARGET_INT_BIT
853#endif
854
855/* If we picked up a copy of CHAR_BIT from a configuration file
856 (which may get it by including <limits.h>) then use it to set
857 the number of bits in a host char. If not, use the same size
858 as the target. */
859
860#if defined (CHAR_BIT)
861#define HOST_CHAR_BIT CHAR_BIT
862#else
863#define HOST_CHAR_BIT TARGET_CHAR_BIT
864#endif
865
7d9884b9
JG
866/* The bit byte-order has to do just with numbering of bits in
867 debugging symbols and such. Conceptually, it's quite separate
868 from byte/word byte order. */
869
870#if !defined (BITS_BIG_ENDIAN)
871#if TARGET_BYTE_ORDER == BIG_ENDIAN
872#define BITS_BIG_ENDIAN 1
873#endif /* Big endian. */
874
875#if TARGET_BYTE_ORDER == LITTLE_ENDIAN
876#define BITS_BIG_ENDIAN 0
877#endif /* Little endian. */
878#endif /* BITS_BIG_ENDIAN not defined. */
879
e3c16900
JK
880/* In findvar.c. */
881LONGEST extract_signed_integer PARAMS ((void *, int));
882unsigned LONGEST extract_unsigned_integer PARAMS ((void *, int));
883CORE_ADDR extract_address PARAMS ((void *, int));
884
885void store_signed_integer PARAMS ((void *, int, LONGEST));
886void store_unsigned_integer PARAMS ((void *, int, unsigned LONGEST));
887void store_address PARAMS ((void *, int, CORE_ADDR));
04f566a3
JK
888
889double extract_floating PARAMS ((void *, int));
890void store_floating PARAMS ((void *, int, double));
e3c16900 891\f
7d9884b9
JG
892/* On some machines there are bits in addresses which are not really
893 part of the address, but are used by the kernel, the hardware, etc.
894 for special purposes. ADDR_BITS_REMOVE takes out any such bits
895 so we get a "real" address such as one would find in a symbol
04f566a3 896 table. This is used only for addresses of instructions, and even then
e3c16900
JK
897 I'm not sure it's used in all contexts. It exists to deal with there
898 being a few stray bits in the PC which would mislead us, not as some sort
04f566a3
JK
899 of generic thing to handle alignment or segmentation (it's possible it
900 should be in TARGET_READ_PC instead). */
7d9884b9
JG
901#if !defined (ADDR_BITS_REMOVE)
902#define ADDR_BITS_REMOVE(addr) (addr)
7d9884b9
JG
903#endif /* No ADDR_BITS_REMOVE. */
904
d747e0af
MT
905/* From valops.c */
906
907extern CORE_ADDR
908push_bytes PARAMS ((CORE_ADDR, char *, int));
909
d747e0af 910extern CORE_ADDR
f4f0d174 911push_word PARAMS ((CORE_ADDR, unsigned LONGEST));
d747e0af 912
0239d9b3
FF
913/* Some parts of gdb might be considered optional, in the sense that they
914 are not essential for being able to build a working, usable debugger
915 for a specific environment. For example, the maintenance commands
916 are there for the benefit of gdb maintainers. As another example,
917 some environments really don't need gdb's that are able to read N
918 different object file formats. In order to make it possible (but
919 not necessarily recommended) to build "stripped down" versions of
920 gdb, the following defines control selective compilation of those
921 parts of gdb which can be safely left out when necessary. Note that
922 the default is to include everything. */
923
924#ifndef MAINTENANCE_CMDS
925#define MAINTENANCE_CMDS 1
926#endif
927
d747e0af 928#endif /* !defined (DEFS_H) */
This page took 0.167949 seconds and 4 git commands to generate.