config.gcc (arm*-*-symbianelf*): New target.
authorMark Mitchell <mark@codesourcery.com>
Tue, 3 Aug 2004 17:38:09 +0000 (17:38 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 3 Aug 2004 17:38:09 +0000 (17:38 +0000)
* config.gcc (arm*-*-symbianelf*): New target.
* config/arm/symbian.h: New file.

From-SVN: r85490

gcc/ChangeLog
gcc/config.gcc
gcc/config/arm/symbian.h [new file with mode: 0644]

index c9bdbca3273c9aa66f966bd232e416fc566ee7a0..61a30ba405c8aba65ccf0cbaf81f55c18b61de19 100644 (file)
@@ -1,5 +1,8 @@
 2004-08-03  Mark Mitchell  <mark@codesourcery.com>
 
+       * config.gcc (arm*-*-symbianelf*): New target.
+       * config/arm/symbian.h: New file.
+
        * gthr-gnat.c: Add visibility #pragmas.
        * gthr-gnat.h : Likewise.
        * gthr.h: Likewise.
index 6df545cba1e70c561d0c4786cecef004510909fb..472f71327dae10c9ead698f1dc50ea24e75ccbdd 100644 (file)
@@ -652,6 +652,10 @@ arm*-*-ecos-elf)
        tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/ecos-elf.h"
        tmake_file="arm/t-arm arm/t-arm-elf"
        ;;
+arm*-*-symbianelf*)
+       tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/symbian.h arm/aout.h arm/arm.h"
+       tmake_file="t-slibgcc-elf-ver arm/t-arm arm/t-arm-elf"
+       ;;
 arm*-*-rtems*)
        tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/rtems-elf.h rtems.h"
        tmake_file="arm/t-arm arm/t-arm-elf t-rtems"
diff --git a/gcc/config/arm/symbian.h b/gcc/config/arm/symbian.h
new file mode 100644 (file)
index 0000000..05930d4
--- /dev/null
@@ -0,0 +1,50 @@
+/* Configuration file for Symbian OS on ARM processors.
+   Copyright (C) 2004
+   Free Software Foundation, Inc.
+   Contributed by CodeSourcery, LLC   
+
+   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 version.
+
+   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 GCC; see the file COPYING.  If not, write to
+   the Free Software Foundation, 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* Use the SYMBIAN ABI by default.  */
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
+
+/* Do not expand builtin functions (unless explicitly prefixed with
+   "__builtin").  Symbian OS code relies on properties of the standard
+   library that go beyond those guaranteed by the ANSI/ISO standard.
+   For example, "memcpy" works even with overlapping memory, like
+   "memmove".  We cannot simply set flag_no_builtin in arm.c because
+   (a) flag_no_builtin is not declared in language-independent code,
+   and (b) that would prevent users from explicitly overriding the
+   default with -fno-builtin, which may sometimes be useful.
+
+   Make all symbols hidden by default.  Symbian OS expects that all
+   exported symbols will be explicitly marked with
+   "__declspec(dllexport)".  */
+#define CC1_SPEC "-fno-builtin -fvisibility=hidden"
+#define CC1PLUS_SPEC "-fno-builtin -fvisibility=hidden"
+
+/* Symbian OS does not use crt0.o, unlike the generic unknown-elf
+   configuration.  */
+#undef STARTFILE_SPEC
+#define STARTFILE_SPEC "crti%O%s crtbegin%O%s"
+
+/* The generic link spec in elf.h does not support shared libraries.  */
+#undef LINK_SPEC
+#define LINK_SPEC "%{mbig-endian:-EB} %{mlittle-endian:-EL} "          \
+  "%{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} "       \
+  "-X"