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