mirror of
https://github.com/lingble/meta-tegra.git
synced 2025-11-01 12:57:53 +00:00
gcc-for-nvcc: update to gcc 10.3.0
imported from OE-Core hardknott, and rename the recipes to be 'gcc-for-nvcc' instead of including a repeat of the major version number. Signed-off-by: Matt Madison <matt@madison.systems>
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
# CUDA requires gcc/g++ 8, so add that compiler and its runtime as
|
||||
# CUDA requires gcc/g++ 10, so add that compiler and its runtime as
|
||||
# dependencies, and set CC_FOR_CUDA and CXX_FOR_CUDA to point to that compiler.
|
||||
DEPENDS:append:cuda = " virtual/${TARGET_PREFIX}cuda-gcc gcc-8-runtime"
|
||||
DEPENDS:append:cuda = " virtual/${TARGET_PREFIX}cuda-gcc gcc-for-nvcc-runtime"
|
||||
CUDA_HOST_TOOLCHAIN_SUFFIX ??= ""
|
||||
CUDA_HOST_TOOLCHAIN_SUFFIX:cuda = "-8.5.0"
|
||||
CUDA_HOST_TOOLCHAIN_SUFFIX:cuda = "-10.3.0"
|
||||
CC_FOR_CUDA ?= "${CCACHE}${HOST_PREFIX}gcc${CUDA_HOST_TOOLCHAIN_SUFFIX} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
|
||||
CXX_FOR_CUDA ?= "${CCACHE}${HOST_PREFIX}g++${CUDA_HOST_TOOLCHAIN_SUFFIX} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}"
|
||||
PACKAGE_ARCH:cuda = "${TEGRA_PKGARCH}"
|
||||
|
||||
@@ -52,7 +52,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS += "\
|
||||
libdrm->libdrm-nvdc \
|
||||
libdrm-nvdc->tegra-libraries \
|
||||
tegra-nvs-service->tegra-nvs-base \
|
||||
gcc-8-cross-${TARGET_ARCH}->linux-libc-headers \
|
||||
gcc-for-nvcc-cross-${TARGET_ARCH}->linux-libc-headers \
|
||||
"
|
||||
|
||||
addpylib ${LAYERDIR}/lib oe4t
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
RDEPENDS:${PN}:append:tegra = " libgcc-8-dev gcc-8-runtime-dev"
|
||||
RDEPENDS:${PN}:append:tegra = " libgcc-for-nvcc-dev gcc-for-nvcc-runtime-dev"
|
||||
PACKAGE_ARCH:tegra = "${TEGRA_PKGARCH}"
|
||||
|
||||
@@ -1 +1 @@
|
||||
RDEPENDS:${PN}:append:tegra = " gcc-8-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
RDEPENDS:${PN}:append:tegra = " gcc-for-nvcc-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
@@ -42,8 +42,8 @@ S = "${WORKDIR}/${BP}"
|
||||
B = "${S}"
|
||||
|
||||
CUDA_PATH = "/usr/local/cuda-${CUDA_VERSION}"
|
||||
CC_FIRST = "${@cuda_extract_compiler('CC_FOR_CUDA', d)[0]}"
|
||||
CC_REST = "${@cuda_extract_compiler('CC_FOR_CUDA', d, prefix='')[1]}"
|
||||
CC_FIRST = "${@cuda_extract_compiler('CXX_FOR_CUDA', d)[0]}"
|
||||
CC_REST = "${@cuda_extract_compiler('CXX_FOR_CUDA', d, prefix='')[1]}"
|
||||
CFLAGS += "-I=${CUDA_PATH}/include"
|
||||
EXTRA_NVCCFLAGS = "-I${STAGING_DIR_HOST}${CUDA_PATH}/include"
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
require gcc-${PV}.inc
|
||||
require gcc-8-cross-canadian.inc
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
require gcc-${PV}.inc
|
||||
require gcc-8-cross.inc
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
require gcc-8-cross_${PV}.bb
|
||||
require gcc-8-crosssdk.inc
|
||||
@@ -1,8 +0,0 @@
|
||||
require gcc-${PV}.inc
|
||||
require gcc-8-runtime.inc
|
||||
|
||||
# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
|
||||
EXTRA_OECONF:append:arm = " libat_cv_have_ifunc=no "
|
||||
|
||||
# Building with thumb enabled on armv6t fails
|
||||
ARM_INSTRUCTION_SET:armv6 = "arm"
|
||||
@@ -1,11 +0,0 @@
|
||||
do_fetch() {
|
||||
:
|
||||
}
|
||||
do_fetch[noexec] = "1"
|
||||
deltask do_unpack
|
||||
deltask do_patch
|
||||
|
||||
SRC_URI = ""
|
||||
|
||||
do_configure[depends] += "gcc-source-${PV}:do_preconfigure"
|
||||
do_populate_lic[depends] += "gcc-source-${PV}:do_unpack"
|
||||
@@ -1,116 +0,0 @@
|
||||
require gcc-8-common.inc
|
||||
|
||||
# Third digit in PV should be incremented after a minor release
|
||||
|
||||
PV = "8.5.0"
|
||||
|
||||
# BINV should be incremented to a revision after a minor gcc release
|
||||
|
||||
BINV = "8.5.0"
|
||||
|
||||
FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-8.5:"
|
||||
|
||||
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 & GPL-3.0-only"
|
||||
|
||||
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"
|
||||
#SRCREV = "f7cf798b73fd1a07098f9a490deec1e2a36e0bed"
|
||||
#BASEURI ?= "git://github.com/gcc-mirror/gcc;branch=gcc-6-branch;protocol=git"
|
||||
#BASEURI ?= "http://mirrors.concertpass.com/gcc/snapshots/${RELEASE}/gcc-${RELEASE}.tar.xz"
|
||||
|
||||
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-Disable-the-MULTILIB_OSDIRNAMES-and-other-multilib-o.patch \
|
||||
file://0021-Ensure-target-gcc-headers-can-be-included.patch \
|
||||
file://0022-gcc-4.8-won-t-build-with-disable-dependency-tracking.patch \
|
||||
file://0023-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
|
||||
file://0024-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
|
||||
file://0025-aarch64-Add-support-for-musl-ldso.patch \
|
||||
file://0026-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
|
||||
file://0027-handle-sysroot-support-for-nativesdk-gcc.patch \
|
||||
file://0028-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
|
||||
file://0029-Fix-various-_FOR_BUILD-and-related-variables.patch \
|
||||
file://0030-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
|
||||
file://0031-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
|
||||
file://0032-libgcc-Add-knob-to-use-ldbl-128-on-ppc.patch \
|
||||
file://0033-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
|
||||
file://0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
|
||||
file://0035-sync-gcc-stddef.h-with-musl.patch \
|
||||
file://0036-fix-segmentation-fault-in-precompiled-header-generat.patch \
|
||||
file://0037-Fix-for-testsuite-failure.patch \
|
||||
file://0038-Re-introduce-spe-commandline-options.patch \
|
||||
file://0039-riscv-Disable-multilib-for-OE.patch \
|
||||
file://0040-powerpc-powerpc64-Add-support-for-musl-ldso.patch \
|
||||
file://0041-Add-a-recursion-limit-to-libiberty-s-demangling-code.patch \
|
||||
file://0042-PR-debug-86964.patch \
|
||||
file://0043-PR85434-Prevent-spilling-of-stack-protector-guard-s-.patch \
|
||||
file://0044-libsanitizer-remove-cyclades.patch \
|
||||
"
|
||||
SRC_URI[sha256sum] = "d308841a511bb830a6100397b0042db24ce11f642dab6ea6ee44842e5325ed50"
|
||||
|
||||
S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
|
||||
#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/git"
|
||||
#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/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_PATHS = "\
|
||||
--with-gxx-include-dir=/not/exist{target_includedir}/c++/${BINV} \
|
||||
--with-sysroot=/not/exist \
|
||||
--with-build-sysroot=${STAGING_DIR_TARGET} \
|
||||
"
|
||||
|
||||
# Is a binutils 2.26 issue, not gcc
|
||||
CVE_CHECK_IGNORE += "CVE-2021-37322"
|
||||
@@ -1,56 +0,0 @@
|
||||
From 1dba090a11c40b0926f9707a543d658c95e1f156 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:14:20 +0400
|
||||
Subject: [PATCH 06/40] 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@intel.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
---
|
||||
gcc/configure | 7 -------
|
||||
gcc/configure.ac | 7 -------
|
||||
2 files changed, 14 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure
|
||||
+++ gcc-8.5.0/gcc/configure
|
||||
@@ -27550,13 +27550,6 @@ $as_echo_n "checking assembler and linke
|
||||
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_CALLS"
|
||||
- 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; }
|
||||
|
||||
Index: gcc-8.5.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure.ac
|
||||
+++ gcc-8.5.0/gcc/configure.ac
|
||||
@@ -4794,13 +4794,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_CALLS"
|
||||
- fi
|
||||
- fi
|
||||
AC_MSG_RESULT($gcc_cv_as_ld_jalr_reloc)
|
||||
|
||||
AC_CACHE_CHECK([linker for .eh_frame personality relaxation],
|
||||
@@ -1,39 +0,0 @@
|
||||
From d4326ab74a362b0fc83ed866f82c359389a36adc Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Feb 2015 10:21:55 +0000
|
||||
Subject: [PATCH 20/40] Disable the MULTILIB_OSDIRNAMES and other multilib
|
||||
options.
|
||||
|
||||
Hard coding the MULTILIB_OSDIRNAMES with ../lib64 is causing problems on
|
||||
systems where the libdir is NOT set to /lib64. This is allowed by the
|
||||
ABI, as
|
||||
long as the dynamic loader is present in /lib.
|
||||
|
||||
We simply want to use the default rules in gcc to find and configure the
|
||||
normal libdir.
|
||||
|
||||
Upstream-Status: Inappropriate[OE-Specific]
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
gcc/config/aarch64/t-aarch64-linux | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/aarch64/t-aarch64-linux
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/aarch64/t-aarch64-linux
|
||||
+++ gcc-8.5.0/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)
|
||||
@@ -1,95 +0,0 @@
|
||||
From 476eda9054df443d094273c8b61fce63d940adfc Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Feb 2015 10:25:11 +0000
|
||||
Subject: [PATCH 21/40] 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@linux.intel.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@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(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/Makefile.in
|
||||
+++ gcc-8.5.0/gcc/Makefile.in
|
||||
@@ -614,6 +614,7 @@ libexecdir = @libexecdir@
|
||||
|
||||
# Directory in which the compiler finds libraries etc.
|
||||
libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
|
||||
+libsubdir_target = $(target_noncanonical)/$(version)
|
||||
# Directory in which the compiler finds executables
|
||||
libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
|
||||
# Directory in which all plugin resources are installed
|
||||
@@ -2871,6 +2872,7 @@ CFLAGS-intl.o += -DLOCALEDIR=\"$(localed
|
||||
|
||||
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) \
|
||||
Index: gcc-8.5.0/gcc/cppdefault.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/cppdefault.c
|
||||
+++ gcc-8.5.0/gcc/cppdefault.c
|
||||
@@ -59,6 +59,10 @@ const struct default_include cpp_include
|
||||
/* 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 },
|
||||
Index: gcc-8.5.0/gcc/defaults.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/defaults.h
|
||||
+++ gcc-8.5.0/gcc/defaults.h
|
||||
@@ -1455,4 +1455,13 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
#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 */
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -1464,13 +1464,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
|
||||
@@ -1,51 +0,0 @@
|
||||
From bc192f0a07ad819dee93446c5ef6895d9550d92d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Feb 2015 11:17:19 +0000
|
||||
Subject: [PATCH 22/40] 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@gmail.com>
|
||||
---
|
||||
libatomic/Makefile.am | 3 ++-
|
||||
libatomic/Makefile.in | 3 ++-
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/libatomic/Makefile.am
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libatomic/Makefile.am
|
||||
+++ gcc-8.5.0/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
|
||||
+@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
|
||||
+@AMDEP_FALSE@M_DEPS =
|
||||
M_SIZE = -DN=$(PAT_N)
|
||||
M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
|
||||
M_FILE = $(PAT_BASE)_n.c
|
||||
Index: gcc-8.5.0/libatomic/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libatomic/Makefile.in
|
||||
+++ gcc-8.5.0/libatomic/Makefile.in
|
||||
@@ -335,7 +335,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
|
||||
+@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
|
||||
+@AMDEP_FALSE@M_DEPS =
|
||||
M_SIZE = -DN=$(PAT_N)
|
||||
M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
|
||||
M_FILE = $(PAT_BASE)_n.c
|
||||
@@ -1,120 +0,0 @@
|
||||
From 6dfbca78b8d253aecf9cbb5e68e04b8dd3d6a543 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Apr 2016 20:03:28 +0000
|
||||
Subject: [PATCH 32/40] 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@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
|
||||
|
||||
Index: gcc-8.5.0/libgcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/Makefile.in
|
||||
+++ gcc-8.5.0/libgcc/Makefile.in
|
||||
@@ -48,6 +48,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@
|
||||
Index: gcc-8.5.0/libgcc/config/rs6000/t-linux
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/config/rs6000/t-linux
|
||||
+++ gcc-8.5.0/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
|
||||
Index: gcc-8.5.0/libgcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/configure
|
||||
+++ gcc-8.5.0/libgcc/configure
|
||||
@@ -619,6 +619,7 @@ build_vendor
|
||||
build_cpu
|
||||
build
|
||||
with_aix_soname
|
||||
+with_ldbl128
|
||||
enable_vtable_verify
|
||||
enable_shared
|
||||
libgcc_topdir
|
||||
@@ -669,6 +670,7 @@ with_cross_host
|
||||
with_ld
|
||||
enable_shared
|
||||
enable_vtable_verify
|
||||
+with_long_double_128
|
||||
with_aix_soname
|
||||
enable_version_specific_runtime_libs
|
||||
with_slibdir
|
||||
@@ -1341,6 +1343,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
|
||||
@@ -2223,6 +2226,21 @@ else
|
||||
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.
|
||||
Index: gcc-8.5.0/libgcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/configure.ac
|
||||
+++ gcc-8.5.0/libgcc/configure.ac
|
||||
@@ -78,6 +78,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])],
|
||||
@@ -1,24 +0,0 @@
|
||||
From 24f74444c00c6c9bf076fb002614ebf6dec31f1a Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 28 Dec 2018 09:59:53 -0800
|
||||
Subject: [PATCH 39/40] riscv: Disable multilib for OE
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
gcc/config/riscv/t-linux | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/riscv/t-linux
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/riscv/t-linux
|
||||
+++ gcc-8.5.0/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))
|
||||
@@ -1,28 +0,0 @@
|
||||
From 4bd0a3866f302725cb4eddcaddaeece64900c42f Mon Sep 17 00:00:00 2001
|
||||
From: Serhey Popovych <serhe.popovych@gmail.com>
|
||||
Date: Tue, 11 Dec 2018 02:30:50 -0500
|
||||
Subject: [PATCH 40/40] powerpc/powerpc64: Add support for musl ldso
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
|
||||
Signed-off-by: Serhey Popovych <serhe.popovych@gmail.com>
|
||||
---
|
||||
gcc/config/rs6000/linux64.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/rs6000/linux64.h
|
||||
+++ gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
@@ -421,9 +421,9 @@ extern int dot_symbols;
|
||||
#endif
|
||||
|
||||
#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"
|
||||
#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"
|
||||
|
||||
#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
|
||||
#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
|
||||
@@ -1,322 +0,0 @@
|
||||
From e1744e11b1c2b36f91a8847b61bafb8c5e7407ae Mon Sep 17 00:00:00 2001
|
||||
From: nickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Fri, 7 Dec 2018 10:33:30 +0000
|
||||
Subject: [PATCH] Add a recursion limit to libiberty's demangling code. The
|
||||
limit is enabled by default, but can be disabled via a new demangling option.
|
||||
|
||||
include * demangle.h (DMGL_NO_RECURSE_LIMIT): Define.
|
||||
(DEMANGLE_RECURSION_LIMIT): Define
|
||||
|
||||
PR 87681
|
||||
PR 87675
|
||||
PR 87636
|
||||
PR 87350
|
||||
PR 87335
|
||||
libiberty * cp-demangle.h (struct d_info): Add recursion_level field.
|
||||
* cp-demangle.c (d_function_type): Add recursion counter.
|
||||
If the recursion limit is reached and the check is not disabled,
|
||||
then return with a failure result.
|
||||
(cplus_demangle_init_info): Initialise the recursion_level field.
|
||||
(d_demangle_callback): If the recursion limit is enabled, check
|
||||
for a mangled string that is so long that there is not enough
|
||||
stack space for the local arrays.
|
||||
* cplus-dem.c (struct work): Add recursion_level field.
|
||||
(squangle_mop_up): Set the numb and numk fields to zero.
|
||||
(work_stuff_copy_to_from): Handle the case where a btypevec or
|
||||
ktypevec field is NULL.
|
||||
(demangle_nested_args): Add recursion counter. If
|
||||
the recursion limit is not disabled and reached, return with a
|
||||
failure result.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266886 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
CVE: CVE-2018-18484
|
||||
Upstream-Status: Backport [https://github.com/gcc-mirror/gcc/commit/03e51746ed98d9106803f6009ebd71ea670ad3b9]
|
||||
Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
|
||||
---
|
||||
include/ChangeLog | 5 +++++
|
||||
include/demangle.h | 11 +++++++++++
|
||||
libiberty/ChangeLog | 23 ++++++++++++++++++++++
|
||||
libiberty/cp-demangle.c | 51 ++++++++++++++++++++++++++++++++++++++-----------
|
||||
libiberty/cp-demangle.h | 3 +++
|
||||
libiberty/cplus-dem.c | 37 +++++++++++++++++++++++++++++++++--
|
||||
6 files changed, 117 insertions(+), 13 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/include/ChangeLog
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/include/ChangeLog
|
||||
+++ gcc-8.5.0/include/ChangeLog
|
||||
@@ -18,6 +18,11 @@
|
||||
|
||||
* GCC 8.3.0 released.
|
||||
|
||||
+2018-12-07 Nick Clifton <nickc@redhat.com>
|
||||
+
|
||||
+ * demangle.h (DMGL_NO_RECURSE_LIMIT): Define.
|
||||
+ (DEMANGLE_RECURSION_LIMIT): Define
|
||||
+
|
||||
2018-07-26 Release Manager
|
||||
|
||||
* GCC 8.2.0 released.
|
||||
Index: gcc-8.5.0/include/demangle.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/include/demangle.h
|
||||
+++ gcc-8.5.0/include/demangle.h
|
||||
@@ -68,6 +68,17 @@ extern "C" {
|
||||
/* If none of these are set, use 'current_demangling_style' as the default. */
|
||||
#define DMGL_STYLE_MASK (DMGL_AUTO|DMGL_GNU|DMGL_LUCID|DMGL_ARM|DMGL_HP|DMGL_EDG|DMGL_GNU_V3|DMGL_JAVA|DMGL_GNAT|DMGL_DLANG|DMGL_RUST)
|
||||
|
||||
+/* Disable a limit on the depth of recursion in mangled strings.
|
||||
+ Note if this limit is disabled then stack exhaustion is possible when
|
||||
+ demangling pathologically complicated strings. Bug reports about stack
|
||||
+ exhaustion when the option is enabled will be rejected. */
|
||||
+#define DMGL_NO_RECURSE_LIMIT (1 << 18)
|
||||
+
|
||||
+/* If DMGL_NO_RECURSE_LIMIT is not enabled, then this is the value used as
|
||||
+ the maximum depth of recursion allowed. It should be enough for any
|
||||
+ real-world mangled name. */
|
||||
+#define DEMANGLE_RECURSION_LIMIT 1024
|
||||
+
|
||||
/* Enumeration of possible demangling styles.
|
||||
|
||||
Lucid and ARM styles are still kept logically distinct, even though
|
||||
Index: gcc-8.5.0/libiberty/ChangeLog
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libiberty/ChangeLog
|
||||
+++ gcc-8.5.0/libiberty/ChangeLog
|
||||
@@ -45,6 +45,29 @@
|
||||
(simple_object_copy_lto_debug_sections): Create file in binary
|
||||
mode.
|
||||
|
||||
+2018-12-07 Nick Clifton <nickc@redhat.com>
|
||||
+
|
||||
+ PR 87681
|
||||
+ PR 87675
|
||||
+ PR 87636
|
||||
+ PR 87350
|
||||
+ PR 87335
|
||||
+ * cp-demangle.h (struct d_info): Add recursion_level field.
|
||||
+ * cp-demangle.c (d_function_type): Add recursion counter.
|
||||
+ If the recursion limit is reached and the check is not disabled,
|
||||
+ then return with a failure result.
|
||||
+ (cplus_demangle_init_info): Initialise the recursion_level field.
|
||||
+ (d_demangle_callback): If the recursion limit is enabled, check
|
||||
+ for a mangled string that is so long that there is not enough
|
||||
+ stack space for the local arrays.
|
||||
+ * cplus-dem.c (struct work): Add recursion_level field.
|
||||
+ (squangle_mop_up): Set the numb and numk fields to zero.
|
||||
+ (work_stuff_copy_to_from): Handle the case where a btypevec or
|
||||
+ ktypevec field is NULL.
|
||||
+ (demangle_nested_args): Add recursion counter. If
|
||||
+ the recursion limit is not disabled and reached, return with a
|
||||
+ failure result.
|
||||
+
|
||||
2018-07-26 Release Manager
|
||||
|
||||
* GCC 8.2.0 released.
|
||||
Index: gcc-8.5.0/libiberty/cp-demangle.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libiberty/cp-demangle.c
|
||||
+++ gcc-8.5.0/libiberty/cp-demangle.c
|
||||
@@ -2843,21 +2843,35 @@ d_ref_qualifier (struct d_info *di, stru
|
||||
static struct demangle_component *
|
||||
d_function_type (struct d_info *di)
|
||||
{
|
||||
- struct demangle_component *ret;
|
||||
+ struct demangle_component *ret = NULL;
|
||||
|
||||
- if (! d_check_char (di, 'F'))
|
||||
- return NULL;
|
||||
- if (d_peek_char (di) == 'Y')
|
||||
+ if ((di->options & DMGL_NO_RECURSE_LIMIT) == 0)
|
||||
{
|
||||
- /* Function has C linkage. We don't print this information.
|
||||
- FIXME: We should print it in verbose mode. */
|
||||
- d_advance (di, 1);
|
||||
+ if (di->recursion_level > DEMANGLE_RECURSION_LIMIT)
|
||||
+ /* FIXME: There ought to be a way to report
|
||||
+ that the recursion limit has been reached. */
|
||||
+ return NULL;
|
||||
+
|
||||
+ di->recursion_level ++;
|
||||
}
|
||||
- ret = d_bare_function_type (di, 1);
|
||||
- ret = d_ref_qualifier (di, ret);
|
||||
|
||||
- if (! d_check_char (di, 'E'))
|
||||
- return NULL;
|
||||
+ if (d_check_char (di, 'F'))
|
||||
+ {
|
||||
+ if (d_peek_char (di) == 'Y')
|
||||
+ {
|
||||
+ /* Function has C linkage. We don't print this information.
|
||||
+ FIXME: We should print it in verbose mode. */
|
||||
+ d_advance (di, 1);
|
||||
+ }
|
||||
+ ret = d_bare_function_type (di, 1);
|
||||
+ ret = d_ref_qualifier (di, ret);
|
||||
+
|
||||
+ if (! d_check_char (di, 'E'))
|
||||
+ ret = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if ((di->options & DMGL_NO_RECURSE_LIMIT) == 0)
|
||||
+ di->recursion_level --;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -6188,6 +6202,7 @@ cplus_demangle_init_info (const char *ma
|
||||
di->expansion = 0;
|
||||
di->is_expression = 0;
|
||||
di->is_conversion = 0;
|
||||
+ di->recursion_level = 0;
|
||||
}
|
||||
|
||||
/* Internal implementation for the demangler. If MANGLED is a g++ v3 ABI
|
||||
@@ -6227,6 +6242,20 @@ d_demangle_callback (const char *mangled
|
||||
|
||||
cplus_demangle_init_info (mangled, options, strlen (mangled), &di);
|
||||
|
||||
+ /* PR 87675 - Check for a mangled string that is so long
|
||||
+ that we do not have enough stack space to demangle it. */
|
||||
+ if (((options & DMGL_NO_RECURSE_LIMIT) == 0)
|
||||
+ /* This check is a bit arbitrary, since what we really want to do is to
|
||||
+ compare the sizes of the di.comps and di.subs arrays against the
|
||||
+ amount of stack space remaining. But there is no portable way to do
|
||||
+ this, so instead we use the recursion limit as a guide to the maximum
|
||||
+ size of the arrays. */
|
||||
+ && (unsigned long) di.num_comps > DEMANGLE_RECURSION_LIMIT)
|
||||
+ {
|
||||
+ /* FIXME: We need a way to indicate that a stack limit has been reached. */
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
{
|
||||
#ifdef CP_DYNAMIC_ARRAYS
|
||||
__extension__ struct demangle_component comps[di.num_comps];
|
||||
Index: gcc-8.5.0/libiberty/cp-demangle.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libiberty/cp-demangle.h
|
||||
+++ gcc-8.5.0/libiberty/cp-demangle.h
|
||||
@@ -122,6 +122,9 @@ struct d_info
|
||||
/* Non-zero if we are parsing the type operand of a conversion
|
||||
operator, but not when in an expression. */
|
||||
int is_conversion;
|
||||
+ /* If DMGL_NO_RECURSE_LIMIT is not active then this is set to
|
||||
+ the current recursion level. */
|
||||
+ unsigned int recursion_level;
|
||||
};
|
||||
|
||||
/* To avoid running past the ending '\0', don't:
|
||||
Index: gcc-8.5.0/libiberty/cplus-dem.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libiberty/cplus-dem.c
|
||||
+++ gcc-8.5.0/libiberty/cplus-dem.c
|
||||
@@ -146,6 +146,7 @@ struct work_stuff
|
||||
int *proctypevec; /* Indices of currently processed remembered typevecs. */
|
||||
int proctypevec_size;
|
||||
int nproctypes;
|
||||
+ unsigned int recursion_level;
|
||||
};
|
||||
|
||||
#define PRINT_ANSI_QUALIFIERS (work -> options & DMGL_ANSI)
|
||||
@@ -1292,12 +1293,14 @@ squangle_mop_up (struct work_stuff *work
|
||||
free ((char *) work -> btypevec);
|
||||
work->btypevec = NULL;
|
||||
work->bsize = 0;
|
||||
+ work->numb = 0;
|
||||
}
|
||||
if (work -> ktypevec != NULL)
|
||||
{
|
||||
free ((char *) work -> ktypevec);
|
||||
work->ktypevec = NULL;
|
||||
work->ksize = 0;
|
||||
+ work->numk = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1331,8 +1334,15 @@ work_stuff_copy_to_from (struct work_stu
|
||||
|
||||
for (i = 0; i < from->numk; i++)
|
||||
{
|
||||
- int len = strlen (from->ktypevec[i]) + 1;
|
||||
+ int len;
|
||||
+
|
||||
+ if (from->ktypevec[i] == NULL)
|
||||
+ {
|
||||
+ to->ktypevec[i] = NULL;
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
+ len = strlen (from->ktypevec[i]) + 1;
|
||||
to->ktypevec[i] = XNEWVEC (char, len);
|
||||
memcpy (to->ktypevec[i], from->ktypevec[i], len);
|
||||
}
|
||||
@@ -1342,8 +1352,15 @@ work_stuff_copy_to_from (struct work_stu
|
||||
|
||||
for (i = 0; i < from->numb; i++)
|
||||
{
|
||||
- int len = strlen (from->btypevec[i]) + 1;
|
||||
+ int len;
|
||||
+
|
||||
+ if (from->btypevec[i] == NULL)
|
||||
+ {
|
||||
+ to->btypevec[i] = NULL;
|
||||
+ continue;
|
||||
+ }
|
||||
|
||||
+ len = strlen (from->btypevec[i]) + 1;
|
||||
to->btypevec[i] = XNEWVEC (char , len);
|
||||
memcpy (to->btypevec[i], from->btypevec[i], len);
|
||||
}
|
||||
@@ -1401,6 +1418,7 @@ delete_non_B_K_work_stuff (struct work_s
|
||||
|
||||
free ((char*) work->tmpl_argvec);
|
||||
work->tmpl_argvec = NULL;
|
||||
+ work->ntmpl_args = 0;
|
||||
}
|
||||
if (work->previous_argument)
|
||||
{
|
||||
@@ -4477,6 +4495,7 @@ remember_Btype (struct work_stuff *work,
|
||||
}
|
||||
|
||||
/* Lose all the info related to B and K type codes. */
|
||||
+
|
||||
static void
|
||||
forget_B_and_K_types (struct work_stuff *work)
|
||||
{
|
||||
@@ -4502,6 +4521,7 @@ forget_B_and_K_types (struct work_stuff
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
/* Forget the remembered types, but not the type vector itself. */
|
||||
|
||||
static void
|
||||
@@ -4696,6 +4716,16 @@ demangle_nested_args (struct work_stuff
|
||||
int result;
|
||||
int saved_nrepeats;
|
||||
|
||||
+ if ((work->options & DMGL_NO_RECURSE_LIMIT) == 0)
|
||||
+ {
|
||||
+ if (work->recursion_level > DEMANGLE_RECURSION_LIMIT)
|
||||
+ /* FIXME: There ought to be a way to report
|
||||
+ that the recursion limit has been reached. */
|
||||
+ return 0;
|
||||
+
|
||||
+ work->recursion_level ++;
|
||||
+ }
|
||||
+
|
||||
/* The G++ name-mangling algorithm does not remember types on nested
|
||||
argument lists, unless -fsquangling is used, and in that case the
|
||||
type vector updated by remember_type is not used. So, we turn
|
||||
@@ -4722,6 +4752,9 @@ demangle_nested_args (struct work_stuff
|
||||
--work->forgetting_types;
|
||||
work->nrepeats = saved_nrepeats;
|
||||
|
||||
+ if ((work->options & DMGL_NO_RECURSE_LIMIT) == 0)
|
||||
+ --work->recursion_level;
|
||||
+
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
From beb921e1106b5bcbb0c6e2be84b241327e2ffc51 Mon Sep 17 00:00:00 2001
|
||||
From: law <law@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Mon, 25 Mar 2019 21:19:09 +0000
|
||||
Subject: [PATCH] PR debug/86964 * dwarf2out.c
|
||||
(premark_used_variables): New function. (prune_unused_types_walk): Do
|
||||
not mark not premarked external variables. (prune_unused_types):
|
||||
Call premark_used_variables.
|
||||
|
||||
* gcc.dg/debug/dwarf2/pr86964.c: New testcase.
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@269925 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
|
||||
---
|
||||
gcc/ChangeLog | 8 ++++++
|
||||
gcc/dwarf2out.c | 32 +++++++++++++++++++++
|
||||
2 files changed, 40 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/ChangeLog
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/ChangeLog
|
||||
+++ gcc-8.5.0/gcc/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2019-03-25 Johan Karlsson <johan.karlsson@enea.com>
|
||||
+
|
||||
+ PR debug/86964
|
||||
+ * dwarf2out.c (premark_used_variables): New function.
|
||||
+ (prune_unused_types_walk): Do not mark not premarked external
|
||||
+ variables.
|
||||
+ (prune_unused_types): Call premark_used_variables.
|
||||
+
|
||||
2021-05-14 Release Manager
|
||||
|
||||
* GCC 8.5.0 released.
|
||||
Index: gcc-8.5.0/gcc/dwarf2out.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/dwarf2out.c
|
||||
+++ gcc-8.5.0/gcc/dwarf2out.c
|
||||
@@ -22697,6 +22697,21 @@ premark_types_used_by_global_vars (void)
|
||||
->traverse<void *, premark_types_used_by_global_vars_helper> (NULL);
|
||||
}
|
||||
|
||||
+/* Mark all variables used by the symtab as perennial. */
|
||||
+
|
||||
+static void
|
||||
+premark_used_variables (void)
|
||||
+{
|
||||
+ /* Mark DIEs in the symtab as used. */
|
||||
+ varpool_node *var;
|
||||
+ FOR_EACH_VARIABLE (var)
|
||||
+ {
|
||||
+ dw_die_ref die = lookup_decl_die (var->decl);
|
||||
+ if (die)
|
||||
+ die->die_perennial_p = 1;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/* Generate a DW_TAG_call_site DIE in function DECL under SUBR_DIE
|
||||
for CA_LOC call arg loc node. */
|
||||
|
||||
@@ -29323,6 +29338,19 @@ prune_unused_types_walk (dw_die_ref die)
|
||||
|
||||
return;
|
||||
|
||||
+ case DW_TAG_variable:
|
||||
+ if (flag_debug_only_used_symbols)
|
||||
+ {
|
||||
+ if (die->die_perennial_p)
|
||||
+ break;
|
||||
+
|
||||
+ /* premark_used_variables marks external variables --- don't mark
|
||||
+ them here. */
|
||||
+ if (get_AT (die, DW_AT_external))
|
||||
+ return;
|
||||
+ }
|
||||
+ /* FALLTHROUGH */
|
||||
+
|
||||
default:
|
||||
/* Mark everything else. */
|
||||
break;
|
||||
@@ -29449,6 +29477,10 @@ prune_unused_types (void)
|
||||
/* Mark types that are used in global variables. */
|
||||
premark_types_used_by_global_vars ();
|
||||
|
||||
+ /* Mark variables used in the symtab. */
|
||||
+ if (flag_debug_only_used_symbols)
|
||||
+ premark_used_variables ();
|
||||
+
|
||||
/* Set the mark on nodes that are actually used. */
|
||||
prune_unused_types_walk (comp_unit_die ());
|
||||
for (node = limbo_die_list; node; node = node->next)
|
||||
@@ -1,810 +0,0 @@
|
||||
From f98495d90ba66f67fe922a4b9229ea787041c418 Mon Sep 17 00:00:00 2001
|
||||
From: thopre01 <thopre01@138bc75d-0d04-0410-961f-82ee72b054a4>
|
||||
Date: Thu, 22 Nov 2018 14:46:17 +0000
|
||||
Subject: [PATCH] PR85434: Prevent spilling of stack protector guard's address
|
||||
on ARM
|
||||
|
||||
In case of high register pressure in PIC mode, address of the stack
|
||||
protector's guard can be spilled on ARM targets as shown in PR85434,
|
||||
thus allowing an attacker to control what the canary would be compared
|
||||
against. ARM does lack stack_protect_set and stack_protect_test insn
|
||||
patterns, defining them does not help as the address is expanded
|
||||
regularly and the patterns only deal with the copy and test of the
|
||||
guard with the canary.
|
||||
|
||||
This problem does not occur for x86 targets because the PIC access and
|
||||
the test can be done in the same instruction. Aarch64 is exempt too
|
||||
because PIC access insn pattern are mov of UNSPEC which prevents it from
|
||||
the second access in the epilogue being CSEd in cse_local pass with the
|
||||
first access in the prologue.
|
||||
|
||||
The approach followed here is to create new "combined" set and test
|
||||
standard pattern names that take the unexpanded guard and do the set or
|
||||
test. This allows the target to use an opaque pattern (eg. using UNSPEC)
|
||||
to hide the individual instructions being generated to the compiler and
|
||||
split the pattern into generic load, compare and branch instruction
|
||||
after register allocator, therefore avoiding any spilling. This is here
|
||||
implemented for the ARM targets. For targets not implementing these new
|
||||
standard pattern names, the existing stack_protect_set and
|
||||
stack_protect_test pattern names are used.
|
||||
|
||||
To be able to split PIC access after register allocation, the functions
|
||||
had to be augmented to force a new PIC register load and to control
|
||||
which register it loads into. This is because sharing the PIC register
|
||||
between prologue and epilogue could lead to spilling due to CSE again
|
||||
which an attacker could use to control what the canary gets compared
|
||||
against.
|
||||
|
||||
2018-11-22 Thomas Preud'homme <thomas.preudhomme@linaro.org>
|
||||
|
||||
gcc/
|
||||
PR target/85434
|
||||
* target-insns.def (stack_protect_combined_set): Define new standard
|
||||
pattern name.
|
||||
(stack_protect_combined_test): Likewise.
|
||||
* cfgexpand.c (stack_protect_prologue): Try new
|
||||
stack_protect_combined_set pattern first.
|
||||
* function.c (stack_protect_epilogue): Try new
|
||||
stack_protect_combined_test pattern first.
|
||||
* config/arm/arm.c (require_pic_register): Add pic_reg and compute_now
|
||||
parameters to control which register to use as PIC register and force
|
||||
reloading PIC register respectively. Insert in the stream of insns if
|
||||
possible.
|
||||
(legitimize_pic_address): Expose above new parameters in prototype and
|
||||
adapt recursive calls accordingly. Use pic_reg if non null instead of
|
||||
cached one.
|
||||
(arm_load_pic_register): Add pic_reg parameter and use it if non null.
|
||||
(arm_legitimize_address): Adapt to new legitimize_pic_address
|
||||
prototype.
|
||||
(thumb_legitimize_address): Likewise.
|
||||
(arm_emit_call_insn): Adapt to require_pic_register prototype change.
|
||||
(arm_expand_prologue): Adapt to arm_load_pic_register prototype change.
|
||||
(thumb1_expand_prologue): Likewise.
|
||||
* config/arm/arm-protos.h (legitimize_pic_address): Adapt to prototype
|
||||
change.
|
||||
(arm_load_pic_register): Likewise.
|
||||
* config/arm/predicated.md (guard_addr_operand): New predicate.
|
||||
(guard_operand): New predicate.
|
||||
* config/arm/arm.md (movsi expander): Adapt to legitimize_pic_address
|
||||
prototype change.
|
||||
(builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
|
||||
prototype change.
|
||||
(stack_protect_combined_set): New expander..
|
||||
(stack_protect_combined_set_insn): New insn_and_split pattern.
|
||||
(stack_protect_set_insn): New insn pattern.
|
||||
(stack_protect_combined_test): New expander.
|
||||
(stack_protect_combined_test_insn): New insn_and_split pattern.
|
||||
(arm_stack_protect_test_insn): New insn pattern.
|
||||
* config/arm/thumb1.md (thumb1_stack_protect_test_insn): New insn pattern.
|
||||
* config/arm/unspecs.md (UNSPEC_SP_SET): New unspec.
|
||||
(UNSPEC_SP_TEST): Likewise.
|
||||
* doc/md.texi (stack_protect_combined_set): Document new standard
|
||||
pattern name.
|
||||
(stack_protect_set): Clarify that the operand for guard's address is
|
||||
legal.
|
||||
(stack_protect_combined_test): Document new standard pattern name.
|
||||
(stack_protect_test): Clarify that the operand for guard's address is
|
||||
legal.
|
||||
|
||||
|
||||
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266379 138bc75d-0d04-0410-961f-82ee72b054a4
|
||||
|
||||
Upstream-Status: Backport
|
||||
CVE: CVE-2018-12886
|
||||
Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
|
||||
---
|
||||
gcc/ChangeLog | 49 ++++++
|
||||
gcc/cfgexpand.c | 17 +++
|
||||
gcc/config/arm/arm-protos.h | 4 +-
|
||||
gcc/config/arm/arm.c | 87 ++++++++---
|
||||
gcc/config/arm/arm.md | 163 +++++++++++++++++++-
|
||||
gcc/config/arm/predicates.md | 17 +++
|
||||
gcc/config/arm/thumb1.md | 13 ++
|
||||
gcc/config/arm/unspecs.md | 3 +
|
||||
gcc/doc/md.texi | 55 ++++++-
|
||||
gcc/function.c | 32 +++-
|
||||
gcc/target-insns.def | 2 +
|
||||
11 files changed, 399 insertions(+), 43 deletions(-)
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/pr85434.c
|
||||
|
||||
Index: gcc-8.5.0/gcc/ChangeLog
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/ChangeLog
|
||||
+++ gcc-8.5.0/gcc/ChangeLog
|
||||
@@ -7479,6 +7479,55 @@
|
||||
* config/arm/neon.md (movv4hf, movv8hf): Refactored to..
|
||||
(mov<mov>): ..this and enable unconditionally.
|
||||
|
||||
+2018-11-22 Thomas Preud'homme <thomas.preudhomme@linaro.org>
|
||||
+
|
||||
+ * target-insns.def (stack_protect_combined_set): Define new standard
|
||||
+ pattern name.
|
||||
+ (stack_protect_combined_test): Likewise.
|
||||
+ * cfgexpand.c (stack_protect_prologue): Try new
|
||||
+ stack_protect_combined_set pattern first.
|
||||
+ * function.c (stack_protect_epilogue): Try new
|
||||
+ stack_protect_combined_test pattern first.
|
||||
+ * config/arm/arm.c (require_pic_register): Add pic_reg and compute_now
|
||||
+ parameters to control which register to use as PIC register and force
|
||||
+ reloading PIC register respectively. Insert in the stream of insns if
|
||||
+ possible.
|
||||
+ (legitimize_pic_address): Expose above new parameters in prototype and
|
||||
+ adapt recursive calls accordingly. Use pic_reg if non null instead of
|
||||
+ cached one.
|
||||
+ (arm_load_pic_register): Add pic_reg parameter and use it if non null.
|
||||
+ (arm_legitimize_address): Adapt to new legitimize_pic_address
|
||||
+ prototype.
|
||||
+ (thumb_legitimize_address): Likewise.
|
||||
+ (arm_emit_call_insn): Adapt to require_pic_register prototype change.
|
||||
+ (arm_expand_prologue): Adapt to arm_load_pic_register prototype change.
|
||||
+ (thumb1_expand_prologue): Likewise.
|
||||
+ * config/arm/arm-protos.h (legitimize_pic_address): Adapt to prototype
|
||||
+ change.
|
||||
+ (arm_load_pic_register): Likewise.
|
||||
+ * config/arm/predicated.md (guard_addr_operand): New predicate.
|
||||
+ (guard_operand): New predicate.
|
||||
+ * config/arm/arm.md (movsi expander): Adapt to legitimize_pic_address
|
||||
+ prototype change.
|
||||
+ (builtin_setjmp_receiver expander): Adapt to thumb1_expand_prologue
|
||||
+ prototype change.
|
||||
+ (stack_protect_combined_set): New expander..
|
||||
+ (stack_protect_combined_set_insn): New insn_and_split pattern.
|
||||
+ (stack_protect_set_insn): New insn pattern.
|
||||
+ (stack_protect_combined_test): New expander.
|
||||
+ (stack_protect_combined_test_insn): New insn_and_split pattern.
|
||||
+ (arm_stack_protect_test_insn): New insn pattern.
|
||||
+ * config/arm/thumb1.md (thumb1_stack_protect_test_insn): New insn pattern.
|
||||
+ * config/arm/unspecs.md (UNSPEC_SP_SET): New unspec.
|
||||
+ (UNSPEC_SP_TEST): Likewise.
|
||||
+ * doc/md.texi (stack_protect_combined_set): Document new standard
|
||||
+ pattern name.
|
||||
+ (stack_protect_set): Clarify that the operand for guard's address is
|
||||
+ legal.
|
||||
+ (stack_protect_combined_test): Document new standard pattern name.
|
||||
+ (stack_protect_test): Clarify that the operand for guard's address is
|
||||
+ legal.
|
||||
+
|
||||
2018-11-22 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
Backport from mainline
|
||||
Index: gcc-8.5.0/gcc/cfgexpand.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/cfgexpand.c
|
||||
+++ gcc-8.5.0/gcc/cfgexpand.c
|
||||
@@ -6181,6 +6181,23 @@ stack_protect_prologue (void)
|
||||
rtx x, y;
|
||||
|
||||
x = expand_normal (crtl->stack_protect_guard);
|
||||
+
|
||||
+ if (targetm.have_stack_protect_combined_set () && guard_decl)
|
||||
+ {
|
||||
+ gcc_assert (DECL_P (guard_decl));
|
||||
+ y = DECL_RTL (guard_decl);
|
||||
+
|
||||
+ /* Allow the target to compute address of Y and copy it to X without
|
||||
+ leaking Y into a register. This combined address + copy pattern
|
||||
+ allows the target to prevent spilling of any intermediate results by
|
||||
+ splitting it after register allocator. */
|
||||
+ if (rtx_insn *insn = targetm.gen_stack_protect_combined_set (x, y))
|
||||
+ {
|
||||
+ emit_insn (insn);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
if (guard_decl)
|
||||
y = expand_normal (guard_decl);
|
||||
else
|
||||
Index: gcc-8.5.0/gcc/config/arm/arm-protos.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/arm-protos.h
|
||||
+++ gcc-8.5.0/gcc/config/arm/arm-protos.h
|
||||
@@ -28,7 +28,7 @@ extern enum unwind_info_type arm_except_
|
||||
extern int use_return_insn (int, rtx);
|
||||
extern bool use_simple_return_p (void);
|
||||
extern enum reg_class arm_regno_class (int);
|
||||
-extern void arm_load_pic_register (unsigned long);
|
||||
+extern void arm_load_pic_register (unsigned long, rtx);
|
||||
extern int arm_volatile_func (void);
|
||||
extern void arm_expand_prologue (void);
|
||||
extern void arm_expand_epilogue (bool);
|
||||
@@ -67,7 +67,7 @@ extern int const_ok_for_dimode_op (HOST_
|
||||
extern int arm_split_constant (RTX_CODE, machine_mode, rtx,
|
||||
HOST_WIDE_INT, rtx, rtx, int);
|
||||
extern int legitimate_pic_operand_p (rtx);
|
||||
-extern rtx legitimize_pic_address (rtx, machine_mode, rtx);
|
||||
+extern rtx legitimize_pic_address (rtx, machine_mode, rtx, rtx, bool);
|
||||
extern rtx legitimize_tls_address (rtx, rtx);
|
||||
extern bool arm_legitimate_address_p (machine_mode, rtx, bool);
|
||||
extern int arm_legitimate_address_outer_p (machine_mode, rtx, RTX_CODE, int);
|
||||
Index: gcc-8.5.0/gcc/config/arm/arm.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/arm.c
|
||||
+++ gcc-8.5.0/gcc/config/arm/arm.c
|
||||
@@ -7386,21 +7386,34 @@ legitimate_pic_operand_p (rtx x)
|
||||
return 1;
|
||||
}
|
||||
|
||||
-/* Record that the current function needs a PIC register. Initialize
|
||||
- cfun->machine->pic_reg if we have not already done so. */
|
||||
+/* Record that the current function needs a PIC register. If PIC_REG is null,
|
||||
+ a new pseudo is allocated as PIC register, otherwise PIC_REG is used. In
|
||||
+ both case cfun->machine->pic_reg is initialized if we have not already done
|
||||
+ so. COMPUTE_NOW decide whether and where to set the PIC register. If true,
|
||||
+ PIC register is reloaded in the current position of the instruction stream
|
||||
+ irregardless of whether it was loaded before. Otherwise, it is only loaded
|
||||
+ if not already done so (crtl->uses_pic_offset_table is null). Note that
|
||||
+ nonnull PIC_REG is only supported iff COMPUTE_NOW is true and null PIC_REG
|
||||
+ is only supported iff COMPUTE_NOW is false. */
|
||||
|
||||
static void
|
||||
-require_pic_register (void)
|
||||
+require_pic_register (rtx pic_reg, bool compute_now)
|
||||
{
|
||||
+ gcc_assert (compute_now == (pic_reg != NULL_RTX));
|
||||
+
|
||||
/* A lot of the logic here is made obscure by the fact that this
|
||||
routine gets called as part of the rtx cost estimation process.
|
||||
We don't want those calls to affect any assumptions about the real
|
||||
function; and further, we can't call entry_of_function() until we
|
||||
start the real expansion process. */
|
||||
- if (!crtl->uses_pic_offset_table)
|
||||
+ if (!crtl->uses_pic_offset_table || compute_now)
|
||||
{
|
||||
- gcc_assert (can_create_pseudo_p ());
|
||||
+ gcc_assert (can_create_pseudo_p ()
|
||||
+ || (pic_reg != NULL_RTX
|
||||
+ && REG_P (pic_reg)
|
||||
+ && GET_MODE (pic_reg) == Pmode));
|
||||
if (arm_pic_register != INVALID_REGNUM
|
||||
+ && !compute_now
|
||||
&& !(TARGET_THUMB1 && arm_pic_register > LAST_LO_REGNUM))
|
||||
{
|
||||
if (!cfun->machine->pic_reg)
|
||||
@@ -7416,8 +7429,10 @@ require_pic_register (void)
|
||||
{
|
||||
rtx_insn *seq, *insn;
|
||||
|
||||
+ if (pic_reg == NULL_RTX)
|
||||
+ pic_reg = gen_reg_rtx (Pmode);
|
||||
if (!cfun->machine->pic_reg)
|
||||
- cfun->machine->pic_reg = gen_reg_rtx (Pmode);
|
||||
+ cfun->machine->pic_reg = pic_reg;
|
||||
|
||||
/* Play games to avoid marking the function as needing pic
|
||||
if we are being called as part of the cost-estimation
|
||||
@@ -7428,11 +7443,12 @@ require_pic_register (void)
|
||||
start_sequence ();
|
||||
|
||||
if (TARGET_THUMB1 && arm_pic_register != INVALID_REGNUM
|
||||
- && arm_pic_register > LAST_LO_REGNUM)
|
||||
+ && arm_pic_register > LAST_LO_REGNUM
|
||||
+ && !compute_now)
|
||||
emit_move_insn (cfun->machine->pic_reg,
|
||||
gen_rtx_REG (Pmode, arm_pic_register));
|
||||
else
|
||||
- arm_load_pic_register (0UL);
|
||||
+ arm_load_pic_register (0UL, pic_reg);
|
||||
|
||||
seq = get_insns ();
|
||||
end_sequence ();
|
||||
@@ -7445,16 +7461,33 @@ require_pic_register (void)
|
||||
we can't yet emit instructions directly in the final
|
||||
insn stream. Queue the insns on the entry edge, they will
|
||||
be committed after everything else is expanded. */
|
||||
- insert_insn_on_edge (seq,
|
||||
- single_succ_edge (ENTRY_BLOCK_PTR_FOR_FN (cfun)));
|
||||
+ if (currently_expanding_to_rtl)
|
||||
+ insert_insn_on_edge (seq,
|
||||
+ single_succ_edge
|
||||
+ (ENTRY_BLOCK_PTR_FOR_FN (cfun)));
|
||||
+ else
|
||||
+ emit_insn (seq);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+/* Legitimize PIC load to ORIG into REG. If REG is NULL, a new pseudo is
|
||||
+ created to hold the result of the load. If not NULL, PIC_REG indicates
|
||||
+ which register to use as PIC register, otherwise it is decided by register
|
||||
+ allocator. COMPUTE_NOW forces the PIC register to be loaded at the current
|
||||
+ location in the instruction stream, irregardless of whether it was loaded
|
||||
+ previously. Note that nonnull PIC_REG is only supported iff COMPUTE_NOW is
|
||||
+ true and null PIC_REG is only supported iff COMPUTE_NOW is false.
|
||||
+
|
||||
+ Returns the register REG into which the PIC load is performed. */
|
||||
+
|
||||
rtx
|
||||
-legitimize_pic_address (rtx orig, machine_mode mode, rtx reg)
|
||||
+legitimize_pic_address (rtx orig, machine_mode mode, rtx reg, rtx pic_reg,
|
||||
+ bool compute_now)
|
||||
{
|
||||
+ gcc_assert (compute_now == (pic_reg != NULL_RTX));
|
||||
+
|
||||
if (GET_CODE (orig) == SYMBOL_REF
|
||||
|| GET_CODE (orig) == LABEL_REF)
|
||||
{
|
||||
@@ -7487,9 +7520,12 @@ legitimize_pic_address (rtx orig, machin
|
||||
rtx mem;
|
||||
|
||||
/* If this function doesn't have a pic register, create one now. */
|
||||
- require_pic_register ();
|
||||
+ require_pic_register (pic_reg, compute_now);
|
||||
+
|
||||
+ if (pic_reg == NULL_RTX)
|
||||
+ pic_reg = cfun->machine->pic_reg;
|
||||
|
||||
- pat = gen_calculate_pic_address (reg, cfun->machine->pic_reg, orig);
|
||||
+ pat = gen_calculate_pic_address (reg, pic_reg, orig);
|
||||
|
||||
/* Make the MEM as close to a constant as possible. */
|
||||
mem = SET_SRC (pat);
|
||||
@@ -7538,9 +7574,11 @@ legitimize_pic_address (rtx orig, machin
|
||||
|
||||
gcc_assert (GET_CODE (XEXP (orig, 0)) == PLUS);
|
||||
|
||||
- base = legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg);
|
||||
+ base = legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg,
|
||||
+ pic_reg, compute_now);
|
||||
offset = legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode,
|
||||
- base == reg ? 0 : reg);
|
||||
+ base == reg ? 0 : reg, pic_reg,
|
||||
+ compute_now);
|
||||
|
||||
if (CONST_INT_P (offset))
|
||||
{
|
||||
@@ -7640,16 +7678,17 @@ static GTY(()) int pic_labelno;
|
||||
low register. */
|
||||
|
||||
void
|
||||
-arm_load_pic_register (unsigned long saved_regs ATTRIBUTE_UNUSED)
|
||||
+arm_load_pic_register (unsigned long saved_regs ATTRIBUTE_UNUSED, rtx pic_reg)
|
||||
{
|
||||
- rtx l1, labelno, pic_tmp, pic_rtx, pic_reg;
|
||||
+ rtx l1, labelno, pic_tmp, pic_rtx;
|
||||
|
||||
if (crtl->uses_pic_offset_table == 0 || TARGET_SINGLE_PIC_BASE)
|
||||
return;
|
||||
|
||||
gcc_assert (flag_pic);
|
||||
|
||||
- pic_reg = cfun->machine->pic_reg;
|
||||
+ if (pic_reg == NULL_RTX)
|
||||
+ pic_reg = cfun->machine->pic_reg;
|
||||
if (TARGET_VXWORKS_RTP)
|
||||
{
|
||||
pic_rtx = gen_rtx_SYMBOL_REF (Pmode, VXWORKS_GOTT_BASE);
|
||||
@@ -8725,7 +8764,8 @@ arm_legitimize_address (rtx x, rtx orig_
|
||||
{
|
||||
/* We need to find and carefully transform any SYMBOL and LABEL
|
||||
references; so go back to the original address expression. */
|
||||
- rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX);
|
||||
+ rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX, NULL_RTX,
|
||||
+ false /*compute_now*/);
|
||||
|
||||
if (new_x != orig_x)
|
||||
x = new_x;
|
||||
@@ -8793,7 +8833,8 @@ thumb_legitimize_address (rtx x, rtx ori
|
||||
{
|
||||
/* We need to find and carefully transform any SYMBOL and LABEL
|
||||
references; so go back to the original address expression. */
|
||||
- rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX);
|
||||
+ rtx new_x = legitimize_pic_address (orig_x, mode, NULL_RTX, NULL_RTX,
|
||||
+ false /*compute_now*/);
|
||||
|
||||
if (new_x != orig_x)
|
||||
x = new_x;
|
||||
@@ -18093,7 +18134,7 @@ arm_emit_call_insn (rtx pat, rtx addr, b
|
||||
? !targetm.binds_local_p (SYMBOL_REF_DECL (addr))
|
||||
: !SYMBOL_REF_LOCAL_P (addr)))
|
||||
{
|
||||
- require_pic_register ();
|
||||
+ require_pic_register (NULL_RTX, false /*compute_now*/);
|
||||
use_reg (&CALL_INSN_FUNCTION_USAGE (insn), cfun->machine->pic_reg);
|
||||
}
|
||||
|
||||
@@ -22067,7 +22108,7 @@ arm_expand_prologue (void)
|
||||
mask &= THUMB2_WORK_REGS;
|
||||
if (!IS_NESTED (func_type))
|
||||
mask |= (1 << IP_REGNUM);
|
||||
- arm_load_pic_register (mask);
|
||||
+ arm_load_pic_register (mask, NULL_RTX);
|
||||
}
|
||||
|
||||
/* If we are profiling, make sure no instructions are scheduled before
|
||||
@@ -25310,7 +25351,7 @@ thumb1_expand_prologue (void)
|
||||
/* Load the pic register before setting the frame pointer,
|
||||
so we can use r7 as a temporary work register. */
|
||||
if (flag_pic && arm_pic_register != INVALID_REGNUM)
|
||||
- arm_load_pic_register (live_regs_mask);
|
||||
+ arm_load_pic_register (live_regs_mask, NULL_RTX);
|
||||
|
||||
if (!frame_pointer_needed && CALLER_INTERWORKING_SLOT_SIZE > 0)
|
||||
emit_move_insn (gen_rtx_REG (Pmode, ARM_HARD_FRAME_POINTER_REGNUM),
|
||||
Index: gcc-8.5.0/gcc/config/arm/arm.md
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/arm.md
|
||||
+++ gcc-8.5.0/gcc/config/arm/arm.md
|
||||
@@ -6014,7 +6014,7 @@
|
||||
|| symbol_mentioned_p (operands[1])
|
||||
|| label_mentioned_p (operands[1])))
|
||||
operands[1] =
|
||||
- legitimize_pic_address (operands[1], SImode, tmp);
|
||||
+ legitimize_pic_address (operands[1], SImode, tmp, NULL_RTX, false);
|
||||
}
|
||||
"
|
||||
)
|
||||
@@ -6302,7 +6302,7 @@
|
||||
/* r3 is clobbered by set/longjmp, so we can use it as a scratch
|
||||
register. */
|
||||
if (arm_pic_register != INVALID_REGNUM)
|
||||
- arm_load_pic_register (1UL << 3);
|
||||
+ arm_load_pic_register (1UL << 3, NULL_RTX);
|
||||
DONE;
|
||||
}")
|
||||
|
||||
@@ -8692,6 +8692,164 @@
|
||||
(set_attr "conds" "clob")]
|
||||
)
|
||||
|
||||
+;; Named patterns for stack smashing protection.
|
||||
+(define_expand "stack_protect_combined_set"
|
||||
+ [(parallel
|
||||
+ [(set (match_operand:SI 0 "memory_operand" "")
|
||||
+ (unspec:SI [(match_operand:SI 1 "guard_operand" "")]
|
||||
+ UNSPEC_SP_SET))
|
||||
+ (clobber (match_scratch:SI 2 ""))
|
||||
+ (clobber (match_scratch:SI 3 ""))])]
|
||||
+ ""
|
||||
+ ""
|
||||
+)
|
||||
+
|
||||
+;; Use a separate insn from the above expand to be able to have the mem outside
|
||||
+;; the operand #1 when register allocation comes. This is needed to avoid LRA
|
||||
+;; try to reload the guard since we need to control how PIC access is done in
|
||||
+;; the -fpic/-fPIC case (see COMPUTE_NOW parameter when calling
|
||||
+;; legitimize_pic_address ()).
|
||||
+(define_insn_and_split "*stack_protect_combined_set_insn"
|
||||
+ [(set (match_operand:SI 0 "memory_operand" "=m,m")
|
||||
+ (unspec:SI [(mem:SI (match_operand:SI 1 "guard_addr_operand" "X,X"))]
|
||||
+ UNSPEC_SP_SET))
|
||||
+ (clobber (match_scratch:SI 2 "=&l,&r"))
|
||||
+ (clobber (match_scratch:SI 3 "=&l,&r"))]
|
||||
+ ""
|
||||
+ "#"
|
||||
+ "reload_completed"
|
||||
+ [(parallel [(set (match_dup 0) (unspec:SI [(mem:SI (match_dup 2))]
|
||||
+ UNSPEC_SP_SET))
|
||||
+ (clobber (match_dup 2))])]
|
||||
+ "
|
||||
+{
|
||||
+ if (flag_pic)
|
||||
+ {
|
||||
+ /* Forces recomputing of GOT base now. */
|
||||
+ legitimize_pic_address (operands[1], SImode, operands[2], operands[3],
|
||||
+ true /*compute_now*/);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (address_operand (operands[1], SImode))
|
||||
+ operands[2] = operands[1];
|
||||
+ else
|
||||
+ {
|
||||
+ rtx mem = XEXP (force_const_mem (SImode, operands[1]), 0);
|
||||
+ emit_move_insn (operands[2], mem);
|
||||
+ }
|
||||
+ }
|
||||
+}"
|
||||
+ [(set_attr "arch" "t1,32")]
|
||||
+)
|
||||
+
|
||||
+(define_insn "*stack_protect_set_insn"
|
||||
+ [(set (match_operand:SI 0 "memory_operand" "=m,m")
|
||||
+ (unspec:SI [(mem:SI (match_operand:SI 1 "register_operand" "+&l,&r"))]
|
||||
+ UNSPEC_SP_SET))
|
||||
+ (clobber (match_dup 1))]
|
||||
+ ""
|
||||
+ "@
|
||||
+ ldr\\t%1, [%1]\;str\\t%1, %0\;movs\t%1,#0
|
||||
+ ldr\\t%1, [%1]\;str\\t%1, %0\;mov\t%1,#0"
|
||||
+ [(set_attr "length" "8,12")
|
||||
+ (set_attr "conds" "clob,nocond")
|
||||
+ (set_attr "type" "multiple")
|
||||
+ (set_attr "arch" "t1,32")]
|
||||
+)
|
||||
+
|
||||
+(define_expand "stack_protect_combined_test"
|
||||
+ [(parallel
|
||||
+ [(set (pc)
|
||||
+ (if_then_else
|
||||
+ (eq (match_operand:SI 0 "memory_operand" "")
|
||||
+ (unspec:SI [(match_operand:SI 1 "guard_operand" "")]
|
||||
+ UNSPEC_SP_TEST))
|
||||
+ (label_ref (match_operand 2))
|
||||
+ (pc)))
|
||||
+ (clobber (match_scratch:SI 3 ""))
|
||||
+ (clobber (match_scratch:SI 4 ""))
|
||||
+ (clobber (reg:CC CC_REGNUM))])]
|
||||
+ ""
|
||||
+ ""
|
||||
+)
|
||||
+
|
||||
+;; Use a separate insn from the above expand to be able to have the mem outside
|
||||
+;; the operand #1 when register allocation comes. This is needed to avoid LRA
|
||||
+;; try to reload the guard since we need to control how PIC access is done in
|
||||
+;; the -fpic/-fPIC case (see COMPUTE_NOW parameter when calling
|
||||
+;; legitimize_pic_address ()).
|
||||
+(define_insn_and_split "*stack_protect_combined_test_insn"
|
||||
+ [(set (pc)
|
||||
+ (if_then_else
|
||||
+ (eq (match_operand:SI 0 "memory_operand" "m,m")
|
||||
+ (unspec:SI [(mem:SI (match_operand:SI 1 "guard_addr_operand" "X,X"))]
|
||||
+ UNSPEC_SP_TEST))
|
||||
+ (label_ref (match_operand 2))
|
||||
+ (pc)))
|
||||
+ (clobber (match_scratch:SI 3 "=&l,&r"))
|
||||
+ (clobber (match_scratch:SI 4 "=&l,&r"))
|
||||
+ (clobber (reg:CC CC_REGNUM))]
|
||||
+ ""
|
||||
+ "#"
|
||||
+ "reload_completed"
|
||||
+ [(const_int 0)]
|
||||
+{
|
||||
+ rtx eq;
|
||||
+
|
||||
+ if (flag_pic)
|
||||
+ {
|
||||
+ /* Forces recomputing of GOT base now. */
|
||||
+ legitimize_pic_address (operands[1], SImode, operands[3], operands[4],
|
||||
+ true /*compute_now*/);
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ if (address_operand (operands[1], SImode))
|
||||
+ operands[3] = operands[1];
|
||||
+ else
|
||||
+ {
|
||||
+ rtx mem = XEXP (force_const_mem (SImode, operands[1]), 0);
|
||||
+ emit_move_insn (operands[3], mem);
|
||||
+ }
|
||||
+ }
|
||||
+ if (TARGET_32BIT)
|
||||
+ {
|
||||
+ emit_insn (gen_arm_stack_protect_test_insn (operands[4], operands[0],
|
||||
+ operands[3]));
|
||||
+ rtx cc_reg = gen_rtx_REG (CC_Zmode, CC_REGNUM);
|
||||
+ eq = gen_rtx_EQ (CC_Zmode, cc_reg, const0_rtx);
|
||||
+ emit_jump_insn (gen_arm_cond_branch (operands[2], eq, cc_reg));
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ emit_insn (gen_thumb1_stack_protect_test_insn (operands[4], operands[0],
|
||||
+ operands[3]));
|
||||
+ eq = gen_rtx_EQ (VOIDmode, operands[4], const0_rtx);
|
||||
+ emit_jump_insn (gen_cbranchsi4 (eq, operands[4], const0_rtx,
|
||||
+ operands[2]));
|
||||
+ }
|
||||
+ DONE;
|
||||
+}
|
||||
+ [(set_attr "arch" "t1,32")]
|
||||
+)
|
||||
+
|
||||
+(define_insn "arm_stack_protect_test_insn"
|
||||
+ [(set (reg:CC_Z CC_REGNUM)
|
||||
+ (compare:CC_Z (unspec:SI [(match_operand:SI 1 "memory_operand" "m,m")
|
||||
+ (mem:SI (match_operand:SI 2 "register_operand" "+l,r"))]
|
||||
+ UNSPEC_SP_TEST)
|
||||
+ (const_int 0)))
|
||||
+ (clobber (match_operand:SI 0 "register_operand" "=&l,&r"))
|
||||
+ (clobber (match_dup 2))]
|
||||
+ "TARGET_32BIT"
|
||||
+ "ldr\t%0, [%2]\;ldr\t%2, %1\;eors\t%0, %2, %0"
|
||||
+ [(set_attr "length" "8,12")
|
||||
+ (set_attr "conds" "set")
|
||||
+ (set_attr "type" "multiple")
|
||||
+ (set_attr "arch" "t,32")]
|
||||
+)
|
||||
+
|
||||
(define_expand "casesi"
|
||||
[(match_operand:SI 0 "s_register_operand" "") ; index to jump on
|
||||
(match_operand:SI 1 "const_int_operand" "") ; lower bound
|
||||
Index: gcc-8.5.0/gcc/config/arm/predicates.md
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/predicates.md
|
||||
+++ gcc-8.5.0/gcc/config/arm/predicates.md
|
||||
@@ -31,6 +31,23 @@
|
||||
|| REGNO_REG_CLASS (REGNO (op)) != NO_REGS));
|
||||
})
|
||||
|
||||
+; Predicate for stack protector guard's address in
|
||||
+; stack_protect_combined_set_insn and stack_protect_combined_test_insn patterns
|
||||
+(define_predicate "guard_addr_operand"
|
||||
+ (match_test "true")
|
||||
+{
|
||||
+ return (CONSTANT_ADDRESS_P (op)
|
||||
+ || !targetm.cannot_force_const_mem (mode, op));
|
||||
+})
|
||||
+
|
||||
+; Predicate for stack protector guard in stack_protect_combined_set and
|
||||
+; stack_protect_combined_test patterns
|
||||
+(define_predicate "guard_operand"
|
||||
+ (match_code "mem")
|
||||
+{
|
||||
+ return guard_addr_operand (XEXP (op, 0), mode);
|
||||
+})
|
||||
+
|
||||
(define_predicate "imm_for_neon_inv_logic_operand"
|
||||
(match_code "const_vector")
|
||||
{
|
||||
Index: gcc-8.5.0/gcc/config/arm/thumb1.md
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/thumb1.md
|
||||
+++ gcc-8.5.0/gcc/config/arm/thumb1.md
|
||||
@@ -1962,4 +1962,17 @@
|
||||
}"
|
||||
[(set_attr "type" "mov_reg")]
|
||||
)
|
||||
+
|
||||
+(define_insn "thumb1_stack_protect_test_insn"
|
||||
+ [(set (match_operand:SI 0 "register_operand" "=&l")
|
||||
+ (unspec:SI [(match_operand:SI 1 "memory_operand" "m")
|
||||
+ (mem:SI (match_operand:SI 2 "register_operand" "+l"))]
|
||||
+ UNSPEC_SP_TEST))
|
||||
+ (clobber (match_dup 2))]
|
||||
+ "TARGET_THUMB1"
|
||||
+ "ldr\t%0, [%2]\;ldr\t%2, %1\;eors\t%0, %2, %0"
|
||||
+ [(set_attr "length" "8")
|
||||
+ (set_attr "conds" "set")
|
||||
+ (set_attr "type" "multiple")]
|
||||
+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/arm/unspecs.md
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/unspecs.md
|
||||
+++ gcc-8.5.0/gcc/config/arm/unspecs.md
|
||||
@@ -86,6 +86,9 @@
|
||||
UNSPEC_PROBE_STACK ; Probe stack memory reference
|
||||
UNSPEC_NONSECURE_MEM ; Represent non-secure memory in ARMv8-M with
|
||||
; security extension
|
||||
+ UNSPEC_SP_SET ; Represent the setting of stack protector's canary
|
||||
+ UNSPEC_SP_TEST ; Represent the testing of stack protector's canary
|
||||
+ ; against the guard.
|
||||
])
|
||||
|
||||
(define_c_enum "unspec" [
|
||||
Index: gcc-8.5.0/gcc/doc/md.texi
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/doc/md.texi
|
||||
+++ gcc-8.5.0/gcc/doc/md.texi
|
||||
@@ -7285,22 +7285,61 @@ builtins.
|
||||
The get/set patterns have a single output/input operand respectively,
|
||||
with @var{mode} intended to be @code{Pmode}.
|
||||
|
||||
+@cindex @code{stack_protect_combined_set} instruction pattern
|
||||
+@item @samp{stack_protect_combined_set}
|
||||
+This pattern, if defined, moves a @code{ptr_mode} value from an address
|
||||
+whose declaration RTX is given in operand 1 to the memory in operand 0
|
||||
+without leaving the value in a register afterward. If several
|
||||
+instructions are needed by the target to perform the operation (eg. to
|
||||
+load the address from a GOT entry then load the @code{ptr_mode} value
|
||||
+and finally store it), it is the backend's responsibility to ensure no
|
||||
+intermediate result gets spilled. This is to avoid leaking the value
|
||||
+some place that an attacker might use to rewrite the stack guard slot
|
||||
+after having clobbered it.
|
||||
+
|
||||
+If this pattern is not defined, then the address declaration is
|
||||
+expanded first in the standard way and a @code{stack_protect_set}
|
||||
+pattern is then generated to move the value from that address to the
|
||||
+address in operand 0.
|
||||
+
|
||||
@cindex @code{stack_protect_set} instruction pattern
|
||||
@item @samp{stack_protect_set}
|
||||
-This pattern, if defined, moves a @code{ptr_mode} value from the memory
|
||||
-in operand 1 to the memory in operand 0 without leaving the value in
|
||||
-a register afterward. This is to avoid leaking the value some place
|
||||
-that an attacker might use to rewrite the stack guard slot after
|
||||
-having clobbered it.
|
||||
+This pattern, if defined, moves a @code{ptr_mode} value from the valid
|
||||
+memory location in operand 1 to the memory in operand 0 without leaving
|
||||
+the value in a register afterward. This is to avoid leaking the value
|
||||
+some place that an attacker might use to rewrite the stack guard slot
|
||||
+after having clobbered it.
|
||||
+
|
||||
+Note: on targets where the addressing modes do not allow to load
|
||||
+directly from stack guard address, the address is expanded in a standard
|
||||
+way first which could cause some spills.
|
||||
|
||||
If this pattern is not defined, then a plain move pattern is generated.
|
||||
|
||||
+@cindex @code{stack_protect_combined_test} instruction pattern
|
||||
+@item @samp{stack_protect_combined_test}
|
||||
+This pattern, if defined, compares a @code{ptr_mode} value from an
|
||||
+address whose declaration RTX is given in operand 1 with the memory in
|
||||
+operand 0 without leaving the value in a register afterward and
|
||||
+branches to operand 2 if the values were equal. If several
|
||||
+instructions are needed by the target to perform the operation (eg. to
|
||||
+load the address from a GOT entry then load the @code{ptr_mode} value
|
||||
+and finally store it), it is the backend's responsibility to ensure no
|
||||
+intermediate result gets spilled. This is to avoid leaking the value
|
||||
+some place that an attacker might use to rewrite the stack guard slot
|
||||
+after having clobbered it.
|
||||
+
|
||||
+If this pattern is not defined, then the address declaration is
|
||||
+expanded first in the standard way and a @code{stack_protect_test}
|
||||
+pattern is then generated to compare the value from that address to the
|
||||
+value at the memory in operand 0.
|
||||
+
|
||||
@cindex @code{stack_protect_test} instruction pattern
|
||||
@item @samp{stack_protect_test}
|
||||
This pattern, if defined, compares a @code{ptr_mode} value from the
|
||||
-memory in operand 1 with the memory in operand 0 without leaving the
|
||||
-value in a register afterward and branches to operand 2 if the values
|
||||
-were equal.
|
||||
+valid memory location in operand 1 with the memory in operand 0 without
|
||||
+leaving the value in a register afterward and branches to operand 2 if
|
||||
+the values were equal.
|
||||
|
||||
If this pattern is not defined, then a plain compare pattern and
|
||||
conditional branch pattern is used.
|
||||
Index: gcc-8.5.0/gcc/function.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/function.c
|
||||
+++ gcc-8.5.0/gcc/function.c
|
||||
@@ -5107,18 +5107,34 @@ stack_protect_epilogue (void)
|
||||
tree guard_decl = targetm.stack_protect_guard ();
|
||||
rtx_code_label *label = gen_label_rtx ();
|
||||
rtx x, y;
|
||||
- rtx_insn *seq;
|
||||
+ rtx_insn *seq = NULL;
|
||||
|
||||
x = expand_normal (crtl->stack_protect_guard);
|
||||
- if (guard_decl)
|
||||
- y = expand_normal (guard_decl);
|
||||
+
|
||||
+ if (targetm.have_stack_protect_combined_test () && guard_decl)
|
||||
+ {
|
||||
+ gcc_assert (DECL_P (guard_decl));
|
||||
+ y = DECL_RTL (guard_decl);
|
||||
+ /* Allow the target to compute address of Y and compare it with X without
|
||||
+ leaking Y into a register. This combined address + compare pattern
|
||||
+ allows the target to prevent spilling of any intermediate results by
|
||||
+ splitting it after register allocator. */
|
||||
+ seq = targetm.gen_stack_protect_combined_test (x, y, label);
|
||||
+ }
|
||||
else
|
||||
- y = const0_rtx;
|
||||
+ {
|
||||
+ if (guard_decl)
|
||||
+ y = expand_normal (guard_decl);
|
||||
+ else
|
||||
+ y = const0_rtx;
|
||||
+
|
||||
+ /* Allow the target to compare Y with X without leaking either into
|
||||
+ a register. */
|
||||
+ if (targetm.have_stack_protect_test ())
|
||||
+ seq = targetm.gen_stack_protect_test (x, y, label);
|
||||
+ }
|
||||
|
||||
- /* Allow the target to compare Y with X without leaking either into
|
||||
- a register. */
|
||||
- if (targetm.have_stack_protect_test ()
|
||||
- && ((seq = targetm.gen_stack_protect_test (x, y, label)) != NULL_RTX))
|
||||
+ if (seq)
|
||||
emit_insn (seq);
|
||||
else
|
||||
emit_cmp_and_jump_insns (x, y, EQ, NULL_RTX, ptr_mode, 1, label);
|
||||
Index: gcc-8.5.0/gcc/target-insns.def
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/target-insns.def
|
||||
+++ gcc-8.5.0/gcc/target-insns.def
|
||||
@@ -96,7 +96,9 @@ DEF_TARGET_INSN (sibcall_value, (rtx x0,
|
||||
DEF_TARGET_INSN (simple_return, (void))
|
||||
DEF_TARGET_INSN (split_stack_prologue, (void))
|
||||
DEF_TARGET_INSN (split_stack_space_check, (rtx x0, rtx x1))
|
||||
+DEF_TARGET_INSN (stack_protect_combined_set, (rtx x0, rtx x1))
|
||||
DEF_TARGET_INSN (stack_protect_set, (rtx x0, rtx x1))
|
||||
+DEF_TARGET_INSN (stack_protect_combined_test, (rtx x0, rtx x1, rtx x2))
|
||||
DEF_TARGET_INSN (stack_protect_test, (rtx x0, rtx x1, rtx x2))
|
||||
DEF_TARGET_INSN (store_multiple, (rtx x0, rtx x1, rtx x2))
|
||||
DEF_TARGET_INSN (tablejump, (rtx x0, rtx x1))
|
||||
@@ -1,118 +0,0 @@
|
||||
From 2b40941d23b1570cdd90083b58fa0f66aa58c86e Mon Sep 17 00:00:00 2001
|
||||
From: Tamar Christina <tamar.christina@arm.com>
|
||||
Date: Fri, 21 May 2021 12:16:56 +0100
|
||||
Subject: [PATCH] libsanitizer: Remove cyclades from libsanitizer
|
||||
|
||||
The Linux kernel has removed the interface to cyclades from
|
||||
the latest kernel headers[1] due to them being orphaned for the
|
||||
past 13 years.
|
||||
|
||||
libsanitizer uses this header when compiling against glibc, but
|
||||
glibcs itself doesn't seem to have any references to cyclades.
|
||||
|
||||
Further more it seems that the driver is broken in the kernel and
|
||||
the firmware doesn't seem to be available anymore.
|
||||
|
||||
As such since this is breaking the build of libsanitizer (and so the
|
||||
GCC bootstrap[2]) I propose to remove this.
|
||||
|
||||
[1] https://lkml.org/lkml/2021/3/2/153
|
||||
[2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100379
|
||||
|
||||
libsanitizer/ChangeLog:
|
||||
|
||||
PR sanitizer/100379
|
||||
* sanitizer_common/sanitizer_common_interceptors_ioctl.inc: Cherry-pick
|
||||
llvm-project revision f7c5351552387bd43f6ca3631016d7f0dfe0f135.
|
||||
* sanitizer_common/sanitizer_platform_limits_posix.cc: Likewise.
|
||||
* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
|
||||
---
|
||||
.../sanitizer_common_interceptors_ioctl.inc | 9 ---------
|
||||
.../sanitizer_platform_limits_posix.cc | 11 -----------
|
||||
.../sanitizer_platform_limits_posix.h | 10 ----------
|
||||
3 files changed, 30 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
||||
+++ gcc-8.5.0/libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
|
||||
@@ -361,15 +361,6 @@ static void ioctl_table_fill() {
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
// _(SIOCDEVPLIP, WRITE, struct_ifreq_sz); // the same as EQL_ENSLAVE
|
||||
- _(CYGETDEFTHRESH, WRITE, sizeof(int));
|
||||
- _(CYGETDEFTIMEOUT, WRITE, sizeof(int));
|
||||
- _(CYGETMON, WRITE, struct_cyclades_monitor_sz);
|
||||
- _(CYGETTHRESH, WRITE, sizeof(int));
|
||||
- _(CYGETTIMEOUT, WRITE, sizeof(int));
|
||||
- _(CYSETDEFTHRESH, NONE, 0);
|
||||
- _(CYSETDEFTIMEOUT, NONE, 0);
|
||||
- _(CYSETTHRESH, NONE, 0);
|
||||
- _(CYSETTIMEOUT, NONE, 0);
|
||||
_(EQL_EMANCIPATE, WRITE, struct_ifreq_sz);
|
||||
_(EQL_ENSLAVE, WRITE, struct_ifreq_sz);
|
||||
_(EQL_GETMASTRCFG, WRITE, struct_ifreq_sz);
|
||||
Index: gcc-8.5.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
+++ gcc-8.5.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
|
||||
@@ -157,7 +157,6 @@ typedef struct user_fpregs elf_fpregset_
|
||||
# include <sys/procfs.h>
|
||||
#endif
|
||||
#include <sys/user.h>
|
||||
-#include <linux/cyclades.h>
|
||||
#include <linux/if_eql.h>
|
||||
#include <linux/if_plip.h>
|
||||
#include <linux/lp.h>
|
||||
@@ -464,7 +463,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
unsigned struct_ax25_parms_struct_sz = sizeof(struct ax25_parms_struct);
|
||||
- unsigned struct_cyclades_monitor_sz = sizeof(struct cyclades_monitor);
|
||||
#if EV_VERSION > (0x010000)
|
||||
unsigned struct_input_keymap_entry_sz = sizeof(struct input_keymap_entry);
|
||||
#else
|
||||
@@ -831,15 +829,6 @@ unsigned struct_ElfW_Phdr_sz = sizeof(El
|
||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
- unsigned IOCTL_CYGETDEFTHRESH = CYGETDEFTHRESH;
|
||||
- unsigned IOCTL_CYGETDEFTIMEOUT = CYGETDEFTIMEOUT;
|
||||
- unsigned IOCTL_CYGETMON = CYGETMON;
|
||||
- unsigned IOCTL_CYGETTHRESH = CYGETTHRESH;
|
||||
- unsigned IOCTL_CYGETTIMEOUT = CYGETTIMEOUT;
|
||||
- unsigned IOCTL_CYSETDEFTHRESH = CYSETDEFTHRESH;
|
||||
- unsigned IOCTL_CYSETDEFTIMEOUT = CYSETDEFTIMEOUT;
|
||||
- unsigned IOCTL_CYSETTHRESH = CYSETTHRESH;
|
||||
- unsigned IOCTL_CYSETTIMEOUT = CYSETTIMEOUT;
|
||||
unsigned IOCTL_EQL_EMANCIPATE = EQL_EMANCIPATE;
|
||||
unsigned IOCTL_EQL_ENSLAVE = EQL_ENSLAVE;
|
||||
unsigned IOCTL_EQL_GETMASTRCFG = EQL_GETMASTRCFG;
|
||||
Index: gcc-8.5.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
+++ gcc-8.5.0/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
|
||||
@@ -1004,7 +1004,6 @@ struct __sanitizer_cookie_io_functions_t
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
extern unsigned struct_ax25_parms_struct_sz;
|
||||
- extern unsigned struct_cyclades_monitor_sz;
|
||||
extern unsigned struct_input_keymap_entry_sz;
|
||||
extern unsigned struct_ipx_config_data_sz;
|
||||
extern unsigned struct_kbdiacrs_sz;
|
||||
@@ -1349,15 +1348,6 @@ struct __sanitizer_cookie_io_functions_t
|
||||
#endif // SANITIZER_LINUX || SANITIZER_FREEBSD
|
||||
|
||||
#if SANITIZER_LINUX && !SANITIZER_ANDROID
|
||||
- extern unsigned IOCTL_CYGETDEFTHRESH;
|
||||
- extern unsigned IOCTL_CYGETDEFTIMEOUT;
|
||||
- extern unsigned IOCTL_CYGETMON;
|
||||
- extern unsigned IOCTL_CYGETTHRESH;
|
||||
- extern unsigned IOCTL_CYGETTIMEOUT;
|
||||
- extern unsigned IOCTL_CYSETDEFTHRESH;
|
||||
- extern unsigned IOCTL_CYSETDEFTIMEOUT;
|
||||
- extern unsigned IOCTL_CYSETTHRESH;
|
||||
- extern unsigned IOCTL_CYSETTIMEOUT;
|
||||
extern unsigned IOCTL_EQL_EMANCIPATE;
|
||||
extern unsigned IOCTL_EQL_ENSLAVE;
|
||||
extern unsigned IOCTL_EQL_GETMASTRCFG;
|
||||
129
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc-10.3.inc
Normal file
129
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc-10.3.inc
Normal file
@@ -0,0 +1,129 @@
|
||||
require gcc-for-nvcc-common.inc
|
||||
|
||||
# Third digit in PV should be incremented after a minor release
|
||||
|
||||
PV = "10.3.0"
|
||||
|
||||
# BINV should be incremented to a revision after a minor gcc release
|
||||
|
||||
BINV = "10.3.0"
|
||||
|
||||
FILESEXTRAPATHS =. "${FILE_DIRNAME}/gcc-for-nvcc:${FILE_DIRNAME}/gcc-for-nvcc/backport:"
|
||||
|
||||
DEPENDS =+ "mpfr gmp libmpc zlib flex-native"
|
||||
NATIVEDEPS = "mpfr-native gmp-native libmpc-native zlib-native flex-native zstd-native"
|
||||
|
||||
LICENSE = "GPL-3.0-with-GCC-exception & GPL-3.0-only"
|
||||
|
||||
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"
|
||||
|
||||
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-COLLECT_GCC_OPTIONS.patch \
|
||||
file://0007-Use-the-defaults.h-in-B-instead-of-S-and-t-oe-in-B.patch \
|
||||
file://0008-fortran-cross-compile-hack.patch \
|
||||
file://0009-cpp-honor-sysroot.patch \
|
||||
file://0010-MIPS64-Default-to-N64-ABI.patch \
|
||||
file://0011-Define-GLIBC_DYNAMIC_LINKER-and-UCLIBC_DYNAMIC_LINKE.patch \
|
||||
file://0012-gcc-Fix-argument-list-too-long-error.patch \
|
||||
file://0013-Disable-sdt.patch \
|
||||
file://0014-libtool.patch \
|
||||
file://0015-gcc-armv4-pass-fix-v4bx-to-linker-to-support-EABI.patch \
|
||||
file://0016-Use-the-multilib-config-files-from-B-instead-of-usin.patch \
|
||||
file://0017-Avoid-using-libdir-from-.la-which-usually-points-to-.patch \
|
||||
file://0018-export-CPP.patch \
|
||||
file://0019-Ensure-target-gcc-headers-can-be-included.patch \
|
||||
file://0020-Don-t-search-host-directory-during-relink-if-inst_pr.patch \
|
||||
file://0021-Use-SYSTEMLIBS_DIR-replacement-instead-of-hardcoding.patch \
|
||||
file://0022-aarch64-Add-support-for-musl-ldso.patch \
|
||||
file://0023-libcc1-fix-libcc1-s-install-path-and-rpath.patch \
|
||||
file://0024-handle-sysroot-support-for-nativesdk-gcc.patch \
|
||||
file://0025-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
|
||||
file://0026-Fix-various-_FOR_BUILD-and-related-variables.patch \
|
||||
file://0027-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
|
||||
file://0028-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
|
||||
file://0029-Link-libgcc-using-LDFLAGS-not-just-SHLIB_LDFLAGS.patch \
|
||||
file://0030-sync-gcc-stddef.h-with-musl.patch \
|
||||
file://0031-fix-segmentation-fault-in-precompiled-header-generat.patch \
|
||||
file://0032-Fix-for-testsuite-failure.patch \
|
||||
file://0033-Re-introduce-spe-commandline-options.patch \
|
||||
file://0034-libgcc_s-Use-alias-for-__cpu_indicator_init-instead-.patch \
|
||||
file://0035-gentypes-genmodes-Do-not-use-__LINE__-for-maintainin.patch \
|
||||
file://0036-mingw32-Enable-operation_not_supported.patch \
|
||||
file://0037-libatomic-Do-not-enforce-march-on-aarch64.patch \
|
||||
file://0001-libatomic-libgomp-libitc-Fix-bootstrap-PR70454.patch \
|
||||
file://0001-CVE-2021-35465.patch \
|
||||
file://0002-CVE-2021-35465.patch \
|
||||
file://0003-CVE-2021-35465.patch \
|
||||
file://0004-CVE-2021-35465.patch \
|
||||
file://0001-CVE-2021-42574.patch \
|
||||
file://0002-CVE-2021-42574.patch \
|
||||
file://0003-CVE-2021-42574.patch \
|
||||
file://0004-CVE-2021-42574.patch \
|
||||
file://0005-CVE-2021-42574.patch \
|
||||
"
|
||||
|
||||
SRC_URI[sha256sum] = "64f404c1a650f27fc33da242e1f2df54952e3963a49e06e73f6940f3223ac344"
|
||||
|
||||
S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
|
||||
|
||||
# For dev release snapshotting
|
||||
#S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${RELEASE}"
|
||||
#B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
|
||||
|
||||
# Language Overrides
|
||||
FORTRAN = ""
|
||||
JAVA = ""
|
||||
|
||||
SSP ?= "--disable-libssp"
|
||||
SSP:mingw32 = "--enable-libssp"
|
||||
|
||||
EXTRA_OECONF_BASE = "\
|
||||
${SSP} \
|
||||
--enable-libitm \
|
||||
--enable-lto \
|
||||
--disable-bootstrap \
|
||||
--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-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} \
|
||||
"
|
||||
|
||||
# Is a binutils 2.26 issue, not gcc
|
||||
CVE_CHECK_IGNORE += "CVE-2021-37322"
|
||||
@@ -14,7 +14,7 @@ BPN = "gcc"
|
||||
COMPILERDEP = "virtual/${TARGET_PREFIX}cuda-gcc:do_gcc_stash_builddir"
|
||||
|
||||
python extract_stashed_builddir () {
|
||||
src = d.expand("${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-8-stashed-builddir-${TARGET_SYS}")
|
||||
src = d.expand("${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-for-nvcc-stashed-builddir-${TARGET_SYS}")
|
||||
dest = d.getVar("B")
|
||||
oe.path.copyhardlinktree(src, dest)
|
||||
staging_processfixme([src + "/fixmepath"], dest, d.getVar("RECIPE_SYSROOT"), d.getVar("RECIPE_SYSROOT_NATIVE"), d)
|
||||
@@ -41,19 +41,13 @@ def get_gcc_ppc_plt_settings(bb, d):
|
||||
return "--enable-secureplt"
|
||||
return ""
|
||||
|
||||
def get_long_double_setting(bb, d):
|
||||
if d.getVar('TRANSLATED_TARGET_ARCH') in [ 'powerpc', 'powerpc64' ] and d.getVar('TCLIBC') in [ 'glibc' ]:
|
||||
return "--with-long-double-128"
|
||||
else:
|
||||
return "--without-long-double-128 libgcc_cv_powerpc_float128=no"
|
||||
return ""
|
||||
|
||||
def get_gcc_multiarch_setting(bb, d):
|
||||
target_arch = d.getVar('TRANSLATED_TARGET_ARCH')
|
||||
multiarch_options = {
|
||||
"i586": "--enable-targets=all",
|
||||
"i686": "--enable-targets=all",
|
||||
"powerpc": "--enable-targets=powerpc64",
|
||||
"powerpc64le": "--enable-targets=powerpcle",
|
||||
"mips": "--enable-targets=all",
|
||||
"sparc": "--enable-targets=all",
|
||||
}
|
||||
@@ -91,11 +85,7 @@ get_tune_parameters[vardepsexclude] = "AVAILTUNES TUNE_CCARGS OVERRIDES TUNE_FEA
|
||||
DEBIANNAME:${MLPREFIX}libgcc = "libgcc1"
|
||||
|
||||
MIRRORS =+ "\
|
||||
${GNU_MIRROR}/gcc ftp://gcc.gnu.org/pub/gcc/releases/ \n \
|
||||
${GNU_MIRROR}/gcc ftp://gd.tuwien.ac.at/gnu/gcc/ \n \
|
||||
${GNU_MIRROR}/gcc http://mirrors.rcn.net/pub/sourceware/gcc/releases/ \n \
|
||||
${GNU_MIRROR}/gcc http://gcc.get-software.com/releases/ \n \
|
||||
${GNU_MIRROR}/gcc http://gcc.get-software.com/releases/ \n \
|
||||
${GNU_MIRROR}/gcc https://gcc.gnu.org/pub/gcc/releases/ \
|
||||
"
|
||||
#
|
||||
# Set some default values
|
||||
@@ -105,7 +95,7 @@ BINV = "${PV}"
|
||||
#S = "${WORKDIR}/gcc-${PV}"
|
||||
S = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
|
||||
|
||||
B = "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
|
||||
B ?= "${WORKDIR}/gcc-${PV}/build.${HOST_SYS}.${TARGET_SYS}"
|
||||
|
||||
target_includedir ?= "${includedir}"
|
||||
target_libdir ?= "${libdir}"
|
||||
@@ -1,10 +1,12 @@
|
||||
require gcc-8-multilib-config.inc
|
||||
require gcc-8-shared-source.inc
|
||||
require gcc-for-nvcc-multilib-config.inc
|
||||
require gcc-for-nvcc-shared-source.inc
|
||||
#
|
||||
# Build the list of lanaguages to build.
|
||||
#
|
||||
# These can be overridden by the version specific .inc file.
|
||||
|
||||
# gcc 3.x expects 'f77', 4.0 expects 'f95', 4.1 and 4.2 expect 'fortran'
|
||||
FORTRAN ?= ",f77"
|
||||
LANGUAGES ?= "c,c++"
|
||||
|
||||
EXTRA_OECONF_BASE ?= ""
|
||||
@@ -15,9 +17,9 @@ GCCTHREADS ?= "posix"
|
||||
|
||||
GCCPIE ??= ""
|
||||
|
||||
SYMVERS_CONF ?= "--enable-symvers=gnu"
|
||||
|
||||
EXTRA_OECONF = "\
|
||||
--enable-version-specific-runtime-libs \
|
||||
--with-gxx-include-dir=${includedir}/c++/${BINV} \
|
||||
${@['--enable-clocale=generic', ''][d.getVar('USE_NLS') != 'no']} \
|
||||
--with-gnu-ld \
|
||||
--enable-shared \
|
||||
@@ -27,19 +29,20 @@ EXTRA_OECONF = "\
|
||||
${GCCPIE} \
|
||||
--enable-c99 \
|
||||
--enable-long-long \
|
||||
--enable-symvers=gnu \
|
||||
--disable-install-libiberty \
|
||||
${SYMVERS_CONF} \
|
||||
--enable-libstdcxx-pch \
|
||||
--program-prefix=${TARGET_PREFIX} \
|
||||
--program-suffix=-${BINV} \
|
||||
--without-local-prefix \
|
||||
--disable-install-libiberty \
|
||||
${EXTRA_OECONF_BASE} \
|
||||
${EXTRA_OECONF_GCC_FLOAT} \
|
||||
${EXTRA_OECONF_PATHS} \
|
||||
${@get_gcc_mips_plt_setting(bb, d)} \
|
||||
${@get_gcc_ppc_plt_settings(bb, d)} \
|
||||
${@get_long_double_setting(bb, d)} \
|
||||
${@get_gcc_multiarch_setting(bb, d)} \
|
||||
--enable-standard-branch-protection \
|
||||
--enable-version-specific-runtime-libs \
|
||||
--program-suffix=-${BINV} \
|
||||
"
|
||||
|
||||
# glibc version is a minimum controlling whether features are enabled.
|
||||
@@ -102,6 +105,7 @@ do_configure () {
|
||||
export LD_FOR_TARGET="${HOST_PREFIX}ld"
|
||||
export NM_FOR_TARGET="${HOST_PREFIX}nm"
|
||||
export AR_FOR_TARGET="${HOST_PREFIX}ar"
|
||||
export GFORTRAN_FOR_TARGET="gfortran"
|
||||
export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib"
|
||||
fi
|
||||
export CC_FOR_BUILD="${BUILD_CC}"
|
||||
@@ -1,13 +1,13 @@
|
||||
inherit cross-canadian
|
||||
|
||||
SUMMARY = "GNU cc and gcc C compilers (cross-canadian for ${TARGET_ARCH} target)"
|
||||
PN = "gcc-8-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
PN = "gcc-cross-canadian-${TRANSLATED_TARGET_ARCH}"
|
||||
|
||||
DEPENDS = "virtual/${TARGET_PREFIX}gcc virtual/${HOST_PREFIX}gcc virtual/${HOST_PREFIX}binutils virtual/nativesdk-libc nativesdk-gettext flex-native virtual/libc"
|
||||
|
||||
GCCMULTILIB = "--enable-multilib"
|
||||
|
||||
require gcc-8-configure-common.inc
|
||||
require gcc-for-nvcc-configure-common.inc
|
||||
|
||||
EXTRA_OECONF_PATHS = "\
|
||||
--with-gxx-include-dir=/not/exist${target_includedir}/c++/${BINV} \
|
||||
@@ -45,6 +45,9 @@ export WINDRES_FOR_TARGET = "${TARGET_PREFIX}windres"
|
||||
export ARCH_FLAGS_FOR_TARGET = "--sysroot=${STAGING_DIR_TARGET}"
|
||||
|
||||
do_configure () {
|
||||
if [ ! -d ${RECIPE_SYSROOT}/${target_includedir} ]; then
|
||||
mkdir -p ${RECIPE_SYSROOT}/${target_includedir}
|
||||
fi
|
||||
export CC_FOR_BUILD="${BUILD_CC}"
|
||||
export CXX_FOR_BUILD="${BUILD_CXX}"
|
||||
export CFLAGS_FOR_BUILD="${BUILD_CFLAGS}"
|
||||
@@ -121,11 +124,15 @@ do_install () {
|
||||
dest=${D}${libexecdir}/gcc/${TARGET_SYS}/${BINV}/
|
||||
install -d $dest
|
||||
suffix=${EXEEXT}
|
||||
for t in ar as ld nm objcopy objdump ranlib strip; do
|
||||
for t in ar as ld ld.bfd ld.gold nm objcopy objdump ranlib strip; do
|
||||
if [ "$t" = "g77" -o "$t" = "gfortran" ] && [ ! -e ${D}${bindir}/${TARGET_PREFIX}$t$suffix ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t$suffix $dest$t$suffix
|
||||
done
|
||||
for t in gcc cpp; do
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}${t}${BINV}$suffix $dest${t}${BINV}$suffix
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t-${BINV}$suffix $dest$t-${BINV}$suffix
|
||||
done
|
||||
t=real-ld
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}ld$suffix $dest$t$suffix
|
||||
@@ -145,7 +152,7 @@ do_install () {
|
||||
do
|
||||
d=${D}${bindir}/../${TARGET_ARCH}$v-$i
|
||||
install -d $d
|
||||
for j in ${TARGET_PREFIX}gcc-${BINV}${EXEEXT} ${TARGET_PREFIX}g++-${BINV}${EXEEXT}
|
||||
for j in ${TARGET_PREFIX}gcc${EXEEXT} ${TARGET_PREFIX}g++${EXEEXT}
|
||||
do
|
||||
p=${TARGET_ARCH}$v-$i-`echo $j | sed -e s,${TARGET_PREFIX},,`
|
||||
case $i in
|
||||
@@ -164,7 +171,7 @@ do_install () {
|
||||
}
|
||||
|
||||
ELFUTILS = "nativesdk-elfutils"
|
||||
DEPENDS += "nativesdk-gmp nativesdk-mpfr nativesdk-libmpc ${ELFUTILS} nativesdk-zlib"
|
||||
DEPENDS += "nativesdk-gmp nativesdk-mpfr nativesdk-libmpc ${ELFUTILS} nativesdk-zlib nativesdk-zstd"
|
||||
RDEPENDS:${PN} += "nativesdk-mpfr nativesdk-libmpc ${ELFUTILS}"
|
||||
|
||||
SYSTEMHEADERS = "${target_includedir}/"
|
||||
@@ -172,9 +179,6 @@ SYSTEMLIBS = "${target_base_libdir}/"
|
||||
SYSTEMLIBS1 = "${target_libdir}/"
|
||||
|
||||
EXTRA_OECONF += "--enable-poison-system-directories"
|
||||
EXTRA_OECONF:remove:elf = "--with-sysroot=/not/exist"
|
||||
EXTRA_OECONF:remove:eabi = "--with-sysroot=/not/exist"
|
||||
EXTRA_OECONF:append:elf = " --without-headers --with-newlib"
|
||||
EXTRA_OECONF:append:eabi = " --without-headers --with-newlib"
|
||||
|
||||
# gcc 4.7 needs -isystem
|
||||
export ARCH_FLAGS_FOR_TARGET = "--sysroot=${STAGING_DIR_TARGET} -isystem=${target_includedir}"
|
||||
@@ -0,0 +1,5 @@
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require gcc-for-nvcc-cross-canadian.inc
|
||||
|
||||
|
||||
|
||||
@@ -9,19 +9,19 @@ python () {
|
||||
d.setVar("EXTRADEPENDS", "linux-libc-headers")
|
||||
}
|
||||
|
||||
PN = "gcc-8-cross-${TARGET_ARCH}"
|
||||
PN = "gcc-for-nvcc-cross-${TARGET_ARCH}"
|
||||
|
||||
# Ignore how TARGET_ARCH is computed.
|
||||
TARGET_ARCH[vardepvalue] = "${TARGET_ARCH}"
|
||||
|
||||
require gcc-8-configure-common.inc
|
||||
require gcc-for-nvcc-configure-common.inc
|
||||
|
||||
# While we want the 'gnu' hash style, we explicitly set it to sysv here to
|
||||
# ensure that any recipe which doesn't obey our LDFLAGS (which also set it to
|
||||
# gnu) will hit a QA failure.
|
||||
LINKER_HASH_STYLE ?= "sysv"
|
||||
|
||||
EXTRA_OECONF += "--enable-poison-system-directories"
|
||||
EXTRA_OECONF += "--enable-poison-system-directories=error"
|
||||
EXTRA_OECONF:append:sh4 = " \
|
||||
--with-multilib-list= \
|
||||
--enable-incomplete-targets \
|
||||
@@ -77,7 +77,6 @@ do_compile () {
|
||||
|
||||
oe_runmake all-host configure-target-libgcc
|
||||
(cd ${B}/${TARGET_SYS}/libgcc; oe_runmake enable-execute-stack.c unwind.h md-unwind-support.h sfp-machine.h gthr-default.h)
|
||||
|
||||
}
|
||||
|
||||
INHIBIT_PACKAGE_STRIP = "1"
|
||||
@@ -100,12 +99,11 @@ do_install () {
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t $dest$t
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t ${dest}${TARGET_PREFIX}$t
|
||||
done
|
||||
# These are from this recipe, add suffix
|
||||
# These are from this recipe, and we built with version suffix
|
||||
for t in gcc cpp; do
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t-${BINV} $dest$t
|
||||
ln -sf ${BINRELPATH}/${TARGET_PREFIX}$t-${BINV} ${dest}${TARGET_PREFIX}$t
|
||||
done
|
||||
|
||||
dest=${D}${exec_prefix}/bin/${TARGET_SYS}-${BINV}/
|
||||
install -d $dest
|
||||
for t in ar as ld ld.bfd ld.gold nm objcopy objdump ranlib strip; do
|
||||
@@ -126,6 +124,7 @@ do_install () {
|
||||
cp ${S}/libquadmath/quadmath_weak.h ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/
|
||||
|
||||
find ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include-fixed -type f -not -name "README" -not -name limits.h -not -name syslimits.h | xargs rm -f
|
||||
|
||||
}
|
||||
|
||||
do_package[noexec] = "1"
|
||||
@@ -155,8 +154,8 @@ do_gcc_stash_builddir () {
|
||||
addtask do_gcc_stash_builddir after do_compile before do_install
|
||||
SSTATETASKS += "do_gcc_stash_builddir"
|
||||
do_gcc_stash_builddir[sstate-inputdirs] = "${BUILDDIRSTASH}"
|
||||
do_gcc_stash_builddir[sstate-outputdirs] = "${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-8-stashed-builddir-${TARGET_SYS}"
|
||||
do_gcc_stash_builddir[sstate-fixmedir] = "${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-8-stashed-builddir-${TARGET_SYS}"
|
||||
do_gcc_stash_builddir[sstate-outputdirs] = "${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-for-nvcc-stashed-builddir-${TARGET_SYS}"
|
||||
do_gcc_stash_builddir[sstate-fixmedir] = "${COMPONENTS_DIR}/${BUILD_ARCH}/gcc-for-nvcc-stashed-builddir-${TARGET_SYS}"
|
||||
|
||||
python do_gcc_stash_builddir_setscene () {
|
||||
sstate_setscene(d)
|
||||
3
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc-cross_10.3.bb
Normal file
3
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc-cross_10.3.bb
Normal file
@@ -0,0 +1,3 @@
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require gcc-for-nvcc-cross.inc
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
inherit crosssdk
|
||||
|
||||
PN = "gcc-8-crosssdk-${SDK_SYS}"
|
||||
PN = "gcc-for-nvcc-crosssdk-${SDK_SYS}"
|
||||
|
||||
SYSTEMHEADERS = "${SDKPATHNATIVE}${prefix_nativesdk}/include"
|
||||
SYSTEMLIBS = "${SDKPATHNATIVE}${base_libdir_nativesdk}/"
|
||||
@@ -0,0 +1,2 @@
|
||||
require gcc-for-nvcc-cross_${PV}.bb
|
||||
require gcc-for-nvcc-crosssdk.inc
|
||||
@@ -31,7 +31,9 @@ python gcc_multilib_setup() {
|
||||
'%s/*/linux64.h' % src_conf_dir,
|
||||
'%s/aarch64/t-aarch64' % src_conf_dir,
|
||||
'%s/aarch64/aarch64.h' % src_conf_dir,
|
||||
'%s/aarch64/aarch64-linux.h' % src_conf_dir,
|
||||
'%s/aarch64/aarch64-cores.def' % src_conf_dir,
|
||||
'%s/arm/linux-eabi.h' % src_conf_dir,
|
||||
'%s/*/linux.h' % src_conf_dir,
|
||||
'%s/linux.h' % src_conf_dir)
|
||||
|
||||
@@ -102,6 +104,8 @@ python gcc_multilib_setup() {
|
||||
r'\1' + wrap_libdir(libdir64) + r'\3'),
|
||||
(r'^(#define\s*GLIBC_DYNAMIC_LINKER64\s*\"\S+\"\s*)(\S+)(\s*\"\S+\"\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdir64) + r'\3' + wrap_libdir(libdir64) + r'\5'),
|
||||
(r'^(#define\s*GLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdir32) + r'\3'),
|
||||
(r'^(#define\s*GLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdirx32) + r'\3'),
|
||||
(r'^(#define\s*GLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
|
||||
@@ -112,8 +116,18 @@ python gcc_multilib_setup() {
|
||||
r'\1' + wrap_libdir(libdir64) + r'\3'),
|
||||
(r'^(#define\s*UCLIBC_DYNAMIC_LINKERN32\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdirn32) + r'\3'),
|
||||
(r'^(#define\s*UCLIBC_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdirx32) + r'\3'),
|
||||
(r'^(#define\s*UCLIBC_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdir32) + r'\3'),
|
||||
(r'^(#define\s*MUSL_DYNAMIC_LINKER32\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdir32) + r'\3'),
|
||||
(r'^(#define\s*MUSL_DYNAMIC_LINKER64\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdir64) + r'\3'),
|
||||
(r'^(#define\s*MUSL_DYNAMIC_LINKERX32\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdirx32) + r'\3'),
|
||||
(r'^(#define\s*MUSL_DYNAMIC_LINKER\b\s*)(\S+)(\s*\".*\")$',
|
||||
r'\1' + wrap_libdir(libdir32) + r'\3'),
|
||||
]
|
||||
|
||||
for (i, line) in enumerate(filelines):
|
||||
@@ -138,15 +152,15 @@ python gcc_multilib_setup() {
|
||||
}
|
||||
|
||||
gcc_header_config_files = {
|
||||
'x86_64' : ['gcc/config/i386/linux64.h'],
|
||||
'i586' : ['gcc/config/i386/linux64.h'],
|
||||
'i686' : ['gcc/config/i386/linux64.h'],
|
||||
'mips' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
|
||||
'mips64' : ['gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
|
||||
'powerpc' : ['gcc/config/rs6000/linux64.h'],
|
||||
'powerpc64' : ['gcc/config/rs6000/linux64.h'],
|
||||
'aarch64' : ['gcc/config/aarch64/aarch64.h'],
|
||||
'arm' : ['gcc/config/aarch64/aarch64.h'],
|
||||
'x86_64' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
|
||||
'i586' : ['gcc/config/linux.h', 'gcc/config/i386/linux.h', 'gcc/config/i386/linux64.h'],
|
||||
'i686' : ['gcc/config/linux.h', 'gcc/config/i386/linux64.h'],
|
||||
'mips' : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
|
||||
'mips64' : ['gcc/config/linux.h', 'gcc/config/mips/linux.h', 'gcc/config/mips/linux64.h'],
|
||||
'powerpc' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
|
||||
'powerpc64' : ['gcc/config/linux.h', 'gcc/config/rs6000/linux64.h'],
|
||||
'aarch64' : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
|
||||
'arm' : ['gcc/config/linux.h', 'gcc/config/aarch64/aarch64-linux.h', 'gcc/config/arm/linux-eabi.h'],
|
||||
}
|
||||
|
||||
libdir32 = 'SYSTEMLIBS_DIR'
|
||||
@@ -1,8 +1,8 @@
|
||||
require gcc-8-configure-common.inc
|
||||
require gcc-for-nvcc-configure-common.inc
|
||||
|
||||
SUMMARY = "Runtime libraries from GCC"
|
||||
|
||||
# Over-ride the LICENSE set by gcc-${PV}.inc to remove "& GPLv3"
|
||||
# Over-ride the LICENSE set by gcc-${PV}.inc to remove "& GPL-3.0-only"
|
||||
# All gcc-runtime packages are now covered by the runtime exception.
|
||||
LICENSE = "GPL-3.0-with-GCC-exception"
|
||||
|
||||
@@ -16,6 +16,19 @@ EXTRA_OECONF_PATHS = "\
|
||||
|
||||
EXTRA_OECONF:append:linuxstdbase = " --enable-clocale=gnu"
|
||||
EXTRA_OECONF:append = " --cache-file=${B}/config.cache"
|
||||
EXTRA_OECONF:append:libc-newlib = " --with-newlib"
|
||||
|
||||
# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
|
||||
EXTRA_OECONF:append:arm = " libat_cv_have_ifunc=no "
|
||||
EXTRA_OECONF:append:armeb = " libat_cv_have_ifunc=no "
|
||||
|
||||
DISABLE_STATIC:class-nativesdk ?= ""
|
||||
|
||||
# Newlib does not support symbol versioning on libsdtcc++
|
||||
SYMVERS_CONF:libc-newlib = ""
|
||||
|
||||
# Building with thumb enabled on armv6t fails
|
||||
ARM_INSTRUCTION_SET:armv6 = "arm"
|
||||
|
||||
RUNTIMELIBITM = "libitm"
|
||||
RUNTIMELIBITM:arc = ""
|
||||
@@ -27,22 +40,35 @@ RUNTIMELIBITM:riscv64 = ""
|
||||
RUNTIMELIBSSP ?= ""
|
||||
RUNTIMELIBSSP:mingw32 ?= "libssp"
|
||||
|
||||
RUNTIMETARGET = "${RUNTIMELIBSSP} libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM}"
|
||||
RUNTIMETARGET = "${RUNTIMELIBSSP} libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \
|
||||
${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \
|
||||
"
|
||||
# Only build libstdc++ for newlib
|
||||
RUNTIMETARGET:libc-newlib = "libstdc++-v3"
|
||||
|
||||
SLIB = "${TMPDIR}/work-shared/gcc-${PV}-${PR}/gcc-${PV}"
|
||||
SLIB_NEW = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
|
||||
# libiberty
|
||||
# libgfortran needs separate recipe due to libquadmath dependency
|
||||
|
||||
# Relative path to be repaced into debug info
|
||||
REL_S = "/usr/src/debug/${PN}/${EXTENDPE}${PV}-${PR}"
|
||||
|
||||
DEBUG_PREFIX_MAP:class-target = " \
|
||||
-fdebug-prefix-map=${WORKDIR}/recipe-sysroot= \
|
||||
-fdebug-prefix-map=${WORKDIR}/${MLPREFIX}recipe-sysroot= \
|
||||
-fdebug-prefix-map=${WORKDIR}/recipe-sysroot-native= \
|
||||
-fdebug-prefix-map=${SLIB}=${SLIB_NEW} \
|
||||
-fdebug-prefix-map=${SLIB}/include=${SLIB_NEW}/libstdc++-v3/../include \
|
||||
-fdebug-prefix-map=${SLIB}/libiberty=${SLIB_NEW}/libstdc++-v3/../libiberty \
|
||||
-fdebug-prefix-map=${B}=${SLIB_NEW} \
|
||||
-fdebug-prefix-map=${S}=${REL_S} \
|
||||
-fdebug-prefix-map=${S}/include=${REL_S}/libstdc++-v3/../include \
|
||||
-fdebug-prefix-map=${S}/libiberty=${REL_S}/libstdc++-v3/../libiberty \
|
||||
-fdebug-prefix-map=${S}/libgcc=${REL_S}/libstdc++-v3/../libgcc \
|
||||
-fdebug-prefix-map=${B}=${REL_S} \
|
||||
-ffile-prefix-map=${B}/${HOST_SYS}/libstdc++-v3/include=${includedir}/c++/${BINV} \
|
||||
"
|
||||
|
||||
do_configure () {
|
||||
export CXX="${CXX} -nostdinc++ -nostdlib++"
|
||||
export CXX="${CXX} -nostdinc++ -L${WORKDIR}/dummylib"
|
||||
# libstdc++ isn't built yet so CXX would error not able to find it which breaks stdc++'s configure
|
||||
# tests. Create a dummy empty lib for the purposes of configure.
|
||||
mkdir -p ${WORKDIR}/dummylib
|
||||
${CC} -x c /dev/null -nostartfiles -shared -o ${WORKDIR}/dummylib/libstdc++.so
|
||||
for d in libgcc ${RUNTIMETARGET}; do
|
||||
echo "Configuring $d"
|
||||
rm -rf ${B}/${TARGET_SYS}/$d/
|
||||
@@ -135,9 +161,8 @@ do_install:append:class-target () {
|
||||
}
|
||||
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
DEPENDS = "virtual/${TARGET_PREFIX}cuda-gcc virtual/${TARGET_PREFIX}cuda-g++ libgcc-8 virtual/${MLPREFIX}libc virtual/${TARGET_PREFIX}compilerlibs"
|
||||
DEPENDS = "virtual/${TARGET_PREFIX}cuda-gcc virtual/${TARGET_PREFIX}cuda-g++ libgcc-for-nvcc libgcc virtual/${MLPREFIX}libc"
|
||||
STAGING_BINDIR_TOOLCHAIN:append = "-${BINV}"
|
||||
#PROVIDES = "virtual/${TARGET_PREFIX}cuda-compilerlibs"
|
||||
|
||||
BBCLASSEXTEND = "nativesdk"
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require gcc-for-nvcc-runtime.inc
|
||||
21
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc-shared-source.inc
Normal file
21
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc-shared-source.inc
Normal file
@@ -0,0 +1,21 @@
|
||||
do_fetch() {
|
||||
:
|
||||
}
|
||||
do_fetch[noexec] = "1"
|
||||
deltask do_unpack
|
||||
deltask do_patch
|
||||
|
||||
SRC_URI = ""
|
||||
|
||||
do_configure[depends] += "gcc-for-nvcc-source-${PV}:do_preconfigure"
|
||||
do_populate_lic[depends] += "gcc-for-nvcc-source-${PV}:do_unpack"
|
||||
do_deploy_source_date_epoch[depends] += "gcc-for-nvcc-source-${PV}:do_deploy_source_date_epoch"
|
||||
|
||||
# Copy the SDE from the shared workdir to the recipe workdir
|
||||
do_deploy_source_date_epoch () {
|
||||
sde_file=${SDE_FILE}
|
||||
sde_file=${sde_file#${WORKDIR}/}
|
||||
mkdir -p ${SDE_DEPLOYDIR} $(dirname ${SDE_FILE})
|
||||
cp -p $(dirname ${S})/$sde_file ${SDE_DEPLOYDIR}
|
||||
cp -p $(dirname ${S})/$sde_file ${SDE_FILE}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ RM_WORK_EXCLUDE += "${PN}"
|
||||
|
||||
inherit nopackages
|
||||
|
||||
PN = "gcc-source-${PV}"
|
||||
PN = "gcc-for-nvcc-source-${PV}"
|
||||
WORKDIR = "${TMPDIR}/work-shared/gcc-${PV}-${PR}"
|
||||
SSTATE_SWSPEC = "sstate:gcc::${PV}:${PR}::${SSTATE_VERSION}:"
|
||||
|
||||
@@ -17,15 +17,21 @@ STAMPCLEAN = "${STAMPS_DIR}/work-shared/gcc-${PV}-*"
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
DEPENDS = ""
|
||||
PACKAGES = ""
|
||||
TARGET_ARCH = "allarch"
|
||||
TARGET_AS_ARCH = "none"
|
||||
TARGET_CC_ARCH = "none"
|
||||
TARGET_LD_ARCH = "none"
|
||||
TARGET_OS = "linux"
|
||||
baselib = "lib"
|
||||
PACKAGE_ARCH = "all"
|
||||
|
||||
B = "${WORKDIR}/build"
|
||||
|
||||
# This needs to be Python to avoid lots of shell variables becoming dependencies.
|
||||
python do_preconfigure () {
|
||||
import subprocess
|
||||
cmd = d.expand('cd ${S} && PATH=${PATH} gnu-configize')
|
||||
subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
|
||||
# See 0044-gengtypes.patch, we need to regenerate this file
|
||||
bb.utils.remove(d.expand("${S}/gcc/gengtype-lex.c"))
|
||||
cmd = d.expand("sed -i 's/BUILD_INFO=info/BUILD_INFO=/' ${S}/gcc/configure")
|
||||
subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=True)
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require gcc-for-nvcc-source.inc
|
||||
|
||||
EXCLUDE_FROM_WORLD = "1"
|
||||
@@ -1,8 +1,7 @@
|
||||
GCCMULTILIB = "--enable-multilib"
|
||||
require gcc-8-configure-common.inc
|
||||
require gcc-for-nvcc-configure-common.inc
|
||||
|
||||
DEPENDS += "virtual/${TARGET_PREFIX}cuda-gcc"
|
||||
SECURITY_STRINGFORMAT = "-Wformat -Wformat-security"
|
||||
DEPENDS += "virtual/${TARGET_PREFIX}/cuda-gcc"
|
||||
|
||||
EXTRA_OECONF_PATHS = "\
|
||||
--with-build-sysroot=${STAGING_DIR_TARGET} \
|
||||
@@ -22,6 +21,7 @@ EXTRA_OECONF:append:armv6:class-target = " --with-arch=armv6${ARMFPARCHEXT}"
|
||||
EXTRA_OECONF:append:armv7a:class-target = " --with-arch=armv7-a${ARMFPARCHEXT}"
|
||||
EXTRA_OECONF:append:armv7ve:class-target = " --with-arch=armv7ve${ARMFPARCHEXT}"
|
||||
EXTRA_OECONF:append:arc:class-target = " --with-cpu=${TUNE_PKGARCH}"
|
||||
EXTRA_OECONF:append:x86-64:class-target = " --with-arch=native"
|
||||
|
||||
# libcc1 requres gcc_cv_objdump when cross build, but gcc_cv_objdump is
|
||||
# set in subdir gcc, so subdir libcc1 can't use it, export it here to
|
||||
@@ -32,9 +32,9 @@ EXTRA_OECONF_GCC_FLOAT = "${@get_gcc_float_setting(bb, d)}"
|
||||
|
||||
PACKAGES = "\
|
||||
${PN} ${PN}-plugins ${PN}-symlinks \
|
||||
g++-8 g++-8-symlinks \
|
||||
cpp-8 cpp-8-symlinks \
|
||||
gcov-8 gcov-8-symlinks \
|
||||
g++-for-nvcc g++-for-nvcc-symlinks \
|
||||
cpp-for-nvcc cpp-for-nvcc-symlinks \
|
||||
gcov-for-nvcc gcov-for-nvcc-symlinks \
|
||||
${PN}-doc \
|
||||
${PN}-dev \
|
||||
${PN}-dbg \
|
||||
@@ -42,8 +42,9 @@ PACKAGES = "\
|
||||
|
||||
FILES:${PN} = "\
|
||||
${bindir}/${TARGET_PREFIX}gcc* \
|
||||
${bindir}/${TARGET_PREFIX}lto* \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/collect2* \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/g++-mapper-server \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lto* \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/lib*${SOLIBS} \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/liblto*${SOLIBSDEV} \
|
||||
@@ -78,29 +79,54 @@ FILES:${PN}-plugins = "\
|
||||
"
|
||||
ALLOW_EMPTY:${PN}-plugins = "1"
|
||||
|
||||
FILES:cpp-8 = "\
|
||||
FILES:g77 = "\
|
||||
${bindir}/${TARGET_PREFIX}g77 \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f771 \
|
||||
"
|
||||
FILES:g77-symlinks = "\
|
||||
${bindir}/g77 \
|
||||
${bindir}/f77 \
|
||||
"
|
||||
RRECOMMENDS:g77 = "\
|
||||
libg2c \
|
||||
libg2c-dev \
|
||||
"
|
||||
|
||||
FILES:gfortran = "\
|
||||
${bindir}/${TARGET_PREFIX}gfortran \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/f951 \
|
||||
"
|
||||
RRECOMMENDS:gfortran = "\
|
||||
libquadmath \
|
||||
libquadmath-dev \
|
||||
"
|
||||
FILES:gfortran-symlinks = "\
|
||||
${bindir}/gfortran \
|
||||
${bindir}/f95"
|
||||
|
||||
FILES:cpp-for-nvcc = "\
|
||||
${bindir}/${TARGET_PREFIX}cpp* \
|
||||
${base_libdir}/gcc/${TARGET_SYS}/${BINV}/cpp \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1"
|
||||
FILES:cpp-8-symlinks = "${bindir}/cpp-${BINV}"
|
||||
FILES:cpp-for-nvcc-symlinks = "${bindir}/cpp-${BINV}"
|
||||
|
||||
FILES:gcov-8 = "${bindir}/${TARGET_PREFIX}gcov-${BINV} \
|
||||
FILES:gcov-for-nvcc = "${bindir}/${TARGET_PREFIX}gcov-${BINV} \
|
||||
${bindir}/${TARGET_PREFIX}gcov-tool-${BINV} \
|
||||
${bindir}/${TARGET_PREFIX}gcov-dump-${BINV} \
|
||||
"
|
||||
FILES:gcov-8-symlinks = "${bindir}/gcov-${BINV} \
|
||||
FILES:gcov-for-nvcc-symlinks = "${bindir}/gcov-${BINV} \
|
||||
${bindir}/gcov-tool-${BINV} \
|
||||
"
|
||||
|
||||
FILES:g++-8 = "\
|
||||
${bindir}/${TARGET_PREFIX}g++* \
|
||||
FILES:g++-for-nvcc = "\
|
||||
${bindir}/${TARGET_PREFIX}g++ \
|
||||
${libexecdir}/gcc/${TARGET_SYS}/${BINV}/cc1plus \
|
||||
"
|
||||
FILES:g++-8-symlinks = "\
|
||||
FILES:g++-for-nvcc-symlinks = "\
|
||||
${bindir}/c++-${BINV} \
|
||||
${bindir}/g++-${BINV} \
|
||||
"
|
||||
RRECOMMENDS:g++-${BINV} = "\
|
||||
RRECOMMENDS:g++-for-nvcc = "\
|
||||
libstdc++ \
|
||||
libstdc++-dev \
|
||||
libatomic \
|
||||
@@ -168,15 +194,15 @@ do_install () {
|
||||
# Not sure why we end up with these but we don't want them...
|
||||
rm -f ${TARGET_PREFIX}${TARGET_PREFIX}*
|
||||
|
||||
# Symlinks so we can use these trivially on the target
|
||||
ln -sf ${TARGET_PREFIX}g++-${BINV} g++-${BINV}
|
||||
ln -sf ${TARGET_PREFIX}gcc-${BINV} gcc-${BINV}
|
||||
ln -sf ${TARGET_PREFIX}cpp-${BINV} cpp-${BINV}
|
||||
ln -sf ${TARGET_PREFIX}gcov-${BINV} gcov-${BINV}
|
||||
ln -sf ${TARGET_PREFIX}gcov-tool-${BINV} gcov-tool-${BINV}
|
||||
install -d ${D}${base_libdir}
|
||||
ln -sf ${bindir}/${TARGET_PREFIX}cpp ${D}${base_libdir}/cpp
|
||||
ln -sf g++-${BINV} c++-${BINV}
|
||||
ln -sf gcc-${BINV} cc-${BINV}
|
||||
|
||||
chown -R root:root ${D}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
From 3929bca9ca95de9d35e82ae8828b188029e3eb70 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Earnshaw <rearnsha@arm.com>
|
||||
Date: Fri, 11 Jun 2021 16:02:05 +0100
|
||||
Subject: [PATCH] arm: Add command-line option for enabling CVE-2021-35465
|
||||
mitigation [PR102035]
|
||||
|
||||
Add a new option, -mfix-cmse-cve-2021-35465 and document it. Enable it
|
||||
automatically for cortex-m33, cortex-m35p and cortex-m55.
|
||||
|
||||
gcc:
|
||||
PR target/102035
|
||||
* config/arm/arm.opt (mfix-cmse-cve-2021-35465): New option.
|
||||
* doc/invoke.texi (Arm Options): Document it.
|
||||
* config/arm/arm-cpus.in (quirk_vlldm): New feature bit.
|
||||
(ALL_QUIRKS): Add quirk_vlldm.
|
||||
(cortex-m33): Add quirk_vlldm.
|
||||
(cortex-m35p, cortex-m55): Likewise.
|
||||
* config/arm/arm.c (arm_option_override): Enable fix_vlldm if
|
||||
targetting an affected CPU and not explicitly controlled on
|
||||
the command line.
|
||||
|
||||
CVE: CVE-2021-35465
|
||||
Upstream-Status: Backport[https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=3929bca9ca95de9d35e82ae8828b188029e3eb70]
|
||||
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
|
||||
|
||||
---
|
||||
gcc/config/arm/arm-cpus.in | 9 +++++++--
|
||||
gcc/config/arm/arm.c | 9 +++++++++
|
||||
gcc/config/arm/arm.opt | 4 ++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
4 files changed, 29 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
|
||||
--- a/gcc/config/arm/arm.c 2020-07-22 23:35:17.344384552 -0700
|
||||
+++ b/gcc/config/arm/arm.c 2021-11-11 20:16:19.761241867 -0800
|
||||
@@ -3610,6 +3610,15 @@ arm_option_override (void)
|
||||
fix_cm3_ldrd = 0;
|
||||
}
|
||||
|
||||
+ /* Enable fix_vlldm by default if required. */
|
||||
+ if (fix_vlldm == 2)
|
||||
+ {
|
||||
+ if (bitmap_bit_p (arm_active_target.isa, isa_bit_quirk_vlldm))
|
||||
+ fix_vlldm = 1;
|
||||
+ else
|
||||
+ fix_vlldm = 0;
|
||||
+ }
|
||||
+
|
||||
/* Hot/Cold partitioning is not currently supported, since we can't
|
||||
handle literal pool placement in that case. */
|
||||
if (flag_reorder_blocks_and_partition)
|
||||
diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in
|
||||
--- a/gcc/config/arm/arm-cpus.in 2020-07-22 23:35:17.340384509 -0700
|
||||
+++ b/gcc/config/arm/arm-cpus.in 2021-11-11 20:17:01.364573561 -0800
|
||||
@@ -186,6 +186,9 @@ define feature quirk_armv6kz
|
||||
# Cortex-M3 LDRD quirk.
|
||||
define feature quirk_cm3_ldrd
|
||||
|
||||
+# v8-m/v8.1-m VLLDM errata.
|
||||
+define feature quirk_vlldm
|
||||
+
|
||||
# Don't use .cpu assembly directive
|
||||
define feature quirk_no_asmcpu
|
||||
|
||||
@@ -322,7 +325,7 @@ define implied vfp_base MVE MVE_FP ALL_F
|
||||
# architectures.
|
||||
# xscale isn't really a 'quirk', but it isn't an architecture either and we
|
||||
# need to ignore it for matching purposes.
|
||||
-define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd xscale quirk_no_asmcpu
|
||||
+define fgroup ALL_QUIRKS quirk_no_volatile_ce quirk_armv6kz quirk_cm3_ldrd quirk_vlldm xscale quirk_no_asmcpu
|
||||
|
||||
# Architecture entries
|
||||
# format:
|
||||
@@ -1524,6 +1527,7 @@ begin cpu cortex-m33
|
||||
architecture armv8-m.main+dsp+fp
|
||||
option nofp remove ALL_FP
|
||||
option nodsp remove armv7em
|
||||
+ isa quirk_vlldm
|
||||
costs v7m
|
||||
end cpu cortex-m33
|
||||
|
||||
@@ -1533,6 +1537,7 @@ begin cpu cortex-m35p
|
||||
architecture armv8-m.main+dsp+fp
|
||||
option nofp remove ALL_FP
|
||||
option nodsp remove armv7em
|
||||
+ isa quirk_vlldm
|
||||
costs v7m
|
||||
end cpu cortex-m35p
|
||||
|
||||
@@ -1544,7 +1549,7 @@ begin cpu cortex-m55
|
||||
option nomve remove mve mve_float
|
||||
option nofp remove ALL_FP mve_float
|
||||
option nodsp remove MVE mve_float
|
||||
- isa quirk_no_asmcpu
|
||||
+ isa quirk_no_asmcpu quirk_vlldm
|
||||
costs v7m
|
||||
vendor 41
|
||||
end cpu cortex-m55
|
||||
diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
|
||||
--- a/gcc/config/arm/arm.opt 2020-07-22 23:35:17.344384552 -0700
|
||||
+++ b/gcc/config/arm/arm.opt 2021-11-11 20:16:19.761241867 -0800
|
||||
@@ -271,6 +271,10 @@ Target Report Var(fix_cm3_ldrd) Init(2)
|
||||
Avoid overlapping destination and address registers on LDRD instructions
|
||||
that may trigger Cortex-M3 errata.
|
||||
|
||||
+mfix-cmse-cve-2021-35465
|
||||
+Target Var(fix_vlldm) Init(2)
|
||||
+Mitigate issues with VLLDM on some M-profile devices (CVE-2021-35465).
|
||||
+
|
||||
munaligned-access
|
||||
Target Report Var(unaligned_access) Init(2) Save
|
||||
Enable unaligned word and halfword accesses to packed data.
|
||||
diff -upr a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
--- a/gcc/doc/invoke.texi 2021-11-11 19:30:56.264523105 -0800
|
||||
+++ b/gcc/doc/invoke.texi 2021-11-11 20:16:19.769241739 -0800
|
||||
@@ -774,6 +774,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-mverbose-cost-dump @gol
|
||||
-mpure-code @gol
|
||||
-mcmse @gol
|
||||
+-mfix-cmse-cve-2021-35465 @gol
|
||||
-mfdpic}
|
||||
|
||||
@emph{AVR Options}
|
||||
@@ -21266,6 +21267,14 @@ Use multiply and add/subtract instructio
|
||||
|
||||
Do not use multiply and add/subtract instructions.
|
||||
|
||||
+@item -mfix-cmse-cve-2021-35465
|
||||
+@opindex mfix-cmse-cve-2021-35465
|
||||
+Mitigate against a potential security issue with the @code{VLLDM} instruction
|
||||
+in some M-profile devices when using CMSE (CVE-2021-365465). This option is
|
||||
+enabled by default when the option @option{-mcpu=} is used with
|
||||
+@code{cortex-m33}, @code{cortex-m35p} or @code{cortex-m55}. The option
|
||||
+@option{-mno-fix-cmse-cve-2021-35465} can be used to disable the mitigation.
|
||||
+
|
||||
@item -mfdpic
|
||||
@opindex mfdpic
|
||||
|
||||
2906
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc/0001-CVE-2021-42574.patch
Normal file
2906
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc/0001-CVE-2021-42574.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
From d7b284a9bede9d5059ad7e95a867254bf913c638 Mon Sep 17 00:00:00 2001
|
||||
From f2a5dc3bc7e5727d6bf77e1c6e8a31a6f000883d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:37:11 +0400
|
||||
Subject: [PATCH 01/40] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
|
||||
Subject: [PATCH] gcc-4.3.1: ARCH_FLAGS_FOR_TARGET
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
@@ -11,11 +11,11 @@ Upstream-Status: Inappropriate [embedded specific]
|
||||
configure.ac | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/configure
|
||||
+++ gcc-8.5.0/configure
|
||||
@@ -7507,7 +7507,7 @@ fi
|
||||
diff --git a/configure b/configure
|
||||
index 4cc938ebb7d..226a64939d1 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -7722,7 +7722,7 @@ fi
|
||||
# for target_alias and gcc doesn't manage it consistently.
|
||||
target_configargs="--cache-file=./config.cache ${target_configargs}"
|
||||
|
||||
@@ -24,11 +24,11 @@ Index: gcc-8.5.0/configure
|
||||
case " $target_configdirs " in
|
||||
*" newlib "*)
|
||||
case " $target_configargs " in
|
||||
Index: gcc-8.5.0/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/configure.ac
|
||||
+++ gcc-8.5.0/configure.ac
|
||||
@@ -3096,7 +3096,7 @@ fi
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index c78d9cbea62..f024f4bac9b 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -3227,7 +3227,7 @@ fi
|
||||
# for target_alias and gcc doesn't manage it consistently.
|
||||
target_configargs="--cache-file=./config.cache ${target_configargs}"
|
||||
|
||||
@@ -0,0 +1,208 @@
|
||||
From 2824d2418605e092899117e77bc8ebf332321807 Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Jelinek <jakub@redhat.com>
|
||||
Date: Fri, 15 Jan 2021 13:12:59 +0100
|
||||
Subject: [PATCH] libatomic, libgomp, libitc: Fix bootstrap [PR70454]
|
||||
|
||||
The recent changes to error on mixing -march=i386 and -fcf-protection broke
|
||||
bootstrap. This patch changes lib{atomic,gomp,itm} configury, so that it
|
||||
only adds -march=i486 to flags if really needed (i.e. when 486 or later isn't
|
||||
on by default already). Similarly, it will not use ifuncs if -mcx16
|
||||
(or -march=i686 for 32-bit) is on by default.
|
||||
|
||||
2021-01-15 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/70454
|
||||
libatomic/
|
||||
* configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to
|
||||
be added through preprocessor check on
|
||||
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4. Determine if try_ifunc is needed
|
||||
based on preprocessor check on __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
||||
or __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8.
|
||||
libgomp/
|
||||
* configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to
|
||||
be added through preprocessor check on
|
||||
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4.
|
||||
libitm/
|
||||
* configure.tgt: For i?86 and x86_64 determine if -march=i486 needs to
|
||||
be added through preprocessor check on
|
||||
__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4.
|
||||
|
||||
Upstream-Status: Backport [master post 10.x release]
|
||||
---
|
||||
libatomic/configure.tgt | 56 +++++++++++++++++++++++------------------
|
||||
libgomp/configure.tgt | 35 +++++++++++---------------
|
||||
libitm/configure.tgt | 37 +++++++++++++--------------
|
||||
3 files changed, 64 insertions(+), 64 deletions(-)
|
||||
|
||||
diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
|
||||
index 5dd0926d20..6ea082a29b 100644
|
||||
--- a/libatomic/configure.tgt
|
||||
+++ b/libatomic/configure.tgt
|
||||
@@ -81,32 +81,40 @@ case "${target_cpu}" in
|
||||
ARCH=sparc
|
||||
;;
|
||||
|
||||
- i[3456]86)
|
||||
- case " ${CC} ${CFLAGS} " in
|
||||
- *" -m64 "*|*" -mx32 "*)
|
||||
- ;;
|
||||
- *)
|
||||
- if test -z "$with_arch"; then
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
- XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
- fi
|
||||
- esac
|
||||
- ARCH=x86
|
||||
- # ??? Detect when -march=i686 is already enabled.
|
||||
- try_ifunc=yes
|
||||
- ;;
|
||||
- x86_64)
|
||||
- case " ${CC} ${CFLAGS} " in
|
||||
- *" -m32 "*)
|
||||
+ i[3456]86 | x86_64)
|
||||
+ cat > conftestx.c <<EOF
|
||||
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
+#error need -march=i486
|
||||
+#endif
|
||||
+EOF
|
||||
+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
+ :
|
||||
+ else
|
||||
+ if test "${target_cpu}" = x86_64; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
- XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
- ;;
|
||||
- *)
|
||||
- ;;
|
||||
- esac
|
||||
+ else
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
+ fi
|
||||
+ XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
+ fi
|
||||
+ cat > conftestx.c <<EOF
|
||||
+#ifdef __x86_64__
|
||||
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
||||
+#error need -mcx16
|
||||
+#endif
|
||||
+#else
|
||||
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
|
||||
+#error need -march=i686
|
||||
+#endif
|
||||
+#endif
|
||||
+EOF
|
||||
+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
+ try_ifunc=no
|
||||
+ else
|
||||
+ try_ifunc=yes
|
||||
+ fi
|
||||
+ rm -f conftestx.c
|
||||
ARCH=x86
|
||||
- # ??? Detect when -mcx16 is already enabled.
|
||||
- try_ifunc=yes
|
||||
;;
|
||||
|
||||
*) ARCH="${target_cpu}" ;;
|
||||
diff --git a/libgomp/configure.tgt b/libgomp/configure.tgt
|
||||
index 4790a31e39..761ef2a7db 100644
|
||||
--- a/libgomp/configure.tgt
|
||||
+++ b/libgomp/configure.tgt
|
||||
@@ -70,28 +70,23 @@ if test x$enable_linux_futex = xyes; then
|
||||
;;
|
||||
|
||||
# Note that bare i386 is not included here. We need cmpxchg.
|
||||
- i[456]86-*-linux*)
|
||||
+ i[456]86-*-linux* | x86_64-*-linux*)
|
||||
config_path="linux/x86 linux posix"
|
||||
- case " ${CC} ${CFLAGS} " in
|
||||
- *" -m64 "*|*" -mx32 "*)
|
||||
- ;;
|
||||
- *)
|
||||
- if test -z "$with_arch"; then
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
- fi
|
||||
- esac
|
||||
- ;;
|
||||
-
|
||||
- # Similar jiggery-pokery for x86_64 multilibs, except here we
|
||||
- # can't rely on the --with-arch configure option, since that
|
||||
- # applies to the 64-bit side.
|
||||
- x86_64-*-linux*)
|
||||
- config_path="linux/x86 linux posix"
|
||||
- case " ${CC} ${CFLAGS} " in
|
||||
- *" -m32 "*)
|
||||
+ cat > conftestx.c <<EOF
|
||||
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
+#error need -march=i486
|
||||
+#endif
|
||||
+EOF
|
||||
+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
+ :
|
||||
+ else
|
||||
+ if test "${target_cpu}" = x86_64; then
|
||||
XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
- ;;
|
||||
- esac
|
||||
+ else
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
+ fi
|
||||
+ fi
|
||||
+ rm -f conftestx.c
|
||||
;;
|
||||
|
||||
# Note that sparcv7 and sparcv8 is not included here. We need cas.
|
||||
diff --git a/libitm/configure.tgt b/libitm/configure.tgt
|
||||
index 04109160e9..ca62bac627 100644
|
||||
--- a/libitm/configure.tgt
|
||||
+++ b/libitm/configure.tgt
|
||||
@@ -58,16 +58,23 @@ case "${target_cpu}" in
|
||||
|
||||
arm*) ARCH=arm ;;
|
||||
|
||||
- i[3456]86)
|
||||
- case " ${CC} ${CFLAGS} " in
|
||||
- *" -m64 "*|*" -mx32 "*)
|
||||
- ;;
|
||||
- *)
|
||||
- if test -z "$with_arch"; then
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
- XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
- fi
|
||||
- esac
|
||||
+ i[3456]86 | x86_64)
|
||||
+ cat > conftestx.c <<EOF
|
||||
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
|
||||
+#error need -march=i486
|
||||
+#endif
|
||||
+EOF
|
||||
+ if ${CC} ${CFLAGS} -E conftestx.c > /dev/null 2>&1; then
|
||||
+ :
|
||||
+ else
|
||||
+ if test "${target_cpu}" = x86_64; then
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
+ else
|
||||
+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
|
||||
+ fi
|
||||
+ XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
+ fi
|
||||
+ rm -f conftestx.c
|
||||
XCFLAGS="${XCFLAGS} -mrtm"
|
||||
ARCH=x86
|
||||
;;
|
||||
@@ -102,16 +109,6 @@ case "${target_cpu}" in
|
||||
ARCH=sparc
|
||||
;;
|
||||
|
||||
- x86_64)
|
||||
- case " ${CC} ${CFLAGS} " in
|
||||
- *" -m32 "*)
|
||||
- XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
|
||||
- XCFLAGS="${XCFLAGS} -fomit-frame-pointer"
|
||||
- ;;
|
||||
- esac
|
||||
- XCFLAGS="${XCFLAGS} -mrtm"
|
||||
- ARCH=x86
|
||||
- ;;
|
||||
s390|s390x)
|
||||
XCFLAGS="${XCFLAGS} -mzarch -mhtm"
|
||||
ARCH=s390
|
||||
@@ -0,0 +1,40 @@
|
||||
From 574e7950bd6b34e9e2cacce18c802b45505d1d0a Mon Sep 17 00:00:00 2001
|
||||
From: Richard Earnshaw <rearnsha@arm.com>
|
||||
Date: Fri, 18 Jun 2021 17:16:25 +0100
|
||||
Subject: [PATCH] arm: add erratum mitigation to __gnu_cmse_nonsecure_call
|
||||
[PR102035]
|
||||
|
||||
Add the recommended erratum mitigation sequence to
|
||||
__gnu_cmse_nonsecure_call for use on Armv8-m.main devices. Since this
|
||||
is in the library code we cannot know in advance whether the core we
|
||||
are running on will be affected by this, so always enable it.
|
||||
|
||||
libgcc:
|
||||
PR target/102035
|
||||
* config/arm/cmse_nonsecure_call.S (__gnu_cmse_nonsecure_call):
|
||||
Add vlldm erratum work-around.
|
||||
|
||||
CVE: CVE-2021-35465
|
||||
Upstream-Status: Backport[https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=574e7950bd6b34e9e2cacce18c802b45505d1d0a]
|
||||
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
|
||||
|
||||
---
|
||||
libgcc/config/arm/cmse_nonsecure_call.S | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/libgcc/config/arm/cmse_nonsecure_call.S b/libgcc/config/arm/cmse_nonsecure_call.S
|
||||
index 00830ade98e..c8e0fbbe665 100644
|
||||
--- a/libgcc/config/arm/cmse_nonsecure_call.S
|
||||
+++ b/libgcc/config/arm/cmse_nonsecure_call.S
|
||||
@@ -102,6 +102,11 @@ blxns r4
|
||||
#ifdef __ARM_PCS_VFP
|
||||
vpop.f64 {d8-d15}
|
||||
#else
|
||||
+/* VLLDM erratum mitigation sequence. */
|
||||
+mrs r5, control
|
||||
+tst r5, #8 /* CONTROL_S.SFPA */
|
||||
+it ne
|
||||
+.inst.w 0xeeb00a40 /* vmovne s0, s0 */
|
||||
vlldm sp /* Lazy restore of d0-d16 and FPSCR. */
|
||||
add sp, sp, #0x88 /* Free space used to save floating point registers. */
|
||||
#endif /* __ARM_PCS_VFP */
|
||||
2270
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc/0002-CVE-2021-42574.patch
Normal file
2270
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc/0002-CVE-2021-42574.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
From 95ec476dd7726cc9c1bfd6fb23ba3aea8bbf61a4 Mon Sep 17 00:00:00 2001
|
||||
From 74cc21f474402cf3578e37e1d7a1a22bbd070f6a Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 08:59:00 +0400
|
||||
Subject: [PATCH 02/40] gcc: poison-system-directories
|
||||
Subject: [PATCH] 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
|
||||
@@ -13,23 +13,24 @@ wants this to be a failure, they can add "-Werror=poison-system-directories".
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Signed-off-by: Wang Mingyu <wangmy@cn.fujitsu.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
gcc/common.opt | 4 ++++
|
||||
gcc/config.in | 6 ++++++
|
||||
gcc/configure | 16 ++++++++++++++++
|
||||
gcc/configure.ac | 10 ++++++++++
|
||||
gcc/config.in | 10 ++++++++++
|
||||
gcc/configure | 19 +++++++++++++++++++
|
||||
gcc/configure.ac | 16 ++++++++++++++++
|
||||
gcc/doc/invoke.texi | 9 +++++++++
|
||||
gcc/gcc.c | 2 ++
|
||||
gcc/gcc.c | 9 +++++++--
|
||||
gcc/incpath.c | 21 +++++++++++++++++++++
|
||||
7 files changed, 68 insertions(+)
|
||||
7 files changed, 86 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/common.opt
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/common.opt
|
||||
+++ gcc-8.5.0/gcc/common.opt
|
||||
@@ -679,6 +679,10 @@ Wreturn-local-addr
|
||||
diff --git a/gcc/common.opt b/gcc/common.opt
|
||||
index 3ec7743ea..d3c3e51dc 100644
|
||||
--- a/gcc/common.opt
|
||||
+++ b/gcc/common.opt
|
||||
@@ -682,6 +682,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.
|
||||
|
||||
@@ -40,11 +41,11 @@ Index: gcc-8.5.0/gcc/common.opt
|
||||
Wshadow
|
||||
Common Var(warn_shadow) Warning
|
||||
Warn when one variable shadows another. Same as -Wshadow=global.
|
||||
Index: gcc-8.5.0/gcc/config.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config.in
|
||||
+++ gcc-8.5.0/gcc/config.in
|
||||
@@ -194,6 +194,12 @@
|
||||
diff --git a/gcc/config.in b/gcc/config.in
|
||||
index 364eba477..7d2c3bbf1 100644
|
||||
--- a/gcc/config.in
|
||||
+++ b/gcc/config.in
|
||||
@@ -224,6 +224,16 @@
|
||||
#endif
|
||||
|
||||
|
||||
@@ -52,16 +53,20 @@ Index: gcc-8.5.0/gcc/config.in
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef ENABLE_POISON_SYSTEM_DIRECTORIES
|
||||
+#endif
|
||||
+/* Define to warn for use of native system header directories */
|
||||
+#ifndef USED_FOR_TARGET
|
||||
+#undef POISON_BY_DEFAULT
|
||||
+#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. */
|
||||
Index: gcc-8.5.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure
|
||||
+++ gcc-8.5.0/gcc/configure
|
||||
@@ -954,6 +954,7 @@ with_system_zlib
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 2a9d646b4..a848792f2 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -1010,6 +1010,7 @@ with_system_zlib
|
||||
enable_maintainer_mode
|
||||
enable_link_mutex
|
||||
enable_version_specific_runtime_libs
|
||||
@@ -69,7 +74,7 @@ Index: gcc-8.5.0/gcc/configure
|
||||
enable_plugin
|
||||
enable_host_shared
|
||||
enable_libquadmath_support
|
||||
@@ -1697,6 +1698,8 @@ Optional Features:
|
||||
@@ -1766,6 +1767,8 @@ Optional Features:
|
||||
--enable-version-specific-runtime-libs
|
||||
specify that runtime libraries should be installed
|
||||
in a compiler-specific directory
|
||||
@@ -78,7 +83,7 @@ Index: gcc-8.5.0/gcc/configure
|
||||
--enable-plugin enable plugin support
|
||||
--enable-host-shared build host code as shared libraries
|
||||
--disable-libquadmath-support
|
||||
@@ -29767,6 +29770,19 @@ if test "${enable_version_specific_runti
|
||||
@@ -30280,6 +30283,22 @@ if test "${enable_version_specific_runtime_libs+set}" = set; then :
|
||||
fi
|
||||
|
||||
|
||||
@@ -89,49 +94,58 @@ Index: gcc-8.5.0/gcc/configure
|
||||
+ enable_poison_system_directories=no
|
||||
+fi
|
||||
+
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+if test "x${enable_poison_system_directories}" != "xno"; then
|
||||
+
|
||||
+$as_echo "#define ENABLE_POISON_SYSTEM_DIRECTORIES 1" >>confdefs.h
|
||||
+if test "$enable_poison_system_directories" = "error"; then
|
||||
+$as_echo "#define POISON_BY_DEFAULT 1" >>confdefs.h
|
||||
+fi
|
||||
+
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
|
||||
|
||||
Index: gcc-8.5.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure.ac
|
||||
+++ gcc-8.5.0/gcc/configure.ac
|
||||
@@ -6336,6 +6336,16 @@ AC_ARG_ENABLE(version-specific-runtime-l
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 51cce36ce..66ffde305 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -6614,6 +6614,22 @@ 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]),,
|
||||
+ [warn for use of native system header directories (no/yes/error)]),,
|
||||
+ [enable_poison_system_directories=no])
|
||||
+if test "x${enable_poison_system_directories}" = "xyes"; then
|
||||
+AC_MSG_NOTICE([poisoned directories $enable_poison_system_directories])
|
||||
+if test "x${enable_poison_system_directories}" != "xno"; then
|
||||
+ AC_MSG_NOTICE([poisoned directories enabled])
|
||||
+ AC_DEFINE([ENABLE_POISON_SYSTEM_DIRECTORIES],
|
||||
+ [1],
|
||||
+ [Define to warn for use of native system header directories])
|
||||
+ if test $enable_poison_system_directories = "error"; then
|
||||
+ AC_MSG_NOTICE([poisoned directories are fatal])
|
||||
+ AC_DEFINE([POISON_BY_DEFAULT], [1], [Define to make poison warnings errors])
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
# Substitute configuration variables
|
||||
AC_SUBST(subdirs)
|
||||
AC_SUBST(srcdir)
|
||||
Index: gcc-8.5.0/gcc/doc/invoke.texi
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/doc/invoke.texi
|
||||
+++ gcc-8.5.0/gcc/doc/invoke.texi
|
||||
@@ -304,6 +304,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wpacked -Wpacked-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index d929eb109..aa5ff88b1 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -351,6 +351,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wpacked -Wno-packed-bitfield-compat -Wpacked-not-aligned -Wpadded @gol
|
||||
-Wparentheses -Wno-pedantic-ms-format @gol
|
||||
-Wplacement-new -Wplacement-new=@var{n} @gol
|
||||
-Wpointer-arith -Wno-pointer-compare -Wno-pointer-to-int-cast @gol
|
||||
+-Wno-poison-system-directories @gol
|
||||
-Wpointer-arith -Wpointer-compare -Wno-pointer-to-int-cast @gol
|
||||
-Wno-pragmas -Wredundant-decls -Wrestrict -Wno-return-local-addr @gol
|
||||
-Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
|
||||
@@ -5748,6 +5749,14 @@ made up of data only and thus requires n
|
||||
-Wno-pragmas -Wno-prio-ctor-dtor -Wredundant-decls @gol
|
||||
-Wrestrict -Wno-return-local-addr -Wreturn-type @gol
|
||||
-Wno-scalar-storage-order -Wsequence-point @gol
|
||||
@@ -6928,6 +6929,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.
|
||||
|
||||
@@ -146,23 +160,37 @@ Index: gcc-8.5.0/gcc/doc/invoke.texi
|
||||
@item -Wfloat-equal
|
||||
@opindex Wfloat-equal
|
||||
@opindex Wno-float-equal
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -1037,6 +1037,8 @@ proper position among the other output f
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index 49c9c6c17..24a92bf27 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -1044,6 +1044,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:%{!nostartfiles:%S}} \
|
||||
%{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 " CHKP_SPEC " \
|
||||
%{static|no-pie|static-pie:} %@{L*} %(mfwrap) %(link_libgcc) " \
|
||||
VTABLE_VERIFICATION_SPEC " " SANITIZER_EARLY_SPEC " %o "" \
|
||||
%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\
|
||||
Index: gcc-8.5.0/gcc/incpath.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/incpath.c
|
||||
+++ gcc-8.5.0/gcc/incpath.c
|
||||
@@ -1138,8 +1140,11 @@ static const char *cpp_unique_options =
|
||||
static const char *cpp_options =
|
||||
"%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
|
||||
%{f*} %{g*:%{%:debug-level-gt(0):%{g*}\
|
||||
- %{!fno-working-directory:-fworking-directory}}} %{O*}\
|
||||
- %{undef} %{save-temps*:-fpch-preprocess}";
|
||||
+ %{!fno-working-directory:-fworking-directory}}} %{O*}"
|
||||
+#ifdef POISON_BY_DEFAULT
|
||||
+ " -Werror=poison-system-directories"
|
||||
+#endif
|
||||
+ " %{undef} %{save-temps*:-fpch-preprocess}";
|
||||
|
||||
/* This contains cpp options which are not passed when the preprocessor
|
||||
output will be used by another program. */
|
||||
diff --git a/gcc/incpath.c b/gcc/incpath.c
|
||||
index 94eaba7b1..bfad4ebe3 100644
|
||||
--- a/gcc/incpath.c
|
||||
+++ b/gcc/incpath.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "intl.h"
|
||||
#include "incpath.h"
|
||||
@@ -171,7 +199,7 @@ Index: gcc-8.5.0/gcc/incpath.c
|
||||
|
||||
/* Microsoft Windows does not natively support inodes.
|
||||
VMS has non-numeric inodes. */
|
||||
@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroo
|
||||
@@ -393,6 +394,26 @@ merge_include_chains (const char *sysroot, cpp_reader *pfile, int verbose)
|
||||
}
|
||||
fprintf (stderr, _("End of search list.\n"));
|
||||
}
|
||||
@@ -198,3 +226,6 @@ Index: gcc-8.5.0/gcc/incpath.c
|
||||
}
|
||||
|
||||
/* Use given -I paths for #include "..." but not #include <...>, and
|
||||
--
|
||||
2.25.1
|
||||
|
||||
@@ -0,0 +1,103 @@
|
||||
From 30461cf8dba3d3adb15a125e4da48800eb2b9b8f Mon Sep 17 00:00:00 2001
|
||||
From: Richard Earnshaw <rearnsha@arm.com>
|
||||
Date: Fri, 18 Jun 2021 17:18:37 +0100
|
||||
Subject: [PATCH] arm: fix vlldm erratum for Armv8.1-m [PR102035]
|
||||
|
||||
For Armv8.1-m we generate code that emits VLLDM directly and do not
|
||||
rely on support code in the library, so emit the mitigation directly
|
||||
as well, when required. In this case, we can use the compiler options
|
||||
to determine when to apply the fix and when it is safe to omit it.
|
||||
|
||||
gcc:
|
||||
PR target/102035
|
||||
* config/arm/arm.md (attribute arch): Add fix_vlldm.
|
||||
(arch_enabled): Use it.
|
||||
* config/arm/vfp.md (lazy_store_multiple_insn): Add alternative to
|
||||
use when erratum mitigation is needed.
|
||||
|
||||
CVE: CVE-2021-35465
|
||||
Upstream-Status: Backport[https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=30461cf8dba3d3adb15a125e4da48800eb2b9b8f]
|
||||
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
|
||||
|
||||
---
|
||||
gcc/config/arm/arm.md | 11 +++++++++--
|
||||
gcc/config/arm/vfp.md | 10 +++++++---
|
||||
2 files changed, 16 insertions(+), 5 deletions(-)
|
||||
|
||||
diff -upr a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
|
||||
--- a/gcc/config/arm/arm.md 2020-07-22 23:35:17.344384552 -0700
|
||||
+++ b/gcc/config/arm/arm.md 2021-11-11 20:33:58.431543947 -0800
|
||||
@@ -132,9 +132,12 @@
|
||||
; TARGET_32BIT, "t1" or "t2" to specify a specific Thumb mode. "v6"
|
||||
; for ARM or Thumb-2 with arm_arch6, and nov6 for ARM without
|
||||
; arm_arch6. "v6t2" for Thumb-2 with arm_arch6 and "v8mb" for ARMv8-M
|
||||
-; Baseline. This attribute is used to compute attribute "enabled",
|
||||
+; Baseline. "fix_vlldm" is for fixing the v8-m/v8.1-m VLLDM erratum.
|
||||
+; This attribute is used to compute attribute "enabled",
|
||||
; use type "any" to enable an alternative in all cases.
|
||||
-(define_attr "arch" "any,a,t,32,t1,t2,v6,nov6,v6t2,v8mb,iwmmxt,iwmmxt2,armv6_or_vfpv3,neon,mve"
|
||||
+(define_attr "arch" "any, a, t, 32, t1, t2, v6,nov6, v6t2, \
|
||||
+ v8mb, fix_vlldm, iwmmxt, iwmmxt2, armv6_or_vfpv3, \
|
||||
+ neon, mve"
|
||||
(const_string "any"))
|
||||
|
||||
(define_attr "arch_enabled" "no,yes"
|
||||
@@ -177,6 +180,10 @@
|
||||
(match_test "TARGET_THUMB1 && arm_arch8"))
|
||||
(const_string "yes")
|
||||
|
||||
+ (and (eq_attr "arch" "fix_vlldm")
|
||||
+ (match_test "fix_vlldm"))
|
||||
+ (const_string "yes")
|
||||
+
|
||||
(and (eq_attr "arch" "iwmmxt2")
|
||||
(match_test "TARGET_REALLY_IWMMXT2"))
|
||||
(const_string "yes")
|
||||
diff -upr a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md
|
||||
--- a/gcc/config/arm/vfp.md 2020-07-22 23:35:17.356384684 -0700
|
||||
+++ b/gcc/config/arm/vfp.md 2021-11-11 20:33:58.431543947 -0800
|
||||
@@ -1703,12 +1703,15 @@
|
||||
(set_attr "type" "mov_reg")]
|
||||
)
|
||||
|
||||
+;; Both this and the next instruction are treated by GCC in the same
|
||||
+;; way as a blockage pattern. That's perhaps stronger than it needs
|
||||
+;; to be, but we do not want accesses to the VFP register bank to be
|
||||
+;; moved across either instruction.
|
||||
+
|
||||
(define_insn "lazy_store_multiple_insn"
|
||||
- [(set (match_operand:SI 0 "s_register_operand" "+&rk")
|
||||
- (post_dec:SI (match_dup 0)))
|
||||
- (unspec_volatile [(const_int 0)
|
||||
- (mem:SI (post_dec:SI (match_dup 0)))]
|
||||
- VUNSPEC_VLSTM)]
|
||||
+ [(unspec_volatile
|
||||
+ [(mem:BLK (match_operand:SI 0 "s_register_operand" "rk"))]
|
||||
+ VUNSPEC_VLSTM)]
|
||||
"use_cmse && reload_completed"
|
||||
"vlstm%?\\t%0"
|
||||
[(set_attr "predicable" "yes")
|
||||
@@ -1716,14 +1719,16 @@
|
||||
)
|
||||
|
||||
(define_insn "lazy_load_multiple_insn"
|
||||
- [(set (match_operand:SI 0 "s_register_operand" "+&rk")
|
||||
- (post_inc:SI (match_dup 0)))
|
||||
- (unspec_volatile:SI [(const_int 0)
|
||||
- (mem:SI (match_dup 0))]
|
||||
- VUNSPEC_VLLDM)]
|
||||
+ [(unspec_volatile
|
||||
+ [(mem:BLK (match_operand:SI 0 "s_register_operand" "rk,rk"))]
|
||||
+ VUNSPEC_VLLDM)]
|
||||
"use_cmse && reload_completed"
|
||||
- "vlldm%?\\t%0"
|
||||
- [(set_attr "predicable" "yes")
|
||||
+ "@
|
||||
+ vscclrm\\t{vpr}\;vlldm\\t%0
|
||||
+ vlldm\\t%0"
|
||||
+ [(set_attr "arch" "fix_vlldm,*")
|
||||
+ (set_attr "predicable" "no")
|
||||
+ (set_attr "length" "8,4")
|
||||
(set_attr "type" "load_4")]
|
||||
)
|
||||
|
||||
1724
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc/0003-CVE-2021-42574.patch
Normal file
1724
recipes-devtools/gcc-for-nvcc/gcc-for-nvcc/0003-CVE-2021-42574.patch
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
From 6640d7e39b13d1ef26d249153ab15d510fda3566 Mon Sep 17 00:00:00 2001
|
||||
From 6e3395c0bc933bdc3242d1dead4896d0aa4e11a8 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:08:31 +0400
|
||||
Subject: [PATCH 03/40] gcc-4.3.3: SYSROOT_CFLAGS_FOR_TARGET
|
||||
Subject: [PATCH] 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.
|
||||
|
||||
@@ -25,11 +25,11 @@ Upstream-Status: Pending
|
||||
configure | 32 ++++++++++++++++++++++++++++++++
|
||||
1 file changed, 32 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/configure
|
||||
+++ gcc-8.5.0/configure
|
||||
@@ -6768,6 +6768,38 @@ fi
|
||||
diff --git a/configure b/configure
|
||||
index 226a64939d1..b31dc137fc9 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -6971,6 +6971,38 @@ fi
|
||||
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1e649d81ca662c4cdf73882ebb8a11f0f19f5baf Mon Sep 17 00:00:00 2001
|
||||
From 85a7c5aeb82ed61e6ef6d8e061b9da9e6a4a652c Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:10:06 +0400
|
||||
Subject: [PATCH 04/40] 64-bit multilib hack.
|
||||
Subject: [PATCH] 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
|
||||
@@ -19,22 +19,44 @@ and be able to patch these entries with a complete set of correct paths but this
|
||||
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@gmail.com>
|
||||
Signed-off-by: Elvis Dowson <elvis.dowson@gmail.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Mark Hatle <mark.hatle@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 ++---
|
||||
3 files changed, 7 insertions(+), 14 deletions(-)
|
||||
5 files changed, 15 insertions(+), 20 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/i386/t-linux64
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/i386/t-linux64
|
||||
+++ gcc-8.5.0/gcc/config/i386/t-linux64
|
||||
diff --git a/gcc/config/aarch64/t-aarch64-linux b/gcc/config/aarch64/t-aarch64-linux
|
||||
index 83e59e33b85..b1356be1fb4 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 1171e218578..5e057b7e5db 100644
|
||||
--- a/gcc/config/i386/t-linux64
|
||||
+++ b/gcc/config/i386/t-linux64
|
||||
@@ -32,7 +32,5 @@
|
||||
#
|
||||
comma=,
|
||||
@@ -45,10 +67,10 @@ Index: gcc-8.5.0/gcc/config/i386/t-linux64
|
||||
-MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32)
|
||||
+MULTILIB_DIRNAMES = . .
|
||||
+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
|
||||
Index: gcc-8.5.0/gcc/config/mips/t-linux64
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/mips/t-linux64
|
||||
+++ gcc-8.5.0/gcc/config/mips/t-linux64
|
||||
diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
|
||||
index ceb58d3b5f3..43fe2bf28ab 100644
|
||||
--- a/gcc/config/mips/t-linux64
|
||||
+++ b/gcc/config/mips/t-linux64
|
||||
@@ -17,10 +17,6 @@
|
||||
# <http://www.gnu.org/licenses/>.
|
||||
|
||||
@@ -63,10 +85,22 @@ Index: gcc-8.5.0/gcc/config/mips/t-linux64
|
||||
+MULTILIB_DIRNAMES = . . .
|
||||
+MULTILIB_OSDIRNAMES = ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir)) ../$(shell basename $(base_libdir))
|
||||
+
|
||||
Index: gcc-8.5.0/gcc/config/rs6000/t-linux64
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/rs6000/t-linux64
|
||||
+++ gcc-8.5.0/gcc/config/rs6000/t-linux64
|
||||
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 264a7e27524..dc9d440f66b 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.
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
From 809330ab8450261e05919b472783bf15e4b000f7 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Earnshaw <rearnsha@arm.com>
|
||||
Date: Tue, 6 Jul 2021 15:10:18 +0100
|
||||
Subject: [PATCH] arm: Add tests for VLLDM mitigation [PR102035]
|
||||
|
||||
New tests for the erratum mitigation.
|
||||
|
||||
gcc/testsuite:
|
||||
PR target/102035
|
||||
* gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c: New test.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c: Likewise.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c: Likewise.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c: Likewise.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c: Likewise.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c: Likewise.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c: Likewise.
|
||||
* gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c: Likewise.
|
||||
|
||||
CVE: CVE-2021-35465
|
||||
Upstream-Status: Backport[https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=809330ab8450261e05919b472783bf15e4b000f7]
|
||||
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
|
||||
|
||||
---
|
||||
.../arm/cmse/mainline/8_1m/soft/cmse-13a.c | 31 +++++++++++++++++++
|
||||
.../arm/cmse/mainline/8_1m/soft/cmse-7a.c | 28 +++++++++++++++++
|
||||
.../arm/cmse/mainline/8_1m/soft/cmse-8a.c | 30 ++++++++++++++++++
|
||||
.../cmse/mainline/8_1m/softfp-sp/cmse-7a.c | 27 ++++++++++++++++
|
||||
.../cmse/mainline/8_1m/softfp-sp/cmse-8a.c | 29 +++++++++++++++++
|
||||
.../arm/cmse/mainline/8_1m/softfp/cmse-13a.c | 30 ++++++++++++++++++
|
||||
.../arm/cmse/mainline/8_1m/softfp/cmse-7a.c | 27 ++++++++++++++++
|
||||
.../arm/cmse/mainline/8_1m/softfp/cmse-8a.c | 29 +++++++++++++++++
|
||||
8 files changed, 231 insertions(+)
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c
|
||||
create mode 100644 gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
|
||||
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-13a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,31 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
|
||||
+
|
||||
+#include "../../../cmse-13.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr2, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr3, r4" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r1, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[1,4-9\]|r10|fp|ip), ){9}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[1,4-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler-not "vmov" } } */
|
||||
+/* { dg-final { scan-assembler-not "vmsr" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-7a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,28 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
|
||||
+
|
||||
+#include "../../../cmse-7.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler-not "vmov" } } */
|
||||
+/* { dg-final { scan-assembler-not "vmsr" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/soft/cmse-8a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,30 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=soft -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=soft" } } */
|
||||
+
|
||||
+#include "../../../cmse-8.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler-not "vmov" } } */
|
||||
+/* { dg-final { scan-assembler-not "vmsr" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-13a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,30 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
|
||||
+/* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
|
||||
+
|
||||
+#include "../../../cmse-13.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[1,4-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr2, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr3, r4" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r1, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[1,4-9\]|r10|fp|ip), ){9}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[1,4-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-7a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,27 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
|
||||
+/* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
|
||||
+
|
||||
+#include "../../../cmse-7.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp/cmse-8a.c 2021-11-11 20:38:44.290766017 -0800
|
||||
@@ -0,0 +1,29 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-d16 -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
|
||||
+/* { dg-skip-if "Skip these if testing single precision" {*-*-*} {"-mfpu=*-sp-*"} {""} } */
|
||||
+
|
||||
+#include "../../../cmse-8.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-7a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,27 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
|
||||
+/* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
|
||||
+
|
||||
+#include "../../../cmse-7.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[0-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r0, )?(r1, )?(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[0-9\]|r10|fp|ip), ){12}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[0-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
diff --git a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c
|
||||
--- a/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/softfp-sp/cmse-8a.c 2021-11-11 20:38:44.286766084 -0800
|
||||
@@ -0,0 +1,29 @@
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-mcmse -mfloat-abi=softfp -mfpu=fpv5-sp-d16 -mfix-cmse-cve-2021-35465" } */
|
||||
+/* { dg-skip-if "Incompatible float ABI" { *-*-* } { "-mfloat-abi=*" } { "-mfloat-abi=softfp" } } */
|
||||
+/* { dg-skip-if "Skip these if testing double precision" {*-*-*} {"-mfpu=fpv[4-5]-d16"} {""} } */
|
||||
+
|
||||
+#include "../../../cmse-8.x"
|
||||
+
|
||||
+/* Checks for saving and clearing prior to function call. */
|
||||
+/* Shift on the same register as blxns. */
|
||||
+/* { dg-final { scan-assembler "lsrs\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler "lsls\t(r\[2-9\]|r10|fp|ip), \\1, #1.*blxns\t\\1" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr0, r4" } } */
|
||||
+/* { dg-final { scan-assembler-not "mov\tr1, r4" } } */
|
||||
+/* { dg-final { scan-assembler "push\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlstm\tsp" } } */
|
||||
+/* Check the right registers are cleared and none appears twice. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{(r2, )?(r3, )?(r4, )?(r5, )?(r6, )?(r7, )?(r8, )?(r9, )?(r10, )?(fp, )?(ip, )?APSR\}" } } */
|
||||
+/* Check that the right number of registers is cleared and thus only one
|
||||
+ register is missing. */
|
||||
+/* { dg-final { scan-assembler "clrm\t\{((r\[2-9\]|r10|fp|ip), ){10}APSR\}" } } */
|
||||
+/* Check that no cleared register is used for blxns. */
|
||||
+/* { dg-final { scan-assembler-not "clrm\t\{\[^\}\]\+(r\[2-9\]|r10|fp|ip),\[^\}\]\+\}.*blxns\t\\1" } } */
|
||||
+/* Check for v8.1-m variant of erratum work-around. */
|
||||
+/* { dg-final { scan-assembler "vscclrm\t\{vpr\}" } } */
|
||||
+/* { dg-final { scan-assembler "vlldm\tsp" } } */
|
||||
+/* { dg-final { scan-assembler "pop\t\{r4, r5, r6, r7, r8, r9, r10, fp\}" } } */
|
||||
+
|
||||
+/* Now we check that we use the correct intrinsic to call. */
|
||||
+/* { dg-final { scan-assembler "blxns" } } */
|
||||
@@ -0,0 +1,138 @@
|
||||
From 1a7f2c0774129750fdf73e9f1b78f0ce983c9ab3 Mon Sep 17 00:00:00 2001
|
||||
From: David Malcolm <dmalcolm@redhat.com>
|
||||
Date: Tue, 2 Nov 2021 09:54:32 -0400
|
||||
Subject: [PATCH] libcpp: escape non-ASCII source bytes in -Wbidi-chars=
|
||||
[PR103026]
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This flags rich_locations associated with -Wbidi-chars= so that
|
||||
non-ASCII bytes will be escaped when printing the source lines
|
||||
(using the diagnostics support I added in
|
||||
r12-4825-gbd5e882cf6e0def3dd1bc106075d59a303fe0d1e).
|
||||
|
||||
In particular, this ensures that the printed source lines will
|
||||
be pure ASCII, and thus the visual ordering of the characters
|
||||
will be the same as the logical ordering.
|
||||
|
||||
Before:
|
||||
|
||||
Wbidi-chars-1.c: In function âmainâ:
|
||||
Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
|
||||
6 | /*â® } â¦if (isAdmin)⩠⦠begin admins only */
|
||||
| ^
|
||||
Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
|
||||
9 | /* end admins only â® { â¦*/
|
||||
| ^
|
||||
|
||||
Wbidi-chars-11.c:6:15: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
6 | int LRE_âª_PDF_\u202c;
|
||||
| ^
|
||||
Wbidi-chars-11.c:8:19: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
8 | int LRE_\u202a_PDF_â¬_;
|
||||
| ^
|
||||
Wbidi-chars-11.c:10:28: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
10 | const char *s1 = "LRE_âª_PDF_\u202c";
|
||||
| ^
|
||||
Wbidi-chars-11.c:12:33: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
12 | const char *s2 = "LRE_\u202a_PDF_â¬";
|
||||
| ^
|
||||
|
||||
After:
|
||||
|
||||
Wbidi-chars-1.c: In function âmainâ:
|
||||
Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
|
||||
6 | /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
|
||||
| ^
|
||||
Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
|
||||
9 | /* end admins only <U+202E> { <U+2066>*/
|
||||
| ^
|
||||
|
||||
Wbidi-chars-11.c:6:15: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
6 | int LRE_<U+202A>_PDF_\u202c;
|
||||
| ^
|
||||
Wbidi-chars-11.c:8:19: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
8 | int LRE_\u202a_PDF_<U+202C>_;
|
||||
| ^
|
||||
Wbidi-chars-11.c:10:28: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
10 | const char *s1 = "LRE_<U+202A>_PDF_\u202c";
|
||||
| ^
|
||||
Wbidi-chars-11.c:12:33: warning: UTF-8 vs UCN mismatch when closing a context by "U+202C (POP DIRECTIONAL FORMATTING)" [-Wbidi-chars=]
|
||||
12 | const char *s2 = "LRE_\u202a_PDF_<U+202C>";
|
||||
| ^
|
||||
|
||||
libcpp/ChangeLog:
|
||||
PR preprocessor/103026
|
||||
* lex.c (maybe_warn_bidi_on_close): Use a rich_location
|
||||
and call set_escape_on_output (true) on it.
|
||||
(maybe_warn_bidi_on_char): Likewise.
|
||||
|
||||
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
CVE: CVE-2021-42574
|
||||
Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=1a7f2c0774129750fdf73e9f1b78f0ce983c9ab3]
|
||||
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
|
||||
|
||||
---
|
||||
libcpp/lex.c | 29 +++++++++++++++++------------
|
||||
1 file changed, 17 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/libcpp/lex.c b/libcpp/lex.c
|
||||
--- a/libcpp/lex.c 2021-12-14 20:44:11.647815287 -0800
|
||||
+++ b/libcpp/lex.c 2021-12-14 20:43:38.008383220 -0800
|
||||
@@ -1427,9 +1427,11 @@ maybe_warn_bidi_on_close (cpp_reader *pf
|
||||
const location_t loc
|
||||
= linemap_position_for_column (pfile->line_table,
|
||||
CPP_BUF_COLUMN (pfile->buffer, p));
|
||||
- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
|
||||
- "unpaired UTF-8 bidirectional control character "
|
||||
- "detected");
|
||||
+ rich_location rich_loc (pfile->line_table, loc);
|
||||
+ rich_loc.set_escape_on_output (true);
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "unpaired UTF-8 bidirectional control character "
|
||||
+ "detected");
|
||||
}
|
||||
/* We're done with this context. */
|
||||
bidi::on_close ();
|
||||
@@ -1454,6 +1456,9 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
|
||||
const location_t loc
|
||||
= linemap_position_for_column (pfile->line_table,
|
||||
CPP_BUF_COLUMN (pfile->buffer, p));
|
||||
+ rich_location rich_loc (pfile->line_table, loc);
|
||||
+ rich_loc.set_escape_on_output (true);
|
||||
+
|
||||
/* It seems excessive to warn about a PDI/PDF that is closing
|
||||
an opened context because we've already warned about the
|
||||
opening character. Except warn when we have a UCN x UTF-8
|
||||
@@ -1462,20 +1467,20 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
|
||||
{
|
||||
if (warn_bidi == bidirectional_unpaired
|
||||
&& bidi::current_ctx_ucn_p () != ucn_p)
|
||||
- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
|
||||
- "UTF-8 vs UCN mismatch when closing "
|
||||
- "a context by \"%s\"", bidi::to_str (kind));
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "UTF-8 vs UCN mismatch when closing "
|
||||
+ "a context by \"%s\"", bidi::to_str (kind));
|
||||
}
|
||||
else if (warn_bidi == bidirectional_any)
|
||||
{
|
||||
if (kind == bidi::kind::PDF || kind == bidi::kind::PDI)
|
||||
- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
|
||||
- "\"%s\" is closing an unopened context",
|
||||
- bidi::to_str (kind));
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "\"%s\" is closing an unopened context",
|
||||
+ bidi::to_str (kind));
|
||||
else
|
||||
- cpp_warning_with_line (pfile, CPP_W_BIDIRECTIONAL, loc, 0,
|
||||
- "found problematic Unicode character \"%s\"",
|
||||
- bidi::to_str (kind));
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "found problematic Unicode character \"%s\"",
|
||||
+ bidi::to_str (kind));
|
||||
}
|
||||
}
|
||||
/* We're done with this context. */
|
||||
@@ -0,0 +1,575 @@
|
||||
From bef32d4a28595e933f24fef378cf052a30b674a7 Mon Sep 17 00:00:00 2001
|
||||
From: David Malcolm <dmalcolm@redhat.com>
|
||||
Date: Tue, 2 Nov 2021 15:45:22 -0400
|
||||
Subject: [PATCH] libcpp: capture and underline ranges in -Wbidi-chars=
|
||||
[PR103026]
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
This patch converts the bidi::vec to use a struct so that we can
|
||||
capture location_t values for the bidirectional control characters.
|
||||
|
||||
Before:
|
||||
|
||||
Wbidi-chars-1.c: In function âmainâ:
|
||||
Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
|
||||
6 | /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
|
||||
| ^
|
||||
Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control character detected [-Wbidi-chars=]
|
||||
9 | /* end admins only <U+202E> { <U+2066>*/
|
||||
| ^
|
||||
|
||||
After:
|
||||
|
||||
Wbidi-chars-1.c: In function âmainâ:
|
||||
Wbidi-chars-1.c:6:43: warning: unpaired UTF-8 bidirectional control characters detected [-Wbidi-chars=]
|
||||
6 | /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
|
||||
| ~~~~~~~~ ~~~~~~~~ ^
|
||||
| | | |
|
||||
| | | end of bidirectional context
|
||||
| U+202E (RIGHT-TO-LEFT OVERRIDE) U+2066 (LEFT-TO-RIGHT ISOLATE)
|
||||
Wbidi-chars-1.c:9:28: warning: unpaired UTF-8 bidirectional control characters detected [-Wbidi-chars=]
|
||||
9 | /* end admins only <U+202E> { <U+2066>*/
|
||||
| ~~~~~~~~ ~~~~~~~~ ^
|
||||
| | | |
|
||||
| | | end of bidirectional context
|
||||
| | U+2066 (LEFT-TO-RIGHT ISOLATE)
|
||||
| U+202E (RIGHT-TO-LEFT OVERRIDE)
|
||||
|
||||
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
gcc/testsuite/ChangeLog:
|
||||
PR preprocessor/103026
|
||||
* c-c++-common/Wbidi-chars-ranges.c: New test.
|
||||
|
||||
libcpp/ChangeLog:
|
||||
PR preprocessor/103026
|
||||
* lex.c (struct bidi::context): New.
|
||||
(bidi::vec): Convert to a vec of context rather than unsigned
|
||||
char.
|
||||
(bidi::ctx_at): Rename to...
|
||||
(bidi::pop_kind_at): ...this and reimplement for above change.
|
||||
(bidi::current_ctx): Update for change to vec.
|
||||
(bidi::current_ctx_ucn_p): Likewise.
|
||||
(bidi::current_ctx_loc): New.
|
||||
(bidi::on_char): Update for usage of context struct. Add "loc"
|
||||
param and pass it when pushing contexts.
|
||||
(get_location_for_byte_range_in_cur_line): New.
|
||||
(get_bidi_utf8): Rename to...
|
||||
(get_bidi_utf8_1): ...this, reintroducing...
|
||||
(get_bidi_utf8): ...as a wrapper, setting *OUT when the result is
|
||||
not NONE.
|
||||
(get_bidi_ucn): Rename to...
|
||||
(get_bidi_ucn_1): ...this, reintroducing...
|
||||
(get_bidi_ucn): ...as a wrapper, setting *OUT when the result is
|
||||
not NONE.
|
||||
(class unpaired_bidi_rich_location): New.
|
||||
(maybe_warn_bidi_on_close): Use unpaired_bidi_rich_location when
|
||||
reporting on unpaired bidi chars. Split into singular vs plural
|
||||
spellings.
|
||||
(maybe_warn_bidi_on_char): Pass in a location_t rather than a
|
||||
const uchar * and use it when emitting warnings, and when calling
|
||||
bidi::on_char.
|
||||
(_cpp_skip_block_comment): Capture location when kind is not NONE
|
||||
and pass it to maybe_warn_bidi_on_char.
|
||||
(skip_line_comment): Likewise.
|
||||
(forms_identifier_p): Likewise.
|
||||
(lex_raw_string): Likewise.
|
||||
(lex_string): Likewise.
|
||||
|
||||
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
CVE: CVE-2021-42574
|
||||
Upstream-Status: Backport [https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=bef32d4a28595e933f24fef378cf052a30b674a7]
|
||||
Signed-off-by: Pgowda <pgowda.cve@gmail.com>
|
||||
|
||||
---
|
||||
.../c-c++-common/Wbidi-chars-ranges.c | 54 ++++
|
||||
libcpp/lex.c | 251 ++++++++++++++----
|
||||
2 files changed, 257 insertions(+), 48 deletions(-)
|
||||
create mode 100644 gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c
|
||||
|
||||
diff --git a/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c b/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c
|
||||
--- a/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c 1969-12-31 16:00:00.000000000 -0800
|
||||
+++ b/gcc/testsuite/c-c++-common/Wbidi-chars-ranges.c 2021-12-25 01:39:55.116281847 -0800
|
||||
@@ -0,0 +1,54 @@
|
||||
+/* PR preprocessor/103026 */
|
||||
+/* { dg-do compile } */
|
||||
+/* { dg-options "-Wbidi-chars=unpaired -fdiagnostics-show-caret" } */
|
||||
+/* Verify that we escape and underline pertinent bidirectional
|
||||
+ control characters when quoting the source. */
|
||||
+
|
||||
+int test_unpaired_bidi () {
|
||||
+ int isAdmin = 0;
|
||||
+ /* } if (isAdmin) begin admins only */
|
||||
+/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
|
||||
+#if 0
|
||||
+ { dg-begin-multiline-output "" }
|
||||
+ /*<U+202E> } <U+2066>if (isAdmin)<U+2069> <U+2066> begin admins only */
|
||||
+ ~~~~~~~~ ~~~~~~~~ ^
|
||||
+ | | |
|
||||
+ | | end of bidirectional context
|
||||
+ U+202E (RIGHT-TO-LEFT OVERRIDE) U+2066 (LEFT-TO-RIGHT ISOLATE)
|
||||
+ { dg-end-multiline-output "" }
|
||||
+#endif
|
||||
+
|
||||
+ __builtin_printf("You are an admin.\n");
|
||||
+ /* end admins only { */
|
||||
+/* { dg-warning "bidirectional" "" { target *-*-* } .-1 } */
|
||||
+#if 0
|
||||
+ { dg-begin-multiline-output "" }
|
||||
+ /* end admins only <U+202E> { <U+2066>*/
|
||||
+ ~~~~~~~~ ~~~~~~~~ ^
|
||||
+ | | |
|
||||
+ | | end of bidirectional context
|
||||
+ | U+2066 (LEFT-TO-RIGHT ISOLATE)
|
||||
+ U+202E (RIGHT-TO-LEFT OVERRIDE)
|
||||
+ { dg-end-multiline-output "" }
|
||||
+#endif
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int LRE__PDF_\u202c;
|
||||
+/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
|
||||
+#if 0
|
||||
+ { dg-begin-multiline-output "" }
|
||||
+ int LRE_<U+202A>_PDF_\u202c;
|
||||
+ ~~~~~~~~ ^~~~~~
|
||||
+ { dg-end-multiline-output "" }
|
||||
+#endif
|
||||
+
|
||||
+const char *s1 = "LRE__PDF_\u202c";
|
||||
+/* { dg-warning "mismatch" "" { target *-*-* } .-1 } */
|
||||
+#if 0
|
||||
+ { dg-begin-multiline-output "" }
|
||||
+ const char *s1 = "LRE_<U+202A>_PDF_\u202c";
|
||||
+ ~~~~~~~~ ^~~~~~
|
||||
+ { dg-end-multiline-output "" }
|
||||
+#endif
|
||||
diff --git a/libcpp/lex.c b/libcpp/lex.c
|
||||
--- a/libcpp/lex.c 2021-12-25 01:41:16.522868808 -0800
|
||||
+++ b/libcpp/lex.c 2021-12-25 06:28:58.530680302 -0800
|
||||
@@ -1172,11 +1172,34 @@ namespace bidi {
|
||||
/* All the UTF-8 encodings of bidi characters start with E2. */
|
||||
constexpr uchar utf8_start = 0xe2;
|
||||
|
||||
+ struct context
|
||||
+ {
|
||||
+ context () {}
|
||||
+ context (location_t loc, kind k, bool pdf, bool ucn)
|
||||
+ : m_loc (loc), m_kind (k), m_pdf (pdf), m_ucn (ucn)
|
||||
+ {
|
||||
+ }
|
||||
+
|
||||
+ kind get_pop_kind () const
|
||||
+ {
|
||||
+ return m_pdf ? kind::PDF : kind::PDI;
|
||||
+ }
|
||||
+ bool ucn_p () const
|
||||
+ {
|
||||
+ return m_ucn;
|
||||
+ }
|
||||
+
|
||||
+ location_t m_loc;
|
||||
+ kind m_kind;
|
||||
+ unsigned m_pdf : 1;
|
||||
+ unsigned m_ucn : 1;
|
||||
+ };
|
||||
+
|
||||
/* A vector holding currently open bidi contexts. We use a char for
|
||||
each context, its LSB is 1 if it represents a PDF context, 0 if it
|
||||
represents a PDI context. The next bit is 1 if this context was open
|
||||
by a bidi character written as a UCN, and 0 when it was UTF-8. */
|
||||
- semi_embedded_vec <unsigned char, 16> vec;
|
||||
+ semi_embedded_vec <context, 16> vec;
|
||||
|
||||
/* Close the whole comment/identifier/string literal/character constant
|
||||
context. */
|
||||
@@ -1193,19 +1216,19 @@ namespace bidi {
|
||||
vec.truncate (len - 1);
|
||||
}
|
||||
|
||||
- /* Return the context of the Ith element. */
|
||||
- kind ctx_at (unsigned int i)
|
||||
+ /* Return the pop kind of the context of the Ith element. */
|
||||
+ kind pop_kind_at (unsigned int i)
|
||||
{
|
||||
- return (vec[i] & 1) ? kind::PDF : kind::PDI;
|
||||
+ return vec[i].get_pop_kind ();
|
||||
}
|
||||
|
||||
- /* Return which context is currently opened. */
|
||||
+ /* Return the pop kind of the context that is currently opened. */
|
||||
kind current_ctx ()
|
||||
{
|
||||
unsigned int len = vec.count ();
|
||||
if (len == 0)
|
||||
return kind::NONE;
|
||||
- return ctx_at (len - 1);
|
||||
+ return vec[len - 1].get_pop_kind ();
|
||||
}
|
||||
|
||||
/* Return true if the current context comes from a UCN origin, that is,
|
||||
@@ -1214,11 +1237,19 @@ namespace bidi {
|
||||
{
|
||||
unsigned int len = vec.count ();
|
||||
gcc_checking_assert (len > 0);
|
||||
- return (vec[len - 1] >> 1) & 1;
|
||||
+ return vec[len - 1].m_ucn;
|
||||
}
|
||||
|
||||
- /* We've read a bidi char, update the current vector as necessary. */
|
||||
- void on_char (kind k, bool ucn_p)
|
||||
+ location_t current_ctx_loc ()
|
||||
+ {
|
||||
+ unsigned int len = vec.count ();
|
||||
+ gcc_checking_assert (len > 0);
|
||||
+ return vec[len - 1].m_loc;
|
||||
+ }
|
||||
+
|
||||
+ /* We've read a bidi char, update the current vector as necessary.
|
||||
+ LOC is only valid when K is not kind::NONE. */
|
||||
+ void on_char (kind k, bool ucn_p, location_t loc)
|
||||
{
|
||||
switch (k)
|
||||
{
|
||||
@@ -1226,12 +1257,12 @@ namespace bidi {
|
||||
case kind::RLE:
|
||||
case kind::LRO:
|
||||
case kind::RLO:
|
||||
- vec.push (ucn_p ? 3u : 1u);
|
||||
+ vec.push (context (loc, k, true, ucn_p));
|
||||
break;
|
||||
case kind::LRI:
|
||||
case kind::RLI:
|
||||
case kind::FSI:
|
||||
- vec.push (ucn_p ? 2u : 0u);
|
||||
+ vec.push (context (loc, k, false, ucn_p));
|
||||
break;
|
||||
/* PDF terminates the scope of the last LRE, RLE, LRO, or RLO
|
||||
whose scope has not yet been terminated. */
|
||||
@@ -1245,7 +1276,7 @@ namespace bidi {
|
||||
yet been terminated. */
|
||||
case kind::PDI:
|
||||
for (int i = vec.count () - 1; i >= 0; --i)
|
||||
- if (ctx_at (i) == kind::PDI)
|
||||
+ if (pop_kind_at (i) == kind::PDI)
|
||||
{
|
||||
vec.truncate (i);
|
||||
break;
|
||||
@@ -1295,10 +1326,47 @@ namespace bidi {
|
||||
}
|
||||
}
|
||||
|
||||
+/* Get location_t for the range of bytes [START, START + NUM_BYTES)
|
||||
+ within the current line in FILE, with the caret at START. */
|
||||
+
|
||||
+static location_t
|
||||
+get_location_for_byte_range_in_cur_line (cpp_reader *pfile,
|
||||
+ const unsigned char *const start,
|
||||
+ size_t num_bytes)
|
||||
+{
|
||||
+ gcc_checking_assert (num_bytes > 0);
|
||||
+
|
||||
+ /* CPP_BUF_COLUMN and linemap_position_for_column both refer
|
||||
+ to offsets in bytes, but CPP_BUF_COLUMN is 0-based,
|
||||
+ whereas linemap_position_for_column is 1-based. */
|
||||
+
|
||||
+ /* Get 0-based offsets within the line. */
|
||||
+ size_t start_offset = CPP_BUF_COLUMN (pfile->buffer, start);
|
||||
+ size_t end_offset = start_offset + num_bytes - 1;
|
||||
+
|
||||
+ /* Now convert to location_t, where "columns" are 1-based byte offsets. */
|
||||
+ location_t start_loc = linemap_position_for_column (pfile->line_table,
|
||||
+ start_offset + 1);
|
||||
+ location_t end_loc = linemap_position_for_column (pfile->line_table,
|
||||
+ end_offset + 1);
|
||||
+
|
||||
+ if (start_loc == end_loc)
|
||||
+ return start_loc;
|
||||
+
|
||||
+ source_range src_range;
|
||||
+ src_range.m_start = start_loc;
|
||||
+ src_range.m_finish = end_loc;
|
||||
+ location_t combined_loc = COMBINE_LOCATION_DATA (pfile->line_table,
|
||||
+ start_loc,
|
||||
+ src_range,
|
||||
+ NULL);
|
||||
+ return combined_loc;
|
||||
+}
|
||||
+
|
||||
/* Parse a sequence of 3 bytes starting with P and return its bidi code. */
|
||||
|
||||
static bidi::kind
|
||||
-get_bidi_utf8 (const unsigned char *const p)
|
||||
+get_bidi_utf8_1 (const unsigned char *const p)
|
||||
{
|
||||
gcc_checking_assert (p[0] == bidi::utf8_start);
|
||||
|
||||
@@ -1340,10 +1408,25 @@ get_bidi_utf8 (const unsigned char *cons
|
||||
return bidi::kind::NONE;
|
||||
}
|
||||
|
||||
+/* Parse a sequence of 3 bytes starting with P and return its bidi code.
|
||||
+ If the kind is not NONE, write the location to *OUT.*/
|
||||
+
|
||||
+static bidi::kind
|
||||
+get_bidi_utf8 (cpp_reader *pfile, const unsigned char *const p, location_t *out)
|
||||
+{
|
||||
+ bidi::kind result = get_bidi_utf8_1 (p);
|
||||
+ if (result != bidi::kind::NONE)
|
||||
+ {
|
||||
+ /* We have a sequence of 3 bytes starting at P. */
|
||||
+ *out = get_location_for_byte_range_in_cur_line (pfile, p, 3);
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
/* Parse a UCN where P points just past \u or \U and return its bidi code. */
|
||||
|
||||
static bidi::kind
|
||||
-get_bidi_ucn (const unsigned char *p, bool is_U)
|
||||
+get_bidi_ucn_1 (const unsigned char *p, bool is_U)
|
||||
{
|
||||
/* 6.4.3 Universal Character Names
|
||||
\u hex-quad
|
||||
@@ -1412,6 +1495,62 @@ get_bidi_ucn (const unsigned char *p, bo
|
||||
return bidi::kind::NONE;
|
||||
}
|
||||
|
||||
+/* Parse a UCN where P points just past \u or \U and return its bidi code.
|
||||
+ If the kind is not NONE, write the location to *OUT.*/
|
||||
+
|
||||
+static bidi::kind
|
||||
+get_bidi_ucn (cpp_reader *pfile, const unsigned char *p, bool is_U,
|
||||
+ location_t *out)
|
||||
+{
|
||||
+ bidi::kind result = get_bidi_ucn_1 (p, is_U);
|
||||
+ if (result != bidi::kind::NONE)
|
||||
+ {
|
||||
+ const unsigned char *start = p - 2;
|
||||
+ size_t num_bytes = 2 + (is_U ? 8 : 4);
|
||||
+ *out = get_location_for_byte_range_in_cur_line (pfile, start, num_bytes);
|
||||
+ }
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
+/* Subclass of rich_location for reporting on unpaired UTF-8
|
||||
+ bidirectional control character(s).
|
||||
+ Escape the source lines on output, and show all unclosed
|
||||
+ bidi context, labelling everything. */
|
||||
+
|
||||
+class unpaired_bidi_rich_location : public rich_location
|
||||
+{
|
||||
+ public:
|
||||
+ class custom_range_label : public range_label
|
||||
+ {
|
||||
+ public:
|
||||
+ label_text get_text (unsigned range_idx) const FINAL OVERRIDE
|
||||
+ {
|
||||
+ /* range 0 is the primary location; each subsequent range i + 1
|
||||
+ is for bidi::vec[i]. */
|
||||
+ if (range_idx > 0)
|
||||
+ {
|
||||
+ const bidi::context &ctxt (bidi::vec[range_idx - 1]);
|
||||
+ return label_text::borrow (bidi::to_str (ctxt.m_kind));
|
||||
+ }
|
||||
+ else
|
||||
+ return label_text::borrow (_("end of bidirectional context"));
|
||||
+ }
|
||||
+ };
|
||||
+
|
||||
+ unpaired_bidi_rich_location (cpp_reader *pfile, location_t loc)
|
||||
+ : rich_location (pfile->line_table, loc, &m_custom_label)
|
||||
+ {
|
||||
+ set_escape_on_output (true);
|
||||
+ for (unsigned i = 0; i < bidi::vec.count (); i++)
|
||||
+ add_range (bidi::vec[i].m_loc,
|
||||
+ SHOW_RANGE_WITHOUT_CARET,
|
||||
+ &m_custom_label);
|
||||
+ }
|
||||
+
|
||||
+ private:
|
||||
+ custom_range_label m_custom_label;
|
||||
+};
|
||||
+
|
||||
/* We're closing a bidi context, that is, we've encountered a newline,
|
||||
are closing a C-style comment, or are at the end of a string literal,
|
||||
character constant, or identifier. Warn if this context was not
|
||||
@@ -1427,11 +1566,17 @@ maybe_warn_bidi_on_close (cpp_reader *pf
|
||||
const location_t loc
|
||||
= linemap_position_for_column (pfile->line_table,
|
||||
CPP_BUF_COLUMN (pfile->buffer, p));
|
||||
- rich_location rich_loc (pfile->line_table, loc);
|
||||
- rich_loc.set_escape_on_output (true);
|
||||
- cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
- "unpaired UTF-8 bidirectional control character "
|
||||
- "detected");
|
||||
+ unpaired_bidi_rich_location rich_loc (pfile, loc);
|
||||
+ /* cpp_callbacks doesn't yet have a way to handle singular vs plural
|
||||
+ forms of a diagnostic, so fake it for now. */
|
||||
+ if (bidi::vec.count () > 1)
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "unpaired UTF-8 bidirectional control characters "
|
||||
+ "detected");
|
||||
+ else
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "unpaired UTF-8 bidirectional control character "
|
||||
+ "detected");
|
||||
}
|
||||
/* We're done with this context. */
|
||||
bidi::on_close ();
|
||||
@@ -1439,12 +1584,13 @@ maybe_warn_bidi_on_close (cpp_reader *pf
|
||||
|
||||
/* We're at the beginning or in the middle of an identifier/comment/string
|
||||
literal/character constant. Warn if we've encountered a bidi character.
|
||||
- KIND says which bidi character it was; P points to it in the character
|
||||
- stream. UCN_P is true iff this bidi character was written as a UCN. */
|
||||
+ KIND says which bidi control character it was; UCN_P is true iff this bidi
|
||||
+ control character was written as a UCN. LOC is the location of the
|
||||
+ character, but is only valid if KIND != bidi::kind::NONE. */
|
||||
|
||||
static void
|
||||
-maybe_warn_bidi_on_char (cpp_reader *pfile, const uchar *p, bidi::kind kind,
|
||||
- bool ucn_p)
|
||||
+maybe_warn_bidi_on_char (cpp_reader *pfile, bidi::kind kind,
|
||||
+ bool ucn_p, location_t loc)
|
||||
{
|
||||
if (__builtin_expect (kind == bidi::kind::NONE, 1))
|
||||
return;
|
||||
@@ -1453,9 +1599,6 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
|
||||
|
||||
if (warn_bidi != bidirectional_none)
|
||||
{
|
||||
- const location_t loc
|
||||
- = linemap_position_for_column (pfile->line_table,
|
||||
- CPP_BUF_COLUMN (pfile->buffer, p));
|
||||
rich_location rich_loc (pfile->line_table, loc);
|
||||
rich_loc.set_escape_on_output (true);
|
||||
|
||||
@@ -1467,9 +1610,12 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
|
||||
{
|
||||
if (warn_bidi == bidirectional_unpaired
|
||||
&& bidi::current_ctx_ucn_p () != ucn_p)
|
||||
- cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
- "UTF-8 vs UCN mismatch when closing "
|
||||
- "a context by \"%s\"", bidi::to_str (kind));
|
||||
+ {
|
||||
+ rich_loc.add_range (bidi::current_ctx_loc ());
|
||||
+ cpp_warning_at (pfile, CPP_W_BIDIRECTIONAL, &rich_loc,
|
||||
+ "UTF-8 vs UCN mismatch when closing "
|
||||
+ "a context by \"%s\"", bidi::to_str (kind));
|
||||
+ }
|
||||
}
|
||||
else if (warn_bidi == bidirectional_any)
|
||||
{
|
||||
@@ -1484,7 +1630,7 @@ maybe_warn_bidi_on_char (cpp_reader *pfi
|
||||
}
|
||||
}
|
||||
/* We're done with this context. */
|
||||
- bidi::on_char (kind, ucn_p);
|
||||
+ bidi::on_char (kind, ucn_p, loc);
|
||||
}
|
||||
|
||||
/* Skip a C-style block comment. We find the end of the comment by
|
||||
@@ -1552,8 +1698,9 @@ _cpp_skip_block_comment (cpp_reader *pfi
|
||||
a bidirectional control character. */
|
||||
else if (__builtin_expect (c == bidi::utf8_start, 0) && warn_bidi_p)
|
||||
{
|
||||
- bidi::kind kind = get_bidi_utf8 (cur - 1);
|
||||
- maybe_warn_bidi_on_char (pfile, cur, kind, /*ucn_p=*/false);
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_utf8 (pfile, cur - 1, &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1586,9 +1733,9 @@ skip_line_comment (cpp_reader *pfile)
|
||||
{
|
||||
if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0))
|
||||
{
|
||||
- bidi::kind kind = get_bidi_utf8 (buffer->cur);
|
||||
- maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
|
||||
- /*ucn_p=*/false);
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_utf8 (pfile, buffer->cur, &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
|
||||
}
|
||||
buffer->cur++;
|
||||
}
|
||||
@@ -1734,9 +1881,9 @@ forms_identifier_p (cpp_reader *pfile, i
|
||||
if (__builtin_expect (*buffer->cur == bidi::utf8_start, 0)
|
||||
&& warn_bidi_p)
|
||||
{
|
||||
- bidi::kind kind = get_bidi_utf8 (buffer->cur);
|
||||
- maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
|
||||
- /*ucn_p=*/false);
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_utf8 (pfile, buffer->cur, &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
|
||||
}
|
||||
if (_cpp_valid_utf8 (pfile, &buffer->cur, buffer->rlimit, 1 + !first,
|
||||
state, &s))
|
||||
@@ -1748,10 +1895,12 @@ forms_identifier_p (cpp_reader *pfile, i
|
||||
buffer->cur += 2;
|
||||
if (warn_bidi_p)
|
||||
{
|
||||
- bidi::kind kind = get_bidi_ucn (buffer->cur,
|
||||
- buffer->cur[-1] == 'U');
|
||||
- maybe_warn_bidi_on_char (pfile, buffer->cur, kind,
|
||||
- /*ucn_p=*/true);
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_ucn (pfile,
|
||||
+ buffer->cur,
|
||||
+ buffer->cur[-1] == 'U',
|
||||
+ &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/true, loc);
|
||||
}
|
||||
if (_cpp_valid_ucn (pfile, &buffer->cur, buffer->rlimit, 1 + !first,
|
||||
state, &s, NULL, NULL))
|
||||
@@ -2327,12 +2476,15 @@ lex_raw_string (cpp_reader *pfile, cpp_t
|
||||
}
|
||||
else if (__builtin_expect ((unsigned char) c == bidi::utf8_start, 0)
|
||||
&& warn_bidi_p)
|
||||
- maybe_warn_bidi_on_char (pfile, pos - 1, get_bidi_utf8 (pos - 1),
|
||||
- /*ucn_p=*/false);
|
||||
+ {
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_utf8 (pfile, cur - 1, &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
|
||||
+ }
|
||||
}
|
||||
|
||||
if (warn_bidi_p)
|
||||
- maybe_warn_bidi_on_close (pfile, pos);
|
||||
+ maybe_warn_bidi_on_close (pfile, cur);
|
||||
|
||||
if (CPP_OPTION (pfile, user_literals))
|
||||
{
|
||||
@@ -2438,8 +2590,10 @@ lex_string (cpp_reader *pfile, cpp_token
|
||||
{
|
||||
if ((cur[0] == 'u' || cur[0] == 'U') && warn_bidi_p)
|
||||
{
|
||||
- bidi::kind kind = get_bidi_ucn (cur + 1, cur[0] == 'U');
|
||||
- maybe_warn_bidi_on_char (pfile, cur, kind, /*ucn_p=*/true);
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_ucn (pfile, cur + 1, cur[0] == 'U',
|
||||
+ &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/true, loc);
|
||||
}
|
||||
cur++;
|
||||
}
|
||||
@@ -2467,8 +2621,9 @@ lex_string (cpp_reader *pfile, cpp_token
|
||||
saw_NUL = true;
|
||||
else if (__builtin_expect (c == bidi::utf8_start, 0) && warn_bidi_p)
|
||||
{
|
||||
- bidi::kind kind = get_bidi_utf8 (cur - 1);
|
||||
- maybe_warn_bidi_on_char (pfile, cur - 1, kind, /*ucn_p=*/false);
|
||||
+ location_t loc;
|
||||
+ bidi::kind kind = get_bidi_utf8 (pfile, cur - 1, &loc);
|
||||
+ maybe_warn_bidi_on_char (pfile, kind, /*ucn_p=*/false, loc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From b486380dcc4758e856ab6d847eb358d05bd79d64 Mon Sep 17 00:00:00 2001
|
||||
From 6ddfb0bfcd1eea71acd37ab06f7a4510b9f1d12b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:12:56 +0400
|
||||
Subject: [PATCH 05/40] optional libstdc
|
||||
Subject: [PATCH] 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++
|
||||
@@ -24,11 +24,11 @@ Upstream-Status: Inappropriate [embedded specific]
|
||||
gcc/gcc.c | 1 +
|
||||
4 files changed, 37 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/c-family/c.opt
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/c-family/c.opt
|
||||
+++ gcc-8.5.0/gcc/c-family/c.opt
|
||||
@@ -1901,6 +1901,10 @@ nostdinc++
|
||||
diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt
|
||||
index c49da99d395..35f712e2c84 100644
|
||||
--- a/gcc/c-family/c.opt
|
||||
+++ b/gcc/c-family/c.opt
|
||||
@@ -2025,6 +2025,10 @@ nostdinc++
|
||||
C++ ObjC++
|
||||
Do not search standard system include directories for C++.
|
||||
|
||||
@@ -39,11 +39,11 @@ Index: gcc-8.5.0/gcc/c-family/c.opt
|
||||
o
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
; Documented in common.opt
|
||||
Index: gcc-8.5.0/gcc/cp/g++spec.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/cp/g++spec.c
|
||||
+++ gcc-8.5.0/gcc/cp/g++spec.c
|
||||
@@ -137,6 +137,7 @@ lang_specific_driver (struct cl_decoded_
|
||||
diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
|
||||
index 0ab63bcd211..7b081e9e4f0 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:
|
||||
@@ -51,11 +51,11 @@ Index: gcc-8.5.0/gcc/cp/g++spec.c
|
||||
case OPT_nodefaultlibs:
|
||||
library = -1;
|
||||
break;
|
||||
Index: gcc-8.5.0/gcc/doc/invoke.texi
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/doc/invoke.texi
|
||||
+++ gcc-8.5.0/gcc/doc/invoke.texi
|
||||
@@ -212,6 +212,9 @@ in the following sections.
|
||||
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
|
||||
index f12d8d12150..cf6cb428e7d 100644
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -230,6 +230,9 @@ in the following sections.
|
||||
-fno-weak -nostdinc++ @gol
|
||||
-fvisibility-inlines-hidden @gol
|
||||
-fvisibility-ms-compat @gol
|
||||
@@ -63,21 +63,28 @@ Index: gcc-8.5.0/gcc/doc/invoke.texi
|
||||
+-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 -Wliteral-suffix -Wmultiple-inheritance @gol
|
||||
@@ -510,7 +513,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wabi-tag -Wcatch-value -Wcatch-value=@var{n} @gol
|
||||
-Wno-class-conversion -Wclass-memaccess @gol
|
||||
@@ -599,7 +602,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
|
||||
-static-libmpx -static-libmpxwrappers @gol
|
||||
--shared -shared-libgcc -symbolic @gol
|
||||
+-shared -shared-libgcc -symbolic -nostdlib++ @gol
|
||||
-T @var{script} -Wl,@var{option} -Xlinker @var{option} @gol
|
||||
-u @var{symbol} -z @var{keyword}}
|
||||
|
||||
@@ -12348,6 +12351,33 @@ mechanism when this option is specified.
|
||||
@@ -14407,6 +14410,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.
|
||||
|
||||
@cindex @option{-lgcc}, use with @option{-nostdlib}
|
||||
@cindex @option{-nostdlib} and unresolved references
|
||||
+@item -nostdlib++
|
||||
+@opindex nostdlib++
|
||||
+Do not use the standard system C++ runtime libraries when linking.
|
||||
+Only the libraries you specify will be passed to the linker.
|
||||
+
|
||||
+@cindex @option{-lgcc}, use with @option{-nostdlib}
|
||||
+@cindex @option{-nostdlib} and unresolved references
|
||||
+@cindex unresolved references and @option{-nostdlib}
|
||||
+@cindex @option{-lgcc}, use with @option{-nodefaultlibs}
|
||||
+@cindex @option{-nodefaultlibs} and unresolved references
|
||||
@@ -98,25 +105,18 @@ Index: gcc-8.5.0/gcc/doc/invoke.texi
|
||||
+constructors are called; @pxref{Collect2,,@code{collect2}, gccint,
|
||||
+GNU Compiler Collection (GCC) Internals}.)
|
||||
+
|
||||
+@item -nostdlib++
|
||||
+@opindex nostdlib++
|
||||
+Do not use the standard system C++ runtime libraries when linking.
|
||||
+Only the libraries you specify will be passed to the linker.
|
||||
+
|
||||
+@cindex @option{-lgcc}, use with @option{-nostdlib}
|
||||
+@cindex @option{-nostdlib} and unresolved references
|
||||
@cindex unresolved references and @option{-nostdlib}
|
||||
@cindex @option{-lgcc}, use with @option{-nodefaultlibs}
|
||||
@cindex @option{-nodefaultlibs} and unresolved references
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -1047,6 +1047,7 @@ proper position among the other output f
|
||||
@item -pie
|
||||
@opindex pie
|
||||
Produce a dynamically linked position independent executable on targets
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index b2200c5185a..f8be58ce0a6 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -1051,6 +1051,7 @@ proper position among the other output files. */
|
||||
%(mflib) " STACK_SPLIT_SPEC "\
|
||||
%{fprofile-arcs|fprofile-generate*|coverage:-lgcov} " SANITIZER_SPEC " \
|
||||
%{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\
|
||||
%{!nostdlib:%{!r:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}}\
|
||||
+ %{!nostdlib++:}\
|
||||
%{!nostdlib:%{!nostartfiles:%E}} %{T*} \n%(post_link) }}}}}}"
|
||||
%{!nostdlib:%{!r:%{!nostartfiles:%E}}} %{T*} \n%(post_link) }}}}}}"
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 209e46f45382088caab54425b92b5dfc43ebb4fc Mon Sep 17 00:00:00 2001
|
||||
From a6c90d3a9c5010b4aa7cc30467cf81ca7e0f430e Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:16:28 +0400
|
||||
Subject: [PATCH 07/40] COLLECT_GCC_OPTIONS
|
||||
Subject: [PATCH] COLLECT_GCC_OPTIONS
|
||||
|
||||
This patch adds --sysroot into COLLECT_GCC_OPTIONS which is used to
|
||||
invoke collect2.
|
||||
@@ -13,11 +13,11 @@ Upstream-Status: Pending
|
||||
gcc/gcc.c | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -4677,6 +4677,15 @@ set_collect_gcc_options (void)
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index f8be58ce0a6..48b0f9dde81 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -4806,6 +4806,15 @@ set_collect_gcc_options (void)
|
||||
sizeof ("COLLECT_GCC_OPTIONS=") - 1);
|
||||
|
||||
first_time = TRUE;
|
||||
@@ -1,8 +1,7 @@
|
||||
From 3bcbdf5ade54a72820ad7798119d0bbad4baf6ec Mon Sep 17 00:00:00 2001
|
||||
From 5670d4489f119d2da661734895ac0be99b606d1b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:17:25 +0400
|
||||
Subject: [PATCH 08/40] Use the defaults.h in ${B} instead of ${S}, and t-oe in
|
||||
${B}
|
||||
Subject: [PATCH] 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,
|
||||
@@ -26,11 +25,11 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
|
||||
gcc/mkconfig.sh | 4 ++--
|
||||
4 files changed, 7 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/Makefile.in
|
||||
+++ gcc-8.5.0/gcc/Makefile.in
|
||||
@@ -538,7 +538,7 @@ TARGET_SYSTEM_ROOT = @TARGET_SYSTEM_ROOT
|
||||
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
|
||||
index 543b477ff18..a67d2cc18d6 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@
|
||||
@@ -39,11 +38,11 @@ Index: gcc-8.5.0/gcc/Makefile.in
|
||||
TM_ENDIAN_CONFIG=@TM_ENDIAN_CONFIG@
|
||||
TM_MULTILIB_CONFIG=@TM_MULTILIB_CONFIG@
|
||||
TM_MULTILIB_EXCEPTIONS_CONFIG=@TM_MULTILIB_EXCEPTIONS_CONFIG@
|
||||
Index: gcc-8.5.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure
|
||||
+++ gcc-8.5.0/gcc/configure
|
||||
@@ -12159,8 +12159,8 @@ for f in $tm_file; do
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 8de766a942c..b26e8fc7fee 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -12705,8 +12705,8 @@ for f in $tm_file; do
|
||||
tm_include_list="${tm_include_list} $f"
|
||||
;;
|
||||
defaults.h )
|
||||
@@ -54,11 +53,11 @@ Index: gcc-8.5.0/gcc/configure
|
||||
;;
|
||||
* )
|
||||
tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
|
||||
Index: gcc-8.5.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure.ac
|
||||
+++ gcc-8.5.0/gcc/configure.ac
|
||||
@@ -1922,8 +1922,8 @@ for f in $tm_file; do
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 8bfd6feb780..26fa46802c7 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -2138,8 +2138,8 @@ for f in $tm_file; do
|
||||
tm_include_list="${tm_include_list} $f"
|
||||
;;
|
||||
defaults.h )
|
||||
@@ -69,10 +68,10 @@ Index: gcc-8.5.0/gcc/configure.ac
|
||||
;;
|
||||
* )
|
||||
tm_file_list="${tm_file_list} \$(srcdir)/config/$f"
|
||||
Index: gcc-8.5.0/gcc/mkconfig.sh
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/mkconfig.sh
|
||||
+++ gcc-8.5.0/gcc/mkconfig.sh
|
||||
diff --git a/gcc/mkconfig.sh b/gcc/mkconfig.sh
|
||||
index d2c677a4a42..d03852481cb 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
|
||||
@@ -1,7 +1,7 @@
|
||||
From e654573352d28f160f379ee77e4067cf108714d0 Mon Sep 17 00:00:00 2001
|
||||
From f05062625e7a4751be723595a2f7a4b7fbeff311 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:20:01 +0400
|
||||
Subject: [PATCH 09/40] fortran cross-compile hack.
|
||||
Subject: [PATCH] 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
|
||||
@@ -15,11 +15,11 @@ Upstream-Status: Inappropriate [embedded specific]
|
||||
libgfortran/configure.ac | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/libgfortran/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgfortran/configure
|
||||
+++ gcc-8.5.0/libgfortran/configure
|
||||
@@ -12883,7 +12883,7 @@ esac
|
||||
diff --git a/libgfortran/configure b/libgfortran/configure
|
||||
index b4cf854ddb3..e8e0ac3b1cf 100755
|
||||
--- a/libgfortran/configure
|
||||
+++ b/libgfortran/configure
|
||||
@@ -13090,7 +13090,7 @@ esac
|
||||
|
||||
# We need gfortran to compile parts of the library
|
||||
#AC_PROG_FC(gfortran)
|
||||
@@ -28,11 +28,11 @@ Index: gcc-8.5.0/libgfortran/configure
|
||||
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'
|
||||
Index: gcc-8.5.0/libgfortran/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgfortran/configure.ac
|
||||
+++ gcc-8.5.0/libgfortran/configure.ac
|
||||
@@ -250,7 +250,7 @@ AC_SUBST(enable_static)
|
||||
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
|
||||
index 711dc60ff78..3c9bbfbf47d 100644
|
||||
--- a/libgfortran/configure.ac
|
||||
+++ b/libgfortran/configure.ac
|
||||
@@ -258,7 +258,7 @@ AC_SUBST(enable_static)
|
||||
|
||||
# We need gfortran to compile parts of the library
|
||||
#AC_PROG_FC(gfortran)
|
||||
@@ -1,7 +1,7 @@
|
||||
From 2ae7af4eb70eff6aeda1fe96333ff50cfaa9d906 Mon Sep 17 00:00:00 2001
|
||||
From 1d76de7f1f5c99f1fa1a4b14aedad3d702e4e136 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:22:00 +0400
|
||||
Subject: [PATCH 10/40] cpp: honor sysroot.
|
||||
Subject: [PATCH] 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
|
||||
@@ -25,22 +25,22 @@ Upstream-Status: Pending
|
||||
gcc/gcc.c | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/cp/lang-specs.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/cp/lang-specs.h
|
||||
+++ gcc-8.5.0/gcc/cp/lang-specs.h
|
||||
@@ -64,5 +64,5 @@ along with GCC; see the file COPYING3.
|
||||
diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
|
||||
index 0ad4a33b93e..16c744f4f90 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",
|
||||
"%{!M:%{!MM:%{!E:\
|
||||
- cc1plus -fpreprocessed %i %(cc1_options) %2\
|
||||
+ cc1plus -fpreprocessed %i %I %(cc1_options) %2\
|
||||
%{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -1343,7 +1343,7 @@ static const struct compiler default_com
|
||||
"%{!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 48b0f9dde81..c87f603955f 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -1348,7 +1348,7 @@ static const struct compiler default_compilers[] =
|
||||
%W{o*:--output-pch=%*}}%V}}}}}}}", 0, 0, 0},
|
||||
{".i", "@cpp-output", 0, 0, 0},
|
||||
{"@cpp-output",
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1e1ea0eb55a594ac4cd7b838f74dec7405aae02b Mon Sep 17 00:00:00 2001
|
||||
From 4fad4433c96bc9d0d9d124f9674fb3389f6f426e Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:23:08 +0400
|
||||
Subject: [PATCH 11/40] MIPS64: Default to N64 ABI
|
||||
Subject: [PATCH] MIPS64: Default to N64 ABI
|
||||
|
||||
MIPS64 defaults to n32 ABI, this patch makes it
|
||||
so that it defaults to N64 ABI
|
||||
@@ -13,11 +13,11 @@ Upstream-Status: Inappropriate [OE config specific]
|
||||
gcc/config.gcc | 10 +++++-----
|
||||
1 file changed, 5 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config.gcc
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config.gcc
|
||||
+++ gcc-8.5.0/gcc/config.gcc
|
||||
@@ -2152,29 +2152,29 @@ mips*-*-linux*) # Linux MIPS, either
|
||||
diff --git a/gcc/config.gcc b/gcc/config.gcc
|
||||
index cf1a87e2efd..37c4221a39f 100644
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -2511,29 +2511,29 @@ mips*-*-linux*) # Linux MIPS, either endian.
|
||||
default_mips_arch=mips32
|
||||
;;
|
||||
mips64el-st-linux-gnu)
|
||||
@@ -1,7 +1,7 @@
|
||||
From 6f8649936df3677109b8396f563c716ae8b237fe Mon Sep 17 00:00:00 2001
|
||||
From 8fc016a53c22c19feccbfa13ebdf19090dc67058 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:24:50 +0400
|
||||
Subject: [PATCH 12/40] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
|
||||
Subject: [PATCH] Define GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
|
||||
relative to SYSTEMLIBS_DIR
|
||||
|
||||
This patch defines GLIBC_DYNAMIC_LINKER and UCLIBC_DYNAMIC_LINKER
|
||||
@@ -24,17 +24,17 @@ Upstream-Status: Inappropriate [OE configuration]
|
||||
gcc/config/linux.h | 8 ++++----
|
||||
gcc/config/mips/linux.h | 12 ++++++------
|
||||
gcc/config/riscv/linux.h | 2 +-
|
||||
gcc/config/rs6000/linux64.h | 16 ++++++----------
|
||||
gcc/config/rs6000/linux64.h | 15 +++++----------
|
||||
gcc/config/sh/linux.h | 2 +-
|
||||
gcc/config/sparc/linux.h | 2 +-
|
||||
gcc/config/sparc/linux64.h | 4 ++--
|
||||
12 files changed, 30 insertions(+), 34 deletions(-)
|
||||
12 files changed, 29 insertions(+), 34 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/alpha/linux-elf.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/alpha/linux-elf.h
|
||||
+++ gcc-8.5.0/gcc/config/alpha/linux-elf.h
|
||||
@@ -23,8 +23,8 @@ along with GCC; see the file COPYING3.
|
||||
diff --git a/gcc/config/alpha/linux-elf.h b/gcc/config/alpha/linux-elf.h
|
||||
index e25fcac3c59..01aca0c6542 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 },
|
||||
|
||||
@@ -45,11 +45,11 @@ Index: gcc-8.5.0/gcc/config/alpha/linux-elf.h
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
|
||||
#elif DEFAULT_LIBC == LIBC_GLIBC
|
||||
Index: gcc-8.5.0/gcc/config/arm/linux-eabi.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/linux-eabi.h
|
||||
+++ gcc-8.5.0/gcc/config/arm/linux-eabi.h
|
||||
@@ -62,8 +62,8 @@
|
||||
diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
|
||||
index 5bdcfa0c5d3..0c0332f317f 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
|
||||
@@ -60,10 +60,10 @@ Index: gcc-8.5.0/gcc/config/arm/linux-eabi.h
|
||||
#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER \
|
||||
Index: gcc-8.5.0/gcc/config/arm/linux-elf.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/linux-elf.h
|
||||
+++ gcc-8.5.0/gcc/config/arm/linux-elf.h
|
||||
diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h
|
||||
index 0ec3aa53189..abfa9566d74 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"
|
||||
@@ -73,11 +73,11 @@ Index: gcc-8.5.0/gcc/config/arm/linux-elf.h
|
||||
|
||||
#define LINUX_TARGET_LINK_SPEC "%{h*} \
|
||||
%{static:-Bstatic} \
|
||||
Index: gcc-8.5.0/gcc/config/i386/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/i386/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/i386/linux.h
|
||||
@@ -20,7 +20,7 @@ along with GCC; see the file COPYING3.
|
||||
diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
|
||||
index 9f823f125ed..e0390b7d5e3 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"
|
||||
@@ -86,11 +86,11 @@ Index: gcc-8.5.0/gcc/config/i386/linux.h
|
||||
|
||||
#undef MUSL_DYNAMIC_LINKER
|
||||
#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
|
||||
Index: gcc-8.5.0/gcc/config/i386/linux64.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/i386/linux64.h
|
||||
+++ gcc-8.5.0/gcc/config/i386/linux64.h
|
||||
@@ -27,9 +27,9 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
diff --git a/gcc/config/i386/linux64.h b/gcc/config/i386/linux64.h
|
||||
index 6cb68d1ccfa..7de09ec857c 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"
|
||||
|
||||
@@ -103,11 +103,11 @@ Index: gcc-8.5.0/gcc/config/i386/linux64.h
|
||||
|
||||
#undef MUSL_DYNAMIC_LINKER32
|
||||
#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
|
||||
Index: gcc-8.5.0/gcc/config/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/linux.h
|
||||
@@ -81,10 +81,10 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
|
||||
index 95654bcdb5a..0c1a8118a26 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. */
|
||||
@@ -122,11 +122,11 @@ Index: gcc-8.5.0/gcc/config/linux.h
|
||||
#define BIONIC_DYNAMIC_LINKER "/system/bin/linker"
|
||||
#define BIONIC_DYNAMIC_LINKER32 "/system/bin/linker"
|
||||
#define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
|
||||
Index: gcc-8.5.0/gcc/config/mips/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/mips/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/mips/linux.h
|
||||
@@ -22,20 +22,20 @@ along with GCC; see the file COPYING3.
|
||||
diff --git a/gcc/config/mips/linux.h b/gcc/config/mips/linux.h
|
||||
index 54446e58e5f..4786ee304c1 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 \
|
||||
@@ -153,11 +153,11 @@ Index: gcc-8.5.0/gcc/config/mips/linux.h
|
||||
|
||||
#undef MUSL_DYNAMIC_LINKER32
|
||||
#define MUSL_DYNAMIC_LINKER32 \
|
||||
Index: gcc-8.5.0/gcc/config/riscv/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/riscv/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/riscv/linux.h
|
||||
@@ -22,7 +22,7 @@ along with GCC; see the file COPYING3.
|
||||
diff --git a/gcc/config/riscv/linux.h b/gcc/config/riscv/linux.h
|
||||
index 4afef7c228c..01997330741 100644
|
||||
--- a/gcc/config/riscv/linux.h
|
||||
+++ b/gcc/config/riscv/linux.h
|
||||
@@ -22,7 +22,7 @@ along with GCC; see the file COPYING3. If not see
|
||||
GNU_USER_TARGET_OS_CPP_BUILTINS(); \
|
||||
} while (0)
|
||||
|
||||
@@ -166,11 +166,11 @@ Index: gcc-8.5.0/gcc/config/riscv/linux.h
|
||||
|
||||
#define MUSL_ABI_SUFFIX \
|
||||
"%{mabi=ilp32:-sf}" \
|
||||
Index: gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/rs6000/linux64.h
|
||||
+++ gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
@@ -413,16 +413,11 @@ extern int dot_symbols;
|
||||
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
|
||||
index 34776c8421e..967c1c43c63 100644
|
||||
--- a/gcc/config/rs6000/linux64.h
|
||||
+++ b/gcc/config/rs6000/linux64.h
|
||||
@@ -419,24 +419,19 @@ extern int dot_symbols;
|
||||
#undef LINK_OS_DEFAULT_SPEC
|
||||
#define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
|
||||
|
||||
@@ -189,24 +189,22 @@ Index: gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
+#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 \
|
||||
@@ -430,8 +425,9 @@ extern int dot_symbols;
|
||||
- "/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"
|
||||
- "/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"
|
||||
|
||||
-#define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
|
||||
-#define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
|
||||
+#define UCLIBC_DYNAMIC_LINKER32 SYSTEMLIBS_DIR "ld-uClibc.so.0"
|
||||
+#define UCLIBC_DYNAMIC_LINKER64 SYSTEMLIBS_DIR "ld64-uClibc.so.0"
|
||||
+
|
||||
#if DEFAULT_LIBC == LIBC_UCLIBC
|
||||
#define CHOOSE_DYNAMIC_LINKER(G, U, M) \
|
||||
"%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
|
||||
Index: gcc-8.5.0/gcc/config/sh/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/sh/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/sh/linux.h
|
||||
@@ -64,7 +64,7 @@ along with GCC; see the file COPYING3.
|
||||
#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 c1d0441d488..81373eb8336 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"
|
||||
|
||||
@@ -215,11 +213,11 @@ Index: gcc-8.5.0/gcc/config/sh/linux.h
|
||||
|
||||
#undef SUBTARGET_LINK_EMUL_SUFFIX
|
||||
#define SUBTARGET_LINK_EMUL_SUFFIX "%{mfdpic:_fd;:_linux}"
|
||||
Index: gcc-8.5.0/gcc/config/sparc/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/sparc/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/sparc/linux.h
|
||||
@@ -83,7 +83,7 @@ extern const char *host_detect_local_cpu
|
||||
diff --git a/gcc/config/sparc/linux.h b/gcc/config/sparc/linux.h
|
||||
index 81201e67a2f..8b6fc577594 100644
|
||||
--- a/gcc/config/sparc/linux.h
|
||||
+++ b/gcc/config/sparc/linux.h
|
||||
@@ -84,7 +84,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. */
|
||||
|
||||
@@ -228,11 +226,11 @@ Index: gcc-8.5.0/gcc/config/sparc/linux.h
|
||||
|
||||
#undef LINK_SPEC
|
||||
#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \
|
||||
Index: gcc-8.5.0/gcc/config/sparc/linux64.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/sparc/linux64.h
|
||||
+++ gcc-8.5.0/gcc/config/sparc/linux64.h
|
||||
@@ -84,8 +84,8 @@ along with GCC; see the file COPYING3.
|
||||
diff --git a/gcc/config/sparc/linux64.h b/gcc/config/sparc/linux64.h
|
||||
index a1a0efd8f28..85d1084afc2 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. */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 9e815965fbaa90134be0e777cfc2fbcfab16b674 Mon Sep 17 00:00:00 2001
|
||||
From a22d1264049d29b90663cf5667049ae6f9b7a5ce Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:26:37 +0400
|
||||
Subject: [PATCH 13/40] gcc: Fix argument list too long error.
|
||||
Subject: [PATCH] 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:
|
||||
@@ -17,21 +17,24 @@ $(sort list) doesn't need this.
|
||||
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
|
||||
RP: gcc then added *.h and *.def additions to this list, breaking the original
|
||||
fix. Add the sort to the original gcc code, leaving the tr+sort to fix the original
|
||||
issue but include the new files too as reported by Zhuang <qiuguang.zqg@alibaba-inc.com>
|
||||
|
||||
Upstream-Status: Pending
|
||||
---
|
||||
gcc/Makefile.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/Makefile.in
|
||||
+++ gcc-8.5.0/gcc/Makefile.in
|
||||
@@ -3539,7 +3539,7 @@ install-plugin: installdirs lang.install
|
||||
# We keep the directory structure for files in config or c-family and .def
|
||||
# files. All other files are flattened to a single directory.
|
||||
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
|
||||
index a67d2cc18d6..480c9366418 100644
|
||||
--- a/gcc/Makefile.in
|
||||
+++ b/gcc/Makefile.in
|
||||
# We keep the directory structure for files in config, common/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))"; \
|
||||
+ headers=`echo $(sort $(PLUGIN_HEADERS)) $$(cd $(srcdir); echo *.h *.def) | tr ' ' '\012' | sort -u`; \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
|
||||
for file in $$headers; do \
|
||||
if [ -f $$file ] ; then \
|
||||
@@ -1,7 +1,7 @@
|
||||
From 00c7a7fdd4b4aad9e57d8b541de17ad209b6cd06 Mon Sep 17 00:00:00 2001
|
||||
From fa47586935a18ecfc2ad5586802e326e21741b7b Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:28:10 +0400
|
||||
Subject: [PATCH 14/40] Disable sdt.
|
||||
Subject: [PATCH] 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
|
||||
@@ -24,11 +24,11 @@ Upstream-Status: Inappropriate [hack]
|
||||
libstdc++-v3/configure.ac | 2 +-
|
||||
4 files changed, 19 insertions(+), 19 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure
|
||||
+++ gcc-8.5.0/gcc/configure
|
||||
@@ -29346,12 +29346,12 @@ fi
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index b26e8fc7fee..6080f86145e 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -29789,12 +29789,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
|
||||
@@ -47,11 +47,11 @@ Index: gcc-8.5.0/gcc/configure
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_sys_sdt_h" >&5
|
||||
$as_echo "$have_sys_sdt_h" >&6; }
|
||||
|
||||
Index: gcc-8.5.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure.ac
|
||||
+++ gcc-8.5.0/gcc/configure.ac
|
||||
@@ -5950,15 +5950,15 @@ fi
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 26fa46802c7..42be5252778 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -6190,15 +6190,15 @@ fi
|
||||
AC_SUBST([enable_default_ssp])
|
||||
|
||||
# Test for <sys/sdt.h> on the target.
|
||||
@@ -76,11 +76,11 @@ Index: gcc-8.5.0/gcc/configure.ac
|
||||
|
||||
# Check if TFmode long double should be used by default or not.
|
||||
# Some glibc targets used DFmode long double, but with glibc 2.4
|
||||
Index: gcc-8.5.0/libstdc++-v3/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libstdc++-v3/configure
|
||||
+++ gcc-8.5.0/libstdc++-v3/configure
|
||||
@@ -22025,11 +22025,11 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS con
|
||||
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
|
||||
index 9f9c5a2419a..71ed13b815b 100755
|
||||
--- a/libstdc++-v3/configure
|
||||
+++ b/libstdc++-v3/configure
|
||||
@@ -22615,11 +22615,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
|
||||
|
||||
@@ -95,11 +95,11 @@ Index: gcc-8.5.0/libstdc++-v3/configure
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_sys_sdt_h" >&5
|
||||
$as_echo "$glibcxx_cv_sys_sdt_h" >&6; }
|
||||
|
||||
Index: gcc-8.5.0/libstdc++-v3/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libstdc++-v3/configure.ac
|
||||
+++ gcc-8.5.0/libstdc++-v3/configure.ac
|
||||
@@ -232,7 +232,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
|
||||
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
|
||||
index 699e55fd829..5c7a7bda439 100644
|
||||
--- a/libstdc++-v3/configure.ac
|
||||
+++ b/libstdc++-v3/configure.ac
|
||||
@@ -241,7 +241,7 @@ GLIBCXX_CHECK_SC_NPROCESSORS_ONLN
|
||||
GLIBCXX_CHECK_SC_NPROC_ONLN
|
||||
GLIBCXX_CHECK_PTHREADS_NUM_PROCESSORS_NP
|
||||
GLIBCXX_CHECK_SYSCTL_HW_NCPU
|
||||
@@ -1,7 +1,7 @@
|
||||
From 80f2b01b3f917cea08294328c8bbc51dadece4af Mon Sep 17 00:00:00 2001
|
||||
From 6ecd478881468934444ff85611fd43f7033b1e81 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:29:11 +0400
|
||||
Subject: [PATCH 15/40] libtool
|
||||
Subject: [PATCH] libtool
|
||||
|
||||
libstdc++ from gcc-runtime gets created with -rpath=/usr/lib/../lib for qemux86-64
|
||||
when running on am x86_64 build host.
|
||||
@@ -22,10 +22,10 @@ Upstream-Status: Pending
|
||||
ltmain.sh | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/ltmain.sh
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/ltmain.sh
|
||||
+++ gcc-8.5.0/ltmain.sh
|
||||
diff --git a/ltmain.sh b/ltmain.sh
|
||||
index 70990740b6c..ee938056bef 100644
|
||||
--- a/ltmain.sh
|
||||
+++ b/ltmain.sh
|
||||
@@ -6359,6 +6359,10 @@ func_mode_link ()
|
||||
func_warning "ignoring multiple \`-rpath's for a libtool library"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From a66ec1e382bf869749588f072a4a7c09039f2b3a Mon Sep 17 00:00:00 2001
|
||||
From de4427fa49c07dc651ee6ceaf5c5078700ca3b08 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:30:32 +0400
|
||||
Subject: [PATCH 16/40] gcc: armv4: pass fix-v4bx to linker to support EABI.
|
||||
Subject: [PATCH] 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
|
||||
@@ -18,13 +18,13 @@ Upstream-Status: Pending
|
||||
gcc/config/arm/linux-eabi.h | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/arm/linux-eabi.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/arm/linux-eabi.h
|
||||
+++ gcc-8.5.0/gcc/config/arm/linux-eabi.h
|
||||
@@ -88,10 +88,14 @@
|
||||
diff --git a/gcc/config/arm/linux-eabi.h b/gcc/config/arm/linux-eabi.h
|
||||
index 0c0332f317f..7b3769e8459 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"
|
||||
"/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1"
|
||||
|
||||
+/* For armv4 we pass --fix-v4bx to linker to support EABI */
|
||||
+#undef TARGET_FIX_V4BX_SPEC
|
||||
@@ -1,8 +1,8 @@
|
||||
From 624db734f656ad8cdf8b3cf3fc8e860b70c6c251 Mon Sep 17 00:00:00 2001
|
||||
From 6b363c2c1c089ee900efa6013aefba1003840a37 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 29 Mar 2013 09:33:04 +0400
|
||||
Subject: [PATCH 17/40] Use the multilib config files from ${B} instead of
|
||||
using the ones from ${S}
|
||||
Subject: [PATCH] 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,
|
||||
@@ -17,11 +17,11 @@ Upstream-Status: Inappropriate [configuration]
|
||||
gcc/configure.ac | 22 ++++++++++++++++++----
|
||||
2 files changed, 36 insertions(+), 8 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure
|
||||
+++ gcc-8.5.0/gcc/configure
|
||||
@@ -12139,10 +12139,20 @@ done
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 6080f86145e..825a9652329 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -12685,10 +12685,20 @@ done
|
||||
tmake_file_=
|
||||
for f in ${tmake_file}
|
||||
do
|
||||
@@ -44,9 +44,9 @@ Index: gcc-8.5.0/gcc/configure
|
||||
+ ;;
|
||||
+ esac
|
||||
done
|
||||
tmake_file="${tmake_file_}"
|
||||
tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
|
||||
|
||||
@@ -12153,6 +12163,10 @@ tm_file_list="options.h"
|
||||
@@ -12699,6 +12709,10 @@ tm_file_list="options.h"
|
||||
tm_include_list="options.h insn-constants.h"
|
||||
for f in $tm_file; do
|
||||
case $f in
|
||||
@@ -57,11 +57,11 @@ Index: gcc-8.5.0/gcc/configure
|
||||
./* )
|
||||
f=`echo $f | sed 's/^..//'`
|
||||
tm_file_list="${tm_file_list} $f"
|
||||
Index: gcc-8.5.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure.ac
|
||||
+++ gcc-8.5.0/gcc/configure.ac
|
||||
@@ -1902,10 +1902,20 @@ done
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 42be5252778..6099eb3251f 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -2118,10 +2118,20 @@ done
|
||||
tmake_file_=
|
||||
for f in ${tmake_file}
|
||||
do
|
||||
@@ -84,9 +84,9 @@ Index: gcc-8.5.0/gcc/configure.ac
|
||||
+ ;;
|
||||
+ esac
|
||||
done
|
||||
tmake_file="${tmake_file_}"
|
||||
tmake_file="${tmake_file_}${omp_device_property_tmake_file}"
|
||||
|
||||
@@ -1916,6 +1926,10 @@ tm_file_list="options.h"
|
||||
@@ -2132,6 +2142,10 @@ tm_file_list="options.h"
|
||||
tm_include_list="options.h insn-constants.h"
|
||||
for f in $tm_file; do
|
||||
case $f in
|
||||
@@ -1,8 +1,8 @@
|
||||
From 27cca95dcfeead8c52d292c4824ee96f178d6183 Mon Sep 17 00:00:00 2001
|
||||
From 08752c2f1d21553301bee5757c453c6a36cbe03c Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Feb 2015 09:39:38 +0000
|
||||
Subject: [PATCH 18/40] Avoid using libdir from .la which usually points to a
|
||||
host path
|
||||
Subject: [PATCH] Avoid using libdir from .la which usually points to a host
|
||||
path
|
||||
|
||||
Upstream-Status: Inappropriate [embedded specific]
|
||||
|
||||
@@ -12,10 +12,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
ltmain.sh | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/ltmain.sh
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/ltmain.sh
|
||||
+++ gcc-8.5.0/ltmain.sh
|
||||
diff --git a/ltmain.sh b/ltmain.sh
|
||||
index ee938056bef..9ebc7e3d1e0 100644
|
||||
--- a/ltmain.sh
|
||||
+++ b/ltmain.sh
|
||||
@@ -5628,6 +5628,9 @@ func_mode_link ()
|
||||
absdir="$abs_ladir"
|
||||
libdir="$abs_ladir"
|
||||
@@ -1,7 +1,7 @@
|
||||
From a2936382da81aefa9b69c1fc625f6c706b7ea1d8 Mon Sep 17 00:00:00 2001
|
||||
From 5c3d66378c7ff60ca11a875aa4aa6f8a8529d43a Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Feb 2015 09:40:59 +0000
|
||||
Subject: [PATCH 19/40] export CPP
|
||||
Subject: [PATCH] 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
|
||||
@@ -36,10 +36,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Makefile.in | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: gcc-8.5.0/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/Makefile.in
|
||||
+++ gcc-8.5.0/Makefile.in
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index 36e369df6e7..c717903bb13 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; \
|
||||
@@ -0,0 +1,57 @@
|
||||
From 378b752c5d9a3dba4e58cdadf8b4b4f34ea99a76 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 20 Feb 2015 10:25:11 +0000
|
||||
Subject: [PATCH] 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@linux.intel.com>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
gcc/Makefile.in | 2 ++
|
||||
gcc/cppdefault.c | 4 ++++
|
||||
2 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
|
||||
index 480c9366418..011c7ac2db6 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_suffix)
|
||||
+libsubdir_target = $(target_noncanonical)/$(version)
|
||||
# Directory in which the compiler finds executables
|
||||
libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix)
|
||||
# Directory in which all plugin resources are installed
|
||||
@@ -2946,6 +2947,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 af38cc494ea..2f43b88a0c3 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 },
|
||||
@@ -1,8 +1,8 @@
|
||||
From 0409d2dd7322ecbed731cbe29b034fea43c5dddc Mon Sep 17 00:00:00 2001
|
||||
From 870e805d705d99d9b9d7dbd09727f9c1d2ad9c1d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 3 Mar 2015 08:21:19 +0000
|
||||
Subject: [PATCH 23/40] Don't search host directory during "relink" if
|
||||
$inst_prefix is provided
|
||||
Subject: [PATCH] Don't search host directory during "relink" if $inst_prefix
|
||||
is provided
|
||||
|
||||
http://lists.gnu.org/archive/html/libtool-patches/2011-01/msg00026.html
|
||||
|
||||
@@ -13,10 +13,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
ltmain.sh | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/ltmain.sh
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/ltmain.sh
|
||||
+++ gcc-8.5.0/ltmain.sh
|
||||
diff --git a/ltmain.sh b/ltmain.sh
|
||||
index 9ebc7e3d1e0..7ea79fa8be6 100644
|
||||
--- a/ltmain.sh
|
||||
+++ b/ltmain.sh
|
||||
@@ -6004,12 +6004,13 @@ func_mode_link ()
|
||||
fi
|
||||
else
|
||||
@@ -1,7 +1,8 @@
|
||||
From 56e2e1fc2a27c4a5cc9b471d5d0af90bcb871bfa Mon Sep 17 00:00:00 2001
|
||||
From aba42de763a619355471efd1573561b0cbf51162 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 28 Apr 2015 23:15:27 -0700
|
||||
Subject: [PATCH 24/40] Use SYSTEMLIBS_DIR replacement instead of hardcoding base_libdir
|
||||
Subject: [PATCH] Use SYSTEMLIBS_DIR replacement instead of hardcoding
|
||||
base_libdir
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
@@ -10,10 +11,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/config/aarch64/aarch64-linux.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/aarch64/aarch64-linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/aarch64/aarch64-linux.h
|
||||
+++ gcc-8.5.0/gcc/config/aarch64/aarch64-linux.h
|
||||
diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
|
||||
index e587e2e9ad6..ddc62895693 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
|
||||
@@ -1,7 +1,7 @@
|
||||
From b142e77e44e1acece6da54ccdc24c4da89cf4b99 Mon Sep 17 00:00:00 2001
|
||||
From d63820a78d92f302410358293546f01c7ad17bd8 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 28 Apr 2015 23:18:39 -0700
|
||||
Subject: [PATCH 25/40] aarch64: Add support for musl ldso
|
||||
Subject: [PATCH] aarch64: Add support for musl ldso
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
@@ -10,10 +10,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/config/aarch64/aarch64-linux.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/aarch64/aarch64-linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/aarch64/aarch64-linux.h
|
||||
+++ gcc-8.5.0/gcc/config/aarch64/aarch64-linux.h
|
||||
diff --git a/gcc/config/aarch64/aarch64-linux.h b/gcc/config/aarch64/aarch64-linux.h
|
||||
index ddc62895693..b301825313a 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"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 3d4e53fc7cd71ce1181af8a5e9655398857af741 Mon Sep 17 00:00:00 2001
|
||||
From 3474e16ad4ea8cf4e0e330568e3bc9039e723dce Mon Sep 17 00:00:00 2001
|
||||
From: Robert Yang <liezhi.yang@windriver.com>
|
||||
Date: Sun, 5 Jul 2015 20:25:18 -0700
|
||||
Subject: [PATCH 26/40] libcc1: fix libcc1's install path and rpath
|
||||
Subject: [PATCH] libcc1: fix libcc1's install path and rpath
|
||||
|
||||
* Install libcc1.so and libcc1plugin.so into
|
||||
$(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version), as what we
|
||||
@@ -19,11 +19,11 @@ Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
|
||||
libcc1/Makefile.in | 4 ++--
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/libcc1/Makefile.am
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libcc1/Makefile.am
|
||||
+++ gcc-8.5.0/libcc1/Makefile.am
|
||||
@@ -37,8 +37,8 @@ libiberty = $(if $(wildcard $(libiberty_
|
||||
diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am
|
||||
index c005b0dad4a..ec31d35b7b9 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))
|
||||
|
||||
@@ -34,11 +34,11 @@ Index: gcc-8.5.0/libcc1/Makefile.am
|
||||
|
||||
if ENABLE_PLUGIN
|
||||
plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la
|
||||
Index: gcc-8.5.0/libcc1/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libcc1/Makefile.in
|
||||
+++ gcc-8.5.0/libcc1/Makefile.in
|
||||
@@ -303,8 +303,8 @@ libiberty = $(if $(wildcard $(libiberty_
|
||||
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))
|
||||
@@ -1,7 +1,7 @@
|
||||
From c033c1df11b692213d03db91d6cc145b4adedfac Mon Sep 17 00:00:00 2001
|
||||
From 702daf2e9cb97337e0e594fcd435b1b61a917d14 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 7 Dec 2015 23:39:54 +0000
|
||||
Subject: [PATCH 27/40] handle sysroot support for nativesdk-gcc
|
||||
Subject: [PATCH] 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
|
||||
@@ -24,22 +24,47 @@ Upstream-Status: Inappropriate
|
||||
RP 2015/7/28
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
gcc/cppdefault.c | 50 +++++++++++++++++++++++++++++++++++-------------
|
||||
gcc/cppdefault.h | 3 ++-
|
||||
gcc/gcc.c | 20 +++++++++++++------
|
||||
3 files changed, 53 insertions(+), 20 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/cppdefault.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/cppdefault.c
|
||||
+++ gcc-8.5.0/gcc/cppdefault.c
|
||||
Added PREFIXVAR and EXEC_PREFIXVAR to support runtime relocation. Without
|
||||
these as part of the gccrelocprefix the system can't do runtime relocation
|
||||
if the executable is moved. (These paths were missed in the original
|
||||
implementation.)
|
||||
|
||||
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
|
||||
---
|
||||
gcc/c-family/c-opts.c | 4 +--
|
||||
gcc/cppdefault.c | 63 ++++++++++++++++++++++++++-----------------
|
||||
gcc/cppdefault.h | 13 ++++-----
|
||||
gcc/gcc.c | 20 +++++++++-----
|
||||
gcc/incpath.c | 12 ++++-----
|
||||
gcc/prefix.c | 6 +++--
|
||||
6 files changed, 70 insertions(+), 48 deletions(-)
|
||||
|
||||
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
|
||||
index 58ba0948e79..806bbcfb7a5 100644
|
||||
--- a/gcc/c-family/c-opts.c
|
||||
+++ b/gcc/c-family/c-opts.c
|
||||
@@ -1409,8 +1409,8 @@ add_prefixed_path (const char *suffix, incpath_kind chain)
|
||||
size_t prefix_len, suffix_len;
|
||||
|
||||
suffix_len = strlen (suffix);
|
||||
- prefix = iprefix ? iprefix : cpp_GCC_INCLUDE_DIR;
|
||||
- prefix_len = iprefix ? strlen (iprefix) : cpp_GCC_INCLUDE_DIR_len;
|
||||
+ prefix = iprefix ? iprefix : GCC_INCLUDE_DIRVAR;
|
||||
+ prefix_len = iprefix ? strlen (iprefix) : strlen(GCC_INCLUDE_DIRVAR) - 7;
|
||||
|
||||
path = (char *) xmalloc (prefix_len + suffix_len + 1);
|
||||
memcpy (path, prefix, prefix_len);
|
||||
diff --git a/gcc/cppdefault.c b/gcc/cppdefault.c
|
||||
index 2f43b88a0c3..6b6be04686c 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;
|
||||
+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;
|
||||
@@ -65,7 +90,7 @@ Index: gcc-8.5.0/gcc/cppdefault.c
|
||||
const struct default_include cpp_include_defaults[]
|
||||
#ifdef INCLUDE_DEFAULTS
|
||||
= INCLUDE_DEFAULTS;
|
||||
@@ -42,38 +66,38 @@ const struct default_include cpp_include
|
||||
@@ -42,38 +66,38 @@ const struct default_include cpp_include_defaults[]
|
||||
= {
|
||||
#ifdef GPLUSPLUS_INCLUDE_DIR
|
||||
/* Pick up GNU C++ generic include files. */
|
||||
@@ -113,7 +138,7 @@ Index: gcc-8.5.0/gcc/cppdefault.c
|
||||
/* 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
|
||||
@@ -85,33 +109,24 @@ const struct default_include cpp_include_defaults[]
|
||||
#endif
|
||||
#ifdef CROSS_INCLUDE_DIR
|
||||
/* One place the target system's headers might be. */
|
||||
@@ -134,10 +159,29 @@ Index: gcc-8.5.0/gcc/cppdefault.c
|
||||
#endif
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
Index: gcc-8.5.0/gcc/cppdefault.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/cppdefault.h
|
||||
+++ gcc-8.5.0/gcc/cppdefault.h
|
||||
#endif /* no INCLUDE_DEFAULTS */
|
||||
|
||||
-#ifdef GCC_INCLUDE_DIR
|
||||
-const char cpp_GCC_INCLUDE_DIR[] = GCC_INCLUDE_DIR;
|
||||
-const size_t cpp_GCC_INCLUDE_DIR_len = sizeof GCC_INCLUDE_DIR - 8;
|
||||
-#else
|
||||
-const char cpp_GCC_INCLUDE_DIR[] = "";
|
||||
-const size_t cpp_GCC_INCLUDE_DIR_len = 0;
|
||||
-#endif
|
||||
-
|
||||
/* The configured prefix. */
|
||||
-const char cpp_PREFIX[] = PREFIX;
|
||||
-const size_t cpp_PREFIX_len = sizeof PREFIX - 1;
|
||||
-const char cpp_EXEC_PREFIX[] = STANDARD_EXEC_PREFIX;
|
||||
+char PREFIXVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX;
|
||||
+char EXEC_PREFIXVAR[4096] __attribute__ ((section (".gccrelocprefix"))) = STANDARD_EXEC_PREFIX;
|
||||
|
||||
/* This value is set by cpp_relocated at runtime */
|
||||
const char *gcc_exec_prefix;
|
||||
diff --git a/gcc/cppdefault.h b/gcc/cppdefault.h
|
||||
index a681264f75e..5e10a2fa140 100644
|
||||
--- a/gcc/cppdefault.h
|
||||
+++ b/gcc/cppdefault.h
|
||||
@@ -33,7 +33,8 @@
|
||||
|
||||
struct default_include
|
||||
@@ -148,11 +192,32 @@ Index: gcc-8.5.0/gcc/cppdefault.h
|
||||
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++. */
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -248,6 +248,8 @@ FILE *report_times_to_file = NULL;
|
||||
@@ -50,17 +51,13 @@ struct default_include
|
||||
};
|
||||
|
||||
extern const struct default_include cpp_include_defaults[];
|
||||
-extern const char cpp_GCC_INCLUDE_DIR[];
|
||||
-extern const size_t cpp_GCC_INCLUDE_DIR_len;
|
||||
+extern char GCC_INCLUDE_DIRVAR[] __attribute__ ((section (".gccrelocprefix")));
|
||||
|
||||
/* The configure-time prefix, i.e., the value supplied as the argument
|
||||
to --prefix=. */
|
||||
-extern const char cpp_PREFIX[];
|
||||
+extern char PREFIXVAR[] __attribute__ ((section (".gccrelocprefix")));
|
||||
/* The length of the configure-time prefix. */
|
||||
-extern const size_t cpp_PREFIX_len;
|
||||
-/* The configure-time execution prefix. This is typically the lib/gcc
|
||||
- subdirectory of cpp_PREFIX. */
|
||||
-extern const char cpp_EXEC_PREFIX[];
|
||||
+extern char EXEC_PREFIXVAR[] __attribute__ ((section (".gccrelocprefix")));
|
||||
/* The run-time execution prefix. This is typically the lib/gcc
|
||||
subdirectory of the actual installation. */
|
||||
extern const char *gcc_exec_prefix;
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index c87f603955f..535d5c3bb65 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -252,6 +252,8 @@ FILE *report_times_to_file = NULL;
|
||||
#endif
|
||||
static const char *target_system_root = DEFAULT_TARGET_SYSTEM_ROOT;
|
||||
|
||||
@@ -161,7 +226,7 @@ Index: gcc-8.5.0/gcc/gcc.c
|
||||
/* Nonzero means pass the updated target_system_root to the compiler. */
|
||||
|
||||
static int target_system_root_changed;
|
||||
@@ -519,6 +521,7 @@ or with constant text in a single argume
|
||||
@@ -526,6 +528,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.
|
||||
@@ -169,7 +234,7 @@ Index: gcc-8.5.0/gcc/gcc.c
|
||||
%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.
|
||||
@@ -1487,10 +1490,10 @@ static const char *gcc_libexec_prefix;
|
||||
@@ -1499,10 +1502,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. */
|
||||
@@ -184,7 +249,7 @@ Index: gcc-8.5.0/gcc/gcc.c
|
||||
|
||||
/* For native compilers, these are well-known paths containing
|
||||
components that may be provided by the system. For cross
|
||||
@@ -1498,9 +1501,9 @@ static const char *const standard_startf
|
||||
@@ -1510,9 +1513,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;
|
||||
@@ -196,7 +261,7 @@ Index: gcc-8.5.0/gcc/gcc.c
|
||||
= STANDARD_STARTFILE_PREFIX_2;
|
||||
|
||||
/* A relative path to be used in finding the location of tools
|
||||
@@ -5849,6 +5852,11 @@ do_spec_1 (const char *spec, int inswitc
|
||||
@@ -5952,6 +5955,11 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -208,3 +273,77 @@ Index: gcc-8.5.0/gcc/gcc.c
|
||||
case 'S':
|
||||
value = do_spec_1 (startfile_spec, 0, NULL);
|
||||
if (value != 0)
|
||||
diff --git a/gcc/incpath.c b/gcc/incpath.c
|
||||
index 9098ab044ab..bfad4ebe382 100644
|
||||
--- a/gcc/incpath.c
|
||||
+++ b/gcc/incpath.c
|
||||
@@ -131,7 +131,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
|
||||
int relocated = cpp_relocated ();
|
||||
size_t len;
|
||||
|
||||
- if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0)
|
||||
+ if (iprefix && (len = strlen(GCC_INCLUDE_DIRVAR) - 7) != 0)
|
||||
{
|
||||
/* Look for directories that start with the standard prefix.
|
||||
"Translate" them, i.e. replace /usr/local/lib/gcc... with
|
||||
@@ -145,7 +145,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
|
||||
now. */
|
||||
if (sysroot && p->add_sysroot)
|
||||
continue;
|
||||
- if (!filename_ncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
|
||||
+ if (!filename_ncmp (p->fname, GCC_INCLUDE_DIRVAR, len))
|
||||
{
|
||||
char *str = concat (iprefix, p->fname + len, NULL);
|
||||
if (p->multilib == 1 && imultilib)
|
||||
@@ -185,7 +185,7 @@ add_standard_paths (const char *sysroot, const char *iprefix,
|
||||
free (sysroot_no_trailing_dir_separator);
|
||||
}
|
||||
else if (!p->add_sysroot && relocated
|
||||
- && !filename_ncmp (p->fname, cpp_PREFIX, cpp_PREFIX_len))
|
||||
+ && !filename_ncmp (p->fname, PREFIXVAR, strlen(PREFIXVAR)))
|
||||
{
|
||||
static const char *relocated_prefix;
|
||||
char *ostr;
|
||||
@@ -202,12 +202,12 @@ add_standard_paths (const char *sysroot, const char *iprefix,
|
||||
dummy = concat (gcc_exec_prefix, "dummy", NULL);
|
||||
relocated_prefix
|
||||
= make_relative_prefix (dummy,
|
||||
- cpp_EXEC_PREFIX,
|
||||
- cpp_PREFIX);
|
||||
+ EXEC_PREFIXVAR,
|
||||
+ PREFIXVAR);
|
||||
free (dummy);
|
||||
}
|
||||
ostr = concat (relocated_prefix,
|
||||
- p->fname + cpp_PREFIX_len,
|
||||
+ p->fname + strlen(PREFIXVAR),
|
||||
NULL);
|
||||
str = update_path (ostr, p->component);
|
||||
free (ostr);
|
||||
diff --git a/gcc/prefix.c b/gcc/prefix.c
|
||||
index 1a403e535bd..c26d07bde12 100644
|
||||
--- a/gcc/prefix.c
|
||||
+++ b/gcc/prefix.c
|
||||
@@ -72,7 +72,9 @@ License along with GCC; see the file COPYING3. If not see
|
||||
#include "prefix.h"
|
||||
#include "common/common-target.h"
|
||||
|
||||
-static const char *std_prefix = PREFIX;
|
||||
+char PREFIXVAR1[4096] __attribute__ ((section (".gccrelocprefix"))) = PREFIX;
|
||||
+
|
||||
+static const char *std_prefix = PREFIXVAR1;
|
||||
|
||||
static const char *get_key_value (char *);
|
||||
static char *translate_name (char *);
|
||||
@@ -212,7 +214,7 @@ translate_name (char *name)
|
||||
prefix = getenv (key);
|
||||
|
||||
if (prefix == 0)
|
||||
- prefix = PREFIX;
|
||||
+ prefix = PREFIXVAR1;
|
||||
|
||||
/* We used to strip trailing DIR_SEPARATORs here, but that can
|
||||
sometimes yield a result with no separator when one was coded
|
||||
--
|
||||
2.29.2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 62240d4c725ea0b43abfb901ddad90e83e29a25c Mon Sep 17 00:00:00 2001
|
||||
From 9c0c73ee48dbee2aad57f4dcdad1b7b74e77b944 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 7 Dec 2015 23:41:45 +0000
|
||||
Subject: [PATCH 28/40] Search target sysroot gcc version specific dirs with
|
||||
Subject: [PATCH] Search target sysroot gcc version specific dirs with
|
||||
multilib.
|
||||
|
||||
We install the gcc libraries (such as crtbegin.p) into
|
||||
@@ -50,11 +50,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/gcc.c | 29 ++++++++++++++++++++++++++++-
|
||||
1 file changed, 28 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/gcc.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/gcc.c
|
||||
+++ gcc-8.5.0/gcc/gcc.c
|
||||
@@ -2527,7 +2527,7 @@ for_each_path (const struct path_prefix
|
||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
||||
index 535d5c3bb65..04647ae812d 100644
|
||||
--- a/gcc/gcc.c
|
||||
+++ b/gcc/gcc.c
|
||||
@@ -2616,7 +2616,7 @@ for_each_path (const struct path_prefix *paths,
|
||||
if (path == NULL)
|
||||
{
|
||||
len = paths->max_len + extra_space + 1;
|
||||
@@ -63,7 +63,7 @@ Index: gcc-8.5.0/gcc/gcc.c
|
||||
path = XNEWVEC (char, len);
|
||||
}
|
||||
|
||||
@@ -2539,6 +2539,33 @@ for_each_path (const struct path_prefix
|
||||
@@ -2628,6 +2628,33 @@ for_each_path (const struct path_prefix *paths,
|
||||
/* Look first in MACHINE/VERSION subdirectory. */
|
||||
if (!skip_multi_dir)
|
||||
{
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1377c738e31a1e1599cfab189485a9459f803e79 Mon Sep 17 00:00:00 2001
|
||||
From 3a003af8804dda90fdf4862eca5f66cb12faaf02 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Mon, 7 Dec 2015 23:42:45 +0000
|
||||
Subject: [PATCH 29/40] Fix various _FOR_BUILD and related variables
|
||||
Subject: [PATCH] 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
|
||||
@@ -25,10 +25,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/configure.ac | 2 +-
|
||||
5 files changed, 14 insertions(+), 3 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/Makefile.in
|
||||
+++ gcc-8.5.0/Makefile.in
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index c717903bb13..5abc649868d 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; \
|
||||
@@ -37,44 +37,6 @@ Index: gcc-8.5.0/Makefile.in
|
||||
CXX="$(CXX_FOR_BUILD)"; export CXX; \
|
||||
CXXFLAGS="$(CXXFLAGS_FOR_BUILD)"; export CXXFLAGS; \
|
||||
GFORTRAN="$(GFORTRAN_FOR_BUILD)"; export GFORTRAN; \
|
||||
@@ -169,6 +170,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.
|
||||
@@ -186,6 +190,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; \
|
||||
@@ -743,6 +748,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)" \
|
||||
Index: gcc-8.5.0/Makefile.tpl
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/Makefile.tpl
|
||||
+++ gcc-8.5.0/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; \
|
||||
@@ -171,6 +172,9 @@ BUILD_EXPORTS = \
|
||||
# built for the build system to override those in BASE_FLAGS_TO_PASS.
|
||||
EXTRA_BUILD_FLAGS = \
|
||||
@@ -93,11 +55,49 @@ Index: gcc-8.5.0/Makefile.tpl
|
||||
ADA_CFLAGS="$(ADA_CFLAGS)"; export ADA_CFLAGS; \
|
||||
CFLAGS="$(CFLAGS)"; export CFLAGS; \
|
||||
CONFIG_SHELL="$(SHELL)"; export CONFIG_SHELL; \
|
||||
Index: gcc-8.5.0/gcc/Makefile.in
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/Makefile.in
|
||||
+++ gcc-8.5.0/gcc/Makefile.in
|
||||
@@ -801,7 +801,7 @@ BUILD_LDFLAGS=@BUILD_LDFLAGS@
|
||||
@@ -776,6 +781,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 efed1511750..778beb705b4 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 011c7ac2db6..2f1165f7b5e 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) \
|
||||
@@ -106,11 +106,11 @@ Index: gcc-8.5.0/gcc/Makefile.in
|
||||
|
||||
# Actual name to use when installing a native compiler.
|
||||
GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
|
||||
Index: gcc-8.5.0/gcc/configure
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure
|
||||
+++ gcc-8.5.0/gcc/configure
|
||||
@@ -11798,7 +11798,7 @@ else
|
||||
diff --git a/gcc/configure b/gcc/configure
|
||||
index 825a9652329..ff46cf58960 100755
|
||||
--- a/gcc/configure
|
||||
+++ b/gcc/configure
|
||||
@@ -12314,7 +12314,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}" \
|
||||
@@ -118,12 +118,12 @@ Index: gcc-8.5.0/gcc/configure
|
||||
+ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
|
||||
${realsrcdir}/configure \
|
||||
--enable-languages=${enable_languages-all} \
|
||||
--target=$target_alias --host=$build_alias --build=$build_alias
|
||||
Index: gcc-8.5.0/gcc/configure.ac
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/configure.ac
|
||||
+++ gcc-8.5.0/gcc/configure.ac
|
||||
@@ -1708,7 +1708,7 @@ else
|
||||
${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
|
||||
diff --git a/gcc/configure.ac b/gcc/configure.ac
|
||||
index 6099eb3251f..b3c345b61dc 100644
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -1898,7 +1898,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}" \
|
||||
@@ -131,4 +131,4 @@ Index: gcc-8.5.0/gcc/configure.ac
|
||||
+ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \
|
||||
${realsrcdir}/configure \
|
||||
--enable-languages=${enable_languages-all} \
|
||||
--target=$target_alias --host=$build_alias --build=$build_alias
|
||||
${enable_obsolete+--enable-obsolete="$enable_obsolete"} \
|
||||
@@ -1,7 +1,7 @@
|
||||
From 75da3cc9ca2d3de8c2062f23bf4f72415741ef83 Mon Sep 17 00:00:00 2001
|
||||
From 4e53d0ae70af85af0e112a48a3e4dfe4c39f4a8d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 2 Feb 2016 10:26:10 -0800
|
||||
Subject: [PATCH 30/40] nios2: Define MUSL_DYNAMIC_LINKER
|
||||
Subject: [PATCH] nios2: Define MUSL_DYNAMIC_LINKER
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
@@ -11,10 +11,10 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/config/nios2/linux.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/nios2/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/nios2/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/nios2/linux.h
|
||||
diff --git a/gcc/config/nios2/linux.h b/gcc/config/nios2/linux.h
|
||||
index 4bdcdcca1f0..e7943a9d640 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}"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From f715aeef294b85fa593ef69e6d0114cc7b15312b Mon Sep 17 00:00:00 2001
|
||||
From 5db0404eb770ac477fd99d444226bcf021067584 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 27 Jun 2017 18:10:54 -0700
|
||||
Subject: [PATCH 31/40] Add ssp_nonshared to link commandline for musl targets
|
||||
Subject: [PATCH] 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
|
||||
@@ -22,11 +22,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/config/rs6000/linux64.h | 10 ++++++++++
|
||||
3 files changed, 27 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/linux.h
|
||||
@@ -182,6 +182,13 @@ see the files COPYING3 and COPYING.RUNTI
|
||||
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
|
||||
index 0c1a8118a26..bdc2a2d0659 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 } \
|
||||
}
|
||||
@@ -40,11 +40,11 @@ Index: gcc-8.5.0/gcc/config/linux.h
|
||||
#endif
|
||||
|
||||
#if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
|
||||
Index: gcc-8.5.0/gcc/config/rs6000/linux.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/rs6000/linux.h
|
||||
+++ gcc-8.5.0/gcc/config/rs6000/linux.h
|
||||
@@ -92,6 +92,16 @@
|
||||
diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
|
||||
index b7026fcbee7..dd54d6c393e 100644
|
||||
--- a/gcc/config/rs6000/linux.h
|
||||
+++ b/gcc/config/rs6000/linux.h
|
||||
@@ -94,6 +94,16 @@
|
||||
" -m elf32ppclinux")
|
||||
#endif
|
||||
|
||||
@@ -61,11 +61,11 @@ Index: gcc-8.5.0/gcc/config/rs6000/linux.h
|
||||
#undef LINK_OS_LINUX_SPEC
|
||||
#define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \
|
||||
%{!static-pie: \
|
||||
Index: gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/rs6000/linux64.h
|
||||
+++ gcc-8.5.0/gcc/config/rs6000/linux64.h
|
||||
@@ -466,6 +466,16 @@ extern int dot_symbols;
|
||||
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
|
||||
index 967c1c43c63..dc5e4d97975 100644
|
||||
--- a/gcc/config/rs6000/linux64.h
|
||||
+++ b/gcc/config/rs6000/linux64.h
|
||||
@@ -452,6 +452,16 @@ extern int dot_symbols;
|
||||
" -m elf64ppc")
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 7e55147e8e609ace6f9eecd86a956636687671f0 Mon Sep 17 00:00:00 2001
|
||||
From fbc926dbf6a47fa623b9c94cd9b09a0e90448fdc Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 4 May 2016 21:11:34 -0700
|
||||
Subject: [PATCH 33/40] Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS
|
||||
Subject: [PATCH] Link libgcc using LDFLAGS, not just SHLIB_LDFLAGS
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
@@ -11,11 +11,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
libgcc/config/t-slibgcc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: gcc-8.5.0/libgcc/config/t-slibgcc
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/config/t-slibgcc
|
||||
+++ gcc-8.5.0/libgcc/config/t-slibgcc
|
||||
@@ -32,7 +32,7 @@ SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_S
|
||||
diff --git a/libgcc/config/t-slibgcc b/libgcc/config/t-slibgcc
|
||||
index c997553447c..330352c2c81 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 \
|
||||
@@ -1,7 +1,7 @@
|
||||
From 38d401fb6ab555d09f4a9a677721dde0743876e1 Mon Sep 17 00:00:00 2001
|
||||
From 24dc04dc8d69e3bf61322615b3ef18e02ccd311e Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Fri, 3 Feb 2017 12:56:00 -0800
|
||||
Subject: [PATCH 35/40] sync gcc stddef.h with musl
|
||||
Subject: [PATCH] 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
|
||||
@@ -13,11 +13,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/ginclude/stddef.h | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/ginclude/stddef.h
|
||||
+++ gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
@@ -134,6 +134,7 @@ _TYPE_wchar_t;
|
||||
diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
|
||||
index 9d67eac4947..6cb5edbedb4 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 */
|
||||
@@ -25,7 +25,7 @@ Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
#define _PTRDIFF_T
|
||||
#define _T_PTRDIFF_
|
||||
#define _T_PTRDIFF
|
||||
@@ -143,10 +144,12 @@ _TYPE_wchar_t;
|
||||
@@ -137,10 +138,12 @@ _TYPE_wchar_t;
|
||||
#define ___int_ptrdiff_t_h
|
||||
#define _GCC_PTRDIFF_T
|
||||
#define _PTRDIFF_T_DECLARED
|
||||
@@ -38,7 +38,7 @@ Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
#endif /* _PTRDIFF_T_DECLARED */
|
||||
#endif /* _GCC_PTRDIFF_T */
|
||||
#endif /* ___int_ptrdiff_t_h */
|
||||
@@ -184,6 +187,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
||||
@@ -178,6 +181,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_t;
|
||||
#ifndef _GCC_SIZE_T
|
||||
#ifndef _SIZET_
|
||||
#ifndef __size_t
|
||||
@@ -46,15 +46,15 @@ Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
#define __size_t__ /* BeOS */
|
||||
#define __SIZE_T__ /* Cray Unicos/Mk */
|
||||
#define _SIZE_T
|
||||
@@ -200,6 +204,7 @@ typedef __PTRDIFF_TYPE__ ptrdiff_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__) && (__FreeBSD__ >= 5)) \
|
||||
#if defined (__FreeBSD__) \
|
||||
|| defined(__DragonFly__) \
|
||||
|| defined(__FreeBSD_kernel__)
|
||||
@@ -235,6 +240,7 @@ typedef long ssize_t;
|
||||
|| defined(__FreeBSD_kernel__) \
|
||||
@@ -228,6 +233,7 @@ typedef long ssize_t;
|
||||
#endif /* _SIZE_T */
|
||||
#endif /* __SIZE_T__ */
|
||||
#endif /* __size_t__ */
|
||||
@@ -62,7 +62,7 @@ Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
#undef __need_size_t
|
||||
#endif /* _STDDEF_H or __need_size_t. */
|
||||
|
||||
@@ -264,6 +270,7 @@ typedef long ssize_t;
|
||||
@@ -257,6 +263,7 @@ typedef long ssize_t;
|
||||
#ifndef ___int_wchar_t_h
|
||||
#ifndef __INT_WCHAR_T_H
|
||||
#ifndef _GCC_WCHAR_T
|
||||
@@ -70,7 +70,7 @@ Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
#define __wchar_t__ /* BeOS */
|
||||
#define __WCHAR_T__ /* Cray Unicos/Mk */
|
||||
#define _WCHAR_T
|
||||
@@ -279,6 +286,7 @@ typedef long ssize_t;
|
||||
@@ -272,6 +279,7 @@ typedef long ssize_t;
|
||||
#define __INT_WCHAR_T_H
|
||||
#define _GCC_WCHAR_T
|
||||
#define _WCHAR_T_DECLARED
|
||||
@@ -78,7 +78,7 @@ Index: gcc-8.5.0/gcc/ginclude/stddef.h
|
||||
|
||||
/* 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
|
||||
@@ -344,6 +352,7 @@ typedef __WCHAR_TYPE__ wchar_t;
|
||||
@@ -337,6 +345,7 @@ typedef __WCHAR_TYPE__ wchar_t;
|
||||
#endif
|
||||
#endif /* __WCHAR_T__ */
|
||||
#endif /* __wchar_t__ */
|
||||
@@ -1,7 +1,7 @@
|
||||
From a9bb29a4e9b478f9b126e483467ce9031c33fe4f Mon Sep 17 00:00:00 2001
|
||||
From 27b8ba5555ada2dab076988529bfb84d00a4b901 Mon Sep 17 00:00:00 2001
|
||||
From: Juro Bystricky <juro.bystricky@intel.com>
|
||||
Date: Mon, 19 Mar 2018 22:31:20 -0700
|
||||
Subject: [PATCH 36/40] fix segmentation fault in precompiled header generation
|
||||
Subject: [PATCH] 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
|
||||
@@ -18,11 +18,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
libcpp/lex.c | 26 +++++++++++++++++++++-----
|
||||
1 file changed, 21 insertions(+), 5 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/libcpp/lex.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libcpp/lex.c
|
||||
+++ gcc-8.5.0/libcpp/lex.c
|
||||
@@ -3279,11 +3279,27 @@ cpp_spell_token (cpp_reader *pfile, cons
|
||||
diff --git a/libcpp/lex.c b/libcpp/lex.c
|
||||
index 56ac3a1dd73..73a951148b3 100644
|
||||
--- a/libcpp/lex.c
|
||||
+++ b/libcpp/lex.c
|
||||
@@ -3311,11 +3311,27 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token,
|
||||
spell_ident:
|
||||
case SPELL_IDENT:
|
||||
if (forstring)
|
||||
@@ -1,7 +1,7 @@
|
||||
From 1e5c1ef34d92b4157e1a24ca743d45f3a7375a5e Mon Sep 17 00:00:00 2001
|
||||
From 2512aacf023c679d86d8f40caff4f6ff412b32ff Mon Sep 17 00:00:00 2001
|
||||
From: RAGHUNATH LOLUR <raghunath.lolur@kpit.com>
|
||||
Date: Wed, 6 Dec 2017 22:52:26 -0800
|
||||
Subject: [PATCH 37/40] Fix for testsuite failure
|
||||
Subject: [PATCH] Fix for testsuite failure
|
||||
|
||||
2017-11-16 Raghunath Lolur <raghunath.lolur@kpit.com>
|
||||
|
||||
@@ -55,10 +55,10 @@ Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
||||
gcc/testsuite/gcc.target/i386/warn-vect-op-1.c | 2 +-
|
||||
17 files changed, 17 insertions(+), 16 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr56275.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.dg/pr56275.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.dg/pr56275.c
|
||||
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" } */
|
||||
@@ -67,10 +67,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr56275.c
|
||||
|
||||
typedef long long v2tw __attribute__ ((vector_size (2 * sizeof (long long))));
|
||||
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306-2.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.dg/pr68306-2.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306-2.c
|
||||
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" } */
|
||||
@@ -79,10 +79,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306-2.c
|
||||
|
||||
struct {
|
||||
int tz_minuteswest;
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306-3.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.dg/pr68306-3.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306-3.c
|
||||
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" } */
|
||||
@@ -91,10 +91,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306-3.c
|
||||
/* { dg-additional-options "-mno-altivec -mno-vsx" { target powerpc*-*-* } } */
|
||||
|
||||
extern void fn2();
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.dg/pr68306.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306.c
|
||||
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" } */
|
||||
@@ -103,10 +103,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr68306.c
|
||||
|
||||
enum powerpc_pmc_type { PPC_PMC_IBM };
|
||||
struct {
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr69634.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.dg/pr69634.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.dg/pr69634.c
|
||||
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" } */
|
||||
@@ -115,10 +115,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.dg/pr69634.c
|
||||
/* { dg-require-effective-target scheduling } */
|
||||
|
||||
typedef unsigned short u16;
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
|
||||
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" } */
|
||||
@@ -126,10 +126,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/amd64-abi-1.c
|
||||
/* { dg-additional-options "-mabi=sysv" { target *-*-mingw* } } */
|
||||
|
||||
double foo(void) { return 0; } /* { dg-error "SSE disabled" } */
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/funcspec-6.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/funcspec-6.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/funcspec-6.c
|
||||
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. */
|
||||
@@ -138,10 +138,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/funcspec-6.c
|
||||
|
||||
#include "funcspec-56.inc"
|
||||
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
|
||||
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 8561a3c26d6..6377f814645 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" } */
|
||||
@@ -149,10 +149,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/interrupt-387-err-1.c
|
||||
|
||||
typedef unsigned int uword_t __attribute__ ((mode (__word__)));
|
||||
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/isa-14.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/isa-14.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/isa-14.c
|
||||
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" } */
|
||||
@@ -160,10 +160,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/isa-14.c
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr44948-2b.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr44948-2b.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr44948-2b.c
|
||||
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" } */
|
||||
@@ -171,10 +171,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr44948-2b.c
|
||||
|
||||
struct A
|
||||
{
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr53425-1.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr53425-1.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr53425-1.c
|
||||
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 } } } */
|
||||
@@ -183,10 +183,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr53425-1.c
|
||||
/* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
|
||||
|
||||
typedef double __v2df __attribute__ ((__vector_size__ (16)));
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr53425-2.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr53425-2.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr53425-2.c
|
||||
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 } } } */
|
||||
@@ -195,10 +195,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr53425-2.c
|
||||
/* { dg-skip-if "no SSE vector" { x86_64-*-mingw* } } */
|
||||
|
||||
typedef float __v2sf __attribute__ ((__vector_size__ (8)));
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr55247.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr55247.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr55247.c
|
||||
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 } */
|
||||
@@ -207,10 +207,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr55247.c
|
||||
|
||||
typedef unsigned int uint32_t;
|
||||
typedef uint32_t Elf32_Word;
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr59644.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr59644.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr59644.c
|
||||
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 } } */
|
||||
@@ -219,10 +219,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr59644.c
|
||||
|
||||
/* This test uses __builtin_trap () instead of e.g. abort,
|
||||
because due to -mpreferred-stack-boundary=3 it should not call
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr62120.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr62120.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr62120.c
|
||||
diff --git a/gcc/testsuite/gcc.target/i386/pr62120.c b/gcc/testsuite/gcc.target/i386/pr62120.c
|
||||
index 28d85d37712..c93266bd4bc 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" } */
|
||||
@@ -230,10 +230,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr62120.c
|
||||
|
||||
void foo ()
|
||||
{
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr70467-1.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/pr70467-1.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr70467-1.c
|
||||
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 } */
|
||||
@@ -242,10 +242,10 @@ Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/pr70467-1.c
|
||||
|
||||
void foo (unsigned long long *);
|
||||
|
||||
Index: gcc-8.5.0/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
|
||||
+++ gcc-8.5.0/gcc/testsuite/gcc.target/i386/warn-vect-op-1.c
|
||||
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" } */
|
||||
@@ -1,7 +1,7 @@
|
||||
From f0bea96434ac478c3cff8c29dd97cccfac5b35e3 Mon Sep 17 00:00:00 2001
|
||||
From 3fc06241ce37e2e4b3ed21ace28d347eb511448d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 6 Jun 2018 12:10:22 -0700
|
||||
Subject: [PATCH 38/40] Re-introduce spe commandline options
|
||||
Subject: [PATCH] Re-introduce spe commandline options
|
||||
|
||||
This should ensure that we keep accepting
|
||||
spe options
|
||||
@@ -13,11 +13,11 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
gcc/config/rs6000/rs6000.opt | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/rs6000/rs6000.opt
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/rs6000/rs6000.opt
|
||||
+++ gcc-8.5.0/gcc/config/rs6000/rs6000.opt
|
||||
@@ -365,6 +365,18 @@ mdebug=
|
||||
diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt
|
||||
index f95b8279270..0e52d51409d 100644
|
||||
--- a/gcc/config/rs6000/rs6000.opt
|
||||
+++ b/gcc/config/rs6000/rs6000.opt
|
||||
@@ -344,6 +344,18 @@ mdebug=
|
||||
Target RejectNegative Joined
|
||||
-mdebug= Enable debug output.
|
||||
|
||||
@@ -33,6 +33,6 @@ Index: gcc-8.5.0/gcc/config/rs6000/rs6000.opt
|
||||
+Target RejectNegative Var(rs6000_spe_abi, 0)
|
||||
+Do not use the SPE ABI extensions.
|
||||
+
|
||||
; Altivec ABI
|
||||
mabi=altivec
|
||||
Target RejectNegative Var(rs6000_altivec_abi) Save
|
||||
Use the AltiVec ABI extensions.
|
||||
@@ -1,7 +1,8 @@
|
||||
From 46ca51dd413330bb8425b06283e7667bfb507c3d Mon Sep 17 00:00:00 2001
|
||||
From b42ff59c3fe2967d37815c8db72a47b9b7f585b4 Mon Sep 17 00:00:00 2001
|
||||
From: Szabolcs Nagy <nsz@port70.net>
|
||||
Date: Sat, 24 Oct 2015 20:09:53 +0000
|
||||
Subject: [PATCH 34/40] libgcc_s: Use alias for __cpu_indicator_init instead of symver
|
||||
Subject: [PATCH] libgcc_s: Use alias for __cpu_indicator_init instead of
|
||||
symver
|
||||
|
||||
Adapter from
|
||||
|
||||
@@ -25,23 +26,23 @@ gcc/Changelog:
|
||||
|
||||
2015-05-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||
|
||||
* config/i386/i386.c (ix86_expand_builtin): Make __builtin_cpu_init
|
||||
* config/i386/i386-expand.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@gmail.com>
|
||||
---
|
||||
gcc/config/i386/i386.c | 4 ++--
|
||||
gcc/config/i386/i386-expand.c | 4 ++--
|
||||
libgcc/config/i386/cpuinfo.c | 6 +++---
|
||||
libgcc/config/i386/t-linux | 2 +-
|
||||
3 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: gcc-8.5.0/gcc/config/i386/i386.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/gcc/config/i386/i386.c
|
||||
+++ gcc-8.5.0/gcc/config/i386/i386.c
|
||||
@@ -36509,10 +36509,10 @@ ix86_expand_builtin (tree exp, rtx targe
|
||||
diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c
|
||||
index 48f00c5fcfc..468f5f71fac 100644
|
||||
--- a/gcc/config/i386/i386-expand.c
|
||||
+++ b/gcc/config/i386/i386-expand.c
|
||||
@@ -10941,10 +10941,10 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
|
||||
{
|
||||
case IX86_BUILTIN_CPU_INIT:
|
||||
{
|
||||
@@ -54,11 +55,11 @@ Index: gcc-8.5.0/gcc/config/i386/i386.c
|
||||
call_expr = build_call_expr (fndecl, 0);
|
||||
return expand_expr (call_expr, target, mode, EXPAND_NORMAL);
|
||||
}
|
||||
Index: gcc-8.5.0/libgcc/config/i386/cpuinfo.c
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/config/i386/cpuinfo.c
|
||||
+++ gcc-8.5.0/libgcc/config/i386/cpuinfo.c
|
||||
@@ -485,7 +485,7 @@ __cpu_indicator_init (void)
|
||||
diff --git a/libgcc/config/i386/cpuinfo.c b/libgcc/config/i386/cpuinfo.c
|
||||
index 00322c58622..f42bbb8af98 100644
|
||||
--- a/libgcc/config/i386/cpuinfo.c
|
||||
+++ b/libgcc/config/i386/cpuinfo.c
|
||||
@@ -508,7 +508,7 @@ __cpu_indicator_init (void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -69,10 +70,10 @@ Index: gcc-8.5.0/libgcc/config/i386/cpuinfo.c
|
||||
+int __cpu_indicator_init_local (void)
|
||||
+ __attribute__ ((weak, alias ("__cpu_indicator_init")));
|
||||
#endif
|
||||
Index: gcc-8.5.0/libgcc/config/i386/t-linux
|
||||
===================================================================
|
||||
--- gcc-8.5.0.orig/libgcc/config/i386/t-linux
|
||||
+++ gcc-8.5.0/libgcc/config/i386/t-linux
|
||||
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
|
||||
@@ -0,0 +1,182 @@
|
||||
From 0395060a7dcf98c5f5a65103f6aaa71d6b862259 Mon Sep 17 00:00:00 2001
|
||||
From: Richard Purdie <richard.purdie@linuxfoundation.org>
|
||||
Date: Tue, 10 Mar 2020 08:26:53 -0700
|
||||
Subject: [PATCH] gentypes/genmodes: Do not use __LINE__ for maintaining
|
||||
reproducibility
|
||||
|
||||
Inserting line numbers into generated code means its not always reproducible wth
|
||||
differing versions of host gcc. Void the issue by not adding these.
|
||||
|
||||
Upstream-Status: Inappropriate [OE Reproducibility specific]
|
||||
|
||||
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
gcc/gengtype.c | 6 +++---
|
||||
gcc/genmodes.c | 32 ++++++++++++++++----------------
|
||||
2 files changed, 19 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
|
||||
index 981577481af..d5700fff401 100644
|
||||
--- a/gcc/gengtype.c
|
||||
+++ b/gcc/gengtype.c
|
||||
@@ -991,7 +991,7 @@ create_field_at (pair_p next, type_p type, const char *name, options_p opt,
|
||||
/* Create a fake field with the given type and name. NEXT is the next
|
||||
field in the chain. */
|
||||
#define create_field(next,type,name) \
|
||||
- create_field_all (next,type,name, 0, this_file, __LINE__)
|
||||
+ create_field_all (next,type,name, 0, this_file, 0)
|
||||
|
||||
/* Like create_field, but the field is only valid when condition COND
|
||||
is true. */
|
||||
@@ -1024,7 +1024,7 @@ create_optional_field_ (pair_p next, type_p type, const char *name,
|
||||
}
|
||||
|
||||
#define create_optional_field(next,type,name,cond) \
|
||||
- create_optional_field_(next,type,name,cond,__LINE__)
|
||||
+ create_optional_field_(next,type,name,cond,0)
|
||||
|
||||
/* Reverse a linked list of 'struct pair's in place. */
|
||||
pair_p
|
||||
@@ -5187,7 +5187,7 @@ main (int argc, char **argv)
|
||||
/* These types are set up with #define or else outside of where
|
||||
we can see them. We should initialize them before calling
|
||||
read_input_list. */
|
||||
-#define POS_HERE(Call) do { pos.file = this_file; pos.line = __LINE__; \
|
||||
+#define POS_HERE(Call) do { pos.file = this_file; pos.line = 0; \
|
||||
Call;} while (0)
|
||||
POS_HERE (do_scalar_typedef ("CUMULATIVE_ARGS", &pos));
|
||||
POS_HERE (do_scalar_typedef ("REAL_VALUE_TYPE", &pos));
|
||||
diff --git a/gcc/genmodes.c b/gcc/genmodes.c
|
||||
index bd78310ea24..dbd02c51a4c 100644
|
||||
--- a/gcc/genmodes.c
|
||||
+++ b/gcc/genmodes.c
|
||||
@@ -430,7 +430,7 @@ complete_all_modes (void)
|
||||
}
|
||||
|
||||
/* For each mode in class CLASS, construct a corresponding complex mode. */
|
||||
-#define COMPLEX_MODES(C) make_complex_modes (MODE_##C, __FILE__, __LINE__)
|
||||
+#define COMPLEX_MODES(C) make_complex_modes (MODE_##C, __FILE__, 0)
|
||||
static void
|
||||
make_complex_modes (enum mode_class cl,
|
||||
const char *file, unsigned int line)
|
||||
@@ -489,7 +489,7 @@ make_complex_modes (enum mode_class cl,
|
||||
having as many components as necessary. ORDER is the sorting order
|
||||
of the mode, with smaller numbers indicating a higher priority. */
|
||||
#define VECTOR_MODES_WITH_PREFIX(PREFIX, C, W, ORDER) \
|
||||
- make_vector_modes (MODE_##C, #PREFIX, W, ORDER, __FILE__, __LINE__)
|
||||
+ make_vector_modes (MODE_##C, #PREFIX, W, ORDER, __FILE__, 0)
|
||||
#define VECTOR_MODES(C, W) VECTOR_MODES_WITH_PREFIX (V, C, W, 0)
|
||||
static void ATTRIBUTE_UNUSED
|
||||
make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
|
||||
@@ -541,7 +541,7 @@ make_vector_modes (enum mode_class cl, const char *prefix, unsigned int width,
|
||||
/* Create a vector of booleans called NAME with COUNT elements and
|
||||
BYTESIZE bytes in total. */
|
||||
#define VECTOR_BOOL_MODE(NAME, COUNT, BYTESIZE) \
|
||||
- make_vector_bool_mode (#NAME, COUNT, BYTESIZE, __FILE__, __LINE__)
|
||||
+ make_vector_bool_mode (#NAME, COUNT, BYTESIZE, __FILE__, 0)
|
||||
static void ATTRIBUTE_UNUSED
|
||||
make_vector_bool_mode (const char *name, unsigned int count,
|
||||
unsigned int bytesize, const char *file,
|
||||
@@ -563,7 +563,7 @@ make_vector_bool_mode (const char *name, unsigned int count,
|
||||
/* Input. */
|
||||
|
||||
#define _SPECIAL_MODE(C, N) \
|
||||
- make_special_mode (MODE_##C, #N, __FILE__, __LINE__)
|
||||
+ make_special_mode (MODE_##C, #N, __FILE__, 0)
|
||||
#define RANDOM_MODE(N) _SPECIAL_MODE (RANDOM, N)
|
||||
#define CC_MODE(N) _SPECIAL_MODE (CC, N)
|
||||
|
||||
@@ -576,7 +576,7 @@ make_special_mode (enum mode_class cl, const char *name,
|
||||
|
||||
#define INT_MODE(N, Y) FRACTIONAL_INT_MODE (N, -1U, Y)
|
||||
#define FRACTIONAL_INT_MODE(N, B, Y) \
|
||||
- make_int_mode (#N, B, Y, __FILE__, __LINE__)
|
||||
+ make_int_mode (#N, B, Y, __FILE__, 0)
|
||||
|
||||
static void
|
||||
make_int_mode (const char *name,
|
||||
@@ -589,16 +589,16 @@ make_int_mode (const char *name,
|
||||
}
|
||||
|
||||
#define FRACT_MODE(N, Y, F) \
|
||||
- make_fixed_point_mode (MODE_FRACT, #N, Y, 0, F, __FILE__, __LINE__)
|
||||
+ make_fixed_point_mode (MODE_FRACT, #N, Y, 0, F, __FILE__, 0)
|
||||
|
||||
#define UFRACT_MODE(N, Y, F) \
|
||||
- make_fixed_point_mode (MODE_UFRACT, #N, Y, 0, F, __FILE__, __LINE__)
|
||||
+ make_fixed_point_mode (MODE_UFRACT, #N, Y, 0, F, __FILE__, 0)
|
||||
|
||||
#define ACCUM_MODE(N, Y, I, F) \
|
||||
- make_fixed_point_mode (MODE_ACCUM, #N, Y, I, F, __FILE__, __LINE__)
|
||||
+ make_fixed_point_mode (MODE_ACCUM, #N, Y, I, F, __FILE__, 0)
|
||||
|
||||
#define UACCUM_MODE(N, Y, I, F) \
|
||||
- make_fixed_point_mode (MODE_UACCUM, #N, Y, I, F, __FILE__, __LINE__)
|
||||
+ make_fixed_point_mode (MODE_UACCUM, #N, Y, I, F, __FILE__, 0)
|
||||
|
||||
/* Create a fixed-point mode by setting CL, NAME, BYTESIZE, IBIT, FBIT,
|
||||
FILE, and LINE. */
|
||||
@@ -619,7 +619,7 @@ make_fixed_point_mode (enum mode_class cl,
|
||||
|
||||
#define FLOAT_MODE(N, Y, F) FRACTIONAL_FLOAT_MODE (N, -1U, Y, F)
|
||||
#define FRACTIONAL_FLOAT_MODE(N, B, Y, F) \
|
||||
- make_float_mode (#N, B, Y, #F, __FILE__, __LINE__)
|
||||
+ make_float_mode (#N, B, Y, #F, __FILE__, 0)
|
||||
|
||||
static void
|
||||
make_float_mode (const char *name,
|
||||
@@ -636,7 +636,7 @@ make_float_mode (const char *name,
|
||||
#define DECIMAL_FLOAT_MODE(N, Y, F) \
|
||||
FRACTIONAL_DECIMAL_FLOAT_MODE (N, -1U, Y, F)
|
||||
#define FRACTIONAL_DECIMAL_FLOAT_MODE(N, B, Y, F) \
|
||||
- make_decimal_float_mode (#N, B, Y, #F, __FILE__, __LINE__)
|
||||
+ make_decimal_float_mode (#N, B, Y, #F, __FILE__, 0)
|
||||
|
||||
static void
|
||||
make_decimal_float_mode (const char *name,
|
||||
@@ -651,7 +651,7 @@ make_decimal_float_mode (const char *name,
|
||||
}
|
||||
|
||||
#define RESET_FLOAT_FORMAT(N, F) \
|
||||
- reset_float_format (#N, #F, __FILE__, __LINE__)
|
||||
+ reset_float_format (#N, #F, __FILE__, 0)
|
||||
static void ATTRIBUTE_UNUSED
|
||||
reset_float_format (const char *name, const char *format,
|
||||
const char *file, unsigned int line)
|
||||
@@ -672,7 +672,7 @@ reset_float_format (const char *name, const char *format,
|
||||
|
||||
/* __intN support. */
|
||||
#define INT_N(M,PREC) \
|
||||
- make_int_n (#M, PREC, __FILE__, __LINE__)
|
||||
+ make_int_n (#M, PREC, __FILE__, 0)
|
||||
static void ATTRIBUTE_UNUSED
|
||||
make_int_n (const char *m, int bitsize,
|
||||
const char *file, unsigned int line)
|
||||
@@ -701,7 +701,7 @@ make_int_n (const char *m, int bitsize,
|
||||
/* Partial integer modes are specified by relation to a full integer
|
||||
mode. */
|
||||
#define PARTIAL_INT_MODE(M,PREC,NAME) \
|
||||
- make_partial_integer_mode (#M, #NAME, PREC, __FILE__, __LINE__)
|
||||
+ make_partial_integer_mode (#M, #NAME, PREC, __FILE__, 0)
|
||||
static void ATTRIBUTE_UNUSED
|
||||
make_partial_integer_mode (const char *base, const char *name,
|
||||
unsigned int precision,
|
||||
@@ -728,7 +728,7 @@ make_partial_integer_mode (const char *base, const char *name,
|
||||
/* A single vector mode can be specified by naming its component
|
||||
mode and the number of components. */
|
||||
#define VECTOR_MODE(C, M, N) \
|
||||
- make_vector_mode (MODE_##C, #M, N, __FILE__, __LINE__);
|
||||
+ make_vector_mode (MODE_##C, #M, N, __FILE__, 0);
|
||||
static void ATTRIBUTE_UNUSED
|
||||
make_vector_mode (enum mode_class bclass,
|
||||
const char *base,
|
||||
@@ -771,7 +771,7 @@ make_vector_mode (enum mode_class bclass,
|
||||
|
||||
/* Adjustability. */
|
||||
#define _ADD_ADJUST(A, M, X, C1, C2) \
|
||||
- new_adjust (#M, &adj_##A, #A, #X, MODE_##C1, MODE_##C2, __FILE__, __LINE__)
|
||||
+ new_adjust (#M, &adj_##A, #A, #X, MODE_##C1, MODE_##C2, __FILE__, 0)
|
||||
|
||||
#define ADJUST_NUNITS(M, X) _ADD_ADJUST (nunits, M, X, RANDOM, RANDOM)
|
||||
#define ADJUST_BYTESIZE(M, X) _ADD_ADJUST (bytesize, M, X, RANDOM, RANDOM)
|
||||
@@ -0,0 +1,26 @@
|
||||
From 6f87a095f0e696bec07a50df789c9db8bdbca43d Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Tue, 12 May 2020 10:39:09 -0700
|
||||
Subject: [PATCH] mingw32: Enable operation_not_supported
|
||||
|
||||
Fixes nativesdk build errors on mingw32 gcc-runtime
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
libstdc++-v3/config/os/mingw32/error_constants.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libstdc++-v3/config/os/mingw32/error_constants.h b/libstdc++-v3/config/os/mingw32/error_constants.h
|
||||
index 68ac72a78fb..71cd5815b81 100644
|
||||
--- a/libstdc++-v3/config/os/mingw32/error_constants.h
|
||||
+++ b/libstdc++-v3/config/os/mingw32/error_constants.h
|
||||
@@ -107,7 +107,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
#ifdef EPERM
|
||||
operation_not_permitted = EPERM,
|
||||
#endif
|
||||
-// operation_not_supported = EOPNOTSUPP,
|
||||
+ operation_not_supported = EOPNOTSUPP,
|
||||
#ifdef EWOULDBLOCK
|
||||
operation_would_block = EWOULDBLOCK,
|
||||
#endif
|
||||
@@ -0,0 +1,42 @@
|
||||
From 38d262bfe7c0c894c364dc6e4dc7971e78a73974 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Wed, 13 May 2020 15:10:38 -0700
|
||||
Subject: [PATCH] libatomic: Do not enforce march on aarch64
|
||||
|
||||
OE passes the right options via gcc compiler cmdline via TUNE_CCARGS
|
||||
this can conflict between -mcpu settings and -march setting here, since
|
||||
-mcpu will translate into an appropriate -march, lets depend on that
|
||||
instead of setting it explicitly
|
||||
|
||||
Upstream-Status: Inappropriate [OE-Specific]
|
||||
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
---
|
||||
libatomic/Makefile.am | 1 -
|
||||
libatomic/Makefile.in | 1 -
|
||||
2 files changed, 2 deletions(-)
|
||||
|
||||
diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
|
||||
index 133fbbca77e..ac1ca645876 100644
|
||||
--- a/libatomic/Makefile.am
|
||||
+++ b/libatomic/Makefile.am
|
||||
@@ -125,7 +125,6 @@ libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix _$(s)_.lo,$(SIZEOBJS)))
|
||||
## On a target-specific basis, include alternates to be selected by IFUNC.
|
||||
if HAVE_IFUNC
|
||||
if ARCH_AARCH64_LINUX
|
||||
-IFUNC_OPTIONS = -march=armv8-a+lse
|
||||
libatomic_la_LIBADD += $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
|
||||
endif
|
||||
if ARCH_ARM_LINUX
|
||||
diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
|
||||
index a51807e95c9..97df2d7ff03 100644
|
||||
--- a/libatomic/Makefile.in
|
||||
+++ b/libatomic/Makefile.in
|
||||
@@ -431,7 +431,6 @@ M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
|
||||
libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
|
||||
_$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
|
||||
$(am__append_3) $(am__append_4)
|
||||
-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
|
||||
@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
|
||||
@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
|
||||
@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16
|
||||
@@ -1,5 +1,5 @@
|
||||
require gcc-${PV}.inc
|
||||
require gcc-8-target.inc
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require gcc-for-nvcc-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
|
||||
@@ -1,4 +0,0 @@
|
||||
require gcc-${PV}.inc
|
||||
require gcc-8-source.inc
|
||||
|
||||
EXCLUDE_FROM_WORLD = "1"
|
||||
@@ -1,6 +1,6 @@
|
||||
BPN = "libgcc"
|
||||
|
||||
require gcc-8-configure-common.inc
|
||||
require gcc-for-nvcc-configure-common.inc
|
||||
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
|
||||
@@ -41,14 +41,19 @@ do_install () {
|
||||
}
|
||||
|
||||
do_install:append:libc-baremetal () {
|
||||
if [ "${base_libdir}" != "${libdir}" ]; then
|
||||
rmdir ${D}${base_libdir}
|
||||
fi
|
||||
}
|
||||
do_install:append:libc-newlib () {
|
||||
if [ "${base_libdir}" != "${libdir}" ]; then
|
||||
rmdir ${D}${base_libdir}
|
||||
fi
|
||||
}
|
||||
|
||||
# No rpm package is actually created but -dev depends on it, avoid dnf error
|
||||
RDEPENDS:${PN}-dev = ""
|
||||
RDEPENDS:${PN}-dev:libc-baremetal = ""
|
||||
RDEPENDS:${PN}-dev:libc-newlib = ""
|
||||
|
||||
BBCLASSEXTEND = "nativesdk"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
# any exception handler, we can safely symlink to libgcc.a.
|
||||
#
|
||||
|
||||
require libgcc-8-common.inc
|
||||
require libgcc-for-nvcc-common.inc
|
||||
|
||||
DEPENDS = "virtual/${TARGET_PREFIX}gcc"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require gcc-${PV}.inc
|
||||
require libgcc-8-initial.inc
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require libgcc-for-nvcc-initial.inc
|
||||
|
||||
# Building with thumb enabled on armv6t fails
|
||||
ARM_INSTRUCTION_SET:armv6 = "arm"
|
||||
@@ -1,4 +1,4 @@
|
||||
require libgcc-8-common.inc
|
||||
require libgcc-for-nvcc-common.inc
|
||||
|
||||
DEPENDS = "virtual/${TARGET_PREFIX}cuda-gcc virtual/${TARGET_PREFIX}cuda-g++ virtual/${MLPREFIX}libc"
|
||||
STAGING_BINDIR_TOOLCHAIN:append = "-${BINV}"
|
||||
@@ -1,5 +1,5 @@
|
||||
require gcc-${PV}.inc
|
||||
require libgcc-8.inc
|
||||
require gcc-for-nvcc-${PV}.inc
|
||||
require libgcc-for-nvcc.inc
|
||||
|
||||
# Building with thumb enabled on armv6t fails
|
||||
ARM_INSTRUCTION_SET:armv6 = "arm"
|
||||
Reference in New Issue
Block a user