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