📄 osfrose.h
字号:
/* 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 + -