]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/config/xtensa/elf.h
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / config / xtensa / elf.h
index 50cf154ded0c1998ac0080e1f67a57363bc46857..f0d18059539c4cadc082929aad0e688396d39f77 100644 (file)
@@ -1,12 +1,12 @@
 /* Xtensa/Elf configuration.
    Derived from the configuration for GCC for Intel i386 running Linux.
-   Copyright (C) 2001 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
 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) any later
+Software Foundation; either version 3, or (at your option) any later
 version.
 
 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
@@ -15,11 +15,12 @@ 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 GCC; 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/>.  */
 
-/* Don't assume anything about the header files. */
+#define TARGET_SECTION_TYPE_FLAGS xtensa_multibss_section_type_flags
+
+/* Don't assume anything about the header files.  */
 #define NO_IMPLICIT_EXTERN_C
 
 #undef ASM_APP_ON
@@ -34,34 +35,28 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #undef TARGET_VERSION
 #define TARGET_VERSION fputs (" (Xtensa/ELF)", stderr);
 
-#undef SIZE_TYPE
-#define SIZE_TYPE "unsigned int"
-
-#undef PTRDIFF_TYPE
-#define PTRDIFF_TYPE "int"
-
 #undef WCHAR_TYPE
-#define WCHAR_TYPE "int"
+#define WCHAR_TYPE "short unsigned int"
 
 #undef WCHAR_TYPE_SIZE
-#define WCHAR_TYPE_SIZE BITS_PER_WORD
+#define WCHAR_TYPE_SIZE 16
 
 #undef ASM_SPEC
-#define ASM_SPEC "%{v} %{mno-density:--no-density} \
-                  %{mtext-section-literals:--text-section-literals} \
-                  %{mno-text-section-literals:--no-text-section-literals} \
-                 %{mtarget-align:--target-align} \
-                 %{mno-target-align:--no-target-align} \
-                 %{mlongcalls:--longcalls} \
-                 %{mno-longcalls:--no-longcalls}"
-
-#undef ASM_FINAL_SPEC
+#define ASM_SPEC \
+ "%{v} \
+  %{mtext-section-literals:--text-section-literals} \
+  %{mno-text-section-literals:--no-text-section-literals} \
+  %{mtarget-align:--target-align} \
+  %{mno-target-align:--no-target-align} \
+  %{mlongcalls:--longcalls} \
+  %{mno-longcalls:--no-longcalls}"
 
 #undef LIB_SPEC
 #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal"
 
 #undef STARTFILE_SPEC
-#define STARTFILE_SPEC "crt1-sim%O%s crti%O%s crtbegin%O%s _vectors%O%s"
+#define STARTFILE_SPEC \
+  "crt1-sim%O%s crt0%O%s crti%O%s crtbegin%O%s _vectors%O%s"
 
 #undef ENDFILE_SPEC
 #define ENDFILE_SPEC "crtend%O%s crtn%O%s"  
@@ -74,65 +69,34 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
       %{rdynamic:-export-dynamic} \
     %{static:-static}}}"
 
-#undef CPP_PREDEFINES
-#define CPP_PREDEFINES "-D__XTENSA__ -D__ELF__ -Acpu=xtensa -Amachine=xtensa"
-
-/* Local compiler-generated symbols must have a prefix that the assembler
-   understands.   By default, this is $, although some targets (e.g.,
-   NetBSD-ELF) need to override this. */
-
-#ifndef LOCAL_LABEL_PREFIX
+#undef LOCAL_LABEL_PREFIX
 #define LOCAL_LABEL_PREFIX     "."
-#endif
 
-/* By default, external symbols do not have an underscore prepended. */
-
-#ifndef USER_LABEL_PREFIX
-#define USER_LABEL_PREFIX      ""
-#endif
-
-/* Define this macro if the assembler does not accept the character
-   "." in label names.  By default constructors and destructors in G++
-   have names that use ".".  If this macro is defined, these names
-   are rewritten to avoid ".". */
-#define NO_DOT_IN_LABEL
-
-/* Define NO_DOLLAR_IN_LABEL in your favorite tm file if your assembler
-   doesn't allow $ in symbol names.  */
+/* Avoid dots for compatibility with VxWorks.  */
 #undef NO_DOLLAR_IN_LABEL
+#define NO_DOT_IN_LABEL
 
-/* Don't switch sections in the middle of a literal pool! */
-#undef SELECT_RTX_SECTION
-#define SELECT_RTX_SECTION(MODE,RTX,ALIGN)
-  
 /* Do not force "-fpic" for this target.  */
 #define XTENSA_ALWAYS_PIC 0
 
-/* Redefine the standard ELF version of ASM_DECLARE_FUNCTION_SIZE to
-   allow adding the ".end literal_prefix" directive at the end of the
-   function.  */
-#undef ASM_DECLARE_FUNCTION_SIZE
-#define ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)           \
-  do                                                           \
-    {                                                          \
-      if (!flag_inhibit_size_directive)                                \
-       {                                                       \
-         char label[256];                                      \
-         static int labelno;                                   \
-                                                               \
-         labelno++;                                            \
-                                                               \
-         ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno);  \
-         ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno);     \
-                                                               \
-         fprintf (FILE, "%s", SIZE_ASM_OP);                    \
-         assemble_name (FILE, (FNAME));                        \
-         fprintf (FILE, ",");                                  \
-         assemble_name (FILE, label);                          \
-         fprintf (FILE, "-");                                  \
-         assemble_name (FILE, (FNAME));                        \
-         putc ('\n', FILE);                                    \
-       }                                                       \
-      XTENSA_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL);         \
-    }                                                          \
-  while (0)
+/* Search for headers in $tooldir/arch/include and for libraries and
+   startfiles in $tooldir/arch/lib.  */
+#define GCC_DRIVER_HOST_INITIALIZATION \
+do \
+{ \
+  char *tooldir, *archdir; \
+  tooldir = concat (tooldir_base_prefix, spec_machine, \
+                   dir_separator_str, NULL); \
+  if (!IS_ABSOLUTE_PATH (tooldir)) \
+    tooldir = concat (standard_exec_prefix, spec_machine, dir_separator_str, \
+                     spec_version, dir_separator_str, tooldir, NULL); \
+  archdir = concat (tooldir, "arch", dir_separator_str, NULL); \
+  add_prefix (&startfile_prefixes, \
+             concat (archdir, "lib", dir_separator_str, NULL), \
+             "GCC", PREFIX_PRIORITY_LAST, 0, 1); \
+  add_prefix (&include_prefixes, archdir, \
+             "GCC", PREFIX_PRIORITY_LAST, 0, 0); \
+  } \
+while (0)
+
+#define HANDLE_PRAGMA_PACK_PUSH_POP 1