diff --git a/PKGBUILD b/PKGBUILD index 56455ac..3d5ecba 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -273,7 +273,7 @@ fi pkgname=("${_pkgname_array[@]}") pkgver=$_driver_version -pkgrel=209 +pkgrel=210 arch=('x86_64') url="http://www.nvidia.com/" license=('custom:NVIDIA') @@ -301,6 +301,7 @@ source=($_source_name 'nvidia-utils-tkg.sysusers' '60-nvidia.rules' 'nvidia-tkg.hook' + 'nvidia-open-gcc-ibt-sls.diff' 'linux-version.diff' # include linux version '01-ipmi-vm.diff' # ipmi & vm patch for older than 415.22 releases (2018.12.7) (396.xx) '02-ipmi-vm.diff' # ipmi & vm patch for older than 415.22 releases (2018.12.7) (addon for 410+) @@ -341,6 +342,7 @@ md5sums=("$_md5sum" '3d2894e71d81570bd00bce416d3e547d' '3d32130235acc5ab514e1021f7f5c439' '651328cb5a86f5bb44a4ebc30290e925' + '9b1543768ea75320fd0d2315de66d1c8' '7a825f41ada7e106c8c0b713a49b3bfa' 'd961d1dce403c15743eecfe3201e4b6a' '14460615a9d4e247c8d9bcae8776ed48' @@ -431,6 +433,10 @@ prepare() { if [ "$_open_source_modules" = "true" ]; then cd open-gpu-kernel-modules-${pkgver} + + # Fix for https://bugs.archlinux.org/task/74886 + patch -Np1 --no-backup-if-mismatch -i "$srcdir"/nvidia-open-gcc-ibt-sls.diff + # Attempt to make this reproducible sed -i "s/^HOSTNAME.*/HOSTNAME = echo archlinux"/ utils.mk sed -i "s/^WHOAMI.*/WHOAMI = echo archlinux-builder"/ utils.mk diff --git a/patches/nvidia-open-gcc-ibt-sls.diff b/patches/nvidia-open-gcc-ibt-sls.diff new file mode 100644 index 0000000..2bbaa2f --- /dev/null +++ b/patches/nvidia-open-gcc-ibt-sls.diff @@ -0,0 +1,28 @@ +diff --git a/src/nvidia-modeset/Makefile b/src/nvidia-modeset/Makefile +index c63b86b..a67d2fc 100644 +--- a/src/nvidia-modeset/Makefile ++++ b/src/nvidia-modeset/Makefile +@@ -95,7 +95,8 @@ CFLAGS += -ffunction-sections + CFLAGS += -fdata-sections + CFLAGS += -ffreestanding + +-CONDITIONAL_CFLAGS := $(call TEST_CC_ARG, -fcf-protection=none) ++CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -fcf-protection=branch) ++CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -mharden-sls=all) + CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -Wformat-overflow=2) + CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -Wformat-truncation=1) + ifeq ($(TARGET_ARCH),x86_64) +diff --git a/src/nvidia/Makefile b/src/nvidia/Makefile +index 9bdb826..3f1e330 100644 +--- a/src/nvidia/Makefile ++++ b/src/nvidia/Makefile +@@ -119,7 +119,8 @@ CFLAGS += -fdata-sections + NV_KERNEL_O_LDFLAGS += --gc-sections + EXPORTS_LINK_COMMAND = exports_link_command.txt + +-CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -fcf-protection=none) ++CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -fcf-protection=branch -mindirect-branch-register) ++CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -mharden-sls=all) + + ifeq ($(TARGET_ARCH),x86_64) + CONDITIONAL_CFLAGS += $(call TEST_CC_ARG, -mindirect-branch-register)