From 6e9fd1c3ba6bf486a044ed9d640a77dd50b6cbc2 Mon Sep 17 00:00:00 2001 From: John Audia Date: Thu, 21 May 2026 08:53:52 -0400 Subject: [PATCH] elfutils: update to 0.195 Patches rebased: - 003-libintl-compatibility.patch - 005-build_only_libs.patch - 006-Fix-build-on-aarch64-musl.patch - 101-no-fts.patch Patches removed due being upstreamed: - 007-add-libeu-symbols-to-libelf.patch - 008-fix-autoconf-ENABLE_IMA_VERIFICATION.patch - 009-fix-null-dereference-with-lto.patch - 102-fix-potential-deref-of-null-error.patch Note that this release is needed in order to build against GCC 16.1 https://github.com/openwrt/openwrt/pull/23194 Release notes from 0.192 to 0.195: https://inbox.sourceware.org/elfutils-devel/CAJDtP-RjuT13zehLgSvz9TnwQZ1VYPOS=q_kuut5a2g+KLamgw@mail.gmail.com/T/ https://inbox.sourceware.org/elfutils-devel/CAJDtP-S0rYAOZQeDZvMtPkQztgK9RboWtYwpqNLCNGNdaSGn-A@mail.gmail.com/T/ https://inbox.sourceware.org/elfutils-devel/CAJDtP-Qok4ViNzvrr28WgkCCqrFH0iAZStiD8C7nbpDhrPzLWA@mail.gmail.com/T/ Signed-off-by: John Audia Link: https://github.com/openwrt/openwrt/pull/23468 Signed-off-by: Hauke Mehrtens --- package/libs/elfutils/Makefile | 6 +- .../patches/003-libintl-compatibility.patch | 2 +- .../patches/005-build_only_libs.patch | 8 +- .../006-Fix-build-on-aarch64-musl.patch | 2 +- .../007-add-libeu-symbols-to-libelf.patch | 31 --- ...fix-autoconf-ENABLE_IMA_VERIFICATION.patch | 24 --- .../009-fix-null-dereference-with-lto.patch | 193 ------------------ .../libs/elfutils/patches/101-no-fts.patch | 2 +- ...02-fix-potential-deref-of-null-error.patch | 55 ----- 9 files changed, 10 insertions(+), 313 deletions(-) delete mode 100644 package/libs/elfutils/patches/007-add-libeu-symbols-to-libelf.patch delete mode 100644 package/libs/elfutils/patches/008-fix-autoconf-ENABLE_IMA_VERIFICATION.patch delete mode 100644 package/libs/elfutils/patches/009-fix-null-dereference-with-lto.patch delete mode 100644 package/libs/elfutils/patches/102-fix-potential-deref-of-null-error.patch diff --git a/package/libs/elfutils/Makefile b/package/libs/elfutils/Makefile index 4507a010890..030392b54e8 100644 --- a/package/libs/elfutils/Makefile +++ b/package/libs/elfutils/Makefile @@ -7,13 +7,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=elfutils -PKG_VERSION:=0.192 -PKG_RELEASE:=2 +PKG_VERSION:=0.195 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=https://sourceware.org/$(PKG_NAME)/ftp/$(PKG_VERSION) \ https://mirrors.kernel.org/sourceware/$(PKG_NAME)/$(PKG_VERSION) -PKG_HASH:=616099beae24aba11f9b63d86ca6cc8d566d968b802391334c91df54eab416b4 +PKG_HASH:=37629fdf7f1f3dc2818e138fca2b8094177d6c2d0f701d3bb650a561218dc026 PKG_MAINTAINER:=Luiz Angelo Daros de Luca PKG_LICENSE:=GPL-2.0-or-later LGPL-3.0-or-later diff --git a/package/libs/elfutils/patches/003-libintl-compatibility.patch b/package/libs/elfutils/patches/003-libintl-compatibility.patch index eda9f2204a9..655f8f3cfe5 100644 --- a/package/libs/elfutils/patches/003-libintl-compatibility.patch +++ b/package/libs/elfutils/patches/003-libintl-compatibility.patch @@ -11,7 +11,7 @@ Requires.private: zlib @LIBZSTD@ --- a/configure.ac +++ b/configure.ac -@@ -728,6 +728,9 @@ dnl AM_GNU_GETTEXT_REQUIRE_VERSION suppo +@@ -788,6 +788,9 @@ dnl AM_GNU_GETTEXT_REQUIRE_VERSION suppo AM_GNU_GETTEXT_VERSION([0.19.6]) AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6]) diff --git a/package/libs/elfutils/patches/005-build_only_libs.patch b/package/libs/elfutils/patches/005-build_only_libs.patch index 177ac659e62..2d68b3e7a58 100644 --- a/package/libs/elfutils/patches/005-build_only_libs.patch +++ b/package/libs/elfutils/patches/005-build_only_libs.patch @@ -1,11 +1,11 @@ --- a/Makefile.am +++ b/Makefile.am -@@ -27,7 +27,7 @@ AM_MAKEFLAGS = --no-print-directory +@@ -29,7 +29,7 @@ AM_MAKEFLAGS = --no-print-directory pkginclude_HEADERS = version.h - SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl libdw \ -- libasm debuginfod src po doc tests -+ libasm + SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl \ +- libdwfl_stacktrace libdw libasm debuginfod src po doc tests ++ libdwfl_stacktrace libdw libasm EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING SECURITY \ COPYING COPYING-GPLV2 COPYING-LGPLV3 CONDUCT diff --git a/package/libs/elfutils/patches/006-Fix-build-on-aarch64-musl.patch b/package/libs/elfutils/patches/006-Fix-build-on-aarch64-musl.patch index a7786ed2c01..bd387e7a66a 100644 --- a/package/libs/elfutils/patches/006-Fix-build-on-aarch64-musl.patch +++ b/package/libs/elfutils/patches/006-Fix-build-on-aarch64-musl.patch @@ -33,7 +33,7 @@ Signed-off-by: Hongxu Jia # include # include # include -@@ -94,7 +94,7 @@ aarch64_set_initial_registers_tid (pid_t +@@ -115,7 +115,7 @@ aarch64_set_initial_registers_tid (pid_t Dwarf_Word dwarf_fregs[32]; for (int r = 0; r < 32; r++) diff --git a/package/libs/elfutils/patches/007-add-libeu-symbols-to-libelf.patch b/package/libs/elfutils/patches/007-add-libeu-symbols-to-libelf.patch deleted file mode 100644 index 23489b56257..00000000000 --- a/package/libs/elfutils/patches/007-add-libeu-symbols-to-libelf.patch +++ /dev/null @@ -1,31 +0,0 @@ -From f5d6e088f84dd05278c4698a21cbf1ff4569978d Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Tue, 22 Oct 2024 15:03:42 +0200 -Subject: [PATCH] libelf: Add libeu objects to libelf.a static archive - -libelf might use some symbols from libeu.a, specifically the eu-search -wrappers. But we don't ship libeu.a separately. So include the libeu -objects in the libelf.a archive to facilitate static linking. - - * libelf/Makefile.am (libeu_objects): New variable. - (libelf_a_LIBADD): New, add libeu_objects. - -https://sourceware.org/bugzilla/show_bug.cgi?id=32293 - -Signed-off-by: Mark Wielaard ---- - libelf/Makefile.am | 3 +++ - 1 file changed, 3 insertions(+) - ---- a/libelf/Makefile.am -+++ b/libelf/Makefile.am -@@ -122,6 +122,9 @@ libelf.so: $(srcdir)/libelf.map $(libelf - @$(textrel_check) - $(AM_V_at)ln -fs $@ $@.$(VERSION) - -+libeu_objects = $(shell $(AR) t ../lib/libeu.a) -+libelf_a_LIBADD = $(addprefix ../lib/,$(libeu_objects)) -+ - install: install-am libelf.so - $(mkinstalldirs) $(DESTDIR)$(libdir) - $(INSTALL_PROGRAM) libelf.so $(DESTDIR)$(libdir)/libelf-$(PACKAGE_VERSION).so diff --git a/package/libs/elfutils/patches/008-fix-autoconf-ENABLE_IMA_VERIFICATION.patch b/package/libs/elfutils/patches/008-fix-autoconf-ENABLE_IMA_VERIFICATION.patch deleted file mode 100644 index e5732d2b082..00000000000 --- a/package/libs/elfutils/patches/008-fix-autoconf-ENABLE_IMA_VERIFICATION.patch +++ /dev/null @@ -1,24 +0,0 @@ -From f3c664d069d81a4872a1ec8241ee709f37c53e9c Mon Sep 17 00:00:00 2001 -From: Aaron Merey -Date: Tue, 29 Oct 2024 14:16:57 -0400 -Subject: [PATCH] configure.ac: Fix ENABLE_IMA_VERIFICATION conditional - -Fix test statement for ENABLE_IMA_VERIFICATION always evalutating to -false due to a missing 'x'. - -Signed-off-by: Aaron Merey ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/configure.ac -+++ b/configure.ac -@@ -895,7 +895,7 @@ AS_IF([test "x$enable_debuginfod" != "xn - AM_CONDITIONAL([DEBUGINFOD],[test "x$enable_debuginfod" = "xyes"]) - AS_IF([test "x$enable_debuginfod_ima_verification" = "xyes"],AC_DEFINE([ENABLE_IMA_VERIFICATION],[1],[Build IMA verification])) - AS_IF([test "x$have_libarchive" = "xyes"],AC_DEFINE([HAVE_LIBARCHIVE],[1],[Define to 1 if libarchive is available])) --AM_CONDITIONAL([ENABLE_IMA_VERIFICATION],[test "$enable_debuginfod_ima_verification" = "xyes"]) -+AM_CONDITIONAL([ENABLE_IMA_VERIFICATION],[test "x$enable_debuginfod_ima_verification" = "xyes"]) - AM_CONDITIONAL([OLD_LIBMICROHTTPD],[test "x$old_libmicrohttpd" = "xyes"]) - - dnl for /etc/profile.d/elfutils.{csh,sh} diff --git a/package/libs/elfutils/patches/009-fix-null-dereference-with-lto.patch b/package/libs/elfutils/patches/009-fix-null-dereference-with-lto.patch deleted file mode 100644 index 1179a1e1a01..00000000000 --- a/package/libs/elfutils/patches/009-fix-null-dereference-with-lto.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 8707194a9f2f0b13e53041b03ebfdbdbd2942e43 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Tue, 5 Nov 2024 23:31:14 +0100 -Subject: [PATCH 1/1] libelf: Only fetch shdr once in elf_compress[_gnu] - -Some compilers assume the second call to elf[32|64]_getshdr can fail -and produce error: potential null pointer dereference. Just store the -result of the first call and reuse (when not NULL). - - * libelf/elf_compress.c (elf_compress): Store getshdr result in - a shdr union var. - * libelf/elf_compress_gnu.c (): Likewise - -https://sourceware.org/bugzilla/show_bug.cgi?id=32311 - -Signed-off-by: Mark Wielaard ---- - libelf/elf_compress.c | 55 +++++++++++++++++++++------------------ - libelf/elf_compress_gnu.c | 45 ++++++++++++++------------------ - 2 files changed, 48 insertions(+), 52 deletions(-) - ---- a/libelf/elf_compress.c -+++ b/libelf/elf_compress.c -@@ -584,25 +584,30 @@ elf_compress (Elf_Scn *scn, int type, un - Elf64_Xword sh_flags; - Elf64_Word sh_type; - Elf64_Xword sh_addralign; -+ union shdr -+ { -+ Elf32_Shdr *s32; -+ Elf64_Shdr *s64; -+ } shdr; - if (elfclass == ELFCLASS32) - { -- Elf32_Shdr *shdr = elf32_getshdr (scn); -- if (shdr == NULL) -+ shdr.s32 = elf32_getshdr (scn); -+ if (shdr.s32 == NULL) - return -1; - -- sh_flags = shdr->sh_flags; -- sh_type = shdr->sh_type; -- sh_addralign = shdr->sh_addralign; -+ sh_flags = shdr.s32->sh_flags; -+ sh_type = shdr.s32->sh_type; -+ sh_addralign = shdr.s32->sh_addralign; - } - else - { -- Elf64_Shdr *shdr = elf64_getshdr (scn); -- if (shdr == NULL) -+ shdr.s64 = elf64_getshdr (scn); -+ if (shdr.s64 == NULL) - return -1; - -- sh_flags = shdr->sh_flags; -- sh_type = shdr->sh_type; -- sh_addralign = shdr->sh_addralign; -+ sh_flags = shdr.s64->sh_flags; -+ sh_type = shdr.s64->sh_type; -+ sh_addralign = shdr.s64->sh_addralign; - } - - if ((sh_flags & SHF_ALLOC) != 0) -@@ -679,17 +684,17 @@ elf_compress (Elf_Scn *scn, int type, un - correctly and ignored when SHF_COMPRESSED is set. */ - if (elfclass == ELFCLASS32) - { -- Elf32_Shdr *shdr = elf32_getshdr (scn); -- shdr->sh_size = new_size; -- shdr->sh_addralign = __libelf_type_align (ELFCLASS32, ELF_T_CHDR); -- shdr->sh_flags |= SHF_COMPRESSED; -+ shdr.s32->sh_size = new_size; -+ shdr.s32->sh_addralign = __libelf_type_align (ELFCLASS32, -+ ELF_T_CHDR); -+ shdr.s32->sh_flags |= SHF_COMPRESSED; - } - else - { -- Elf64_Shdr *shdr = elf64_getshdr (scn); -- shdr->sh_size = new_size; -- shdr->sh_addralign = __libelf_type_align (ELFCLASS64, ELF_T_CHDR); -- shdr->sh_flags |= SHF_COMPRESSED; -+ shdr.s64->sh_size = new_size; -+ shdr.s64->sh_addralign = __libelf_type_align (ELFCLASS64, -+ ELF_T_CHDR); -+ shdr.s64->sh_flags |= SHF_COMPRESSED; - } - - __libelf_reset_rawdata (scn, out_buf, new_size, 1, ELF_T_CHDR); -@@ -731,17 +736,15 @@ elf_compress (Elf_Scn *scn, int type, un - correctly and ignored when SHF_COMPRESSED is set. */ - if (elfclass == ELFCLASS32) - { -- Elf32_Shdr *shdr = elf32_getshdr (scn); -- shdr->sh_size = scn->zdata_size; -- shdr->sh_addralign = scn->zdata_align; -- shdr->sh_flags &= ~SHF_COMPRESSED; -+ shdr.s32->sh_size = scn->zdata_size; -+ shdr.s32->sh_addralign = scn->zdata_align; -+ shdr.s32->sh_flags &= ~SHF_COMPRESSED; - } - else - { -- Elf64_Shdr *shdr = elf64_getshdr (scn); -- shdr->sh_size = scn->zdata_size; -- shdr->sh_addralign = scn->zdata_align; -- shdr->sh_flags &= ~SHF_COMPRESSED; -+ shdr.s64->sh_size = scn->zdata_size; -+ shdr.s64->sh_addralign = scn->zdata_align; -+ shdr.s64->sh_flags &= ~SHF_COMPRESSED; - } - - __libelf_reset_rawdata (scn, scn->zdata_base, ---- a/libelf/elf_compress_gnu.c -+++ b/libelf/elf_compress_gnu.c -@@ -59,25 +59,30 @@ elf_compress_gnu (Elf_Scn *scn, int infl - Elf64_Xword sh_flags; - Elf64_Word sh_type; - Elf64_Xword sh_addralign; -+ union shdr -+ { -+ Elf32_Shdr *s32; -+ Elf64_Shdr *s64; -+ } shdr; - if (elfclass == ELFCLASS32) - { -- Elf32_Shdr *shdr = elf32_getshdr (scn); -- if (shdr == NULL) -+ shdr.s32 = elf32_getshdr (scn); -+ if (shdr.s32 == NULL) - return -1; - -- sh_flags = shdr->sh_flags; -- sh_type = shdr->sh_type; -- sh_addralign = shdr->sh_addralign; -+ sh_flags = shdr.s32->sh_flags; -+ sh_type = shdr.s32->sh_type; -+ sh_addralign = shdr.s32->sh_addralign; - } - else - { -- Elf64_Shdr *shdr = elf64_getshdr (scn); -- if (shdr == NULL) -+ shdr.s64 = elf64_getshdr (scn); -+ if (shdr.s64 == NULL) - return -1; - -- sh_flags = shdr->sh_flags; -- sh_type = shdr->sh_type; -- sh_addralign = shdr->sh_addralign; -+ sh_flags = shdr.s64->sh_flags; -+ sh_type = shdr.s64->sh_type; -+ sh_addralign = shdr.s64->sh_addralign; - } - - /* Allocated sections, or sections that are already are compressed -@@ -122,15 +127,9 @@ elf_compress_gnu (Elf_Scn *scn, int infl - sh_flags won't have a SHF_COMPRESSED hint in the GNU format. - Just adjust the sh_size. */ - if (elfclass == ELFCLASS32) -- { -- Elf32_Shdr *shdr = elf32_getshdr (scn); -- shdr->sh_size = new_size; -- } -+ shdr.s32->sh_size = new_size; - else -- { -- Elf64_Shdr *shdr = elf64_getshdr (scn); -- shdr->sh_size = new_size; -- } -+ shdr.s64->sh_size = new_size; - - __libelf_reset_rawdata (scn, out_buf, new_size, 1, ELF_T_BYTE); - -@@ -187,15 +186,9 @@ elf_compress_gnu (Elf_Scn *scn, int infl - sh_flags won't have a SHF_COMPRESSED hint in the GNU format. - Just adjust the sh_size. */ - if (elfclass == ELFCLASS32) -- { -- Elf32_Shdr *shdr = elf32_getshdr (scn); -- shdr->sh_size = size; -- } -+ shdr.s32->sh_size = size; - else -- { -- Elf64_Shdr *shdr = elf64_getshdr (scn); -- shdr->sh_size = size; -- } -+ shdr.s64->sh_size = size; - - __libelf_reset_rawdata (scn, buf_out, size, sh_addralign, - __libelf_data_type (&ehdr, sh_type, diff --git a/package/libs/elfutils/patches/101-no-fts.patch b/package/libs/elfutils/patches/101-no-fts.patch index 29a6c4b36cb..3483ef203ea 100644 --- a/package/libs/elfutils/patches/101-no-fts.patch +++ b/package/libs/elfutils/patches/101-no-fts.patch @@ -72,7 +72,7 @@ struct parse_opt *opt = state->hook; --- a/libdwfl/Makefile.am +++ b/libdwfl/Makefile.am -@@ -50,7 +50,7 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_en +@@ -51,7 +51,7 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_en argp-std.c find-debuginfo.c \ dwfl_build_id_find_elf.c \ dwfl_build_id_find_debuginfo.c \ diff --git a/package/libs/elfutils/patches/102-fix-potential-deref-of-null-error.patch b/package/libs/elfutils/patches/102-fix-potential-deref-of-null-error.patch deleted file mode 100644 index 6710e4ef9cf..00000000000 --- a/package/libs/elfutils/patches/102-fix-potential-deref-of-null-error.patch +++ /dev/null @@ -1,55 +0,0 @@ -strip.c: Pointer `arhdr` created at strip.c:2741 and then dereferenced without NULL-check. -The same situation for the `arhdr` pointer at the objdump.c:313 and -the `h` pointer at the readelf.c:13545. - -Triggers found by static analyzer Svace. - -Signed-off-by: Maks Mishin ---- - src/objdump.c | 5 +++++ - src/readelf.c | 5 +++++ - src/strip.c | 5 +++++ - 3 files changed, 15 insertions(+) - ---- a/src/objdump.c -+++ b/src/objdump.c -@@ -311,6 +311,11 @@ handle_ar (int fd, Elf *elf, const char - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); -+ if (arhdr == NULL) -+ { -+ printf ("cannot get arhdr: %s\n", elf_errmsg (-1)); -+ exit (1); -+ } - - /* Skip over the index entries. */ - if (strcmp (arhdr->ar_name, "/") != 0 ---- a/src/readelf.c -+++ b/src/readelf.c -@@ -13543,6 +13543,11 @@ dump_archive_index (Elf *elf, const char - as_off, fname, elf_errmsg (-1)); - - const Elf_Arhdr *h = elf_getarhdr (subelf); -+ if (h == NULL) -+ { -+ printf ("cannot get arhdr: %s\n", elf_errmsg (-1)); -+ exit (1); -+ } - - printf (_("Archive member '%s' contains:\n"), h->ar_name); - ---- a/src/strip.c -+++ b/src/strip.c -@@ -2739,6 +2739,11 @@ handle_ar (int fd, Elf *elf, const char - { - /* The the header for this element. */ - Elf_Arhdr *arhdr = elf_getarhdr (subelf); -+ if (arhdr == NULL) -+ { -+ printf ("cannot get arhdr: %s\n", elf_errmsg (-1)); -+ exit (1); -+ } - - if (elf_kind (subelf) == ELF_K_ELF) - result |= handle_elf (fd, subelf, new_prefix, arhdr->ar_name, 0, NULL); -- 2.47.3