diff options
author | kan <kan@FreeBSD.org> | 2007-05-19 01:19:51 +0000 |
---|---|---|
committer | kan <kan@FreeBSD.org> | 2007-05-19 01:19:51 +0000 |
commit | 1f9ea4d0a40cca64d60cf4dab152349da7b9dddf (patch) | |
tree | 0cb530c9c38af219e6dda2994c078b6b2b9ad853 /contrib/gcc/config/ia64/hpux.h | |
parent | 4895159b2b4f648051c1f139faa7b6dc50c2bfcb (diff) | |
download | FreeBSD-src-1f9ea4d0a40cca64d60cf4dab152349da7b9dddf.zip FreeBSD-src-1f9ea4d0a40cca64d60cf4dab152349da7b9dddf.tar.gz |
GCC 4.2.0 release.
Diffstat (limited to 'contrib/gcc/config/ia64/hpux.h')
-rw-r--r-- | contrib/gcc/config/ia64/hpux.h | 80 |
1 files changed, 53 insertions, 27 deletions
diff --git a/contrib/gcc/config/ia64/hpux.h b/contrib/gcc/config/ia64/hpux.h index 09fb53f..996b7d2 100644 --- a/contrib/gcc/config/ia64/hpux.h +++ b/contrib/gcc/config/ia64/hpux.h @@ -1,5 +1,6 @@ /* Definitions of target machine GNU compiler. IA-64 version. - Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007 + Free Software Foundation, Inc. Contributed by Steve Ellcey <sje@cup.hp.com> and Reva Cuthbertson <reva@cup.hp.com> @@ -17,8 +18,8 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301, USA. */ /* This macro is a C statement to print on `stderr' a string describing the particular machine description choice. */ @@ -29,6 +30,12 @@ Boston, MA 02111-1307, USA. */ #undef TARGET_HPUX #define TARGET_HPUX 1 +#undef WCHAR_TYPE +#define WCHAR_TYPE "unsigned int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE 32 + /* Target OS builtins. */ #define TARGET_OS_CPP_BUILTINS() \ do { \ @@ -46,6 +53,7 @@ do { \ builtin_define("_HPUX_SOURCE"); \ builtin_define("__STDC_EXT__"); \ builtin_define("__STDCPP__"); \ + builtin_define("_INCLUDE__STDC_A1_SOURCE"); \ } \ if (TARGET_ILP32) \ builtin_define("_ILP32"); \ @@ -64,11 +72,13 @@ do { \ #undef ENDFILE_SPEC #undef STARTFILE_SPEC -#define STARTFILE_SPEC "%{!shared:%{static:crt0%O%s}}" +#define STARTFILE_SPEC "%{!shared:%{static:crt0%O%s} \ + %{mlp64:/usr/lib/hpux64/unix98%O%s} \ + %{!mlp64:/usr/lib/hpux32/unix98%O%s}}" #undef LINK_SPEC #define LINK_SPEC \ - "+Accept TypeMismatch \ + "-z +Accept TypeMismatch \ %{shared:-b} \ %{!shared: \ -u main \ @@ -84,11 +94,6 @@ do { \ %{mlp64:-L/usr/lib/hpux64/libp} -lgprof} \ %{!symbolic:-lc}}" -#undef SUBTARGET_SWITCHES -#define SUBTARGET_SWITCHES \ - { "ilp32", MASK_ILP32, "Generate ILP32 code" }, \ - { "lp64", -MASK_ILP32, "Generate LP64 code" }, - #define MULTILIB_DEFAULTS { "milp32" } /* A C expression whose value is zero if pointers that need to be extended @@ -101,16 +106,11 @@ do { \ #define JMP_BUF_SIZE (8 * 76) #undef TARGET_DEFAULT -#define TARGET_DEFAULT (MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32) - -/* This needs to be set to force structure arguments with a single - integer field to be treated as structures and not as the type of - their field. Without this a structure with a single char will be - returned just like a char variable, instead of being returned at the - top of the register as specified for big-endian IA64. */ +#define TARGET_DEFAULT \ + (MASK_DWARF2_ASM | MASK_BIG_ENDIAN | MASK_ILP32) -#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) \ - (!FLOAT_MODE_P (MODE) || (MODE) == TFmode) +/* ??? Might not be needed anymore. */ +#define MEMBER_TYPE_FORCES_BLK(FIELD, MODE) ((MODE) == TFmode) /* ASM_OUTPUT_EXTERNAL_LIBCALL defaults to just a globalize_label call, but that doesn't put out the @function type information which causes @@ -178,19 +178,45 @@ do { \ /* It is illegal to have relocations in shared segments on HPUX. Pretend flag_pic is always set. */ -#undef TARGET_ASM_SELECT_SECTION -#define TARGET_ASM_SELECT_SECTION ia64_rwreloc_select_section -#undef TARGET_ASM_UNIQUE_SECTION -#define TARGET_ASM_UNIQUE_SECTION ia64_rwreloc_unique_section -#undef TARGET_ASM_SELECT_RTX_SECTION -#define TARGET_ASM_SELECT_RTX_SECTION ia64_rwreloc_select_rtx_section -#undef TARGET_SECTION_TYPE_FLAGS -#define TARGET_SECTION_TYPE_FLAGS ia64_rwreloc_section_type_flags +#undef TARGET_ASM_RELOC_RW_MASK +#define TARGET_ASM_RELOC_RW_MASK ia64_hpux_reloc_rw_mask /* ia64 HPUX has the float and long double forms of math functions. */ #undef TARGET_C99_FUNCTIONS #define TARGET_C99_FUNCTIONS 1 +#undef TARGET_INIT_LIBFUNCS #define TARGET_INIT_LIBFUNCS ia64_hpux_init_libfuncs #define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) ((MODE) == TFmode) + +/* Put all *xf routines in libgcc, regardless of long double size. */ +#undef LIBGCC2_HAS_XF_MODE +#define LIBGCC2_HAS_XF_MODE 1 +#define XF_SIZE 64 + +/* Put all *tf routines in libgcc, regardless of long double size. */ +#undef LIBGCC2_HAS_TF_MODE +#define LIBGCC2_HAS_TF_MODE 1 +#define TF_SIZE 113 + +/* HP-UX headers are C++-compatible. */ +#define NO_IMPLICIT_EXTERN_C + +/* HP-UX uses PROFILE_HOOK instead of FUNCTION_PROFILER but we need a + FUNCTION_PROFILER defined because its use is not ifdefed. When using + PROFILE_HOOK, the profile call comes after the prologue. */ + +#undef FUNCTION_PROFILER +#define FUNCTION_PROFILER(FILE, LABELNO) do { } while (0) + +#undef PROFILE_HOOK +#define PROFILE_HOOK(LABEL) ia64_profile_hook (LABEL) + +#undef PROFILE_BEFORE_PROLOGUE + +#undef NO_PROFILE_COUNTERS +#define NO_PROFILE_COUNTERS 0 + +#undef HANDLE_PRAGMA_PACK_PUSH_POP +#define HANDLE_PRAGMA_PACK_PUSH_POP |