Changeset View
Changeset View
Standalone View
Standalone View
devel/powerpc64-gcc/files/patch-aarch64-support
- This file was added.
Property | Old Value | New Value |
---|---|---|
fbsd:nokeywords | null | yes \ No newline at end of property |
svn:eol-style | null | native \ No newline at end of property |
svn:mime-type | null | text/plain \ No newline at end of property |
--- UTC | |||||
--- configure.ac.orig 2016-03-17 23:54:19.000000000 +0100 | |||||
+++ configure.ac 2016-10-20 21:29:03.780044000 +0200 | |||||
@@ -819,6 +819,9 @@ | |||||
*-*-vxworks*) | |||||
noconfigdirs="$noconfigdirs ${libgcj}" | |||||
;; | |||||
+ aarch64*-*-freebsd*) | |||||
+ noconfigdirs="$noconfigdirs ${libgcj}" | |||||
+ ;; | |||||
alpha*-*-*vms*) | |||||
noconfigdirs="$noconfigdirs ${libgcj}" | |||||
;; | |||||
--- configure.orig 2016-03-17 23:54:19.000000000 +0100 | |||||
+++ configure 2016-10-20 21:29:03.779159000 +0200 | |||||
@@ -3483,6 +3483,9 @@ | |||||
*-*-vxworks*) | |||||
noconfigdirs="$noconfigdirs ${libgcj}" | |||||
;; | |||||
+ aarch64*-*-freebsd*) | |||||
+ noconfigdirs="$noconfigdirs ${libgcj}" | |||||
+ ;; | |||||
alpha*-*-*vms*) | |||||
noconfigdirs="$noconfigdirs ${libgcj}" | |||||
;; | |||||
--- libgcc/config.host.orig 2016-05-17 08:15:52.000000000 +0200 | |||||
+++ libgcc/config.host 2016-10-20 21:29:03.782426000 +0200 | |||||
@@ -333,6 +333,11 @@ | |||||
tmake_file="${tmake_file} ${cpu_type}/t-aarch64" | |||||
tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" | |||||
;; | |||||
+aarch64*-*-freebsd*) | |||||
+ extra_parts="$extra_parts crtfastmath.o" | |||||
+ tmake_file="${tmake_file} ${cpu_type}/t-aarch64" | |||||
+ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm" | |||||
+ ;; | |||||
aarch64*-*-linux*) | |||||
extra_parts="$extra_parts crtfastmath.o" | |||||
md_unwind_header=aarch64/linux-unwind.h | |||||
--- gcc/config.host.orig 2016-01-04 15:30:50.000000000 +0100 | |||||
+++ gcc/config.host 2016-10-20 21:29:03.781971000 +0200 | |||||
@@ -99,7 +99,7 @@ | |||||
esac | |||||
case ${host} in | |||||
- aarch64*-*-linux*) | |||||
+ aarch64*-*-freebsd* | aarch64*-*-linux*) | |||||
case ${target} in | |||||
aarch64*-*-*) | |||||
host_extra_gcc_objs="driver-aarch64.o" | |||||
--- gcc/config.gcc.orig 2016-06-08 15:34:25.000000000 +0200 | |||||
+++ gcc/config.gcc 2016-10-20 21:29:03.781684000 +0200 | |||||
@@ -941,6 +941,11 @@ | |||||
done | |||||
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'` | |||||
;; | |||||
+aarch64*-*-freebsd*) | |||||
+ tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}" | |||||
+ tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-freebsd.h" | |||||
+ tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd" | |||||
+ ;; | |||||
aarch64*-*-linux*) | |||||
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h" | |||||
tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h" | |||||
--- gcc/config/aarch64/t-aarch64-freebsd.orig 2016-10-20 21:29:03.780409000 +0200 | |||||
+++ gcc/config/aarch64/t-aarch64-freebsd 2016-10-20 21:29:03.780540000 +0200 | |||||
@@ -0,0 +1,21 @@ | |||||
+# Machine description for AArch64 architecture. | |||||
+# 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 | |||||
+# <http://www.gnu.org/licenses/>. | |||||
+ | |||||
+LIB1ASMSRC = aarch64/lib1funcs.asm | |||||
+LIB1ASMFUNCS = _aarch64_sync_cache_range | |||||
--- gcc/config/aarch64/aarch64-freebsd.h.orig 2016-10-20 21:29:03.780130000 +0200 | |||||
+++ gcc/config/aarch64/aarch64-freebsd.h 2016-10-20 21:29:03.780349000 +0200 | |||||
@@ -0,0 +1,98 @@ | |||||
+/* Definitions for AArch64 running FreeBSD | |||||
+ 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 | |||||
+ <http://www.gnu.org/licenses/>. */ | |||||
+ | |||||
+#ifndef GCC_AARCH64_FREEBSD_H | |||||
+#define GCC_AARCH64_FREEBSD_H | |||||
+ | |||||
+#undef SUBTARGET_CPP_SPEC | |||||
+#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC | |||||
+ | |||||
+#if TARGET_BIG_ENDIAN_DEFAULT | |||||
+#define TARGET_LINKER_EMULATION "aarch64fbsdb" | |||||
+#else | |||||
+#define TARGET_LINKER_EMULATION "aarch64fbsd" | |||||
+#endif | |||||
+ | |||||
+#undef SUBTARGET_EXTRA_LINK_SPEC | |||||
+#define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION | |||||
+ | |||||
+#undef FBSD_TARGET_LINK_SPEC | |||||
+#define FBSD_TARGET_LINK_SPEC " \ | |||||
+ %{p:%nconsider using `-pg' instead of `-p' with gprof (1) } \ | |||||
+ %{v:-V} \ | |||||
+ %{assert*} %{R*} %{rpath*} %{defsym*} \ | |||||
+ %{shared:-Bshareable %{h*} %{soname*}} \ | |||||
+ %{symbolic:-Bsymbolic} \ | |||||
+ %{static:-Bstatic} \ | |||||
+ %{!static: \ | |||||
+ %{rdynamic:-export-dynamic} \ | |||||
+ %{!shared:-dynamic-linker " FBSD_DYNAMIC_LINKER " }} \ | |||||
+ -X" SUBTARGET_EXTRA_LINK_SPEC " \ | |||||
+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" | |||||
+ | |||||
+#if TARGET_FIX_ERR_A53_835769_DEFAULT | |||||
+#define CA53_ERR_835769_SPEC \ | |||||
+ " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}" | |||||
+#else | |||||
+#define CA53_ERR_835769_SPEC \ | |||||
+ " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}" | |||||
+#endif | |||||
+ | |||||
+#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT | |||||
+#define CA53_ERR_843419_SPEC \ | |||||
+ " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}" | |||||
+#else | |||||
+#define CA53_ERR_843419_SPEC \ | |||||
+ " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}" | |||||
+#endif | |||||
+ | |||||
+#undef LINK_SPEC | |||||
+#define LINK_SPEC FBSD_TARGET_LINK_SPEC \ | |||||
+ CA53_ERR_835769_SPEC \ | |||||
+ CA53_ERR_843419_SPEC | |||||
+ | |||||
+#define GNU_USER_TARGET_MATHFILE_SPEC \ | |||||
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}" | |||||
+ | |||||
+#undef ENDFILE_SPEC | |||||
+#define ENDFILE_SPEC \ | |||||
+ GNU_USER_TARGET_MATHFILE_SPEC " " \ | |||||
+ FBSD_ENDFILE_SPEC | |||||
+ | |||||
+#undef TARGET_OS_CPP_BUILTINS | |||||
+#define TARGET_OS_CPP_BUILTINS() \ | |||||
+ do \ | |||||
+ { \ | |||||
+ FBSD_TARGET_OS_CPP_BUILTINS (); \ | |||||
+ } \ | |||||
+ while (false) | |||||
+ | |||||
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack | |||||
+ | |||||
+/* Uninitialized common symbols in non-PIE executables, even with | |||||
+ strong definitions in dependent shared libraries, will resolve | |||||
+ to COPY relocated symbol in the executable. See PR65780. */ | |||||
+#undef TARGET_BINDS_LOCAL_P | |||||
+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2 | |||||
+ | |||||
+/* Use the AAPCS type for wchar_t, override the one from config/freebsd.h. */ | |||||
+#undef WCHAR_TYPE | |||||
+#define WCHAR_TYPE "unsigned int" | |||||
+ | |||||
+#endif /* GCC_AARCH64_FREEBSD_H */ | |||||
Index: gcc/dwarf2out.c | |||||
=================================================================== | |||||
--- gcc/dwarf2out.c (revision 244100) | |||||
+++ gcc/dwarf2out.c (working copy) | |||||
@@ -23752,7 +23752,16 @@ | |||||
{ | |||||
dw_die_ref die = lookup_decl_die (decl); | |||||
if (die) | |||||
- add_location_or_const_value_attribute (die, decl, false); | |||||
+ { | |||||
+ /* We get called via the symtab code invoking late_global_decl | |||||
+ for symbols that are optimized out. Do not add locations | |||||
+ for those. */ | |||||
+ varpool_node *node = varpool_node::get (decl); | |||||
+ if (! node || ! node->definition) | |||||
+ tree_add_const_value_attribute_for_decl (die, decl); | |||||
+ else | |||||
+ add_location_or_const_value_attribute (die, decl, false); | |||||
+ } | |||||
} | |||||
} | |||||
Index: gcc/cgraphunit.c | |||||
=================================================================== | |||||
--- gcc/cgraphunit.c (revision 244100) | |||||
+++ gcc/cgraphunit.c (working copy) | |||||
@@ -1193,8 +1193,16 @@ | |||||
at looking at optimized away DECLs, since | |||||
late_global_decl will subsequently be called from the | |||||
contents of the now pruned symbol table. */ | |||||
- if (!decl_function_context (node->decl)) | |||||
- (*debug_hooks->late_global_decl) (node->decl); | |||||
+ if (VAR_P (node->decl) | |||||
+ && !decl_function_context (node->decl)) | |||||
+ { | |||||
+ /* We are reclaiming totally unreachable code and variables | |||||
+ so they effectively appear as readonly. Show that to | |||||
+ the debug machinery. */ | |||||
+ TREE_READONLY (node->decl) = 1; | |||||
+ node->definition = false; | |||||
+ (*debug_hooks->late_global_decl) (node->decl); | |||||
+ } | |||||
node->remove (); | |||||
continue; |