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

📄 osfrose.h

📁 gcc编译工具没有什么特别
💻 H
📖 第 1 页 / 共 3 页
字号:
/* This is how we tell the assembler that a symbol is weak.  */#define ASM_WEAKEN_LABEL(FILE,NAME) \  do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \       fputc ('\n', FILE); } while (0)/* The following macro defines the format used to output the second   operand of the .type assembler directive.  Different svr4 assemblers   expect various different forms for this operand.  The one given here   is just a default.  You may need to override it in your machine-   specific tm.h file (depending upon the particulars of your assembler).  */#define TYPE_OPERAND_FMT	"@%s"/* A C statement (sans semicolon) to output to the stdio stream   STREAM any text necessary for declaring the name NAME of an   initialized variable which is being defined.  This macro must   output the label definition (perhaps using `ASM_OUTPUT_LABEL').   The argument DECL is the `VAR_DECL' tree node representing the   variable.   If this macro is not defined, then the variable name is defined   in the usual manner as a label (by means of `ASM_OUTPUT_LABEL').  */#undef	ASM_DECLARE_OBJECT_NAME#define ASM_DECLARE_OBJECT_NAME(STREAM, NAME, DECL)			     \do									     \ {									     \   ASM_OUTPUT_LABEL(STREAM,NAME);					     \   HALF_PIC_DECLARE (NAME);						     \   if (TARGET_ELF)							     \     {									     \       fprintf (STREAM, "\t%s\t ", TYPE_ASM_OP);			     \       assemble_name (STREAM, NAME);					     \       putc (',', STREAM);						     \       fprintf (STREAM, TYPE_OPERAND_FMT, "object");			     \       putc ('\n', STREAM);						     \       size_directive_output = 0;					     \       if (!flag_inhibit_size_directive && DECL_SIZE (DECL))		     \	 {								     \           size_directive_output = 1;					     \	   fprintf (STREAM, "\t%s\t ", SIZE_ASM_OP);			     \	   assemble_name (STREAM, NAME);				     \	   fprintf (STREAM, ",%d\n",  int_size_in_bytes (TREE_TYPE (DECL))); \	 }								     \     }									     \ }									     \while (0)/* Output the size directive for a decl in rest_of_decl_compilation   in the case where we did not do so before the initializer.   Once we find the error_mark_node, we know that the value of   size_directive_output was set   by ASM_DECLARE_OBJECT_NAME when it was run for the same decl.  */#define ASM_FINISH_DECLARE_OBJECT(FILE, DECL, TOP_LEVEL, AT_END)	 \do {									 \     char *name = XSTR (XEXP (DECL_RTL (DECL), 0), 0);			 \     if (TARGET_ELF							 \	 && !flag_inhibit_size_directive && DECL_SIZE (DECL)		 \         && ! AT_END && TOP_LEVEL					 \	 && DECL_INITIAL (DECL) == error_mark_node			 \	 && !size_directive_output)					 \       {								 \	 fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);			 \	 assemble_name (FILE, name);					 \	 fprintf (FILE, ",%d\n",  int_size_in_bytes (TREE_TYPE (DECL))); \       }								 \   } while (0)/* This is how to declare a function name. */#undef	ASM_DECLARE_FUNCTION_NAME#define ASM_DECLARE_FUNCTION_NAME(STREAM,NAME,DECL)			\do									\ {									\   ASM_OUTPUT_LABEL(STREAM,NAME);					\   HALF_PIC_DECLARE (NAME);						\   if (TARGET_ELF)							\     {									\       fprintf (STREAM, "\t%s\t ", TYPE_ASM_OP);			\       assemble_name (STREAM, NAME);					\       putc (',', STREAM);						\       fprintf (STREAM, TYPE_OPERAND_FMT, "function");			\       putc ('\n', STREAM);						\       ASM_DECLARE_RESULT (STREAM, DECL_RESULT (DECL));			\     }									\ }									\while (0)/* Write the extra assembler code needed to declare a function's result.   Most svr4 assemblers don't require any special declaration of the   result value, but there are exceptions.  */#ifndef ASM_DECLARE_RESULT#define ASM_DECLARE_RESULT(FILE, RESULT)#endif/* This is how to declare the size of a function.  */#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)			\do									\  {									\    if (TARGET_ELF && !flag_inhibit_size_directive)			\      {									\        char label[256];						\	static int labelno;						\	labelno++;							\	ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno);		\	ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno);		\	fprintf (FILE, "\t%s\t ", SIZE_ASM_OP);				\	assemble_name (FILE, (FNAME));					\        fprintf (FILE, ",");						\	assemble_name (FILE, label);					\        fprintf (FILE, "-");						\	assemble_name (FILE, (FNAME));					\	putc ('\n', FILE);						\      }									\  }									\while (0)/* Attach a special .ident directive to the end of the file to identify   the version of GCC which compiled this code.  The format of the   .ident string is patterned after the ones produced by native svr4   C compilers.  */#define IDENT_ASM_OP ".ident"/* Allow #sccs in preprocessor.  */#define SCCS_DIRECTIVE/* This says what to print at the end of the assembly file */#define ASM_FILE_END(STREAM)						\do									\  {									\    if (HALF_PIC_P ())							\      HALF_PIC_FINISH (STREAM);						\									\    if (!flag_no_ident)							\      {									\	char *fstart = main_input_filename;				\	char *fname;							\									\	if (!fstart)							\	  fstart = "<no file>";						\									\	fname = fstart + strlen (fstart) - 1;				\	while (fname > fstart && *fname != '/')				\	  fname--;							\									\	if (*fname == '/')						\	  fname++;							\									\	fprintf ((STREAM), "\t%s\t\"GCC: (GNU) %s %s -O%d",		\		 IDENT_ASM_OP, version_string, fname, optimize);	\									\	if (write_symbols == PREFERRED_DEBUGGING_TYPE)			\	  fprintf ((STREAM), " -g%d", (int)debug_info_level);		\									\	else if (write_symbols == DBX_DEBUG)				\	  fprintf ((STREAM), " -gstabs%d", (int)debug_info_level);	\									\	else if (write_symbols == DWARF_DEBUG)				\	  fprintf ((STREAM), " -gdwarf%d", (int)debug_info_level);	\									\	else if (write_symbols != NO_DEBUG)				\	  fprintf ((STREAM), " -g??%d", (int)debug_info_level);		\									\	if (flag_omit_frame_pointer)					\	  fprintf ((STREAM), " -fomit-frame-pointer");			\									\	if (flag_strength_reduce)					\	  fprintf ((STREAM), " -fstrength-reduce");			\									\	if (flag_unroll_loops)						\	  fprintf ((STREAM), " -funroll-loops");			\									\	if (flag_schedule_insns)					\	  fprintf ((STREAM), " -fschedule-insns");			\									\	if (flag_schedule_insns_after_reload)				\	  fprintf ((STREAM), " -fschedule-insns2");			\									\	if (flag_force_mem)						\	  fprintf ((STREAM), " -fforce-mem");				\									\	if (flag_force_addr)						\	  fprintf ((STREAM), " -fforce-addr");				\									\	if (flag_inline_functions)					\	  fprintf ((STREAM), " -finline-functions");			\									\	if (flag_caller_saves)						\	  fprintf ((STREAM), " -fcaller-saves");			\									\	if (flag_pic)							\	  fprintf ((STREAM), (flag_pic > 1) ? " -fPIC" : " -fpic");	\									\	if (flag_inhibit_size_directive)				\	  fprintf ((STREAM), " -finhibit-size-directive");		\									\	if (flag_gnu_linker)						\	  fprintf ((STREAM), " -fgnu-linker");				\									\	if (profile_flag)						\	  fprintf ((STREAM), " -p");					\									\	if (profile_block_flag)						\	  fprintf ((STREAM), " -a");					\									\	if (TARGET_IEEE_FP)						\	  fprintf ((STREAM), " -mieee-fp");				\									\	if (TARGET_HALF_PIC)						\	  fprintf ((STREAM), " -mhalf-pic");				\									\	if (!TARGET_MOVE)						\	  fprintf ((STREAM), " -mno-move");				\									\	if (TARGET_386)							\	  fprintf ((STREAM), " -m386");					\									\	else if (TARGET_486)						\	  fprintf ((STREAM), " -m486");					\									\	else								\	  fprintf ((STREAM), " -munknown-machine");			\									\	fprintf ((STREAM), (TARGET_ELF) ? " -melf\"\n" : " -mrose\"\n"); \      }									\  }									\while (0)/* Tell collect that the object format is OSF/rose.  */#define OBJECT_FORMAT_ROSE/* Tell collect where the appropriate binaries are.  */#define REAL_NM_FILE_NAME	"/usr/ccs/gcc/bfd-nm"#define REAL_STRIP_FILE_NAME	"/usr/ccs/bin/strip"/* Use atexit for static constructors/destructors, instead of defining   our own exit function.  */#define HAVE_ATEXIT/* Define this macro meaning that gcc should find the library 'libgcc.a'   by hand, rather than passing the argument '-lgcc' to tell the linker   to do the search */#define LINK_LIBGCC_SPECIAL/* A C statement to output assembler commands which will identify the object  file as having been compile with GNU CC. We don't need or want this for  OSF1. GDB doesn't need it and kdb doesn't like it */#define ASM_IDENTIFY_GCC(FILE)/* Identify the front-end which produced this file.  To keep symbol   space down, and not confuse kdb, only do this if the language is   not C.  */#define ASM_IDENTIFY_LANGUAGE(STREAM)					\{									\  if (strcmp (lang_identify (), "c") != 0)				\    output_lang_identify (STREAM);					\}/* Generate calls to memcpy, etc., not bcopy, etc. */#define TARGET_MEM_FUNCTIONS/* Don't default to pcc-struct-return, because gcc is the only compiler, and   we want to retain compatibility with older gcc versions.  */#define DEFAULT_PCC_STRUCT_RETURN 0/* Map i386 registers to the numbers dwarf expects.  Of course this is different   from what stabs expects.  */#define DWARF_DBX_REGISTER_NUMBER(n) \((n) == 0 ? 0 \ : (n) == 1 ? 2 \ : (n) == 2 ? 1 \ : (n) == 3 ? 3 \ : (n) == 4 ? 6 \ : (n) == 5 ? 7 \ : (n) == 6 ? 5 \ : (n) == 7 ? 4 \ : ((n) >= FIRST_STACK_REG && (n) <= LAST_STACK_REG) ? (n)+3 \ : (-1))/* Now what stabs expects in the register.  */#define STABS_DBX_REGISTER_NUMBER(n) \((n) == 0 ? 0 : \ (n) == 1 ? 2 : \ (n) == 2 ? 1 : \ (n) == 3 ? 3 : \ (n) == 4 ? 6 : \ (n) == 5 ? 7 : \ (n) == 6 ? 4 : \ (n) == 7 ? 5 : \ (n) + 4)#undef	DBX_REGISTER_NUMBER#define DBX_REGISTER_NUMBER(n) ((write_symbols == DWARF_DEBUG)		\				? DWARF_DBX_REGISTER_NUMBER(n)		\				: STABS_DBX_REGISTER_NUMBER(n))

⌨️ 快捷键说明

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