On 12/10/16 3:26 AM, Richard Earnshaw wrote:
On 08/12/16 22:55, Josh Conner wrote:
+       arm*-*-fuchsia*)
+         tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
+         tmake_file="${tmake_file} arm/t-bpabi"
+         ;;

This will leave the default cpu as arm7tdmi.  Is that what you want?
It's fine if it is, but if not, you should consider setting
target_cpu_cname here as well.

Mmm, probably not. Thanks for pointing that out.
I've attached an updated patch addressing all of the concerns so far.

OK for mainline?

Thanks -

Josh


2016-12-08  Joshua Conner<joshcon...@google.com>

        * config/arm/fuchsia-elf.h: New file.
        * config/fuchsia.h: New file.
        * config.gcc (*-*-fuchsia*): Set native_system_header_dir.
        (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to
        targets.
        * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts.

Index: config/arm/fuchsia-elf.h
===================================================================
--- config/arm/fuchsia-elf.h    (revision 0)
+++ config/arm/fuchsia-elf.h    (working copy)
@@ -0,0 +1,31 @@
+/* Configuration file for ARM Fuchsia ELF targets.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   Contributed by Google.
+
+   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 3, 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 COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Use the BPABI builtins and the generic OS builtins.  */
+#undef  TARGET_SUB_OS_CPP_BUILTINS
+#define TARGET_SUB_OS_CPP_BUILTINS()           \
+  TARGET_BPABI_CPP_BUILTINS()
+
+/* Use the AAPCS ABI by default.  */
+#undef ARM_DEFAULT_ABI
+#define ARM_DEFAULT_ABI ARM_ABI_AAPCS
+
+#define ARM_TARGET2_DWARF_FORMAT (DW_EH_PE_pcrel | DW_EH_PE_indirect)
+
Index: config/fuchsia.h
===================================================================
--- config/fuchsia.h    (revision 0)
+++ config/fuchsia.h    (working copy)
@@ -0,0 +1,68 @@
+/* Base configuration file for all Fuchsia targets.
+   Copyright (C) 2016 Free Software Foundation, Inc.
+   Contributed by Google.
+
+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 3, 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 COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* Common Fuchsia configuration.  */
+
+#undef  STARTFILE_SPEC
+#define STARTFILE_SPEC "%{!shared: crt1%O%s} crtbegin%O%s"
+
+#undef  ENDFILE_SPEC
+#define ENDFILE_SPEC "crtend%O%s"
+
+/* When neither pic nor pie has been specified, use PIE.  */
+#undef  CC1_SPEC
+#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \
+                   "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIE}}}}}}}}"
+
+#undef  LIB_SPEC
+#define LIB_SPEC "--start-group" \
+                " -lmxio -lmagenta -lc -llaunchpad" \
+                "%{!static: -lgcc_s}" \
+                " --end-group"
+
+#undef  LINK_SPEC
+#define LINK_SPEC "-z max-page-size=4096" \
+                 " -z combreloc" \
+                 " -z relro" \
+                 " -z now" \
+                 " -z text" \
+                 "%{!hash-style: --hash-style=gnu}" \
+                 "%{!no-eh-frame-hdr: --eh-frame-hdr}" \
+                 "%{!no-build-id: --build-id}" \
+                 "%{shared: -shared}" \
+                 "%{!shared:%{!static:%{!dynamic-linker: 
-dynamic-linker=ld.so.1}}}"
+
+/* We are using MUSL as our libc.  */
+#undef  OPTION_MUSL
+#define OPTION_MUSL 1
+
+#ifndef TARGET_SUB_OS_CPP_BUILTINS
+#define TARGET_SUB_OS_CPP_BUILTINS()
+#endif
+
+#undef  TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS()               \
+  do                                           \
+    {                                          \
+      builtin_define ("__fuchsia__");          \
+      TARGET_SUB_OS_CPP_BUILTINS();            \
+    }                                          \
+  while (false)
+
Index: config.gcc
===================================================================
--- config.gcc  (revision 243566)
+++ config.gcc  (working copy)
@@ -706,6 +706,9 @@
   esac
   use_gcc_stdint=wrap
   ;;
+*-*-fuchsia*)
+  native_system_header_dir=/include
+  ;;
 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | 
*-*-kopensolaris*-gnu)
   extra_options="$extra_options gnu-user.opt"
   gas=yes
@@ -908,7 +911,7 @@
 esac
 
 case ${target} in
-aarch64*-*-elf | aarch64*-*-rtems*)
+aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
        tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h"
        tmake_file="${tmake_file} aarch64/t-aarch64"
@@ -916,6 +919,9 @@
        aarch64-*-elf*)
                use_gcc_stdint=wrap
                ;;
+        aarch64-*-fuchsia*)
+                tm_file="${tm_file} fuchsia.h"
+                ;;
        aarch64-*-rtems*)
                tm_file="${tm_file} rtems.h aarch64/rtems.h"
                ;;
@@ -1119,7 +1125,7 @@
        tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix"
        target_cpu_cname="arm7tdmi"
        ;;
-arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*)
+arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
        case ${target} in
        arm*eb-*-eabi*)
          tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
@@ -1134,6 +1140,11 @@
          tmake_file="${tmake_file} arm/t-bpabi"
          use_gcc_stdint=wrap
          ;;
+       arm*-*-fuchsia*)
+         tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
+         tmake_file="${tmake_file} arm/t-bpabi"
+         target_cpu_cname="genericv7a"
+         ;;
        arm*-*-rtems*)
          tm_file="${tm_file} rtems.h arm/rtems.h newlib-stdint.h"
          tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems"
@@ -1777,6 +1788,10 @@
                        ;;
        esac
        ;;
+x86_64-*-fuchsia*)
+       tmake_file="${tmake_file} i386/t-x86_64-elf"
+       tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h 
i386/i386elf.h i386/x86-64.h fuchsia.h"
+       ;;
 ia64*-*-elf*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h 
ia64/elf.h"
        tmake_file="ia64/t-ia64"
Index: config.host
===================================================================
--- config.host (revision 243566)
+++ config.host (working copy)
@@ -99,7 +99,7 @@
 esac
 
 case ${host} in
-  aarch64*-*-freebsd* | aarch64*-*-linux*)
+  aarch64*-*-freebsd* | aarch64*-*-linux* | aarch64*-*-fuchsia*)
     case ${target} in
       aarch64*-*-*)
        host_extra_gcc_objs="driver-aarch64.o"
@@ -107,7 +107,7 @@
        ;;
     esac
     ;;
-  arm*-*-freebsd* | arm*-*-linux*)
+  arm*-*-freebsd* | arm*-*-linux* | arm*-*-fuchsia*)
     case ${target} in
       arm*-*-*)
        host_extra_gcc_objs="driver-arm.o"

Reply via email to