/* 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 Free Software Foundation, Inc.
This file is part of GCC.
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. */
+Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301, USA. */
-/* 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
#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"
+#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"
%{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)
+