From 483f6332cd75c1fb1e0a873a963b9a3e95ac49fb Mon Sep 17 00:00:00 2001 From: Philip Blundell Date: Wed, 28 Jul 1999 08:52:05 +0000 Subject: [PATCH] Patch from Phillip Blundell to add arm/thumb uclinux support. From-SVN: r28312 --- gcc/ChangeLog | 19 ++++ gcc/config/arm/linux-telf.h | 207 ++++++++++++++++++++++++++++++++++++++++++ gcc/config/arm/linux-tgas.h | 84 +++++++++++++++++ gcc/config/arm/t-thumb-linux | 39 ++++++++ gcc/config/arm/telf.h | 10 ++ gcc/config/arm/thumb.h | 4 +- gcc/config/arm/uclinux-elf.h | 32 +++++++ gcc/config/arm/uclinux-telf.h | 40 ++++++++ gcc/configure | 18 ++++ gcc/configure.in | 18 ++++ 10 files changed, 469 insertions(+), 2 deletions(-) create mode 100644 gcc/config/arm/linux-telf.h create mode 100644 gcc/config/arm/linux-tgas.h create mode 100644 gcc/config/arm/t-thumb-linux create mode 100644 gcc/config/arm/uclinux-elf.h create mode 100644 gcc/config/arm/uclinux-telf.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 65a8941..8a1e081 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,22 @@ +1999-07-27 Philip Blundell + + * config/arm/telf.h: Include dbxelf.h. + (CPP_PREDEFINES): Only define if not already defined. + (ASM_IDENTIFY_GCC): Likewise. + (SUBTARGET_EXTRA_SECTIONS): Likewise. + (SUBTARGET_EXTRA_SECTION_FUNCTIONS): Likewise. + * config/arm/thumb.h (LINK_SPEC): Only define if not already + defined. + (DBX_DEBUGGING_INFO): Don't define. + * config/arm/linux-telf.h: New file. + * config/arm/linux-tgas.h: New file. + * config/arm/t-thumb-linux: New file. + * config/arm/uclinux-elf.h: New file. + * config/arm/uclinux-telf.h: New file. + * configure.in (arm-*-uclinux, thumb-*-linux-gnu, + thumb-*-uclinux): New targets. + * configure: Regenerate. + Tue Jul 27 23:20:21 1999 Jeffrey A Law (law@cygnus.com) * pa.md (post_store, pre_load): New expanders. diff --git a/gcc/config/arm/linux-telf.h b/gcc/config/arm/linux-telf.h new file mode 100644 index 0000000..b6aca0b --- /dev/null +++ b/gcc/config/arm/linux-telf.h @@ -0,0 +1,207 @@ +/* Definitions for Thumb running Linux-based GNU systems using ELF + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Philip Blundell + +This file is part of GNU CC. + +GNU CC 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 version. + +GNU CC 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 this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* We have libgcc2. */ +#define HAVE_ATEXIT + +#define SUBTARGET_EXTRA_ASM_SPEC \ + " %{fPIC:-k} %{fpic:-k}" + +/* This was defined in linux.h. Define it here also. */ +#undef DEFAULT_VTABLE_THUNKS +#define DEFAULT_VTABLE_THUNKS 1 + +/* Handle #pragma weak and #pragma pack. */ +#define HANDLE_SYSV_PRAGMA + +/* Now we define the strings used to build the spec file. */ +#define LIB_SPEC \ + "%{shared: -lc} \ + %{!shared: %{pthread:-lpthread} \ + %{profile:-lc_p} %{!profile: -lc}}" + +/* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add + the GNU/Linux magical crtbegin.o file (see crtstuff.c) which + provides part of the support for getting C++ file-scope static + object constructed before entering `main'. */ + +#define STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ + %{!p:%{profile:gcrt1.o%s} \ + %{!profile:crt1.o%s}}}} \ + crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" + +/* Provide a ENDFILE_SPEC appropriate for GNU/Linux. Here we tack on + the GNU/Linux magical crtend.o file (see crtstuff.c) which + provides part of the support for getting C++ file-scope static + object constructed before entering `main', followed by a normal + GNU/Linux "finalizer" file, `crtn.o'. */ + +#define ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" + +#define LINK_SPEC "%{h*} %{version:-v} \ + %{b} %{Wl,*:%*} \ + %{static:-Bstatic} \ + %{shared:-shared} \ + %{symbolic:-Bsymbolic} \ + %{rdynamic:-export-dynamic} \ + %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ + -X -mno-fpu -p \ + %{mbig-endian:-EB} \ + -m armelf_linux" + +#define CPP_PREDEFINES \ + "-Dunix -Dthumb -D__thumb -Dlinux \ +-Asystem(unix) -Asystem(posix) -Acpu(arm) \ +-Amachine(arm) -D__ELF__" + +/* Allow #sccs in preprocessor. */ +#define SCCS_DIRECTIVE + +#define USER_LABEL_PREFIX "" /* For ELF the default is no underscores */ +#define LOCAL_LABEL_PREFIX "." + +/* Attach a special .ident directive to the end of the file to identify + the version of GCC which compiled this code. */ +#define IDENT_ASM_OP ".ident" + +/* Output #ident as a .ident. */ +#define ASM_OUTPUT_IDENT(FILE, NAME) \ + fprintf (FILE, "\t%s\t\"%s\"\n", IDENT_ASM_OP, NAME); + +#ifdef IDENTIFY_WITH_IDENT +#define ASM_IDENTIFY_GCC(FILE) /* nothing */ +#define ASM_IDENTIFY_LANGUAGE(FILE) \ + fprintf (FILE, "\t%s \"GCC (%s) %s\"\n", IDENT_ASM_OP, \ + lang_identify (), version_string) +#else +#define ASM_FILE_END(FILE) \ + do \ + { \ + if (!flag_no_ident) \ + fprintf (FILE, "\t%s\t\"GCC: (GNU) %s\"\n", \ + IDENT_ASM_OP, version_string); \ + } \ + while (0) +#endif + +/* Support const sections and the ctors and dtors sections for g++. + Note that there appears to be two different ways to support const + sections at the moment. You can either #define the symbol + READONLY_DATA_SECTION (giving it some code which switches to the + readonly data section) or else you can #define the symbols + EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS, SELECT_SECTION, and + SELECT_RTX_SECTION. We do both here just to be on the safe side. */ +#define USE_CONST_SECTION 1 + +/* Support for Constructors and Destructors. */ +#define READONLY_DATA_SECTION() const_section () + +/* A default list of other sections which we might be "in" at any given + time. For targets that use additional sections (e.g. .tdesc) you + should override this definition in the target-specific file which + includes this file. */ +#define SUBTARGET_EXTRA_SECTIONS in_const, + +/* A default list of extra section function definitions. For targets + that use additional sections (e.g. .tdesc) you should override this + definition in the target-specific file which includes this file. */ +#define SUBTARGET_EXTRA_SECTION_FUNCTIONS CONST_SECTION_FUNCTION + +extern void text_section (); + +#define CONST_SECTION_ASM_OP ".section\t.rodata" + +#define CONST_SECTION_FUNCTION \ +void \ +const_section () \ +{ \ + if (!USE_CONST_SECTION) \ + text_section (); \ + else if (in_section != in_const) \ + { \ + fprintf (asm_out_file, "%s\n", CONST_SECTION_ASM_OP); \ + in_section = in_const; \ + } \ +} + +/* A C statement or statements to switch to the appropriate + section for output of DECL. DECL is either a `VAR_DECL' node + or a constant of some sort. RELOC indicates whether forming + the initial value of DECL requires link-time relocations. */ +#define SELECT_SECTION(DECL, RELOC) \ +{ \ + if (TREE_CODE (DECL) == STRING_CST) \ + { \ + if (! flag_writable_strings) \ + const_section (); \ + else \ + data_section (); \ + } \ + else if (TREE_CODE (DECL) == VAR_DECL) \ + { \ + if ((flag_pic && RELOC) \ + || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL) \ + || !DECL_INITIAL (DECL) \ + || (DECL_INITIAL (DECL) != error_mark_node \ + && !TREE_CONSTANT (DECL_INITIAL (DECL)))) \ + data_section (); \ + else \ + const_section (); \ + } \ + else \ + const_section (); \ +} + +/* A C statement or statements to switch to the appropriate + section for output of RTX in mode MODE. RTX is some kind + of constant in RTL. The argument MODE is redundant except + in the case of a `const_int' rtx. Currently, these always + go into the const section. */ +#define SELECT_RTX_SECTION(MODE, RTX) const_section () + +/* On svr4, we *do* have support for the .init and .fini sections, and we + can put stuff in there to be executed before and after `main'. We let + crtstuff.c and other files know this by defining the following symbols. + The definitions say how to change sections to the .init and .fini + sections. This is the same for all known svr4 assemblers. */ +#define INIT_SECTION_ASM_OP ".section\t.init" +#define FINI_SECTION_ASM_OP ".section\t.fini" + + +/* This is how we tell the assembler that a symbol is weak. */ +#define ASM_WEAKEN_LABEL(FILE, NAME) \ + do \ + { \ + fputs ("\t.weak\t", FILE); \ + assemble_name (FILE, NAME); \ + fputc ('\n', FILE); \ + } \ + while (0) + +#include "arm/telf.h" +#include "arm/linux-tgas.h" + +/* Run-time Target Specification. */ +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (Thumb GNU/Linux)", stderr); diff --git a/gcc/config/arm/linux-tgas.h b/gcc/config/arm/linux-tgas.h new file mode 100644 index 0000000..5ca370a --- /dev/null +++ b/gcc/config/arm/linux-tgas.h @@ -0,0 +1,84 @@ +/* Definitions of target machine for GNU compiler. + Thumb Linux-based GNU systems version. + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Russell King . + +This file is part of GNU CC. + +GNU CC 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 version. + +GNU CC 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 this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* We are using GAS, so stabs should work. */ +#ifndef DBX_DEBUGGING_INFO +#define DBX_DEBUGGING_INFO 1 +#endif + +/* This is how we tell the assembler that a symbol is weak. + GAS always supports weak symbols. */ +#define ASM_WEAKEN_LABEL(FILE, NAME) \ + do \ + { \ + fputs ("\t.weak\t", FILE); \ + assemble_name (FILE, NAME); \ + fputc ('\n', FILE); \ + } \ + while (0) + +/* This is used in ASM_FILE_START */ +#undef ARM_OS_NAME +#define ARM_OS_NAME "Linux" + +/* Unsigned chars produces much better code than signed. */ +#define DEFAULT_SIGNED_CHAR 0 + +#undef SUBTARGET_CPP_SPEC +#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__}" + +#undef SIZE_TYPE +#define SIZE_TYPE "unsigned int" + +#undef PTRDIFF_TYPE +#define PTRDIFF_TYPE "int" + +#undef WCHAR_TYPE +#define WCHAR_TYPE "long int" + +#undef WCHAR_TYPE_SIZE +#define WCHAR_TYPE_SIZE BITS_PER_WORD + +/* Emit code to set up a trampoline and synchronise the caches. */ +#undef INITIALIZE_TRAMPOLINE +#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ +{ \ + emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 8)), \ + CXT); \ + emit_move_insn (gen_rtx (MEM, SImode, plus_constant (TRAMP, 12)), \ + FNADDR); \ + emit_library_call (gen_rtx_SYMBOL_REF (Pmode, "__clear_cache"), \ + 0, VOIDmode, 2, TRAMP, Pmode, \ + plus_constant (TRAMP, TRAMPOLINE_SIZE), Pmode); \ +} + +#if 0 +/* Clear the instruction cache from `beg' to `end'. This makes an + inline system call to SYS_cacheflush. */ +#define CLEAR_INSN_CACHE(BEG, END) \ +{ \ + register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ + register unsigned long _end __asm ("a2") = (unsigned long) (END); \ + register unsigned long _flg __asm ("a3") = 0; \ + __asm __volatile ("swi 0x9f0002"); \ +} +#endif diff --git a/gcc/config/arm/t-thumb-linux b/gcc/config/arm/t-thumb-linux new file mode 100644 index 0000000..3cde74c --- /dev/null +++ b/gcc/config/arm/t-thumb-linux @@ -0,0 +1,39 @@ +# Just for these, we omit the frame pointer since it makes such a big +# difference. It is then pointless adding debugging. +TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC +LIBGCC2_DEBUG_CFLAGS = -g0 + +# Don't build enquire +ENQUIRE= + +# Since libgcc1 is an assembler file, we can build it automatically for the +# cross-compiler. +CROSS_LIBGCC1 = libgcc1-asm.a +LIBGCC1 = libgcc1-asm.a +LIB1ASMSRC = arm/lib1thumb.asm +LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls _call_via_rX _interwork_call_via_rX + +MULTILIB_OPTIONS = mlittle-endian/mbig-endian +MULTILIB_DIRNAMES = le be +MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle +EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o + +LIBGCC = stmp-multilib +INSTALL_LIBGCC = install-multilib + +LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c + +fp-bit.c: $(srcdir)/config/fp-bit.c + echo '#define FLOAT' > fp-bit.c + echo '#ifndef __ARMEB__' >> fp-bit.c + echo '#define FLOAT_BIT_ORDER_MISMATCH' >> fp-bit.c + echo '#endif' >> fp-bit.c + cat $(srcdir)/config/fp-bit.c >> fp-bit.c + +dp-bit.c: $(srcdir)/config/fp-bit.c + echo '#ifndef __ARMEB__' > dp-bit.c + echo '#define FLOAT_BIT_ORDER_MISMATCH' >> dp-bit.c + echo '#define FLOAT_WORD_ORDER_MISMATCH' >> dp-bit.c + echo '#endif' >> dp-bit.c + cat $(srcdir)/config/fp-bit.c >> dp-bit.c + diff --git a/gcc/config/arm/telf.h b/gcc/config/arm/telf.h index a7740ca..1ccf6b2 100644 --- a/gcc/config/arm/telf.h +++ b/gcc/config/arm/telf.h @@ -21,7 +21,9 @@ Boston, MA 02111-1307, USA. */ #define OBJECT_FORMAT_ELF +#ifndef CPP_PREDEFINES #define CPP_PREDEFINES "-Dthumb -Dthumbelf -D__thumb -Acpu(arm) -Amachine(arm)" +#endif #include "arm/thumb.h" @@ -45,6 +47,8 @@ extern int arm_structure_size_boundary; #define DWARF2_DEBUGGING_INFO #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG +/* Get the standard ELF stabs definitions. */ +#include "dbxelf.h" /* Note - it is important that these definitions match those in semi.h for the ARM port. */ #undef LOCAL_LABEL_PREFIX @@ -54,8 +58,10 @@ extern int arm_structure_size_boundary; /* A C statement to output assembler commands which will identify the object file as having been compiled with GNU CC (or another GNU compiler). */ +#ifndef ASM_IDENTIFY_GCC #define ASM_IDENTIFY_GCC(STREAM) \ fprintf (STREAM, "%sgcc2_compiled.:\n", LOCAL_LABEL_PREFIX ) +#endif #undef ASM_FILE_START #define ASM_FILE_START(STREAM) \ @@ -189,7 +195,9 @@ extern int arm_structure_size_boundary; #undef EXTRA_SECTIONS #define EXTRA_SECTIONS SUBTARGET_EXTRA_SECTIONS in_rdata, in_ctors, in_dtors +#ifndef SUBTARGET_EXTRA_SECTIONS #define SUBTARGET_EXTRA_SECTIONS +#endif /* A list of extra section function definitions. */ @@ -200,7 +208,9 @@ extern int arm_structure_size_boundary; DTORS_SECTION_FUNCTION \ SUBTARGET_EXTRA_SECTION_FUNCTIONS +#ifndef SUBTARGET_EXTRA_SECTION_FUNCTIONS #define SUBTARGET_EXTRA_SECTION_FUNCTIONS +#endif #define RDATA_SECTION_FUNCTION \ void \ diff --git a/gcc/config/arm/thumb.h b/gcc/config/arm/thumb.h index 434bd5e..65d6d4b 100644 --- a/gcc/config/arm/thumb.h +++ b/gcc/config/arm/thumb.h @@ -50,7 +50,9 @@ Boston, MA 02111-1307, USA. */ #endif #define ASM_SPEC "-marm7tdmi %{mthumb-interwork:-mthumb-interwork} %{mbig-endian:-EB}" +#ifndef LINK_SPEC #define LINK_SPEC "%{mbig-endian:-EB} -X" +#endif #define TARGET_VERSION fputs (" (ARM/THUMB:generic)", stderr); @@ -1238,8 +1240,6 @@ extern int making_const_table; /* Specific options for DBX Output */ -#define DBX_DEBUGGING_INFO 1 - #define DEFAULT_GDB_EXTENSIONS 1 diff --git a/gcc/config/arm/uclinux-elf.h b/gcc/config/arm/uclinux-elf.h new file mode 100644 index 0000000..ffa94ed --- /dev/null +++ b/gcc/config/arm/uclinux-elf.h @@ -0,0 +1,32 @@ +/* Definitions for ARM running ucLinux using ELF + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Philip Blundell + +This file is part of GNU CC. + +GNU CC 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 version. + +GNU CC 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 this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#include "arm/linux-elf.h" + +/* We don't want a PLT. */ +#undef NEED_PLT_RELOC +#define NEED_PLT_RELOC 0 + +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (ARM/ELF ucLinux)", stderr); + +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_SHORT_BYTE | ARM_FLAG_SINGLE_PIC_BASE) diff --git a/gcc/config/arm/uclinux-telf.h b/gcc/config/arm/uclinux-telf.h new file mode 100644 index 0000000..de2afdc --- /dev/null +++ b/gcc/config/arm/uclinux-telf.h @@ -0,0 +1,40 @@ +/* Definitions for Thumb running ucLinux using ELF + Copyright (C) 1999 Free Software Foundation, Inc. + Contributed by Philip Blundell + +This file is part of GNU CC. + +GNU CC 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 version. + +GNU CC 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 this program; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#include "arm/linux-telf.h" + +#undef TARGET_VERSION +#define TARGET_VERSION fputs (" (Thumb/ELF ucLinux)", stderr); + +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (THUMB_FLAG_SINGLE_PIC_BASE) + +/* We don't want a PLT. */ +#undef NEED_PLT_RELOC +#define NEED_PLT_RELOC 0 + +/* On svr4, we *do* have support for the .init and .fini sections, and we + can put stuff in there to be executed before and after `main'. We let + crtstuff.c and other files know this by defining the following symbols. + The definitions say how to change sections to the .init and .fini + sections. This is the same for all known svr4 assemblers. */ +#define INIT_SECTION_ASM_OP ".section\t.init" +#define FINI_SECTION_ASM_OP ".section\t.fini" diff --git a/gcc/configure b/gcc/configure index 3d6c463..7912989 100755 --- a/gcc/configure +++ b/gcc/configure @@ -3203,6 +3203,10 @@ for machine in $build $host $target; do ;; esac ;; + arm*-*-uclinux*) # ARM ucLinux + tm_file=arm/uclinux-elf.h + tmake_file=arm/t-arm-elf + ;; arm*-*-aout) tm_file=arm/aout.h tmake_file=arm/t-bare @@ -5601,6 +5605,20 @@ for machine in $build $host $target; do md_file=arm/thumb.md tmake_file=arm/t-thumb-elf ;; + thumb-*-linux-gnu*) + tm_file=arm/linux-telf.h + out_file=arm/thumb.c + xm_file=arm/xm-thumb.h + md_file=arm/thumb.md + tmake_file=arm/t-thumb-linux + ;; + thumb-*-uclinux*) + tm_file=arm/uclinux-telf.h + out_file=arm/thumb.c + md_file=arm/thumb.md + tmake_file=arm/t-thumb-linux + xm_file=arm/xm-thumb.h + ;; thumb-wrs-vxworks) tm_file=arm/tcoff.h out_file=arm/thumb.c diff --git a/gcc/configure.in b/gcc/configure.in index 72f5581..10166e2 100644 --- a/gcc/configure.in +++ b/gcc/configure.in @@ -776,6 +776,10 @@ changequote([,])dnl ;; esac ;; + arm*-*-uclinux*) # ARM ucLinux + tm_file=arm/uclinux-elf.h + tmake_file=arm/t-arm-elf + ;; arm*-*-aout) tm_file=arm/aout.h tmake_file=arm/t-bare @@ -3300,6 +3304,20 @@ changequote([,])dnl md_file=arm/thumb.md tmake_file=arm/t-thumb-elf ;; + thumb-*-linux-gnu*) + tm_file=arm/linux-telf.h + out_file=arm/thumb.c + xm_file=arm/xm-thumb.h + md_file=arm/thumb.md + tmake_file=arm/t-thumb-linux + ;; + thumb-*-uclinux*) + tm_file=arm/uclinux-telf.h + out_file=arm/thumb.c + md_file=arm/thumb.md + tmake_file=arm/t-thumb-linux + xm_file=arm/xm-thumb.h + ;; thumb-wrs-vxworks) tm_file=arm/tcoff.h out_file=arm/thumb.c -- 2.7.4