From eaab39c3c9f7cde105b61c58bc1c97945224ab5af0e094fb3ee8603e96b8c532 Mon Sep 17 00:00:00 2001 From: Martin Pluskal Date: Mon, 7 Nov 2022 08:32:40 +0000 Subject: [PATCH] Accepting request 1033712 from home:lwfinger:branches:devel:tools:compiler - Modify yasm to support .note.gnu.property note section This feature is needed to build VirtualBox-7.0.x. Patch from https://src.fedoraproject.org/rpms/yasm/pull-request/1#_2. File "yasm-Update-elf-objfmt.c.patch" added. OBS-URL: https://build.opensuse.org/request/show/1033712 OBS-URL: https://build.opensuse.org/package/show/devel:tools:compiler/yasm?expand=0&rev=33 --- yasm-Update-elf-objfmt.c.patch | 29 +++++++++++++++++++++++++++++ yasm.changes | 7 +++++++ yasm.spec | 4 +++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 yasm-Update-elf-objfmt.c.patch diff --git a/yasm-Update-elf-objfmt.c.patch b/yasm-Update-elf-objfmt.c.patch new file mode 100644 index 0000000..f627154 --- /dev/null +++ b/yasm-Update-elf-objfmt.c.patch @@ -0,0 +1,29 @@ +From: kalebskeithley <kaleb@redhat.com> +Date: Thu, 21 May 2020 09:12:36 -0400 +Subject: [PATCH] Update elf-objfmt.c + +tl;dnr: add support for note.gnu.property note sections. + +ceph has a few optimized crc32 routines hand written in assembly in yasm format. (Nobody appears to have the stomach for rewriting them in another format.) Fedora requires that libraries be CET enabled. IOW all .o comprising a shared library need a note.gnu.properties NOTE section with some magic bits that tell the linker that the .o was compiled with the appropriate options. + +I can add such a note section, but without this change yasm will not set the correct section flag and I have to resort to some dd magic to set the correct section type before linking all the .o files into the shlib. +--- + modules/objfmts/elf/elf-objfmt.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules/objfmts/elf/elf-objfmt.c b/modules/objfmts/elf/elf-objfmt.c +index 0c3a1426..c4360c03 100644 +--- a/modules/objfmts/elf/elf-objfmt.c ++++ b/modules/objfmts/elf/elf-objfmt.c +@@ -1077,6 +1077,10 @@ elf_objfmt_section_switch(yasm_object *object, yasm_valparamhead *valparams, + align = 0; + data.type = SHT_PROGBITS; + data.flags = 0; ++ } else if (strcmp(sectname, ".note.gnu.property") == 0) { ++ align = 8; ++ data.type = SHT_NOTE; ++ data.flags = 0; + } else { + /* Default to code */ + align = 1; + diff --git a/yasm.changes b/yasm.changes index 596f865..9221318 100644 --- a/yasm.changes +++ b/yasm.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Sat Nov 5 17:18:41 UTC 2022 - Larry Finger + +- Modify yasm to support .note.gnu.property note section + Patch from https://src.fedoraproject.org/rpms/yasm/pull-request/1#_2. + File "yasm-Update-elf-objfmt.c.patch" added. + ------------------------------------------------------------------- Fri Aug 2 08:22:42 UTC 2019 - Martin Liška diff --git a/yasm.spec b/yasm.spec index fcce15b..a5513d9 100644 --- a/yasm.spec +++ b/yasm.spec @@ -1,7 +1,7 @@ # # spec file for package yasm # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -27,6 +27,7 @@ Source: http://www.tortall.net/projects/yasm/releases/yasm-%{version}.ta Patch0: %{name}-no-build-date.patch Patch1: %{name}-no-rpm-opt-flags.patch Patch2: yasm-re2c-nogendate.patch +Patch3: yasm-Update-elf-objfmt.c.patch BuildRequires: python3-devel BuildRequires: xmlto @@ -51,6 +52,7 @@ libyasm. %patch0 -p1 %patch1 %patch2 -p1 +%patch3 -p1 %build %global _lto_cflags %{_lto_cflags} -ffat-lto-objects