Re: [PATCH][libgcc, fuchsia]

2017-04-12 Thread Josh Conner via gcc-patches

Ping^3?

I think this should be very straightforward - it just adds fuchsia 
target support to libgcc. Please do let me know if there are any concerns...


Thanks!

- Josh


2017-04-12  Joshua Conner  <joshcon...@google.com>

* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
pc-relative indirect handling for fuchsia.
* config/t-slibgcc-fuchsia: New file.
* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
x86_64-*-fuchsia*): Add definitions.


On 2/21/17 9:41 AM, Josh Conner wrote:

Ping^2?


On 2/2/17 11:22 AM, Josh Conner wrote:

Ping?


On 1/17/17 10:40 AM, Josh Conner wrote:

The attached patch adds fuchsia support to libgcc.

OK for trunk?

Thanks -

Josh

2017-01-17  Joshua Conner  <joshcon...@google.com>

* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
pc-relative indirect handling for fuchsia.
* config/t-slibgcc-fuchsia: New file.
* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
x86_64-*-fuchsia*): Add definitions.







Index: config/arm/unwind-arm.h
===
--- config/arm/unwind-arm.h (revision 246880)
+++ config/arm/unwind-arm.h (working copy)
@@ -49,7 +49,7 @@
return 0;
 
 #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \
-|| defined(__FreeBSD__)
+|| defined(__FreeBSD__) || defined(__fuchsia__)
   /* Pc-relative indirect.  */
 #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect)
   tmp += ptr;
Index: config/t-slibgcc-fuchsia
===
--- config/t-slibgcc-fuchsia(revision 0)
+++ config/t-slibgcc-fuchsia(working copy)
@@ -0,0 +1,22 @@
+# Copyright (C) 2017 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 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/>.
+
+# Fuchsia-specific shared library overrides.
+
+SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \
+$(LDFLAGS)
Index: config.host
===
--- config.host (revision 246880)
+++ config.host (working copy)
@@ -231,6 +231,10 @@
   ;;
   esac
   ;;
+*-*-fuchsia*)
+  tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc 
t-slibgcc-fuchsia"
+  extra_parts="crtbegin.o crtend.o"
+  ;;
 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | 
*-*-kopensolaris*-gnu)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc 
t-slibgcc-gld t-slibgcc-elf-ver t-linux"
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
@@ -342,6 +346,10 @@
tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
md_unwind_header=aarch64/freebsd-unwind.h
;;
+aarch64*-*-fuchsia*)
+   tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+   tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp"
+   ;;
 aarch64*-*-linux*)
extra_parts="$extra_parts crtfastmath.o"
md_unwind_header=aarch64/linux-unwind.h
@@ -394,6 +402,12 @@
unwind_header=config/arm/unwind-arm.h
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp 
t-softfp"
;;
+arm*-*-fuchsia*)
+   tmake_file="${tmake_file} arm/t-arm arm/t-elf arm/t-bpabi"
+   tmake_file="${tmake_file} arm/tsoftfp t-softfp"
+   tm_file="${tm_file} arm/bpabi-lib.h"
+   unwind_header=config/arm/unwind-arm.h
+   ;;
 arm*-*-netbsdelf*)
tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
;;
@@ -588,6 +602,9 @@
 x86_64-*-elf* | x86_64-*-rtems*)
tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic"
;;
+x86_64-*-fuchsia*)
+   tmake_file="$tmake_file t-libgcc-pic"
+   ;;
 i[34567]86-*-dragonfly*)
tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff"
md_unwind_header=i386/dragonfly-unwind.h


Re: [PATCH][libgcc, fuchsia]

2017-02-21 Thread Josh Conner via gcc-patches

Ping^2?


On 2/2/17 11:22 AM, Josh Conner wrote:

Ping?


On 1/17/17 10:40 AM, Josh Conner wrote:

The attached patch adds fuchsia support to libgcc.

OK for trunk?

Thanks -

Josh

2017-01-17  Joshua Conner  <joshcon...@google.com>

* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
pc-relative indirect handling for fuchsia.
* config/t-slibgcc-fuchsia: New file.
* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
x86_64-*-fuchsia*): Add definitions.







Re: [PATCH][libgcc, fuchsia]

2017-02-02 Thread Josh Conner via gcc-patches

Ping?


On 1/17/17 10:40 AM, Josh Conner wrote:

The attached patch adds fuchsia support to libgcc.

OK for trunk?

Thanks -

Josh

2017-01-17  Joshua Conner  <joshcon...@google.com>

* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
pc-relative indirect handling for fuchsia.
* config/t-slibgcc-fuchsia: New file.
* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
x86_64-*-fuchsia*): Add definitions.





