Index: head/lang/gcc/files/patch-aarch64-support =================================================================== --- head/lang/gcc/files/patch-aarch64-support (revision 438060) +++ head/lang/gcc/files/patch-aarch64-support (revision 438061) @@ -1,186 +1,191 @@ --- UTC Index: configure =================================================================== --- configure (revision 240731) +++ configure (working copy) @@ -3455,6 +3455,9 @@ *-*-vxworks*) noconfigdirs="$noconfigdirs ${libgcj}" ;; + aarch64*-*-freebsd*) + noconfigdirs="$noconfigdirs ${libgcj}" + ;; alpha*-*-*vms*) noconfigdirs="$noconfigdirs ${libgcj}" ;; Index: configure.ac =================================================================== --- configure.ac (revision 240731) +++ configure.ac (working copy) @@ -802,6 +802,9 @@ *-*-vxworks*) noconfigdirs="$noconfigdirs ${libgcj}" ;; + aarch64*-*-freebsd*) + noconfigdirs="$noconfigdirs ${libgcj}" + ;; alpha*-*-*vms*) noconfigdirs="$noconfigdirs ${libgcj}" ;; Index: gcc/config/aarch64/aarch64-freebsd.h =================================================================== --- gcc/config/aarch64/aarch64-freebsd.h (nonexistent) +++ gcc/config/aarch64/aarch64-freebsd.h (working copy) -@@ -0,0 +1,94 @@ +@@ -0,0 +1,99 @@ +/* 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 + . */ + +#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/config/aarch64/t-aarch64-freebsd =================================================================== --- gcc/config/aarch64/t-aarch64-freebsd (nonexistent) +++ gcc/config/aarch64/t-aarch64-freebsd (working copy) @@ -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 +# . + +LIB1ASMSRC = aarch64/lib1funcs.asm +LIB1ASMFUNCS = _aarch64_sync_cache_range Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 240731) +++ gcc/config.gcc (working copy) @@ -914,6 +914,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" Index: libgcc/config.host =================================================================== --- libgcc/config.host (revision 240731) +++ libgcc/config.host (working copy) @@ -328,6 +328,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 Index: head/lang/gcc5/files/patch-aarch64-support =================================================================== --- head/lang/gcc5/files/patch-aarch64-support (revision 438060) +++ head/lang/gcc5/files/patch-aarch64-support (revision 438061) @@ -1,186 +1,191 @@ --- UTC Index: configure =================================================================== --- configure (revision 240731) +++ configure (working copy) @@ -3455,6 +3455,9 @@ *-*-vxworks*) noconfigdirs="$noconfigdirs ${libgcj}" ;; + aarch64*-*-freebsd*) + noconfigdirs="$noconfigdirs ${libgcj}" + ;; alpha*-*-*vms*) noconfigdirs="$noconfigdirs ${libgcj}" ;; Index: configure.ac =================================================================== --- configure.ac (revision 240731) +++ configure.ac (working copy) @@ -802,6 +802,9 @@ *-*-vxworks*) noconfigdirs="$noconfigdirs ${libgcj}" ;; + aarch64*-*-freebsd*) + noconfigdirs="$noconfigdirs ${libgcj}" + ;; alpha*-*-*vms*) noconfigdirs="$noconfigdirs ${libgcj}" ;; Index: gcc/config/aarch64/aarch64-freebsd.h =================================================================== --- gcc/config/aarch64/aarch64-freebsd.h (nonexistent) +++ gcc/config/aarch64/aarch64-freebsd.h (working copy) -@@ -0,0 +1,94 @@ +@@ -0,0 +1,99 @@ +/* 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 + . */ + +#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/config/aarch64/t-aarch64-freebsd =================================================================== --- gcc/config/aarch64/t-aarch64-freebsd (nonexistent) +++ gcc/config/aarch64/t-aarch64-freebsd (working copy) @@ -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 +# . + +LIB1ASMSRC = aarch64/lib1funcs.asm +LIB1ASMFUNCS = _aarch64_sync_cache_range Index: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 240731) +++ gcc/config.gcc (working copy) @@ -914,6 +914,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" Index: libgcc/config.host =================================================================== --- libgcc/config.host (revision 240731) +++ libgcc/config.host (working copy) @@ -328,6 +328,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 Index: head/lang/gcc6/files/patch-aarch64-support =================================================================== --- head/lang/gcc6/files/patch-aarch64-support (revision 438060) +++ head/lang/gcc6/files/patch-aarch64-support (revision 438061) @@ -1,230 +1,235 @@ --- 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 +# . + +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,94 @@ +@@ -0,0 +1,99 @@ +/* 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 + . */ + +#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;