⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 defs.h

📁 早期freebsd实现
💻 H
📖 第 1 页 / 共 2 页
字号:
/* 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 + -