Re: [PATCH] Add support for Fuchsia (OS)

2017-02-02 Thread Josh Conner via gcc-patches

On 2/1/17 3:29 PM, Gerald Pfeifer wrote:


On Tue, 17 Jan 2017, Josh Conner via gcc-patches wrote:

Attached is my recommended patch for changes to the web docs describing
Fuchsia support. Please let me know if there's anything else I can do.

This looks fine (just remove the blank before "Fuchsia"); and
sorry for the delay getting back to this!


Done. Thanks!

- Josh



Re: [PATCH][libstdc++-v3, fuchsia] Add support for fuchsia targets to libstdc++

2017-01-17 Thread Josh Conner via gcc-patches

On 1/17/17 3:27 PM, Jonathan Wakely wrote:

On 17/01/17 14:55 -0800, Josh Conner via libstdc++ wrote:

On 1/17/17 2:35 PM, Jonathan Wakely wrote:

On 17/01/17 13:15 -0800, Josh Conner via libstdc++ wrote:

This patch adds fuchsia support to libstdc++. OK for trunk?


Is fuchsia only supported as a cross-compiler target, not native?
For the moment. I have a patch that adds fuchsia support to 
libtool.m4 
(http://lists.gnu.org/archive/html/libtool-patches/2016-12/msg0.html), 
but I haven't gotten a response yet.


OK, thanks. I don't think your change can cause problems for any
existing targets, so it's OK for trunk even though we're right at the
end of stage 3.

Applied, thanks!



Re: [PATCH][libstdc++-v3, fuchsia] Add support for fuchsia targets to libstdc++

2017-01-17 Thread Josh Conner via gcc-patches

On 1/17/17 2:35 PM, Jonathan Wakely wrote:

On 17/01/17 13:15 -0800, Josh Conner via libstdc++ wrote:

This patch adds fuchsia support to libstdc++. OK for trunk?


Is fuchsia only supported as a cross-compiler target, not native?
For the moment. I have a patch that adds fuchsia support to libtool.m4 
(http://lists.gnu.org/archive/html/libtool-patches/2016-12/msg0.html), 
but I haven't gotten a response yet.


- Josh



Re: [PATCH] Add support for Fuchsia (OS)

2017-01-17 Thread Josh Conner via gcc-patches

Gerald -

Attached is my recommended patch for changes to the web docs describing Fuchsia 
support. Please let
me know if there's anything else I can do.

Thanks!

- Josh

On 12/11/16 7:24 AM, Gerald Pfeifer wrote:


On Thu, 8 Dec 2016, Josh Conner wrote:

This patch adds support to gcc for the Fuchsia OS
(https://fuchsia.googlesource.com/).

Once this is in, can you please suggest a news item for our
main page?
(You could cook a patch following https://gcc.gnu.org/about.html
or suggest wording or an HTML snippet, and I'll take it from there.)
Similarly, would be good to add this to gcc-7/changes.html.
Gerald



Index: index.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/index.html,v
retrieving revision 1.1037
diff -r1.1037 index.html
48a49,53
> Fuchsia OS support
>  [2017-10-01]
>  https://fuchsia.googlesource.com/;> Fuchsia OS
>  support was added to GCC, contributed by Google.
> 
Index: gcc-7/changes.html
===
RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-7/changes.html,v
retrieving revision 1.39
diff -r1.39 changes.html
533a534,539
> Fuchsia
>
>  Support has been added for the
>  https://fuchsia.googlesource.com/;> Fuchsia OS.
>
> 


[PATCH][libstdc++-v3, fuchsia] Add support for fuchsia targets to libstdc++

2017-01-17 Thread Josh Conner via gcc-patches

This patch adds fuchsia support to libstdc++. OK for trunk?

Thanks -

Josh

2017-01-17  Joshua Conner  

* crossconfig.m4: Add fuchsia OS.
* configure: Regenerate.

Index: configure
===
--- configure   (revision 244542)
+++ configure   (working copy)
@@ -53327,6 +53327,12 @@
 done
 
 ;;
+
+  *-fuchsia*)
+SECTION_FLAGS='-ffunction-sections -fdata-sections'
+
+;;
+
   *-hpux*)
 SECTION_FLAGS='-ffunction-sections -fdata-sections'
 
Index: crossconfig.m4
===
--- crossconfig.m4  (revision 244542)
+++ crossconfig.m4  (working copy)
@@ -134,6 +134,12 @@
 fi
 AC_CHECK_FUNCS(__cxa_thread_atexit)
 ;;
+
+  *-fuchsia*)
+SECTION_FLAGS='-ffunction-sections -fdata-sections'
+AC_SUBST(SECTION_FLAGS)
+;;
+
   *-hpux*)
 SECTION_FLAGS='-ffunction-sections -fdata-sections'
 AC_SUBST(SECTION_FLAGS)


[PATCH][libgcc, fuchsia]

2017-01-17 Thread Josh Conner via gcc-patches

The attached patch adds fuchsia support to libgcc.

OK for trunk?

Thanks -

Josh

2017-01-17  Joshua Conner  

* config/arm/unwind-arm.h (_Unwind_decode_typeinfo_ptr): Use
pc-relative indirect handling for fuchsia.
* config/t-slibgcc-fuchsia: New file.
* config.host (*-*-fuchsia*, aarch64*-*-fuchsia*, arm*-*-fuchsia*,
x86_64-*-fuchsia*): Add definitions.

Index: config/arm/unwind-arm.h
===
--- config/arm/unwind-arm.h (revision 244542)
+++ config/arm/unwind-arm.h (working copy)
@@ -49,7 +49,7 @@
return 0;
 
 #if (defined(linux) && !defined(__uClinux__)) || defined(__NetBSD__) \
-|| defined(__FreeBSD__)
+|| defined(__FreeBSD__) || defined(__fuchsia__)
   /* Pc-relative indirect.  */
 #define _GLIBCXX_OVERRIDE_TTYPE_ENCODING (DW_EH_PE_pcrel | DW_EH_PE_indirect)
   tmp += ptr;
Index: config/t-slibgcc-fuchsia
===
--- config/t-slibgcc-fuchsia(revision 0)
+++ config/t-slibgcc-fuchsia(working copy)
@@ -0,0 +1,22 @@
+# Copyright (C) 2017 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 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
+# .
+
+# Fuchsia-specific shared library overrides.
+
+SHLIB_LDFLAGS = -Wl,--soname=$(SHLIB_SONAME) \
+$(LDFLAGS)
Index: config.host
===
--- config.host (revision 244542)
+++ config.host (working copy)
@@ -228,6 +228,10 @@
   ;;
   esac
   ;;
+*-*-fuchsia*)
+  tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc 
t-slibgcc-fuchsia"
+  extra_parts="crtbegin.o crtend.o"
+  ;;
 *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | 
*-*-kopensolaris*-gnu)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc 
t-slibgcc-gld t-slibgcc-elf-ver t-linux"
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
@@ -337,6 +341,10 @@
tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
;;
+aarch64*-*-fuchsia*)
+   tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+   tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp"
+   ;;
 aarch64*-*-linux*)
extra_parts="$extra_parts crtfastmath.o"
md_unwind_header=aarch64/linux-unwind.h
@@ -389,6 +397,12 @@
unwind_header=config/arm/unwind-arm.h
tmake_file="${tmake_file} t-softfp-sfdf t-softfp-excl arm/t-softfp 
t-softfp"
;;
+arm*-*-fuchsia*)
+   tmake_file="${tmake_file} arm/t-arm arm/t-elf arm/t-bpabi"
+   tmake_file="${tmake_file} arm/tsoftfp t-softfp"
+   tm_file="${tm_file} arm/bpabi-lib.h"
+   unwind_header=config/arm/unwind-arm.h
+   ;;
 arm*-*-netbsdelf*)
tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
;;
@@ -583,6 +597,9 @@
 x86_64-*-elf* | x86_64-*-rtems*)
tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic"
;;
+x86_64-*-fuchsia*)
+   tmake_file="$tmake_file t-libgcc-pic"
+   ;;
 i[34567]86-*-dragonfly*)
tmake_file="${tmake_file} i386/t-dragonfly i386/t-crtstuff"
md_unwind_header=i386/dragonfly-unwind.h


Re: [PATCH] Add support for Fuchsia (OS)

2017-01-10 Thread Josh Conner via gcc-patches


On 1/10/17 7:54 AM, Richard Earnshaw (lists) wrote:

On 12/12/16 21:31, Josh Conner via gcc-patches wrote:

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>

Two spaces between your name and email address.


 * 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.


This is OK, but please update the copyright years on the new files to
include 2017.


Applied with those changes, thanks.

- Josh


R.


gcc-fuchsia-support-v2.patch


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.  */

Re: [PATCH] Add support for Fuchsia (OS)

2016-12-27 Thread Josh Conner via gcc-patches

Ping^2?


On 12/19/16 10:05 AM, Josh Conner wrote:

Ping?


On 12/12/16 1:31 PM, Josh Conner wrote:

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.







[PATCH] Add support for Fuchsia (OS)

