summaryrefslogtreecommitdiff
path: root/lang/gcc5-aux/files
diff options
context:
space:
mode:
authormarino <marino@pkgsrc.org>2016-08-28 17:59:36 +0000
committermarino <marino@pkgsrc.org>2016-08-28 17:59:36 +0000
commit2ce2fe9b2d95ab5100d2bddea3293c7a9a7806aa (patch)
tree9bcf59f52a80a7748fe03b4cbb7c98b0710324a9 /lang/gcc5-aux/files
parent394425273cd175c8947084aad9f70029a389db1d (diff)
downloadpkgsrc-2ce2fe9b2d95ab5100d2bddea3293c7a9a7806aa.tar.gz
lang/gcc5-aux: Upgrade version 20150422 => 20160603 (GCC 5.1 => 5.4)
The signal trampoline detection for NetBSD 7 and later is still broken. Support for NetBSD 6.99 has been removed along with supporte for 32-bit DragonFly. The modifications to the testsuite were misguided and have also been removed.
Diffstat (limited to 'lang/gcc5-aux/files')
-rw-r--r--lang/gcc5-aux/files/diff-ada47
-rw-r--r--lang/gcc5-aux/files/diff-core262
-rw-r--r--lang/gcc5-aux/files/diff-cxx111
-rw-r--r--lang/gcc5-aux/files/diff-cxx-testsuite2
-rw-r--r--lang/gcc5-aux/files/diff-fortran4
5 files changed, 184 insertions, 242 deletions
diff --git a/lang/gcc5-aux/files/diff-ada b/lang/gcc5-aux/files/diff-ada
index 8039c96be20..bde7fedac0a 100644
--- a/lang/gcc5-aux/files/diff-ada
+++ b/lang/gcc5-aux/files/diff-ada
@@ -1045,23 +1045,36 @@
Gcc_Path : String_Access := null;
Non_Empty_Node : constant Project_Node_Id := 1;
---- gcc/ada/s-osinte-android.ads.orig
-+++ gcc/ada/s-osinte-android.ads
-@@ -597,11 +597,11 @@
+--- gcc/ada/s-oscons-tmplt.c.orig
++++ gcc/ada/s-oscons-tmplt.c
+@@ -402,7 +402,7 @@
- type pid_t is new int;
+ /* ioctl(2) requests are "int" in UNIX, but "unsigned long" on FreeBSD */
-- type time_t is new long;
-+ type time_t is new Long_Long_Integer;
+-#ifdef __FreeBSD__
++#if defined (__FreeBSD__) || defined (__DragonFly__)
+ # define CNI CNU
+ # define IOCTL_Req_T "unsigned"
+ #else
+@@ -1014,7 +1014,7 @@
- type timespec is record
-- tv_sec : time_t;
-- tv_nsec : long;
-+ ts_sec : time_t;
-+ ts_nsec : long;
- end record;
- pragma Convention (C, timespec);
+ */
+-#if defined (__FreeBSD__) || defined (linux)
++#if defined (__FreeBSD__) || defined (linux) || defined (__DragonFly__)
+ # define PTY_Library "-lutil"
+ #else
+ # define PTY_Library ""
+@@ -1435,7 +1435,8 @@
+ #endif
+ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock")
+
+-#if defined(__FreeBSD__) || (defined(_AIX) && defined(_AIXVERSION_530))
++#if defined(__FreeBSD__) || (defined(_AIX) && defined(_AIXVERSION_530)) \
++ || defined(__DragonFly__)
+ /** On these platforms use system provided monotonic clock instead of
+ ** the default CLOCK_REALTIME. We then need to set up cond var attributes
+ ** appropriately (see thread.c).
--- /dev/null
+++ gcc/ada/s-osinte-dragonfly.adb
@@ -0,0 +1,116 @@
@@ -3620,7 +3633,7 @@
THREADSLIB = -lposix4 -lthread
MISCLIB = -lposix4 -lnsl -lsocket
SO_OPTS = -Wl,-h,
-@@ -1420,8 +1424,11 @@
+@@ -1416,8 +1420,11 @@
ifeq ($(strip $(filter-out %86 freebsd%,$(target_cpu) $(target_os))),)
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<a-intnam-freebsd.ads \
@@ -3632,7 +3645,7 @@
s-osinte.adb<s-osinte-freebsd.adb \
s-osinte.ads<s-osinte-freebsd.ads \
s-osprim.adb<s-osprim-posix.adb \
-@@ -1436,6 +1443,8 @@
+@@ -1432,6 +1439,8 @@
mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
GNATLIB_SHARED = gnatlib-shared-dual
@@ -3641,7 +3654,7 @@
EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
EH_MECHANISM=-gcc
-@@ -1449,8 +1458,11 @@
+@@ -1445,8 +1454,11 @@
ifeq ($(strip $(filter-out %86_64 freebsd%,$(target_cpu) $(target_os))),)
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<a-intnam-freebsd.ads \
@@ -3653,7 +3666,7 @@
s-osinte.adb<s-osinte-freebsd.adb \
s-osinte.ads<s-osinte-freebsd.ads \
s-osprim.adb<s-osprim-posix.adb \
-@@ -1465,6 +1477,110 @@
+@@ -1461,6 +1473,110 @@
mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb
GNATLIB_SHARED = gnatlib-shared-dual
diff --git a/lang/gcc5-aux/files/diff-core b/lang/gcc5-aux/files/diff-core
index c192081f502..d06edb2fb54 100644
--- a/lang/gcc5-aux/files/diff-core
+++ b/lang/gcc5-aux/files/diff-core
@@ -11,13 +11,11 @@
#undef LINK_SPEC
--- gcc/config/i386/freebsd.h.orig
+++ gcc/config/i386/freebsd.h
-@@ -90,6 +90,14 @@
+@@ -77,6 +77,12 @@
When the -shared link option is used a final link is not being
done. */
-+#if FBSD_MAJOR < 9
-+#define ELF_HASH_STYLE ""
-+#elif FBSD_MAJOR < 10
++#if FBSD_MAJOR < 10
+#define ELF_HASH_STYLE "--hash-style=both "
+#else
+#define ELF_HASH_STYLE "--hash-style=gnu "
@@ -26,7 +24,7 @@
#undef LINK_SPEC
#define LINK_SPEC "\
%{p:%nconsider using '-pg' instead of '-p' with gprof(1)} \
-@@ -101,6 +109,7 @@
+@@ -88,6 +94,7 @@
%{rdynamic:-export-dynamic} \
-dynamic-linker %(fbsd_dynamic_linker) } \
%{static:-Bstatic}} \
@@ -43,182 +41,6 @@
+ %{!static:" ELF_HASH_STYLE "-rpath @PREFIX@/@GCCAUX@/lib} \
%{symbolic:-Bsymbolic}"
--- /dev/null
-+++ libgcc/config/i386/freebsd-unwind.h
-@@ -0,0 +1,173 @@
-+/* DWARF2 EH unwinding support for FreeBSD: AMD x86-64 and x86.
-+ Copyright (C) 2015 Free Software Foundation, Inc.
-+ Contributed by John Marino <gnugcc@marino.st>
-+
-+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.
-+
-+Under Section 7 of GPL version 3, you are granted additional
-+permissions described in the GCC Runtime Library Exception, version
-+3.1, as published by the Free Software Foundation.
-+
-+You should have received a copy of the GNU General Public License and
-+a copy of the GCC Runtime Library Exception along with this program;
-+see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-+<http://www.gnu.org/licenses/>. */
-+
-+/* Do code reading to identify a signal frame, and set the frame
-+ state data appropriately. See unwind-dw2.c for the structs. */
-+
-+#include <sys/types.h>
-+#include <signal.h>
-+#include <sys/ucontext.h>
-+#include <machine/sigframe.h>
-+
-+#define REG_NAME(reg) sf_uc.uc_mcontext.mc_## reg
-+
-+#ifdef __x86_64__
-+#define MD_FALLBACK_FRAME_STATE_FOR x86_64_freebsd_fallback_frame_state
-+
-+static _Unwind_Reason_Code
-+x86_64_freebsd_fallback_frame_state
-+(struct _Unwind_Context *context, _Unwind_FrameState *fs)
-+{
-+ struct sigframe *sf;
-+ long new_cfa;
-+
-+ /* Prior to FreeBSD 9, the signal trampoline was located immediately
-+ before the ps_strings. To support non-executable stacks on AMD64,
-+ the sigtramp was moved to a shared page for FreeBSD 9. Unfortunately
-+ this means looking frame patterns again (sys/amd64/amd64/sigtramp.S)
-+ rather than using the robust and convenient KERN_PS_STRINGS trick.
-+
-+ <pc + 00>: lea 0x10(%rsp),%rdi
-+ <pc + 05>: pushq $0x0
-+ <pc + 17>: mov $0x1a1,%rax
-+ <pc + 14>: syscall
-+
-+ If we can't find this pattern, we're at the end of the stack.
-+ */
-+
-+ if (!( *(unsigned int *)(context->ra) == 0x247c8d48
-+ && *(unsigned int *)(context->ra + 4) == 0x48006a10
-+ && *(unsigned int *)(context->ra + 8) == 0x01a1c0c7
-+ && *(unsigned int *)(context->ra + 12) == 0x050f0000 ))
-+ return _URC_END_OF_STACK;
-+
-+ sf = (struct sigframe *) context->cfa;
-+ new_cfa = sf->REG_NAME(rsp);
-+ fs->regs.cfa_how = CFA_REG_OFFSET;
-+ /* Register 7 is rsp */
-+ fs->regs.cfa_reg = 7;
-+ fs->regs.cfa_offset = new_cfa - (long) context->cfa;
-+
-+ /* The SVR4 register numbering macros aren't usable in libgcc. */
-+ fs->regs.reg[0].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[0].loc.offset = (long)&sf->REG_NAME(rax) - new_cfa;
-+ fs->regs.reg[1].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[1].loc.offset = (long)&sf->REG_NAME(rdx) - new_cfa;
-+ fs->regs.reg[2].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[2].loc.offset = (long)&sf->REG_NAME(rcx) - new_cfa;
-+ fs->regs.reg[3].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[3].loc.offset = (long)&sf->REG_NAME(rbx) - new_cfa;
-+ fs->regs.reg[4].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[4].loc.offset = (long)&sf->REG_NAME(rsi) - new_cfa;
-+ fs->regs.reg[5].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[5].loc.offset = (long)&sf->REG_NAME(rdi) - new_cfa;
-+ fs->regs.reg[6].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[6].loc.offset = (long)&sf->REG_NAME(rbp) - new_cfa;
-+ fs->regs.reg[8].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[8].loc.offset = (long)&sf->REG_NAME(r8) - new_cfa;
-+ fs->regs.reg[9].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[9].loc.offset = (long)&sf->REG_NAME(r9) - new_cfa;
-+ fs->regs.reg[10].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[10].loc.offset = (long)&sf->REG_NAME(r10) - new_cfa;
-+ fs->regs.reg[11].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[11].loc.offset = (long)&sf->REG_NAME(r11) - new_cfa;
-+ fs->regs.reg[12].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[12].loc.offset = (long)&sf->REG_NAME(r12) - new_cfa;
-+ fs->regs.reg[13].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[13].loc.offset = (long)&sf->REG_NAME(r13) - new_cfa;
-+ fs->regs.reg[14].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[14].loc.offset = (long)&sf->REG_NAME(r14) - new_cfa;
-+ fs->regs.reg[15].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[15].loc.offset = (long)&sf->REG_NAME(r15) - new_cfa;
-+ fs->regs.reg[16].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[16].loc.offset = (long)&sf->REG_NAME(rip) - new_cfa;
-+ fs->retaddr_column = 16;
-+ fs->signal_frame = 1;
-+ return _URC_NO_REASON;
-+}
-+
-+#else /* Next section is for i386 */
-+
-+#define MD_FALLBACK_FRAME_STATE_FOR x86_freebsd_fallback_frame_state
-+
-+/*
-+ * We can't use KERN_PS_STRINGS anymore if we want to support FreeBSD32
-+ * compat on AMD64. The sigtramp is in a shared page in that case so the
-+ * x86_sigtramp_range only works on a true i386 system. We have to
-+ * search for the sigtramp frame if we want it working everywhere.
-+ */
-+
-+static _Unwind_Reason_Code
-+x86_freebsd_fallback_frame_state
-+(struct _Unwind_Context *context, _Unwind_FrameState *fs)
-+{
-+ struct sigframe *sf;
-+ long new_cfa;
-+
-+/*
-+ * i386 sigtramp frame we are looking for follows.
-+ * Apparently PSL_VM is variable, so we can't look past context->ra + 4
-+ * <sigcode>:
-+ * 0: ff 54 24 10 call *0x10(%esp) *SIGF_HANDLER
-+ * 4: 8d 44 24 20 lea 0x20(%esp),%eax SIGF_UC
-+ * 8: 50 push %eax
-+ * 9: f7 40 54 00 00 02 00 testl $0x20000,0x54(%eax) $PSL_VM
-+ * 10: 75 03 jne 15 <sigcode+0x15>
-+ * 12: 8e 68 14 mov 0x14(%eax),%gs UC_GS
-+ * 15: b8 a1 01 00 00 mov 0x1a1,%eax $SYS_sigreturn
-+ */
-+
-+ if (!( *(unsigned int *)(context->ra - 4) == 0x102454ff
-+ && *(unsigned int *)(context->ra) == 0x2024448d ))
-+ return _URC_END_OF_STACK;
-+
-+ sf = (struct sigframe *) context->cfa;
-+ new_cfa = sf->REG_NAME(esp);
-+ fs->regs.cfa_how = CFA_REG_OFFSET;
-+ fs->regs.cfa_reg = 4;
-+ fs->regs.cfa_offset = new_cfa - (long) context->cfa;
-+
-+ /* The SVR4 register numbering macros aren't usable in libgcc. */
-+ fs->regs.reg[0].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[0].loc.offset = (long)&sf->REG_NAME(eax) - new_cfa;
-+ fs->regs.reg[3].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[3].loc.offset = (long)&sf->REG_NAME(ebx) - new_cfa;
-+ fs->regs.reg[1].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[1].loc.offset = (long)&sf->REG_NAME(ecx) - new_cfa;
-+ fs->regs.reg[2].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[2].loc.offset = (long)&sf->REG_NAME(edx) - new_cfa;
-+ fs->regs.reg[6].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[6].loc.offset = (long)&sf->REG_NAME(esi) - new_cfa;
-+ fs->regs.reg[7].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[7].loc.offset = (long)&sf->REG_NAME(edi) - new_cfa;
-+ fs->regs.reg[5].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[5].loc.offset = (long)&sf->REG_NAME(ebp) - new_cfa;
-+ fs->regs.reg[8].how = REG_SAVED_OFFSET;
-+ fs->regs.reg[8].loc.offset = (long)&sf->REG_NAME(eip) - new_cfa;
-+ fs->retaddr_column = 8;
-+ fs->signal_frame = 1;
-+ return _URC_NO_REASON;
-+}
-+#endif /* ifdef __x86_64__ */
---- /dev/null
+++ libgcc/config/i386/netbsd-unwind.h
@@ -0,0 +1,178 @@
+/* DWARF2 EH unwinding support for NetBSD: AMD x86-64 and x86.
@@ -430,7 +252,7 @@
}
--- gcc/config.gcc.orig
+++ gcc/config.gcc
-@@ -1393,12 +1393,16 @@
+@@ -1399,12 +1399,16 @@
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
;;
i[34567]86-*-netbsdelf*)
@@ -451,7 +273,7 @@
tm_file="i386/i386.h i386/unix.h i386/bsd.h i386/gas.h i386/gstabs.h openbsd-oldgas.h openbsd.h i386/openbsd.h"
--- gcc/configure.orig
+++ gcc/configure
-@@ -27806,6 +27806,13 @@
+@@ -27961,6 +27961,13 @@
gcc_cv_target_dl_iterate_phdr=no
fi
;;
@@ -527,9 +349,34 @@
&& defined(__OpenBSD__)
# define ElfW(type) Elf_##type
# define USE_PT_GNU_EH_FRAME
+--- libgcc/config.host.orig
++++ libgcc/config.host
+@@ -240,7 +240,8 @@
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
+ ;;
+ *-*-netbsd*)
+- tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
++ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip"
++ tmake_file="$tmake_file t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
+ # NetBSD 1.7 and later are set up to use GCC's crtstuff for
+ # ELF configurations. We will clear extra_parts in the
+ # a.out configurations.
+@@ -579,9 +580,12 @@
+ md_unwind_header=i386/freebsd-unwind.h
+ ;;
+ i[34567]86-*-netbsdelf*)
++ tmake_file="${tmake_file} i386/t-crtstuff"
++ md_unwind_header=i386/netbsd-unwind.h
+ ;;
+ x86_64-*-netbsd*)
+ tmake_file="${tmake_file} i386/t-crtstuff"
++ md_unwind_header=i386/netbsd-unwind.h
+ ;;
+ i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
+ ;;
--- gcc/Makefile.in.orig
+++ gcc/Makefile.in
-@@ -1156,7 +1156,6 @@
+@@ -1163,7 +1163,6 @@
insn-emit.o \
insn-extract.o \
insn-latencytab.o \
@@ -537,7 +384,7 @@
insn-opinit.o \
insn-output.o \
insn-peep.o \
-@@ -1511,6 +1510,7 @@
+@@ -1518,6 +1517,7 @@
$(OBJS-libcommon-target) @TREEBROWSER@ main.o c-family/cppspec.o \
$(COLLECT2_OBJS) $(EXTRA_GCC_OBJS) $(GCOV_OBJS) $(GCOV_DUMP_OBJS) \
$(GCOV_TOOL_OBJS) $(GENGTYPE_OBJS) gcc-ar.o gcc-nm.o gcc-ranlib.o \
@@ -545,7 +392,7 @@
lto-wrapper.o collect-utils.o
# This lists all host object files, whether they are included in this
-@@ -1518,6 +1518,11 @@
+@@ -1525,6 +1525,11 @@
ALL_HOST_OBJS = $(ALL_HOST_FRONTEND_OBJS) $(ALL_HOST_BACKEND_OBJS)
BACKEND = libbackend.a main.o @TREEBROWSER@ libcommon-target.a libcommon.a \
@@ -557,7 +404,7 @@
$(CPPLIB) $(LIBDECNUMBER)
# This is defined to "yes" if Tree checking is enabled, which roughly means
-@@ -2164,6 +2169,7 @@
+@@ -2171,6 +2176,7 @@
insn-modes.c: s-modes; @true
insn-modes.h: s-modes-h; @true
@@ -565,7 +412,7 @@
min-insn-modes.c: s-modes-m; @true
s-modes: build/genmodes$(build_exeext)
-@@ -2181,6 +2187,12 @@
+@@ -2188,6 +2194,12 @@
$(SHELL) $(srcdir)/../move-if-change tmp-min-modes.c min-insn-modes.c
$(STAMP) s-modes-m
@@ -578,7 +425,7 @@
insn-preds.c: s-preds; @true
tm-preds.h: s-preds-h; @true
tm-constrs.h: s-constrs-h; @true
-@@ -3326,6 +3338,9 @@
+@@ -3333,6 +3345,9 @@
( cd $(DESTDIR)$(bindir) && \
$(LN) $(GCC_INSTALL_NAME)$(exeext) $(FULL_DRIVER_NAME) ); \
fi; \
@@ -588,35 +435,8 @@
if [ ! -f gcc-cross$(exeext) ] \
&& [ "$(GCC_INSTALL_NAME)" != "$(GCC_TARGET_INSTALL_NAME)" ]; then \
rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \
---- libgcc/config.host.orig
-+++ libgcc/config.host
-@@ -240,7 +240,8 @@
- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- ;;
- *-*-netbsd*)
-- tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
-+ tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip"
-+ tmake_file="$tmake_file t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver"
- # NetBSD 1.7 and later are set up to use GCC's crtstuff for
- # ELF configurations. We will clear extra_parts in the
- # a.out configurations.
-@@ -567,14 +568,19 @@
- ;;
- i[34567]86-*-freebsd*)
- tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff"
-+ md_unwind_header=i386/freebsd-unwind.h
- ;;
- x86_64-*-freebsd*)
- tmake_file="${tmake_file} i386/t-freebsd i386/t-crtstuff"
-+ md_unwind_header=i386/freebsd-unwind.h
- ;;
- i[34567]86-*-netbsdelf*)
-+ tmake_file="${tmake_file} i386/t-crtstuff"
-+ md_unwind_header=i386/netbsd-unwind.h
- ;;
- x86_64-*-netbsd*)
- tmake_file="${tmake_file} i386/t-crtstuff"
-+ md_unwind_header=i386/netbsd-unwind.h
- ;;
- i[34567]86-*-openbsd2.*|i[34567]86-*openbsd3.[0123])
- ;;
+--- libgcc/config/i386/t-dragonfly.orig
++++ libgcc/config/i386/t-dragonfly
+@@ -0,0 +1,2 @@
++# Required for -fcilkplus support
++SHLIB_MAPFILES += $(srcdir)/config/i386/libgcc-bsd.ver
diff --git a/lang/gcc5-aux/files/diff-cxx b/lang/gcc5-aux/files/diff-cxx
index 182ef7e811b..a2beecdc514 100644
--- a/lang/gcc5-aux/files/diff-cxx
+++ b/lang/gcc5-aux/files/diff-cxx
@@ -1,3 +1,112 @@
+--- libstdc++-v3/config/locale/dragonfly/c_locale.cc.orig
++++ libstdc++-v3/config/locale/dragonfly/c_locale.cc
+@@ -36,6 +36,7 @@
+ #include <locale>
+ #include <limits>
+
++#include <xlocale.h>
+ #ifdef _GLIBCXX_HAVE_IEEEFP_H
+ #include <ieeefp.h>
+ #endif
+@@ -206,61 +207,45 @@
+ delete [] __sav;
+ }
+
+-
+- /* DragonFly's implementation of setlocale won't accept something like
+- "de_DE". According to nls manpage, the expected format is:
+- language[_territory][.codeset][@modifier], but it seems that both
+- the _territory and .codeset components are required.
+-
+- As an attempt to correct for this, we'll tack on ".UTF-8" if
+- a period is not detected in the locale string.
+-
+- There are no locales with modifiers on DragonFly so if found, they
+- will just be stripped off silently. e.g "de_DE@euro" will be reduced
+- to "de_DE". The UTF-8 default would be added after that.
+- */
+-
+ void
+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s,
+- __c_locale)
++ __c_locale __old)
+ {
+- const size_t size__s = (__s == NULL) ? 1 : strlen (__s);
+- const char UTF8[] = ".UTF-8";
+- char localspec[size__s + 6 + 1];
+-
+- if (__s == NULL) {
+- localspec[0] = '\0';
+- } else {
+- strcpy (localspec, __s);
+- char * pch = strchr (localspec, '@');
+- if (pch != NULL)
+- *pch = 0;
+-
+- if ( (strchr (__s, '.') == NULL)
+- && (strcmp (__s, "C") != 0)
+- && (strcmp (__s, "POSIX") != 0))
+- strncat (localspec, UTF8, 6);
+- }
+-
+- const char * result = std::setlocale(LC_ALL, localspec);
++ __cloc = (__c_locale)newlocale(LC_ALL_MASK, __s, (locale_t)__old);
+
+- if ((strcmp(result, "C") != 0) && (strcmp (result, localspec) != 0))
++ if (!__cloc)
+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale "
+ "name not valid"));
+- __cloc = 0;
+ }
+
+ void
+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
+- { __cloc = 0; }
++ {
++ if (__cloc && _S_get_c_locale() != __cloc)
++ freelocale((locale_t)__cloc);
++ }
+
+ __c_locale
+- locale::facet::_S_clone_c_locale(__c_locale&) throw()
+- { return __c_locale(); }
++ locale::facet::_S_clone_c_locale(__c_locale& __cloc) throw()
++ { return (__c_locale)duplocale((locale_t)__cloc); }
+
+ __c_locale
+- locale::facet::_S_lc_ctype_c_locale(__c_locale, const char*)
+- { return __c_locale(); }
++ locale::facet::_S_lc_ctype_c_locale(__c_locale __cloc, const char* __s)
++ {
++ __c_locale __dup = (__c_locale)duplocale((locale_t)__cloc);
++ if (__dup == __c_locale(0))
++ __throw_runtime_error(__N("locale::facet::_S_lc_ctype_c_locale "
++ "duplocale error"));
++ __c_locale __changed = (__c_locale)newlocale(LC_CTYPE_MASK, __s,
++ (locale_t)__dup);
++ if (__changed == __c_locale(0))
++ {
++ freelocale((locale_t)__dup);
++ __throw_runtime_error(__N("locale::facet::_S_lc_ctype_c_locale "
++ "newlocale error"));
++ }
++ return __changed;
++ }
+
+ _GLIBCXX_END_NAMESPACE_VERSION
+ } // namespace
+--- libstdc++-v3/config/os/bsd/dragonfly/os_defines.h.orig
++++ libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
+@@ -29,4 +29,9 @@
+ // System-specific #define, typedefs, corrections, etc, go here. This
+ // file will come before all others.
+
++#define _GLIBCXX_USE_C99_CHECK 1
++#define _GLIBCXX_USE_C99_DYNAMIC (!(__ISO_C_VISIBLE >= 1999))
++#define _GLIBCXX_USE_C99_LONG_LONG_CHECK 1
++#define _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC (_GLIBCXX_USE_C99_DYNAMIC || !defined __LONG_LONG_SUPPORTED)
++
+ #endif
--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
@@ -43,9 +43,22 @@
@@ -100,7 +209,7 @@
--- libstdc++-v3/configure.host.orig
+++ libstdc++-v3/configure.host
-@@ -268,6 +268,9 @@
+@@ -270,6 +270,9 @@
dragonfly*)
os_include_dir="os/bsd/dragonfly"
;;
diff --git a/lang/gcc5-aux/files/diff-cxx-testsuite b/lang/gcc5-aux/files/diff-cxx-testsuite
index 4f7388a9a66..228965b8d35 100644
--- a/lang/gcc5-aux/files/diff-cxx-testsuite
+++ b/lang/gcc5-aux/files/diff-cxx-testsuite
@@ -1,6 +1,6 @@
--- libstdc++-v3/testsuite/lib/libstdc++.exp.orig
+++ libstdc++-v3/testsuite/lib/libstdc++.exp
-@@ -898,17 +898,18 @@
+@@ -902,17 +902,18 @@
set f [open $src "w"]
puts $f "#include <locale>"
puts $f "#include <cstdio>"
diff --git a/lang/gcc5-aux/files/diff-fortran b/lang/gcc5-aux/files/diff-fortran
index 269950890e9..be542e9b0cb 100644
--- a/lang/gcc5-aux/files/diff-fortran
+++ b/lang/gcc5-aux/files/diff-fortran
@@ -11,7 +11,7 @@
;;
--- libgfortran/configure.orig
+++ libgfortran/configure
-@@ -26447,7 +26447,7 @@
+@@ -26456,7 +26456,7 @@
fi
case "$host" in
@@ -22,7 +22,7 @@
--- gcc/fortran/f95-lang.c.orig
+++ gcc/fortran/f95-lang.c
-@@ -776,10 +776,17 @@
+@@ -777,10 +777,17 @@
gfc_define_builtin ("__builtin_cabsl", func_clongdouble_longdouble,
BUILT_IN_CABSL, "cabsl", ATTR_CONST_NOTHROW_LEAF_LIST);