📄 defs.h
字号:
/* Some compilers (many AT&T SVR4 compilers for instance), do not accept declarations of functions that never return (exit for instance) as "volatile void". For such compilers "NORETURN" can be defined away to keep them happy */#ifndef NORETURN# ifdef __lucid# define NORETURN /*nothing*/# else# define NORETURN volatile# endif#endif/* Defaults for system-wide constants (if not defined by xm.h, we fake it). */#if !defined (UINT_MAX)#define UINT_MAX 0xffffffff#endif#if !defined (LONG_MAX)#define LONG_MAX 0x7fffffff#endif#if !defined (INT_MAX)#define INT_MAX 0x7fffffff#endif#if !defined (INT_MIN)/* Two's complement, 32 bit. */#define INT_MIN -0x80000000#endif/* Number of bits in a char or unsigned char for the target machine. Just like CHAR_BIT in <limits.h> but describes the target machine. */#if !defined (TARGET_CHAR_BIT)#define TARGET_CHAR_BIT 8#endif/* Number of bits in a short or unsigned short for the target machine. */#if !defined (TARGET_SHORT_BIT)#define TARGET_SHORT_BIT (sizeof (short) * TARGET_CHAR_BIT)#endif/* Number of bits in an int or unsigned int for the target machine. */#if !defined (TARGET_INT_BIT)#define TARGET_INT_BIT (sizeof (int) * TARGET_CHAR_BIT)#endif/* Number of bits in a long or unsigned long for the target machine. */#if !defined (TARGET_LONG_BIT)#define TARGET_LONG_BIT (sizeof (long) * TARGET_CHAR_BIT)#endif/* Number of bits in a long long or unsigned long long for the target machine. */#if !defined (TARGET_LONG_LONG_BIT)#define TARGET_LONG_LONG_BIT (2 * TARGET_LONG_BIT)#endif/* Number of bits in a float for the target machine. */#if !defined (TARGET_FLOAT_BIT)#define TARGET_FLOAT_BIT (sizeof (float) * TARGET_CHAR_BIT)#endif/* Number of bits in a double for the target machine. */#if !defined (TARGET_DOUBLE_BIT)#define TARGET_DOUBLE_BIT (sizeof (double) * TARGET_CHAR_BIT)#endif/* Number of bits in a long double for the target machine. */#if !defined (TARGET_LONG_DOUBLE_BIT)#define TARGET_LONG_DOUBLE_BIT (2 * TARGET_DOUBLE_BIT)#endif/* Number of bits in a "complex" for the target machine. */#if !defined (TARGET_COMPLEX_BIT)#define TARGET_COMPLEX_BIT (2 * TARGET_FLOAT_BIT)#endif/* Number of bits in a "double complex" for the target machine. */#if !defined (TARGET_DOUBLE_COMPLEX_BIT)#define TARGET_DOUBLE_COMPLEX_BIT (2 * TARGET_DOUBLE_BIT)#endif/* Number of bits in a pointer for the target machine */#if !defined (TARGET_PTR_BIT)#define TARGET_PTR_BIT TARGET_INT_BIT#endif/* Convert a LONGEST to an int. This is used in contexts (e.g. number of arguments to a function, number in a value history, register number, etc.) where the value must not be larger than can fit in an int. */#if !defined (longest_to_int)#if defined (LONG_LONG)#define longest_to_int(x) (((x) > INT_MAX || (x) < INT_MIN) \ ? (error ("Value out of range."),0) : (int) (x))#else /* No LONG_LONG. *//* Assume sizeof (int) == sizeof (long). */#define longest_to_int(x) ((int) (x))#endif /* No LONG_LONG. */#endif /* No longest_to_int. *//* This should not be a typedef, because "unsigned LONGEST" needs to work. LONG_LONG is defined if the host has "long long". */#ifndef LONGEST# ifdef LONG_LONG# define LONGEST long long# else# define LONGEST long# endif#endif/* Assorted functions we can declare, now that const and volatile are defined. */extern char *savestring PARAMS ((const char *, int));extern char *msavestring PARAMS ((void *, const char *, int));extern char *strsave PARAMS ((const char *));extern char *mstrsave PARAMS ((void *, const char *));extern char *concat PARAMS ((char *, ...));extern PTRxmalloc PARAMS ((long));extern PTRxrealloc PARAMS ((PTR, long));extern PTRxmmalloc PARAMS ((PTR, long));extern PTRxmrealloc PARAMS ((PTR, PTR, long));extern PTRmmalloc PARAMS ((PTR, long));extern PTRmrealloc PARAMS ((PTR, PTR, long));extern voidmfree PARAMS ((PTR, PTR));extern intmmcheck PARAMS ((PTR, void (*) (void)));extern intmmtrace PARAMS ((void));extern intparse_escape PARAMS ((char **));extern const char * const reg_names[];extern NORETURN void /* Does not return to the caller. */error ();extern NORETURN void /* Does not return to the caller. */fatal ();extern NORETURN void /* Not specified as volatile in ... */exit PARAMS ((int)); /* 4.10.4.3 */extern NORETURN void /* Does not return to the caller. */nomem PARAMS ((long));extern NORETURN void /* Does not return to the caller. */return_to_top_level PARAMS ((void));extern voidwarning_setup PARAMS ((void));extern voidwarning ();/* Global functions from other, non-gdb GNU thingies (libiberty for instance) */extern char *basename PARAMS ((char *));extern char *getenv PARAMS ((const char *));extern char **buildargv PARAMS ((char *));extern voidfreeargv PARAMS ((char **));extern char *strerrno PARAMS ((int));extern char *strsigno PARAMS ((int));extern interrno_max PARAMS ((void));extern intsigno_max PARAMS ((void));extern intstrtoerrno PARAMS ((char *));extern intstrtosigno PARAMS ((char *));extern char *strsignal PARAMS ((int));/* From other system libraries */#ifndef PSIGNAL_IN_SIGNAL_Hextern voidpsignal PARAMS ((unsigned, const char *));#endif/* For now, we can't include <stdlib.h> because it conflicts with "../include/getopt.h". (FIXME) However, if a function is defined in the ANSI C standard and a prototype for that function is defined and visible in any header file in an ANSI conforming environment, then that prototype must match the definition in the ANSI standard. So we can just duplicate them here without conflict, since they must be the same in all conforming ANSI environments. If these cause problems, then the environment is not ANSI conformant. */ #ifdef __STDC__#include <stddef.h>#endifextern intfclose PARAMS ((FILE *stream)); /* 4.9.5.1 */extern voidperror PARAMS ((const char *)); /* 4.9.10.4 */extern doubleatof PARAMS ((const char *nptr)); /* 4.10.1.1 */extern intatoi PARAMS ((const char *)); /* 4.10.1.2 */#ifndef MALLOC_INCOMPATIBLEextern PTRmalloc PARAMS ((size_t size)); /* 4.10.3.3 */extern PTRrealloc PARAMS ((void *ptr, size_t size)); /* 4.10.3.4 */extern voidfree PARAMS ((void *)); /* 4.10.3.2 */#endif /* MALLOC_INCOMPATIBLE */extern voidqsort PARAMS ((void *base, size_t nmemb, /* 4.10.5.2 */ size_t size, int (*comp)(const void *, const void *)));#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */extern PTRmemcpy PARAMS ((void *, const void *, size_t)); /* 4.11.2.1 */#endifextern intmemcmp PARAMS ((const void *, const void *, size_t)); /* 4.11.4.1 */extern char *strchr PARAMS ((const char *, int)); /* 4.11.5.2 */extern char *strrchr PARAMS ((const char *, int)); /* 4.11.5.5 */extern char *strstr PARAMS ((const char *, const char *)); /* 4.11.5.7 */extern char *strtok PARAMS ((char *, const char *)); /* 4.11.5.8 */#ifndef MEM_FNS_DECLARED /* Some non-ANSI use void *, not char *. */extern PTRmemset PARAMS ((void *, int, size_t)); /* 4.11.6.1 */#endifextern char *strerror PARAMS ((int)); /* 4.11.6.2 *//* Various possibilities for alloca. */#ifndef alloca# ifdef notdef /*XXX*/# define alloca __builtin_alloca# else# if defined(sparc) && !defined(__GNUC__)# include <alloca.h> /* NOTE: Doesn't declare alloca() */# endif# ifdef __STDC__ extern void *alloca (size_t);# else /* __STDC__ */ extern char *alloca ();# endif# endif#endif/* TARGET_BYTE_ORDER and HOST_BYTE_ORDER must be defined to one of these. */#if !defined (BIG_ENDIAN)#define BIG_ENDIAN 4321#endif#if !defined (LITTLE_ENDIAN)#define LITTLE_ENDIAN 1234#endif/* Target-system-dependent parameters for GDB. The standard thing is to include defs.h. However, files that are specific to a particular target can define TM_FILE_OVERRIDE before including defs.h, then can include any particular tm-file they desire. *//* Target machine definition. This will be a symlink to one of the tm-*.h files, built by the `configure' script. */#ifndef TM_FILE_OVERRIDE#include "tm.h"#endif/* The bit byte-order has to do just with numbering of bits in debugging symbols and such. Conceptually, it's quite separate from byte/word byte order. */#if !defined (BITS_BIG_ENDIAN)#if TARGET_BYTE_ORDER == BIG_ENDIAN#define BITS_BIG_ENDIAN 1#endif /* Big endian. */#if TARGET_BYTE_ORDER == LITTLE_ENDIAN#define BITS_BIG_ENDIAN 0#endif /* Little endian. */#endif /* BITS_BIG_ENDIAN not defined. *//* Swap LEN bytes at BUFFER between target and host byte-order. */#if TARGET_BYTE_ORDER == HOST_BYTE_ORDER#define SWAP_TARGET_AND_HOST(buffer,len)#else /* Target and host byte order differ. */#define SWAP_TARGET_AND_HOST(buffer,len) \ { \ char tmp; \ char *p = (char *)(buffer); \ char *q = ((char *)(buffer)) + len - 1; \ for (; p < q; p++, q--) \ { \ tmp = *q; \ *q = *p; \ *p = tmp; \ } \ }#endif /* Target and host byte order differ. *//* On some machines there are bits in addresses which are not really part of the address, but are used by the kernel, the hardware, etc. for special purposes. ADDR_BITS_REMOVE takes out any such bits so we get a "real" address such as one would find in a symbol table. ADDR_BITS_SET sets those bits the way the system wants them. */#if !defined (ADDR_BITS_REMOVE)#define ADDR_BITS_REMOVE(addr) (addr)#define ADDR_BITS_SET(addr) (addr)#endif /* No ADDR_BITS_REMOVE. *//* If this definition isn't overridden by the header files, assume that isatty and fileno exist on this system. */#ifndef ISATTY#define ISATTY(FP) (isatty(fileno(FP)))#endif/* From valops.c */extern CORE_ADDRpush_bytes PARAMS ((CORE_ADDR, char *, int));/* In some modules, we don't have a definition of REGISTER_TYPE yet, so we must avoid prototyping this function for now. FIXME. Should be:extern CORE_ADDRpush_word PARAMS ((CORE_ADDR, REGISTER_TYPE)); */extern CORE_ADDRpush_word ();/* Some parts of gdb might be considered optional, in the sense that they are not essential for being able to build a working, usable debugger for a specific environment. For example, the maintenance commands are there for the benefit of gdb maintainers. As another example, some environments really don't need gdb's that are able to read N different object file formats. In order to make it possible (but not necessarily recommended) to build "stripped down" versions of gdb, the following defines control selective compilation of those parts of gdb which can be safely left out when necessary. Note that the default is to include everything. */#ifndef MAINTENANCE_CMDS#define MAINTENANCE_CMDS 1#endif#endif /* !defined (DEFS_H) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -