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

📄 pa64-hpux.h

📁 linux下的gcc编译器
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Definitions of target machine for GNU compiler, for HPs running   HPUX using the 64bit runtime model.   Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.This file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 59 Temple Place - Suite 330,Boston, MA 02111-1307, USA.  */#undef SUBTARGET_SWITCHES#define SUBTARGET_SWITCHES				\  { "sio",	 MASK_SIO,				\     N_("Generate cpp defines for server IO") },	\  { "wsio",	-MASK_SIO,				\     N_("Generate cpp defines for workstation IO") },	\  {"gnu-ld",	 MASK_GNU_LD,				\     N_("Assume code will be linked by GNU ld") },	\  {"hp-ld",	-MASK_GNU_LD,				\     N_("Assume code will be linked by HP ld") },/* We can debug dynamically linked executables on hpux11; we also   want dereferencing of a NULL pointer to cause a SEGV.  Do not move   the "+Accept TypeMismatch" switch.  We check for it in collect2   to determine which init/fini is needed.  */#undef LINK_SPEC#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)#define LINK_SPEC \  "%{mhp-ld:+Accept TypeMismatch} -E %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:%{mhp-ld:-b}%{!mhp-ld:-shared}}"#else#define LINK_SPEC \  "%{!mgnu-ld:+Accept TypeMismatch} -E %{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{shared:%{mgnu-ld:-shared}%{!mgnu-ld:-b}}"#endif/* Profiling support is only provided in libc.a.  However, libprof and   libgprof are only available in shared form on HP-UX 11.00.  We use   the shared form if we are using the GNU linker or an archive form   isn't available.  We also usually need to link with libdld and it's   only available in shared form.  */#undef LIB_SPEC#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD)#define LIB_SPEC \  "%{!shared:\     %{!p:%{!pg: -lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\     %{p:%{!pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\	   -lprof %{static:-a archive} -lc\	   %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\     %{pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\       -lgprof %{static:-a archive} -lc\       %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\   /usr/lib/pa20_64/milli.a"#else#define LIB_SPEC \  "%{!shared:\     %{!p:%{!pg: -lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\     %{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\	   -lprof %{static:-a archive} -lc\	   %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\     %{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\       -lgprof %{static:-a archive} -lc\       %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\   /usr/lib/pa20_64/milli.a"#endif/* Under hpux11, the normal location of the `ld' and `as' programs is the   /usr/ccs/bin directory.  */#ifndef CROSS_COMPILE#undef MD_EXEC_PREFIX#define MD_EXEC_PREFIX "/usr/ccs/bin"#endif/* Under hpux11 the normal location of the various pa20_64 *crt*.o files   is the /usr/ccs/lib/pa20_64 directory.  Some files may also be in the   /opt/langtools/lib/pa20_64 directory.  */#ifndef CROSS_COMPILE#undef MD_STARTFILE_PREFIX#define MD_STARTFILE_PREFIX "/usr/ccs/lib/pa20_64/"#endif#ifndef CROSS_COMPILE#undef MD_STARTFILE_PREFIX_1#define MD_STARTFILE_PREFIX_1 "/opt/langtools/lib/pa20_64/"#endif/* Due to limitations in the target structure, it isn't currently possible   to dynamically switch between the GNU and HP assemblers.  */#undef TARGET_GAS/* Configure selects the standard ELFOS defines for use with GAS.  */#ifdef USING_ELFOS_H/* We are using GAS.  */#define TARGET_GAS 1#undef ASM_FILE_START#define ASM_FILE_START(FILE) \do {								\  if (TARGET_64BIT)						\    fputs("\t.LEVEL 2.0w\n", FILE);				\  else if (TARGET_PA_20)					\    fputs("\t.LEVEL 2.0\n", FILE);				\  else if (TARGET_PA_11)					\    fputs("\t.LEVEL 1.1\n", FILE);				\  else								\    fputs("\t.LEVEL 1.0\n", FILE);				\  if (profile_flag)						\    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, "_mcount", "function");	\  if (write_symbols != NO_DEBUG)				\    {								\      output_file_directive ((FILE), main_input_filename);	\      fputs ("\t.version\t\"01.01\"\n", FILE);			\    }								\} while (0)/* This is how we output a null terminated string.  */#undef STRING_ASM_OP#define STRING_ASM_OP	"\t.stringz\t"#define TEXT_SECTION_ASM_OP	"\t.text"#define DATA_SECTION_ASM_OP	"\t.data"#define BSS_SECTION_ASM_OP	"\t.section\t.bss"#define JCR_SECTION_NAME	".jcr"#define HP_INIT_ARRAY_SECTION_ASM_OP	"\t.section\t.init"#define GNU_INIT_ARRAY_SECTION_ASM_OP	"\t.section\t.init_array"#define HP_FINI_ARRAY_SECTION_ASM_OP	"\t.section\t.fini"#define GNU_FINI_ARRAY_SECTION_ASM_OP	"\t.section\t.fini_array"#undef ASM_OUTPUT_ALIGNED_COMMON#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\do {									\  bss_section ();							\  assemble_name ((FILE), (NAME));					\  fputs ("\t.comm ", (FILE));						\  fprintf ((FILE), "%d\n", MAX ((SIZE), ((ALIGN) / BITS_PER_UNIT)));	\} while (0)#undef ASM_OUTPUT_ALIGNED_LOCAL#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\do {									\  bss_section ();							\  fprintf ((FILE), "\t.align %d\n", ((ALIGN) / BITS_PER_UNIT));		\  assemble_name ((FILE), (NAME));					\  fprintf ((FILE), "\n\t.block %d\n", (SIZE));				\} while (0)/* The define in pa.h doesn't work with the alias attribute.  The   default is ok with the following define for GLOBAL_ASM_OP.  */#undef TARGET_ASM_GLOBALIZE_LABEL/* This is how we globalize a label.  */#define GLOBAL_ASM_OP	"\t.globl\t"/* Hacked version from elfos.h that doesn't output a label.  */#undef ASM_DECLARE_FUNCTION_NAME#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL)		\do {								\  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");		\  ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL));		\} while (0)/* The type of external references must be set correctly for the   dynamic loader to work correctly.  This is equivalent to the   HP assembler's .IMPORT directive but relates more directly to   ELF object file types.  */#define ASM_OUTPUT_EXTERNAL(FILE, DECL, NAME)				\do {									\  int save_referenced;							\  save_referenced = TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL));\  if (FUNCTION_NAME_P (NAME))						\    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "function");			\  else									\    ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\  TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (DECL)) = save_referenced;\} while (0)/* We need set the type for external libcalls.  Also note that not all   libcall names are passed to targetm.encode_section_info (e.g., __main).   Thus, we also have to do the section encoding if it hasn't been done   already.  */#undef ASM_OUTPUT_EXTERNAL_LIBCALL#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN)			\do {								\  if (!FUNCTION_NAME_P (XSTR (FUN, 0)))				\    hppa_encode_label (FUN);					\  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, XSTR (FUN, 0), "function");	\} while (0)/* We need to use the HP style for internal labels.  */#undef  ASM_OUTPUT_INTERNAL_LABEL#define ASM_OUTPUT_INTERNAL_LABEL(FILE, PREFIX, NUM)	\  fprintf (FILE, "%c$%s%04d\n", (PREFIX)[0], (PREFIX) + 1, NUM)#undef ASM_GENERATE_INTERNAL_LABEL#define ASM_GENERATE_INTERNAL_LABEL(LABEL, PREFIX, NUM)	\  sprintf (LABEL, "*%c$%s%04ld", (PREFIX)[0], (PREFIX) + 1, (long)(NUM))#else /* USING_ELFOS_H *//* We are not using GAS.  */#define TARGET_GAS 0/* HPUX 11 has the "new" HP assembler.  It's still lousy, but it's a whole

⌨️ 快捷键说明

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