📄 sco5.h
字号:
break; \ default: \ putc ('\\', (FILE)); \ putc (escape, (FILE)); \ break; \ } \ } \ fprintf ((FILE), "\"\n"); \ } \ while (0)#undef ASM_OUTPUT_ASCII#define ASM_OUTPUT_ASCII(FILE, STR, LENGTH) \do { \ register unsigned char *_ascii_bytes = (unsigned char *) (STR); \ register unsigned char *limit = _ascii_bytes + (LENGTH); \ register unsigned bytes_in_chunk = 0; \ for (; _ascii_bytes < limit; _ascii_bytes++) \ { \ register unsigned char *p; \ if (bytes_in_chunk >= 64) \ { \ fputc ('\n', (FILE)); \ bytes_in_chunk = 0; \ } \ for (p = _ascii_bytes; p < limit && *p != '\0'; p++) \ continue; \ if (p < limit && (p - _ascii_bytes) <= STRING_LIMIT) \ { \ if (bytes_in_chunk > 0) \ { \ fputc ('\n', (FILE)); \ bytes_in_chunk = 0; \ } \ ASM_OUTPUT_LIMITED_STRING ((FILE), _ascii_bytes); \ _ascii_bytes = p; \ } \ else \ { \ if (bytes_in_chunk == 0) \ fprintf ((FILE), "%s\t", ASM_BYTE_OP); \ else \ fputc (',', (FILE)); \ fprintf ((FILE), "0x%02x", *_ascii_bytes); \ bytes_in_chunk += 5; \ } \ } \ if (bytes_in_chunk > 0) \ fprintf ((FILE), "\n"); \} while (0) /* Must use data section for relocatable constants when pic. */#undef SELECT_RTX_SECTION#define SELECT_RTX_SECTION(MODE,RTX) \{ \ if (TARGET_ELF) { \ if (flag_pic && symbolic_operand (RTX)) \ data_section (); \ else \ const_section (); \ } else \ readonly_data_section(); \}#undef ASM_OUTPUT_CASE_LABEL#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,JUMPTABLE) \do { \ if (TARGET_ELF) \ ASM_OUTPUT_ALIGN ((FILE), 2); \ ASM_OUTPUT_INTERNAL_LABEL((FILE),(PREFIX),(NUM)); \} while (0)#undef ASM_OUTPUT_CONSTRUCTOR#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \do { \ if (TARGET_ELF) { \ ctors_section (); \ fprintf (FILE, "%s\t ", INT_ASM_OP); \ assemble_name (FILE, NAME); \ fprintf (FILE, "\n"); \ } else { \ init_section (); \ fprintf (FILE, "\tpushl $"); \ assemble_name (FILE, NAME); \ fprintf (FILE, "\n"); } \ } while (0)#undef ASM_OUTPUT_DESTRUCTOR#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \do { \ if (TARGET_ELF) { \ dtors_section (); \ fprintf (FILE, "%s\t ", INT_ASM_OP); \ assemble_name (FILE, NAME); \ fprintf (FILE, "\n"); \ } else { \ fini_section (); \ fprintf (FILE, "%s\t ", ASM_LONG); \ assemble_name (FILE, NAME); \ fprintf (FILE, "\n"); } \ } while (0)#undef ASM_OUTPUT_IDENT#define ASM_OUTPUT_IDENT(FILE, NAME) \ fprintf (FILE, "%s\t\"%s\"\n", IDENT_ASM_OP, NAME);#undef ASM_GLOBALIZE_LABEL#define ASM_GLOBALIZE_LABEL(FILE,NAME) \ (fprintf ((FILE), "%s ", GLOBAL_ASM_OP), assemble_name (FILE, NAME), fputs ("\n", FILE))#undef ASM_OUTPUT_EXTERNAL_LIBCALL#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN) \ if (TARGET_ELF) ASM_GLOBALIZE_LABEL (FILE, XSTR (FUN, 0))#undef ASM_OUTPUT_INTERNAL_LABEL#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM) \ fprintf (FILE, ".%s%d:\n", PREFIX, NUM)/* The prefix to add to user-visible assembler symbols. */#undef USER_LABEL_PREFIX#define USER_LABEL_PREFIX ""/* * Compensate for the difference between ELF and COFF assembler syntax. * Otherwise, this is cribbed from ../svr4.h. * We rename 'gcc_except_table' to the shorter name in preparation * for the day when we're ready to do DWARF2 eh unwinding under COFF */#undef ASM_OUTPUT_SECTION_NAME#define ASM_OUTPUT_SECTION_NAME(FILE, 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; \ char *sname = NAME ; \ if (strcmp(NAME, ".gcc_except_table") == 0) sname = ".gccexc" ; \ \ for (s = sections; s; s = s->next) \ if (!strcmp (NAME, s->name)) \ break; \ \ if (DECL && TREE_CODE (DECL) == FUNCTION_DECL) \ type = SECT_EXEC, mode = (TARGET_ELF) ? "ax" : "x" ; \ else if (DECL && DECL_READONLY_SECTION (DECL, RELOC)) \ type = SECT_RO, mode = "a"; \ else \ type = SECT_RW, mode = (TARGET_ELF) ? "aw" : "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 (FILE, ".section\t%s,\"%s\"%s\n", sname, mode, \ (TARGET_ELF) ? ",@progbits" : "" ); \ } \ else \ { \ if (DECL && s->type != type) \ error_with_decl (DECL, "%s causes a section type conflict"); \ \ fprintf (FILE, ".section\t%s\n", sname); \ } \} while (0)#undef ASM_OUTPUT_SKIP#define ASM_OUTPUT_SKIP(FILE,SIZE) \do { \ if (TARGET_ELF) \ fprintf (FILE, "%s\t%u\n", SKIP_ASM_OP, (SIZE)); \ else \ fprintf ((FILE), "%s\t.,.+%u\n", SET_ASM_OP, (SIZE)); \} while (0)#undef CTOR_LIST_BEGIN#define CTOR_LIST_BEGIN \do { \ asm (CTORS_SECTION_ASM_OP); \ if (TARGET_ELF) \ STATIC func_ptr __CTOR_LIST__[1] = { (func_ptr) (-1) }; \ else \ asm ("pushl $0"); \} while (0)#undef CTOR_LIST_END#define CTOR_LIST_END \do { \ if (TARGET_ELF) { \ asm (CTORS_SECTION_ASM_OP); \ STATIC func_ptr __CTOR_LIST__[1] = { (func_ptr) (0) }; \ } else { \ CTOR_LIST_BEGIN; \ } \} while (0)#undef DBX_BLOCKS_FUNCTION_RELATIVE#define DBX_BLOCKS_FUNCTION_RELATIVE 1#undef DBX_FUNCTION_FIRST#define DBX_FUNCTION_FIRST 1#undef DBX_REGISTER_NUMBER#define DBX_REGISTER_NUMBER(n) \((TARGET_ELF) ? \ ((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)) \ : \ ((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 DWARF_DEBUGGING_INFO#undef SDB_DEBUGGING_INFO#undef DBX_DEBUGGING_INFO#undef PREFERRED_DEBUGGING_TYPE#define DWARF_DEBUGGING_INFO 1#define SDB_DEBUGGING_INFO 1#define DBX_DEBUGGING_INFO 1#define PREFERRED_DEBUGGING_TYPE \ ((TARGET_ELF) ? DWARF_DEBUG: SDB_DEBUG)#undef EXTRA_SECTIONS#define EXTRA_SECTIONS in_const, in_init, in_fini, in_ctors, in_dtors#undef EXTRA_SECTION_FUNCTIONS#define EXTRA_SECTION_FUNCTIONS \ CONST_SECTION_FUNCTION \ INIT_SECTION_FUNCTION \ FINI_SECTION_FUNCTION \ CTORS_SECTION_FUNCTION \ DTORS_SECTION_FUNCTION#undef CONST_SECTION_FUNCTION#define CONST_SECTION_FUNCTION \void \const_section () \{ \ extern void text_section(); \ if (!USE_CONST_SECTION) \ text_section(); \ else if (in_section != in_const) \ { \ fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP); \ in_section = in_const; \ } \}#undef FINI_SECTION_FUNCTION#define FINI_SECTION_FUNCTION \void \fini_section () \{ \ if ((!TARGET_ELF) && in_section != in_fini) \ { \ fprintf (asm_out_file, "%s\n", FINI_SECTION_ASM_OP); \ in_section = in_fini; \ } \}#undef INIT_SECTION_FUNCTION#define INIT_SECTION_FUNCTION \void \init_section () \{ \ if ((!TARGET_ELF) && in_section != in_init) \ { \ fprintf (asm_out_file, "%s\n", INIT_SECTION_ASM_OP); \ in_section = in_init; \ } \}#undef CTORS_SECTION_FUNCTION#define CTORS_SECTION_FUNCTION \void \ctors_section () \{ \ if (in_section != in_ctors) \ { \ fprintf (asm_out_file, "%s\n", CTORS_SECTION_ASM_OP); \ in_section = in_ctors; \ } \}#undef DTORS_SECTION_FUNCTION#define DTORS_SECTION_FUNCTION \void \dtors_section () \{ \ if (in_section != in_dtors) \ { \ fprintf (asm_out_file, "%s\n", DTORS_SECTION_ASM_OP); \ in_section = in_dtors; \ } \}#undef FRAME_POINTER_REQUIRED#define FRAME_POINTER_REQUIRED \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -