[Clfs-commits] [Cross-LFS]Cross-LFS Book branch, sysvinit, updated. clfs-3.0.0-sysvinit-234-g8633cac

git git at clfs.org
Mon Dec 28 05:40:53 PST 2015


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Cross-LFS Book".

The branch, sysvinit has been updated
       via  8633cac2c284d448d3654f259f19537da3cf08d1 (commit)
      from  c561eaac237cd41eac635f7031ddd72e4aff3d12 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8633cac2c284d448d3654f259f19537da3cf08d1
Author: William Harrington <kb0iic at berzerkula.org>
Date:   Mon Dec 28 12:43:44 2015 -0600

    GCC 5.3.0 patches renamed.

diff --git a/patches/gcc-5.3.0-pure64-1.patch b/patches/gcc-5.3.0-pure64-1.patch
new file mode 100644
index 0000000..66bb5f4
--- /dev/null
+++ b/patches/gcc-5.3.0-pure64-1.patch
@@ -0,0 +1,1008 @@
+Submitted By: William Harrington <kb0iic at cross-lfs dot org>
+Date: 12-28-2015
+Initial Package Version: 5.2.0
+Origin: Idea originally developed by Ryan Oliver and Greg Schafer for
+        the Pure LFS project with help from
+        Martin Ward
+Upstream Status: Not Applied - CLFS Specific
+Description: This patch makes changes to the paths for pure64, eg 64bit libs
+             in /usr/lib, 32bit in /usr/lib32.
+Comment: Renamed for GCC 5.3.0
+
+diff -Naur gcc-5.1.0.orig/gcc/config/i386/linux64.h gcc-5.1.0/gcc/config/i386/linux64.h
+--- gcc-5.1.0.orig/gcc/config/i386/linux64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/i386/linux64.h	2015-05-04 23:36:11.543831589 +0000
+@@ -27,6 +27,6 @@
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux-x86-64.so.2"
+ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+diff -Naur gcc-5.1.0.orig/gcc/config/i386/t-linux64 gcc-5.1.0/gcc/config/i386/t-linux64
+--- gcc-5.1.0.orig/gcc/config/i386/t-linux64	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/i386/t-linux64	2015-05-04 23:36:11.543831589 +0000
+@@ -33,6 +33,6 @@
+ comma=,
+ MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu)
++MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib32)$(call if_multiarch,:i386-linux-gnu)
+ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
+diff -Naur gcc-5.1.0.orig/gcc/config/linux.h gcc-5.1.0/gcc/config/linux.h
+--- gcc-5.1.0.orig/gcc/config/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/linux.h	2015-05-04 23:36:11.547164681 +0000
+@@ -74,7 +74,7 @@
+    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
+    supporting both 32-bit and 64-bit compilation.  */
+ #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 "/lib32/ld-uClibc.so.0"
+ #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+ #define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
+ #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
+diff -Naur gcc-5.1.0.orig/gcc/config/mips/t-linux64 gcc-5.1.0/gcc/config/mips/t-linux64
+--- gcc-5.1.0.orig/gcc/config/mips/t-linux64	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/mips/t-linux64	2015-05-04 23:36:38.128588557 +0000
+@@ -22,5 +22,5 @@
+ MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
+ MULTILIB_OSDIRNAMES = \
+ 	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
+-	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+-	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++	../lib32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++	../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
+diff -Naur gcc-5.1.0.orig/gcc/config/rs6000/linux64.h gcc-5.1.0/gcc/config/rs6000/linux64.h
+--- gcc-5.1.0.orig/gcc/config/rs6000/linux64.h	2015-03-09 23:18:57.000000000 +0000
++++ gcc-5.1.0/gcc/config/rs6000/linux64.h	2015-05-04 23:36:38.128588557 +0000
+@@ -357,13 +357,13 @@
+ #undef	LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld.so.1"
+ #ifdef LINUX64_DEFAULT_ABI_ELFv2
+-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib64/ld64.so.1;:/lib64/ld64.so.2}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib/ld64.so.1;:/lib/ld64.so.2}"
+ #else
+-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib/ld64.so.2;:/lib/ld64.so.1}"
+ #endif
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 "/lib32/ld-uClibc.so.0"
+ #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+diff -Naur gcc-5.1.0.orig/gcc/config/rs6000/linux64.h.orig gcc-5.1.0/gcc/config/rs6000/linux64.h.orig
+--- gcc-5.1.0.orig/gcc/config/rs6000/linux64.h.orig	1970-01-01 00:00:00.000000000 +0000
++++ gcc-5.1.0/gcc/config/rs6000/linux64.h.orig	2015-03-09 23:18:57.000000000 +0000
+@@ -0,0 +1,562 @@
++/* Definitions of target machine for GNU compiler,
++   for 64 bit PowerPC linux.
++   Copyright (C) 2000-2015 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.
++
++   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/>.  */
++
++#ifndef RS6000_BI_ARCH
++
++#undef	TARGET_64BIT
++#define	TARGET_64BIT 1
++
++#define	DEFAULT_ARCH64_P 1
++#define	RS6000_BI_ARCH_P 0
++
++#else
++
++#define	DEFAULT_ARCH64_P (TARGET_DEFAULT & MASK_64BIT)
++#define	RS6000_BI_ARCH_P 1
++
++#endif
++
++#ifdef IN_LIBGCC2
++#undef TARGET_64BIT
++#ifdef __powerpc64__
++#define TARGET_64BIT 1
++#else
++#define TARGET_64BIT 0
++#endif
++#endif
++
++#undef	TARGET_AIX
++#define	TARGET_AIX TARGET_64BIT
++
++#ifdef HAVE_LD_NO_DOT_SYMS
++/* New ABI uses a local sym for the function entry point.  */
++extern int dot_symbols;
++#undef DOT_SYMBOLS
++#define DOT_SYMBOLS dot_symbols
++#endif
++
++#define TARGET_PROFILE_KERNEL profile_kernel
++
++#define TARGET_USES_LINUX64_OPT 1
++#ifdef HAVE_LD_LARGE_TOC
++#undef TARGET_CMODEL
++#define TARGET_CMODEL rs6000_current_cmodel
++#define SET_CMODEL(opt) rs6000_current_cmodel = opt
++#else
++#define SET_CMODEL(opt) do {} while (0)
++#endif
++
++#undef  PROCESSOR_DEFAULT
++#define PROCESSOR_DEFAULT PROCESSOR_POWER7
++#undef  PROCESSOR_DEFAULT64
++#define PROCESSOR_DEFAULT64 PROCESSOR_POWER8
++
++/* We don't need to generate entries in .fixup, except when
++   -mrelocatable or -mrelocatable-lib is given.  */
++#undef RELOCATABLE_NEEDS_FIXUP
++#define RELOCATABLE_NEEDS_FIXUP \
++  (rs6000_isa_flags & rs6000_isa_flags_explicit & OPTION_MASK_RELOCATABLE)
++
++#undef	RS6000_ABI_NAME
++#define	RS6000_ABI_NAME "linux"
++
++#define INVALID_64BIT "-m%s not supported in this configuration"
++#define INVALID_32BIT INVALID_64BIT
++
++#ifdef LINUX64_DEFAULT_ABI_ELFv2
++#define ELFv2_ABI_CHECK (rs6000_elf_abi != 1)
++#else
++#define ELFv2_ABI_CHECK (rs6000_elf_abi == 2)
++#endif
++
++#undef	SUBSUBTARGET_OVERRIDE_OPTIONS
++#define	SUBSUBTARGET_OVERRIDE_OPTIONS				\
++  do								\
++    {								\
++      if (!global_options_set.x_rs6000_alignment_flags)		\
++	rs6000_alignment_flags = MASK_ALIGN_NATURAL;		\
++      if (rs6000_isa_flags & OPTION_MASK_64BIT)			\
++	{							\
++	  if (DEFAULT_ABI != ABI_AIX)				\
++	    {							\
++	      rs6000_current_abi = ABI_AIX;			\
++	      error (INVALID_64BIT, "call");			\
++	    }							\
++	  dot_symbols = !strcmp (rs6000_abi_name, "aixdesc");	\
++	  if (ELFv2_ABI_CHECK)					\
++	    {							\
++	      rs6000_current_abi = ABI_ELFv2;			\
++	      if (dot_symbols)					\
++		error ("-mcall-aixdesc incompatible with -mabi=elfv2"); \
++	    }							\
++	  if (rs6000_isa_flags & OPTION_MASK_RELOCATABLE)	\
++	    {							\
++	      rs6000_isa_flags &= ~OPTION_MASK_RELOCATABLE;	\
++	      error (INVALID_64BIT, "relocatable");		\
++	    }							\
++	  if (rs6000_isa_flags & OPTION_MASK_EABI)		\
++	    {							\
++	      rs6000_isa_flags &= ~OPTION_MASK_EABI;		\
++	      error (INVALID_64BIT, "eabi");			\
++	    }							\
++	  if (TARGET_PROTOTYPE)					\
++	    {							\
++	      target_prototype = 0;				\
++	      error (INVALID_64BIT, "prototype");		\
++	    }							\
++	  if ((rs6000_isa_flags & OPTION_MASK_POWERPC64) == 0)	\
++	    {							\
++	      rs6000_isa_flags |= OPTION_MASK_POWERPC64;	\
++	      error ("-m64 requires a PowerPC64 cpu");		\
++	    }							\
++	  if ((rs6000_isa_flags_explicit			\
++	       & OPTION_MASK_MINIMAL_TOC) != 0)			\
++	    {							\
++	      if (global_options_set.x_rs6000_current_cmodel	\
++		  && rs6000_current_cmodel != CMODEL_SMALL)	\
++		error ("-mcmodel incompatible with other toc options"); \
++	      SET_CMODEL (CMODEL_SMALL);			\
++	    }							\
++	  else							\
++	    {							\
++	      if (!global_options_set.x_rs6000_current_cmodel)	\
++		SET_CMODEL (CMODEL_MEDIUM);			\
++	      if (rs6000_current_cmodel != CMODEL_SMALL)	\
++		{						\
++		  if (!global_options_set.x_TARGET_NO_FP_IN_TOC) \
++		    TARGET_NO_FP_IN_TOC				\
++		      = rs6000_current_cmodel == CMODEL_MEDIUM;	\
++		  if (!global_options_set.x_TARGET_NO_SUM_IN_TOC) \
++		    TARGET_NO_SUM_IN_TOC = 0;			\
++		}						\
++	    }							\
++	}							\
++      else							\
++	{							\
++	  if (!RS6000_BI_ARCH_P)				\
++	    error (INVALID_32BIT, "32");			\
++	  if (TARGET_PROFILE_KERNEL)				\
++	    {							\
++	      TARGET_PROFILE_KERNEL = 0;			\
++	      error (INVALID_32BIT, "profile-kernel");		\
++	    }							\
++	  if (global_options_set.x_rs6000_current_cmodel)	\
++	    {							\
++	      SET_CMODEL (CMODEL_SMALL);			\
++	      error (INVALID_32BIT, "cmodel");			\
++	    }							\
++	}							\
++    }								\
++  while (0)
++
++#undef	ASM_DEFAULT_SPEC
++#undef	ASM_SPEC
++#undef	LINK_OS_LINUX_SPEC
++
++#ifndef	RS6000_BI_ARCH
++#define	ASM_DEFAULT_SPEC "-mppc64"
++#define	ASM_SPEC	 "%(asm_spec64) %(asm_spec_common)"
++#define	LINK_OS_LINUX_SPEC "%(link_os_linux_spec64)"
++#else
++#if DEFAULT_ARCH64_P
++#define	ASM_DEFAULT_SPEC "-mppc%{!m32:64}"
++#define	ASM_SPEC	 "%{m32:%(asm_spec32)}%{!m32:%(asm_spec64)} %(asm_spec_common)"
++#define	LINK_OS_LINUX_SPEC "%{m32:%(link_os_linux_spec32)}%{!m32:%(link_os_linux_spec64)}"
++#else
++#define	ASM_DEFAULT_SPEC "-mppc%{m64:64}"
++#define	ASM_SPEC	 "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
++#define	LINK_OS_LINUX_SPEC "%{!m64:%(link_os_linux_spec32)}%{m64:%(link_os_linux_spec64)}"
++#endif
++#endif
++
++#define ASM_SPEC32 "-a32 \
++%{mrelocatable} %{mrelocatable-lib} %{fpic|fpie|fPIC|fPIE:-K PIC} \
++%{memb|msdata=eabi: -memb}"
++
++#define ASM_SPEC64 "-a64"
++
++#define ASM_SPEC_COMMON "%(asm_cpu) \
++%{,assembler|,assembler-with-cpp: %{mregnames} %{mno-regnames}}" \
++  ENDIAN_SELECT(" -mbig", " -mlittle", DEFAULT_ASM_ENDIAN)
++
++#undef	SUBSUBTARGET_EXTRA_SPECS
++#define SUBSUBTARGET_EXTRA_SPECS \
++  { "asm_spec_common",		ASM_SPEC_COMMON },			\
++  { "asm_spec32",		ASM_SPEC32 },				\
++  { "asm_spec64",		ASM_SPEC64 },				\
++  { "link_os_linux_spec32",	LINK_OS_LINUX_SPEC32 },			\
++  { "link_os_linux_spec64",	LINK_OS_LINUX_SPEC64 },
++
++#undef	MULTILIB_DEFAULTS
++#if DEFAULT_ARCH64_P
++#define MULTILIB_DEFAULTS { "m64" }
++#else
++#define MULTILIB_DEFAULTS { "m32" }
++#endif
++
++#ifndef RS6000_BI_ARCH
++
++/* 64-bit PowerPC Linux always has a TOC.  */
++#undef  TARGET_TOC
++#define	TARGET_TOC		1
++
++/* Some things from sysv4.h we don't do when 64 bit.  */
++#undef	OPTION_RELOCATABLE
++#define	OPTION_RELOCATABLE	0
++#undef	OPTION_EABI
++#define	OPTION_EABI		0
++#undef	OPTION_PROTOTYPE
++#define	OPTION_PROTOTYPE	0
++#undef RELOCATABLE_NEEDS_FIXUP
++#define RELOCATABLE_NEEDS_FIXUP 0
++
++#endif
++
++/* We use glibc _mcount for profiling.  */
++#define NO_PROFILE_COUNTERS 1
++#define PROFILE_HOOK(LABEL) \
++  do { if (TARGET_64BIT) output_profile_hook (LABEL); } while (0)
++
++/* PowerPC64 Linux word-aligns FP doubles when -malign-power is given.  */
++#undef  ADJUST_FIELD_ALIGN
++#define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \
++  (rs6000_special_adjust_field_align_p ((FIELD), (COMPUTED))		\
++   ? 128								\
++   : (TARGET_64BIT							\
++      && TARGET_ALIGN_NATURAL == 0					\
++      && TYPE_MODE (strip_array_types (TREE_TYPE (FIELD))) == DFmode)	\
++   ? MIN ((COMPUTED), 32)						\
++   : (COMPUTED))
++
++/* PowerPC64 Linux increases natural record alignment to doubleword if
++   the first field is an FP double, only if in power alignment mode.  */
++#undef  ROUND_TYPE_ALIGN
++#define ROUND_TYPE_ALIGN(STRUCT, COMPUTED, SPECIFIED)			\
++  ((TARGET_64BIT							\
++    && (TREE_CODE (STRUCT) == RECORD_TYPE				\
++	|| TREE_CODE (STRUCT) == UNION_TYPE				\
++	|| TREE_CODE (STRUCT) == QUAL_UNION_TYPE)			\
++    && TARGET_ALIGN_NATURAL == 0)					\
++   ? rs6000_special_round_type_align (STRUCT, COMPUTED, SPECIFIED)	\
++   : MAX ((COMPUTED), (SPECIFIED)))
++
++/* Use the default for compiling target libs.  */
++#ifdef IN_TARGET_LIBS
++#undef TARGET_ALIGN_NATURAL
++#define TARGET_ALIGN_NATURAL 1
++#endif
++
++/* Indicate that jump tables go in the text section.  */
++#undef  JUMP_TABLES_IN_TEXT_SECTION
++#define JUMP_TABLES_IN_TEXT_SECTION TARGET_64BIT
++
++/* The linux ppc64 ABI isn't explicit on whether aggregates smaller
++   than a doubleword should be padded upward or downward.  You could
++   reasonably assume that they follow the normal rules for structure
++   layout treating the parameter area as any other block of memory,
++   then map the reg param area to registers.  i.e. pad upward.
++   Setting both of the following defines results in this behavior.
++   Setting just the first one will result in aggregates that fit in a
++   doubleword being padded downward, and others being padded upward.
++   Not a bad idea as this results in struct { int x; } being passed
++   the same way as an int.  */
++#define AGGREGATE_PADDING_FIXED TARGET_64BIT
++#define AGGREGATES_PAD_UPWARD_ALWAYS 0
++
++/* Specify padding for the last element of a block move between
++   registers and memory.  FIRST is nonzero if this is the only
++   element.  */
++#define BLOCK_REG_PADDING(MODE, TYPE, FIRST) \
++  (!(FIRST) ? upward : FUNCTION_ARG_PADDING (MODE, TYPE))
++
++/* Linux doesn't support saving and restoring 64-bit regs in a 32-bit
++   process.  */
++#define OS_MISSING_POWERPC64 !TARGET_64BIT
++
++#ifdef SINGLE_LIBC
++#define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
++#define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
++#define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
++#else
++#define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
++#define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
++#define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
++#endif
++
++/* Determine what functions are present at the runtime;
++   this includes full c99 runtime and sincos.  */
++#undef TARGET_LIBC_HAS_FUNCTION
++#define TARGET_LIBC_HAS_FUNCTION linux_libc_has_function
++
++#undef  TARGET_OS_CPP_BUILTINS
++#define TARGET_OS_CPP_BUILTINS()			\
++  do							\
++    {							\
++      if (TARGET_64BIT)					\
++	{						\
++	  builtin_define ("__PPC__");			\
++	  builtin_define ("__PPC64__");			\
++	  builtin_define ("__powerpc__");		\
++	  builtin_define ("__powerpc64__");		\
++	  if (!DOT_SYMBOLS)				\
++	    builtin_define ("_CALL_LINUX");		\
++	  builtin_assert ("cpu=powerpc64");		\
++	  builtin_assert ("machine=powerpc64");		\
++	}						\
++      else						\
++	{						\
++	  builtin_define_std ("PPC");			\
++	  builtin_define_std ("powerpc");		\
++	  builtin_assert ("cpu=powerpc");		\
++	  builtin_assert ("machine=powerpc");		\
++	  TARGET_OS_SYSV_CPP_BUILTINS ();		\
++	}						\
++    }							\
++  while (0)
++
++#undef  CPP_OS_DEFAULT_SPEC
++#define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)"
++
++#undef  LINK_SHLIB_SPEC
++#define LINK_SHLIB_SPEC "%{shared:-shared} %{!shared: %{static:-static}}"
++
++#undef  LIB_DEFAULT_SPEC
++#define LIB_DEFAULT_SPEC "%(lib_linux)"
++
++#undef  STARTFILE_DEFAULT_SPEC
++#define STARTFILE_DEFAULT_SPEC "%(startfile_linux)"
++
++#undef	ENDFILE_DEFAULT_SPEC
++#define ENDFILE_DEFAULT_SPEC "%(endfile_linux)"
++
++#undef	LINK_START_DEFAULT_SPEC
++#define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
++
++#undef	LINK_OS_DEFAULT_SPEC
++#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
++
++#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#ifdef LINUX64_DEFAULT_ABI_ELFv2
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib64/ld64.so.1;:/lib64/ld64.so.2}"
++#else
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
++#endif
++#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#if DEFAULT_LIBC == LIBC_UCLIBC
++#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
++#elif DEFAULT_LIBC == LIBC_GLIBC
++#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
++#else
++#error "Unsupported DEFAULT_LIBC"
++#endif
++#define GNU_USER_DYNAMIC_LINKER32 \
++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
++#define GNU_USER_DYNAMIC_LINKER64 \
++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
++
++#undef  DEFAULT_ASM_ENDIAN
++#if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++#define DEFAULT_ASM_ENDIAN " -mlittle"
++#define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",		\
++					   " -m elf32lppclinux",	\
++					   " -m elf32lppclinux")
++#define LINK_OS_LINUX_EMUL64 ENDIAN_SELECT(" -m elf64ppc",		\
++					   " -m elf64lppc",		\
++					   " -m elf64lppc")
++#else
++#define DEFAULT_ASM_ENDIAN " -mbig"
++#define LINK_OS_LINUX_EMUL32 ENDIAN_SELECT(" -m elf32ppclinux",		\
++					   " -m elf32lppclinux",	\
++					   " -m elf32ppclinux")
++#define LINK_OS_LINUX_EMUL64 ENDIAN_SELECT(" -m elf64ppc",		\
++					   " -m elf64lppc",		\
++					   " -m elf64ppc")
++#endif
++
++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
++  %{rdynamic:-export-dynamic} \
++  -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}"
++
++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \
++  %{rdynamic:-export-dynamic} \
++  -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}"
++
++#undef  TOC_SECTION_ASM_OP
++#define TOC_SECTION_ASM_OP \
++  (TARGET_64BIT						\
++   ? "\t.section\t\".toc\",\"aw\""			\
++   : "\t.section\t\".got\",\"aw\"")
++
++#undef  MINIMAL_TOC_SECTION_ASM_OP
++#define MINIMAL_TOC_SECTION_ASM_OP \
++  (TARGET_64BIT						\
++   ? "\t.section\t\".toc1\",\"aw\""			\
++   : ((TARGET_RELOCATABLE || flag_pic)			\
++      ? "\t.section\t\".got2\",\"aw\""			\
++      : "\t.section\t\".got1\",\"aw\""))
++
++/* Must be at least as big as our pointer type.  */
++#undef	SIZE_TYPE
++#define	SIZE_TYPE (TARGET_64BIT ? "long unsigned int" : "unsigned int")
++
++#undef	PTRDIFF_TYPE
++#define	PTRDIFF_TYPE (TARGET_64BIT ? "long int" : "int")
++
++#undef	WCHAR_TYPE
++#define	WCHAR_TYPE (TARGET_64BIT ? "int" : "long int")
++#undef  WCHAR_TYPE_SIZE
++#define WCHAR_TYPE_SIZE 32
++
++#undef  RS6000_MCOUNT
++#define RS6000_MCOUNT "_mcount"
++
++#ifdef __powerpc64__
++/* _init and _fini functions are built from bits spread across many
++   object files, each potentially with a different TOC pointer.  For
++   that reason, place a nop after the call so that the linker can
++   restore the TOC pointer if a TOC adjusting call stub is needed.  */
++#if DOT_SYMBOLS
++#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC)	\
++  asm (SECTION_OP "\n"					\
++"	bl ." #FUNC "\n"				\
++"	nop\n"						\
++"	.previous");
++#else
++#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC)	\
++  asm (SECTION_OP "\n"					\
++"	bl " #FUNC "\n"					\
++"	nop\n"						\
++"	.previous");
++#endif
++#endif
++
++/* FP save and restore routines.  */
++#undef  SAVE_FP_PREFIX
++#define SAVE_FP_PREFIX (TARGET_64BIT ? "._savef" : "_savefpr_")
++#undef  SAVE_FP_SUFFIX
++#define SAVE_FP_SUFFIX ""
++#undef  RESTORE_FP_PREFIX
++#define RESTORE_FP_PREFIX (TARGET_64BIT ? "._restf" : "_restfpr_")
++#undef  RESTORE_FP_SUFFIX
++#define RESTORE_FP_SUFFIX ""
++
++/* Dwarf2 debugging.  */
++#undef  PREFERRED_DEBUGGING_TYPE
++#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
++
++/* This is how to declare the size of a function.  */
++#undef	ASM_DECLARE_FUNCTION_SIZE
++#define	ASM_DECLARE_FUNCTION_SIZE(FILE, FNAME, DECL)			\
++  do									\
++    {									\
++      if (!flag_inhibit_size_directive)					\
++	{								\
++	  fputs ("\t.size\t", (FILE));					\
++	  if (TARGET_64BIT && DOT_SYMBOLS)				\
++	    putc ('.', (FILE));						\
++	  assemble_name ((FILE), (FNAME));				\
++	  fputs (",.-", (FILE));					\
++	  rs6000_output_function_entry (FILE, FNAME);			\
++	  putc ('\n', (FILE));						\
++	}								\
++    }									\
++  while (0)
++
++/* Return nonzero if this entry is to be written into the constant
++   pool in a special way.  We do so if this is a SYMBOL_REF, LABEL_REF
++   or a CONST containing one of them.  If -mfp-in-toc (the default),
++   we also do this for floating-point constants.  We actually can only
++   do this if the FP formats of the target and host machines are the
++   same, but we can't check that since not every file that uses
++   the macros includes real.h.  We also do this when we can write the
++   entry into the TOC and the entry is not larger than a TOC entry.  */
++
++#undef  ASM_OUTPUT_SPECIAL_POOL_ENTRY_P
++#define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X, MODE)			\
++  (TARGET_TOC								\
++   && (GET_CODE (X) == SYMBOL_REF					\
++       || (GET_CODE (X) == CONST && GET_CODE (XEXP (X, 0)) == PLUS	\
++	   && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF)		\
++       || GET_CODE (X) == LABEL_REF					\
++       || (GET_CODE (X) == CONST_INT 					\
++	   && GET_MODE_BITSIZE (MODE) <= GET_MODE_BITSIZE (Pmode))	\
++       || (GET_CODE (X) == CONST_DOUBLE					\
++	   && ((TARGET_64BIT						\
++		&& (TARGET_MINIMAL_TOC					\
++		    || (SCALAR_FLOAT_MODE_P (GET_MODE (X))		\
++			&& ! TARGET_NO_FP_IN_TOC)))			\
++	       || (!TARGET_64BIT					\
++		   && !TARGET_NO_FP_IN_TOC				\
++		   && !TARGET_RELOCATABLE				\
++		   && SCALAR_FLOAT_MODE_P (GET_MODE (X))		\
++		   && BITS_PER_WORD == HOST_BITS_PER_INT)))))
++
++/* Select a format to encode pointers in exception handling data.  CODE
++   is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
++   true if the symbol may be affected by dynamic relocations.  */
++#undef	ASM_PREFERRED_EH_DATA_FORMAT
++#define	ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
++  ((TARGET_64BIT || flag_pic || TARGET_RELOCATABLE)			\
++   ? (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel		\
++      | (TARGET_64BIT ? DW_EH_PE_udata8 : DW_EH_PE_sdata4))		\
++   : DW_EH_PE_absptr)
++
++/* For backward compatibility, we must continue to use the AIX
++   structure return convention.  */
++#undef DRAFT_V4_STRUCT_RET
++#define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
++
++#ifdef TARGET_LIBC_PROVIDES_SSP
++/* ppc32 glibc provides __stack_chk_guard in -0x7008(2),
++   ppc64 glibc provides it at -0x7010(13).  */
++#define TARGET_THREAD_SSP_OFFSET	(TARGET_64BIT ? -0x7010 : -0x7008)
++#endif
++
++#define POWERPC_LINUX
++
++/* ppc{32,64} linux has 128-bit long double support in glibc 2.4 and later.  */
++#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
++#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
++#endif
++
++/* Static stack checking is supported by means of probes.  */
++#define STACK_CHECK_STATIC_BUILTIN 1
++
++/* The default value isn't sufficient in 64-bit mode.  */
++#define STACK_CHECK_PROTECT (TARGET_64BIT ? 16 * 1024 : 12 * 1024)
++
++/* Software floating point support for exceptions and rounding modes
++   depends on the C library in use.  */
++#undef TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P
++#define TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P \
++  rs6000_linux_float_exceptions_rounding_supported_p
++
++/* Support for TARGET_ATOMIC_ASSIGN_EXPAND_FENV without FPRs depends
++   on glibc 2.19 or greater.  */
++#if TARGET_GLIBC_MAJOR > 2 \
++  || (TARGET_GLIBC_MAJOR == 2 && TARGET_GLIBC_MINOR >= 19)
++#define RS6000_GLIBC_ATOMIC_FENV 1
++#endif
+diff -Naur gcc-5.1.0.orig/gcc/config/rs6000/t-linux64 gcc-5.1.0/gcc/config/rs6000/t-linux64
+--- gcc-5.1.0.orig/gcc/config/rs6000/t-linux64	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/rs6000/t-linux64	2015-05-04 23:36:38.128588557 +0000
+@@ -28,8 +28,8 @@
+ MULTILIB_OPTIONS    := m64/m32
+ MULTILIB_DIRNAMES   := 64 32
+ MULTILIB_EXTRA_OPTS := 
+-MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu)
++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu)
++MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib32)$(call if_multiarch,:powerpc-linux-gnu)
+ 
+ rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
+ 	$(COMPILE) $<
+diff -Naur gcc-5.1.0.orig/gcc/config/s390/linux.h gcc-5.1.0/gcc/config/s390/linux.h
+--- gcc-5.1.0.orig/gcc/config/s390/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/s390/linux.h	2015-05-04 23:36:38.131921640 +0000
+@@ -60,7 +60,7 @@
+ #define MULTILIB_DEFAULTS { "m31" }
+ #endif
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld.so.1"
+ #define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
+ 
+ #undef  LINK_SPEC
+diff -Naur gcc-5.1.0.orig/gcc/config/s390/t-linux64 gcc-5.1.0/gcc/config/s390/t-linux64
+--- gcc-5.1.0.orig/gcc/config/s390/t-linux64	2012-11-21 16:13:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/s390/t-linux64	2015-05-04 23:36:38.131921640 +0000
+@@ -7,5 +7,5 @@
+ 
+ MULTILIB_OPTIONS = m64/m31
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu)
+-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu)
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu)
++MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib32)$(call if_multiarch,:s390-linux-gnu)
+diff -Naur gcc-5.1.0.orig/gcc/config/sparc/linux.h gcc-5.1.0/gcc/config/sparc/linux.h
+--- gcc-5.1.0.orig/gcc/config/sparc/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/sparc/linux.h	2015-05-04 23:36:38.131921640 +0000
+@@ -83,7 +83,7 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/lib32/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
+diff -Naur gcc-5.1.0.orig/gcc/config/sparc/linux64.h gcc-5.1.0/gcc/config/sparc/linux64.h
+--- gcc-5.1.0.orig/gcc/config/sparc/linux64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/sparc/linux64.h	2015-05-04 23:36:38.131921640 +0000
+@@ -84,8 +84,8 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/lib32/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-linux.so.2"
+ 
+ #ifdef SPARC_BI_ARCH
+ 
+@@ -193,7 +193,7 @@
+ #else /* !SPARC_BI_ARCH */
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
++#define LINK_SPEC "-m elf64_sparc -Y P,%R/lib %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+diff -Naur gcc-5.1.0.orig/gcc/config/sparc/linux64.h.orig gcc-5.1.0/gcc/config/sparc/linux64.h.orig
+--- gcc-5.1.0.orig/gcc/config/sparc/linux64.h.orig	1970-01-01 00:00:00.000000000 +0000
++++ gcc-5.1.0/gcc/config/sparc/linux64.h.orig	2015-01-05 12:33:28.000000000 +0000
+@@ -0,0 +1,276 @@
++/* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF.
++   Copyright (C) 1996-2015 Free Software Foundation, Inc.
++   Contributed by David S. Miller (davem at caip.rutgers.edu)
++
++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/>.  */
++
++#define TARGET_OS_CPP_BUILTINS()		\
++  do						\
++    {						\
++      GNU_USER_TARGET_OS_CPP_BUILTINS();	\
++      if (TARGET_ARCH64)			\
++        builtin_define ("_LONGLONG");		\
++      if (TARGET_ARCH32				\
++          && TARGET_LONG_DOUBLE_128)		\
++	builtin_define ("__LONG_DOUBLE_128__");	\
++    }						\
++  while (0)
++
++/* On Linux, the combination sparc64-* --with-cpu=v8 is supported and
++   selects a 32-bit compiler.  */
++#if defined(TARGET_64BIT_DEFAULT) && TARGET_CPU_DEFAULT >= TARGET_CPU_v9
++#undef TARGET_DEFAULT
++#define TARGET_DEFAULT \
++  (MASK_V9 + MASK_PTR64 + MASK_64BIT + MASK_STACK_BIAS + \
++   MASK_APP_REGS + MASK_FPU + MASK_LONG_DOUBLE_128)
++#endif
++
++/* This must be v9a not just v9 because by default we enable
++   -mvis.  */
++#undef ASM_CPU64_DEFAULT_SPEC
++#define ASM_CPU64_DEFAULT_SPEC "-Av9a"
++
++/* Provide a ENDFILE_SPEC appropriate for GNU/Linux.  Here we tack on
++   the GNU/Linux magical crtend.o file (see crtstuff.c) which
++   provides part of the support for getting C++ file-scope static
++   object constructed before entering `main', followed by a normal
++   GNU/Linux "finalizer" file, `crtn.o'.  */
++
++#undef	ENDFILE_SPEC
++#define ENDFILE_SPEC \
++  "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s\
++   %{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
++
++/* The default code model.  */
++#undef SPARC_DEFAULT_CMODEL
++#define SPARC_DEFAULT_CMODEL CM_MEDLOW
++
++#undef WCHAR_TYPE
++#define WCHAR_TYPE "int"
++
++#undef WCHAR_TYPE_SIZE
++#define WCHAR_TYPE_SIZE 32
++
++/* Define for support of TFmode long double.
++   SPARC ABI says that long double is 4 words.  */
++#undef LONG_DOUBLE_TYPE_SIZE
++#define LONG_DOUBLE_TYPE_SIZE (TARGET_LONG_DOUBLE_128 ? 128 : 64)
++
++#undef CPP_SUBTARGET_SPEC
++#define CPP_SUBTARGET_SPEC "\
++%{posix:-D_POSIX_SOURCE} \
++%{pthread:-D_REENTRANT} \
++"
++
++/* Provide a LINK_SPEC appropriate for GNU/Linux.  Here we provide support
++   for the special GCC options -static and -shared, which allow us to
++   link things in one of these three modes by applying the appropriate
++   combinations of options at link-time.
++
++   When the -shared link option is used a final link is not being
++   done.  */
++
++#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++
++#ifdef SPARC_BI_ARCH
++
++#undef SUBTARGET_EXTRA_SPECS
++#define SUBTARGET_EXTRA_SPECS \
++  { "link_arch32",       LINK_ARCH32_SPEC },              \
++  { "link_arch64",       LINK_ARCH64_SPEC },              \
++  { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
++  { "link_arch",	 LINK_ARCH_SPEC },
++
++#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "} \
++      %{static:-static}} \
++"
++
++#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "} \
++      %{static:-static}} \
++"
++
++#define LINK_ARCH_SPEC "\
++%{m32:%(link_arch32)} \
++%{m64:%(link_arch64)} \
++%{!m32:%{!m64:%(link_arch_default)}} \
++"
++
++#define LINK_ARCH_DEFAULT_SPEC \
++(DEFAULT_ARCH32_P ? LINK_ARCH32_SPEC : LINK_ARCH64_SPEC)
++
++#undef  LINK_SPEC
++#define LINK_SPEC "\
++%(link_arch) \
++%{!mno-relax:%{!r:-relax}} \
++"
++
++/* -mcpu=native handling only makes sense with compiler running on
++   a SPARC chip.  */
++#if defined(__sparc__) && defined(__linux__)
++extern const char *host_detect_local_cpu (int argc, const char **argv);
++# define EXTRA_SPEC_FUNCTIONS						\
++  { "local_cpu_detect", host_detect_local_cpu },
++
++# define MCPU_MTUNE_NATIVE_SPECS					\
++   " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"		\
++   " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
++#else
++# define MCPU_MTUNE_NATIVE_SPECS ""
++#endif
++
++#define DRIVER_SELF_SPECS MCPU_MTUNE_NATIVE_SPECS
++
++#undef	CC1_SPEC
++#if DEFAULT_ARCH32_P
++#define CC1_SPEC "%{profile:-p} \
++%{m32:%{m64:%emay not use both -m32 and -m64}} \
++%{m64:-mptr64 -mstack-bias -mlong-double-128 \
++  %{!mcpu*:-mcpu=ultrasparc} \
++  %{!mno-vis:%{!mcpu=v9:-mvis}}} \
++"
++#else
++#define CC1_SPEC "%{profile:-p} \
++%{m32:%{m64:%emay not use both -m32 and -m64}} \
++%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \
++  %{!mcpu*:-mcpu=cypress}} \
++%{mv8plus:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \
++  %{!mcpu*:-mcpu=v9}} \
++%{!m32:%{!mcpu*:-mcpu=ultrasparc}} \
++%{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}} \
++"
++#endif
++
++/* Support for a compile-time default CPU, et cetera.  The rules are:
++   --with-cpu is ignored if -mcpu is specified.
++   --with-tune is ignored if -mtune is specified.
++   --with-float is ignored if -mhard-float, -msoft-float, -mfpu, or -mno-fpu
++     are specified.
++   In the SPARC_BI_ARCH compiler we cannot pass %{!mcpu=*:-mcpu=%(VALUE)}
++   here, otherwise say -mcpu=v7 would be passed even when -m64.
++   CC1_SPEC above takes care of this instead.  */
++#undef OPTION_DEFAULT_SPECS
++#if DEFAULT_ARCH32_P
++#define OPTION_DEFAULT_SPECS \
++  {"cpu", "%{!m64:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
++  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
++  {"float", "%{!msoft-float:%{!mhard-float:%{!mfpu:%{!mno-fpu:-m%(VALUE)-float}}}}" }
++#else
++#define OPTION_DEFAULT_SPECS \
++  {"cpu", "%{!m32:%{!mcpu=*:-mcpu=%(VALUE)}}" }, \
++  {"tune", "%{!mtune=*:-mtune=%(VALUE)}" }, \
++  {"float", "%{!msoft-float:%{!mhard-float:%{!mfpu:%{!mno-fpu:-m%(VALUE)-float}}}}" }
++#endif
++
++#if DEFAULT_ARCH32_P
++#define MULTILIB_DEFAULTS { "m32" }
++#else
++#define MULTILIB_DEFAULTS { "m64" }
++#endif
++
++#else /* !SPARC_BI_ARCH */
++
++#undef LINK_SPEC
++#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "} \
++    %{static:-static}} \
++%{!mno-relax:%{!r:-relax}} \
++"
++
++#endif /* !SPARC_BI_ARCH */
++
++/* It's safe to pass -s always, even if -g is not used.  */
++#undef ASM_SPEC
++#define ASM_SPEC "\
++-s \
++%{fpic|fPIC|fpie|fPIE:-K PIC} \
++%{!.c:%{findirect-dispatch:-K PIC}} \
++%(asm_cpu) %(asm_arch) %(asm_relax)"
++
++#undef ASM_OUTPUT_ALIGNED_LOCAL
++#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
++do {									\
++  fputs ("\t.local\t", (FILE));		\
++  assemble_name ((FILE), (NAME));					\
++  putc ('\n', (FILE));							\
++  ASM_OUTPUT_ALIGNED_COMMON (FILE, NAME, SIZE, ALIGN);			\
++} while (0)
++
++#undef COMMON_ASM_OP
++#define COMMON_ASM_OP "\t.common\t"
++
++#undef  LOCAL_LABEL_PREFIX
++#define LOCAL_LABEL_PREFIX  "."
++
++/* DWARF bits.  */
++
++/* Follow Irix 6 and not the Dwarf2 draft in using 64-bit offsets. 
++   Obviously the Dwarf2 folks haven't tried to actually build systems
++   with their spec.  On a 64-bit system, only 64-bit relocs become
++   RELATIVE relocations.  */
++
++/* #define DWARF_OFFSET_SIZE PTR_SIZE */
++
++#undef DITF_CONVERSION_LIBFUNCS
++#define DITF_CONVERSION_LIBFUNCS 1
++
++#ifdef HAVE_AS_TLS
++#undef TARGET_SUN_TLS
++#undef TARGET_GNU_TLS
++#define TARGET_SUN_TLS 0
++#define TARGET_GNU_TLS 1
++#endif
++
++/* We use GNU ld so undefine this so that attribute((init_priority)) works.  */
++#undef CTORS_SECTION_ASM_OP
++#undef DTORS_SECTION_ASM_OP
++
++/* Static stack checking is supported by means of probes.  */
++#define STACK_CHECK_STATIC_BUILTIN 1
++
++/* Linux currently uses RMO in uniprocessor mode, which is equivalent to
++   TMO, and TMO in multiprocessor mode.  But they reserve the right to
++   change their minds.  */
++#undef SPARC_RELAXED_ORDERING
++#define SPARC_RELAXED_ORDERING true
++
++#undef NEED_INDICATE_EXEC_STACK
++#define NEED_INDICATE_EXEC_STACK 1
++
++#ifdef TARGET_LIBC_PROVIDES_SSP
++/* sparc glibc provides __stack_chk_guard in [%g7 + 0x14],
++   sparc64 glibc provides it at [%g7 + 0x28].  */
++#define TARGET_THREAD_SSP_OFFSET	(TARGET_ARCH64 ? 0x28 : 0x14)
++#endif
++
++/* Define if long doubles should be mangled as 'g'.  */
++#define TARGET_ALTERNATE_LONG_DOUBLE_MANGLING
++
++/* We use glibc _mcount for profiling.  */
++#undef NO_PROFILE_COUNTERS
++#define NO_PROFILE_COUNTERS	1
+diff -Naur gcc-5.1.0.orig/gcc/config/sparc/t-linux64 gcc-5.1.0/gcc/config/sparc/t-linux64
+--- gcc-5.1.0.orig/gcc/config/sparc/t-linux64	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.1.0/gcc/config/sparc/t-linux64	2015-05-04 23:36:38.135254715 +0000
+@@ -25,5 +25,5 @@
+ 
+ MULTILIB_OPTIONS = m64/m32
+ MULTILIB_DIRNAMES = 64 32
+-MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu)
+-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu)
++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu)
++MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib32)$(call if_multiarch,:sparc-linux-gnu)
diff --git a/patches/gcc-5.3.0-pure64_specs-1.patch b/patches/gcc-5.3.0-pure64_specs-1.patch
new file mode 100644
index 0000000..3c5d977
--- /dev/null
+++ b/patches/gcc-5.3.0-pure64_specs-1.patch
@@ -0,0 +1,678 @@
+Submitted By: William Harrington <kb0iic at cross-lfs dot org>
+Date: 12-28-2015
+Initial Package Version: 5.1.0
+Origin: Idea originally developed by Ryan Oliver and Greg Schafer for
+        the Pure LFS project with help from
+        Martin Ward <macros_the_black at ntlworld.com>
+Upstream Status: Not Applied - CLFS Specific
+Description: This patch makes changes to the paths for pure64, eg 64bit libs
+             in /usr/lib, 32bit in /usr/lib32.
+Comment: Renamed for GCC 5.3.0
+
+diff -Naur gcc-5.2.0.orig/gcc/config/aarch64/aarch64-linux.h gcc-5.2.0/gcc/config/aarch64/aarch64-linux.h
+--- gcc-5.2.0.orig/gcc/config/aarch64/aarch64-linux.h	2015-05-12 08:49:59.000000000 +0000
++++ gcc-5.2.0/gcc/config/aarch64/aarch64-linux.h	2015-08-16 03:06:42.658145312 +0000
+@@ -21,7 +21,7 @@
+ #ifndef GCC_AARCH64_LINUX_H
+ #define GCC_AARCH64_LINUX_H
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef  ASAN_CC1_SPEC
+ #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
+diff -Naur gcc-5.2.0.orig/gcc/config/alpha/linux-elf.h gcc-5.2.0/gcc/config/alpha/linux-elf.h
+--- gcc-5.2.0.orig/gcc/config/alpha/linux-elf.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/alpha/linux-elf.h	2015-08-16 03:06:42.658145312 +0000
+@@ -23,8 +23,8 @@
+ #define EXTRA_SPECS \
+ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+ 
+-#define GLIBC_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER	"/tools/lib/ld-linux.so.2"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif DEFAULT_LIBC == LIBC_GLIBC
+diff -Naur gcc-5.2.0.orig/gcc/config/arm/linux-eabi.h gcc-5.2.0/gcc/config/arm/linux-eabi.h
+--- gcc-5.2.0.orig/gcc/config/arm/linux-eabi.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/arm/linux-eabi.h	2015-08-16 03:06:42.658145312 +0000
+@@ -68,8 +68,8 @@
+    GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
+ 
+ #undef  GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+-#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/tools/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/tools/lib/ld-linux-armhf.so.3"
+ #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
+ 
+ #define GLIBC_DYNAMIC_LINKER \
+diff -Naur gcc-5.2.0.orig/gcc/config/arm/linux-elf.h gcc-5.2.0/gcc/config/arm/linux-elf.h
+--- gcc-5.2.0.orig/gcc/config/arm/linux-elf.h	2015-06-23 09:26:54.000000000 +0000
++++ gcc-5.2.0/gcc/config/arm/linux-elf.h	2015-08-16 03:06:42.658145312 +0000
+@@ -62,7 +62,7 @@
+ 
+ #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #define LINUX_TARGET_LINK_SPEC  "%{h*} \
+    %{static:-Bstatic} \
+diff -Naur gcc-5.2.0.orig/gcc/config/bfin/linux.h gcc-5.2.0/gcc/config/bfin/linux.h
+--- gcc-5.2.0.orig/gcc/config/bfin/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/bfin/linux.h	2015-08-16 03:06:42.658145312 +0000
+@@ -45,7 +45,7 @@
+   %{shared:-G -Bdynamic} \
+   %{!shared: %{!static: \
+    %{rdynamic:-export-dynamic} \
+-   -dynamic-linker /lib/ld-uClibc.so.0} \
++   -dynamic-linker /tools/lib/ld-uClibc.so.0} \
+    %{static}} -init __init -fini __fini"
+ 
+ #undef TARGET_SUPPORTS_SYNC_CALLS
+diff -Naur gcc-5.2.0.orig/gcc/config/c6x/uclinux-elf.h gcc-5.2.0/gcc/config/c6x/uclinux-elf.h
+--- gcc-5.2.0.orig/gcc/config/c6x/uclinux-elf.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/c6x/uclinux-elf.h	2015-08-16 03:06:42.661478408 +0000
+@@ -36,7 +36,7 @@
+ #define STARTFILE_SPEC \
+   "%{!shared:crt1%O%s} crti%O%s %{shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
+ 
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC ENDIAN_LINK_SPEC \
+diff -Naur gcc-5.2.0.orig/gcc/config/cris/linux.h gcc-5.2.0/gcc/config/cris/linux.h
+--- gcc-5.2.0.orig/gcc/config/cris/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/cris/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -102,7 +102,7 @@
+ #undef CRIS_DEFAULT_CPU_VERSION
+ #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef CRIS_LINK_SUBTARGET_SPEC
+ #define CRIS_LINK_SUBTARGET_SPEC \
+diff -Naur gcc-5.2.0.orig/gcc/config/freebsd-spec.h gcc-5.2.0/gcc/config/freebsd-spec.h
+--- gcc-5.2.0.orig/gcc/config/freebsd-spec.h	2015-06-25 17:53:14.000000000 +0000
++++ gcc-5.2.0/gcc/config/freebsd-spec.h	2015-08-16 03:06:42.661478408 +0000
+@@ -131,7 +131,7 @@
+ #if FBSD_MAJOR < 6
+ #define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
+ #else
+-#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
++#define FBSD_DYNAMIC_LINKER "/tools/libexec/ld-elf.so.1"
+ #endif
+ 
+ /* NOTE: The freebsd-spec.h header is included also for various
+diff -Naur gcc-5.2.0.orig/gcc/config/freebsd-spec.h.orig gcc-5.2.0/gcc/config/freebsd-spec.h.orig
+--- gcc-5.2.0.orig/gcc/config/freebsd-spec.h.orig	1970-01-01 00:00:00.000000000 +0000
++++ gcc-5.2.0/gcc/config/freebsd-spec.h.orig	2015-06-25 17:53:14.000000000 +0000
+@@ -0,0 +1,139 @@
++/* Base configuration file for all FreeBSD targets.
++   Copyright (C) 1999-2015 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.
++
++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/>.  */
++
++/* Common FreeBSD configuration. 
++   All FreeBSD architectures should include this file, which will specify
++   their commonalities.
++   Adapted from gcc/config/freebsd.h by 
++   David O'Brien <obrien at FreeBSD.org>
++   Loren J. Rittle <ljrittle at acm.org>.  */
++
++
++/* In case we need to know.  */
++#define USING_CONFIG_FREEBSD_SPEC 1
++
++#define FBSD_TARGET_OS_CPP_BUILTINS()					\
++  do									\
++    {									\
++	builtin_define_with_int_value ("__FreeBSD__", FBSD_MAJOR);	\
++	builtin_define_std ("unix");					\
++	builtin_define ("__KPRINTF_ATTRIBUTE__");		       	\
++	builtin_assert ("system=unix");					\
++	builtin_assert ("system=bsd");					\
++	builtin_assert ("system=FreeBSD");				\
++	FBSD_TARGET_CPU_CPP_BUILTINS();					\
++    }									\
++  while (0)
++
++/* Define the default FreeBSD-specific per-CPU hook code.  */
++#define FBSD_TARGET_CPU_CPP_BUILTINS() do {} while (0)
++
++/* Provide a CPP_SPEC appropriate for FreeBSD.  We just deal with the GCC 
++   option `-posix', and PIC issues.  */
++
++#define FBSD_CPP_SPEC "							\
++  %(cpp_cpu)								\
++  %(cpp_arch)								\
++  %{posix:-D_POSIX_SOURCE}"
++
++/* Provide a STARTFILE_SPEC appropriate for FreeBSD.  Here we add
++   the magical crtbegin.o file (see crtstuff.c) which provides part 
++	of the support for getting C++ file-scope static object constructed 
++	before entering `main'.  */
++   
++#define FBSD_STARTFILE_SPEC \
++  "%{!shared: \
++     %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \
++		       %{!p:%{profile:gcrt1.o%s} \
++			 %{!profile: \
++                            %{pie: Scrt1.o%s;:crt1.o%s}}}}} \
++   crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
++
++/* Provide a ENDFILE_SPEC appropriate for FreeBSD.  Here we tack on
++   the magical crtend.o file (see crtstuff.c) which provides part of 
++	the support for getting C++ file-scope static object constructed 
++	before entering `main', followed by a normal "finalizer" file, 
++	`crtn.o'.  */
++
++#define FBSD_ENDFILE_SPEC \
++  "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
++
++/* Provide a LIB_SPEC appropriate for FreeBSD as configured and as
++   required by the user-land thread model.  Before __FreeBSD_version
++   500016, select the appropriate libc, depending on whether we're
++   doing profiling or need threads support.  At __FreeBSD_version
++   500016 and later, when threads support is requested include both
++   -lc and the threading lib instead of only -lc_r.  To make matters
++   interesting, we can't actually use __FreeBSD_version provided by
++   <osreldate.h> directly since it breaks cross-compiling.  As a final
++   twist, make it a hard error if -pthread is provided on the command
++   line and gcc was configured with --disable-threads (this will help
++   avoid bug reports from users complaining about threading when they
++   misconfigured the gcc bootstrap but are later consulting FreeBSD
++   manual pages that refer to the mythical -pthread option).  */
++
++/* Provide a LIB_SPEC appropriate for FreeBSD.  Just select the appropriate
++   libc, depending on whether we're doing profiling or need threads support.
++   (similar to the default, except no -lg, and no -p).  */
++
++#ifdef FBSD_NO_THREADS
++#define FBSD_LIB_SPEC "							\
++  %{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \
++is built with the --enable-threads configure-time option.}		\
++  %{!shared:								\
++    %{!pg: -lc}								\
++    %{pg:  -lc_p}							\
++  }"
++#else
++#if FBSD_MAJOR < 5
++#define FBSD_LIB_SPEC "							\
++  %{!shared:								\
++    %{!pg:								\
++      %{!pthread:-lc}							\
++      %{pthread:-lc_r}}							\
++    %{pg:								\
++      %{!pthread:-lc_p}							\
++      %{pthread:-lc_r_p}}						\
++  }"
++#else
++#define FBSD_LIB_SPEC "							\
++  %{!shared:								\
++    %{!pg: %{pthread:-lpthread} -lc}					\
++    %{pg:  %{pthread:-lpthread_p} -lc_p}				\
++  }									\
++  %{shared:								\
++    %{pthread:-lpthread} -lc						\
++  }"
++#endif
++#endif
++
++#if FBSD_MAJOR < 6
++#define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
++#else
++#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
++#endif
++
++/* NOTE: The freebsd-spec.h header is included also for various
++   non-FreeBSD powerpc targets, thus it should never define macros
++   other than FBSD_* prefixed ones, or USING_CONFIG_FREEBSD_SPEC.  */
+diff -Naur gcc-5.2.0.orig/gcc/config/frv/linux.h gcc-5.2.0/gcc/config/frv/linux.h
+--- gcc-5.2.0.orig/gcc/config/frv/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/frv/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -34,7 +34,7 @@
+ #define ENDFILE_SPEC \
+   "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/gnu.h gcc-5.2.0/gcc/config/i386/gnu.h
+--- gcc-5.2.0.orig/gcc/config/i386/gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/gnu.h	2015-08-16 03:06:42.661478408 +0000
+@@ -22,7 +22,7 @@
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+-#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so"
++#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so"
+ 
+ #undef	STARTFILE_SPEC
+ #if defined HAVE_LD_PIE
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu.h gcc-5.2.0/gcc/config/i386/kfreebsd-gnu.h
+--- gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/kfreebsd-gnu.h	2015-08-16 03:06:42.661478408 +0000
+@@ -19,4 +19,4 @@
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define GNU_USER_LINK_EMULATION "elf_i386_fbsd"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu64.h gcc-5.2.0/gcc/config/i386/kfreebsd-gnu64.h
+--- gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/kfreebsd-gnu64.h	2015-08-16 03:06:42.661478408 +0000
+@@ -22,6 +22,6 @@
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64_fbsd"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
+-#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-kfreebsd-x32.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib/ld-kfreebsd-x86-64.so.1"
++#define GLIBC_DYNAMIC_LINKERX32 "/tools/lib/ld-kfreebsd-x32.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/linux.h gcc-5.2.0/gcc/config/i386/linux.h
+--- gcc-5.2.0.orig/gcc/config/i386/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -20,4 +20,4 @@
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/linux64.h gcc-5.2.0/gcc/config/i386/linux64.h
+--- gcc-5.2.0.orig/gcc/config/i386/linux64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/linux64.h	2015-08-16 03:06:42.661478408 +0000
+@@ -27,6 +27,6 @@
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+-#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib32/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib/ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKERX32 "/tools/libx32/ld-linux-x32.so.2"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/t-linux64 gcc-5.2.0/gcc/config/i386/t-linux64
+--- gcc-5.2.0.orig/gcc/config/i386/t-linux64	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/t-linux64	2015-08-16 03:06:42.661478408 +0000
+@@ -33,6 +33,6 @@
+ comma=,
+ MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
+ MULTILIB_DIRNAMES   = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
+-MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu)
+-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu)
++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu)
++MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib32)$(call if_multiarch,:i386-linux-gnu)
+ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
+diff -Naur gcc-5.2.0.orig/gcc/config/ia64/linux.h gcc-5.2.0/gcc/config/ia64/linux.h
+--- gcc-5.2.0.orig/gcc/config/ia64/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/ia64/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -55,7 +55,7 @@
+ /* Define this for shared library support because it isn't in the main
+    linux.h file.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -Naur gcc-5.2.0.orig/gcc/config/knetbsd-gnu.h gcc-5.2.0/gcc/config/knetbsd-gnu.h
+--- gcc-5.2.0.orig/gcc/config/knetbsd-gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/knetbsd-gnu.h	2015-08-16 03:06:42.661478408 +0000
+@@ -32,4 +32,4 @@
+ 
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+-#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/kopensolaris-gnu.h gcc-5.2.0/gcc/config/kopensolaris-gnu.h
+--- gcc-5.2.0.orig/gcc/config/kopensolaris-gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/kopensolaris-gnu.h	2015-08-16 03:06:42.661478408 +0000
+@@ -31,4 +31,4 @@
+   while (0)
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+-#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/linux.h gcc-5.2.0/gcc/config/linux.h
+--- gcc-5.2.0.orig/gcc/config/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -73,10 +73,10 @@
+    GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
+    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
+    supporting both 32-bit and 64-bit compilation.  */
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 "/tools/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKERX32 "/tools/lib/ldx32-uClibc.so.0"
+ #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
+diff -Naur gcc-5.2.0.orig/gcc/config/lm32/uclinux-elf.h gcc-5.2.0/gcc/config/lm32/uclinux-elf.h
+--- gcc-5.2.0.orig/gcc/config/lm32/uclinux-elf.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/lm32/uclinux-elf.h	2015-08-16 03:06:42.661478408 +0000
+@@ -67,7 +67,7 @@
+    %{shared:-shared} \
+    %{symbolic:-Bsymbolic} \
+    %{rdynamic:-export-dynamic} \
+-   -dynamic-linker /lib/ld-linux.so.2"
++   -dynamic-linker /tools/lib/ld-linux.so.2"
+ 
+ #define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
+ 
+diff -Naur gcc-5.2.0.orig/gcc/config/m32r/linux.h gcc-5.2.0/gcc/config/m32r/linux.h
+--- gcc-5.2.0.orig/gcc/config/m32r/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/m32r/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -37,7 +37,7 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #undef	LINK_SPEC
+ #if TARGET_LITTLE_ENDIAN
+diff -Naur gcc-5.2.0.orig/gcc/config/m68k/linux.h gcc-5.2.0/gcc/config/m68k/linux.h
+--- gcc-5.2.0.orig/gcc/config/m68k/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/m68k/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -71,7 +71,7 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "-m m68kelf %{shared} \
+diff -Naur gcc-5.2.0.orig/gcc/config/microblaze/linux.h gcc-5.2.0/gcc/config/microblaze/linux.h
+--- gcc-5.2.0.orig/gcc/config/microblaze/linux.h	2015-05-28 14:08:19.000000000 +0000
++++ gcc-5.2.0/gcc/config/microblaze/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -28,7 +28,7 @@
+ #undef TLS_NEEDS_GOT
+ #define TLS_NEEDS_GOT 1
+ 
+-#define DYNAMIC_LINKER "/lib/ld.so.1"
++#define DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ #undef  SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS \
+   { "dynamic_linker", DYNAMIC_LINKER }
+diff -Naur gcc-5.2.0.orig/gcc/config/microblaze/linux.h.orig gcc-5.2.0/gcc/config/microblaze/linux.h.orig
+--- gcc-5.2.0.orig/gcc/config/microblaze/linux.h.orig	1970-01-01 00:00:00.000000000 +0000
++++ gcc-5.2.0/gcc/config/microblaze/linux.h.orig	2015-05-28 14:08:19.000000000 +0000
+@@ -0,0 +1,48 @@
++/* Definitions for MicroBlaze running Linux.
++   Copyright (C) 2009-2015 Free Software Foundation, Inc.
++
++   This file is part of GCC.
++
++   Contributed by Michael Eager <eager at eagercon.com>.
++
++   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/>.  */
++
++#undef TARGET_SUPPORTS_PIC
++#define TARGET_SUPPORTS_PIC 1
++
++#undef CPP_SPEC
++#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
++
++#undef TLS_NEEDS_GOT
++#define TLS_NEEDS_GOT 1
++
++#define DYNAMIC_LINKER "/lib/ld.so.1"
++#undef  SUBTARGET_EXTRA_SPECS
++#define SUBTARGET_EXTRA_SPECS \
++  { "dynamic_linker", DYNAMIC_LINKER }
++
++#undef LINK_SPEC
++#define LINK_SPEC "%{shared:-shared} \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      -dynamic-linker %(dynamic_linker)} \
++    %{static:-static}} \
++  %{mbig-endian:-EB} \
++  %{mlittle-endian:-EL}"
++
++/* For the microblaze-*-linux* subtarget.  */
++#undef TARGET_OS_CPP_BUILTINS
++#define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
+diff -Naur gcc-5.2.0.orig/gcc/config/mn10300/linux.h gcc-5.2.0/gcc/config/mn10300/linux.h
+--- gcc-5.2.0.orig/gcc/config/mn10300/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/mn10300/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -32,7 +32,7 @@
+ #undef  ASM_SPEC
+ #define ASM_SPEC ""
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
+diff -Naur gcc-5.2.0.orig/gcc/config/nios2/linux.h gcc-5.2.0/gcc/config/nios2/linux.h
+--- gcc-5.2.0.orig/gcc/config/nios2/linux.h	2015-05-28 14:08:37.000000000 +0000
++++ gcc-5.2.0/gcc/config/nios2/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -29,7 +29,7 @@
+ #undef CPP_SPEC
+ #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux-nios2.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC LINK_SPEC_ENDIAN \
+diff -Naur gcc-5.2.0.orig/gcc/config/nios2/linux.h.orig gcc-5.2.0/gcc/config/nios2/linux.h.orig
+--- gcc-5.2.0.orig/gcc/config/nios2/linux.h.orig	1970-01-01 00:00:00.000000000 +0000
++++ gcc-5.2.0/gcc/config/nios2/linux.h.orig	2015-05-28 14:08:37.000000000 +0000
+@@ -0,0 +1,46 @@
++/* Definitions of target support for Altera Nios II systems
++   running GNU/Linux with ELF format.
++   Copyright (C) 2012-2015 Free Software Foundation, Inc.
++   Contributed by Mentor Graphics, 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/>.  */
++
++#define TARGET_OS_CPP_BUILTINS()                \
++  do                                            \
++    {                                           \
++      GNU_USER_TARGET_OS_CPP_BUILTINS();           \
++    }                                           \
++  while (0)
++
++#undef CPP_SPEC
++#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
++
++#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
++
++#undef LINK_SPEC
++#define LINK_SPEC LINK_SPEC_ENDIAN \
++ "%{shared:-shared} \
++  %{!shared: \
++    %{!static: \
++      %{rdynamic:-export-dynamic} \
++      -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
++    %{static:-static}}"
++
++/* This toolchain implements the ABI for Linux Systems documented in the
++   Nios II Processor Reference Handbook.  */
++#define TARGET_LINUX_ABI 1
++
+diff -Naur gcc-5.2.0.orig/gcc/config/pa/pa-linux.h gcc-5.2.0/gcc/config/pa/pa-linux.h
+--- gcc-5.2.0.orig/gcc/config/pa/pa-linux.h	2015-05-28 14:07:55.000000000 +0000
++++ gcc-5.2.0/gcc/config/pa/pa-linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -37,7 +37,7 @@
+ /* Define this for shared library support because it isn't in the main
+    linux.h file.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -Naur gcc-5.2.0.orig/gcc/config/rs6000/linux64.h gcc-5.2.0/gcc/config/rs6000/linux64.h
+--- gcc-5.2.0.orig/gcc/config/rs6000/linux64.h	2015-03-09 23:18:57.000000000 +0000
++++ gcc-5.2.0/gcc/config/rs6000/linux64.h	2015-08-16 03:06:42.661478408 +0000
+@@ -357,14 +357,14 @@
+ #undef	LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld.so.1"
+ #ifdef LINUX64_DEFAULT_ABI_ELFv2
+-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib64/ld64.so.1;:/lib64/ld64.so.2}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/tools/lib64/ld64.so.1;:/tools/lib64/ld64.so.2}"
+ #else
+-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/tools/lib64/ld64.so.2;:/tools/lib64/ld64.so.1}"
+ #endif
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 "/tools/lib/ld64-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif DEFAULT_LIBC == LIBC_GLIBC
+diff -Naur gcc-5.2.0.orig/gcc/config/rs6000/sysv4.h gcc-5.2.0/gcc/config/rs6000/sysv4.h
+--- gcc-5.2.0.orig/gcc/config/rs6000/sysv4.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/rs6000/sysv4.h	2015-08-16 03:06:42.661478408 +0000
+@@ -762,8 +762,8 @@
+ 
+ #define LINK_START_LINUX_SPEC ""
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
+diff -Naur gcc-5.2.0.orig/gcc/config/s390/linux.h gcc-5.2.0/gcc/config/s390/linux.h
+--- gcc-5.2.0.orig/gcc/config/s390/linux.h	2015-05-11 07:14:10.000000000 +0000
++++ gcc-5.2.0/gcc/config/s390/linux.h	2015-08-16 03:06:42.661478408 +0000
+@@ -60,8 +60,8 @@
+ #define MULTILIB_DEFAULTS { "m31" }
+ #endif
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib/ld64.so.1"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+diff -Naur gcc-5.2.0.orig/gcc/config/sh/linux.h gcc-5.2.0/gcc/config/sh/linux.h
+--- gcc-5.2.0.orig/gcc/config/sh/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/sh/linux.h	2015-08-16 03:06:42.664811503 +0000
+@@ -43,7 +43,7 @@
+ 
+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #undef SUBTARGET_LINK_EMUL_SUFFIX
+ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
+diff -Naur gcc-5.2.0.orig/gcc/config/sparc/linux.h gcc-5.2.0/gcc/config/sparc/linux.h
+--- gcc-5.2.0.orig/gcc/config/sparc/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/sparc/linux.h	2015-08-16 03:06:42.664811503 +0000
+@@ -83,7 +83,7 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
+diff -Naur gcc-5.2.0.orig/gcc/config/sparc/linux64.h gcc-5.2.0/gcc/config/sparc/linux64.h
+--- gcc-5.2.0.orig/gcc/config/sparc/linux64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/sparc/linux64.h	2015-08-16 03:06:42.664811503 +0000
+@@ -84,8 +84,8 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib64/ld-linux.so.2"
+ 
+ #ifdef SPARC_BI_ARCH
+ 
+@@ -193,7 +193,7 @@
+ #else /* !SPARC_BI_ARCH */
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
++#define LINK_SPEC "-m elf64_sparc -Y P,%R/tools/lib64 %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+diff -Naur gcc-5.2.0.orig/gcc/config/xtensa/linux.h gcc-5.2.0/gcc/config/xtensa/linux.h
+--- gcc-5.2.0.orig/gcc/config/xtensa/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/xtensa/linux.h	2015-08-16 03:06:42.664811503 +0000
+@@ -44,7 +44,7 @@
+   %{mlongcalls:--longcalls} \
+   %{mno-longcalls:--no-longcalls}"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC \
diff --git a/patches/gcc-5.3.0-specs-1.patch b/patches/gcc-5.3.0-specs-1.patch
new file mode 100644
index 0000000..664e844
--- /dev/null
+++ b/patches/gcc-5.3.0-specs-1.patch
@@ -0,0 +1,430 @@
+Submitted By: Martin Ward <macros_the_black at ntlworld.com>
+Date: 12-28-2015
+Initial Package Version: 4.9.2
+Origin: Idea originally developed by Ryan Oliver and Greg Schafer for
+        the Pure LFS project. With contributions from William Harrington
+Upstream Status: Not Applied - CLFS Specific
+Description: The specs patch changes the location of the dynamic linker as
+             well as the link spec to /tools/lib{,32,64}.
+Comment: Renamed for GCC 5.3.0
+
+diff -Naur gcc-5.2.0.orig/gcc/config/aarch64/aarch64-linux.h gcc-5.2.0/gcc/config/aarch64/aarch64-linux.h
+--- gcc-5.2.0.orig/gcc/config/aarch64/aarch64-linux.h	2015-05-12 08:49:59.000000000 +0000
++++ gcc-5.2.0/gcc/config/aarch64/aarch64-linux.h	2015-10-17 20:29:44.970812436 +0000
+@@ -21,7 +21,7 @@
+ #ifndef GCC_AARCH64_LINUX_H
+ #define GCC_AARCH64_LINUX_H
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
+ 
+ #undef  ASAN_CC1_SPEC
+ #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
+diff -Naur gcc-5.2.0.orig/gcc/config/alpha/linux-elf.h gcc-5.2.0/gcc/config/alpha/linux-elf.h
+--- gcc-5.2.0.orig/gcc/config/alpha/linux-elf.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/alpha/linux-elf.h	2015-10-17 20:28:41.529210187 +0000
+@@ -23,8 +23,8 @@
+ #define EXTRA_SPECS \
+ { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
+ 
+-#define GLIBC_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER	"/tools/lib/ld-linux.so.2"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif DEFAULT_LIBC == LIBC_GLIBC
+diff -Naur gcc-5.2.0.orig/gcc/config/arm/linux-eabi.h gcc-5.2.0/gcc/config/arm/linux-eabi.h
+--- gcc-5.2.0.orig/gcc/config/arm/linux-eabi.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/arm/linux-eabi.h	2015-10-17 20:28:41.529210187 +0000
+@@ -68,8 +68,8 @@
+    GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
+ 
+ #undef  GLIBC_DYNAMIC_LINKER
+-#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
+-#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
++#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/tools/lib/ld-linux.so.3"
++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/tools/lib/ld-linux-armhf.so.3"
+ #define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
+ 
+ #define GLIBC_DYNAMIC_LINKER \
+diff -Naur gcc-5.2.0.orig/gcc/config/arm/linux-elf.h gcc-5.2.0/gcc/config/arm/linux-elf.h
+--- gcc-5.2.0.orig/gcc/config/arm/linux-elf.h	2015-06-23 09:26:54.000000000 +0000
++++ gcc-5.2.0/gcc/config/arm/linux-elf.h	2015-10-17 20:28:41.529210187 +0000
+@@ -62,7 +62,7 @@
+ 
+ #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #define LINUX_TARGET_LINK_SPEC  "%{h*} \
+    %{static:-Bstatic} \
+diff -Naur gcc-5.2.0.orig/gcc/config/bfin/linux.h gcc-5.2.0/gcc/config/bfin/linux.h
+--- gcc-5.2.0.orig/gcc/config/bfin/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/bfin/linux.h	2015-10-17 20:28:41.529210187 +0000
+@@ -45,7 +45,7 @@
+   %{shared:-G -Bdynamic} \
+   %{!shared: %{!static: \
+    %{rdynamic:-export-dynamic} \
+-   -dynamic-linker /lib/ld-uClibc.so.0} \
++   -dynamic-linker /tools/lib/ld-uClibc.so.0} \
+    %{static}} -init __init -fini __fini"
+ 
+ #undef TARGET_SUPPORTS_SYNC_CALLS
+diff -Naur gcc-5.2.0.orig/gcc/config/cris/linux.h gcc-5.2.0/gcc/config/cris/linux.h
+--- gcc-5.2.0.orig/gcc/config/cris/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/cris/linux.h	2015-10-17 20:28:41.529210187 +0000
+@@ -102,7 +102,7 @@
+ #undef CRIS_DEFAULT_CPU_VERSION
+ #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef CRIS_LINK_SUBTARGET_SPEC
+ #define CRIS_LINK_SUBTARGET_SPEC \
+diff -Naur gcc-5.2.0.orig/gcc/config/freebsd-spec.h gcc-5.2.0/gcc/config/freebsd-spec.h
+--- gcc-5.2.0.orig/gcc/config/freebsd-spec.h	2015-06-25 17:53:14.000000000 +0000
++++ gcc-5.2.0/gcc/config/freebsd-spec.h	2015-10-17 20:28:41.529210187 +0000
+@@ -129,9 +129,9 @@
+ #endif
+ 
+ #if FBSD_MAJOR < 6
+-#define FBSD_DYNAMIC_LINKER "/usr/libexec/ld-elf.so.1"
++#define FBSD_DYNAMIC_LINKER "/tools/libexec/ld-elf.so.1"
+ #else
+-#define FBSD_DYNAMIC_LINKER "/libexec/ld-elf.so.1"
++#define FBSD_DYNAMIC_LINKER "/tools/libexec/ld-elf.so.1"
+ #endif
+ 
+ /* NOTE: The freebsd-spec.h header is included also for various
+diff -Naur gcc-5.2.0.orig/gcc/config/frv/linux.h gcc-5.2.0/gcc/config/frv/linux.h
+--- gcc-5.2.0.orig/gcc/config/frv/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/frv/linux.h	2015-10-17 20:28:41.529210187 +0000
+@@ -34,7 +34,7 @@
+ #define ENDFILE_SPEC \
+   "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/gnu.h gcc-5.2.0/gcc/config/i386/gnu.h
+--- gcc-5.2.0.orig/gcc/config/i386/gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/gnu.h	2015-10-17 20:28:41.529210187 +0000
+@@ -22,7 +22,7 @@
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+-#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so"
++#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so"
+ 
+ #undef	STARTFILE_SPEC
+ #if defined HAVE_LD_PIE
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu.h gcc-5.2.0/gcc/config/i386/kfreebsd-gnu.h
+--- gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/kfreebsd-gnu.h	2015-10-17 20:28:41.529210187 +0000
+@@ -19,4 +19,4 @@
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define GNU_USER_LINK_EMULATION "elf_i386_fbsd"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu64.h gcc-5.2.0/gcc/config/i386/kfreebsd-gnu64.h
+--- gcc-5.2.0.orig/gcc/config/i386/kfreebsd-gnu64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/kfreebsd-gnu64.h	2015-10-17 20:28:41.529210187 +0000
+@@ -22,6 +22,6 @@
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64_fbsd"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64_fbsd"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib/ld-kfreebsd-x86-64.so.1"
+-#define GLIBC_DYNAMIC_LINKERX32 "/lib/ld-kfreebsd-x32.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib/ld-kfreebsd-x86-64.so.1"
++#define GLIBC_DYNAMIC_LINKERX32 "/tools/lib/ld-kfreebsd-x32.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/linux.h gcc-5.2.0/gcc/config/i386/linux.h
+--- gcc-5.2.0.orig/gcc/config/i386/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/linux.h	2015-10-17 20:28:41.529210187 +0000
+@@ -20,4 +20,4 @@
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define GNU_USER_LINK_EMULATION "elf_i386"
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+diff -Naur gcc-5.2.0.orig/gcc/config/i386/linux64.h gcc-5.2.0/gcc/config/i386/linux64.h
+--- gcc-5.2.0.orig/gcc/config/i386/linux64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/i386/linux64.h	2015-10-17 20:28:41.529210187 +0000
+@@ -27,6 +27,6 @@
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
+-#define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib64/ld-linux-x86-64.so.2"
++#define GLIBC_DYNAMIC_LINKERX32 "/tools/libx32/ld-linux-x32.so.2"
+diff -Naur gcc-5.2.0.orig/gcc/config/ia64/linux.h gcc-5.2.0/gcc/config/ia64/linux.h
+--- gcc-5.2.0.orig/gcc/config/ia64/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/ia64/linux.h	2015-10-17 20:28:41.529210187 +0000
+@@ -55,7 +55,7 @@
+ /* Define this for shared library support because it isn't in the main
+    linux.h file.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux-ia64.so.2"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -Naur gcc-5.2.0.orig/gcc/config/knetbsd-gnu.h gcc-5.2.0/gcc/config/knetbsd-gnu.h
+--- gcc-5.2.0.orig/gcc/config/knetbsd-gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/knetbsd-gnu.h	2015-10-17 20:28:41.529210187 +0000
+@@ -32,4 +32,4 @@
+ 
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+-#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+diff -Naur gcc-5.2.0.orig/gcc/config/kopensolaris-gnu.h gcc-5.2.0/gcc/config/kopensolaris-gnu.h
+--- gcc-5.2.0.orig/gcc/config/kopensolaris-gnu.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/kopensolaris-gnu.h	2015-10-17 20:28:41.529210187 +0000
+@@ -31,4 +31,5 @@
+   while (0)
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+-#define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GNU_USER_DYNAMIC_LINKER "/tools/lib/ld.so.1"
++
+diff -Naur gcc-5.2.0.orig/gcc/config/linux.h gcc-5.2.0/gcc/config/linux.h
+--- gcc-5.2.0.orig/gcc/config/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/linux.h	2015-10-17 20:28:41.529210187 +0000
+@@ -73,10 +73,10 @@
+    GLIBC_DYNAMIC_LINKER must be defined for each target using them, or
+    GLIBC_DYNAMIC_LINKER32 and GLIBC_DYNAMIC_LINKER64 for targets
+    supporting both 32-bit and 64-bit compilation.  */
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKERX32 "/lib/ldx32-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 "/tools/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKERX32 "/tools/lib/ldx32-uClibc.so.0"
+ #define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
+ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
+diff -Naur gcc-5.2.0.orig/gcc/config/lm32/uclinux-elf.h gcc-5.2.0/gcc/config/lm32/uclinux-elf.h
+--- gcc-5.2.0.orig/gcc/config/lm32/uclinux-elf.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/lm32/uclinux-elf.h	2015-10-17 20:28:41.529210187 +0000
+@@ -67,7 +67,7 @@
+    %{shared:-shared} \
+    %{symbolic:-Bsymbolic} \
+    %{rdynamic:-export-dynamic} \
+-   -dynamic-linker /lib/ld-linux.so.2"
++   -dynamic-linker /tools/lib/ld-linux.so.2"
+ 
+ #define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS()
+ 
+diff -Naur gcc-5.2.0.orig/gcc/config/m68k/linux.h gcc-5.2.0/gcc/config/m68k/linux.h
+--- gcc-5.2.0.orig/gcc/config/m68k/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/m68k/linux.h	2015-10-17 20:28:41.533210287 +0000
+@@ -71,7 +71,7 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "-m m68kelf %{shared} \
+diff -Naur gcc-5.2.0.orig/gcc/config/microblaze/linux.h gcc-5.2.0/gcc/config/microblaze/linux.h
+--- gcc-5.2.0.orig/gcc/config/microblaze/linux.h	2015-05-28 14:08:19.000000000 +0000
++++ gcc-5.2.0/gcc/config/microblaze/linux.h	2015-10-17 20:28:41.533210287 +0000
+@@ -28,7 +28,7 @@
+ #undef TLS_NEEDS_GOT
+ #define TLS_NEEDS_GOT 1
+ 
+-#define DYNAMIC_LINKER "/lib/ld.so.1"
++#define DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ #undef  SUBTARGET_EXTRA_SPECS
+ #define SUBTARGET_EXTRA_SPECS \
+   { "dynamic_linker", DYNAMIC_LINKER }
+diff -Naur gcc-5.2.0.orig/gcc/config/mips/linux.h gcc-5.2.0/gcc/config/mips/linux.h
+--- gcc-5.2.0.orig/gcc/config/mips/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/mips/linux.h	2015-10-17 20:30:30.887975439 +0000
+@@ -22,20 +22,20 @@
+ #define GNU_USER_LINK_EMULATIONN32 "elf32%{EB:b}%{EL:l}tsmipn32"
+ 
+ #define GLIBC_DYNAMIC_LINKER32 \
+-  "%{mnan=2008:/lib/ld-linux-mipsn8.so.1;:/lib/ld.so.1}"
++  "%{mnan=2008:/tools/lib/ld-linux-mipsn8.so.1;:/tools/lib/ld.so.1}"
+ #define GLIBC_DYNAMIC_LINKER64 \
+-  "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib64/ld.so.1}"
++  "%{mnan=2008:/tools/lib64/ld-linux-mipsn8.so.1;:/tools/lib64/ld.so.1}"
+ #define GLIBC_DYNAMIC_LINKERN32 \
+-  "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib32/ld.so.1}"
++  "%{mnan=2008:/tools/lib32/ld-linux-mipsn8.so.1;:/tools/lib32/ld.so.1}"
+ 
+ #undef UCLIBC_DYNAMIC_LINKER32
+ #define UCLIBC_DYNAMIC_LINKER32 \
+-  "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
++  "%{mnan=2008:/tools/lib/ld-uClibc-mipsn8.so.0;:/tools/lib/ld-uClibc.so.0}"
+ #undef UCLIBC_DYNAMIC_LINKER64
+ #define UCLIBC_DYNAMIC_LINKER64 \
+-  "%{mnan=2008:/lib/ld64-uClibc-mipsn8.so.0;:/lib/ld64-uClibc.so.0}"
++  "%{mnan=2008:/tools/lib/ld64-uClibc-mipsn8.so.0;:/tools/lib/ld64-uClibc.so.0}"
+ #define UCLIBC_DYNAMIC_LINKERN32 \
+-  "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-uClibc.so.0}"
++  "%{mnan=2008:/tools/lib32/ld-uClibc-mipsn8.so.0;:/tools/lib32/ld-uClibc.so.0}"
+ 
+ #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
+ #define GNU_USER_DYNAMIC_LINKERN32 \
+diff -Naur gcc-5.2.0.orig/gcc/config/mn10300/linux.h gcc-5.2.0/gcc/config/mn10300/linux.h
+--- gcc-5.2.0.orig/gcc/config/mn10300/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/mn10300/linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -32,7 +32,7 @@
+ #undef  ASM_SPEC
+ #define ASM_SPEC ""
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC "%{mrelax:--relax} %{shared:-shared} \
+diff -Naur gcc-5.2.0.orig/gcc/config/pa/pa-linux.h gcc-5.2.0/gcc/config/pa/pa-linux.h
+--- gcc-5.2.0.orig/gcc/config/pa/pa-linux.h	2015-05-28 14:07:55.000000000 +0000
++++ gcc-5.2.0/gcc/config/pa/pa-linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -37,7 +37,7 @@
+ /* Define this for shared library support because it isn't in the main
+    linux.h file.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC "\
+diff -Naur gcc-5.2.0.orig/gcc/config/rs6000/linux64.h gcc-5.2.0/gcc/config/rs6000/linux64.h
+--- gcc-5.2.0.orig/gcc/config/rs6000/linux64.h	2015-03-09 23:18:57.000000000 +0000
++++ gcc-5.2.0/gcc/config/rs6000/linux64.h	2015-10-17 20:29:02.941750373 +0000
+@@ -357,14 +357,14 @@
+ #undef	LINK_OS_DEFAULT_SPEC
+ #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld.so.1"
+ #ifdef LINUX64_DEFAULT_ABI_ELFv2
+-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/lib64/ld64.so.1;:/lib64/ld64.so.2}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:/tools/lib64/ld64.so.1;:/tools/lib64/ld64.so.2}"
+ #else
+-#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/lib64/ld64.so.2;:/lib64/ld64.so.1}"
++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:/tools/lib64/ld64.so.2;:/tools/lib64/ld64.so.1}"
+ #endif
+-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
+-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-uClibc.so.0"
++#define UCLIBC_DYNAMIC_LINKER64 "/tools/lib/ld64-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif DEFAULT_LIBC == LIBC_GLIBC
+diff -Naur gcc-5.2.0.orig/gcc/config/rs6000/sysv4.h gcc-5.2.0/gcc/config/rs6000/sysv4.h
+--- gcc-5.2.0.orig/gcc/config/rs6000/sysv4.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/rs6000/sysv4.h	2015-10-17 20:29:02.941750373 +0000
+@@ -762,8 +762,8 @@
+ 
+ #define LINK_START_LINUX_SPEC ""
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+-#define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
++#define UCLIBC_DYNAMIC_LINKER "/tools/lib/ld-uClibc.so.0"
+ #if DEFAULT_LIBC == LIBC_UCLIBC
+ #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+ #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
+diff -Naur gcc-5.2.0.orig/gcc/config/s390/linux.h gcc-5.2.0/gcc/config/s390/linux.h
+--- gcc-5.2.0.orig/gcc/config/s390/linux.h	2015-05-11 07:14:10.000000000 +0000
++++ gcc-5.2.0/gcc/config/s390/linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -60,8 +60,8 @@
+ #define MULTILIB_DEFAULTS { "m31" }
+ #endif
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld.so.1"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib/ld64.so.1"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib/ld64.so.1"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC \
+diff -Naur gcc-5.2.0.orig/gcc/config/sh/linux.h gcc-5.2.0/gcc/config/sh/linux.h
+--- gcc-5.2.0.orig/gcc/config/sh/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/sh/linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -43,7 +43,7 @@
+ 
+ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #undef SUBTARGET_LINK_EMUL_SUFFIX
+ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
+diff -Naur gcc-5.2.0.orig/gcc/config/sparc/linux.h gcc-5.2.0/gcc/config/sparc/linux.h
+--- gcc-5.2.0.orig/gcc/config/sparc/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/sparc/linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -83,7 +83,7 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld-linux.so.2"
+ 
+ #undef  LINK_SPEC
+ #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
+diff -Naur gcc-5.2.0.orig/gcc/config/sparc/linux64.h gcc-5.2.0/gcc/config/sparc/linux64.h
+--- gcc-5.2.0.orig/gcc/config/sparc/linux64.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/sparc/linux64.h	2015-10-17 20:29:02.941750373 +0000
+@@ -84,8 +84,8 @@
+    When the -shared link option is used a final link is not being
+    done.  */
+ 
+-#define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
+-#define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER32 "/tools/lib/ld-linux.so.2"
++#define GLIBC_DYNAMIC_LINKER64 "/tools/lib64/ld-linux.so.2"
+ 
+ #ifdef SPARC_BI_ARCH
+ 
+@@ -193,7 +193,7 @@
+ #else /* !SPARC_BI_ARCH */
+ 
+ #undef LINK_SPEC
+-#define LINK_SPEC "-m elf64_sparc -Y P,%R/usr/lib64 %{shared:-shared} \
++#define LINK_SPEC "-m elf64_sparc -Y P,%R/tools/lib64 %{shared:-shared} \
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+diff -Naur gcc-5.2.0.orig/gcc/config/vax/linux.h gcc-5.2.0/gcc/config/vax/linux.h
+--- gcc-5.2.0.orig/gcc/config/vax/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/vax/linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -41,7 +41,7 @@
+   %{!shared: \
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+-      -dynamic-linker /lib/ld.so.1} \
++      -dynamic-linker /tools/lib/ld.so.1} \
+     %{static:-static}}"
+ 
+ #undef  WCHAR_TYPE
+diff -Naur gcc-5.2.0.orig/gcc/config/xtensa/linux.h gcc-5.2.0/gcc/config/xtensa/linux.h
+--- gcc-5.2.0.orig/gcc/config/xtensa/linux.h	2015-01-05 12:33:28.000000000 +0000
++++ gcc-5.2.0/gcc/config/xtensa/linux.h	2015-10-17 20:29:02.941750373 +0000
+@@ -44,7 +44,7 @@
+   %{mlongcalls:--longcalls} \
+   %{mno-longcalls:--no-longcalls}"
+ 
+-#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++#define GLIBC_DYNAMIC_LINKER "/tools/lib/ld.so.1"
+ 
+ #undef LINK_SPEC
+ #define LINK_SPEC \

-----------------------------------------------------------------------

Summary of changes:
 patches/gcc-5.3.0-pure64-1.patch       | 1008 ++++++++++++++++++++++++++++++++
 patches/gcc-5.3.0-pure64_specs-1.patch |  678 +++++++++++++++++++++
 patches/gcc-5.3.0-specs-1.patch        |  430 ++++++++++++++
 3 files changed, 2116 insertions(+), 0 deletions(-)
 create mode 100644 patches/gcc-5.3.0-pure64-1.patch
 create mode 100644 patches/gcc-5.3.0-pure64_specs-1.patch
 create mode 100644 patches/gcc-5.3.0-specs-1.patch


hooks/post-receive
-- 
Cross-LFS Book



More information about the Clfs-commits mailing list