[OE-core] [PATCH] gcc-9: Add recipes for gcc 9.1 release

Khem Raj raj.khem at gmail.com
Thu May 9 18:05:36 UTC 2019


On Wed, May 8, 2019 at 11:55 PM Mittal, Anuj <anuj.mittal at intel.com> wrote:
>
> This is probably causing selftest failure for fortran
> (test_toolchain_fortran):
>
> ERROR: libgfortran-9.1.0-r0 do_package: QA Issue: libgfortran:
> Files/directories were installed but not shipped in any package:
>   /usr/lib/gcc/x86_64-poky-linux/9.1.0/include
>   /usr/lib/gcc/x86_64-poky-linux/9.1.0/include/ISO_Fortran_binding.h
>
> https://autobuilder.yoctoproject.org/typhoon/#/builders/79/builds/162/steps/7/logs/step2d
>

fortran is not in default set of languages to build so sent a separate
patch for this here.
https://patchwork.openembedded.org/patch/161101/

> Thanks,
>
> Anuj
>
> On Tue, 2019-05-07 at 14:03 -0700, Khem Raj wrote:
> > Add maintainer entry for gcc-source-9.1.0
> >
> > Delete entry for gcc-source-7.3.0
> >
> > Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > ---
> >  meta/conf/distro/include/maintainers.inc      |   2 +-
> >  meta/recipes-devtools/gcc/gcc-9.1.inc         | 118 ++++++++
> >  ...0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch |  42 +++
> >  .../0002-gcc-poison-system-directories.patch  | 203 ++++++++++++++
> >  ...-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch |  73 +++++
> >  .../gcc-9.1/0004-64-bit-multilib-hack.patch   | 119 ++++++++
> >  .../gcc/gcc-9.1/0005-optional-libstdc.patch   | 125 +++++++++
> >  ...gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch |  59 ++++
> >  .../gcc-9.1/0007-COLLECT_GCC_OPTIONS.patch    |  38 +++
> >  ...ts.h-in-B-instead-of-S-and-t-oe-in-B.patch |  96 +++++++
> >  .../0009-fortran-cross-compile-hack.patch     |  46 ++++
> >  .../gcc/gcc-9.1/0010-cpp-honor-sysroot.patch  |  54 ++++
> >  .../0011-MIPS64-Default-to-N64-ABI.patch      |  57 ++++
> >  ...AMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch | 232 ++++++++++++++++
> >  ...gcc-Fix-argument-list-too-long-error.patch |  40 +++
> >  .../gcc/gcc-9.1/0014-Disable-sdt.patch        | 113 ++++++++
> >  .../gcc/gcc-9.1/0015-libtool.patch            |  42 +++
> >  ...s-fix-v4bx-to-linker-to-support-EABI.patch |  43 +++
> >  ...-config-files-from-B-instead-of-usin.patch | 102 +++++++
> >  ...ir-from-.la-which-usually-points-to-.patch |  31 +++
> >  .../gcc/gcc-9.1/0019-export-CPP.patch         |  53 ++++
> >  ...e-target-gcc-headers-can-be-included.patch |  98 +++++++
> >  ...ild-with-disable-dependency-tracking.patch |  54 ++++
> >  ...t-directory-during-relink-if-inst_pr.patch |  38 +++
> >  ...IR-replacement-instead-of-hardcoding.patch |  29 ++
> >  ...24-aarch64-Add-support-for-musl-ldso.patch |  28 ++
> >  ...-fix-libcc1-s-install-path-and-rpath.patch |  54 ++++
> >  ...le-sysroot-support-for-nativesdk-gcc.patch | 213 +++++++++++++++
> >  ...sroot-gcc-version-specific-dirs-with.patch | 102 +++++++
> >  ...ous-_FOR_BUILD-and-related-variables.patch | 137 ++++++++++
> >  ...029-nios2-Define-MUSL_DYNAMIC_LINKER.patch |  28 ++
> >  ...d-to-link-commandline-for-musl-targe.patch |  87 ++++++
> >  ...bgcc-Add-knob-to-use-ldbl-128-on-ppc.patch | 125 +++++++++
> >  ...using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch |  29 ++
> >  ...as-for-__cpu_indicator_init-instead-.patch |  86 ++++++
> >  .../0034-sync-gcc-stddef.h-with-musl.patch    |  91 ++++++
> >  ...-fault-in-precompiled-header-generat.patch |  60 ++++
> >  .../0036-Fix-for-testsuite-failure.patch      | 258
> > ++++++++++++++++++
> >  ...Re-introduce-spe-commandline-options.patch |  41 +++
> >  .../gcc/gcc-cross-canadian_9.1.bb             |   5 +
> >  meta/recipes-devtools/gcc/gcc-cross_9.1.bb    |   3 +
> >  meta/recipes-devtools/gcc/gcc-crosssdk_9.1.bb |   2 +
> >  meta/recipes-devtools/gcc/gcc-runtime_9.1.bb  |  12 +
> >  .../gcc/gcc-sanitizers_9.1.bb                 |   7 +
> >  meta/recipes-devtools/gcc/gcc-source_9.1.bb   |   4 +
> >  meta/recipes-devtools/gcc/gcc_9.1.bb          |  14 +
> >  .../gcc/libgcc-initial_9.1.bb                 |   5 +
> >  meta/recipes-devtools/gcc/libgcc_9.1.bb       |   5 +
> >  meta/recipes-devtools/gcc/libgfortran_9.1.bb  |   3 +
> >  49 files changed, 3305 insertions(+), 1 deletion(-)
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1.inc
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0001-gcc-4.3.1-
> > ARCH_FLAGS_FOR_TARGET.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0002-gcc-
> > poison-system-directories.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0003-gcc-4.3.3-
> > SYSROOT_CFLAGS_FOR_TARGET.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0004-64-bit-
> > multilib-hack.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0005-optional-
> > libstdc.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0006-gcc-
> > disable-MASK_RELAX_PIC_CALLS-bit.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0007-
> > COLLECT_GCC_OPTIONS.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0008-Use-the-
> > defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0009-fortran-
> > cross-compile-hack.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0010-cpp-honor-
> > sysroot.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0011-MIPS64-
> > Default-to-N64-ABI.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0012-Define-
> > GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0013-gcc-Fix-
> > argument-list-too-long-error.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0014-Disable-
> > sdt.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0015-
> > libtool.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0016-gcc-armv4-
> > pass-fix-v4bx-to-linker-to-support-EABI.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0017-Use-the-
> > multilib-config-files-from-B-instead-of-usin.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0018-Avoid-
> > using-libdir-from-.la-which-usually-points-to-.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0019-export-
> > CPP.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0020-Ensure-
> > target-gcc-headers-can-be-included.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0021-gcc-4.8-
> > won-t-build-with-disable-dependency-tracking.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0022-Don-t-
> > search-host-directory-during-relink-if-inst_pr.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0023-Use-
> > SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0024-aarch64-
> > Add-support-for-musl-ldso.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0025-libcc1-
> > fix-libcc1-s-install-path-and-rpath.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0026-handle-
> > sysroot-support-for-nativesdk-gcc.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0027-Search-
> > target-sysroot-gcc-version-specific-dirs-with.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0028-Fix-
> > various-_FOR_BUILD-and-related-variables.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0029-nios2-
> > Define-MUSL_DYNAMIC_LINKER.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0030-Add-
> > ssp_nonshared-to-link-commandline-for-musl-targe.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0031-libgcc-
> > Add-knob-to-use-ldbl-128-on-ppc.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0032-Link-
> > libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0033-libgcc_s-
> > Use-alias-for-__cpu_indicator_init-instead-.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0034-sync-gcc-
> > stddef.h-with-musl.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0035-fix-
> > segmentation-fault-in-precompiled-header-generat.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0036-Fix-for-
> > testsuite-failure.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-9.1/0037-Re-
> > introduce-spe-commandline-options.patch
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-cross-
> > canadian_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-cross_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-crosssdk_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-sanitizers_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/gcc-source_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/gcc_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/libgcc-initial_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/libgcc_9.1.bb
> >  create mode 100644 meta/recipes-devtools/gcc/libgfortran_9.1.bb
> >
> > diff --git a/meta/conf/distro/include/maintainers.inc
> > b/meta/conf/distro/include/maintainers.inc
> > index 6adfcf8980..12207f3118 100644
> > --- a/meta/conf/distro/include/maintainers.inc
> > +++ b/meta/conf/distro/include/maintainers.inc
> > @@ -196,8 +196,8 @@ RECIPE_MAINTAINER_pn-gcc-crosssdk-${SDK_SYS} =
> > "Khem Raj <raj.khem at gmail.com>"
> >  RECIPE_MAINTAINER_pn-gcc-crosssdk-initial-${SDK_SYS} = "Khem Raj <
> > raj.khem at gmail.com>"
> >  RECIPE_MAINTAINER_pn-gcc-runtime = "Khem Raj <raj.khem at gmail.com>"
> >  RECIPE_MAINTAINER_pn-gcc-sanitizers = "Khem Raj <raj.khem at gmail.com>
> > "
> > -RECIPE_MAINTAINER_pn-gcc-source-7.3.0 = "Khem Raj <
> > raj.khem at gmail.com>"
> >  RECIPE_MAINTAINER_pn-gcc-source-8.3.0 = "Khem Raj <
> > raj.khem at gmail.com>"
> > +RECIPE_MAINTAINER_pn-gcc-source-9.1.0 = "Khem Raj <
> > raj.khem at gmail.com>"
> >  RECIPE_MAINTAINER_pn-gccmakedep = "Khem Raj <raj.khem at gmail.com>"
> >  RECIPE_MAINTAINER_pn-gconf = "Ross Burton <ross.burton at intel.com>"
> >  RECIPE_MAINTAINER_pn-gcr = "Alexander Kanavin <
> > alex.kanavin at gmail.com>"
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1.inc b/meta/recipes-
> > devtools/gcc/gcc-9.1.inc
> > new file mode 100644
> > index 0000000000..eb2538020c
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1.inc
> > @@ -0,0 +1,118 @@
> > +require gcc-common.inc
> > +
> > +# Third digit in PV should be incremented after a minor release
> > +
> > +PV = "9.1.0"
> > +
> > +# BINV should be incremented to a revision after a minor gcc release
> > +
> > +BINV = "9.1.0"
> > +
> > +FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-9.1:${FILE_DIRNAME}/gcc-
> > 9.1/backport:"
> > +
> > +DEPENDS =+ "mpfr gmp libmpc zlib flex-native"
> > +NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native flex-
> > native"
> > +
> > +LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
> > +
> > +LIC_FILES_CHKSUM = "\
> > +    file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
> > +    file://COPYING3;md5=d32239bcb673463ab874e80d47fae504 \
> > +    file://COPYING3.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
> > +    file://COPYING.LIB;md5=2d5025d4aa3495befef8f17206a5b0a1 \
> > +    file://COPYING.RUNTIME;md5=fe60d87048567d4fe8c8a0ed2448bcc8 \
> > +"
> > +
> > +BASEURI ?= "${GNU_MIRROR}/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
> > +#RELEASE ?= "5a5ca2d"
> > +#BASEURI ?= "
> > https://repo.or.cz/official-gcc.git/snapshot/${RELEASE}.tar.gz;downloadfilename=gcc-${RELEASE}.tar.gz
> > "
> > +SRC_URI = "\
> > +           ${BASEURI} \
> > +           file://0001-gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch \
> > +           file://0002-gcc-poison-system-directories.patch \
> > +           file://0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch \
> > +           file://0004-64-bit-multilib-hack.patch \
> > +           file://0005-optional-libstdc.patch \
> > +           file://0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch \
> > +           file://0007-COLLECT_GCC_OPTIONS.patch \
> > +           file://0008-Use-the-defaults.h-in-B-instead-of-S-and-t-
> > oe-in-B.patch \
> > +           file://0009-fortran-cross-compile-hack.patch \
> > +           file://0010-cpp-honor-sysroot.patch \
> > +           file://0011-MIPS64-Default-to-N64-ABI.patch \
> > +           file://0012-Define-GLIBC_DYNAMIC_LINKER-and-
> > UCLIBC_DYNAMIC_LINKE.patch \
> > +           file://0013-gcc-Fix-argument-list-too-long-error.patch \
> > +           file://0014-Disable-sdt.patch \
> > +           file://0015-libtool.patch \
> > +           file://0016-gcc-armv4-pass-fix-v4bx-to-linker-to-support-
> > EABI.patch \
> > +           file://0017-Use-the-multilib-config-files-from-B-instead-
> > of-usin.patch \
> > +           file://0018-Avoid-using-libdir-from-.la-which-usually-
> > points-to-.patch \
> > +           file://0019-export-CPP.patch \
> > +           file://0020-Ensure-target-gcc-headers-can-be-
> > included.patch \
> > +           file://0021-gcc-4.8-won-t-build-with-disable-dependency-
> > tracking.patch \
> > +           file://0022-Don-t-search-host-directory-during-relink-if-
> > inst_pr.patch \
> > +           file://0023-Use-SYSTEMLIBS_DIR-replacement-instead-of-
> > hardcoding.patch \
> > +           file://0024-aarch64-Add-support-for-musl-ldso.patch \
> > +           file://0025-libcc1-fix-libcc1-s-install-path-and-
> > rpath.patch \
> > +           file://0026-handle-sysroot-support-for-nativesdk-
> > gcc.patch \
> > +           file://0027-Search-target-sysroot-gcc-version-specific-
> > dirs-with.patch \
> > +           file://0028-Fix-various-_FOR_BUILD-and-related-
> > variables.patch \
> > +           file://0029-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
> > +           file://0030-Add-ssp_nonshared-to-link-commandline-for-
> > musl-targe.patch \
> > +           file://0031-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
> > \
> > +           file://0032-Link-libgcc-using-LDFLAGS-not-just-
> > SHLIB_LDFLAGS.patch \
> > +           file://0033-libgcc_s-Use-alias-for-__cpu_indicator_init-
> > instead-.patch \
> > +           file://0034-sync-gcc-stddef.h-with-musl.patch \
> > +           file://0035-fix-segmentation-fault-in-precompiled-header-
> > generat.patch \
> > +           file://0036-Fix-for-testsuite-failure.patch \
> > +           file://0037-Re-introduce-spe-commandline-options.patch \
> > +"
> > +SRC_URI[md5sum] = "6069ae3737cf02bf2cb44a391ef0e937"
> > +SRC_URI[sha256sum] =
> > "79a66834e96a6050d8fe78db2c3b32fb285b230b855d0a66288235bc04b327a0"
> > +S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
> > +# For dev release snapshotting
> > +#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/official-gcc-${RELEASE}"
> > +#B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
> > +
> > +# Language Overrides
> > +FORTRAN = ""
> > +JAVA = ""
> > +
> > +LTO = "--enable-lto"
> > +SSP ?= "--disable-libssp"
> > +SSP_mingw32 = "--enable-libssp"
> > +
> > +EXTRA_OECONF_BASE = "\
> > +    ${LTO} \
> > +    ${SSP} \
> > +    --enable-libitm \
> > +    --disable-bootstrap \
> > +    --disable-libmudflap \
> > +    --with-system-zlib \
> > +    ${@'--with-linker-hash-style=${LINKER_HASH_STYLE}' if
> > '${LINKER_HASH_STYLE}' else ''} \
> > +    --enable-linker-build-id \
> > +    --with-ppl=no \
> > +    --with-cloog=no \
> > +    --enable-checking=release \
> > +    --enable-cheaders=c_global \
> > +    --without-isl \
> > +"
> > +
> > +EXTRA_OECONF_INITIAL = "\
> > +    --disable-libmudflap \
> > +    --disable-libgomp \
> > +    --disable-libitm \
> > +    --disable-libquadmath \
> > +    --with-system-zlib \
> > +    --disable-lto \
> > +    --disable-plugin \
> > +    --enable-linker-build-id \
> > +    --enable-decimal-float=no \
> > +    --without-isl \
> > +    --disable-libssp \
> > +"
> > +
> > +EXTRA_OECONF_PATHS = "\
> > +    --with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV}
> > \
> > +    --with-sysroot=/not/exist \
> > +    --with-build-sysroot=${STAGING_DIR_TARGET} \
> > +"
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0001-gcc-4.3.1-
> > ARCH_FLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc-9.1/0001-
> > gcc-4.3.1-ARCH_FLAGS_FOR_TARGET.patch
> > new file mode 100644
> > index 0000000000..33c910cc53
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0001-gcc-4.3.1-
> > ARCH_FLAGS_FOR_TARGET.patch
> > @@ -0,0 +1,42 @@
> > +From f1f6d84aadc4e3cde707b1ec8490f5dc46d4c8e0 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 08:37:11 +0400
> > +Subject: [PATCH 01/37] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Inappropriate [embedded specific]
> > +---
> > + configure    | 2 +-
> > + configure.ac | 2 +-
> > + 2 files changed, 2 insertions(+), 2 deletions(-)
> > +
> > +diff --git a/configure b/configure
> > +index adf4fda0f69..8a04eea4c71 100755
> > +--- a/configure
> > ++++ b/configure
> > +@@ -7602,7 +7602,7 @@ fi
> > + # for target_alias and gcc doesn't manage it consistently.
> > + target_configargs="--cache-file=./config.cache
> > ${target_configargs}"
> > +
> > +-FLAGS_FOR_TARGET=
> > ++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
> > + case " $target_configdirs " in
> > +  *" newlib "*)
> > +   case " $target_configargs " in
> > +diff --git a/configure.ac b/configure.ac
> > +index 87f2aee0500..01b46b8bed4 100644
> > +--- a/configure.ac
> > ++++ b/configure.ac
> > +@@ -3118,7 +3118,7 @@ fi
> > + # for target_alias and gcc doesn't manage it consistently.
> > + target_configargs="--cache-file=./config.cache
> > ${target_configargs}"
> > +
> > +-FLAGS_FOR_TARGET=
> > ++FLAGS_FOR_TARGET="$ARCH_FLAGS_FOR_TARGET"
> > + case " $target_configdirs " in
> > +  *" newlib "*)
> > +   case " $target_configargs " in
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0002-gcc-poison-
> > system-directories.patch b/meta/recipes-devtools/gcc/gcc-9.1/0002-
> > gcc-poison-system-directories.patch
> > new file mode 100644
> > index 0000000000..1231567410
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0002-gcc-poison-system-
> > directories.patch
> > @@ -0,0 +1,203 @@
> > +From 733ca3372e4125170d4531bcd33e48eeb36bfec0 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 08:59:00 +0400
> > +Subject: [PATCH 02/37] gcc: poison-system-directories
> > +
> > +Add /sw/include and /opt/include based on the original
> > +zecke-no-host-includes.patch patch.  The original patch checked for
> > +/usr/include, /sw/include and /opt/include and then triggered a
> > failure and
> > +aborted.
> > +
> > +Instead, we add the two missing items to the current scan.  If the
> > user
> > +wants this to be a failure, they can add "-Werror=poison-system-
> > directories".
> > +
> > +Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + gcc/common.opt      |  4 ++++
> > + gcc/config.in       |  6 ++++++
> > + gcc/configure       | 16 ++++++++++++++++
> > + gcc/configure.ac    | 10 ++++++++++
> > + gcc/doc/invoke.texi |  9 +++++++++
> > + gcc/gcc.c           |  2 ++
> > + gcc/incpath.c       | 21 +++++++++++++++++++++
> > + 7 files changed, 68 insertions(+)
> > +
> > +diff --git a/gcc/common.opt b/gcc/common.opt
> > +index 9a5e9af06ca..211f2b2260e 100644
> > +--- a/gcc/common.opt
> > ++++ b/gcc/common.opt
> > +@@ -684,6 +684,10 @@ Wreturn-local-addr
> > + Common Var(warn_return_local_addr) Init(1) Warning
> > + Warn about returning a pointer/reference to a local or temporary
> > variable.
> > +
> > ++Wpoison-system-directories
> > ++Common Var(flag_poison_system_directories) Init(1) Warning
> > ++Warn for -I and -L options using system directories if cross
> > compiling
> > ++
> > + Wshadow
> > + Common Var(warn_shadow) Warning
> > + Warn when one variable shadows another.  Same as -Wshadow=global.
> > +diff --git a/gcc/config.in b/gcc/config.in
> > +index 48a533bf208..fc3043bbdfb 100644
> > +--- a/gcc/config.in
> > ++++ b/gcc/config.in
> > +@@ -200,6 +200,12 @@
> > + #endif
> > +
> > +
> > ++/* Define to warn for use of native system header directories */
> > ++#ifndef USED_FOR_TARGET
> > ++#undef ENABLE_POISON_SYSTEM_DIRECTORIES
> > ++#endif
> > ++
> > ++
> > + /* Define if you want all operations on RTL (the basic data
> > structure of the
> > +    optimizer and back end) to be checked for dynamic type safety at
> > runtime.
> > +    This is quite expensive. */
> > +diff --git a/gcc/configure b/gcc/configure
> > +index d6a48ef76e7..2e08396622e 100755
> > +--- a/gcc/configure
> > ++++ b/gcc/configure
> > +@@ -995,6 +995,7 @@ with_system_zlib
> > + enable_maintainer_mode
> > + enable_link_mutex
> > + enable_version_specific_runtime_libs
> > ++enable_poison_system_directories
> > + enable_plugin
> > + enable_host_shared
> > + enable_libquadmath_support
> > +@@ -1748,6 +1749,8 @@ Optional Features:
> > +   --enable-version-specific-runtime-libs
> > +                           specify that runtime libraries should be
> > installed
> > +                           in a compiler-specific directory
> > ++  --enable-poison-system-directories
> > ++                          warn for use of native system header
> > directories
> > +   --enable-plugin         enable plugin support
> > +   --enable-host-shared    build host code as shared libraries
> > +   --disable-libquadmath-support
> > +@@ -29717,6 +29720,19 @@ if test
> > "${enable_version_specific_runtime_libs+set}" = set; then :
> > + fi
> > +
> > +
> > ++# Check whether --enable-poison-system-directories was given.
> > ++if test "${enable_poison_system_directories+set}" = set; then :
> > ++  enableval=$enable_poison_system_directories;
> > ++else
> > ++  enable_poison_system_directories=no
> > ++fi
> > ++
> > ++if test "x${enable_poison_system_directories}" = "xyes"; then
> > ++
> > ++$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
> > ++
> > ++fi
> > ++
> > + # Substitute configuration variables
> > +
> > +
> > +diff --git a/gcc/configure.ac b/gcc/configure.ac
> > +index 78370352938..7d34911573e 100644
> > +--- a/gcc/configure.ac
> > ++++ b/gcc/configure.ac
> > +@@ -6375,6 +6375,16 @@ AC_ARG_ENABLE(version-specific-runtime-libs,
> > +                 [specify that runtime libraries should be
> > +                  installed in a compiler-specific directory])])
> > +
> > ++AC_ARG_ENABLE([poison-system-directories],
> > ++             AS_HELP_STRING([--enable-poison-system-directories],
> > ++                            [warn for use of native system header
> > directories]),,
> > ++             [enable_poison_system_directories=no])
> > ++if test "x${enable_poison_system_directories}" = "xyes"; then
> > ++  AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
> > ++           [1],
> > ++           [Define to warn for use of native system header
> > directories])
> > ++fi
> > ++
> > + # Substitute configuration variables
> > + AC_SUBST(subdirs)
> > + AC_SUBST(srcdir)
> > +diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> > +index 99fd97404e1..001868e1509 100644
> > +--- a/gcc/doc/invoke.texi
> > ++++ b/gcc/doc/invoke.texi
> > +@@ -330,6 +330,7 @@ Objective-C and Objective-C++ Dialects}.
> > + -Wpacked  -Wpacked-bitfield-compat -Wpacked-not-aligned  -Wpadded
> > @gol
> > + -Wparentheses  -Wno-pedantic-ms-format @gol
> > + -Wplacement-new  -Wplacement-new=@var{n} @gol
> > ++-Wno-poison-system-directories @gol
> > + -Wpointer-arith  -Wpointer-compare  -Wno-pointer-to-int-cast @gol
> > + -Wno-pragmas  -Wno-prio-ctor-dtor  -Wredundant-decls @gol
> > + -Wrestrict  -Wno-return-local-addr @gol
> > +@@ -6254,6 +6255,14 @@ made up of data only and thus requires no
> > special treatment.  But, for
> > + most targets, it is made up of code and thus requires the stack to
> > be
> > + made executable in order for the program to work properly.
> > +
> > ++ at item -Wno-poison-system-directories
> > ++ at opindex Wno-poison-system-directories
> > ++Do not warn for @option{-I} or @option{-L} options using system
> > ++directories such as @file{/usr/include} when cross compiling.  This
> > ++option is intended for use in chroot environments when such
> > ++directories contain the correct headers and libraries for the
> > target
> > ++system rather than the host.
> > ++
> > + @item -Wfloat-equal
> > + @opindex Wfloat-equal
> > + @opindex Wno-float-equal
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index 797ed36616f..79c38d858d1 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -1042,6 +1042,8 @@ proper position among the other output
> > files.  */
> > +    "%{fuse-ld=*:-fuse-ld=%*} " LINK_COMPRESS_DEBUG_SPEC \
> > +    "%X %{o*} %{e*} %{N} %{n} %{r}\
> > +     %{s} %{t} %{u*} %{z} %{Z}
> > %{!nostdlib:%{!r:%{!nostartfiles:%S}}} \
> > ++    %{Wno-poison-system-directories:--no-poison-system-directories}
> > \
> > ++    %{Werror=poison-system-directories:--error-poison-system-
> > directories} \
> > +     %{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) "
> > \
> > +     VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \
> > +     %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
> > +diff --git a/gcc/incpath.c b/gcc/incpath.c
> > +index bcbe2082905..5752298bbf2 100644
> > +--- a/gcc/incpath.c
> > ++++ b/gcc/incpath.c
> > +@@ -26,6 +26,7 @@
> > + #include "intl.h"
> > + #include "incpath.h"
> > + #include "cppdefault.h"
> > ++#include "diagnostic-core.h"
> > +
> > + /* Microsoft Windows does not natively support inodes.
> > +    VMS has non-numeric inodes.  */
> > +@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot,
> > cpp_reader *pfile, int verbose)
> > +     }
> > +       fprintf (stderr, _("End of search list.\n"));
> > +     }
> > ++
> > ++#ifdef ENABLE_POISON_SYSTEM_DIRECTORIES
> > ++  if (flag_poison_system_directories)
> > ++    {
> > ++       struct cpp_dir *p;
> > ++
> > ++       for (p = heads[INC_QUOTE]; p; p = p->next)
> > ++         {
> > ++          if ((!strncmp (p->name, "/usr/include", 12))
> > ++              || (!strncmp (p->name, "/usr/local/include", 18))
> > ++              || (!strncmp (p->name, "/usr/X11R6/include", 18))
> > ++              || (!strncmp (p->name, "/sw/include", 11))
> > ++              || (!strncmp (p->name, "/opt/include", 12)))
> > ++            warning (OPT_Wpoison_system_directories,
> > ++                     "include location \"%s\" is unsafe for "
> > ++                     "cross-compilation",
> > ++                     p->name);
> > ++         }
> > ++    }
> > ++#endif
> > + }
> > +
> > + /* Use given -I paths for #include "..." but not #include <...>,
> > and
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0003-gcc-4.3.3-
> > SYSROOT_CFLAGS_FOR_TARGET.patch b/meta/recipes-devtools/gcc/gcc-
> > 9.1/0003-gcc-4.3.3-SYSROOT_CFLAGS_FOR_TARGET.patch
> > new file mode 100644
> > index 0000000000..916c374e3e
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0003-gcc-4.3.3-
> > SYSROOT_CFLAGS_FOR_TARGET.patch
> > @@ -0,0 +1,73 @@
> > +From 320352cc741c89f1a9b2ee7929193d255e65f27a Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:08:31 +0400
> > +Subject: [PATCH 03/37] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET
> > +
> > +Before committing, I noticed that PR/32161 was marked as a dup of
> > PR/32009, but my previous patch did not fix it.
> > +
> > +This alternative patch is better because it lets you just use
> > CFLAGS_FOR_TARGET to set the compilation flags for libgcc. Since
> > bootstrapped target libraries are never compiled with the native
> > compiler, it makes little sense to use different flags for stage1 and
> > later stages. And it also makes little sense to use a different
> > variable than CFLAGS_FOR_TARGET.
> > +
> > +Other changes I had to do include:
> > +
> > +- moving the creation of default CFLAGS_FOR_TARGET from Makefile.am
> > to configure.ac, because otherwise the BOOT_CFLAGS are substituted
> > into CFLAGS_FOR_TARGET (which is "-O2 -g $(CFLAGS)") via $(CFLAGS).
> > It is also cleaner this way though.
> > +
> > +- passing the right CFLAGS to configure scripts as exported
> > environment variables
> > +
> > +I also stopped passing LIBCFLAGS to configure scripts since they are
> > unused in the whole src tree. And I updated the documentation as H-P
> > reminded me to do.
> > +
> > +Bootstrapped/regtested i686-pc-linux-gnu, will commit to 4.4
> > shortly. Ok for 4.3?
> > +
> > +Signed-off-by: Paolo Bonzini  <bonzini at gnu.org>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + configure | 32 ++++++++++++++++++++++++++++++++
> > + 1 file changed, 32 insertions(+)
> > +
> > +diff --git a/configure b/configure
> > +index 8a04eea4c71..3b0eed74847 100755
> > +--- a/configure
> > ++++ b/configure
> > +@@ -6863,6 +6863,38 @@ fi
> > +
> > +
> > +
> > ++# During gcc bootstrap, if we use some random cc for stage1 then
> > CFLAGS
> > ++# might be empty or "-g".  We don't require a C++ compiler, so
> > CXXFLAGS
> > ++# might also be empty (or "-g", if a non-GCC C++ compiler is in the
> > path).
> > ++# We want to ensure that TARGET libraries (which we know are built
> > with
> > ++# gcc) are built with "-O2 -g", so include those options when
> > setting
> > ++# CFLAGS_FOR_TARGET and CXXFLAGS_FOR_TARGET.
> > ++if test "x$CFLAGS_FOR_TARGET" = x; then
> > ++  CFLAGS_FOR_TARGET=$CFLAGS
> > ++  case " $CFLAGS " in
> > ++    *" -O2 "*) ;;
> > ++    *) CFLAGS_FOR_TARGET="-O2 $CFLAGS" ;;
> > ++  esac
> > ++  case " $CFLAGS " in
> > ++    *" -g "* | *" -g3 "*) ;;
> > ++    *) CFLAGS_FOR_TARGET="-g $CFLAGS" ;;
> > ++  esac
> > ++fi
> > ++
> > ++
> > ++if test "x$CXXFLAGS_FOR_TARGET" = x; then
> > ++  CXXFLAGS_FOR_TARGET=$CXXFLAGS
> > ++  case " $CXXFLAGS " in
> > ++    *" -O2 "*) ;;
> > ++    *) CXXFLAGS_FOR_TARGET="-O2 $CXXFLAGS" ;;
> > ++  esac
> > ++  case " $CXXFLAGS " in
> > ++    *" -g "* | *" -g3 "*) ;;
> > ++    *) CXXFLAGS_FOR_TARGET="-g $CXXFLAGS" ;;
> > ++  esac
> > ++fi
> > ++
> > ++
> > + # Handle --with-headers=XXX.  If the value is not "yes", the
> > contents of
> > + # the named directory are copied to $(tooldir)/sys-include.
> > + if test x"${with_headers}" != x && test x"${with_headers}" != xno ;
> > then
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0004-64-bit-multilib-
> > hack.patch b/meta/recipes-devtools/gcc/gcc-9.1/0004-64-bit-multilib-
> > hack.patch
> > new file mode 100644
> > index 0000000000..137261b86c
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0004-64-bit-multilib-
> > hack.patch
> > @@ -0,0 +1,119 @@
> > +From 150d946082b3e21614d1cd0eb4752871495fe519 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:10:06 +0400
> > +Subject: [PATCH 04/37] 64-bit multilib hack.
> > +
> > +GCC has internal multilib handling code but it assumes a very
> > specific rigid directory
> > +layout. The build system implementation of multilib layout is very
> > generic and allows
> > +complete customisation of the library directories.
> > +
> > +This patch is a partial solution to allow any custom directories to
> > be passed into gcc
> > +and handled correctly. It forces gcc to use the base_libdir (which
> > is the current
> > +directory, "."). We need to do this for each multilib that is
> > configured as we don't
> > +know which compiler options may be being passed into the compiler.
> > Since we have a compiler
> > +per mulitlib at this point that isn't an issue.
> > +
> > +The one problem is the target compiler is only going to work for the
> > default multlilib at
> > +this point. Ideally we'd figure out which multilibs were being
> > enabled with which paths
> > +and be able to patch these entries with a complete set of correct
> > paths but this we
> > +don't have such code at this point. This is something the target gcc
> > recipe should do
> > +and override these platform defaults in its build config.
> > +
> > +Do same for riscv64 and aarch64
> > +
> > +RP 15/8/11
> > +
> > +Upstream-Status: Inappropriate[OE-Specific]
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +Signed-off-by: Elvis Dowson <elvis.dowson at gmail.com>
> > +Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> > +---
> > + gcc/config/aarch64/t-aarch64-linux |  8 ++++----
> > + gcc/config/i386/t-linux64          |  6 ++----
> > + gcc/config/mips/t-linux64          | 10 +++-------
> > + gcc/config/riscv/t-linux           |  6 ++++--
> > + gcc/config/rs6000/t-linux64        |  5 ++---
> > + 5 files changed, 15 insertions(+), 20 deletions(-)
> > +
> > +diff --git a/gcc/config/aarch64/t-aarch64-linux
> > b/gcc/config/aarch64/t-aarch64-linux
> > +index 5ad670ba2ce..e26019e7157 100644
> > +--- a/gcc/config/aarch64/t-aarch64-linux
> > ++++ b/gcc/config/aarch64/t-aarch64-linux
> > +@@ -21,8 +21,8 @@
> > + LIB1ASMSRC   = aarch64/lib1funcs.asm
> > + LIB1ASMFUNCS = _aarch64_sync_cache_range
> > +
> > +-AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1,
> > $(tm_defines)),_be)
> > +-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call
> > if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
> > +-MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-
> > gnu)
> > ++#AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1,
> > $(tm_defines)),_be)
> > ++#MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call
> > if_multiarch,:aarch64$(AARCH_BE)-linux-gnu)
> > ++#MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-
> > gnu)
> > +
> > +-MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call
> > if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
> > ++#MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call
> > if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32)
> > +diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
> > +index c686ab2f0d2..c82b60dadcd 100644
> > +--- a/gcc/config/i386/t-linux64
> > ++++ b/gcc/config/i386/t-linux64
> > +@@ -32,7 +32,5 @@
> > + #
> > + 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+= mx32=../libx32$(call if_multiarch,:x86_64-
> > linux-gnux32)
> > ++MULTILIB_DIRNAMES = . .
> > ++MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir))
> > ../$(shell basename $(base_libdir))
> > +diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
> > +index 3a2ff700d7d..13ef19576b5 100644
> > +--- a/gcc/config/mips/t-linux64
> > ++++ b/gcc/config/mips/t-linux64
> > +@@ -17,10 +17,6 @@
> > + # <http://www.gnu.org/licenses/>;.
> > +
> > + MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64
> > +-MULTILIB_DIRNAMES = n32 32 64
> > +-MIPS_EL = $(if $(filter %el, $(firstword $(subst -,
> > ,$(target)))),el)
> > +-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))
> > ++MULTILIB_DIRNAMES = . . .
> > ++MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir))
> > ../$(shell basename $(base_libdir)) ../$(shell basename
> > $(base_libdir))
> > ++
> > +diff --git a/gcc/config/riscv/t-linux b/gcc/config/riscv/t-linux
> > +index 216d2776a18..e4d817621fc 100644
> > +--- a/gcc/config/riscv/t-linux
> > ++++ b/gcc/config/riscv/t-linux
> > +@@ -1,3 +1,5 @@
> > + # Only XLEN and ABI affect Linux multilib dir names, e.g.
> > /lib32/ilp32d/
> > +-MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst
> > rv64%,lib64,$(MULTILIB_DIRNAMES)))
> > +-MULTILIB_OSDIRNAMES := $(patsubst
> > lib%,../lib%,$(MULTILIB_DIRNAMES))
> > ++#MULTILIB_DIRNAMES := $(patsubst rv32%,lib32,$(patsubst
> > rv64%,lib64,$(MULTILIB_DIRNAMES)))
> > ++MULTILIB_DIRNAMES := . .
> > ++#MULTILIB_OSDIRNAMES := $(patsubst
> > lib%,../lib%,$(MULTILIB_DIRNAMES))
> > ++MULTILIB_OSDIRNAMES := ../$(shell basename $(base_libdir))
> > ../$(shell basename $(base_libdir))
> > +diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-
> > linux64
> > +index f3c6e2be1d9..bd0393155fa 100644
> > +--- a/gcc/config/rs6000/t-linux64
> > ++++ b/gcc/config/rs6000/t-linux64
> > +@@ -26,10 +26,9 @@
> > + # MULTILIB_OSDIRNAMES according to what is found on the target.
> > +
> > + MULTILIB_OPTIONS    := m64/m32
> > +-MULTILIB_DIRNAMES   := 64 32
> > ++MULTILIB_DIRNAMES   := . .
> > + 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 := ../$(shell basename $(base_libdir))
> > ../$(shell basename $(base_libdir))
> > +
> > + rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.c
> > +     $(COMPILE) $<
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0005-optional-
> > libstdc.patch b/meta/recipes-devtools/gcc/gcc-9.1/0005-optional-
> > libstdc.patch
> > new file mode 100644
> > index 0000000000..d8e970a1aa
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0005-optional-libstdc.patch
> > @@ -0,0 +1,125 @@
> > +From a3323ea74f0793b35af4a4cdbe5e99fe21e4816b Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:12:56 +0400
> > +Subject: [PATCH 05/37] optional libstdc
> > +
> > +gcc-runtime builds libstdc++ separately from gcc-cross-*. Its
> > configure tests using g++
> > +will not run correctly since by default the linker will try to link
> > against libstdc++
> > +which shouldn't exist yet. We need an option to disable -lstdc++
> > +option whilst leaving -lc, -lgcc and other automatic library
> > dependencies added by gcc
> > +driver. This patch adds such an option which only disables the
> > -lstdc++.
> > +
> > +A "standard" gcc build uses xgcc and hence avoids this. We should
> > ask upstream how to
> > +do this officially, the likely answer is don't build libstdc++
> > separately.
> > +
> > +RP 29/6/10
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Inappropriate [embedded specific]
> > +---
> > + gcc/c-family/c.opt  |  4 ++++
> > + gcc/cp/g++spec.c    |  1 +
> > + gcc/doc/invoke.texi | 32 +++++++++++++++++++++++++++++++-
> > + gcc/gcc.c           |  1 +
> > + 4 files changed, 37 insertions(+), 1 deletion(-)
> > +
> > +diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
> > +index 88c72c51c21..a7029592aa3 100644
> > +--- a/gcc/c-family/c.opt
> > ++++ b/gcc/c-family/c.opt
> > +@@ -1948,6 +1948,10 @@ nostdinc++
> > + C++ ObjC++
> > + Do not search standard system include directories for C++.
> > +
> > ++nostdlib++
> > ++Driver
> > ++Do not link standard C++ runtime library
> > ++
> > + o
> > + C ObjC C++ ObjC++ Joined Separate
> > + ; Documented in common.opt
> > +diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
> > +index 6c4574a837d..0e2657f00ee 100644
> > +--- a/gcc/cp/g++spec.c
> > ++++ b/gcc/cp/g++spec.c
> > +@@ -137,6 +137,7 @@ lang_specific_driver (struct cl_decoded_option
> > **in_decoded_options,
> > +       switch (decoded_options[i].opt_index)
> > +     {
> > +     case OPT_nostdlib:
> > ++    case OPT_nostdlib__:
> > +     case OPT_nodefaultlibs:
> > +       library = -1;
> > +       break;
> > +diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> > +index 001868e1509..4186c2616ab 100644
> > +--- a/gcc/doc/invoke.texi
> > ++++ b/gcc/doc/invoke.texi
> > +@@ -226,6 +226,9 @@ in the following sections.
> > + -fno-weak  -nostdinc++ @gol
> > + -fvisibility-inlines-hidden @gol
> > + -fvisibility-ms-compat @gol
> > ++-fvtable-verify=@r{[}std at r{|}preinit at r{|}none at r{]} @gol
> > ++-fvtv-counts -fvtv-debug @gol
> > ++-nostdlib++ @gol
> > + -fext-numeric-literals @gol
> > + -Wabi=@var{n}  -Wabi-tag  -Wconversion-null  -Wctor-dtor-privacy
> > @gol
> > + -Wdelete-non-virtual-dtor  -Wdeprecated-copy  -Wdeprecated-copy-
> > dtor @gol
> > +@@ -536,7 +539,7 @@ Objective-C and Objective-C++ Dialects}.
> > + -pie  -pthread  -r  -rdynamic @gol
> > + -s  -static  -static-pie  -static-libgcc  -static-libstdc++ @gol
> > + -static-libasan  -static-libtsan  -static-liblsan  -static-libubsan
> > @gol
> > +--shared  -shared-libgcc  -symbolic @gol
> > ++-shared  -shared-libgcc  -symbolic -nostdlib++ @gol
> > + -T @var{script}  -Wl, at var{option}  -Xlinker @var{option} @gol
> > + -u @var{symbol}  -z @var{keyword}}
> > +
> > +@@ -13259,6 +13262,33 @@ Specify that the program entry point is
> > @var{entry}.  The argument is
> > + interpreted by the linker; the GNU linker accepts either a symbol
> > name
> > + or an address.
> > +
> > ++ at item -nostdlib++
> > ++ at opindex nostdlib++
> > ++Do not use the standard system C++ runtime libraries when linking.
> > ++Only the libraries you specify will be passed to the linker.
> > ++
> > ++ at cindex @option{-lgcc}, use with @option{-nostdlib}
> > ++ at cindex @option{-nostdlib} and unresolved references
> > ++ at cindex unresolved references and @option{-nostdlib}
> > ++ at cindex @option{-lgcc}, use with @option{-nodefaultlibs}
> > ++ at cindex @option{-nodefaultlibs} and unresolved references
> > ++ at cindex unresolved references and @option{-nodefaultlibs}
> > ++One of the standard libraries bypassed by @option{-nostdlib} and
> > ++ at option{-nodefaultlibs} is @file{libgcc.a}, a library of internal
> > subroutines
> > ++which GCC uses to overcome shortcomings of particular machines, or
> > special
> > ++needs for some languages.
> > ++(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler
> > ++Collection (GCC) Internals},
> > ++for more discussion of @file{libgcc.a}.)
> > ++In most cases, you need @file{libgcc.a} even when you want to avoid
> > ++other standard libraries.  In other words, when you specify
> > @option{-nostdlib}
> > ++or @option{-nodefaultlibs} you should usually specify @option{-
> > lgcc} as well.
> > ++This ensures that you have no unresolved references to internal GCC
> > ++library subroutines.
> > ++(An example of such an internal subroutine is @code{__main}, used
> > to ensure C++
> > ++constructors are called; @pxref{Collect2,, at code{collect2}, gccint,
> > ++GNU Compiler Collection (GCC) Internals}.)
> > ++
> > + @item -pie
> > + @opindex pie
> > + Produce a dynamically linked position independent executable on
> > targets
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index 79c38d858d1..308872aef5f 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -1052,6 +1052,7 @@ proper position among the other output
> > files.  */
> > +     %(mflib) " STACK_SPLIT_SPEC "\
> > +     %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} "
> > SANITIZER_SPEC " \
> > +     %{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp)
> > %(link_gcc_c_sequence)}}}\
> > ++    %{!nostdlib++:}\
> > +     %{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*}  \n%(post_link)
> > }}}}}}"
> > + #endif
> > +
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0006-gcc-disable-
> > MASK_RELAX_PIC_CALLS-bit.patch b/meta/recipes-devtools/gcc/gcc-
> > 9.1/0006-gcc-disable-MASK_RELAX_PIC_CALLS-bit.patch
> > new file mode 100644
> > index 0000000000..4a552d5169
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0006-gcc-disable-
> > MASK_RELAX_PIC_CALLS-bit.patch
> > @@ -0,0 +1,59 @@
> > +From ca3b3ac12d9b6e1065333dec89e7be2c733509d9 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:14:20 +0400
> > +Subject: [PATCH 06/37] gcc: disable MASK_RELAX_PIC_CALLS bit
> > +
> > +The new feature added after 4.3.3
> > +"
> > http://www.pubbs.net/200909/gcc/94048-patch-add-support-for-rmipsjalr.html
> > "
> > +will cause cc1plus eat up all the system memory when build webkit-
> > gtk.
> > +The function mips_get_pic_call_symbol keeps on recursively calling
> > itself.
> > +Disable this feature to walk aside the bug.
> > +
> > +Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Inappropriate [configuration]
> > +---
> > + gcc/configure    | 7 -------
> > + gcc/configure.ac | 7 -------
> > + 2 files changed, 14 deletions(-)
> > +
> > +diff --git a/gcc/configure b/gcc/configure
> > +index 2e08396622e..d36cb51bc2c 100755
> > +--- a/gcc/configure
> > ++++ b/gcc/configure
> > +@@ -27509,13 +27509,6 @@ $as_echo_n "checking assembler and linker
> > for explicit JALR relocation... " >&6;
> > +         rm -f conftest.*
> > +       fi
> > +     fi
> > +-    if test $gcc_cv_as_ld_jalr_reloc = yes; then
> > +-      if test x$target_cpu_default = x; then
> > +-        target_cpu_default=MASK_RELAX_PIC_CALLS
> > +-      else
> > +-        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CA
> > LLS"
> > +-      fi
> > +-    fi
> > +     { $as_echo "$as_me:${as_lineno-$LINENO}: result:
> > $gcc_cv_as_ld_jalr_reloc" >&5
> > + $as_echo "$gcc_cv_as_ld_jalr_reloc" >&6; }
> > +
> > +diff --git a/gcc/configure.ac b/gcc/configure.ac
> > +index 7d34911573e..dfa88c35f3f 100644
> > +--- a/gcc/configure.ac
> > ++++ b/gcc/configure.ac
> > +@@ -4816,13 +4816,6 @@ x:
> > +         rm -f conftest.*
> > +       fi
> > +     fi
> > +-    if test $gcc_cv_as_ld_jalr_reloc = yes; then
> > +-      if test x$target_cpu_default = x; then
> > +-        target_cpu_default=MASK_RELAX_PIC_CALLS
> > +-      else
> > +-        target_cpu_default="($target_cpu_default)|MASK_RELAX_PIC_CA
> > LLS"
> > +-      fi
> > +-    fi
> > +     AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
> > +
> > +     AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0007-
> > COLLECT_GCC_OPTIONS.patch b/meta/recipes-devtools/gcc/gcc-9.1/0007-
> > COLLECT_GCC_OPTIONS.patch
> > new file mode 100644
> > index 0000000000..a522ada448
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0007-
> > COLLECT_GCC_OPTIONS.patch
> > @@ -0,0 +1,38 @@
> > +From c7b8c2a6e81daaa50047c336c8ee90086aa4d4d5 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:16:28 +0400
> > +Subject: [PATCH 07/37] COLLECT_GCC_OPTIONS
> > +
> > +This patch adds --sysroot into COLLECT_GCC_OPTIONS which is used to
> > +invoke collect2.
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + gcc/gcc.c | 9 +++++++++
> > + 1 file changed, 9 insertions(+)
> > +
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index 308872aef5f..30845e5b125 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -4804,6 +4804,15 @@ set_collect_gcc_options (void)
> > +             sizeof ("COLLECT_GCC_OPTIONS=") - 1);
> > +
> > +   first_time = TRUE;
> > ++#ifdef HAVE_LD_SYSROOT
> > ++  if (target_system_root_changed && target_system_root)
> > ++    {
> > ++      obstack_grow (&collect_obstack, "'--sysroot=", sizeof("'
> > --sysroot=")-1);
> > ++      obstack_grow (&collect_obstack,
> > target_system_root,strlen(target_system_root));
> > ++      obstack_grow (&collect_obstack, "'", 1);
> > ++      first_time = FALSE;
> > ++    }
> > ++#endif
> > +   for (i = 0; (int) i < n_switches; i++)
> > +     {
> > +       const char *const *args;
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0008-Use-the-
> > defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0008-Use-the-defaults.h-in-B-instead-of-S-and-t-
> > oe-in-B.patch
> > new file mode 100644
> > index 0000000000..2ef94a0b85
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0008-Use-the-defaults.h-in-B-
> > instead-of-S-and-t-oe-in-B.patch
> > @@ -0,0 +1,96 @@
> > +From 2f65b8bbf9c7c4bc0b94bb7ba9f6a8eb8675c9ab Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:17:25 +0400
> > +Subject: [PATCH 08/37] Use the defaults.h in ${B} instead of ${S},
> > and t-oe in
> > + ${B}
> > +
> > +Use the defaults.h in ${B} instead of ${S}, and t-oe in ${B}, so
> > that
> > +the source can be shared between gcc-cross-initial,
> > +gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk
> > build.
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +
> > +While compiling gcc-crosssdk-initial-x86_64 on some host, there is
> > +occasionally failure that test the existance of default.h doesn't
> > +work, the reason is tm_include_list='** defaults.h' rather than
> > +tm_include_list='** ./defaults.h'
> > +
> > +So we add the test condition for this situation.
> > +Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
> > +---
> > + gcc/Makefile.in  | 2 +-
> > + gcc/configure    | 4 ++--
> > + gcc/configure.ac | 4 ++--
> > + gcc/mkconfig.sh  | 4 ++--
> > + 4 files changed, 7 insertions(+), 7 deletions(-)
> > +
> > +diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> > +index 508c674cbdc..3ccff1614bb 100644
> > +--- a/gcc/Makefile.in
> > ++++ b/gcc/Makefile.in
> > +@@ -540,7 +540,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT@
> > + TARGET_SYSTEM_ROOT_DEFINE = @TARGET_SYSTEM_ROOT_DEFINE@
> > +
> > + xmake_file=@xmake_file@
> > +-tmake_file=@tmake_file@
> > ++tmake_file=@tmake_file@ ./t-oe
> > + TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
> > + TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
> > + TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
> > +diff --git a/gcc/configure b/gcc/configure
> > +index d36cb51bc2c..7acc7e487b0 100755
> > +--- a/gcc/configure
> > ++++ b/gcc/configure
> > +@@ -12341,8 +12341,8 @@ for f in $tm_file; do
> > +        tm_include_list="${tm_include_list} $f"
> > +        ;;
> > +     defaults.h )
> > +-       tm_file_list="${tm_file_list} \$(srcdir)/$f"
> > +-       tm_include_list="${tm_include_list} $f"
> > ++       tm_file_list="${tm_file_list} ./$f"
> > ++       tm_include_list="${tm_include_list} ./$f"
> > +        ;;
> > +     * )
> > +        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
> > +diff --git a/gcc/configure.ac b/gcc/configure.ac
> > +index dfa88c35f3f..f5d5e5c16a8 100644
> > +--- a/gcc/configure.ac
> > ++++ b/gcc/configure.ac
> > +@@ -1968,8 +1968,8 @@ for f in $tm_file; do
> > +        tm_include_list="${tm_include_list} $f"
> > +        ;;
> > +     defaults.h )
> > +-       tm_file_list="${tm_file_list} \$(srcdir)/$f"
> > +-       tm_include_list="${tm_include_list} $f"
> > ++       tm_file_list="${tm_file_list} ./$f"
> > ++       tm_include_list="${tm_include_list} ./$f"
> > +        ;;
> > +     * )
> > +        tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
> > +diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
> > +index 308b87d0cc1..19068cbc24a 100644
> > +--- a/gcc/mkconfig.sh
> > ++++ b/gcc/mkconfig.sh
> > +@@ -77,7 +77,7 @@ if [ -n "$HEADERS" ]; then
> > +     if [ $# -ge 1 ]; then
> > +     echo '#ifdef IN_GCC' >> ${output}T
> > +     for file in "$@"; do
> > +-        if test x"$file" = x"defaults.h"; then
> > ++        if test x"$file" = x"./defaults.h" -o x"$file" =
> > x"defaults.h"; then
> > +             postpone_defaults_h="yes"
> > +         else
> > +             echo "# include \"$file\"" >> ${output}T
> > +@@ -106,7 +106,7 @@ esac
> > +
> > + # If we postponed including defaults.h, add the #include now.
> > + if test x"$postpone_defaults_h" = x"yes"; then
> > +-    echo "# include \"defaults.h\"" >> ${output}T
> > ++    echo "# include \"./defaults.h\"" >> ${output}T
> > + fi
> > +
> > + # Add multiple inclusion protection guard, part two.
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0009-fortran-cross-
> > compile-hack.patch b/meta/recipes-devtools/gcc/gcc-9.1/0009-fortran-
> > cross-compile-hack.patch
> > new file mode 100644
> > index 0000000000..7959714636
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0009-fortran-cross-compile-
> > hack.patch
> > @@ -0,0 +1,46 @@
> > +From eda94df7d2389b6c36428e5687d5f0722d3375c3 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:20:01 +0400
> > +Subject: [PATCH 09/37] fortran cross-compile hack.
> > +
> > +* Fortran would have searched for arm-angstrom-gnueabi-gfortran but
> > would have used
> > +used gfortan. For gcc_4.2.2.bb we want to use the gfortran compiler
> > from our cross
> > +directory.
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Inappropriate [embedded specific]
> > +---
> > + libgfortran/configure    | 2 +-
> > + libgfortran/configure.ac | 2 +-
> > + 2 files changed, 2 insertions(+), 2 deletions(-)
> > +
> > +diff --git a/libgfortran/configure b/libgfortran/configure
> > +index 487d8c090e2..a02b49293ac 100755
> > +--- a/libgfortran/configure
> > ++++ b/libgfortran/configure
> > +@@ -13056,7 +13056,7 @@ esac
> > +
> > + # We need gfortran to compile parts of the library
> > + #AC_PROG_FC(gfortran)
> > +-FC="$GFORTRAN"
> > ++#FC="$GFORTRAN"
> > + ac_ext=${ac_fc_srcext-f}
> > + ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext
> > >&5'
> > + ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS
> > $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
> > +diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
> > +index c06db7b1a78..5b4b1b7f1f2 100644
> > +--- a/libgfortran/configure.ac
> > ++++ b/libgfortran/configure.ac
> > +@@ -250,7 +250,7 @@ AC_SUBST(enable_static)
> > +
> > + # We need gfortran to compile parts of the library
> > + #AC_PROG_FC(gfortran)
> > +-FC="$GFORTRAN"
> > ++#FC="$GFORTRAN"
> > + AC_PROG_FC(gfortran)
> > +
> > + # extra LD Flags which are required for targets
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0010-cpp-honor-
> > sysroot.patch b/meta/recipes-devtools/gcc/gcc-9.1/0010-cpp-honor-
> > sysroot.patch
> > new file mode 100644
> > index 0000000000..b680e6fc38
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0010-cpp-honor-sysroot.patch
> > @@ -0,0 +1,54 @@
> > +From c2ec131f19d656fd916c45f51186633c789db6e9 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:22:00 +0400
> > +Subject: [PATCH 10/37] cpp: honor sysroot.
> > +
> > +Currently, if the gcc toolchain is relocated and installed from
> > sstate, then you try and compile
> > +preprocessed source (.i or .ii files), the compiler will try and
> > access the builtin sysroot location
> > +rather than the --sysroot option specified on the commandline. If
> > access to that directory is
> > +permission denied (unreadable), gcc will error.
> > +
> > +This happens when ccache is in use due to the fact it uses
> > preprocessed source files.
> > +
> > +The fix below adds %I to the cpp-output spec macro so the default
> > substitutions for -iprefix,
> > +-isystem, -isysroot happen and the correct sysroot is used.
> > +
> > +[YOCTO #2074]
> > +
> > +RP 2012/04/13
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + gcc/cp/lang-specs.h | 2 +-
> > + gcc/gcc.c           | 2 +-
> > + 2 files changed, 2 insertions(+), 2 deletions(-)
> > +
> > +diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
> > +index c6e42eda283..e1ddf066467 100644
> > +--- a/gcc/cp/lang-specs.h
> > ++++ b/gcc/cp/lang-specs.h
> > +@@ -66,5 +66,5 @@ along with GCC; see the file COPYING3.  If not see
> > +   {".ii", "@c++-cpp-output", 0, 0, 0},
> > +   {"@c++-cpp-output",
> > +       "%{!E:%{!M:%{!MM:"
> > +-      "  cc1plus -fpreprocessed %i %(cc1_options) %2"
> > ++      "  cc1plus -fpreprocessed %i %I %(cc1_options) %2"
> > +       "  %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index 30845e5b125..cef26c454d7 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -1349,7 +1349,7 @@ static const struct compiler
> > default_compilers[] =
> > +                                        %W{o*:--output-
> > pch=%*}}%V}}}}}}}", 0, 0, 0},
> > +   {".i", "@cpp-output", 0, 0, 0},
> > +   {"@cpp-output",
> > +-   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options)
> > %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
> > ++   "%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %I %(cc1_options)
> > %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
> > +   {".s", "@assembler", 0, 0, 0},
> > +   {"@assembler",
> > +    "%{!M:%{!MM:%{!E:%{!S:as %(asm_debug) %(asm_options) %i %A
> > }}}}", 0, 0, 0},
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0011-MIPS64-Default-
> > to-N64-ABI.patch b/meta/recipes-devtools/gcc/gcc-9.1/0011-MIPS64-
> > Default-to-N64-ABI.patch
> > new file mode 100644
> > index 0000000000..d59a31be10
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0011-MIPS64-Default-to-N64-
> > ABI.patch
> > @@ -0,0 +1,57 @@
> > +From 52b915732de89d8676868641af462df81211bb39 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:23:08 +0400
> > +Subject: [PATCH 11/37] MIPS64: Default to N64 ABI
> > +
> > +MIPS64 defaults to n32 ABI, this patch makes it
> > +so that it defaults to N64 ABI
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Inappropriate [OE config specific]
> > +---
> > + gcc/config.gcc | 10 +++++-----
> > + 1 file changed, 5 insertions(+), 5 deletions(-)
> > +
> > +diff --git a/gcc/config.gcc b/gcc/config.gcc
> > +index a189cb19f63..293ed8d585d 100644
> > +--- a/gcc/config.gcc
> > ++++ b/gcc/config.gcc
> > +@@ -2267,29 +2267,29 @@ mips*-*-linux*)
> > # Linux MIPS, either endian.
> > +                     default_mips_arch=mips32
> > +                     ;;
> > +             mips64el-st-linux-gnu)
> > +-                    default_mips_abi=n32
> > ++                    default_mips_abi=64
> > +                     tm_file="${tm_file} mips/st.h"
> > +                     tmake_file="${tmake_file} mips/t-st"
> > +                     enable_mips_multilibs="yes"
> > +                     ;;
> > +             mips64octeon*-*-linux*)
> > +-                    default_mips_abi=n32
> > ++                    default_mips_abi=64
> > +                     tm_defines="${tm_defines}
> > MIPS_CPU_STRING_DEFAULT=\\\"octeon\\\""
> > +                     target_cpu_default=MASK_SOFT_FLOAT_ABI
> > +                     enable_mips_multilibs="yes"
> > +                     ;;
> > +             mipsisa64r6*-*-linux*)
> > +-                    default_mips_abi=n32
> > ++                    default_mips_abi=64
> > +                     default_mips_arch=mips64r6
> > +                     enable_mips_multilibs="yes"
> > +                     ;;
> > +             mipsisa64r2*-*-linux*)
> > +-                    default_mips_abi=n32
> > ++                    default_mips_abi=64
> > +                     default_mips_arch=mips64r2
> > +                     enable_mips_multilibs="yes"
> > +                     ;;
> > +             mips64*-*-linux* | mipsisa64*-*-linux*)
> > +-                    default_mips_abi=n32
> > ++                    default_mips_abi=64
> > +                     enable_mips_multilibs="yes"
> > +                     ;;
> > +     esac
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0012-Define-
> > GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0012-Define-GLIBC_DYNAMIC_LINKER-and-
> > UCLIBC_DYNAMIC_LINKE.patch
> > new file mode 100644
> > index 0000000000..f23a314c13
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0012-Define-
> > GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch
> > @@ -0,0 +1,232 @@
> > +From 492f008dce784749e39e1c396aeea6fa1d977374 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:24:50 +0400
> > +Subject: [PATCH 12/37] Define GLIBC_DYNAMIC_LINKER and
> > UCLIBC_DYNAMIC_LINKER
> > + relative to SYSTEMLIBS_DIR
> > +
> > +This patch defines GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
> > +relative to SYSTEMLIBS_DIR which can be set in generated headers
> > +This breaks the assumption of hardcoded multilib in gcc
> > +Change is only for the supported architectures in OE including
> > +SH, sparc, alpha for possible future support (if any)
> > +
> > +Removes the do_headerfix task in metadata
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Inappropriate [OE configuration]
> > +---
> > + gcc/config/alpha/linux-elf.h |  4 ++--
> > + gcc/config/arm/linux-eabi.h  |  4 ++--
> > + gcc/config/arm/linux-elf.h   |  2 +-
> > + gcc/config/i386/linux.h      |  2 +-
> > + gcc/config/i386/linux64.h    |  6 +++---
> > + gcc/config/linux.h           |  8 ++++----
> > + gcc/config/mips/linux.h      | 12 ++++++------
> > + gcc/config/rs6000/linux64.h  | 15 +++++----------
> > + gcc/config/sh/linux.h        |  2 +-
> > + gcc/config/sparc/linux.h     |  2 +-
> > + gcc/config/sparc/linux64.h   |  4 ++--
> > + 11 files changed, 28 insertions(+), 33 deletions(-)
> > +
> > +diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-
> > elf.h
> > +index 824861befec..6afacce3292 100644
> > +--- a/gcc/config/alpha/linux-elf.h
> > ++++ b/gcc/config/alpha/linux-elf.h
> > +@@ -23,8 +23,8 @@ along with GCC; see the file COPYING3.  If not see
> > + #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        SYSTEMLIBS_DIR "ld-linux.so.2"
> > ++#define UCLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-uClibc.so.0"
> > + #if DEFAULT_LIBC == LIBC_UCLIBC
> > + #define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
> > + #elif DEFAULT_LIBC == LIBC_GLIBC
> > +diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-
> > eabi.h
> > +index 66ec0ea3980..e4ade2e2ab0 100644
> > +--- a/gcc/config/arm/linux-eabi.h
> > ++++ b/gcc/config/arm/linux-eabi.h
> > +@@ -65,8 +65,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 SYSTEMLIBS_DIR "ld-
> > linux.so.3"
> > ++#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT SYSTEMLIBS_DIR "ld-linux-
> > armhf.so.3"
> > + #define GLIBC_DYNAMIC_LINKER_DEFAULT
> > GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
> > +
> > + #define GLIBC_DYNAMIC_LINKER \
> > +diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
> > +index 9a360defd21..98f6e960b64 100644
> > +--- a/gcc/config/arm/linux-elf.h
> > ++++ b/gcc/config/arm/linux-elf.h
> > +@@ -60,7 +60,7 @@
> > +
> > + #define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
> > +
> > +-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
> > ++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
> > +
> > + #define LINUX_TARGET_LINK_SPEC  "%{h*} \
> > +    %{static:-Bstatic} \
> > +diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
> > +index 9a6e2d99896..31efbb73016 100644
> > +--- a/gcc/config/i386/linux.h
> > ++++ b/gcc/config/i386/linux.h
> > +@@ -20,7 +20,7 @@ along with GCC; see the file COPYING3.  If not see
> > + <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 SYSTEMLIBS_DIR "ld-linux.so.2"
> > +
> > + #undef MUSL_DYNAMIC_LINKER
> > + #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
> > +diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
> > +index c08221c4210..dbb474d792b 100644
> > +--- a/gcc/config/i386/linux64.h
> > ++++ b/gcc/config/i386/linux64.h
> > +@@ -27,9 +27,9 @@ see the files COPYING3 and COPYING.RUNTIME
> > respectively.  If not, see
> > + #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 SYSTEMLIBS_DIR "ld-linux.so.2"
> > ++#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux-x86-
> > 64.so.2"
> > ++#define GLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "ld-linux-x32.so.2"
> > +
> > + #undef MUSL_DYNAMIC_LINKER32
> > + #define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
> > +diff --git a/gcc/config/linux.h b/gcc/config/linux.h
> > +index c3c4a219e67..4b05d8e93d1 100644
> > +--- a/gcc/config/linux.h
> > ++++ b/gcc/config/linux.h
> > +@@ -94,10 +94,10 @@ see the files COPYING3 and COPYING.RUNTIME
> > respectively.  If not, see
> > +    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 SYSTEMLIBS_DIR "ld-uClibc.so.0"
> > ++#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
> > ++#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
> > ++#define UCLIBC_DYNAMIC_LINKERX32 SYSTEMLIBS_DIR "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 --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
> > +index 6f79ac9c01a..25de96f9561 100644
> > +--- a/gcc/config/mips/linux.h
> > ++++ b/gcc/config/mips/linux.h
> > +@@ -22,20 +22,20 @@ along with GCC; see the file COPYING3.  If not
> > see
> > + #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:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:"
> > SYSTEMLIBS_DIR "ld.so.1}"
> > + #define GLIBC_DYNAMIC_LINKER64 \
> > +-  "%{mnan=2008:/lib64/ld-linux-mipsn8.so.1;:/lib64/ld.so.1}"
> > ++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:"
> > SYSTEMLIBS_DIR "ld.so.1}"
> > + #define GLIBC_DYNAMIC_LINKERN32 \
> > +-  "%{mnan=2008:/lib32/ld-linux-mipsn8.so.1;:/lib32/ld.so.1}"
> > ++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-linux-mipsn8.so.1;:"
> > SYSTEMLIBS_DIR "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:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:"
> > SYSTEMLIBS_DIR "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:" SYSTEMLIBS_DIR "ld64-uClibc-mipsn8.so.0;:"
> > SYSTEMLIBS_DIR "ld64-uClibc.so.0}"
> > + #define UCLIBC_DYNAMIC_LINKERN32 \
> > +-  "%{mnan=2008:/lib32/ld-uClibc-mipsn8.so.0;:/lib32/ld-
> > uClibc.so.0}"
> > ++  "%{mnan=2008:" SYSTEMLIBS_DIR "ld-uClibc-mipsn8.so.0;:"
> > SYSTEMLIBS_DIR "ld-uClibc.so.0}"
> > +
> > + #undef MUSL_DYNAMIC_LINKER32
> > + #define MUSL_DYNAMIC_LINKER32 \
> > +diff --git a/gcc/config/rs6000/linux64.h
> > b/gcc/config/rs6000/linux64.h
> > +index bcc540b5ff2..982ca274621 100644
> > +--- a/gcc/config/rs6000/linux64.h
> > ++++ b/gcc/config/rs6000/linux64.h
> > +@@ -428,24 +428,19 @@ extern int dot_symbols;
> > + #undef      LINK_OS_DEFAULT_SPEC
> > + #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
> > +
> > +-#define GLIBC_DYNAMIC_LINKER32
> > "%(dynamic_linker_prefix)/lib/ld.so.1"
> > +-
> > ++#define GLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld.so.1"
> > + #ifdef LINUX64_DEFAULT_ABI_ELFv2
> > +-#define GLIBC_DYNAMIC_LINKER64 \
> > +-"%{mabi=elfv1:%(dynamic_linker_prefix)/lib64/ld64.so.1;" \
> > +-":%(dynamic_linker_prefix)/lib64/ld64.so.2}"
> > ++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv1:" SYSTEMLIBS_DIR
> > "ld64.so.1;:" SYSTEMLIBS_DIR "ld64.so.2}"
> > + #else
> > +-#define GLIBC_DYNAMIC_LINKER64 \
> > +-"%{mabi=elfv2:%(dynamic_linker_prefix)/lib64/ld64.so.2;" \
> > +-":%(dynamic_linker_prefix)/lib64/ld64.so.1}"
> > ++#define GLIBC_DYNAMIC_LINKER64 "%{mabi=elfv2:" SYSTEMLIBS_DIR
> > "ld64.so.2;:" SYSTEMLIBS_DIR "ld64.so.1}"
> > + #endif
> > +
> > + #undef MUSL_DYNAMIC_LINKER32
> > + #define MUSL_DYNAMIC_LINKER32 \
> > +-  "/lib/ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-
> > sf}.so.1"
> > ++  SYSTEMLIBS_DIR "ld-musl-powerpc" MUSL_DYNAMIC_LINKER_E "%{msoft-
> > float:-sf}.so.1"
> > + #undef MUSL_DYNAMIC_LINKER64
> > + #define MUSL_DYNAMIC_LINKER64 \
> > +-  "/lib/ld-musl-powerpc64" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-
> > sf}.so.1"
> > ++  SYSTEMLIBS_DIR "ld-musl-powerpc64" MUSL_DYNAMIC_LINKER_E
> > "%{msoft-float:-sf}.so.1"
> > +
> > + #undef  DEFAULT_ASM_ENDIAN
> > + #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
> > +diff --git a/gcc/config/sh/linux.h b/gcc/config/sh/linux.h
> > +index c9897b7aca5..82f275319cc 100644
> > +--- a/gcc/config/sh/linux.h
> > ++++ b/gcc/config/sh/linux.h
> > +@@ -64,7 +64,7 @@ along with GCC; see the file COPYING3.  If not see
> > +   "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E MUSL_DYNAMIC_LINKER_FP \
> > +   "%{mfdpic:-fdpic}.so.1"
> > +
> > +-#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
> > ++#define GLIBC_DYNAMIC_LINKER SYSTEMLIBS_DIR "ld-linux.so.2"
> > +
> > + #undef SUBTARGET_LINK_EMUL_SUFFIX
> > + #define SUBTARGET_LINK_EMUL_SUFFIX "%{mfdpic:_fd;:_linux}"
> > +diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
> > +index 2db9ea2172e..1979cfff5d3 100644
> > +--- a/gcc/config/sparc/linux.h
> > ++++ b/gcc/config/sparc/linux.h
> > +@@ -83,7 +83,7 @@ extern const char *host_detect_local_cpu (int
> > argc, const char **argv);
> > +    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 SYSTEMLIBS_DIR "ld-linux.so.2"
> > +
> > + #undef  LINK_SPEC
> > + #define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
> > +diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
> > +index 21e13001951..d39c38a531f 100644
> > +--- a/gcc/config/sparc/linux64.h
> > ++++ b/gcc/config/sparc/linux64.h
> > +@@ -84,8 +84,8 @@ along with GCC; see the file COPYING3.  If not see
> > +    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 SYSTEMLIBS_DIR "ld-linux.so.2"
> > ++#define GLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld-linux.so.2"
> > +
> > + #ifdef SPARC_BI_ARCH
> > +
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0013-gcc-Fix-argument-
> > list-too-long-error.patch b/meta/recipes-devtools/gcc/gcc-9.1/0013-
> > gcc-Fix-argument-list-too-long-error.patch
> > new file mode 100644
> > index 0000000000..f853ff90d2
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0013-gcc-Fix-argument-list-
> > too-long-error.patch
> > @@ -0,0 +1,40 @@
> > +From d8a24eca2d7a222d4910c8a508d75d0d1418e201 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:26:37 +0400
> > +Subject: [PATCH 13/37] gcc: Fix argument list too long error.
> > +
> > +There would be an "Argument list too long" error when the
> > +build directory is longer than 200, this is caused by:
> > +
> > +headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`
> > +
> > +The PLUGIN_HEADERS is too long before sort, so the "echo" can't
> > handle
> > +it, use the $(sort list) of GNU make which can handle the too long
> > list
> > +would fix the problem, the header would be short enough after
> > sorted.
> > +The "tr ' ' '\012'" was used for translating the space to "\n", the
> > +$(sort list) doesn't need this.
> > +
> > +Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + gcc/Makefile.in | 2 +-
> > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > +
> > +diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> > +index 3ccff1614bb..88b1aec732b 100644
> > +--- a/gcc/Makefile.in
> > ++++ b/gcc/Makefile.in
> > +@@ -3538,7 +3538,7 @@ install-plugin: installdirs lang.install-
> > plugin s-header-vars install-gengtype
> > + # We keep the directory structure for files in config or c-family
> > and .def
> > + # files. All other files are flattened to a single directory.
> > +     $(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
> > +-    headers=`echo $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h
> > *.def) | tr ' ' '\012' | sort -u`; \
> > ++    headers="$(sort $(PLUGIN_HEADERS) $$(cd $(srcdir); echo *.h
> > *.def))"; \
> > +     srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`;
> > \
> > +     for file in $$headers; do \
> > +       if [ -f $$file ] ; then \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0014-Disable-sdt.patch
> > b/meta/recipes-devtools/gcc/gcc-9.1/0014-Disable-sdt.patch
> > new file mode 100644
> > index 0000000000..945cf8f8af
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0014-Disable-sdt.patch
> > @@ -0,0 +1,113 @@
> > +From d5e52580314ef6056ca701fcc030c7c884cb1d7f Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:28:10 +0400
> > +Subject: [PATCH 14/37] Disable sdt.
> > +
> > +We don't list dtrace in DEPENDS so we shouldn't be depending on this
> > header.
> > +It may or may not exist from preivous builds though. To be
> > determinstic, disable
> > +sdt.h usage always. This avoids build failures if the header is
> > removed after configure
> > +but before libgcc is compiled for example.
> > +
> > +RP 2012/8/7
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Disable sdt for libstdc++-v3.
> > +
> > +Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> > +
> > +Upstream-Status: Inappropriate [hack]
> > +---
> > + gcc/configure             | 12 ++++++------
> > + gcc/configure.ac          | 18 +++++++++---------
> > + libstdc++-v3/configure    |  6 +++---
> > + libstdc++-v3/configure.ac |  2 +-
> > + 4 files changed, 19 insertions(+), 19 deletions(-)
> > +
> > +diff --git a/gcc/configure b/gcc/configure
> > +index 7acc7e487b0..6a87ab693ea 100755
> > +--- a/gcc/configure
> > ++++ b/gcc/configure
> > +@@ -29292,12 +29292,12 @@ fi
> > + { $as_echo "$as_me:${as_lineno-$LINENO}: checking sys/sdt.h in the
> > target C library" >&5
> > + $as_echo_n "checking sys/sdt.h in the target C library... " >&6; }
> > + have_sys_sdt_h=no
> > +-if test -f $target_header_dir/sys/sdt.h; then
> > +-  have_sys_sdt_h=yes
> > +-
> > +-$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
> > +-
> > +-fi
> > ++#if test -f $target_header_dir/sys/sdt.h; then
> > ++#  have_sys_sdt_h=yes
> > ++#
> > ++#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
> > ++#
> > ++#fi
> > + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h"
> > >&5
> > + $as_echo "$have_sys_sdt_h" >&6; }
> > +
> > +diff --git a/gcc/configure.ac b/gcc/configure.ac
> > +index f5d5e5c16a8..a50765171be 100644
> > +--- a/gcc/configure.ac
> > ++++ b/gcc/configure.ac
> > +@@ -5985,15 +5985,15 @@ fi
> > + AC_SUBST([enable_default_ssp])
> > +
> > + # Test for <sys/sdt.h> on the target.
> > +-GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
> > +-AC_MSG_CHECKING(sys/sdt.h in the target C library)
> > +-have_sys_sdt_h=no
> > +-if test -f $target_header_dir/sys/sdt.h; then
> > +-  have_sys_sdt_h=yes
> > +-  AC_DEFINE(HAVE_SYS_SDT_H, 1,
> > +-            [Define if your target C library provides sys/sdt.h])
> > +-fi
> > +-AC_MSG_RESULT($have_sys_sdt_h)
> > ++#GCC_TARGET_TEMPLATE([HAVE_SYS_SDT_H])
> > ++#AC_MSG_CHECKING(sys/sdt.h in the target C library)
> > ++#have_sys_sdt_h=no
> > ++#if test -f $target_header_dir/sys/sdt.h; then
> > ++#  have_sys_sdt_h=yes
> > ++#  AC_DEFINE(HAVE_SYS_SDT_H, 1,
> > ++#            [Define if your target C library provides sys/sdt.h])
> > ++#fi
> > ++#AC_MSG_RESULT($have_sys_sdt_h)
> > +
> > + # Check if TFmode long double should be used by default or not.
> > + # Some glibc targets used DFmode long double, but with glibc 2.4
> > +diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
> > +index 15848e364ab..8d3da1cc526 100755
> > +--- a/libstdc++-v3/configure
> > ++++ b/libstdc++-v3/configure
> > +@@ -22084,11 +22084,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS
> > conftest.$ac_ext >&5'
> > + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS
> > conftest.$ac_ext $LIBS >&5'
> > + ac_compiler_gnu=$ac_cv_c_compiler_gnu
> > +
> > +-  if test $glibcxx_cv_sys_sdt_h = yes; then
> > ++#  if test $glibcxx_cv_sys_sdt_h = yes; then
> > +
> > +-$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
> > ++#$as_echo "#define HAVE_SYS_SDT_H 1" >>confdefs.h
> > +
> > +-  fi
> > ++#  fi
> > +   { $as_echo "$as_me:${as_lineno-$LINENO}: result:
> > $glibcxx_cv_sys_sdt_h" >&5
> > + $as_echo "$glibcxx_cv_sys_sdt_h" >&6; }
> > +
> > +diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
> > +index ad5b4117cfd..2341645ba6f 100644
> > +--- a/libstdc++-v3/configure.ac
> > ++++ b/libstdc++-v3/configure.ac
> > +@@ -230,7 +230,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
> > + GLIBCXX_CHECK_SC_NPROC_ONLN
> > + GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP
> > + GLIBCXX_CHECK_SYSCTL_HW_NCPU
> > +-GLIBCXX_CHECK_SDT_H
> > ++#GLIBCXX_CHECK_SDT_H
> > +
> > + # Check for available headers.
> > + AC_CHECK_HEADERS([endian.h execinfo.h float.h fp.h ieeefp.h
> > inttypes.h \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0015-libtool.patch
> > b/meta/recipes-devtools/gcc/gcc-9.1/0015-libtool.patch
> > new file mode 100644
> > index 0000000000..764460b89e
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0015-libtool.patch
> > @@ -0,0 +1,42 @@
> > +From d7c605d92094c75dc2717d9dd830e525b2c8b0ff Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:29:11 +0400
> > +Subject: [PATCH 15/37] libtool
> > +
> > +libstdc++ from gcc-runtime gets created with -rpath=/usr/lib/../lib
> > for qemux86-64
> > +when running on am x86_64 build host.
> > +
> > +This patch stops this speading to libdir in the libstdc++.la file
> > within libtool.
> > +Arguably, it shouldn't be passing this into libtool in the first
> > place but
> > +for now this resolves the nastiest problems this causes.
> > +
> > +func_normal_abspath would resolve an empty path to `pwd` so we need
> > +to filter the zero case.
> > +
> > +RP 2012/8/24
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + ltmain.sh | 4 ++++
> > + 1 file changed, 4 insertions(+)
> > +
> > +diff --git a/ltmain.sh b/ltmain.sh
> > +index 79f9ba89af5..8e222f7c16b 100644
> > +--- a/ltmain.sh
> > ++++ b/ltmain.sh
> > +@@ -6359,6 +6359,10 @@ func_mode_link ()
> > +     func_warning "ignoring multiple \`-rpath's for a libtool
> > library"
> > +
> > +       install_libdir="$1"
> > ++      if test -n "$install_libdir"; then
> > ++    func_normal_abspath "$install_libdir"
> > ++    install_libdir=$func_normal_abspath_result
> > ++      fi
> > +
> > +       oldlibs=
> > +       if test -z "$rpath"; then
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0016-gcc-armv4-pass-
> > fix-v4bx-to-linker-to-support-EABI.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0016-gcc-armv4-pass-fix-v4bx-to-linker-to-
> > support-EABI.patch
> > new file mode 100644
> > index 0000000000..398074b5cc
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0016-gcc-armv4-pass-fix-v4bx-
> > to-linker-to-support-EABI.patch
> > @@ -0,0 +1,43 @@
> > +From c3addf8bc41190d46d98eb7690ff4583eebd5943 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:30:32 +0400
> > +Subject: [PATCH 16/37] gcc: armv4: pass fix-v4bx to linker to
> > support EABI.
> > +
> > +The LINK_SPEC for linux gets overwritten by linux-eabi.h which
> > +means the value of TARGET_FIX_V4BX_SPEC gets lost and as a result
> > +the option is not passed to linker when chosing march=armv4
> > +This patch redefines this in linux-eabi.h and reinserts it
> > +for eabi defaulting toolchains.
> > +
> > +We might want to send it upstream.
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +
> > +Upstream-Status: Pending
> > +---
> > + gcc/config/arm/linux-eabi.h | 6 +++++-
> > + 1 file changed, 5 insertions(+), 1 deletion(-)
> > +
> > +diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-
> > eabi.h
> > +index e4ade2e2ab0..108863f69d2 100644
> > +--- a/gcc/config/arm/linux-eabi.h
> > ++++ b/gcc/config/arm/linux-eabi.h
> > +@@ -91,10 +91,14 @@
> > + #define MUSL_DYNAMIC_LINKER \
> > +   "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-
> > abi=hard:hf}.so.1"
> > +
> > ++/* For armv4 we pass --fix-v4bx to linker to support EABI */
> > ++#undef TARGET_FIX_V4BX_SPEC
> > ++#define TARGET_FIX_V4BX_SPEC
> > "%{mcpu=arm8|mcpu=arm810|mcpu=strongarm*|march=armv4: --fix-v4bx}"
> > ++
> > + /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want
> > to
> > +    use the GNU/Linux version, not the generic BPABI version.  */
> > + #undef  LINK_SPEC
> > +-#define LINK_SPEC EABI_LINK_SPEC
> > \
> > ++#define LINK_SPEC TARGET_FIX_V4BX_SPEC EABI_LINK_SPEC
> >       \
> > +   LINUX_OR_ANDROID_LD (LINUX_TARGET_LINK_SPEC,
> >       \
> > +                    LINUX_TARGET_LINK_SPEC " " ANDROID_LINK_SPEC)
> > +
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0017-Use-the-multilib-
> > config-files-from-B-instead-of-usin.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0017-Use-the-multilib-config-files-from-B-
> > instead-of-usin.patch
> > new file mode 100644
> > index 0000000000..7d5c94a646
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0017-Use-the-multilib-config-
> > files-from-B-instead-of-usin.patch
> > @@ -0,0 +1,102 @@
> > +From e1071f4e749586fcb3edcacf43d4dd44081d16ec Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Mar 2013 09:33:04 +0400
> > +Subject: [PATCH 17/37] Use the multilib config files from ${B}
> > instead of
> > + using the ones from ${S}
> > +
> > +Use the multilib config files from ${B} instead of using the ones
> > from ${S}
> > +so that the source can be shared between gcc-cross-initial,
> > +gcc-cross-intermediate, gcc-cross, gcc-runtime, and also the sdk
> > build.
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +Signed-off-by: Constantin Musca <constantinx.musca at intel.com>
> > +
> > +Upstream-Status: Inappropriate [configuration]
> > +---
> > + gcc/configure    | 22 ++++++++++++++++++----
> > + gcc/configure.ac | 22 ++++++++++++++++++----
> > + 2 files changed, 36 insertions(+), 8 deletions(-)
> > +
> > +diff --git a/gcc/configure b/gcc/configure
> > +index 6a87ab693ea..2e822caf66d 100755
> > +--- a/gcc/configure
> > ++++ b/gcc/configure
> > +@@ -12321,10 +12321,20 @@ done
> > + tmake_file_=
> > + for f in ${tmake_file}
> > + do
> > +-    if test -f ${srcdir}/config/$f
> > +-    then
> > +-            tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
> > +-    fi
> > ++  case $f in
> > ++    */t-linux64 )
> > ++       if test -f ./config/$f
> > ++       then
> > ++         tmake_file_="${tmake_file_} ./config/$f"
> > ++       fi
> > ++       ;;
> > ++    * )
> > ++       if test -f ${srcdir}/config/$f
> > ++       then
> > ++         tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
> > ++       fi
> > ++       ;;
> > ++  esac
> > + done
> > + tmake_file="${tmake_file_}"
> > +
> > +@@ -12335,6 +12345,10 @@ tm_file_list="options.h"
> > + tm_include_list="options.h insn-constants.h"
> > + for f in $tm_file; do
> > +   case $f in
> > ++    */linux64.h )
> > ++       tm_file_list="${tm_file_list} ./config/$f"
> > ++       tm_include_list="${tm_include_list} ./config/$f"
> > ++       ;;
> > +     ./* )
> > +        f=`echo $f | sed 's/^..//'`
> > +        tm_file_list="${tm_file_list} $f"
> > +diff --git a/gcc/configure.ac b/gcc/configure.ac
> > +index a50765171be..70e7bac78c4 100644
> > +--- a/gcc/configure.ac
> > ++++ b/gcc/configure.ac
> > +@@ -1948,10 +1948,20 @@ done
> > + tmake_file_=
> > + for f in ${tmake_file}
> > + do
> > +-    if test -f ${srcdir}/config/$f
> > +-    then
> > +-            tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
> > +-    fi
> > ++  case $f in
> > ++    */t-linux64 )
> > ++       if test -f ./config/$f
> > ++       then
> > ++         tmake_file_="${tmake_file_} ./config/$f"
> > ++       fi
> > ++       ;;
> > ++    * )
> > ++       if test -f ${srcdir}/config/$f
> > ++       then
> > ++         tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
> > ++       fi
> > ++       ;;
> > ++  esac
> > + done
> > + tmake_file="${tmake_file_}"
> > +
> > +@@ -1962,6 +1972,10 @@ tm_file_list="options.h"
> > + tm_include_list="options.h insn-constants.h"
> > + for f in $tm_file; do
> > +   case $f in
> > ++    */linux64.h )
> > ++       tm_file_list="${tm_file_list} ./config/$f"
> > ++       tm_include_list="${tm_include_list} ./config/$f"
> > ++       ;;
> > +     ./* )
> > +        f=`echo $f | sed 's/^..//'`
> > +        tm_file_list="${tm_file_list} $f"
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0018-Avoid-using-
> > libdir-from-.la-which-usually-points-to-.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0018-Avoid-using-libdir-from-.la-which-usually-
> > points-to-.patch
> > new file mode 100644
> > index 0000000000..596337bc1f
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0018-Avoid-using-libdir-from-
> > .la-which-usually-points-to-.patch
> > @@ -0,0 +1,31 @@
> > +From 1ffbbb39c9848aa7a04da18fb79b1f0bd7731e00 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 20 Feb 2015 09:39:38 +0000
> > +Subject: [PATCH 18/37] Avoid using libdir from .la which usually
> > points to a
> > + host path
> > +
> > +Upstream-Status: Inappropriate [embedded specific]
> > +
> > +Signed-off-by: Jonathan Liu <net147 at gmail.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + ltmain.sh | 3 +++
> > + 1 file changed, 3 insertions(+)
> > +
> > +diff --git a/ltmain.sh b/ltmain.sh
> > +index 8e222f7c16b..0a93b4e5c3b 100644
> > +--- a/ltmain.sh
> > ++++ b/ltmain.sh
> > +@@ -5628,6 +5628,9 @@ func_mode_link ()
> > +         absdir="$abs_ladir"
> > +         libdir="$abs_ladir"
> > +       else
> > ++        # Instead of using libdir from .la which usually points to
> > a host path,
> > ++        # use the path the .la is contained in.
> > ++        libdir="$abs_ladir"
> > +         dir="$libdir"
> > +         absdir="$libdir"
> > +       fi
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0019-export-CPP.patch
> > b/meta/recipes-devtools/gcc/gcc-9.1/0019-export-CPP.patch
> > new file mode 100644
> > index 0000000000..50d17dd962
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0019-export-CPP.patch
> > @@ -0,0 +1,53 @@
> > +From 5ece023b88eaba16d8744f8f2ff72345ec3b7f92 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 20 Feb 2015 09:40:59 +0000
> > +Subject: [PATCH 19/37] export CPP
> > +
> > +The OE environment sets and exports CPP as being the target gcc.
> > When
> > +building gcc-cross-canadian for a mingw targetted sdk, the following
> > can be found
> > +in build.x86_64-pokysdk-mingw32.i586-poky-linux/build-x86_64-
> > linux/libiberty/config.log:
> > +
> > +configure:3641: checking for _FILE_OFFSET_BITS value needed for
> > large files
> > +configure:3666: gcc  -c
> > -isystem/media/build1/poky/build/tmp/sysroots/x86_64-
> > linux/usr/include -O2 -pipe  conftest.c >&5
> > +configure:3666: $? = 0
> > +configure:3698: result: no
> > +configure:3786: checking how to run the C preprocessor
> > +configure:3856: result: x86_64-pokysdk-mingw32-gcc -E --
> > sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-
> > mingw32-pokysdk-mingw32
> > +configure:3876: x86_64-pokysdk-mingw32-gcc -E --
> > sysroot=/media/build1/poky/build/tmp/sysroots/x86_64-nativesdk-
> > mingw32-pokysdk-mingw32 conftest.c
> > +configure:3876: $? = 0
> > +
> > +Note this is a *build* target (in build-x86_64-linux) so it should
> > be
> > +using the host "gcc", not x86_64-pokysdk-mingw32-gcc. Since the
> > mingw32
> > +headers are very different, using the wrong cpp is a real problem.
> > It is leaking
> > +into configure through the CPP variable. Ultimately this leads to
> > build
> > +failures related to not being able to include a process.h file for
> > pem-unix.c.
> > +
> > +The fix is to ensure we export a sane CPP value into the build
> > +environment when using build targets. We could define a
> > CPP_FOR_BUILD value which may be
> > +the version which needs to be upstreamed but for now, this fix is
> > good enough to
> > +avoid the problem.
> > +
> > +RP 22/08/2013
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + Makefile.in | 1 +
> > + 1 file changed, 1 insertion(+)
> > +
> > +diff --git a/Makefile.in b/Makefile.in
> > +index 28539a45372..b21e0791f55 100644
> > +--- a/Makefile.in
> > ++++ b/Makefile.in
> > +@@ -149,6 +149,7 @@ BUILD_EXPORTS = \
> > +     AR="$(AR_FOR_BUILD)"; export AR; \
> > +     AS="$(AS_FOR_BUILD)"; export AS; \
> > +     CC="$(CC_FOR_BUILD)"; export CC; \
> > ++    CPP="$(CC_FOR_BUILD) -E"; export CPP; \
> > +     CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
> > +     CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> > +     CXX="$(CXX_FOR_BUILD)"; export CXX; \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0020-Ensure-target-
> > gcc-headers-can-be-included.patch b/meta/recipes-devtools/gcc/gcc-
> > 9.1/0020-Ensure-target-gcc-headers-can-be-included.patch
> > new file mode 100644
> > index 0000000000..f37c6f39aa
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0020-Ensure-target-gcc-
> > headers-can-be-included.patch
> > @@ -0,0 +1,98 @@
> > +From 89f7a8e5c55b31bff011cd7466d78cd84d1eb307 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 20 Feb 2015 10:25:11 +0000
> > +Subject: [PATCH 20/37] Ensure target gcc headers can be included
> > +
> > +There are a few headers installed as part of the OpenEmbedded
> > +gcc-runtime target (omp.h, ssp/*.h). Being installed from a recipe
> > +built for the target architecture, these are within the target
> > +sysroot and not cross/nativesdk; thus they weren't able to be
> > +found by gcc with the existing search paths. Add support for
> > +picking up these headers under the sysroot supplied on the gcc
> > +command line in order to resolve this.
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Paul Eggleton <paul.eggleton at linux.intel.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/Makefile.in  | 2 ++
> > + gcc/cppdefault.c | 4 ++++
> > + gcc/defaults.h   | 9 +++++++++
> > + gcc/gcc.c        | 7 -------
> > + 4 files changed, 15 insertions(+), 7 deletions(-)
> > +
> > +diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> > +index 88b1aec732b..eb1dc304de2 100644
> > +--- a/gcc/Makefile.in
> > ++++ b/gcc/Makefile.in
> > +@@ -618,6 +618,7 @@ libexecdir = @libexecdir@
> > +
> > + # Directory in which the compiler finds libraries etc.
> > + libsubdir =
> > $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffi
> > x)
> > ++libsubdir_target = gcc/$(target_noncanonical)/$(version)
> > + # Directory in which the compiler finds executables
> > + libexecsubdir =
> > $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_s
> > uffix)
> > + # Directory in which all plugin resources are installed
> > +@@ -2867,6 +2868,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localedir)\"
> > +
> > + PREPROCESSOR_DEFINES = \
> > +   -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
> > ++  -DGCC_INCLUDE_SUBDIR_TARGET=\"$(libsubdir_target)/include\" \
> > +   -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \
> > +   -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \
> > +   -
> > DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot)
> > \
> > +diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
> > +index c4796385643..980e2bd47a7 100644
> > +--- a/gcc/cppdefault.c
> > ++++ b/gcc/cppdefault.c
> > +@@ -59,6 +59,10 @@ const struct default_include
> > cpp_include_defaults[]
> > +     /* This is the dir for gcc's private headers.  */
> > +     { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
> > + #endif
> > ++#ifdef GCC_INCLUDE_SUBDIR_TARGET
> > ++    /* This is the dir for gcc's private headers under the
> > specified sysroot.  */
> > ++    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC",
> > 0, 0, 1, 0 },
> > ++#endif
> > + #ifdef LOCAL_INCLUDE_DIR
> > +     /* /usr/local/include comes before the fixincluded header
> > files.  */
> > +     { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
> > +diff --git a/gcc/defaults.h b/gcc/defaults.h
> > +index b7534256119..41ca579b267 100644
> > +--- a/gcc/defaults.h
> > ++++ b/gcc/defaults.h
> > +@@ -1459,4 +1459,13 @@ see the files COPYING3 and COPYING.RUNTIME
> > respectively.  If not, see
> > + #define DWARF_GNAT_ENCODINGS_DEFAULT DWARF_GNAT_ENCODINGS_GDB
> > + #endif
> > +
> > ++/* Default prefixes to attach to command names.  */
> > ++
> > ++#ifndef STANDARD_STARTFILE_PREFIX_1
> > ++#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
> > ++#endif
> > ++#ifndef STANDARD_STARTFILE_PREFIX_2
> > ++#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
> > ++#endif
> > ++
> > + #endif  /* ! GCC_DEFAULTS_H */
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index cef26c454d7..14b1a6e8c44 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -1470,13 +1470,6 @@ static const char *gcc_libexec_prefix;
> > +
> > + /* Default prefixes to attach to command names.  */
> > +
> > +-#ifndef STANDARD_STARTFILE_PREFIX_1
> > +-#define STANDARD_STARTFILE_PREFIX_1 "/lib/"
> > +-#endif
> > +-#ifndef STANDARD_STARTFILE_PREFIX_2
> > +-#define STANDARD_STARTFILE_PREFIX_2 "/usr/lib/"
> > +-#endif
> > +-
> > + #ifdef CROSS_DIRECTORY_STRUCTURE  /* Don't use these prefixes for a
> > cross compiler.  */
> > + #undef MD_EXEC_PREFIX
> > + #undef MD_STARTFILE_PREFIX
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0021-gcc-4.8-won-t-
> > build-with-disable-dependency-tracking.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0021-gcc-4.8-won-t-build-with-disable-
> > dependency-tracking.patch
> > new file mode 100644
> > index 0000000000..ef985727a6
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0021-gcc-4.8-won-t-build-
> > with-disable-dependency-tracking.patch
> > @@ -0,0 +1,54 @@
> > +From 2a1895aca3d9020d0d5ac74975221727384ef8a6 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 20 Feb 2015 11:17:19 +0000
> > +Subject: [PATCH 21/37] gcc 4.8+ won't build with --disable-
> > dependency-tracking
> > +
> > +since the *.Ppo files don't get created unless --enable-dependency-
> > tracking is true.
> > +
> > +This patch ensures we only use those compiler options when its
> > enabled.
> > +
> > +Upstream-Status: Submitted
> > +
> > +(Problem was already reported upstream, attached this patch there
> > +http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55930)
> > +
> > +RP
> > +2012/09/22
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + libatomic/Makefile.am | 3 ++-
> > + libatomic/Makefile.in | 3 ++-
> > + 2 files changed, 4 insertions(+), 2 deletions(-)
> > +
> > +diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
> > +index c1b7c73934a..ef43d62c07a 100644
> > +--- a/libatomic/Makefile.am
> > ++++ b/libatomic/Makefile.am
> > +@@ -101,7 +101,8 @@ PAT_S            = $(word 3,$(PAT_SPLIT))
> > + IFUNC_DEF   = -DIFUNC_ALT=$(PAT_S)
> > + IFUNC_OPT   = $(word $(PAT_S),$(IFUNC_OPTIONS))
> > +
> > +-M_DEPS              = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
> > ++ at AMDEP_TRUE@M_DEPS          = -MT $@ -MD -MP -MF
> > $(DEPDIR)/$(@F).Ppo
> > ++ at AMDEP_FALSE@M_DEPS         =
> > + M_SIZE              = -DN=$(PAT_N)
> > + M_IFUNC             = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
> > + M_FILE              = $(PAT_BASE)_n.c
> > +diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
> > +index 29324e3e0ac..d5cdb4259ef 100644
> > +--- a/libatomic/Makefile.in
> > ++++ b/libatomic/Makefile.in
> > +@@ -414,7 +414,8 @@ PAT_N = $(word 2,$(PAT_SPLIT))
> > + PAT_S = $(word 3,$(PAT_SPLIT))
> > + IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
> > + IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
> > +-M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
> > ++ at AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
> > ++ at AMDEP_FALSE@M_DEPS =
> > + M_SIZE = -DN=$(PAT_N)
> > + M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
> > + M_FILE = $(PAT_BASE)_n.c
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0022-Don-t-search-
> > host-directory-during-relink-if-inst_pr.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0022-Don-t-search-host-directory-during-relink-
> > if-inst_pr.patch
> > new file mode 100644
> > index 0000000000..8316c4d814
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0022-Don-t-search-host-
> > directory-during-relink-if-inst_pr.patch
> > @@ -0,0 +1,38 @@
> > +From 4b9f8cfbfb48a1a9781b7c3a9b867732ef37b7c5 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Tue, 3 Mar 2015 08:21:19 +0000
> > +Subject: [PATCH 22/37] Don't search host directory during "relink"
> > if
> > + $inst_prefix is provided
> > +
> > +
> > http://lists.gnu.org/archive/html/libtool-patches/2011-01/msg00026.html
> > +
> > +Upstream-Status: Submitted
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + ltmain.sh | 5 +++--
> > + 1 file changed, 3 insertions(+), 2 deletions(-)
> > +
> > +diff --git a/ltmain.sh b/ltmain.sh
> > +index 0a93b4e5c3b..6de6ed2f9a0 100644
> > +--- a/ltmain.sh
> > ++++ b/ltmain.sh
> > +@@ -6004,12 +6004,13 @@ func_mode_link ()
> > +           fi
> > +         else
> > +           # We cannot seem to hardcode it, guess we'll fake it.
> > ++          # Default if $libdir is not relative to the prefix:
> > +           add_dir="-L$libdir"
> > +-          # Try looking first in the location we're being installed
> > to.
> > ++
> > +           if test -n "$inst_prefix_dir"; then
> > +             case $libdir in
> > +               [\\/]*)
> > +-                add_dir="$add_dir -L$inst_prefix_dir$libdir"
> > ++                add_dir="-L$inst_prefix_dir$libdir"
> > +                 ;;
> > +             esac
> > +           fi
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0023-Use-
> > SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch
> > b/meta/recipes-devtools/gcc/gcc-9.1/0023-Use-SYSTEMLIBS_DIR-
> > replacement-instead-of-hardcoding.patch
> > new file mode 100644
> > index 0000000000..fdea599abd
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0023-Use-SYSTEMLIBS_DIR-
> > replacement-instead-of-hardcoding.patch
> > @@ -0,0 +1,29 @@
> > +From 3a554b321250f6ddf1277e5559890ee977e78cb0 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Tue, 28 Apr 2015 23:15:27 -0700
> > +Subject: [PATCH 23/37] Use SYSTEMLIBS_DIR replacement instead of
> > hardcoding
> > + base_libdir
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/config/aarch64/aarch64-linux.h | 2 +-
> > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > +
> > +diff --git a/gcc/config/aarch64/aarch64-linux.h
> > b/gcc/config/aarch64/aarch64-linux.h
> > +index 9d0292d64f2..51661995fc7 100644
> > +--- a/gcc/config/aarch64/aarch64-linux.h
> > ++++ b/gcc/config/aarch64/aarch64-linux.h
> > +@@ -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  SYSTEMLIBS_DIR "ld-linux-
> > aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
> > +
> > + #undef MUSL_DYNAMIC_LINKER
> > + #define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-
> > endian:_be}%{mabi=ilp32:_ilp32}.so.1"
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0024-aarch64-Add-
> > support-for-musl-ldso.patch b/meta/recipes-devtools/gcc/gcc-9.1/0024-
> > aarch64-Add-support-for-musl-ldso.patch
> > new file mode 100644
> > index 0000000000..f53c9949c7
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0024-aarch64-Add-support-for-
> > musl-ldso.patch
> > @@ -0,0 +1,28 @@
> > +From b7001034f35e7e5090fa95cb9a622469300cd45d Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Tue, 28 Apr 2015 23:18:39 -0700
> > +Subject: [PATCH 24/37] aarch64: Add support for musl ldso
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/config/aarch64/aarch64-linux.h | 2 +-
> > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > +
> > +diff --git a/gcc/config/aarch64/aarch64-linux.h
> > b/gcc/config/aarch64/aarch64-linux.h
> > +index 51661995fc7..db687f753f6 100644
> > +--- a/gcc/config/aarch64/aarch64-linux.h
> > ++++ b/gcc/config/aarch64/aarch64-linux.h
> > +@@ -24,7 +24,7 @@
> > + #define GLIBC_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-linux-
> > aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1"
> > +
> > + #undef MUSL_DYNAMIC_LINKER
> > +-#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64%{mbig-
> > endian:_be}%{mabi=ilp32:_ilp32}.so.1"
> > ++#define MUSL_DYNAMIC_LINKER  SYSTEMLIBS_DIR "ld-musl-aarch64%{mbig-
> > endian:_be}%{mabi=ilp32:_ilp32}.so.1"
> > +
> > + #undef  ASAN_CC1_SPEC
> > + #define ASAN_CC1_SPEC "%{%:sanitize(address):-funwind-tables}"
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0025-libcc1-fix-
> > libcc1-s-install-path-and-rpath.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0025-libcc1-fix-libcc1-s-install-path-and-
> > rpath.patch
> > new file mode 100644
> > index 0000000000..7b80655b68
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0025-libcc1-fix-libcc1-s-
> > install-path-and-rpath.patch
> > @@ -0,0 +1,54 @@
> > +From 4d05ea7a12d1ba4515220c5c16f71ac650219db6 Mon Sep 17 00:00:00
> > 2001
> > +From: Robert Yang <liezhi.yang at windriver.com>
> > +Date: Sun, 5 Jul 2015 20:25:18 -0700
> > +Subject: [PATCH 25/37] libcc1: fix libcc1's install path and rpath
> > +
> > +* Install libcc1.so and libcc1plugin.so into
> > +  $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version), as what
> > we
> > +  had done to lto-plugin.
> > +* Fix bad RPATH iussue:
> > +  gcc-5.2.0: package gcc-plugins contains bad RPATH
> > /patht/to/tmp/sysroots/qemux86-64/usr/lib64/../lib64 in file
> > + /path/to/gcc/5.2.0-r0/packages-split/gcc-
> > plugins/usr/lib64/gcc/x86_64-poky-
> > linux/5.2.0/plugin/libcc1plugin.so.0.0.0
> > + [rpaths]
> > +
> > +Upstream-Status: Inappropriate [OE configuration]
> > +
> > +Signed-off-by: Robert Yang <liezhi.yang at windriver.com>
> > +---
> > + libcc1/Makefile.am | 4 ++--
> > + libcc1/Makefile.in | 4 ++--
> > + 2 files changed, 4 insertions(+), 4 deletions(-)
> > +
> > +diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
> > +index 72c6aead475..42a87740b31 100644
> > +--- a/libcc1/Makefile.am
> > ++++ b/libcc1/Makefile.am
> > +@@ -37,8 +37,8 @@ libiberty = $(if $(wildcard
> > $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
> > +         $(Wc)$(libiberty_normal)))
> > + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
> > +
> > +-plugindir =
> > $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
> > +-cc1libdir = $(libdir)/$(libsuffix)
> > ++cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
> > ++plugindir = $(cc1libdir)
> > +
> > + if ENABLE_PLUGIN
> > + plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
> > +diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in
> > +index 7104b649026..2103c477468 100644
> > +--- a/libcc1/Makefile.in
> > ++++ b/libcc1/Makefile.in
> > +@@ -393,8 +393,8 @@ libiberty = $(if $(wildcard
> > $(libiberty_noasan)),$(Wc)$(libiberty_noasan), \
> > +         $(Wc)$(libiberty_normal)))
> > +
> > + libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty))
> > +-plugindir =
> > $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin
> > +-cc1libdir = $(libdir)/$(libsuffix)
> > ++cc1libdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
> > ++plugindir = $(cc1libdir)
> > + @ENABLE_PLUGIN_TRUE at plugin_LTLIBRARIES = libcc1plugin.la
> > libcp1plugin.la
> > + @ENABLE_PLUGIN_TRUE at cc1lib_LTLIBRARIES = libcc1.la
> > + shared_source = callbacks.cc callbacks.hh connection.cc
> > connection.hh \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0026-handle-sysroot-
> > support-for-nativesdk-gcc.patch b/meta/recipes-devtools/gcc/gcc-
> > 9.1/0026-handle-sysroot-support-for-nativesdk-gcc.patch
> > new file mode 100644
> > index 0000000000..7062c03197
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0026-handle-sysroot-support-
> > for-nativesdk-gcc.patch
> > @@ -0,0 +1,213 @@
> > +From fe175ac845f1ac6965ede0240e9b763ae520614d Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Mon, 7 Dec 2015 23:39:54 +0000
> > +Subject: [PATCH 26/37] handle sysroot support for nativesdk-gcc
> > +
> > +Being able to build a nativesdk gcc is useful, particularly in cases
> > +where the host compiler may be of an incompatible version (or a 32
> > +bit compiler is needed).
> > +
> > +Sadly, building nativesdk-gcc is not straight forward. We install
> > +nativesdk-gcc into a relocatable location and this means that its
> > +library locations can change. "Normal" sysroot support doesn't help
> > +in this case since the values of paths like "libdir" change, not
> > just
> > +base root directory of the system.
> > +
> > +In order to handle this we do two things:
> > +
> > +a) Add %r into spec file markup which can be used for injected paths
> > +   such as SYSTEMLIBS_DIR (see gcc_multilib_setup()).
> > +b) Add other paths which need relocation into a .gccrelocprefix
> > section
> > +   which the relocation code will notice and adjust automatically.
> > +
> > +Upstream-Status: Inappropriate
> > +RP 2015/7/28
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/cppdefault.c | 50 +++++++++++++++++++++++++++++++++++--------
> > -----
> > + gcc/cppdefault.h |  3 ++-
> > + gcc/gcc.c        | 20 +++++++++++++------
> > + 3 files changed, 53 insertions(+), 20 deletions(-)
> > +
> > +diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
> > +index 980e2bd47a7..39b6059efdc 100644
> > +--- a/gcc/cppdefault.c
> > ++++ b/gcc/cppdefault.c
> > +@@ -35,6 +35,30 @@
> > + # undef CROSS_INCLUDE_DIR
> > + #endif
> > +
> > ++static char GPLUSPLUS_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = GPLUSPLUS_INCLUDE_DIR;
> > ++static char GCC_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = GCC_INCLUDE_DIR;
> > ++static char GPLUSPLUS_TOOL_INCLUDE_DIRVAR[4096] __attribute__
> > ((section (".gccrelocprefix"))) = GPLUSPLUS_TOOL_INCLUDE_DIR;
> > ++static char GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR[4096] __attribute__
> > ((section (".gccrelocprefix"))) = GPLUSPLUS_BACKWARD_INCLUDE_DIR;
> > ++static char STANDARD_STARTFILE_PREFIX_2VAR[4096] __attribute__
> > ((section (".gccrelocprefix"))) = STANDARD_STARTFILE_PREFIX_2
> > GCC_INCLUDE_SUBDIR_TARGET;
> > ++#ifdef LOCAL_INCLUDE_DIR
> > ++static char LOCAL_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = LOCAL_INCLUDE_DIR;
> > ++#endif
> > ++#ifdef PREFIX_INCLUDE_DIR
> > ++static char PREFIX_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = PREFIX_INCLUDE_DIR;
> > ++#endif
> > ++#ifdef FIXED_INCLUDE_DIR
> > ++static char FIXED_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = FIXED_INCLUDE_DIR;
> > ++#endif
> > ++#ifdef CROSS_INCLUDE_DIR
> > ++static char CROSS_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = CROSS_INCLUDE_DIR;
> > ++#endif
> > ++#ifdef TOOL_INCLUDE_DIR
> > ++static char TOOL_INCLUDE_DIRVAR[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = TOOL_INCLUDE_DIR;
> > ++#endif
> > ++#ifdef NATIVE_SYSTEM_HEADER_DIR
> > ++static char NATIVE_SYSTEM_HEADER_DIRVAR[4096] __attribute__
> > ((section (".gccrelocprefix"))) = NATIVE_SYSTEM_HEADER_DIR;
> > ++#endif
> > ++
> > + const struct default_include cpp_include_defaults[]
> > + #ifdef INCLUDE_DEFAULTS
> > + = INCLUDE_DEFAULTS;
> > +@@ -42,38 +66,38 @@ const struct default_include
> > cpp_include_defaults[]
> > + = {
> > + #ifdef GPLUSPLUS_INCLUDE_DIR
> > +     /* Pick up GNU C++ generic include files.  */
> > +-    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,
> > ++    { GPLUSPLUS_INCLUDE_DIRVAR, "G++", 1, 1,
> > +       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
> > + #endif
> > + #ifdef GPLUSPLUS_TOOL_INCLUDE_DIR
> > +     /* Pick up GNU C++ target-dependent include files.  */
> > +-    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,
> > ++    { GPLUSPLUS_TOOL_INCLUDE_DIRVAR, "G++", 1, 1,
> > +       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },
> > + #endif
> > + #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR
> > +     /* Pick up GNU C++ backward and deprecated include files.  */
> > +-    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,
> > ++    { GPLUSPLUS_BACKWARD_INCLUDE_DIRVAR, "G++", 1, 1,
> > +       GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
> > + #endif
> > + #ifdef GCC_INCLUDE_DIR
> > +     /* This is the dir for gcc's private headers.  */
> > +-    { GCC_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
> > ++    { GCC_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
> > + #endif
> > + #ifdef GCC_INCLUDE_SUBDIR_TARGET
> > +     /* This is the dir for gcc's private headers under the
> > specified sysroot.  */
> > +-    { STANDARD_STARTFILE_PREFIX_2 GCC_INCLUDE_SUBDIR_TARGET, "GCC",
> > 0, 0, 1, 0 },
> > ++    { STANDARD_STARTFILE_PREFIX_2VAR, "GCC", 0, 0, 1, 0 },
> > + #endif
> > + #ifdef LOCAL_INCLUDE_DIR
> > +     /* /usr/local/include comes before the fixincluded header
> > files.  */
> > +-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },
> > +-    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
> > ++    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 2 },
> > ++    { LOCAL_INCLUDE_DIRVAR, 0, 0, 1, 1, 0 },
> > + #endif
> > + #ifdef PREFIX_INCLUDE_DIR
> > +-    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 },
> > ++    { PREFIX_INCLUDE_DIRVAR, 0, 0, 1, 0, 0 },
> > + #endif
> > + #ifdef FIXED_INCLUDE_DIR
> > +     /* This is the dir for fixincludes.  */
> > +-    { FIXED_INCLUDE_DIR, "GCC", 0, 0, 0,
> > ++    { FIXED_INCLUDE_DIRVAR, "GCC", 0, 0, 0,
> > +       /* A multilib suffix needs adding if different multilibs use
> > +      different headers.  */
> > + #ifdef SYSROOT_HEADERS_SUFFIX_SPEC
> > +@@ -85,16 +109,16 @@ const struct default_include
> > cpp_include_defaults[]
> > + #endif
> > + #ifdef CROSS_INCLUDE_DIR
> > +     /* One place the target system's headers might be.  */
> > +-    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0 },
> > ++    { CROSS_INCLUDE_DIRVAR, "GCC", 0, 0, 0, 0 },
> > + #endif
> > + #ifdef TOOL_INCLUDE_DIR
> > +     /* Another place the target system's headers might be.  */
> > +-    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0 },
> > ++    { TOOL_INCLUDE_DIRVAR, "BINUTILS", 0, 1, 0, 0 },
> > + #endif
> > + #ifdef NATIVE_SYSTEM_HEADER_DIR
> > +     /* /usr/include comes dead last.  */
> > +-    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0,
> > 0, 1, 2 },
> > +-    { NATIVE_SYSTEM_HEADER_DIR, NATIVE_SYSTEM_HEADER_COMPONENT, 0,
> > 0, 1, 0 },
> > ++    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT,
> > 0, 0, 1, 2 },
> > ++    { NATIVE_SYSTEM_HEADER_DIRVAR, NATIVE_SYSTEM_HEADER_COMPONENT,
> > 0, 0, 1, 0 },
> > + #endif
> > +     { 0, 0, 0, 0, 0, 0 }
> > +   };
> > +diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
> > +index e2d96f1e760..29fa5f815c8 100644
> > +--- a/gcc/cppdefault.h
> > ++++ b/gcc/cppdefault.h
> > +@@ -33,7 +33,8 @@
> > +
> > + struct default_include
> > + {
> > +-  const char *const fname;  /* The name of the directory.  */
> > ++  const char *fname;     /* The name of the directory.  */
> > ++
> > +   const char *const component;      /* The component containing the
> > directory
> > +                                (see update_path in prefix.c) */
> > +   const char cplusplus;             /* Only look here if we're
> > compiling C++.  */
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index 14b1a6e8c44..857310092d9 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -253,6 +253,8 @@ FILE *report_times_to_file = NULL;
> > + #endif
> > + static const char *target_system_root = DEFAULT_TARGET_SYSTEM_ROOT;
> > +
> > ++static char target_relocatable_prefix[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = SYSTEMLIBS_DIR;
> > ++
> > + /* Nonzero means pass the updated target_system_root to the
> > compiler.  */
> > +
> > + static int target_system_root_changed;
> > +@@ -527,6 +529,7 @@ or with constant text in a single argument.
> > +  %G     process LIBGCC_SPEC as a spec.
> > +  %R     Output the concatenation of target_system_root and
> > +         target_sysroot_suffix.
> > ++ %r     Output the base path target_relocatable_prefix
> > +  %S     process STARTFILE_SPEC as a spec.  A capital S is actually
> > used here.
> > +  %E     process ENDFILE_SPEC as a spec.  A capital E is actually
> > used here.
> > +  %C     process CPP_SPEC as a spec.
> > +@@ -1493,10 +1496,10 @@ static const char *gcc_libexec_prefix;
> > +    gcc_exec_prefix is set because, in that case, we know where the
> > +    compiler has been installed, and use paths relative to that
> > +    location instead.  */
> > +-static const char *const standard_exec_prefix =
> > STANDARD_EXEC_PREFIX;
> > +-static const char *const standard_libexec_prefix =
> > STANDARD_LIBEXEC_PREFIX;
> > +-static const char *const standard_bindir_prefix =
> > STANDARD_BINDIR_PREFIX;
> > +-static const char *const standard_startfile_prefix =
> > STANDARD_STARTFILE_PREFIX;
> > ++static char standard_exec_prefix[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
> > ++static char standard_libexec_prefix[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = STANDARD_LIBEXEC_PREFIX;
> > ++static char standard_bindir_prefix[4096] __attribute__ ((section
> > (".gccrelocprefix"))) = STANDARD_BINDIR_PREFIX;
> > ++static char *const standard_startfile_prefix =
> > STANDARD_STARTFILE_PREFIX;
> > +
> > + /* For native compilers, these are well-known paths containing
> > +    components that may be provided by the system.  For cross
> > +@@ -1504,9 +1507,9 @@ static const char *const
> > standard_startfile_prefix = STANDARD_STARTFILE_PREFIX;
> > + static const char *md_exec_prefix = MD_EXEC_PREFIX;
> > + static const char *md_startfile_prefix = MD_STARTFILE_PREFIX;
> > + static const char *md_startfile_prefix_1 = MD_STARTFILE_PREFIX_1;
> > +-static const char *const standard_startfile_prefix_1
> > ++static char standard_startfile_prefix_1[4096] __attribute__
> > ((section (".gccrelocprefix")))
> > +   = STANDARD_STARTFILE_PREFIX_1;
> > +-static const char *const standard_startfile_prefix_2
> > ++static char standard_startfile_prefix_2[4096] __attribute__
> > ((section (".gccrelocprefix")))
> > +   = STANDARD_STARTFILE_PREFIX_2;
> > +
> > + /* A relative path to be used in finding the location of tools
> > +@@ -5915,6 +5918,11 @@ do_spec_1 (const char *spec, int inswitch,
> > const char *soft_matched_part)
> > +           }
> > +         break;
> > +
> > ++          case 'r':
> > ++              obstack_grow (&obstack, target_relocatable_prefix,
> > ++                  strlen (target_relocatable_prefix));
> > ++            break;
> > ++
> > +       case 'S':
> > +         value = do_spec_1 (startfile_spec, 0, NULL);
> > +         if (value != 0)
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0027-Search-target-
> > sysroot-gcc-version-specific-dirs-with.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0027-Search-target-sysroot-gcc-version-specific-
> > dirs-with.patch
> > new file mode 100644
> > index 0000000000..e3ec943bfe
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0027-Search-target-sysroot-
> > gcc-version-specific-dirs-with.patch
> > @@ -0,0 +1,102 @@
> > +From bf07530706382c90fb89f7d8a727eb9aeb29a56a Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Mon, 7 Dec 2015 23:41:45 +0000
> > +Subject: [PATCH 27/37] Search target sysroot gcc version specific
> > dirs with
> > + multilib.
> > +
> > +We install the gcc libraries (such as crtbegin.p) into
> > +<sysroot><libdir>/<target-sys>/5.2.0/
> > +which is a default search path for GCC (aka multi_suffix in the
> > +code below). <target-sys> is 'machine' in gcc's terminology. We use
> > +these directories so that multiple gcc versions could in theory
> > +co-exist on target.
> > +
> > +We only want to build one gcc-cross-canadian per arch and have this
> > work
> > +for all multilibs. <target-sys> can be handled by mapping the
> > multilib
> > +<target-sys> to the one used by gcc-cross-canadian, e.g.
> > +mips64-polkmllib32-linux
> > +is symlinked to by mips64-poky-linux.
> > +
> > +The default gcc search path in the target sysroot for a "lib64"
> > mutlilib
> > +is:
> > +
> > +<sysroot>/lib32/mips64-poky-linux/5.2.0/
> > +<sysroot>/lib32/../lib64/
> > +<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
> > +<sysroot>/usr/lib32/../lib64/
> > +<sysroot>/lib32/
> > +<sysroot>/usr/lib32/
> > +
> > +which means that the lib32 crtbegin.o will be found and the lib64
> > ones
> > +will not which leads to compiler failures.
> > +
> > +This patch injects a multilib version of that path first so the
> > lib64
> > +binaries can be found first. With this change the search path
> > becomes:
> > +
> > +<sysroot>/lib32/../lib64/mips64-poky-linux/5.2.0/
> > +<sysroot>/lib32/mips64-poky-linux/5.2.0/
> > +<sysroot>/lib32/../lib64/
> > +<sysroot>/usr/lib32/../lib64/mips64-poky-linux/5.2.0/
> > +<sysroot>/usr/lib32/mips64-poky-linux/5.2.0/
> > +<sysroot>/usr/lib32/../lib64/
> > +<sysroot>/lib32/
> > +<sysroot>/usr/lib32/
> > +
> > +Upstream-Status: Pending
> > +RP 2015/7/31
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/gcc.c | 29 ++++++++++++++++++++++++++++-
> > + 1 file changed, 28 insertions(+), 1 deletion(-)
> > +
> > +diff --git a/gcc/gcc.c b/gcc/gcc.c
> > +index 857310092d9..6363e63b8ff 100644
> > +--- a/gcc/gcc.c
> > ++++ b/gcc/gcc.c
> > +@@ -2610,7 +2610,7 @@ for_each_path (const struct path_prefix
> > *paths,
> > +       if (path == NULL)
> > +     {
> > +       len = paths->max_len + extra_space + 1;
> > +-      len += MAX (MAX (suffix_len, multi_os_dir_len),
> > multiarch_len);
> > ++      len += MAX ((suffix_len + multi_os_dir_len), multiarch_len);
> > +       path = XNEWVEC (char, len);
> > +     }
> > +
> > +@@ -2622,6 +2622,33 @@ for_each_path (const struct path_prefix
> > *paths,
> > +       /* Look first in MACHINE/VERSION subdirectory.  */
> > +       if (!skip_multi_dir)
> > +         {
> > ++          if (!(pl->os_multilib ? skip_multi_os_dir :
> > skip_multi_dir))
> > ++            {
> > ++              const char *this_multi;
> > ++              size_t this_multi_len;
> > ++
> > ++              if (pl->os_multilib)
> > ++                {
> > ++                  this_multi = multi_os_dir;
> > ++                  this_multi_len = multi_os_dir_len;
> > ++                }
> > ++              else
> > ++                {
> > ++                  this_multi = multi_dir;
> > ++                  this_multi_len = multi_dir_len;
> > ++                }
> > ++
> > ++              /* Look in multilib MACHINE/VERSION subdirectory
> > first */
> > ++              if (this_multi_len)
> > ++                {
> > ++                  memcpy (path + len, this_multi, this_multi_len +
> > 1);
> > ++                  memcpy (path + len + this_multi_len,
> > multi_suffix, suffix_len + 1);
> > ++                  ret = callback (path, callback_info);
> > ++                    if (ret)
> > ++                      break;
> > ++                }
> > ++            }
> > ++
> > +           memcpy (path + len, multi_suffix, suffix_len + 1);
> > +           ret = callback (path, callback_info);
> > +           if (ret)
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0028-Fix-various-
> > _FOR_BUILD-and-related-variables.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0028-Fix-various-_FOR_BUILD-and-related-
> > variables.patch
> > new file mode 100644
> > index 0000000000..bdcbd323cb
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0028-Fix-various-_FOR_BUILD-
> > and-related-variables.patch
> > @@ -0,0 +1,137 @@
> > +From 16ab14b7221b3491cd43ab745f57b60ca83089df Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Mon, 7 Dec 2015 23:42:45 +0000
> > +Subject: [PATCH 28/37] Fix various _FOR_BUILD and related variables
> > +
> > +When doing a FOR_BUILD thing, you have to override CFLAGS with
> > +CFLAGS_FOR_BUILD. And if you use C++, you also have to override
> > +CXXFLAGS with CXXFLAGS_FOR_BUILD.
> > +Without this, when building for mingw, you end up trying to use
> > +the mingw headers for a host build.
> > +
> > +The same goes for other variables as well, such as CPPFLAGS,
> > +CPP, and GMPINC.
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Peter Seebach <peter.seebach at windriver.com>
> > +Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + Makefile.in      | 6 ++++++
> > + Makefile.tpl     | 5 +++++
> > + gcc/Makefile.in  | 2 +-
> > + gcc/configure    | 2 +-
> > + gcc/configure.ac | 2 +-
> > + 5 files changed, 14 insertions(+), 3 deletions(-)
> > +
> > +diff --git a/Makefile.in b/Makefile.in
> > +index b21e0791f55..0e573791202 100644
> > +--- a/Makefile.in
> > ++++ b/Makefile.in
> > +@@ -152,6 +152,7 @@ BUILD_EXPORTS = \
> > +     CPP="$(CC_FOR_BUILD) -E"; export CPP; \
> > +     CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
> > +     CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> > ++    CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
> > +     CXX="$(CXX_FOR_BUILD)"; export CXX; \
> > +     CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
> > +     GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
> > +@@ -171,6 +172,9 @@ BUILD_EXPORTS = \
> > + # built for the build system to override those in
> > BASE_FLAGS_TO_PASS.
> > + EXTRA_BUILD_FLAGS = \
> > +     CFLAGS="$(CFLAGS_FOR_BUILD)" \
> > ++    CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
> > ++    CPP="$(CC_FOR_BUILD) -E" \
> > ++    CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
> > +     LDFLAGS="$(LDFLAGS_FOR_BUILD)"
> > +
> > + # This is the list of directories to built for the host system.
> > +@@ -188,6 +192,7 @@ HOST_SUBDIR = @host_subdir@
> > + HOST_EXPORTS = \
> > +     $(BASE_EXPORTS) \
> > +     CC="$(CC)"; export CC; \
> > ++    CPP="$(CC) -E"; export CPP; \
> > +     ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
> > +     CFLAGS="$(CFLAGS)"; export CFLAGS; \
> > +     CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> > +@@ -775,6 +780,7 @@ BASE_FLAGS_TO_PASS = \
> > +     "CC_FOR_BUILD=$(CC_FOR_BUILD)" \
> > +     "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
> > +     "CXX_FOR_BUILD=$(CXX_FOR_BUILD)" \
> > ++    "CXXFLAGS_FOR_BUILD=$(CXXFLAGS_FOR_BUILD)" \
> > +     "EXPECT=$(EXPECT)" \
> > +     "FLEX=$(FLEX)" \
> > +     "INSTALL=$(INSTALL)" \
> > +diff --git a/Makefile.tpl b/Makefile.tpl
> > +index 126296fb49a..15fb236bcc0 100644
> > +--- a/Makefile.tpl
> > ++++ b/Makefile.tpl
> > +@@ -154,6 +154,7 @@ BUILD_EXPORTS = \
> > +     CC="$(CC_FOR_BUILD)"; export CC; \
> > +     CFLAGS="$(CFLAGS_FOR_BUILD)"; export CFLAGS; \
> > +     CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> > ++    CPPFLAGS="$(CPPFLAGS_FOR_BUILD)"; export CPPFLAGS; \
> > +     CXX="$(CXX_FOR_BUILD)"; export CXX; \
> > +     CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
> > +     GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
> > +@@ -173,6 +174,9 @@ BUILD_EXPORTS = \
> > + # built for the build system to override those in
> > BASE_FLAGS_TO_PASS.
> > + EXTRA_BUILD_FLAGS = \
> > +     CFLAGS="$(CFLAGS_FOR_BUILD)" \
> > ++    CXXFLAGS="$(CXXFLAGS_FOR_BUILD)" \
> > ++    CPP="$(CC_FOR_BUILD) -E" \
> > ++    CPPFLAGS="$(CPPFLAGS_FOR_BUILD)" \
> > +     LDFLAGS="$(LDFLAGS_FOR_BUILD)"
> > +
> > + # This is the list of directories to built for the host system.
> > +@@ -190,6 +194,7 @@ HOST_SUBDIR = @host_subdir@
> > + HOST_EXPORTS = \
> > +     $(BASE_EXPORTS) \
> > +     CC="$(CC)"; export CC; \
> > ++    CPP="$(CC) -E"; export CPP; \
> > +     ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
> > +     CFLAGS="$(CFLAGS)"; export CFLAGS; \
> > +     CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
> > +diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> > +index eb1dc304de2..93a43146846 100644
> > +--- a/gcc/Makefile.in
> > ++++ b/gcc/Makefile.in
> > +@@ -805,7 +805,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@
> > + BUILD_NO_PIE_FLAG = @BUILD_NO_PIE_FLAG@
> > + BUILD_LDFLAGS += $(BUILD_NO_PIE_FLAG)
> > + BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
> > +-            -I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
> > ++            -I$(srcdir)/../include @INCINTL@ $(CPPINC)
> > $(CPPFLAGS_FOR_BUILD)
> > +
> > + # Actual name to use when installing a native compiler.
> > + GCC_INSTALL_NAME := $(shell echo gcc|sed
> > '$(program_transform_name)')
> > +diff --git a/gcc/configure b/gcc/configure
> > +index 2e822caf66d..2c50676a2bf 100755
> > +--- a/gcc/configure
> > ++++ b/gcc/configure
> > +@@ -11965,7 +11965,7 @@ else
> > +     CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> > +     CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
> > +     LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
> > +-    GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
> > ++    GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
> > +     ${realsrcdir}/configure \
> > +             --enable-languages=${enable_languages-all} \
> > +             --target=$target_alias --host=$build_alias --
> > build=$build_alias
> > +diff --git a/gcc/configure.ac b/gcc/configure.ac
> > +index 70e7bac78c4..d29eb580429 100644
> > +--- a/gcc/configure.ac
> > ++++ b/gcc/configure.ac
> > +@@ -1743,7 +1743,7 @@ else
> > +     CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \
> > +     CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \
> > +     LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \
> > +-    GMPINC="" CPPFLAGS="${CPPFLAGS} -DGENERATOR_FILE" \
> > ++    GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
> > +     ${realsrcdir}/configure \
> > +             --enable-languages=${enable_languages-all} \
> > +             --target=$target_alias --host=$build_alias --
> > build=$build_alias
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0029-nios2-Define-
> > MUSL_DYNAMIC_LINKER.patch b/meta/recipes-devtools/gcc/gcc-9.1/0029-
> > nios2-Define-MUSL_DYNAMIC_LINKER.patch
> > new file mode 100644
> > index 0000000000..08da1ab986
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0029-nios2-Define-
> > MUSL_DYNAMIC_LINKER.patch
> > @@ -0,0 +1,28 @@
> > +From e293df9a5734b43cb60cc47a3f5ff9af50fee3aa Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Tue, 2 Feb 2016 10:26:10 -0800
> > +Subject: [PATCH 29/37] nios2: Define MUSL_DYNAMIC_LINKER
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Marek Vasut <marex at denx.de>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/config/nios2/linux.h | 1 +
> > + 1 file changed, 1 insertion(+)
> > +
> > +diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h
> > +index 698734add35..eeee60ecfea 100644
> > +--- a/gcc/config/nios2/linux.h
> > ++++ b/gcc/config/nios2/linux.h
> > +@@ -30,6 +30,7 @@
> > + #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
> > +
> > + #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
> > ++#define MUSL_DYNAMIC_LINKER  "/lib/ld-musl-nios2.so.1"
> > +
> > + #undef LINK_SPEC
> > + #define LINK_SPEC LINK_SPEC_ENDIAN \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0030-Add-
> > ssp_nonshared-to-link-commandline-for-musl-targe.patch
> > b/meta/recipes-devtools/gcc/gcc-9.1/0030-Add-ssp_nonshared-to-link-
> > commandline-for-musl-targe.patch
> > new file mode 100644
> > index 0000000000..792e852614
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0030-Add-ssp_nonshared-to-
> > link-commandline-for-musl-targe.patch
> > @@ -0,0 +1,87 @@
> > +From 6232013df7fd65c994869789fa4b93c8d2303d1c Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Tue, 27 Jun 2017 18:10:54 -0700
> > +Subject: [PATCH 30/37] Add ssp_nonshared to link commandline for
> > musl targets
> > +
> > +when -fstack-protector options are enabled we need to
> > +link with ssp_shared on musl since it does not provide
> > +the __stack_chk_fail_local() so essentially it provides
> > +libssp but not libssp_nonshared something like
> > +TARGET_LIBC_PROVIDES_SSP_BUT_NOT_SSP_NONSHARED
> > + where-as for glibc the needed symbols
> > +are already present in libc_nonshared library therefore
> > +we do not need any library helper on glibc based systems
> > +but musl needs the libssp_noshared from gcc
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/config/linux.h          |  7 +++++++
> > + gcc/config/rs6000/linux.h   | 10 ++++++++++
> > + gcc/config/rs6000/linux64.h | 10 ++++++++++
> > + 3 files changed, 27 insertions(+)
> > +
> > +diff --git a/gcc/config/linux.h b/gcc/config/linux.h
> > +index 4b05d8e93d1..0ca117e2ed4 100644
> > +--- a/gcc/config/linux.h
> > ++++ b/gcc/config/linux.h
> > +@@ -195,6 +195,13 @@ see the files COPYING3 and COPYING.RUNTIME
> > respectively.  If not, see
> > +     { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },         \
> > +     { 0, 0, 0, 0, 0, 0 }                            \
> > +   }
> > ++#ifdef TARGET_LIBC_PROVIDES_SSP
> > ++#undef LINK_SSP_SPEC
> > ++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
> > ++                   "|fstack-protector-strong|fstack-protector-
> > explicit" \
> > ++                   ":-lssp_nonshared}"
> > ++#endif
> > ++
> > + #endif
> > +
> > + #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /*
> > uClinux */
> > +diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
> > +index 96b97877989..0bbde54c844 100644
> > +--- a/gcc/config/rs6000/linux.h
> > ++++ b/gcc/config/rs6000/linux.h
> > +@@ -107,6 +107,16 @@
> > +                                      " -m elf32ppclinux")
> > + #endif
> > +
> > ++/* link libssp_nonshared.a with musl */
> > ++#if DEFAULT_LIBC == LIBC_MUSL
> > ++#ifdef TARGET_LIBC_PROVIDES_SSP
> > ++#undef LINK_SSP_SPEC
> > ++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
> > ++                   "|fstack-protector-strong|fstack-protector-
> > explicit" \
> > ++                   ":-lssp_nonshared}"
> > ++#endif
> > ++#endif
> > ++
> > + #undef LINK_OS_LINUX_SPEC
> > + #define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared:
> > %{!static: \
> > +   %{!static-pie: \
> > +diff --git a/gcc/config/rs6000/linux64.h
> > b/gcc/config/rs6000/linux64.h
> > +index 982ca274621..83c07b275da 100644
> > +--- a/gcc/config/rs6000/linux64.h
> > ++++ b/gcc/config/rs6000/linux64.h
> > +@@ -461,6 +461,16 @@ extern int dot_symbols;
> > +                                        " -m elf64ppc")
> > + #endif
> > +
> > ++/* link libssp_nonshared.a with musl */
> > ++#if DEFAULT_LIBC == LIBC_MUSL
> > ++#ifdef TARGET_LIBC_PROVIDES_SSP
> > ++#undef LINK_SSP_SPEC
> > ++#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
> > ++                   "|fstack-protector-strong|fstack-protector-
> > explicit" \
> > ++                   ":-lssp_nonshared}"
> > ++#endif
> > ++#endif
> > ++
> > + #define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared:
> > %{!static: \
> > +   %{!static-pie: \
> > +     %{rdynamic:-export-dynamic} \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0031-libgcc-Add-knob-
> > to-use-ldbl-128-on-ppc.patch b/meta/recipes-devtools/gcc/gcc-
> > 9.1/0031-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch
> > new file mode 100644
> > index 0000000000..efa40bec5e
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0031-libgcc-Add-knob-to-use-
> > ldbl-128-on-ppc.patch
> > @@ -0,0 +1,125 @@
> > +From 1877b2ee5835a3716e6544706fbccd8c656e0a32 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 29 Apr 2016 20:03:28 +0000
> > +Subject: [PATCH 31/37] libgcc: Add knob to use ldbl-128 on ppc
> > +
> > +musl does not support ldbl 128 so we can not assume
> > +that linux as a whole supports ldbl-128 bits, instead
> > +act upon configure option passed to gcc and assume no
> > +on musl and yes otherwise if no option is passed since
> > +default behaviour is to assume ldbl128 it does not
> > +change the defaults
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + libgcc/Makefile.in           |  1 +
> > + libgcc/config/rs6000/t-linux |  5 ++++-
> > + libgcc/configure             | 18 ++++++++++++++++++
> > + libgcc/configure.ac          | 12 ++++++++++++
> > + 4 files changed, 35 insertions(+), 1 deletion(-)
> > + mode change 100644 => 100755 libgcc/configure
> > +
> > +diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
> > +index ea390a5bbea..114c7876304 100644
> > +--- a/libgcc/Makefile.in
> > ++++ b/libgcc/Makefile.in
> > +@@ -50,6 +50,7 @@ unwind_header = @unwind_header@
> > + md_unwind_header = @md_unwind_header@
> > + sfp_machine_header = @sfp_machine_header@
> > + thread_header = @thread_header@
> > ++with_ldbl128 = @with_ldbl128@
> > +
> > + host_noncanonical = @host_noncanonical@
> > + real_host_noncanonical = @real_host_noncanonical@
> > +diff --git a/libgcc/config/rs6000/t-linux b/libgcc/config/rs6000/t-
> > linux
> > +index 4f6d4c4a4d2..c50dd94a2da 100644
> > +--- a/libgcc/config/rs6000/t-linux
> > ++++ b/libgcc/config/rs6000/t-linux
> > +@@ -1,3 +1,6 @@
> > + SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-glibc.ver
> > +
> > +-HOST_LIBGCC2_CFLAGS += -mlong-double-128 -mno-minimal-toc
> > ++ifeq ($(with_ldbl128),yes)
> > ++HOST_LIBGCC2_CFLAGS += -mlong-double-128
> > ++endif
> > ++HOST_LIBGCC2_CFLAGS += -mno-minimal-toc
> > +diff --git a/libgcc/configure b/libgcc/configure
> > +old mode 100644
> > +new mode 100755
> > +index 36dbbc1f699..b5dd5c34e2a
> > +--- a/libgcc/configure
> > ++++ b/libgcc/configure
> > +@@ -651,6 +651,7 @@ build_vendor
> > + build_cpu
> > + build
> > + with_aix_soname
> > ++with_ldbl128
> > + enable_vtable_verify
> > + enable_gcov
> > + enable_shared
> > +@@ -702,6 +703,7 @@ with_ld
> > + enable_shared
> > + enable_gcov
> > + enable_vtable_verify
> > ++with_long_double_128
> > + with_aix_soname
> > + enable_version_specific_runtime_libs
> > + with_slibdir
> > +@@ -1363,6 +1365,7 @@ Optional Packages:
> > +   --with-target-subdir=SUBDIR      Configuring in a subdirectory
> > for target
> > +   --with-cross-host=HOST           Configuring with a cross
> > compiler
> > +   --with-ld               arrange to use the specified ld (full
> > pathname)
> > ++  --with-long-double-128  use 128-bit long double by default
> > +   --with-aix-soname=aix|svr4|both
> > +                           shared library versioning (aka "SONAME")
> > variant to
> > +                           provide on AIX
> > +@@ -2268,6 +2271,21 @@ fi
> > +
> > +
> > +
> > ++# Check whether --with-long-double-128 was given.
> > ++if test "${with_long_double_128+set}" = set; then :
> > ++  withval=$with_long_double_128;
> > with_ldbl128="$with_long_double_128"
> > ++else
> > ++  case "${host}" in
> > ++ power*-*-musl*)
> > ++   with_ldbl128="no";;
> > ++ *) with_ldbl128="yes";;
> > ++ esac
> > ++
> > ++fi
> > ++
> > ++
> > ++
> > ++
> > + # Check whether --with-aix-soname was given.
> > + if test "${with_aix_soname+set}" = set; then :
> > +   withval=$with_aix_soname; case "${host}:${enable_shared}" in
> > +diff --git a/libgcc/configure.ac b/libgcc/configure.ac
> > +index 8e96cafdf8b..9247856bf24 100644
> > +--- a/libgcc/configure.ac
> > ++++ b/libgcc/configure.ac
> > +@@ -82,6 +82,18 @@ AC_ARG_ENABLE(vtable-verify,
> > + [enable_vtable_verify=no])
> > + AC_SUBST(enable_vtable_verify)
> > +
> > ++AC_ARG_WITH(long-double-128,
> > ++[AS_HELP_STRING([--with-long-double-128],
> > ++    [use 128-bit long double by default])],
> > ++      with_ldbl128="$with_long_double_128",
> > ++[case "${host}" in
> > ++ power*-*-musl*)
> > ++   with_ldbl128="no";;
> > ++ *) with_ldbl128="yes";;
> > ++ esac
> > ++])
> > ++AC_SUBST(with_ldbl128)
> > ++
> > + AC_ARG_WITH(aix-soname,
> > + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
> > +     [shared library versioning (aka "SONAME") variant to provide on
> > AIX])],
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0032-Link-libgcc-
> > using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0032-Link-libgcc-using-LDFLAGS-not-just-
> > SHLIB_LDFLAGS.patch
> > new file mode 100644
> > index 0000000000..3de8345f93
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0032-Link-libgcc-using-
> > LDFLAGS-not-just-SHLIB_LDFLAGS.patch
> > @@ -0,0 +1,29 @@
> > +From 9d76a765a12677597134953352b25dc16dea721e Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Wed, 4 May 2016 21:11:34 -0700
> > +Subject: [PATCH 32/37] Link libgcc using LDFLAGS, not just
> > SHLIB_LDFLAGS
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Christopher Larson <chris_larson at mentor.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + libgcc/config/t-slibgcc | 2 +-
> > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > +
> > +diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
> > +index 099bf23e62f..436b277a79f 100644
> > +--- a/libgcc/config/t-slibgcc
> > ++++ b/libgcc/config/t-slibgcc
> > +@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
> > +     $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
> > +
> > + SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
> > +-    $(SHLIB_LDFLAGS) \
> > ++    $(LDFLAGS) $(SHLIB_LDFLAGS) \
> > +     -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
> > +     $(SHLIB_OBJS) $(SHLIB_LC) && \
> > +     rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0033-libgcc_s-Use-
> > alias-for-__cpu_indicator_init-instead-.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0033-libgcc_s-Use-alias-for-
> > __cpu_indicator_init-instead-.patch
> > new file mode 100644
> > index 0000000000..d8cc643211
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0033-libgcc_s-Use-alias-for-
> > __cpu_indicator_init-instead-.patch
> > @@ -0,0 +1,86 @@
> > +From 6c001e08bcd0568367a4aa2f991ab7d85b43a43d Mon Sep 17 00:00:00
> > 2001
> > +From: Szabolcs Nagy <nsz at port70.net>
> > +Date: Sat, 24 Oct 2015 20:09:53 +0000
> > +Subject: [PATCH 33/37] libgcc_s: Use alias for __cpu_indicator_init
> > instead of
> > + symver
> > +
> > +Adapter from
> > +
> > +https://gcc.gnu.org/ml/gcc-patches/2015-05/msg00899.html
> > +
> > +This fix was debated but hasnt been applied gcc upstream since
> > +they expect musl to support '@' in symbol versioning which is
> > +a sun/gnu versioning extention. This patch however avoids the
> > +need for the '@' symbols at all
> > +
> > +libgcc/Changelog:
> > +
> > +2015-05-11  Szabolcs Nagy  <szabolcs.nagy at arm.com>
> > +
> > +     * config/i386/cpuinfo.c (__cpu_indicator_init_local): Add.
> > +     (__cpu_indicator_init at GCC_4.8.0, __cpu_model at GCC_4.8.0):
> > Remove.
> > +
> > +     * config/i386/t-linux (HOST_LIBGCC2_CFLAGS): Remove
> > -DUSE_ELF_SYMVER.
> > +
> > +gcc/Changelog:
> > +
> > +2015-05-11  Szabolcs Nagy  <szabolcs.nagy at arm.com>
> > +
> > +     * config/i386/i386.c (ix86_expand_builtin): Make
> > __builtin_cpu_init
> > +     call __cpu_indicator_init_local instead of
> > __cpu_indicator_init.
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/config/i386/i386.c       | 4 ++--
> > + libgcc/config/i386/cpuinfo.c | 6 +++---
> > + libgcc/config/i386/t-linux   | 2 +-
> > + 3 files changed, 6 insertions(+), 6 deletions(-)
> > +
> > +diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> > +index 88557f26c44..839308e2799 100644
> > +--- a/gcc/config/i386/i386.c
> > ++++ b/gcc/config/i386/i386.c
> > +@@ -36577,10 +36577,10 @@ ix86_expand_builtin (tree exp, rtx target,
> > rtx subtarget,
> > +     {
> > +     case IX86_BUILTIN_CPU_INIT:
> > +       {
> > +-    /* Make it call __cpu_indicator_init in libgcc. */
> > ++    /* Make it call __cpu_indicator_init_local in libgcc.a. */
> > +     tree call_expr, fndecl, type;
> > +         type = build_function_type_list (integer_type_node,
> > NULL_TREE);
> > +-    fndecl = build_fn_decl ("__cpu_indicator_init", type);
> > ++    fndecl = build_fn_decl ("__cpu_indicator_init_local", type);
> > +     call_expr = build_call_expr (fndecl, 0);
> > +     return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
> > +       }
> > +diff --git a/libgcc/config/i386/cpuinfo.c
> > b/libgcc/config/i386/cpuinfo.c
> > +index d6cb2de6265..ce04ef78205 100644
> > +--- a/libgcc/config/i386/cpuinfo.c
> > ++++ b/libgcc/config/i386/cpuinfo.c
> > +@@ -504,7 +504,7 @@ __cpu_indicator_init (void)
> > +   return 0;
> > + }
> > +
> > +-#if defined SHARED && defined USE_ELF_SYMVER
> > +-__asm__ (".symver __cpu_indicator_init, __cpu_indicator_init at GCC_4.
> > 8.0");
> > +-__asm__ (".symver __cpu_model, __cpu_model at GCC_4.8.0");
> > ++#ifndef SHARED
> > ++int __cpu_indicator_init_local (void)
> > ++  __attribute__ ((weak, alias ("__cpu_indicator_init")));
> > + #endif
> > +diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux
> > +index 8506a635790..564296f788e 100644
> > +--- a/libgcc/config/i386/t-linux
> > ++++ b/libgcc/config/i386/t-linux
> > +@@ -3,5 +3,5 @@
> > + # t-slibgcc-elf-ver and t-linux
> > + SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-
> > glibc.ver
> > +
> > +-HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER
> > $(CET_FLAGS)
> > ++HOST_LIBGCC2_CFLAGS += -mlong-double-80 $(CET_FLAGS)
> > + CRTSTUFF_T_CFLAGS += $(CET_FLAGS)
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0034-sync-gcc-
> > stddef.h-with-musl.patch b/meta/recipes-devtools/gcc/gcc-9.1/0034-
> > sync-gcc-stddef.h-with-musl.patch
> > new file mode 100644
> > index 0000000000..a2c35ab537
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0034-sync-gcc-stddef.h-with-
> > musl.patch
> > @@ -0,0 +1,91 @@
> > +From 83ba95929c5908ae0f51ce148a30f85b085a178a Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Fri, 3 Feb 2017 12:56:00 -0800
> > +Subject: [PATCH 34/37] sync gcc stddef.h with musl
> > +
> > +musl defines ptrdiff_t size_t and wchar_t
> > +so dont define them here if musl is definining them
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/ginclude/stddef.h | 9 +++++++++
> > + 1 file changed, 9 insertions(+)
> > +
> > +diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
> > +index da692e1c01a..9a00c261adb 100644
> > +--- a/gcc/ginclude/stddef.h
> > ++++ b/gcc/ginclude/stddef.h
> > +@@ -128,6 +128,7 @@ _TYPE_wchar_t;
> > + #ifndef ___int_ptrdiff_t_h
> > + #ifndef _GCC_PTRDIFF_T
> > + #ifndef _PTRDIFF_T_DECLARED /* DragonFly */
> > ++#ifndef __DEFINED_ptrdiff_t /* musl */
> > + #define _PTRDIFF_T
> > + #define _T_PTRDIFF_
> > + #define _T_PTRDIFF
> > +@@ -137,10 +138,12 @@ _TYPE_wchar_t;
> > + #define ___int_ptrdiff_t_h
> > + #define _GCC_PTRDIFF_T
> > + #define _PTRDIFF_T_DECLARED
> > ++#define __DEFINED_ptrdiff_t /* musl */
> > + #ifndef __PTRDIFF_TYPE__
> > + #define __PTRDIFF_TYPE__ long int
> > + #endif
> > + typedef __PTRDIFF_TYPE__ ptrdiff_t;
> > ++#endif /* __DEFINED_ptrdiff_t */
> > + #endif /* _PTRDIFF_T_DECLARED */
> > + #endif /* _GCC_PTRDIFF_T */
> > + #endif /* ___int_ptrdiff_t_h */
> > +@@ -178,6 +181,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
> > + #ifndef _GCC_SIZE_T
> > + #ifndef _SIZET_
> > + #ifndef __size_t
> > ++#ifndef __DEFINED_size_t /* musl */
> > + #define __size_t__  /* BeOS */
> > + #define __SIZE_T__  /* Cray Unicos/Mk */
> > + #define _SIZE_T
> > +@@ -194,6 +198,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
> > + #define ___int_size_t_h
> > + #define _GCC_SIZE_T
> > + #define _SIZET_
> > ++#define __DEFINED_size_t /* musl */
> > + #if defined (__FreeBSD__) \
> > +   || defined(__DragonFly__) \
> > +   || defined(__FreeBSD_kernel__) \
> > +@@ -228,6 +233,7 @@ typedef long ssize_t;
> > + #endif /* _SIZE_T */
> > + #endif /* __SIZE_T__ */
> > + #endif /* __size_t__ */
> > ++#endif /* __DEFINED_size_t */
> > + #undef      __need_size_t
> > + #endif /* _STDDEF_H or __need_size_t.  */
> > +
> > +@@ -257,6 +263,7 @@ typedef long ssize_t;
> > + #ifndef ___int_wchar_t_h
> > + #ifndef __INT_WCHAR_T_H
> > + #ifndef _GCC_WCHAR_T
> > ++#ifndef __DEFINED_wchar_t /* musl */
> > + #define __wchar_t__ /* BeOS */
> > + #define __WCHAR_T__ /* Cray Unicos/Mk */
> > + #define _WCHAR_T
> > +@@ -272,6 +279,7 @@ typedef long ssize_t;
> > + #define __INT_WCHAR_T_H
> > + #define _GCC_WCHAR_T
> > + #define _WCHAR_T_DECLARED
> > ++#define __DEFINED_wchar_t /* musl */
> > +
> > + /* On BSD/386 1.1, at least, machine/ansi.h defines _BSD_WCHAR_T_
> > +    instead of _WCHAR_T_, and _BSD_RUNE_T_ (which, unlike the other
> > +@@ -337,6 +345,7 @@ typedef __WCHAR_TYPE__ wchar_t;
> > + #endif
> > + #endif /* __WCHAR_T__ */
> > + #endif /* __wchar_t__ */
> > ++#endif /* __DEFINED_wchar_t musl */
> > + #undef      __need_wchar_t
> > + #endif /* _STDDEF_H or __need_wchar_t.  */
> > +
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0035-fix-segmentation-
> > fault-in-precompiled-header-generat.patch b/meta/recipes-
> > devtools/gcc/gcc-9.1/0035-fix-segmentation-fault-in-precompiled-
> > header-generat.patch
> > new file mode 100644
> > index 0000000000..ad1f6e7d10
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0035-fix-segmentation-fault-
> > in-precompiled-header-generat.patch
> > @@ -0,0 +1,60 @@
> > +From c4f89e62c56975fee99304c9cbbe5be6e8bc9ed6 Mon Sep 17 00:00:00
> > 2001
> > +From: Juro Bystricky <juro.bystricky at intel.com>
> > +Date: Mon, 19 Mar 2018 22:31:20 -0700
> > +Subject: [PATCH 35/37] fix segmentation fault in precompiled header
> > generation
> > +
> > +Prevent a segmentation fault which occurs when using incorrect
> > +structure trying to access name of some named operators, such as
> > +CPP_NOT, CPP_AND etc. "token->val.node.spelling" cannot be used in
> > +those cases, as is may not be initialized at all.
> > +
> > +[YOCTO #11738]
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Juro Bystricky <juro.bystricky at intel.com>
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + libcpp/lex.c | 26 +++++++++++++++++++++-----
> > + 1 file changed, 21 insertions(+), 5 deletions(-)
> > +
> > +diff --git a/libcpp/lex.c b/libcpp/lex.c
> > +index eedfcbb3146..15040a1b1f0 100644
> > +--- a/libcpp/lex.c
> > ++++ b/libcpp/lex.c
> > +@@ -3280,11 +3280,27 @@ cpp_spell_token (cpp_reader *pfile, const
> > cpp_token *token,
> > +     spell_ident:
> > +     case SPELL_IDENT:
> > +       if (forstring)
> > +-    {
> > +-      memcpy (buffer, NODE_NAME (token->val.node.spelling),
> > +-              NODE_LEN (token->val.node.spelling));
> > +-      buffer += NODE_LEN (token->val.node.spelling);
> > +-    }
> > ++        {
> > ++          if (token->type == CPP_NAME)
> > ++            {
> > ++              memcpy (buffer, NODE_NAME (token->val.node.spelling),
> > ++                    NODE_LEN (token->val.node.spelling));
> > ++              buffer += NODE_LEN (token->val.node.spelling);
> > ++              break;
> > ++            }
> > ++          /* NAMED_OP, cannot use node.spelling */
> > ++          if (token->flags & NAMED_OP)
> > ++            {
> > ++              const char *str = cpp_named_operator2name (token-
> > >type);
> > ++              if (str)
> > ++                {
> > ++                  size_t len = strlen(str);
> > ++                  memcpy(buffer, str, len);
> > ++                  buffer += len;
> > ++                }
> > ++              break;
> > ++            }
> > ++        }
> > +       else
> > +     buffer = _cpp_spell_ident_ucns (buffer, token->val.node.node);
> > +       break;
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0036-Fix-for-
> > testsuite-failure.patch b/meta/recipes-devtools/gcc/gcc-9.1/0036-Fix-
> > for-testsuite-failure.patch
> > new file mode 100644
> > index 0000000000..4fb0698afc
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0036-Fix-for-testsuite-
> > failure.patch
> > @@ -0,0 +1,258 @@
> > +From 8d773b5ba6cf396ca76611963127ba2b516272b3 Mon Sep 17 00:00:00
> > 2001
> > +From: RAGHUNATH LOLUR <raghunath.lolur at kpit.com>
> > +Date: Wed, 6 Dec 2017 22:52:26 -0800
> > +Subject: [PATCH 36/37] Fix for testsuite failure
> > +
> > +2017-11-16  Raghunath Lolur  <raghunath.lolur at kpit.com>
> > +
> > +     * gcc.dg/pr56275.c: If SSE is disabled, ensure that
> > +     "-mfpmath" is not set to use SSE. Set "-mfpmath=387".
> > +     * gcc.dg/pr68306.c: Likewise
> > +     * gcc.dg/pr68306-2.c: Likewise
> > +     * gcc.dg/pr68306-3.c: Likewise
> > +     * gcc.dg/pr69634.c: Likewise
> > +     * gcc.target/i386/amd64-abi-1.c: Likewise
> > +     * gcc.target/i386/funcspec-6.c: Likewise
> > +     * gcc.target/i386/interrupt-387-err-1.c: Likewise
> > +     * gcc.target/i386/isa-14.c: Likewise
> > +     * gcc.target/i386/pr44948-2b.c: Likewise
> > +     * gcc.target/i386/pr53425-1.c: Likewise
> > +     * gcc.target/i386/pr53425-2.c: Likewise
> > +     * gcc.target/i386/pr55247.c: Likewise
> > +     * gcc.target/i386/pr59644.c: Likewise
> > +     * gcc.target/i386/pr62120.c: Likewise
> > +     * gcc.target/i386/pr70467-1.c: Likewise
> > +     * gcc.target/i386/warn-vect-op-1.c: Likewise
> > +
> > +If -Wall, -Werror are used during compilation various test cases
> > fail
> > +to compile.
> > +
> > +If SSE is disabled, be sure to -mfpmath=387 to resolve this.
> > +
> > +This patch removes the changes to Changelog from the original patch.
> > +This will help us avoid conflicts.
> > +
> > +Upstream-Status: Pending
> > +
> > +Signed-off-by: Mark Hatle <mark.hatle at windriver.com>
> > +---
> > + gcc/testsuite/gcc.dg/pr56275.c                      | 2 +-
> > + gcc/testsuite/gcc.dg/pr68306-2.c                    | 2 +-
> > + gcc/testsuite/gcc.dg/pr68306-3.c                    | 2 +-
> > + gcc/testsuite/gcc.dg/pr68306.c                      | 2 +-
> > + gcc/testsuite/gcc.dg/pr69634.c                      | 2 +-
> > + gcc/testsuite/gcc.target/i386/amd64-abi-1.c         | 2 +-
> > + gcc/testsuite/gcc.target/i386/funcspec-6.c          | 1 +
> > + gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c | 2 +-
> > + gcc/testsuite/gcc.target/i386/isa-14.c              | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr44948-2b.c          | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr53425-1.c           | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr53425-2.c           | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr55247.c             | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr59644.c             | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr62120.c             | 2 +-
> > + gcc/testsuite/gcc.target/i386/pr70467-1.c           | 2 +-
> > + gcc/testsuite/gcc.target/i386/warn-vect-op-1.c      | 2 +-
> > + 17 files changed, 17 insertions(+), 16 deletions(-)
> > +
> > +diff --git a/gcc/testsuite/gcc.dg/pr56275.c
> > b/gcc/testsuite/gcc.dg/pr56275.c
> > +index b901bb2b199..a4f6c95e1a1 100644
> > +--- a/gcc/testsuite/gcc.dg/pr56275.c
> > ++++ b/gcc/testsuite/gcc.dg/pr56275.c
> > +@@ -1,6 +1,6 @@
> > + /* { dg-do compile } */
> > + /* { dg-options "-O2" } */
> > +-/* { dg-additional-options "-mno-sse" { target { i?86-*-* x86_64-*-
> > * } } } */
> > ++/* { dg-additional-options "-mno-sse -mfpmath=387" { target { i?86-
> > *-* x86_64-*-* } } } */
> > +
> > + typedef long long v2tw __attribute__ ((vector_size (2 * sizeof
> > (long long))));
> > +
> > +diff --git a/gcc/testsuite/gcc.dg/pr68306-2.c
> > b/gcc/testsuite/gcc.dg/pr68306-2.c
> > +index 4672ebe7987..2a368c484b6 100644
> > +--- a/gcc/testsuite/gcc.dg/pr68306-2.c
> > ++++ b/gcc/testsuite/gcc.dg/pr68306-2.c
> > +@@ -1,6 +1,6 @@
> > + /* { dg-do compile } */
> > + /* { dg-options "-O3" } */
> > +-/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-*
> > x86_64-*-* } } */
> > ++/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" {
> > target i?86-*-* x86_64-*-* } } */
> > +
> > + struct {
> > +     int tz_minuteswest;
> > +diff --git a/gcc/testsuite/gcc.dg/pr68306-3.c
> > b/gcc/testsuite/gcc.dg/pr68306-3.c
> > +index f5a8c102cf8..df3390c64c2 100644
> > +--- a/gcc/testsuite/gcc.dg/pr68306-3.c
> > ++++ b/gcc/testsuite/gcc.dg/pr68306-3.c
> > +@@ -1,6 +1,6 @@
> > + /* { dg-do compile } */
> > + /* { dg-options "-O3" } */
> > +-/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-*
> > x86_64-*-* } } */
> > ++/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" {
> > target i?86-*-* x86_64-*-* } } */
> > + /* { dg-additional-options "-mno-altivec -mno-vsx" { target
> > powerpc*-*-* } } */
> > +
> > + extern void fn2();
> > +diff --git a/gcc/testsuite/gcc.dg/pr68306.c
> > b/gcc/testsuite/gcc.dg/pr68306.c
> > +index 54e5b40f221..0813389e2c1 100644
> > +--- a/gcc/testsuite/gcc.dg/pr68306.c
> > ++++ b/gcc/testsuite/gcc.dg/pr68306.c
> > +@@ -1,6 +1,6 @@
> > + /* { dg-do compile } */
> > + /* { dg-options "-O3" } */
> > +-/* { dg-additional-options "-mno-sse -mno-mmx" { target i?86-*-*
> > x86_64-*-* } } */
> > ++/* { dg-additional-options "-mno-sse -mno-mmx -mfpmath=387" {
> > target i?86-*-* x86_64-*-* } } */
> > +
> > + enum powerpc_pmc_type { PPC_PMC_IBM };
> > + struct {
> > +diff --git a/gcc/testsuite/gcc.dg/pr69634.c
> > b/gcc/testsuite/gcc.dg/pr69634.c
> > +index 60a56149463..bcc23f9ccd6 100644
> > +--- a/gcc/testsuite/gcc.dg/pr69634.c
> > ++++ b/gcc/testsuite/gcc.dg/pr69634.c
> > +@@ -1,6 +1,6 @@
> > + /* { dg-do compile } */
> > + /* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-vrp
> > -fcompare-debug -Wno-psabi" } */
> > +-/* { dg-additional-options "-mno-sse" { target i?86-*-* x86_64-*-*
> > } } */
> > ++/* { dg-additional-options "-mno-sse -mfpmath=387" { target i?86-*-
> > * x86_64-*-* } } */
> > + /* { dg-require-effective-target scheduling } */
> > +
> > + typedef unsigned short u16;
> > +diff --git a/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
> > b/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
> > +index 69fde57bf06..7f1f1c03edf 100644
> > +--- a/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
> > ++++ b/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
> > +@@ -1,5 +1,5 @@
> > + /* { dg-do compile { target { ! ia32 } } } */
> > +-/* { dg-options "-mno-sse" } */
> > ++/* { dg-options "-mno-sse -mfpmath=387" } */
> > + /* { dg-additional-options "-mabi=sysv" { target *-*-mingw* } } */
> > +
> > + double foo(void) { return 0; }      /* { dg-error "SSE disabled" }
> > */
> > +diff --git a/gcc/testsuite/gcc.target/i386/funcspec-6.c
> > b/gcc/testsuite/gcc.target/i386/funcspec-6.c
> > +index ea896b7ebfd..bf15569b826 100644
> > +--- a/gcc/testsuite/gcc.target/i386/funcspec-6.c
> > ++++ b/gcc/testsuite/gcc.target/i386/funcspec-6.c
> > +@@ -1,6 +1,7 @@
> > + /* Test whether all of the 64-bit function specific options are
> > accepted
> > +    without error.  */
> > + /* { dg-do compile { target { ! ia32 } } } */
> > ++/* { dg-additional-options "-mfpmath=387" } */
> > +
> > + #include "funcspec-56.inc"
> > +
> > +diff --git a/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
> > b/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
> > +index 3fbdc881dda..6b4d9d1252a 100644
> > +--- a/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
> > ++++ b/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
> > +@@ -1,5 +1,5 @@
> > + /* { dg-do compile } */
> > +-/* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu
> > -m80387" } */
> > ++/* { dg-options "-O2 -mgeneral-regs-only -mno-cld -mno-iamcu
> > -m80387 -mfpmath=387" } */
> > +
> > + typedef unsigned int uword_t __attribute__ ((mode (__word__)));
> > +
> > +diff --git a/gcc/testsuite/gcc.target/i386/isa-14.c
> > b/gcc/testsuite/gcc.target/i386/isa-14.c
> > +index 5d49e6e77fe..1de2db92bdd 100644
> > +--- a/gcc/testsuite/gcc.target/i386/isa-14.c
> > ++++ b/gcc/testsuite/gcc.target/i386/isa-14.c
> > +@@ -1,5 +1,5 @@
> > + /* { dg-do run } */
> > +-/* { dg-options "-march=x86-64 -msse4a -mfma4 -mno-sse" } */
> > ++/* { dg-options "-march=x86-64 -msse4a -mfma4 -mno-sse
> > -mfpmath=387" } */
> > +
> > + extern void abort (void);
> > +
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr44948-2b.c
> > b/gcc/testsuite/gcc.target/i386/pr44948-2b.c
> > +index fa1769b62fb..f79fb12726f 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr44948-2b.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr44948-2b.c
> > +@@ -1,5 +1,5 @@
> > + /* { dg-do compile } */
> > +-/* { dg-options "-O -mno-sse -Wno-psabi -mtune=generic" } */
> > ++/* { dg-options "-O -mno-sse -Wno-psabi -mtune=generic
> > -mfpmath=387" } */
> > +
> > + struct A
> > + {
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr53425-1.c
> > b/gcc/testsuite/gcc.target/i386/pr53425-1.c
> > +index 2e89ff7d81d..6339bf6b736 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr53425-1.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr53425-1.c
> > +@@ -1,6 +1,6 @@
> > + /* PR target/53425 */
> > + /* { dg-do compile { target { ! ia32 } } } */
> > +-/* { dg-options "-O2 -mno-sse" } */
> > ++/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
> > + /* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
> > +
> > + typedef double __v2df __attribute__ ((__vector_size__ (16)));
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr53425-2.c
> > b/gcc/testsuite/gcc.target/i386/pr53425-2.c
> > +index 61f6283dbe9..2c5a55f0ac3 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr53425-2.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr53425-2.c
> > +@@ -1,6 +1,6 @@
> > + /* PR target/53425 */
> > + /* { dg-do compile { target { ! ia32 } } } */
> > +-/* { dg-options "-O2 -mno-sse" } */
> > ++/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
> > + /* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
> > +
> > + typedef float __v2sf __attribute__ ((__vector_size__ (8)));
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr55247.c
> > b/gcc/testsuite/gcc.target/i386/pr55247.c
> > +index 23366d0909d..9810e3abb76 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr55247.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr55247.c
> > +@@ -1,6 +1,6 @@
> > + /* { dg-do compile { target { ! ia32 } } } */
> > + /* { dg-require-effective-target maybe_x32 } */
> > +-/* { dg-options "-O2 -mno-sse -mno-mmx -mx32 -maddress-mode=long" }
> > */
> > ++/* { dg-options "-O2 -mno-sse -mno-mmx -mx32 -maddress-mode=long
> > -mfpmath=387" } */
> > +
> > + typedef unsigned int uint32_t;
> > + typedef uint32_t Elf32_Word;
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr59644.c
> > b/gcc/testsuite/gcc.target/i386/pr59644.c
> > +index 96006b3e338..4287e4538bf 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr59644.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr59644.c
> > +@@ -1,6 +1,6 @@
> > + /* PR target/59644 */
> > + /* { dg-do run { target lp64 } } */
> > +-/* { dg-options "-O2 -ffreestanding -mno-sse -mpreferred-stack-
> > boundary=3 -maccumulate-outgoing-args -mno-red-zone" } */
> > ++/* { dg-options "-O2 -ffreestanding -mno-sse -mpreferred-stack-
> > boundary=3 -maccumulate-outgoing-args -mno-red-zone -mfpmath=387" }
> > */
> > +
> > + /* This test uses __builtin_trap () instead of e.g. abort,
> > +    because due to -mpreferred-stack-boundary=3 it should not call
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr62120.c
> > b/gcc/testsuite/gcc.target/i386/pr62120.c
> > +index bfb8c4703eb..ed04cf181f3 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr62120.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr62120.c
> > +@@ -1,5 +1,5 @@
> > + /* { dg-do compile } */
> > +-/* { dg-options "-mno-sse" } */
> > ++/* { dg-options "-mno-sse -mfpmath=387" } */
> > +
> > + void foo ()
> > + {
> > +diff --git a/gcc/testsuite/gcc.target/i386/pr70467-1.c
> > b/gcc/testsuite/gcc.target/i386/pr70467-1.c
> > +index 4e112c88d07..bcfb396a68d 100644
> > +--- a/gcc/testsuite/gcc.target/i386/pr70467-1.c
> > ++++ b/gcc/testsuite/gcc.target/i386/pr70467-1.c
> > +@@ -1,6 +1,6 @@
> > + /* PR rtl-optimization/70467 */
> > + /* { dg-do compile } */
> > +-/* { dg-options "-O2 -mno-sse" } */
> > ++/* { dg-options "-O2 -mno-sse -mfpmath=387" } */
> > +
> > + void foo (unsigned long long *);
> > +
> > +diff --git a/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
> > b/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
> > +index 6cda1534311..26e37f5b8ba 100644
> > +--- a/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
> > ++++ b/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
> > +@@ -1,5 +1,5 @@
> > + /* { dg-do compile { target { ! ia32 } } }  */
> > +-/* { dg-options "-mno-sse -Wvector-operation-performance" }  */
> > ++/* { dg-options "-mno-sse -Wvector-operation-performance
> > -mfpmath=387" }  */
> > + #define vector(elcount, type)  \
> > + __attribute__((vector_size((elcount)*sizeof(type)))) type
> > +
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-9.1/0037-Re-introduce-spe-
> > commandline-options.patch b/meta/recipes-devtools/gcc/gcc-9.1/0037-
> > Re-introduce-spe-commandline-options.patch
> > new file mode 100644
> > index 0000000000..251097e131
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-9.1/0037-Re-introduce-spe-
> > commandline-options.patch
> > @@ -0,0 +1,41 @@
> > +From 49d3dbe240226206d09ff646499cd398cb60bd12 Mon Sep 17 00:00:00
> > 2001
> > +From: Khem Raj <raj.khem at gmail.com>
> > +Date: Wed, 6 Jun 2018 12:10:22 -0700
> > +Subject: [PATCH 37/37] Re-introduce spe commandline options
> > +
> > +This should ensure that we keep accepting
> > +spe options
> > +
> > +Upstream-Status: Inappropriate [SPE port is removed from rs600 port]
> > +
> > +Signed-off-by: Khem Raj <raj.khem at gmail.com>
> > +---
> > + gcc/config/rs6000/rs6000.opt | 12 ++++++++++++
> > + 1 file changed, 12 insertions(+)
> > +
> > +diff --git a/gcc/config/rs6000/rs6000.opt
> > b/gcc/config/rs6000/rs6000.opt
> > +index 2e90bf37747..ebd297da46b 100644
> > +--- a/gcc/config/rs6000/rs6000.opt
> > ++++ b/gcc/config/rs6000/rs6000.opt
> > +@@ -345,6 +345,18 @@ mdebug=
> > + Target RejectNegative Joined
> > + -mdebug=    Enable debug output.
> > +
> > ++mspe
> > ++Target Var(rs6000_spe) Save
> > ++Generate SPE SIMD instructions on E500.
> > ++
> > ++mabi=spe
> > ++Target RejectNegative Var(rs6000_spe_abi) Save
> > ++Use the SPE ABI extensions.
> > ++
> > ++mabi=no-spe
> > ++Target RejectNegative Var(rs6000_spe_abi, 0)
> > ++Do not use the SPE ABI extensions.
> > ++
> > + mabi=altivec
> > + Target RejectNegative Var(rs6000_altivec_abi) Save
> > + Use the AltiVec ABI extensions.
> > +--
> > +2.20.1
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-cross-canadian_9.1.bb
> > b/meta/recipes-devtools/gcc/gcc-cross-canadian_9.1.bb
> > new file mode 100644
> > index 0000000000..bf53c5cd78
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-cross-canadian_9.1.bb
> > @@ -0,0 +1,5 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require gcc-cross-canadian.inc
> > +
> > +
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-cross_9.1.bb
> > b/meta/recipes-devtools/gcc/gcc-cross_9.1.bb
> > new file mode 100644
> > index 0000000000..b43cca0c52
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-cross_9.1.bb
> > @@ -0,0 +1,3 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require gcc-cross.inc
> > +
> > diff --git a/meta/recipes-devtools/gcc/gcc-crosssdk_9.1.bb
> > b/meta/recipes-devtools/gcc/gcc-crosssdk_9.1.bb
> > new file mode 100644
> > index 0000000000..40a6c4feff
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-crosssdk_9.1.bb
> > @@ -0,0 +1,2 @@
> > +require recipes-devtools/gcc/gcc-cross_${PV}.bb
> > +require gcc-crosssdk.inc
> > diff --git a/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
> > b/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
> > new file mode 100644
> > index 0000000000..a1c7a76d0b
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
> > @@ -0,0 +1,12 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require gcc-runtime.inc
> > +
> > +# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
> > +EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
> > +
> > +FILES_libgomp-dev += "\
> > +    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
> > +"
> > +
> > +# Building with thumb enabled on armv6t fails
> > +ARM_INSTRUCTION_SET_armv6 = "arm"
> > diff --git a/meta/recipes-devtools/gcc/gcc-sanitizers_9.1.bb
> > b/meta/recipes-devtools/gcc/gcc-sanitizers_9.1.bb
> > new file mode 100644
> > index 0000000000..f3c7058114
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-sanitizers_9.1.bb
> > @@ -0,0 +1,7 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require gcc-sanitizers.inc
> > +
> > +# Building with thumb enabled on armv4t armv5t fails with
> > +# sanitizer_linux.s:5749: Error: lo register required -- `ldr
> > ip,[sp],#8'
> > +ARM_INSTRUCTION_SET_armv4 = "arm"
> > +ARM_INSTRUCTION_SET_armv5 = "arm"
> > diff --git a/meta/recipes-devtools/gcc/gcc-source_9.1.bb
> > b/meta/recipes-devtools/gcc/gcc-source_9.1.bb
> > new file mode 100644
> > index 0000000000..b890fa33ea
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc-source_9.1.bb
> > @@ -0,0 +1,4 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require recipes-devtools/gcc/gcc-source.inc
> > +
> > +EXCLUDE_FROM_WORLD = "1"
> > diff --git a/meta/recipes-devtools/gcc/gcc_9.1.bb b/meta/recipes-
> > devtools/gcc/gcc_9.1.bb
> > new file mode 100644
> > index 0000000000..7d93590588
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/gcc_9.1.bb
> > @@ -0,0 +1,14 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require gcc-target.inc
> > +
> > +# Building with thumb enabled on armv4t armv5t fails with
> > +# | gcc-4.8.1-r0/gcc-
> > 4.8.1/gcc/cp/decl.c:7438:(.text.unlikely+0x2fa): relocation truncated
> > to fit: R_ARM_THM_CALL against symbol `fancy_abort(char const*, int,
> > char const*)' defined in .glue_7 section in linker stubs
> > +# | gcc-4.8.1-r0/gcc-
> > 4.8.1/gcc/cp/decl.c:7442:(.text.unlikely+0x318): additional
> > relocation overflows omitted from the output
> > +ARM_INSTRUCTION_SET_armv4 = "arm"
> > +ARM_INSTRUCTION_SET_armv5 = "arm"
> > +
> > +ARMFPARCHEXT_armv6 = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard'
> > else ''}"
> > +ARMFPARCHEXT_armv7a = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard'
> > else ''}"
> > +ARMFPARCHEXT_armv7ve = "${@'+fp' if d.getVar('TARGET_FPU') == 'hard'
> > else ''}"
> > +
> > +BBCLASSEXTEND = "nativesdk"
> > diff --git a/meta/recipes-devtools/gcc/libgcc-initial_9.1.bb
> > b/meta/recipes-devtools/gcc/libgcc-initial_9.1.bb
> > new file mode 100644
> > index 0000000000..0c698c26ec
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/libgcc-initial_9.1.bb
> > @@ -0,0 +1,5 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require libgcc-initial.inc
> > +
> > +# Building with thumb enabled on armv6t fails
> > +ARM_INSTRUCTION_SET_armv6 = "arm"
> > diff --git a/meta/recipes-devtools/gcc/libgcc_9.1.bb b/meta/recipes-
> > devtools/gcc/libgcc_9.1.bb
> > new file mode 100644
> > index 0000000000..ea210a1130
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/libgcc_9.1.bb
> > @@ -0,0 +1,5 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require libgcc.inc
> > +
> > +# Building with thumb enabled on armv6t fails
> > +ARM_INSTRUCTION_SET_armv6 = "arm"
> > diff --git a/meta/recipes-devtools/gcc/libgfortran_9.1.bb
> > b/meta/recipes-devtools/gcc/libgfortran_9.1.bb
> > new file mode 100644
> > index 0000000000..71dd8b4bdc
> > --- /dev/null
> > +++ b/meta/recipes-devtools/gcc/libgfortran_9.1.bb
> > @@ -0,0 +1,3 @@
> > +require recipes-devtools/gcc/gcc-${PV}.inc
> > +require libgfortran.inc
> > +
> > --
> > 2.21.0
> >
>


More information about the Openembedded-core mailing list