From ee5b2936e4783c9e8d7ce353452ed06953bbd612 Mon Sep 17 00:00:00 2001 From: Maciej Wójcik Date: Wed, 8 Mar 2023 22:29:57 +0100 Subject: gcc: Patch building of GCC 5.1-12.1 with glibc >= 2.36 (#35798) --- .../gcc/glibc-2.36-libsanitizer-gcc-10-12.patch | 27 ++++++++++++++++++++++ .../gcc/glibc-2.36-libsanitizer-gcc-5-9.patch | 27 ++++++++++++++++++++++ var/spack/repos/builtin/packages/gcc/package.py | 5 ++++ 3 files changed, 59 insertions(+) create mode 100644 var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-10-12.patch create mode 100644 var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-5-9.patch diff --git a/var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-10-12.patch b/var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-10-12.patch new file mode 100644 index 0000000000..90df6b0486 --- /dev/null +++ b/var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-10-12.patch @@ -0,0 +1,27 @@ +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +index badf6a401cc..b43733033a6 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp +@@ -72,7 +72,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -822,10 +821,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; + unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; + #endif +- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; +- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; +- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; +- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; ++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); ++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); ++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); ++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); + unsigned IOCTL_GIO_CMAP = GIO_CMAP; + unsigned IOCTL_GIO_FONT = GIO_FONT; + unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; diff --git a/var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-5-9.patch b/var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-5-9.patch new file mode 100644 index 0000000000..2cd2bc4e5b --- /dev/null +++ b/var/spack/repos/builtin/packages/gcc/glibc-2.36-libsanitizer-gcc-5-9.patch @@ -0,0 +1,27 @@ +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index e8fce8a02..5122baa46 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -65,7 +65,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -846,10 +845,10 @@ unsigned struct_ElfW_Phdr_sz = sizeof(Elf_Phdr); + unsigned IOCTL_EVIOCGPROP = IOCTL_NOT_PRESENT; + unsigned IOCTL_EVIOCSKEYCODE_V2 = IOCTL_NOT_PRESENT; + #endif +- unsigned IOCTL_FS_IOC_GETFLAGS = FS_IOC_GETFLAGS; +- unsigned IOCTL_FS_IOC_GETVERSION = FS_IOC_GETVERSION; +- unsigned IOCTL_FS_IOC_SETFLAGS = FS_IOC_SETFLAGS; +- unsigned IOCTL_FS_IOC_SETVERSION = FS_IOC_SETVERSION; ++ unsigned IOCTL_FS_IOC_GETFLAGS = _IOR('f', 1, long); ++ unsigned IOCTL_FS_IOC_GETVERSION = _IOR('v', 1, long); ++ unsigned IOCTL_FS_IOC_SETFLAGS = _IOW('f', 2, long); ++ unsigned IOCTL_FS_IOC_SETVERSION = _IOW('v', 2, long); + unsigned IOCTL_GIO_CMAP = GIO_CMAP; + unsigned IOCTL_GIO_FONT = GIO_FONT; + unsigned IOCTL_GIO_UNIMAP = GIO_UNIMAP; diff --git a/var/spack/repos/builtin/packages/gcc/package.py b/var/spack/repos/builtin/packages/gcc/package.py index 516c8df9da..15826825ec 100644 --- a/var/spack/repos/builtin/packages/gcc/package.py +++ b/var/spack/repos/builtin/packages/gcc/package.py @@ -438,6 +438,11 @@ class Gcc(AutotoolsPackage, GNUMirrorPackage): ) patch("patch-745dae5923aba02982563481d75a21595df22ff8.patch", when="@10.1.0:10.3.0,11.1.0") + # Backport libsanitizer patch for glibc >= 2.36 + # https://reviews.llvm.org/D129471 + patch("glibc-2.36-libsanitizer-gcc-5-9.patch", when="@5.1:5.5,6.1:6.5,7.1:7.5,8.1:8.5,9.1:9.5") + patch("glibc-2.36-libsanitizer-gcc-10-12.patch", when="@10.1:10.4,11.1:11.3,12.1.0") + # Older versions do not compile with newer versions of glibc # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81712 patch("ucontext_t.patch", when="@4.9,5.1:5.4,6.1:6.4,7.1") -- cgit v1.2.3-60-g2f50