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

📄 cygwin.h

📁 gcc编译工具没有什么特别
💻 H
📖 第 1 页 / 共 2 页
字号:
      flag_pic = 0;							\    }									\} while (0)								\/* Define this macro if references to a symbol must be treated   differently depending on something about the variable or   function named by the symbol (such as what section it is in).   On i386 running Windows NT, modify the assembler name with a suffix    consisting of an atsign (@) followed by string of digits that represents   the number of bytes of arguments passed to the function, if it has the    attribute STDCALL.   In addition, we must mark dll symbols specially. Definitions of    dllexport'd objects install some info in the .drectve section.     References to dllimport'd objects are fetched indirectly via   _imp__.  If both are declared, dllexport overrides.  This is also    needed to implement one-only vtables: they go into their own   section and we need to set DECL_SECTION_NAME so we do that here.   Note that we can be called twice on the same decl.  */extern void i386_pe_encode_section_info ();#ifdef ENCODE_SECTION_INFO#undef ENCODE_SECTION_INFO#endif#define ENCODE_SECTION_INFO(DECL) i386_pe_encode_section_info (DECL)/* Utility used only in this file.  */#define I386_PE_STRIP_ENCODING(SYM_NAME) \  ((SYM_NAME) + ((SYM_NAME)[0] == '@' ? 3 : 0))/* This macro gets just the user-specified name   out of the string in a SYMBOL_REF.  Discard   trailing @[NUM] encoded by ENCODE_SECTION_INFO.  */#undef  STRIP_NAME_ENCODING#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME)				\do {									\  char *_p;								\  char *_name = I386_PE_STRIP_ENCODING (SYMBOL_NAME);			\  for (_p = _name; *_p && *_p != '@'; ++_p)				\    ;									\  if (*_p == '@')							\    {									\      int _len = _p - _name;						\      (VAR) = (char *) alloca (_len + 1);				\      strncpy ((VAR), _name, _len);					\      (VAR)[_len] = '\0';						\    }									\  else									\    (VAR) = _name;							\} while (0)      /* Output a reference to a label.  */#undef ASM_OUTPUT_LABELREF#define ASM_OUTPUT_LABELREF(STREAM, NAME)  		\  fprintf (STREAM, "%s%s", USER_LABEL_PREFIX, 		\           I386_PE_STRIP_ENCODING (NAME))		\/* Output a common block.  */#undef ASM_OUTPUT_COMMON#define ASM_OUTPUT_COMMON(STREAM, NAME, SIZE, ROUNDED)	\do {							\  if (i386_pe_dllexport_name_p (NAME))			\    i386_pe_record_exported_symbol (NAME);		\  if (! i386_pe_dllimport_name_p (NAME))		\    {							\      fprintf ((STREAM), "\t.comm\t"); 			\      assemble_name ((STREAM), (NAME));			\      fprintf ((STREAM), ", %d\t%s %d\n",		\	       (ROUNDED), ASM_COMMENT_START, (SIZE));	\    }							\} while (0)/* Output the label for an initialized variable.  */#undef ASM_DECLARE_OBJECT_NAME#define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL) 	\do {							\  if (i386_pe_dllexport_name_p (NAME))			\    i386_pe_record_exported_symbol (NAME);		\  ASM_OUTPUT_LABEL ((STREAM), (NAME));			\} while (0)/* Emit code to check the stack when allocating more that 4000   bytes in one go. */#define CHECK_STACK_LIMIT 4000/* By default, target has a 80387, uses IEEE compatible arithmetic,   and returns float values in the 387 and needs stack probes */#undef TARGET_DEFAULT#define TARGET_DEFAULT \   (MASK_80387 | MASK_IEEE_FP | MASK_FLOAT_RETURNS | MASK_STACK_PROBE) /* This is how to output an assembler line   that says to advance the location counter   to a multiple of 2**LOG bytes.  */#undef ASM_OUTPUT_ALIGN#define ASM_OUTPUT_ALIGN(FILE,LOG)	\    if ((LOG)!=0) fprintf ((FILE), "\t.align %d\n", 1<<(LOG))/* Define this macro if in some cases global symbols from one translation   unit may not be bound to undefined symbols in another translation unit   without user intervention.  For instance, under Microsoft Windows   symbols must be explicitly imported from shared libraries (DLLs).  */#define MULTIPLE_SYMBOL_SPACES#define UNIQUE_SECTION_P(DECL) DECL_ONE_ONLY (DECL)extern void i386_pe_unique_section ();#define UNIQUE_SECTION(DECL,RELOC) i386_pe_unique_section (DECL, RELOC)#define SUPPORTS_ONE_ONLY 1/* A C statement to output something to the assembler file to switch to section   NAME for object DECL which is either a FUNCTION_DECL, a VAR_DECL or   NULL_TREE.  Some target formats do not support arbitrary sections.  Do not   define this macro in such cases.  */#undef ASM_OUTPUT_SECTION_NAME#define ASM_OUTPUT_SECTION_NAME(STREAM, DECL, NAME, RELOC)		\do {									\  static struct section_info						\    {									\      struct section_info *next;					\      char *name;							\      enum sect_enum {SECT_RW, SECT_RO, SECT_EXEC} type;		\    } *sections;							\  struct section_info *s;						\  char *mode;								\  enum sect_enum type;							\									\  for (s = sections; s; s = s->next)					\    if (!strcmp (NAME, s->name))					\      break;								\									\  if (DECL && TREE_CODE (DECL) == FUNCTION_DECL)			\    type = SECT_EXEC, mode = "x";					\  else if (DECL && DECL_READONLY_SECTION (DECL, RELOC))			\    type = SECT_RO, mode = "";						\  else									\    type = SECT_RW, mode = "w";						\									\  if (s == 0)								\    {									\      s = (struct section_info *) xmalloc (sizeof (struct section_info)); \      s->name = xmalloc ((strlen (NAME) + 1) * sizeof (*NAME));		\      strcpy (s->name, NAME);						\      s->type = type;							\      s->next = sections;						\      sections = s;							\      fprintf (STREAM, ".section\t%s,\"%s\"\n", NAME, mode);		\      /* Functions may have been compiled at various levels of		\         optimization so we can't use `same_size' here.  Instead,	\         have the linker pick one.  */					\      if ((DECL) && DECL_ONE_ONLY (DECL))				\        fprintf (STREAM, "\t.linkonce %s\n",				\	         TREE_CODE (DECL) == FUNCTION_DECL			\	         ? "discard" : "same_size");				\    }									\  else									\    {									\      fprintf (STREAM, ".section\t%s,\"%s\"\n", NAME, mode);		\    }									\} while (0)/* Write the extra assembler code needed to declare a function   properly.  If we are generating SDB debugging information, this   will happen automatically, so we only need to handle other cases.  */#undef ASM_DECLARE_FUNCTION_NAME#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)			\  do									\    {									\      if (i386_pe_dllexport_name_p (NAME))				\	i386_pe_record_exported_symbol (NAME);				\      if (write_symbols != SDB_DEBUG)					\	i386_pe_declare_function_type (FILE, NAME, TREE_PUBLIC (DECL));	\      ASM_OUTPUT_LABEL (FILE, NAME);					\    }									\  while (0)/* Add an external function to the list of functions to be declared at   the end of the file.  */#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)				\  do									\    {									\      if (TREE_CODE (DECL) == FUNCTION_DECL)				\	i386_pe_record_external_function (NAME);			\    }									\  while (0)/* Declare the type properly for any external libcall.  */#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \  i386_pe_declare_function_type (FILE, XSTR (FUN, 0), 1)/* Output function declarations at the end of the file.  */#define ASM_FILE_END(FILE) \  i386_pe_asm_file_end (FILE)#undef ASM_COMMENT_START#define ASM_COMMENT_START " #"/* DWARF2 Unwinding doesn't work with exception handling yet. */#define DWARF2_UNWIND_INFO 0/* Don't assume anything about the header files. */#define NO_IMPLICIT_EXTERN_C#define SUBTARGET_PROLOGUE						\  if (profile_flag 							\      && strcmp (IDENTIFIER_POINTER (DECL_NAME (current_function_decl)),\		 "main") == 0)						\     {									\      rtx xops[1];							\      xops[0] = gen_rtx_MEM (FUNCTION_MODE,				\			 gen_rtx (SYMBOL_REF, Pmode, "_monstartup"));	\      if (do_rtl)							\	emit_call_insn (gen_rtx (CALL, VOIDmode, xops[0], const0_rtx));	\      else								\	output_asm_insn (AS1 (call,%P1), xops);			\     }/* External function declarations.  */#ifndef PROTO#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)#define PROTO(ARGS) ARGS#else#define PROTO(ARGS) ()#endif#endif#ifdef BUFSIZ		/* stdio.h has been included, ok to use FILE * */#define STDIO_PROTO(ARGS) PROTO(ARGS)#else#define STDIO_PROTO(ARGS) ()#endifextern void i386_pe_record_external_function PROTO((char *));extern void i386_pe_declare_function_type STDIO_PROTO((FILE *, char *, int));extern void i386_pe_record_exported_symbol PROTO((char *));extern void i386_pe_asm_file_end STDIO_PROTO((FILE *));/* For Win32 ABI compatibility */#undef DEFAULT_PCC_STRUCT_RETURN#define DEFAULT_PCC_STRUCT_RETURN 0/* No data type wants to be aligned rounder than this.  */#undef	BIGGEST_ALIGNMENT#define BIGGEST_ALIGNMENT 128/* A bitfield declared as `int' forces `int' alignment for the struct.  */#undef PCC_BITFIELDS_TYPE_MATTERS#define PCC_BITFIELDS_TYPE_MATTERS 0/* Enable alias attribute support.  */#ifndef SET_ASM_OP#define SET_ASM_OP "\t.set"#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -