]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/config/pa/pa32-linux.h
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / config / pa / pa32-linux.h
index 81f64529a3a18db59162ee79ecd1cddb93495bc9..28f52075a1fc2c9c5ac94714b1c91ec96c635b8a 100644 (file)
@@ -1,26 +1,60 @@
 /* Definitions for PA_RISC with ELF-32 format
-   Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2004, 2006, 2007 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/>.  */
 
 /* Turn off various SOM crap we don't want.  */
 #undef TARGET_ELF32
 #define TARGET_ELF32 1
 
-#undef CPP_SPEC
-#define CPP_SPEC "%{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{mhppa:-D__hppa__} %{posix:-D_POSIX_SOURCE} -D_PA_RISC1_1"
+/* The libcall __canonicalize_funcptr_for_compare is referenced in
+   crtend.o and the reference isn't resolved in objects that don't
+   compare function pointers.  Thus, we need to play games to provide
+   a reference in crtbegin.o.  The rest of the define is the same
+   as that in crtstuff.c  */
+#define CTOR_LIST_BEGIN \
+  asm (".type __canonicalize_funcptr_for_compare,@function\n"          \
+"      .text\n"                                                        \
+"      .word __canonicalize_funcptr_for_compare-$PIC_pcrel$0");        \
+  STATIC func_ptr __CTOR_LIST__[1]                                     \
+    __attribute__ ((__unused__, section(".ctors"),                     \
+                   aligned(sizeof(func_ptr))))                         \
+    = { (func_ptr) (-1) }
+
+/* This is a PIC version of CRT_CALL_STATIC_FUNCTION.  The PIC
+   register has to be saved before the call and restored after
+   the call.  We assume that register %r4 is available for this
+   purpose.  The hack prevents GCC from deleting the restore.  */
+#ifdef CRTSTUFFS_O
+#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC)     \
+static void __attribute__((__used__))                  \
+call_ ## FUNC (void)                                   \
+{                                                      \
+  asm (SECTION_OP);                                    \
+  asm volatile ("bl " #FUNC ",%%r2\n\t"                        \
+               "copy %%r19,%%r4\n\t"                   \
+               "copy %%r4,%%r19\n"                     \
+               :                                       \
+               :                                       \
+               : "r1", "r2", "r4", "r20", "r21",       \
+                 "r22", "r23", "r24", "r25", "r26",    \
+                 "r27", "r28", "r29", "r31");          \
+  asm (TEXT_SECTION_ASM_OP);                           \
+}
+#endif
+
+#define MD_UNWIND_SUPPORT "config/pa/linux-unwind.h"