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

📄 sysv4.h

📁 GUN开源阻止下的编译器GCC
💻 H
📖 第 1 页 / 共 2 页
字号:
#undef SELECT_RTX_SECTION#define SELECT_RTX_SECTION(MODE, X)		\{ if (ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (X))	\    toc_section ();				\  else						\    const_section ();				\}/* These macros generate the special .type and .size directives which   are used to set the corresponding fields of the linker symbol table   entries in an ELF object file under SVR4.  These macros also output   the starting labels for the relevant functions/objects.  *//* Write the extra assembler code needed to declare a function properly.   Some svr4 assemblers need to also have something extra said about the   function's return value.  We allow for that here.  */extern void svr4_traceback ();extern int rs6000_pic_labelno;#undef	ASM_DECLARE_FUNCTION_NAME#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)			\  do {									\    if (TARGET_RELOCATABLE && get_pool_size () != 0)			\      {									\	char buf[256];							\									\	ASM_OUTPUT_INTERNAL_LABEL (FILE, "LCL", rs6000_pic_labelno);	\									\	ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1);			\	fprintf (FILE, (TARGET_POWERPC64) ? "\t.quad " : "\t.long ");	\	assemble_name (FILE, buf);					\	putc ('-', FILE);						\									\	ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno);	\	assemble_name (FILE, buf);					\	putc ('\n', FILE);						\      }									\									\    fprintf (FILE, "\t%s\t ", TYPE_ASM_OP);				\    assemble_name (FILE, NAME);						\    putc (',', FILE);							\    fprintf (FILE, TYPE_OPERAND_FMT, "function");			\    putc ('\n', FILE);							\    if (TARGET_TRACEBACK)						\      svr4_traceback (FILE, NAME, DECL);				\    ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));			\    ASM_OUTPUT_LABEL(FILE, NAME);					\  } while (0)/* How to renumber registers for dbx and gdb.  */#define DBX_REGISTER_NUMBER(REGNO) (REGNO)/* svr4.h overrides ASM_OUTPUT_INTERNAL_LABEL.  */#undef ASM_OUTPUT_INTERNAL_LABEL_PREFIX#define ASM_OUTPUT_INTERNAL_LABEL_PREFIX(FILE,PREFIX)	\  fprintf (FILE, ".%s", PREFIX)/* Pass -mppc to the assembler, since that is what powerpc.h currently   implies.  */#undef ASM_SPEC#define ASM_SPEC \  "-u \%{mcpu=601: -m601} %{!mcpu=601: -mppc} \%{V} %{v:%{!V:-V}} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \%{mrelocatable} \%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian}"/* Output .file and comments listing what options there are */#undef ASM_FILE_START#define ASM_FILE_START(FILE)						\do {									\  ASM_OUTPUT_OPTIONS (FILE);						\  output_file_directive ((FILE), main_input_filename);			\} while (0)/* This is the end of what might become sysv4.h.  *//* Allow stabs and dwarf, prefer dwarf.  */#define PREFERRED_DEBUGGING_TYPE DWARF_DEBUG#define	DBX_DEBUGGING_INFO#define	DWARF_DEBUGGING_INFO/* This macro gets just the user-specified name   out of the string in a SYMBOL_REF.  Discard   a leading * */#undef  STRIP_NAME_ENCODING#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \  (VAR) = ((SYMBOL_NAME) + ((SYMBOL_NAME)[0] == '*'))/* Like block addresses, stabs line numbers are relative to the   current function.  */#undef  ASM_OUTPUT_SOURCE_LINE#define ASM_OUTPUT_SOURCE_LINE(file, line)				\do									\  {									\    static int sym_lineno = 1;						\    char *_p;								\    fprintf (file, "\t.stabn 68,0,%d,.LM%d-",				\	     line, sym_lineno);						\    STRIP_NAME_ENCODING (_p, XSTR (XEXP (DECL_RTL (current_function_decl), 0), 0)); \    assemble_name (file, _p);						\    fprintf (file, "\n.LM%d:\n", sym_lineno);				\    sym_lineno += 1;							\  }									\while (0)/* But, to make this work, we have to output the stabs for the function   name *first*...  */#define	DBX_FUNCTION_FIRST/* This is the end of what might become sysv4dbx.h.  */#undef TARGET_VERSION#define TARGET_VERSION fprintf (stderr, " (PowerPC System V.4)");/* Output assembler code for a block containing the constant parts   of a trampoline, leaving space for the variable parts.   The trampoline should set the static chain pointer to value placed   into the trampoline and should branch to the specified routine.   Unlike AIX, this needs real code.  */#undef	TRAMPOLINE_TEMPLATE#define TRAMPOLINE_TEMPLATE(FILE)					\do {									\  char *sc = reg_names[STATIC_CHAIN_REGNUM];				\  char *r0 = reg_names[0];						\									\  if (STATIC_CHAIN_REGNUM == 0 || !TARGET_NEW_MNEMONICS)		\    abort ();								\									\  if (TARGET_64BIT)							\    {									\      fprintf (FILE, "\tmflr %s\n", r0);		/* offset  0 */	\      fprintf (FILE, "\tbl .LTRAMP1\n");		/* offset  4 */	\      fprintf (FILE, "\t.long 0,0,0,0\n");		/* offset  8 */	\      fprintf (FILE, ".LTRAMP1:\n");					\      fprintf (FILE, "\tmflr %s\n", sc);		/* offset 28 */	\      fprintf (FILE, "\tmtlr %s\n", r0);		/* offset 32 */	\      fprintf (FILE, "\tld %s,0(%s)\n", r0, sc);	/* offset 36 */	\      fprintf (FILE, "\tld %s,8(%s)\n", sc, sc);	/* offset 40 */	\      fprintf (FILE, "\tmtctr %s\n", r0);		/* offset 44 */	\      fprintf (FILE, "\tbctr\n");			/* offset 48 */	\    }									\  else									\    {									\      fprintf (FILE, "\tmflr %s\n", r0);		/* offset  0 */	\      fprintf (FILE, "\tbl .LTRAMP1\n");		/* offset  4 */	\      fprintf (FILE, "\t.long 0,0\n");			/* offset  8 */	\      fprintf (FILE, ".LTRAMP1:\n");					\      fprintf (FILE, "\tmflr %s\n", sc);		/* offset 20 */	\      fprintf (FILE, "\tmtlr %s\n", r0);		/* offset 24 */	\      fprintf (FILE, "\tlwz %s,0(%s)\n", r0, sc);	/* offset 28 */	\      fprintf (FILE, "\tlwz %s,4(%s)\n", sc, sc);	/* offset 32 */	\      fprintf (FILE, "\tmtctr %s\n", r0);		/* offset 36 */	\      fprintf (FILE, "\tbctr\n");			/* offset 40 */	\    }									\} while (0)/* Length in units of the trampoline for entering a nested function.  */#undef	TRAMPOLINE_SIZE#define TRAMPOLINE_SIZE    (TARGET_64BIT ? 48 : 40)/* Emit RTL insns to initialize the variable parts of a trampoline.   FNADDR is an RTX for the address of the function's pure code.   CXT is an RTX for the static chain value for the function.  */#undef	INITIALIZE_TRAMPOLINE#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, CXT)			\{									\  rtx reg = gen_reg_rtx (Pmode);					\									\  emit_move_insn (reg, FNADDR);						\  emit_move_insn (gen_rtx (MEM, Pmode,					\			   plus_constant (ADDR, 8)),			\		  reg);							\  emit_move_insn (gen_rtx (MEM, Pmode,					\			   plus_constant (ADDR, (TARGET_64BIT ? 16 : 12))), \		  CXT);							\  emit_insn (gen_sync_isync (gen_rtx (MEM, BLKmode, ADDR)));		\}#undef CPP_PREDEFINES#define CPP_PREDEFINES \  "-DPPC -Dunix -D__svr4__ -Asystem(unix) -Asystem(svr4) -Acpu(powerpc) -Amachine(powerpc)"/* Don't put -Y P,<path> for cross compilers */#undef LINK_SPEC#ifdef CROSS_COMPILE#define LINK_SPEC "\%{h*} %{V} %{v:%{!V:-V}} \%{b} %{Wl,*:%*} \%{static:-dn -Bstatic} \%{shared:-G -dy -z text %{!h*:%{o*:-h %*}}} \%{symbolic:-Bsymbolic -G -dy -z text %{!h*:%{o*:-h %*}}} \%{G:-G} \%{YP,*} \%{Qy:} %{!Qn:-Qy} \%{mlittle: -oformat elf32-powerpcle } %{mlittle-endian: -oformat elf32-powerpcle } \%{mbig: -oformat elf32-powerpc } %{mbig-endian: -oformat elf32-powerpc }"#else#define LINK_SPEC "\%{h*} %{V} %{v:%{!V:-V}} \%{b} %{Wl,*:%*} \%{static:-dn -Bstatic} \%{shared:-G -dy -z text %{!h*:%{o*:-h %*}}} \%{symbolic:-Bsymbolic -G -dy -z text %{!h*:%{o*:-h %*}}} \%{G:-G} \%{YP,*} \%{!nostdlib: %{!YP,*:%{p:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \	     %{!p:-Y P,/usr/ccs/lib:/usr/lib}}} \%{Qy:} %{!Qn:-Qy} \%{mlittle: -oformat elf32-powerpcle } %{mlittle-endian: -oformat elf32-powerpcle } \%{mbig: -oformat elf32-powerpc } %{mbig-endian: -oformat elf32-powerpc }"#endif /* CROSS_COMPILE */#undef CPP_SPEC#define CPP_SPEC "\%{posix: -D_POSIX_SOURCE} \%{mrelocatable: -D_RELOCATABLE} \%{mcall-sysv: -D_CALL_SYSV} %{mcall-aix: -D_CALL_AIX} %{!mcall-sysv: %{!mcall-aix: -D_CALL_SYSV}} \%{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT} \%{mlittle: -D_LITTLE_ENDIAN -Amachine(littleendian)} \%{mlittle-endian: -D_LITTLE_ENDIAN -Amachine(littleendian)} \%{!mlittle: %{!mlittle-endian: -D_BIG_ENDIAN -Amachine(bigendian)}} \%{!mcpu*: \  %{mpower: %{!mpower2: -D_ARCH_PWR}} \  %{mpower2: -D_ARCH_PWR2} \  %{mpowerpc*: -D_ARCH_PPC} \  %{mno-powerpc: %{!mpower: %{!mpower2: -D_ARCH_COM}}} \  %{!mno-powerpc: -D_ARCH_PPC}} \%{mcpu=common: -D_ARCH_COM} \%{mcpu=power: -D_ARCH_PWR} \%{mcpu=powerpc: -D_ARCH_PPC} \%{mcpu=rios: -D_ARCH_PWR} \%{mcpu=rios1: -D_ARCH_PWR} \%{mcpu=rios2: -D_ARCH_PWR2} \%{mcpu=rsc: -D_ARCH_PWR} \%{mcpu=rsc1: -D_ARCH_PWR} \%{mcpu=403: -D_ARCH_PPC} \%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \%{mcpu=603: -D_ARCH_PPC} \%{mcpu=604: -D_ARCH_PPC}"

⌨️ 快捷键说明

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