Avoid asm.S usage on various Linux architectures

Resolves: RHEL-31139
This commit is contained in:
Christian Hergert 2024-06-12 11:25:43 -07:00
parent 90131d00e1
commit 9b6022ca7e
2 changed files with 41 additions and 0 deletions

39
avoid-asm.patch Normal file
View File

@ -0,0 +1,39 @@
From 95b957d5381ae6b313333f50bb941e9970d55127 Mon Sep 17 00:00:00 2001
From: Christian Hergert <chergert@redhat.com>
Date: Wed, 12 Jun 2024 11:17:52 -0700
Subject: [PATCH] build: avoid asm.S on general Linux when possible
We only use asm.S when on mips when we're on Linux. Removing this means
for the other Linux cases means the compiler can automatically enable some
features we might want like CET for indirect branches.
---
src/meson.build | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/meson.build b/src/meson.build
index 2967968..4a106a1 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -91,10 +91,18 @@ if host_machine.system() != 'windows'
# Not really used on Windows now, see also
# https://github.com/mesonbuild/meson/issues/4366
libdex_sources += [
- 'asm.S',
'dex-unix-signal.c',
'dex-ucontext.c',
]
+
+ # If we're on Linux and mips we might still need asm.S.
+ # But otherwise linux can do it all without any custom
+ # assembler. Failure to do this might result in CET being
+ # disabled for the process by GCC.
+ if host_machine.system() != 'linux' or host_machine.cpu_family() == 'mips'
+ libdex_sources += ['asm.S']
+ endif
+
libdex_headers += ['dex-unix-signal.h']
endif
--
2.45.1

View File

@ -7,6 +7,8 @@ License: LGPL-2.1-or-later
URL: https://gitlab.gnome.org/GNOME/libdex
Source0: https://download.gnome.org/sources/libdex/0.6/%{name}-%{version}.tar.xz
Patch0: avoid-asm.patch
BuildRequires: /usr/bin/vapigen
BuildRequires: gcc
BuildRequires: gi-docgen