2016-12-19 Thread Josh Conner via gcc-patches

Ping?


On 12/12/16 1:31 PM, Josh Conner wrote:

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.





Re: [PATCH] Add support for Fuchsia (OS)

2016-12-12 Thread Josh Conner via gcc-patches

On 12/11/16 7:24 AM, Gerald Pfeifer wrote:

On Thu, 8 Dec 2016, Josh Conner wrote:

This patch adds support to gcc for the Fuchsia OS
(https://fuchsia.googlesource.com/).


Once this is in, can you please suggest a news item for our
main page?

(You could cook a patch following https://gcc.gnu.org/about.html
or suggest wording or an HTML snippet, and I'll take it from there.)

Similarly, would be good to add this to gcc-7/changes.html.


Sure thing -- I'll submit patches for wwwdocs once my gcc changes
go in.

- Josh




Re: [PATCH] Add support for Fuchsia (OS)

2016-12-12 Thread Josh Conner via gcc-patches

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__");  \
+  TA

Re: [PATCH] Add support for Fuchsia (OS)

2016-12-09 Thread Josh Conner
Sorry, that should have been:

#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \
   "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIE"

(default to PIE, not PIC)

On Fri, Dec 9, 2016 at 11:33 AM, Josh Conner <joshcon...@google.com> wrote:
> On 12/9/16 12:26 AM, Andrew Pinski wrote:
>>
>> On Thu, Dec 8, 2016 at 2:55 PM, Josh Conner <joshcon...@google.com> wrote:
>>>
>>> This patch adds support to gcc for the Fuchsia OS
>>> (https://fuchsia.googlesource.com/).
>>>
>>> OK for mainline?
>>
>> A few comments:
>>>
>>> +/* Build with PIC by default.  */
>>> +#undef  CC1_SPEC
>>> +#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC"
>>
>> Is it PIC by default or really PIE by default?
>> Also how does this interact with the -fpie/-fPIE options?
>
>
> The intent was to make it PIE by default - I was mistakenly under the
> impression that this meant
> building with -fpic/PIC, a la the android builds. Does this seem more
> reasonable:
>
> #define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \
>"%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIC"
>
> ?
>
> Thanks -
>
> Josh
>
>
>
>> Thanks,
>> Andrew
>>
>>
>>> 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.
>>>
>>>
>


Re: [PATCH] Add support for Fuchsia (OS)

2016-12-09 Thread Josh Conner

On 12/9/16 12:26 AM, Andrew Pinski wrote:

On Thu, Dec 8, 2016 at 2:55 PM, Josh Conner <joshcon...@google.com> wrote:

This patch adds support to gcc for the Fuchsia OS
(https://fuchsia.googlesource.com/).

OK for mainline?

A few comments:

+/* Build with PIC by default.  */
+#undef  CC1_SPEC
+#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC"

Is it PIC by default or really PIE by default?
Also how does this interact with the -fpie/-fPIE options?


The intent was to make it PIE by default - I was mistakenly under the 
impression that this meant
building with -fpic/PIC, a la the android builds. Does this seem more 
reasonable:

#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \
   "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIC"

?

Thanks -

Josh



Thanks,
Andrew



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.






[PATCH] Add support for Fuchsia (OS)

2016-12-08 Thread Josh Conner
This patch adds support to gcc for the Fuchsia OS 
(https://fuchsia.googlesource.com/).


OK for mainline?

Thanks -

Josh


2016-12-08  Joshua Conner  


* 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: gcc/config/arm/fuchsia-elf.h
===
--- gcc/config/arm/fuchsia-elf.h(revision 0)
+++ gcc/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
+   .  */
+
+/* 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: gcc/config/fuchsia.h
===
--- gcc/config/fuchsia.h(revision 0)
+++ gcc/config/fuchsia.h(working copy)
@@ -0,0 +1,64 @@
+/* Base configuration file for all Fuchsia targets.
+   Copyright (C) 2016 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 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
+.  */
+
+/* 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"
+
+/* Build with PIC by default.  */
+#undef  CC1_SPEC
+#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC"
+
+#undef  LIB_SPEC
+#define LIB_SPEC "-lmxio -lmagenta -lc -llaunchpad" \
+"%{!static: -lgcc_s}"
+
+#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: gcc/config.gcc
===
--- gcc/config.gcc  (revision 243452)
+++ gcc/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"

[PATCH] Update my email address in MAINTAINERS

2016-11-01 Thread Josh Conner
Glad to be back.

- Josh


2016-11-01  Josh Conner  <joshcon...@google.com>


* MAINTAINERS (Write After Approval): Update email address.


MAINTAINERS.patch
Description: Binary data