OSDN Git Service

* doc/tm.texi.in (HANDLE_SYSV_PRAGMA,
[pf3gnuchains/gcc-fork.git] / gcc / config / pa / pa-hpux.h
index 44c9236..69a9d19 100644 (file)
@@ -1,28 +1,29 @@
 /* Definitions of target machine for GNU compiler, for HP-UX.
-   Copyright (C) 1991, 1995 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1995, 1996, 2002, 2003, 2004, 2007, 2008, 2009, 2010
+   Free Software Foundation, Inc.
 
-This file is part of GNU CC.
+This file is part of GCC.
 
-GNU CC is free software; you can redistribute it and/or modify
+GCC is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
+the Free Software Foundation; either version 3, or (at your option)
 any later version.
 
-GNU CC is distributed in the hope that it will be useful,
+GCC is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
 
-#ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT 0
-#endif
+/* HP-UX UNIX features.  */
+#undef TARGET_HPUX
+#define TARGET_HPUX 1
 
-#include "pa/pa.h"
+#undef TARGET_DEFAULT
+#define TARGET_DEFAULT MASK_BIG_SWITCH
 
 /* Make GCC agree with types.h.  */
 #undef SIZE_TYPE
@@ -31,22 +32,86 @@ Boston, MA 02111-1307, USA.  */
 #define SIZE_TYPE "unsigned int"
 #define PTRDIFF_TYPE "int"
 
-/* HPUX doesn't use any debugging format that GCC knows about.  */
-#undef DBX_DEBUGGING_INFO
-#undef DEFAULT_GDB_EXTENSIONS
-#define DEFAULT_GDB_EXTENSIONS 0
+#define LONG_DOUBLE_TYPE_SIZE 128
+#define HPUX_LONG_DOUBLE_LIBRARY
+#define FLOAT_LIB_COMPARE_RETURNS_BOOL(MODE, COMPARISON) ((MODE) == TFmode)
+
+/* GCC always defines __STDC__.  HP C++ compilers don't define it.  This
+   causes trouble when sys/stdsyms.h is included.  As a work around,
+   we define __STDC_EXT__.  A similar situation exists with respect to
+   the definition of __cplusplus.  We define _INCLUDE_LONGLONG
+   to prevent nlist.h from defining __STDC_32_MODE__ (no longlong
+   support).  */
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()                               \
+  do                                                           \
+    {                                                          \
+       builtin_assert ("system=hpux");                         \
+       builtin_assert ("system=unix");                         \
+       builtin_define ("__hp9000s800");                        \
+       builtin_define ("__hp9000s800__");                      \
+       builtin_define ("__hp9k8");                             \
+       builtin_define ("__hp9k8__");                           \
+       builtin_define ("__hpux");                              \
+       builtin_define ("__hpux__");                            \
+       builtin_define ("__unix");                              \
+       builtin_define ("__unix__");                            \
+       builtin_define ("__STDC_EXT__");                        \
+       if (c_dialect_cxx ())                                   \
+         {                                                     \
+           builtin_define ("_HPUX_SOURCE");                    \
+           builtin_define ("_INCLUDE_LONGLONG");               \
+         }                                                     \
+       else if (!flag_iso)                                     \
+         {                                                     \
+           builtin_define ("_HPUX_SOURCE");                    \
+           if (preprocessing_trad_p ())                        \
+             {                                                 \
+               builtin_define ("hp9000s800");                  \
+               builtin_define ("hp9k8");                       \
+               builtin_define ("hppa");                        \
+               builtin_define ("hpux");                        \
+               builtin_define ("unix");                        \
+               builtin_define ("__CLASSIC_C__");               \
+               builtin_define ("_PWB");                        \
+               builtin_define ("PWB");                         \
+             }                                                 \
+         }                                                     \
+       if (TARGET_SIO)                                         \
+         builtin_define ("_SIO");                              \
+       else                                                    \
+         {                                                     \
+           builtin_define ("__hp9000s700");                    \
+           builtin_define ("__hp9000s700__");                  \
+           builtin_define ("_WSIO");                           \
+         }                                                     \
+    }                                                          \
+  while (0)
 
 /* Like the default, except no -lg.  */
 #undef LIB_SPEC
 #define LIB_SPEC "%{!shared:%{!p:%{!pg:-lc}}%{p: -L/lib/libp/ -lc}%{pg: -L/lib/libp/ -lc}}"
 
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-Dhppa -Dhp9000s800 -D__hp9000s800 -Dhp9k8 -DPWB -Dhpux -Dunix -D_HPUX_SOURCE -Asystem(unix) -Asystem(hpux) -Acpu(hppa) -Amachine(hppa)"
-
 #undef LINK_SPEC
+#if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_PA_11)
+#define LINK_SPEC \
+  "%{!mpa-risc-1-0:%{!march=1.0:%{static:-L/lib/pa1.1 -L/usr/lib/pa1.1 }}}%{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{g*:-a archive} %{shared:-b}"
+#else
 #define LINK_SPEC \
-  "%{!shared:-u main} %{static:-a archive} %{g*:-a archive} %{shared:-b}"
+  "%{mlinker-opt:-O} %{!shared:-u main} %{static:-a archive} %{g*:-a archive} %{shared:-b}"
+#endif
 
 /* hpux8 and later have C++ compatible include files, so do not
    pretend they are `extern "C"'.  */
 #define NO_IMPLICIT_EXTERN_C
+
+/* hpux11 and earlier don't have fputc_unlocked, so we must inhibit the
+   transformation of fputs_unlocked and fprintf_unlocked to fputc_unlocked.  */
+#define DONT_HAVE_FPUTC_UNLOCKED
+
+/* We want the entry value of SP saved in the frame marker for
+   compatibility with the HP-UX unwind library.  */
+#undef TARGET_HPUX_UNWIND_LIBRARY
+#define TARGET_HPUX_UNWIND_LIBRARY 1
+
+#define MD_UNWIND_SUPPORT "config/pa/hpux-unwind.h"