From 687db29356293c45127e176e3bea1b193814367f Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 27 May 2021 10:42:58 +0200 Subject: [PATCH 01/80] 0.185-2 - Disable debuginfod client by default for f34 --- elfutils.spec | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index 60d1b09..c1cb8e4 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.185 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -257,7 +257,7 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat" trap 'cat config.log' EXIT -%configure CFLAGS="$RPM_OPT_FLAGS -fexceptions" --enable-debuginfod-urls=https://debuginfod.fedoraproject.org/ +%configure CFLAGS="$RPM_OPT_FLAGS -fexceptions" trap '' EXIT %make_build -s @@ -268,6 +268,10 @@ chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* # We don't want the static libraries rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib{elf,dw,asm}.a +# We don't have standard DEBUGINFOD_URLS yet. +rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.sh +rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.csh + %find_lang %{name} %if %{provide_yama_scope} @@ -375,7 +379,6 @@ fi %{_libdir}/libdebuginfod.so.* %{_bindir}/debuginfod-find %{_mandir}/man1/debuginfod-find.1* -%config(noreplace) %{_sysconfdir}/profile.d/* %files debuginfod-client-devel %{_libdir}/pkgconfig/libdebuginfod.pc @@ -407,6 +410,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu May 27 2021 Mark Wielaard - 0.185-2 +- Disable debuginfod client by default for f34. + * Wed May 26 2021 Mark Wielaard - 0.185-1 - Upgrade to upstream 0.185 - debuginfod-client: Simplify curl handle reuse so downloads which From aaf68e897a340b9425b4e5bc0f0377bce3b326f3 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 15 Jul 2021 23:47:48 +0200 Subject: [PATCH 02/80] 0.185-3 - Update version to 0.185-3 for rawhide/f35 upgrade from f34 This build enables debuginfod client by default --- elfutils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 60d1b09..8b37f20 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.185 -%global baserelease 1 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -407,6 +407,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Jul 15 2021 Mark Wielaard - 0.185-3 +- Update version to 0.185-3 for rawhide/f35 upgrade from f34 + This build enables debuginfod client by default + * Wed May 26 2021 Mark Wielaard - 0.185-1 - Upgrade to upstream 0.185 - debuginfod-client: Simplify curl handle reuse so downloads which From 92449213678ef0a7fe91a77af8a9c5a65e5e03d4 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 16 Jul 2021 00:03:58 +0200 Subject: [PATCH 03/80] Workaround bad test in make check --- elfutils.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 8b37f20..9fba0fb 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -283,7 +283,10 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite # Record some build root versions in build.log uname -r; rpm -q binutils gcc glibc || true -%make_build -s check || (cat tests/test-suite.log; false) +# FIXME for 0.186 +# run-debuginfod-find.sh is a bad test +# %%make_build -s check || (cat tests/test-suite.log; false) +%make_build -s check || (cat tests/test-suite.log; true) # Only the latest Fedora and EPEL have these scriptlets, # older Fedora and plain RHEL don't. @@ -410,6 +413,7 @@ exit 0 * Thu Jul 15 2021 Mark Wielaard - 0.185-3 - Update version to 0.185-3 for rawhide/f35 upgrade from f34 This build enables debuginfod client by default +- Workaround bad test in make check * Wed May 26 2021 Mark Wielaard - 0.185-1 - Upgrade to upstream 0.185 From 972afdb189aed18b42b45d73fa8adae846c55899 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 21 Jul 2021 21:48:43 +0000 Subject: [PATCH 04/80] - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 9fba0fb..6a83d7e 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.185 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -410,6 +410,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Jul 21 2021 Fedora Release Engineering - 0.185-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + * Thu Jul 15 2021 Mark Wielaard - 0.185-3 - Update version to 0.185-3 for rawhide/f35 upgrade from f34 This build enables debuginfod client by default From 18d7a422309e0e77e3872855d5d09ba21aa5c971 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 6 Aug 2021 16:00:48 +0200 Subject: [PATCH 05/80] 0.185-5 - Add elfutils-0.185-raise-pthread_kill-backtrace.patch - Use autosetup --- ...s-0.185-raise-pthread_kill-backtrace.patch | 125 ++++++++++++++++++ elfutils.spec | 21 +-- 2 files changed, 137 insertions(+), 9 deletions(-) create mode 100644 elfutils-0.185-raise-pthread_kill-backtrace.patch diff --git a/elfutils-0.185-raise-pthread_kill-backtrace.patch b/elfutils-0.185-raise-pthread_kill-backtrace.patch new file mode 100644 index 0000000..9c0108f --- /dev/null +++ b/elfutils-0.185-raise-pthread_kill-backtrace.patch @@ -0,0 +1,125 @@ +commit 9aee0992d6e6ec4cce2c015d8da4b61022c6f6dd +Author: Mark Wielaard +Date: Wed Aug 4 21:01:27 2021 +0200 + + tests: Allow an extra pthread_kill frame in backtrace tests + + glibc 2.34 calls pthread_kill from the raise function. Before raise + directly called the (tg)kill syscall. So allow pthread_kill to be the + first frame in a backtrace where raise is expected. Also change some + asserts to fprintf plus abort to make it more clear why the testcase + fails. + + https://sourceware.org/bugzilla/show_bug.cgi?id=28190 + + Signed-off-by: Mark Wielaard + +diff --git a/tests/backtrace.c b/tests/backtrace.c +index 36c8b8c4..afc12fb9 100644 +--- a/tests/backtrace.c ++++ b/tests/backtrace.c +@@ -97,6 +97,9 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, + static bool reduce_frameno = false; + if (reduce_frameno) + frameno--; ++ static bool pthread_kill_seen = false; ++ if (pthread_kill_seen) ++ frameno--; + if (! use_raise_jmp_patching && frameno >= 2) + frameno += 2; + const char *symname2 = NULL; +@@ -107,11 +110,26 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, + && (strcmp (symname, "__kernel_vsyscall") == 0 + || strcmp (symname, "__libc_do_syscall") == 0)) + reduce_frameno = true; ++ else if (! pthread_kill_seen && symname ++ && strstr (symname, "pthread_kill") != NULL) ++ pthread_kill_seen = true; + else +- assert (symname && strcmp (symname, "raise") == 0); ++ { ++ if (!symname || strcmp (symname, "raise") != 0) ++ { ++ fprintf (stderr, ++ "case 0: expected symname 'raise' got '%s'\n", symname); ++ abort (); ++ } ++ } + break; + case 1: +- assert (symname != NULL && strcmp (symname, "sigusr2") == 0); ++ if (symname == NULL || strcmp (symname, "sigusr2") != 0) ++ { ++ fprintf (stderr, ++ "case 1: expected symname 'sigusr2' got '%s'\n", symname); ++ abort (); ++ } + break; + case 2: // x86_64 only + /* __restore_rt - glibc maybe does not have to have this symbol. */ +@@ -120,11 +138,21 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, + if (use_raise_jmp_patching) + { + /* Verify we trapped on the very first instruction of jmp. */ +- assert (symname != NULL && strcmp (symname, "jmp") == 0); ++ if (symname == NULL || strcmp (symname, "jmp") != 0) ++ { ++ fprintf (stderr, ++ "case 3: expected symname 'raise' got '%s'\n", symname); ++ abort (); ++ } + mod = dwfl_addrmodule (dwfl, pc - 1); + if (mod) + symname2 = dwfl_module_addrname (mod, pc - 1); +- assert (symname2 == NULL || strcmp (symname2, "jmp") != 0); ++ if (symname2 == NULL || strcmp (symname2, "jmp") != 0) ++ { ++ fprintf (stderr, ++ "case 3: expected symname2 'jmp' got '%s'\n", symname2); ++ abort (); ++ } + break; + } + FALLTHROUGH; +@@ -137,11 +165,22 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, + duplicate_sigusr2 = true; + break; + } +- assert (symname != NULL && strcmp (symname, "stdarg") == 0); ++ if (symname == NULL || strcmp (symname, "stdarg") != 0) ++ { ++ fprintf (stderr, ++ "case 4: expected symname 'stdarg' got '%s'\n", symname); ++ abort (); ++ } + break; + case 5: + /* Verify we trapped on the very last instruction of child. */ +- assert (symname != NULL && strcmp (symname, "backtracegen") == 0); ++ if (symname == NULL || strcmp (symname, "backtracegen") != 0) ++ { ++ fprintf (stderr, ++ "case 5: expected symname 'backtracegen' got '%s'\n", ++ symname); ++ abort (); ++ } + mod = dwfl_addrmodule (dwfl, pc); + if (mod) + symname2 = dwfl_module_addrname (mod, pc); +@@ -151,7 +190,15 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, + // instructions or even inserts some padding instructions at the end + // (which apparently happens on ppc64). + if (use_raise_jmp_patching) +- assert (symname2 == NULL || strcmp (symname2, "backtracegen") != 0); ++ { ++ if (symname2 != NULL && strcmp (symname2, "backtracegen") == 0) ++ { ++ fprintf (stderr, ++ "use_raise_jmp_patching didn't expect symname2 " ++ "'backtracegen'\n"); ++ abort (); ++ } ++ } + break; + } + } diff --git a/elfutils.spec b/elfutils.spec index 6a83d7e..1d23d8e 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.185 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -62,6 +62,7 @@ BuildRequires: gettext-devel %endif # Patches +Patch1: elfutils-0.185-raise-pthread_kill-backtrace.patch %description Elfutils is a collection of utilities, including stack (to show @@ -228,9 +229,7 @@ The ELF/DWARF file searching functions in libdwfl can query such servers to download those files on demand. %prep -%setup -q - -# Apply patches +%autosetup -p1 autoreconf -f -v -i @@ -257,12 +256,12 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat" trap 'cat config.log' EXIT -%configure CFLAGS="$RPM_OPT_FLAGS -fexceptions" --enable-debuginfod-urls=https://debuginfod.fedoraproject.org/ +%configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=https://debuginfod.fedoraproject.org/ trap '' EXIT -%make_build -s +%make_build %install -%make_install -s +%make_install chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* # We don't want the static libraries @@ -285,8 +284,8 @@ uname -r; rpm -q binutils gcc glibc || true # FIXME for 0.186 # run-debuginfod-find.sh is a bad test -# %%make_build -s check || (cat tests/test-suite.log; false) -%make_build -s check || (cat tests/test-suite.log; true) +# %%make_build check || (cat tests/test-suite.log; false) +%make_build check || (cat tests/test-suite.log; true) # Only the latest Fedora and EPEL have these scriptlets, # older Fedora and plain RHEL don't. @@ -410,6 +409,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Aug 5 2021 Mark Wielaard - 0.185-5 +- Use autosetup +- Add elfutils-0.185-raise-pthread_kill-backtrace.patch + * Wed Jul 21 2021 Fedora Release Engineering - 0.185-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild From fff536c2af9c4340a75e1c3d707c5ee78e42af8a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 11 Nov 2021 00:40:26 +0100 Subject: [PATCH 06/80] 0.186-1 - Upgrade to upstream 0.186 --- .gitignore | 1 + ...s-0.185-raise-pthread_kill-backtrace.patch | 125 ------------------ elfutils.spec | 48 ++++--- sources | 2 +- 4 files changed, 33 insertions(+), 143 deletions(-) delete mode 100644 elfutils-0.185-raise-pthread_kill-backtrace.patch diff --git a/.gitignore b/.gitignore index e99bda5..862ef94 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /elfutils-0.183.tar.bz2 /elfutils-0.184.tar.bz2 /elfutils-0.185.tar.bz2 +/elfutils-0.186.tar.bz2 diff --git a/elfutils-0.185-raise-pthread_kill-backtrace.patch b/elfutils-0.185-raise-pthread_kill-backtrace.patch deleted file mode 100644 index 9c0108f..0000000 --- a/elfutils-0.185-raise-pthread_kill-backtrace.patch +++ /dev/null @@ -1,125 +0,0 @@ -commit 9aee0992d6e6ec4cce2c015d8da4b61022c6f6dd -Author: Mark Wielaard -Date: Wed Aug 4 21:01:27 2021 +0200 - - tests: Allow an extra pthread_kill frame in backtrace tests - - glibc 2.34 calls pthread_kill from the raise function. Before raise - directly called the (tg)kill syscall. So allow pthread_kill to be the - first frame in a backtrace where raise is expected. Also change some - asserts to fprintf plus abort to make it more clear why the testcase - fails. - - https://sourceware.org/bugzilla/show_bug.cgi?id=28190 - - Signed-off-by: Mark Wielaard - -diff --git a/tests/backtrace.c b/tests/backtrace.c -index 36c8b8c4..afc12fb9 100644 ---- a/tests/backtrace.c -+++ b/tests/backtrace.c -@@ -97,6 +97,9 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, - static bool reduce_frameno = false; - if (reduce_frameno) - frameno--; -+ static bool pthread_kill_seen = false; -+ if (pthread_kill_seen) -+ frameno--; - if (! use_raise_jmp_patching && frameno >= 2) - frameno += 2; - const char *symname2 = NULL; -@@ -107,11 +110,26 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, - && (strcmp (symname, "__kernel_vsyscall") == 0 - || strcmp (symname, "__libc_do_syscall") == 0)) - reduce_frameno = true; -+ else if (! pthread_kill_seen && symname -+ && strstr (symname, "pthread_kill") != NULL) -+ pthread_kill_seen = true; - else -- assert (symname && strcmp (symname, "raise") == 0); -+ { -+ if (!symname || strcmp (symname, "raise") != 0) -+ { -+ fprintf (stderr, -+ "case 0: expected symname 'raise' got '%s'\n", symname); -+ abort (); -+ } -+ } - break; - case 1: -- assert (symname != NULL && strcmp (symname, "sigusr2") == 0); -+ if (symname == NULL || strcmp (symname, "sigusr2") != 0) -+ { -+ fprintf (stderr, -+ "case 1: expected symname 'sigusr2' got '%s'\n", symname); -+ abort (); -+ } - break; - case 2: // x86_64 only - /* __restore_rt - glibc maybe does not have to have this symbol. */ -@@ -120,11 +138,21 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, - if (use_raise_jmp_patching) - { - /* Verify we trapped on the very first instruction of jmp. */ -- assert (symname != NULL && strcmp (symname, "jmp") == 0); -+ if (symname == NULL || strcmp (symname, "jmp") != 0) -+ { -+ fprintf (stderr, -+ "case 3: expected symname 'raise' got '%s'\n", symname); -+ abort (); -+ } - mod = dwfl_addrmodule (dwfl, pc - 1); - if (mod) - symname2 = dwfl_module_addrname (mod, pc - 1); -- assert (symname2 == NULL || strcmp (symname2, "jmp") != 0); -+ if (symname2 == NULL || strcmp (symname2, "jmp") != 0) -+ { -+ fprintf (stderr, -+ "case 3: expected symname2 'jmp' got '%s'\n", symname2); -+ abort (); -+ } - break; - } - FALLTHROUGH; -@@ -137,11 +165,22 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, - duplicate_sigusr2 = true; - break; - } -- assert (symname != NULL && strcmp (symname, "stdarg") == 0); -+ if (symname == NULL || strcmp (symname, "stdarg") != 0) -+ { -+ fprintf (stderr, -+ "case 4: expected symname 'stdarg' got '%s'\n", symname); -+ abort (); -+ } - break; - case 5: - /* Verify we trapped on the very last instruction of child. */ -- assert (symname != NULL && strcmp (symname, "backtracegen") == 0); -+ if (symname == NULL || strcmp (symname, "backtracegen") != 0) -+ { -+ fprintf (stderr, -+ "case 5: expected symname 'backtracegen' got '%s'\n", -+ symname); -+ abort (); -+ } - mod = dwfl_addrmodule (dwfl, pc); - if (mod) - symname2 = dwfl_module_addrname (mod, pc); -@@ -151,7 +190,15 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc, - // instructions or even inserts some padding instructions at the end - // (which apparently happens on ppc64). - if (use_raise_jmp_patching) -- assert (symname2 == NULL || strcmp (symname2, "backtracegen") != 0); -+ { -+ if (symname2 != NULL && strcmp (symname2, "backtracegen") == 0) -+ { -+ fprintf (stderr, -+ "use_raise_jmp_patching didn't expect symname2 " -+ "'backtracegen'\n"); -+ abort (); -+ } -+ } - break; - } - } diff --git a/elfutils.spec b/elfutils.spec index 1d23d8e..dff98ca 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.185 -%global baserelease 5 +Version: 0.186 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -42,11 +42,11 @@ BuildRequires: pkgconfig(libarchive) >= 3.1.2 # For tests need to bunzip2 test files. BuildRequires: bzip2 BuildRequires: zstd -# For the run-debuginfod-find.sh test case in %%check for /usr/sbin/ss +# For the run-debuginfod-find.sh test case in %%check for /usr/sbin/ss etc. BuildRequires: iproute +BuildRequires: procps BuildRequires: bsdtar BuildRequires: curl -BuildRequires: procps BuildRequires: automake BuildRequires: autoconf @@ -62,7 +62,6 @@ BuildRequires: gettext-devel %endif # Patches -Patch1: elfutils-0.185-raise-pthread_kill-backtrace.patch %description Elfutils is a collection of utilities, including stack (to show @@ -238,14 +237,6 @@ autoreconf -f -v -i find . -name \*.sh ! -perm -0100 -print | xargs chmod +x %build -# This package uses top level ASM constructs which are incompatible with LTO. -# Top level ASMs are often used to implement symbol versioning. gcc-10 -# introduces a new mechanism for symbol versioning which works with LTO. -# Converting packages to use that mechanism instead of toplevel ASMs is -# recommended. -# Disable LTO -%define _lto_cflags %{nil} - # Remove -Wall from default flags. The makefiles enable enough warnings # themselves, and they use -Werror. Appending -Wall defeats the cases where # the makefiles disable some specific warnings for specific code. @@ -282,10 +273,7 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite # Record some build root versions in build.log uname -r; rpm -q binutils gcc glibc || true -# FIXME for 0.186 -# run-debuginfod-find.sh is a bad test -# %%make_build check || (cat tests/test-suite.log; false) -%make_build check || (cat tests/test-suite.log; true) +%make_build check || (cat tests/test-suite.log; false) # Only the latest Fedora and EPEL have these scriptlets, # older Fedora and plain RHEL don't. @@ -377,7 +365,9 @@ fi %{_libdir}/libdebuginfod.so.* %{_bindir}/debuginfod-find %{_mandir}/man1/debuginfod-find.1* +%{_mandir}/man7/debuginfod*.7* %config(noreplace) %{_sysconfdir}/profile.d/* +%config(noreplace) %{_sysconfdir}/debuginfod/* %files debuginfod-client-devel %{_libdir}/pkgconfig/libdebuginfod.pc @@ -409,6 +399,30 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Nov 10 2021 Mark Wielaard - 0.186-1 +- Upgrade to upstream 0.186 + - debuginfod-client: Default $DEBUGINFOD_URLS is computed from + drop-in files /etc/debuginfod/*.urls rather than + hardcoded into the /etc/profile.d/debuginfod* + scripts. + Add $DEBUGINFOD_MAXSIZE and $DEBUGINFOD_MAXTIME settings + for skipping large/slow transfers. + Add $DEBUGINFOD_RETRY for retrying aborted lookups. + - debuginfod: Supply extra HTTP response headers, describing + archive/file names that satisfy the requested buildid content. + Support -d :memory: option for in-memory databases. + Protect against loops in federated server configurations. + Add -r option to use -I/-X regexes for grooming stale files. + Protect against wasted CPU from duplicate concurrent requests. + Limit the duration of groom ops roughly to rescan (-t) times. + Add --passive mode for serving from read-only database. + Several other performance improvements & prometheus metrics. + - libdw: Support for the NVIDIA Cuda line map extensions. + DW_LNE_NVIDIA_inlined_call and DW_LNE_NVIDIA_set_function_name + are defined in dwarf.h. New functions dwarf_linecontext and + dwarf_linefunctionname. + - translations: Update Japanese translation. + * Thu Aug 5 2021 Mark Wielaard - 0.185-5 - Use autosetup - Add elfutils-0.185-raise-pthread_kill-backtrace.patch diff --git a/sources b/sources index b564fdb..9267009 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.185.tar.bz2) = 34de0de1355b11740e036e0fc64f2fc063587c8eb121b19216ee5548d3f0f268d8fc3995176c47190466b9d881007cfa11a9d01e9a50e38af6119492bf8bb47f +SHA512 (elfutils-0.186.tar.bz2) = c9180b27ec62935f18b9431268d176f6023d1bb938731d2af6e7626ae460af6608a70ba68483aa1ec7e6cb0fa0528b661ca8b68bc4f58ea8e18af527c5950c78 From 8a282727bebd033599d8335403ea069f7c811941 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Tue, 16 Nov 2021 11:49:50 +0100 Subject: [PATCH 07/80] CI Gating: Use Regression and Sanity tests in automated runs --- .../Makefile | 64 ----------------- .../PURPOSE | 5 -- .../addr2line-buffer-over-flow1 | Bin 1860 -> 0 bytes .../main.fmf | 16 ----- .../runtest.sh | 39 ----------- .../Double-free-libelf | Bin 1896 -> 0 bytes .../Makefile | 65 ------------------ .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 42 ----------- .../Buffer-over-readelf | Bin 2488 -> 0 bytes .../Makefile | 65 ------------------ .../PURPOSE | 5 -- .../bz1532205.supp | 25 ------- .../main.fmf | 16 ----- .../runtest.sh | 43 ------------ .../Makefile | 64 ----------------- .../POC-stack | Bin 4542 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 15 ---- .../runtest.sh | 39 ----------- .../Makefile | 64 ----------------- .../POC-stack | Bin 4542 -> 0 bytes .../PURPOSE | 5 -- .../bz1532205.supp | 25 ------- .../main.fmf | 16 ----- .../runtest.sh | 42 ----------- .../Makefile | 64 ----------------- .../POC1 | Bin 4000 -> 0 bytes .../PURPOSE | 3 - .../main.fmf | 13 ---- .../runtest.sh | 38 ---------- .../Makefile | 64 ----------------- .../POC2 | Bin 4000 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 42 ----------- .../CVE-2018-18521-divide-by-zero/Makefile | 64 ----------------- .../CVE-2018-18521-divide-by-zero/POC2 | Bin 4000 -> 0 bytes .../CVE-2018-18521-divide-by-zero/PURPOSE | 5 -- .../CVE-2018-18521-divide-by-zero/main.fmf | 16 ----- .../CVE-2018-18521-divide-by-zero/runtest.sh | 43 ------------ .../Makefile | 64 ----------------- .../POC2 | Bin 4000 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 15 ---- .../runtest.sh | 38 ---------- tests/Security/CVE-2019-7146/Makefile | 64 ----------------- tests/Security/CVE-2019-7146/PURPOSE | 3 - tests/Security/CVE-2019-7146/main.fmf | 14 ---- tests/Security/CVE-2019-7146/poc | Bin 428 -> 0 bytes tests/Security/CVE-2019-7146/runtest.sh | 41 ----------- .../Makefile | 64 ----------------- .../POC1 | Bin 3208 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 43 ------------ .../Makefile | 64 ----------------- .../POC1 | Bin 10442 -> 0 bytes .../POC2 | Bin 10467 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 40 ----------- .../Makefile | 64 ----------------- .../POC | Bin 10393 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 40 ----------- .../Makefile | 64 ----------------- .../POC2 | Bin 2659 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 41 ----------- .../Makefile | 63 ----------------- .../PURPOSE | 5 -- .../dwz-overflow.elf | Bin 24928 -> 0 bytes .../main.fmf | 16 ----- .../runtest.sh | 56 --------------- 78 files changed, 1942 deletions(-) delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/addr2line-buffer-over-flow1 delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/main.fmf delete mode 100755 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Double-free-libelf delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Makefile delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf delete mode 100755 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Buffer-over-readelf delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Makefile delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf delete mode 100755 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/POC-stack delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf delete mode 100755 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/POC-stack delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf delete mode 100755 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/POC1 delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf delete mode 100755 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/POC2 delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/PURPOSE delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf delete mode 100755 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/Makefile delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/POC2 delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/PURPOSE delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/main.fmf delete mode 100755 tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/POC2 delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/PURPOSE delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf delete mode 100755 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh delete mode 100644 tests/Security/CVE-2019-7146/Makefile delete mode 100644 tests/Security/CVE-2019-7146/PURPOSE delete mode 100644 tests/Security/CVE-2019-7146/main.fmf delete mode 100644 tests/Security/CVE-2019-7146/poc delete mode 100755 tests/Security/CVE-2019-7146/runtest.sh delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/POC1 delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf delete mode 100755 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC1 delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC2 delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf delete mode 100755 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/POC delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf delete mode 100755 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/POC2 delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf delete mode 100755 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/dwz-overflow.elf delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf delete mode 100755 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile deleted file mode 100644 index 09a9e16..0000000 --- a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE addr2line-buffer-over-flow1 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1625260" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE deleted file mode 100644 index 3281134..0000000 --- a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read -Author: Martin Cermak -Bug summary: 2 elfutils: Heap-based buffer over-read in libdw/dwarf_getaranges.c:dwarf_getaranges() via crafted file [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625260 diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/addr2line-buffer-over-flow1 b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/addr2line-buffer-over-flow1 deleted file mode 100644 index 8db05cc5e161d3235c6e1a95595c23404b9de5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1860 zcmdT_Jxmi}7=FI%l@_Q3G@?FWt&Kr z%46l;FR8`(zVCghhu@ai)M)>BbY>|&x%{9qw+(v6 z##T~U4;|nrfX4vN00=_>g*7Ncfbt_wIT0ml**?^90P6K)#49lhRn&DQAz~JQ_3`L6 zvf?oVK(vMQ3oLRIK*OCTK*=7YYEc?Ka*sux6ERE1T~cF@zz`XunAidGj*~YYhoY(j z02ERiL+{$sR)@|1 zM&jS}pYitz(E4}o|3G-pnYgP7fZlY4fsJ%0G+`6yW1^c=v^^_pFBn>8Sa-n_U=YQ)m z6?VzVF5tZ40ZH#_-q+JedcGUVVX67%6(31MtQy_b?X2lZvrtUidcI~`_C-f>dOGcz zm!%c%sIbUISI?W0@O-fxS1`1q{Q+C6`?EoCOuUQw^l-xgUDY^=HvlwYe5#NT`@4kJ zJyNe?5fD8j -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -extra-task: /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh deleted file mode 100755 index fa3fc0c..0000000 --- a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # Reproduced with elfutils-0.172-2.el7.x86_64 valgrind-3.13.0-13.el7.x86_64 - rlRun "valgrind -q --error-exitcode=99 eu-addr2line -e addr2line-buffer-over-flow1 -- 500 50 10 -1000" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Double-free-libelf b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Double-free-libelf deleted file mode 100644 index da7ce216809f9ed95d5d2f5c662c3e02c7963d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1896 zcmeHIT}TvB6#nka?z)>(t*wYz*5aBP*`{cPAhn2vi4Q^+q>{7i?)IaWxT~xZxX}+1 z20>9N14Z?ay+vDO^dPCE(M$EzOGMB{5EK<;AWWP)Gdn|2LB00D&b@Q*Ip25Ax#!Lf z?`Yb|7z2h?RRzExg26Z@2kFF&^nOuQ)z+q6 zb-Hb7Lg~z{Z+YuUN7Luio^WocTJDtP=bfo{k@TH6_tFkmO>bpI1+cMLkS&gl2_@Dk z%W@PfZ>M{{j1|x1djkcHRh6HUH||e$yStWou6swKmC0KnWjcwP5s+ByTlSvb)+U#s z?@cJ@gJD??q1fje5$oo^Puc?$v$GTHADkYVm*lA@wxY4g{8M8aw!hq0byw&IR(^3l zvIJ6`PRAlx?P{`5xRc@pjdfWYyYiQN*fu4j=rn!Jc?91b-~v$H$~< z%=#kT{&*x2hd&&Q2jPDhi@`q>j)eLTbOb}8zQ_Q$&5+EO4jqXeU8XIBBOxz3x&dkz zimQe9n~4_y8qHTQ*j3dIGy`xUfB>(zK@Jg1EW6|{1;-v3KmY>Yb(?%i zk~Ru7l;IHA40bBJsfw+zX z7|-ZxxWRy0eNNE73AmWaLqnMjR35IoJfq75po|!^fpQwPqzS8ZM*;2f>Z7j|J@8pFr1tKl;Z4FB>4gK*UW9MntX zu;lR6z)k&ZsXvUfr%~%u?KvU -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE Double-free-libelf - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-16402-double-free-due-to-double-decompression" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: nothing" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1625052" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE deleted file mode 100644 index 2b1d552..0000000 --- a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -Description: CVE-2018-16402-double-free-due-to-double-decompression -Author: Martin Cermak -Bug summary: 2 elfutils: Double-free due to double decompression of sections in crafted ELF causes crash [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625052 diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf deleted file mode 100644 index f7be31f..0000000 --- a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-16402-double-free-due-to-double-decompression -description: | - Bug summary: 2 elfutils: Double-free due to double decompression of sections in crafted ELF causes crash [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625052 -contact: -- Martin Cermak -component: -- nothing -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -extra-task: /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh deleted file mode 100755 index 96e322b..0000000 --- a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -# Description: CVE-2018-16402-double-free-due-to-double-decompression -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - TMP=$(mktemp) - rlRun "valgrind -q eu-readelf -S ./Double-free-libelf |& tee $TMP" - rlRun "fgrep 'Invalid free()' $TMP" 1 - rlRun "fgrep 'Section Headers:' $TMP" - rm -f $TMP - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Buffer-over-readelf b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Buffer-over-readelf deleted file mode 100644 index 4b214cd6a4ccea57a812360be992777dc12ccff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2488 zcma);&ubGw6vw}_o7zoNZIT8nR&<5>yWRezN(GG+e}JWk+LNMenr$s@HYK~3dXT1y zAfCJlqTtPIkKQ~AUi=pXFa8f6B5!_dUbe0HA<53Xoj32jnfGS0b$#xJWeFq*TmZlX z9BT)Fg)-0t$|#}m@z>Y#i@ZCylZV*;@$*=t-m0OqTB=6L$IA(?n+J>*@i_8r^C7w0k}E8;Lf^}-jp}tPK=FBjqi+KbkE)m zs_rd6R`QW)Z)tJz9I)vvVl=L;k2dOSepnr?z!FRKI)tF9pYxCi5!x$Zj7%4GJoEq< z$cR6OdPspZgq%^5mHv>h&+3AFt0}cwt(Jh;?CU+$>N8T{L%W$!nmc%WB-?j_1c#Fl z$^IkqQ!@+;4sgr#%~BAD=_g~}5X-Z(Gw#`&^9$$rDvj|~x=gE=tdbW!tHpi=UbN9r z&nHn#Eys(4%@|(Qk9~NRD1uiFDo>Xm`;|%~*nrmv)_g5m376_z@L+8v47lL&Qp2xx zO4grNLcg{gbqwO1lyA-NAUc{~hZO6?NabJ}lM6A#n&lgX^?7p*d;?Pqo0=#%|uSNt-S2+`EzkLsr( zF##Y<+i#QoP3p}!_p{%WC#S^3e^5`t<9}!N zMY$^d)rjxOQgp)Ye@^+s5Z`rYoCyi8Uodsci&`Q6=*AA(n?i7XY9}YL2~3jjru&hG zQ;y#Q_Kcr$B31V$O;kgzflLK%m$BP(!rnEn!cJWj2D@FKEJCMg>$*u}YyZ;NPH&NcKg@t?Jb|H(&-z^710F zu$7#b=G><`A;t7Ly1I{?YTB~oc)2$voghPMypvArW9nE+`J<9 -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE Buffer-over-readelf bz1532205.supp - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: nothing" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: yes" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1625057" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE deleted file mode 100644 index 10589cc..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -Description: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -Author: Martin Cermak -Bug summary: 3 elfutils: Heap-based buffer over-read in libdw/dwarf_getabbrev.c and libwd/dwarf_hasattr.c causes crash [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625057 diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp deleted file mode 100644 index 70f0f80..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp +++ /dev/null @@ -1,25 +0,0 @@ -{ - - Memcheck:Cond - fun:_nl_explode_name -} -{ - - Memcheck:Cond - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:new_composite_name -} -{ - - Memcheck:Cond - fun:_nl_explode_name -} diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf deleted file mode 100644 index e934d57..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -description: | - Bug summary: 3 elfutils: Heap-based buffer over-read in libdw/dwarf_getabbrev.c and libwd/dwarf_hasattr.c causes crash [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625057 -contact: -- Martin Cermak -component: -- nothing -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -extra-task: /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh deleted file mode 100755 index ffd6160..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -# Description: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - arch | grep -q ppc64le && VGSUPP='--suppressions=bz1532205.supp' || VGSUPP='' - TMP=$(mktemp) - rlRun "valgrind $VGSUPP -q eu-readelf --debug-dump=abbrev ./Buffer-over-readelf |& tee $TMP" - rlRun "fgrep 'Invalid read of size' $TMP" 1 - rlRun "fgrep 'Abbreviation section at offset' $TMP" - rm -f $TMP - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile deleted file mode 100644 index de96661..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC-stack - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1651567" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/POC-stack b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/POC-stack deleted file mode 100644 index 2b486e8d4c7d1fedc5fe06ed22de1f335c3d1180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4542 zcmai1-ESOM7609tyY3_#JN`%-t1ihparz-8C_ z-C1{LHrSyk>y7*IkOveRmxl;hs??_nA;dobNJvOUq%Q~w5Fiy)AQT8yLsihAbMGD7 zaU=1QW_RvA=bm%!x##1~m5J$Nj4=Qf2nI~h=vIqc!vL;rlhYVR4i+B60Q%7e8Uw>k zZqWmVe0rKmyc%(2T zU9X>z9&|}I`wM`_qy)9{(Q@_W{{ty`WLs?|(GI3!ivbV75B%6JNmah|(?POgjm?#T!N}qFs4IoBpK8k(af@4Kd2rCkfH7nY zT;-PeBQS&0IBOJ^xn;fw)<0ro(aXNNt|&wHEJ=HE3`$W`?<>J!kfOkL)wVLmbyD;w z8|gQg(o`bJ2hxdZJt*hoj~~PsEZ#3XUXtOF`gRj?`P{JmdHWEQBmm7u5LL>7=Sq={ z;2XXilqyb$s8SE(TqB6o9O)F3Cq)#yejpl==V}fjXg^2(WiMWw_foxyjuP@9ZH_$0 zuX2k#Mte*7Zr@EPIY2ybwzyS#m0Oh!blA~iEq02qqd1J6i?E}Ld@I8CgV>v&$Fo5_ z_Uy5vQwL+G3|o%MLBp0_I_SHQqlyz%V7rS!v{=LU+{J1s4i)8+7e;l7M8yr)N3hTB^JC#ep|hw~2q%>9Un_;u z45#LoV3+H${IN;P0VVNR6u~alYc(&3VY}!uda;ixiNcj6NiZ^3hwXaBMp-z;V(4AM z0X3>RKs(fX6cJmSj@p%W8S=EOF}{ z28^m&OXX1VbOQLYuD2xb_7b;lGhjk$RAAa4F91li-k}z^h74F1gX}Q`T2If5N;Kgz zfGv9ZLW^4$4B6DkYn!_nWgGSaa9iARfBRWbHeA!KqYe0!k|s8kdudw)>B?=uYwLVi z{V}&z4d4mQL!fOF@AVCQWY8@GXvvnR4u$yW?7p*skCLhuG{Lr0^`yo_BvT&@6-+f&7E@t-h!dT!$7N-SPfFQT4i&e& zy+YQrjmw{DaqEvXK{iq4Qbej{RF>V=yLx6T%_urEB^_98Eo-W}so!et(BpOzGfEYN z++w1G##AXZeY+e}MW7c`)gPJpYTSh|R@tt`-ID**4awg$(PII-QBY%;@+z%TmAq_X zC-IL`O8zY&`h#-)_zK_XKP`KgER&R7k}2(2CgN}rj-7)LZKua(Cd9;vaq*Dk0hB}& zR1YDYLoo5M{7+BV#OKslBahwsjlzh-#GaHSkwq?DDnU^T>`9V@s*j3dWu*eqd+_jw zsUsM6Nc%gls?8W^mw`EYRh0l5Q(!bV(5c%|tzf_vEmnd$J@xrFIIv3VX|YsJFRN6H zrT)$K{DkWAD@s2@7v2Nb4vOsC2o5wUoAtp0=*EY+^dRZ(yAyYH*;o11jjfDo=^m+; zVHe(Fz^P?!kw?3CZ^08AvWw1gn#OeBq^nTKuy)cp^r92Ja2aH;quSYx4qV>AL-f}+ z30z^o1syG2Mz2K%RF}C$TkC3W#}86|i?##&f&st3$}LB3uN}Xmyprqt(D~Ci0bIP!={pX8rO(Y}ZqPAyVLR?99o<{oVH#<~ZeF%;^JP(rRRwIs0O(?& zlx6|nmS0GvFplEJ+?;(LLOhp0EvBEJEeHYE3%#-*#a<}lnkZH4ffr$Ys+vxfgj*No zYQ5-Gg&WtyNH~oJlmrp3u)$7UxA zqA+%JdV<8!SGFh>8baRf#Z+NNtZ%aOg(%nRff~q-xlvtIoWLbjQ|gl|QlDJfN_jgF2OU2c z9X&q%v!i)$$Yv?A6g7k&oR6VAk!#RRLd?yJ%GV)8F^aU>n&Sr$&s`Fyy^=iQeANjf YFM<$-nY{9>azp5qAEy{7%;c;81Ci9;>i_@% diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE deleted file mode 100644 index 6688efc..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference -Author: Martin Cermak -Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhdts-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651567 diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf deleted file mode 100644 index 6ab4075..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf +++ /dev/null @@ -1,15 +0,0 @@ -summary: CVE-2018-18310-elfutils-invalid-memory-address-dereference -description: | - Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhdts-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651567 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -extra-task: /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh deleted file mode 100755 index 09c885c..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # Expect exitcode 2, unfixed package segfaults (139) - rlRun "eu-stack --core=POC-stack" 2 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile deleted file mode 100644 index 6a50f8a..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -# Description: CVE-2018-18310-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC-stack bz1532205.supp - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18310-invalid-memory-address-dereference" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: nothing" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1642606" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5 -RHEL6" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/POC-stack b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/POC-stack deleted file mode 100644 index 2b486e8d4c7d1fedc5fe06ed22de1f335c3d1180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4542 zcmai1-ESOM7609tyY3_#JN`%-t1ihparz-8C_ z-C1{LHrSyk>y7*IkOveRmxl;hs??_nA;dobNJvOUq%Q~w5Fiy)AQT8yLsihAbMGD7 zaU=1QW_RvA=bm%!x##1~m5J$Nj4=Qf2nI~h=vIqc!vL;rlhYVR4i+B60Q%7e8Uw>k zZqWmVe0rKmyc%(2T zU9X>z9&|}I`wM`_qy)9{(Q@_W{{ty`WLs?|(GI3!ivbV75B%6JNmah|(?POgjm?#T!N}qFs4IoBpK8k(af@4Kd2rCkfH7nY zT;-PeBQS&0IBOJ^xn;fw)<0ro(aXNNt|&wHEJ=HE3`$W`?<>J!kfOkL)wVLmbyD;w z8|gQg(o`bJ2hxdZJt*hoj~~PsEZ#3XUXtOF`gRj?`P{JmdHWEQBmm7u5LL>7=Sq={ z;2XXilqyb$s8SE(TqB6o9O)F3Cq)#yejpl==V}fjXg^2(WiMWw_foxyjuP@9ZH_$0 zuX2k#Mte*7Zr@EPIY2ybwzyS#m0Oh!blA~iEq02qqd1J6i?E}Ld@I8CgV>v&$Fo5_ z_Uy5vQwL+G3|o%MLBp0_I_SHQqlyz%V7rS!v{=LU+{J1s4i)8+7e;l7M8yr)N3hTB^JC#ep|hw~2q%>9Un_;u z45#LoV3+H${IN;P0VVNR6u~alYc(&3VY}!uda;ixiNcj6NiZ^3hwXaBMp-z;V(4AM z0X3>RKs(fX6cJmSj@p%W8S=EOF}{ z28^m&OXX1VbOQLYuD2xb_7b;lGhjk$RAAa4F91li-k}z^h74F1gX}Q`T2If5N;Kgz zfGv9ZLW^4$4B6DkYn!_nWgGSaa9iARfBRWbHeA!KqYe0!k|s8kdudw)>B?=uYwLVi z{V}&z4d4mQL!fOF@AVCQWY8@GXvvnR4u$yW?7p*skCLhuG{Lr0^`yo_BvT&@6-+f&7E@t-h!dT!$7N-SPfFQT4i&e& zy+YQrjmw{DaqEvXK{iq4Qbej{RF>V=yLx6T%_urEB^_98Eo-W}so!et(BpOzGfEYN z++w1G##AXZeY+e}MW7c`)gPJpYTSh|R@tt`-ID**4awg$(PII-QBY%;@+z%TmAq_X zC-IL`O8zY&`h#-)_zK_XKP`KgER&R7k}2(2CgN}rj-7)LZKua(Cd9;vaq*Dk0hB}& zR1YDYLoo5M{7+BV#OKslBahwsjlzh-#GaHSkwq?DDnU^T>`9V@s*j3dWu*eqd+_jw zsUsM6Nc%gls?8W^mw`EYRh0l5Q(!bV(5c%|tzf_vEmnd$J@xrFIIv3VX|YsJFRN6H zrT)$K{DkWAD@s2@7v2Nb4vOsC2o5wUoAtp0=*EY+^dRZ(yAyYH*;o11jjfDo=^m+; zVHe(Fz^P?!kw?3CZ^08AvWw1gn#OeBq^nTKuy)cp^r92Ja2aH;quSYx4qV>AL-f}+ z30z^o1syG2Mz2K%RF}C$TkC3W#}86|i?##&f&st3$}LB3uN}Xmyprqt(D~Ci0bIP!={pX8rO(Y}ZqPAyVLR?99o<{oVH#<~ZeF%;^JP(rRRwIs0O(?& zlx6|nmS0GvFplEJ+?;(LLOhp0EvBEJEeHYE3%#-*#a<}lnkZH4ffr$Ys+vxfgj*No zYQ5-Gg&WtyNH~oJlmrp3u)$7UxA zqA+%JdV<8!SGFh>8baRf#Z+NNtZ%aOg(%nRff~q-xlvtIoWLbjQ|gl|QlDJfN_jgF2OU2c z9X&q%v!i)$$Yv?A6g7k&oR6VAk!#RRLd?yJ%GV)8F^aU>n&Sr$&s`Fyy^=iQeANjf YFM<$-nY{9>azp5qAEy{7%;c;81Ci9;>i_@% diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE deleted file mode 100644 index eb0721d..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -Description: CVE-2018-18310-invalid-memory-address-dereference -Author: Martin Cermak -Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1642606 diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp deleted file mode 100644 index 70f0f80..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp +++ /dev/null @@ -1,25 +0,0 @@ -{ - - Memcheck:Cond - fun:_nl_explode_name -} -{ - - Memcheck:Cond - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:new_composite_name -} -{ - - Memcheck:Cond - fun:_nl_explode_name -} diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf deleted file mode 100644 index 86d6871..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-18310-invalid-memory-address-dereference -description: | - Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1642606 -contact: -- Martin Cermak -component: -- nothing -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -extra-task: /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh deleted file mode 100755 index ba44f8d..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -# Description: CVE-2018-18310-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - arch | grep -q ppc64le && VGSUPP='--suppressions=bz1532205.supp' || VGSUPP='' - TMP=$(mktemp) - rlRun "valgrind $VGSUPP -q eu-stack --core=./POC-stack |& tee $TMP" - rlRun "fgrep 'Invalid read of size' $TMP" 1 - rm -f $TMP - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile deleted file mode 100644 index 1728cdc..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC1 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1651200" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/POC1 b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/POC1 deleted file mode 100644 index 1f6c719c0078b36858065d83b4ae69d7c5d91b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3TW=dh6vxkc*W_YK4Wd@0f;5pLk)md^wl|JJ5ptELi6W>_FH(?@$nM5f3M4`C zR=vF77bGOU0!aM`<^hR5(RaQ8@A(4djVC~7=A5~#*G}Ls*>l-BGiPVc{PrwvB&XTo zNAs(9Kl`K;uL@SP9mlOsySx5@5RvS(|ApvwdF1~5BFzCxKdPcSa?9G1YMU}i5=he& ze=W$e41coHRwI)n2~Uhm?9+ND5~42sQ9d=Js1wIRG+VLi5c~7rZhd^KQt{M8C=VL) zzf|6W?C#Nj4Q9_qul8W+MF79O2w?GSG}?n;=I@yq*!DL+6wBMU?_U#fxE?k|J8HI~ z^;RU7@AMDEPLiwsm9=ZM)Z18k&+dTtzALCSMLDGAF2Vjewe%YZf*DXOP8_T zgK+TlC{I!d2l=Tg54o22yE%k6lRSYi9Sk7MPL7Tq9p?}ppXB{;`}X~nL7rq^L3rB# zItlxSUpzQXj{0&Ttyx`jB%GGgo4Rj^wX4=XzNQ~R9jj^w0n~nyW&r}O1BgY--Z%Xy zvBz!eQ>9yYWS`cSvmcIvm-M2z{}_LKK4dTB9FMcG?^-XZcCWC7w*Oc! z`c3lxpbD1A1NK{$J?Yon)fB-kvtS`5@R9*o8{8{$Ix9u(YrSDO}eqTqj zCEtUp)ztFMK0EU5xHX!2Yuuj(4Dy4A$A~;L5HAGnb(Jqxnx?B|Ok9gyP9qaHkcsVf zN0EAe{xLI=Z-Zi@BeT)oj(l(dCOWK4&Z5x{v-0ld`wlBx7h>fNhn3P-Mq1*fY--)n4vgc_0LXXD4PX;(RB3b z(z4f|q;nXmLX#$vjd6ymc=bJf-j00ue++eQ50o%e$o#I>Fmb{;2(tCT!(&L(FIB2Z z(rg8&$k?VeHki3IZXwIE@FbKJUB>@rJCeC^6cKZm3VCQ8Q+BNLP;(X@G=}UW-*hcc zZJz4ynLPC8u{^ZET%Dgf{Z8JxS;$*8iw|YqdgH=*EAA`it|*tc@@@pg;^H%bHhd?F zb})t2*YopP{djV|E031gH8i(QV^zt$9DJ9gnAK>(EMV~os&A!HU=DmLt2y5*%4RLG zT1Ka2sC5_6ew?K!MVDWki4Ae=*WCqAwsB1}Lg`m3ndvOrAUVxeZ!FK@X{!5VfcrDf zQgI$jy=AiJxMA7;W1SZ)DCnt?9{S5HMezY+EYCqu&MJT^pX-&v#B%)!i?XJ$v~K&a JHO^9ie*uc$G3o#S diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE deleted file mode 100644 index 3c71880..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -Author: Martin Cermak diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf deleted file mode 100644 index 417d678..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf +++ /dev/null @@ -1,13 +0,0 @@ -summary: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -description: '' -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -extra-task: /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh deleted file mode 100755 index b29cf5b..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - rlRun "eu-size POC1" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile deleted file mode 100644 index 8375a2c..0000000 --- a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1646479" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/POC2 b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/POC2 deleted file mode 100644 index 2221cf4e3e0af720db0da033c2a2e49e1b358477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3-EJF26vxkc*CeqiHHcb~3erT1M2ect+TJ(@MaWf}CW@d!{g8r$gm)cRDUbxk zTlM1x-yk9J3Ly0n%mos?qW8Q2_j!SG#}%M6bIyFM*G}Lsd1rQZ&&=5~XMR3Qo5^Ya z@T1Dw-OoO0$7_PsXvJ}}-Rf+7AVeew?W+)-4!_x}j6mu&)xeLcEsx!{x~%R^n2L0w)8 zQ%#56dqC`0YgiOK0QpJ_K`r&&|P(zxAP5*|~lHnux=VupwGeqZw^9 zBe8O4a3FS*OpULuU!$eo#@2gw2fQb5cvoM){M=Iy-T{z5R2^>puyFI;>fY~{F5`U{ z!r{}SEJ-08W~Zt>u2XrNYQ&2z_gf$X@0-Zf7p;S}&=0FBd}Ff9&V| zCi#C*2U|RQ?6+#W(yxW->j%UPsPc>e0S4BrPp~PF7r;M%7L4P^8hcBA;dhj9+}D|G z$@ida-D>$J&W`-zeVTh~(w{mEvxA4nh&*QsOe2hSnGaT)rfWq^T#sE&BNI1~iLF*! zk-ArTy#4X5Qpq!3DJD8Hf%10cg9|XxVP$d_jdz)qcembmSlPS~D{nZglo^fr{5j>e zV&x@br3Z`9#q)ydy3b}Z^hpNcfy>are`KiCjFaxjd2b3srFg4}O*-LihRt9oeB&%@ zME}2%)CCOHnr3gWZ!xr%XDHiih7t#uIhbOT3^hdgNqb`cPf#W`Eru4b=sDScs#-ty{UeRkQd|)~z=#T(@Fev35ndyp?AoAQtDJ z3AEuek+*{xtiGO|&+5n1>s`6E#IBJ!bsDQm?&09GB*m;o3uXa}cToLT8U<# zy}WGJ602o)N`_iz0qrMQic)m>#hKU;$Nt$NY2Hx!m0D&xivlF4+3uQ(g2dC5 zdo+OYnPjOrkEPxU*>m2oZ2z&(3+5Db)tesr%Pd9l24gNSKv2vofHLpvmE6Q~{V9vG PX0Wto`>!?0Qh -Bug summary: 0 elfutils: eu-size cannot handle recursive ar files [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646479 diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf deleted file mode 100644 index 65de371..0000000 --- a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -description: | - Bug summary: 0 elfutils: eu-size cannot handle recursive ar files [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646479 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -extra-task: /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh deleted file mode 100755 index ff22f65..0000000 --- a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - TMP=$(mktemp) - rlRun "valgrind -q eu-size ./POC2 |& tee $TMP" - rlRun "fgrep 'Process terminating with default action of signal 11' $TMP" 1 - rm -f $TMP - rlRun "eu-size ./POC2" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/Makefile b/tests/Security/CVE-2018-18521-divide-by-zero/Makefile deleted file mode 100644 index 0f5c03e..0000000 --- a/tests/Security/CVE-2018-18521-divide-by-zero/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18521-divide-by-zero -# Description: CVE-2018-18521-divide-by-zero -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18521-divide-by-zero -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18521-divide-by-zero" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1646484" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/POC2 b/tests/Security/CVE-2018-18521-divide-by-zero/POC2 deleted file mode 100644 index f4edc4036c5aa8ea0ddd75ca50366b7c3378ed3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3-EJF26vxkc*CeqibrD#R3erT1M2ect+TJ(@MaWf~CW@d!{g8r$)a-6tr9cuC zFKXci-yk9J3Ly0n%mos?qW8Q2_j!SG#}%M6bIyFM*G}LsdFR7(X3m~D^V?b4Oir`I z4{B@oKKZB{uL)MG6UXgtr?>H*5RvS(pF;F{JaWG_0;yM20Y9p;I(EzYvTB<$NfJoY z6n|~VvJ8K+(orLmBneN9OYGA|Hxi;D{ZT%(qNp3kLbTek>Ja<2Z?`_YU8#6#B9sSB z`7D*UD7*Xgti$}-_~jlfKM&xy=K(C8jmLWs%>6w#2iyM5_r=Qgod?%M9Bzay(TQ5^ zXrmp8mAiujv6JMge|7yDE%gSL-Zyu_d-|Gp_0`MI$g8&i;r5*etHV6WK8Nsh z@I?|14j(=`O^ya~A+32`b0nOW(iPn&clxRoN8WP)Xy8Ld5J1I~G!GDP9Y8DrK!w`A z=|_n@Zd*HtGWLCV2S9sI_S$Q*H^Y^L-ErOWKcWFFWj}&d?vQVV*`tKzy4AKMWAhz% zXpfZG9<|H%4HE~}_f+W>{<3##%ZZ1h;03)X#vk*K_lN9dp5t~F;;!|AYWE8vwEf3A z?_WXwAJll18By!R8VVEC0K1Sr3fp{P&)>S@OX_~H;F>yV1IgL!*L?(7R zT}A5s+7o6Xp9aN5Mek(Ux<}A99BwaF`qvrw-qZd z5i31dgg%}ZRNwt?CPSa*5FWS;9sEazO3gUwj+}8*7%IhEO>EK$&%1^~hVoVw&+?aQ znhDYOSCYDfp<2`I?e#5&Hi`^od(BYd0Q-r4PcqaH?q*%aUNzUj#vHj(-_KT z!Cy2TeY&*l^{43^hN{%0iDYAvp(ETzS8tj;;X4Sj_0i*F zNYl^MRg1m2b7|aSmSy2dC@H#v&sHarcjG7`<}MfRp>a&NV|@=bd*MNI z#6I##*YZ^GRDa*xLw}yQhca{9kvNq1&KnoLcVb-d?ul}FDRVm@mKOgLXu~;Ow1XL} zy`G=X+9%WRt8#0IJtK2!G!~WIyBpI>C1Wr)P~s9o@68+|e(lzyd>na`pP zkkf4SC+ -Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646484 diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/main.fmf b/tests/Security/CVE-2018-18521-divide-by-zero/main.fmf deleted file mode 100644 index f288788..0000000 --- a/tests/Security/CVE-2018-18521-divide-by-zero/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-18521-divide-by-zero -description: | - Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646484 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18521-divide-by-zero -extra-task: /tools/elfutils/Security/CVE-2018-18521-divide-by-zero diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh b/tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh deleted file mode 100755 index 4f83999..0000000 --- a/tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18521-divide-by-zero -# Description: CVE-2018-18521-divide-by-zero -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # This doesn't reproduce on ppach64 and ppc64le. - TMP=$(mktemp) - rlRun "valgrind -q eu-ranlib ./POC2 |& tee $TMP" - rlRun "fgrep 'Process terminating with default action of signal 8' $TMP" 1 - rm -f $TMP - rlRun "eu-ranlib ./POC2" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile deleted file mode 100644 index 075bcd7..0000000 --- a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Description: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1651203" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/POC2 b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/POC2 deleted file mode 100644 index f4edc4036c5aa8ea0ddd75ca50366b7c3378ed3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3-EJF26vxkc*CeqibrD#R3erT1M2ect+TJ(@MaWf~CW@d!{g8r$)a-6tr9cuC zFKXci-yk9J3Ly0n%mos?qW8Q2_j!SG#}%M6bIyFM*G}LsdFR7(X3m~D^V?b4Oir`I z4{B@oKKZB{uL)MG6UXgtr?>H*5RvS(pF;F{JaWG_0;yM20Y9p;I(EzYvTB<$NfJoY z6n|~VvJ8K+(orLmBneN9OYGA|Hxi;D{ZT%(qNp3kLbTek>Ja<2Z?`_YU8#6#B9sSB z`7D*UD7*Xgti$}-_~jlfKM&xy=K(C8jmLWs%>6w#2iyM5_r=Qgod?%M9Bzay(TQ5^ zXrmp8mAiujv6JMge|7yDE%gSL-Zyu_d-|Gp_0`MI$g8&i;r5*etHV6WK8Nsh z@I?|14j(=`O^ya~A+32`b0nOW(iPn&clxRoN8WP)Xy8Ld5J1I~G!GDP9Y8DrK!w`A z=|_n@Zd*HtGWLCV2S9sI_S$Q*H^Y^L-ErOWKcWFFWj}&d?vQVV*`tKzy4AKMWAhz% zXpfZG9<|H%4HE~}_f+W>{<3##%ZZ1h;03)X#vk*K_lN9dp5t~F;;!|AYWE8vwEf3A z?_WXwAJll18By!R8VVEC0K1Sr3fp{P&)>S@OX_~H;F>yV1IgL!*L?(7R zT}A5s+7o6Xp9aN5Mek(Ux<}A99BwaF`qvrw-qZd z5i31dgg%}ZRNwt?CPSa*5FWS;9sEazO3gUwj+}8*7%IhEO>EK$&%1^~hVoVw&+?aQ znhDYOSCYDfp<2`I?e#5&Hi`^od(BYd0Q-r4PcqaH?q*%aUNzUj#vHj(-_KT z!Cy2TeY&*l^{43^hN{%0iDYAvp(ETzS8tj;;X4Sj_0i*F zNYl^MRg1m2b7|aSmSy2dC@H#v&sHarcjG7`<}MfRp>a&NV|@=bd*MNI z#6I##*YZ^GRDa*xLw}yQhca{9kvNq1&KnoLcVb-d?ul}FDRVm@mKOgLXu~;Ow1XL} zy`G=X+9%WRt8#0IJtK2!G!~WIyBpI>C1Wr)P~s9o@68+|e(lzyd>na`pP zkkf4SC+ -Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhdts-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651203 diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf deleted file mode 100644 index 645e9a6..0000000 --- a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf +++ /dev/null @@ -1,15 +0,0 @@ -summary: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -description: | - Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhdts-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651203 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -extra-task: /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh deleted file mode 100755 index aa345b7..0000000 --- a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Description: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - rlRun "eu-ranlib POC2" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7146/Makefile b/tests/Security/CVE-2019-7146/Makefile deleted file mode 100644 index 1dd17ca..0000000 --- a/tests/Security/CVE-2019-7146/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7146 -# Description: CVE-2019-7146 -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7146 -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE poc - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7146" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7146/PURPOSE b/tests/Security/CVE-2019-7146/PURPOSE deleted file mode 100644 index 0770c49..0000000 --- a/tests/Security/CVE-2019-7146/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7146 -Description: CVE-2019-7146 -Author: Martin Cermak diff --git a/tests/Security/CVE-2019-7146/main.fmf b/tests/Security/CVE-2019-7146/main.fmf deleted file mode 100644 index d690650..0000000 --- a/tests/Security/CVE-2019-7146/main.fmf +++ /dev/null @@ -1,14 +0,0 @@ -summary: CVE-2019-7146 -description: '' -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7146 -extra-task: /tools/elfutils/Security/CVE-2019-7146 diff --git a/tests/Security/CVE-2019-7146/poc b/tests/Security/CVE-2019-7146/poc deleted file mode 100644 index a27f86b3f45ace72b0347dd898540e4946d33e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmYk2JxT*n6otQ+yu=p`8b~DwPHAHjWENoIPhs$nxPdTW0)q;UVrQlhL2wHZ+=3gh zw#pI&onEX1BPTN>x$qT_^X|Fl-uvC|o-u}^N|e!S`@uRN_+HHvACDRvtg}WHkmir9 z6P^K40W44kjtul->w0nOniXi~n!Nv~jjR(_H4y5jk?GTAn2xOz9Rr^Rs-$W93niew z0`(W`#19~p%i_&43=9ln>%*$9&1Z0h}gLFrUvF zn33<+4u}1A7;J{ai<`UF^<`@-^Ijy|asTjaW~)8q>E*L^H)*$>kN)}V+p|8YX9;*Z H_ -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # https://svn.devel.redhat.com/repos/srtvulns/trunk/components/elfutils/CVE-2019-7146/ - # Expected Output - # An error instead of segfault. - rlRun "valgrind -q --error-exitcode=99 eu-readelf -a ./poc" 1 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile deleted file mode 100644 index b022ffa..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC1 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1680056" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/POC1 b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/POC1 deleted file mode 100644 index 63698a3e8f18c2e78462cf60faac676bf5000912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3208 zcmb_ePiP!f82`;qlHGKZZIU(E)FLa@YQde&CYxlN+BP+9nl$1;5;2DuXLo1+nBCbp zJ6jXMrchc^3W9>tgP?+VD+IjcAX=ygPaegC6|@M&g6KgMT3q?wd~bGklEsTZn0fDg z@B7~O-uLgl&9g7e1Qg{k95nvKQlCQoP5MnS8Ax}!U8YW95Cd48z4ptF+5s%zrtUSt zcI8(6=ymG-bNTPT>W_;qE`JxON57<1zM|h9`dztY_lwaz8tudY+~4mZ5Ow)B?I!@B zW?Ln*Ae+2iDjPXeSMfc74r0Y6v32p2$jJ^Zk~g9Bob^z`+*dwS?{=0<+gV2$@bWCV zJmPRlh$g#Lxk}gj0Nw!*q~8oep&(6#lrCTZ*9F^yi&8|0brVtPYF)=623v_x`tLs( ziH6lkzcLW)dlVf34X1|G&}8^{`01g!D3Q$q62)r8NYs_^$*>v%It0@_6>yoR4t((Z z5YU-|8X@78Xy5?Qr6_YzB?<(ez+5yD20{lBrd1+9x8$9Ro*E)e-$*kL@axJl{+u33~KQS_# z9?OkoM^mGj(daN=s{JV)4q$b<;ReFigWLWtDhEx3a|( z>*?|Mcq$ez#Nzpyt!G!`YgW}ZvUb&y5&M4}Ig>iVN1pi4BMVEcS=EA;MXmIfVQ;J% zs4SIC6w1|%UPiX4Tfn*L>B-nLi^3D)h-2{)$1ll?$&@yn(vnAs-kwhZ4#D{dBB@SC z`mP41d%I?Of)pz>{~X&>B$S*FEI15`D1PDx6|uLY_kB_k9_2}-}x5(O?=F9bQgHx*T39GUSop{ zdxiJleWlI*i^6em~U&a~fr+VPm|F$@j z6JWnK8m|8iazKd(fd^8*Y`54Zemey?P$@pWkaDtpcMqEqG=HEoq#WfP;WN4q+}lt< zr0y`wlYhJj$-riO(#C$P6G5??_Q_3#CKE?CIFCV)UzRgz|CjxEE`ANtSam4Q6 lb)MMQ1Fm diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE deleted file mode 100644 index f09b1b4..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read -Author: Martin Cermak -Bug summary: elfutils: heap-based buffer over-read in read_srclines in dwarf_getsrclines.c in libdw [rhdts-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680056 diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf deleted file mode 100644 index b598856..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7149-elfutils-heap-based-buffer-over-read -description: | - Bug summary: elfutils: heap-based buffer over-read in read_srclines in dwarf_getsrclines.c in libdw [rhdts-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680056 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -extra-task: /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh deleted file mode 100755 index bac258f..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - rlRun "which valgrind eu-nm" - # With RHEL I saw the invalid read of size 1 on aarch64 and ppc64le - # using devtoolset-7-elfutils-0.170-5.el7. I also saw it on x86_64 - # with base rhel elfutils-0.172-2.el7.x86_64. - # IOW - It doesn't reproduce "everywhere". - rlRun "valgrind -q --error-exitcode=99 eu-nm -C POC1" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile deleted file mode 100644 index 99a9c61..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1680046" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC1 b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC1 deleted file mode 100644 index abd8c65934356f96aee5b45bb9a61fc469499471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10442 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 diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC2 b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC2 deleted file mode 100644 index 0c1a4d0ddc99da693633ee0fb3c0eb453251fed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10467 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 NEi*dr;2{+2{~yGY^M3#U diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE deleted file mode 100644 index c26e276..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -Author: Martin Cermak -Bug summary: elfutils: segmentation fault in elf64_xlatetom in libelf/elf32_xlatetom.c [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680046 diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf deleted file mode 100644 index e2f01bc..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -description: | - Bug summary: elfutils: segmentation fault in elf64_xlatetom in libelf/elf32_xlatetom.c [rhel-7] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680046 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -extra-task: /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh deleted file mode 100755 index 3151176..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # An error is expected (2), but a SEGV is not (139). - # Reproduced with elfutils-0.172-2.el7, verified with elfutils-0.176-1.el7 - rlRun "valgrind -q --error-exitcode=99 eu-stack --core=POC2" 2 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile deleted file mode 100644 index 352a559..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1679071" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/POC b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/POC deleted file mode 100644 index e449ac211e908c4b89b33586751f62d5c5340eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10393 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 diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE deleted file mode 100644 index dbdbfc3..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -Author: Martin Cermak -Bug summary: elfutils: Out of bound write in elf_cvt_note in libelf/note_xlate.h [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679071 diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf deleted file mode 100644 index a8720df..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -description: | - Bug summary: elfutils: Out of bound write in elf_cvt_note in libelf/note_xlate.h [rhel-7] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679071 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -extra-task: /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh deleted file mode 100755 index 5b1c28e..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # Reproduced with elfutils-0.174-5.fc28.x86_64 - # This is expected to fail (1), but not to segfault (139). - rlRun "valgrind -q --error-exitcode=99 eu-elflint -d POC" 1 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile deleted file mode 100644 index 6d2f4dc..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1679078" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/POC2 b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/POC2 deleted file mode 100644 index 0776e6191a98595bf229c769df307e28e2fb7de2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2659 zcmdT`U1(fI6#jNIyPcSL-NsZ+Q#7_IsMvHHN(r=L7HthBl&XzBiKZ-)g_uCIE0z}W zvx!Xzu}EZJtPgqgRf+_ukTkVz9)xYkLxlQ+bg?$Yg4i0={p|-r;m`&c)B(yY)O6C!wZNBKMMNTK0Jd7GR-ly+6z7$YePy8CI#ROd z&=NL!18&9^voFhb2D};05C zV1yjc7t%IJfN@%UZS`Yt2E)JuQQ!x@HHHD~>`oos*`3_co$ATF)zsJ9)NBpX5jybP zp$=?vp-{&st1L+#)BuO+sm$_ z)2{B}rO@~Ze}YryO)aiV{}Fs^@S(fZ3cv9}A)RFTL<2OWdeT=s&<0>1fQLlH6jmb8 zBij=}^{I+P5PMra6VzrShk|%-u>0AdB@ygP1g!^yczaNrmCL=|oYLd~`pec{$|+q> z`!w7Y>Kz?YIpK%*vtJRdlj~?UIS3+e4QCmdgfaZ)*#QS0(}2f zrs&_V{4@jk;}+Y>{99f7iv926Flo;!&4d{Ka3FKC?|Mt*;#sBR6~Op94;I-tQzFOy zJ*SG_&jFEjCO+Zh=y!ft>AbS>dGJh*yXBdMV423s(CCD-XE37lnTX{RgTHNveYb9C zRb*IImKpK~0(jrmouhtE49vv9}1y-7qT)Upl`75|68{ diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE deleted file mode 100644 index 7fc62cd..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -Author: Martin Cermak -Bug summary: elfutils: heap-based buffer over-read in function elf32_xlatetom in elf32_xlatetom.c [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679078 diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf deleted file mode 100644 index 7883a64..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -description: | - Bug summary: elfutils: heap-based buffer over-read in function elf32_xlatetom in elf32_xlatetom.c [rhel-7] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679078 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -extra-task: /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh deleted file mode 100755 index 06e697c..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # We expect 1, but not 99 ... - # Reproduced with valgrind-3.13.0-13.el7 and elfutils-0.172-2.el7 - # Verified with valgrind-3.14.0-16.el7 and elfutils-0.176-1.el7 - rlRun "valgrind -q --error-exitcode=99 eu-readelf -a POC2" 1 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile deleted file mode 100644 index 47c2e7b..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -# Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw -# Author: Vaclav Kadlcik -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2014 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE dwz-overflow.elf - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Vaclav Kadlcik " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 5m" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1139128" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE deleted file mode 100644 index 419b4a6..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw -Author: Vaclav Kadlcik -Bug summary: elfutils: integer overflow, leading to a heap-based buffer overflow in libdw [rhel-6.6] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1139128 diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/dwz-overflow.elf b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/dwz-overflow.elf deleted file mode 100644 index 98cdfb0594ce32244fc46df70e826bc5b13a6674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24928 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 diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf deleted file mode 100644 index a2e4032..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: 'CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer - overflow in libdw' -description: | - Bug summary: elfutils: integer overflow, leading to a heap-based buffer overflow in libdw [rhel-6.6] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1139128 -contact: -- Vaclav Kadlcik -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 5m -extra-summary: /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -extra-task: /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh deleted file mode 100755 index 0f8e722..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -# Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw -# Author: Vaclav Kadlcik -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2014 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -# Reproducer by Florian Weimer -REPRODUCING_FILE=dwz-overflow.elf - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp $REPRODUCING_FILE $TmpDir" 0 - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - # eu-readelf since 0.153 was vulnerable. - # The following crashed with "Segmentation fault" - # and exit value 139. - rlRun "eu-readelf -w $REPRODUCING_FILE" 0,1 'eu-readelf should not crash' - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd From 5ccad7a2874a94ca6c22f0f570bb2096514a1abe Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Tue, 16 Nov 2021 11:59:53 +0100 Subject: [PATCH 08/80] CI Gating: Use Regression and Sanity tests in automated runs --- .../Makefile | 64 ----------------- .../PURPOSE | 5 -- .../addr2line-buffer-over-flow1 | Bin 1860 -> 0 bytes .../main.fmf | 16 ----- .../runtest.sh | 39 ----------- .../Double-free-libelf | Bin 1896 -> 0 bytes .../Makefile | 65 ------------------ .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 42 ----------- .../Buffer-over-readelf | Bin 2488 -> 0 bytes .../Makefile | 65 ------------------ .../PURPOSE | 5 -- .../bz1532205.supp | 25 ------- .../main.fmf | 16 ----- .../runtest.sh | 43 ------------ .../Makefile | 64 ----------------- .../POC-stack | Bin 4542 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 15 ---- .../runtest.sh | 39 ----------- .../Makefile | 64 ----------------- .../POC-stack | Bin 4542 -> 0 bytes .../PURPOSE | 5 -- .../bz1532205.supp | 25 ------- .../main.fmf | 16 ----- .../runtest.sh | 42 ----------- .../Makefile | 64 ----------------- .../POC1 | Bin 4000 -> 0 bytes .../PURPOSE | 3 - .../main.fmf | 13 ---- .../runtest.sh | 38 ---------- .../Makefile | 64 ----------------- .../POC2 | Bin 4000 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 42 ----------- .../CVE-2018-18521-divide-by-zero/Makefile | 64 ----------------- .../CVE-2018-18521-divide-by-zero/POC2 | Bin 4000 -> 0 bytes .../CVE-2018-18521-divide-by-zero/PURPOSE | 5 -- .../CVE-2018-18521-divide-by-zero/main.fmf | 16 ----- .../CVE-2018-18521-divide-by-zero/runtest.sh | 43 ------------ .../Makefile | 64 ----------------- .../POC2 | Bin 4000 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 15 ---- .../runtest.sh | 38 ---------- tests/Security/CVE-2019-7146/Makefile | 64 ----------------- tests/Security/CVE-2019-7146/PURPOSE | 3 - tests/Security/CVE-2019-7146/main.fmf | 14 ---- tests/Security/CVE-2019-7146/poc | Bin 428 -> 0 bytes tests/Security/CVE-2019-7146/runtest.sh | 41 ----------- .../Makefile | 64 ----------------- .../POC1 | Bin 3208 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 43 ------------ .../Makefile | 64 ----------------- .../POC1 | Bin 10442 -> 0 bytes .../POC2 | Bin 10467 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 40 ----------- .../Makefile | 64 ----------------- .../POC | Bin 10393 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 40 ----------- .../Makefile | 64 ----------------- .../POC2 | Bin 2659 -> 0 bytes .../PURPOSE | 5 -- .../main.fmf | 16 ----- .../runtest.sh | 41 ----------- .../Makefile | 63 ----------------- .../PURPOSE | 5 -- .../dwz-overflow.elf | Bin 24928 -> 0 bytes .../main.fmf | 16 ----- .../runtest.sh | 56 --------------- 78 files changed, 1942 deletions(-) delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/addr2line-buffer-over-flow1 delete mode 100644 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/main.fmf delete mode 100755 tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Double-free-libelf delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Makefile delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE delete mode 100644 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf delete mode 100755 tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Buffer-over-readelf delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Makefile delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp delete mode 100644 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf delete mode 100755 tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/POC-stack delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE delete mode 100644 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf delete mode 100755 tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/POC-stack delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp delete mode 100644 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf delete mode 100755 tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/POC1 delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE delete mode 100644 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf delete mode 100755 tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/POC2 delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/PURPOSE delete mode 100644 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf delete mode 100755 tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/Makefile delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/POC2 delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/PURPOSE delete mode 100644 tests/Security/CVE-2018-18521-divide-by-zero/main.fmf delete mode 100755 tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/POC2 delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/PURPOSE delete mode 100644 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf delete mode 100755 tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh delete mode 100644 tests/Security/CVE-2019-7146/Makefile delete mode 100644 tests/Security/CVE-2019-7146/PURPOSE delete mode 100644 tests/Security/CVE-2019-7146/main.fmf delete mode 100644 tests/Security/CVE-2019-7146/poc delete mode 100755 tests/Security/CVE-2019-7146/runtest.sh delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/POC1 delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE delete mode 100644 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf delete mode 100755 tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC1 delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC2 delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE delete mode 100644 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf delete mode 100755 tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/POC delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE delete mode 100644 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf delete mode 100755 tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/POC2 delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE delete mode 100644 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf delete mode 100755 tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/dwz-overflow.elf delete mode 100644 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf delete mode 100755 tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile deleted file mode 100644 index 09a9e16..0000000 --- a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE addr2line-buffer-over-flow1 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1625260" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE deleted file mode 100644 index 3281134..0000000 --- a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read -Author: Martin Cermak -Bug summary: 2 elfutils: Heap-based buffer over-read in libdw/dwarf_getaranges.c:dwarf_getaranges() via crafted file [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625260 diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/addr2line-buffer-over-flow1 b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/addr2line-buffer-over-flow1 deleted file mode 100644 index 8db05cc5e161d3235c6e1a95595c23404b9de5dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1860 zcmdT_Jxmi}7=FI%l@_Q3G@?FWt&Kr z%46l;FR8`(zVCghhu@ai)M)>BbY>|&x%{9qw+(v6 z##T~U4;|nrfX4vN00=_>g*7Ncfbt_wIT0ml**?^90P6K)#49lhRn&DQAz~JQ_3`L6 zvf?oVK(vMQ3oLRIK*OCTK*=7YYEc?Ka*sux6ERE1T~cF@zz`XunAidGj*~YYhoY(j z02ERiL+{$sR)@|1 zM&jS}pYitz(E4}o|3G-pnYgP7fZlY4fsJ%0G+`6yW1^c=v^^_pFBn>8Sa-n_U=YQ)m z6?VzVF5tZ40ZH#_-q+JedcGUVVX67%6(31MtQy_b?X2lZvrtUidcI~`_C-f>dOGcz zm!%c%sIbUISI?W0@O-fxS1`1q{Q+C6`?EoCOuUQw^l-xgUDY^=HvlwYe5#NT`@4kJ zJyNe?5fD8j -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -extra-task: /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read diff --git a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh b/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh deleted file mode 100755 index fa3fc0c..0000000 --- a/tests/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read/runtest.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Description: CVE-2018-16062-elfutils-Heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # Reproduced with elfutils-0.172-2.el7.x86_64 valgrind-3.13.0-13.el7.x86_64 - rlRun "valgrind -q --error-exitcode=99 eu-addr2line -e addr2line-buffer-over-flow1 -- 500 50 10 -1000" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Double-free-libelf b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/Double-free-libelf deleted file mode 100644 index da7ce216809f9ed95d5d2f5c662c3e02c7963d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1896 zcmeHIT}TvB6#nka?z)>(t*wYz*5aBP*`{cPAhn2vi4Q^+q>{7i?)IaWxT~xZxX}+1 z20>9N14Z?ay+vDO^dPCE(M$EzOGMB{5EK<;AWWP)Gdn|2LB00D&b@Q*Ip25Ax#!Lf z?`Yb|7z2h?RRzExg26Z@2kFF&^nOuQ)z+q6 zb-Hb7Lg~z{Z+YuUN7Luio^WocTJDtP=bfo{k@TH6_tFkmO>bpI1+cMLkS&gl2_@Dk z%W@PfZ>M{{j1|x1djkcHRh6HUH||e$yStWou6swKmC0KnWjcwP5s+ByTlSvb)+U#s z?@cJ@gJD??q1fje5$oo^Puc?$v$GTHADkYVm*lA@wxY4g{8M8aw!hq0byw&IR(^3l zvIJ6`PRAlx?P{`5xRc@pjdfWYyYiQN*fu4j=rn!Jc?91b-~v$H$~< z%=#kT{&*x2hd&&Q2jPDhi@`q>j)eLTbOb}8zQ_Q$&5+EO4jqXeU8XIBBOxz3x&dkz zimQe9n~4_y8qHTQ*j3dIGy`xUfB>(zK@Jg1EW6|{1;-v3KmY>Yb(?%i zk~Ru7l;IHA40bBJsfw+zX z7|-ZxxWRy0eNNE73AmWaLqnMjR35IoJfq75po|!^fpQwPqzS8ZM*;2f>Z7j|J@8pFr1tKl;Z4FB>4gK*UW9MntX zu;lR6z)k&ZsXvUfr%~%u?KvU -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE Double-free-libelf - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-16402-double-free-due-to-double-decompression" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: nothing" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1625052" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE deleted file mode 100644 index 2b1d552..0000000 --- a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -Description: CVE-2018-16402-double-free-due-to-double-decompression -Author: Martin Cermak -Bug summary: 2 elfutils: Double-free due to double decompression of sections in crafted ELF causes crash [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625052 diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf deleted file mode 100644 index f7be31f..0000000 --- a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-16402-double-free-due-to-double-decompression -description: | - Bug summary: 2 elfutils: Double-free due to double decompression of sections in crafted ELF causes crash [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625052 -contact: -- Martin Cermak -component: -- nothing -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -extra-task: /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression diff --git a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh b/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh deleted file mode 100755 index 96e322b..0000000 --- a/tests/Security/CVE-2018-16402-double-free-due-to-double-decompression/runtest.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-16402-double-free-due-to-double-decompression -# Description: CVE-2018-16402-double-free-due-to-double-decompression -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - TMP=$(mktemp) - rlRun "valgrind -q eu-readelf -S ./Double-free-libelf |& tee $TMP" - rlRun "fgrep 'Invalid free()' $TMP" 1 - rlRun "fgrep 'Section Headers:' $TMP" - rm -f $TMP - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Buffer-over-readelf b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/Buffer-over-readelf deleted file mode 100644 index 4b214cd6a4ccea57a812360be992777dc12ccff2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2488 zcma);&ubGw6vw}_o7zoNZIT8nR&<5>yWRezN(GG+e}JWk+LNMenr$s@HYK~3dXT1y zAfCJlqTtPIkKQ~AUi=pXFa8f6B5!_dUbe0HA<53Xoj32jnfGS0b$#xJWeFq*TmZlX z9BT)Fg)-0t$|#}m@z>Y#i@ZCylZV*;@$*=t-m0OqTB=6L$IA(?n+J>*@i_8r^C7w0k}E8;Lf^}-jp}tPK=FBjqi+KbkE)m zs_rd6R`QW)Z)tJz9I)vvVl=L;k2dOSepnr?z!FRKI)tF9pYxCi5!x$Zj7%4GJoEq< z$cR6OdPspZgq%^5mHv>h&+3AFt0}cwt(Jh;?CU+$>N8T{L%W$!nmc%WB-?j_1c#Fl z$^IkqQ!@+;4sgr#%~BAD=_g~}5X-Z(Gw#`&^9$$rDvj|~x=gE=tdbW!tHpi=UbN9r z&nHn#Eys(4%@|(Qk9~NRD1uiFDo>Xm`;|%~*nrmv)_g5m376_z@L+8v47lL&Qp2xx zO4grNLcg{gbqwO1lyA-NAUc{~hZO6?NabJ}lM6A#n&lgX^?7p*d;?Pqo0=#%|uSNt-S2+`EzkLsr( zF##Y<+i#QoP3p}!_p{%WC#S^3e^5`t<9}!N zMY$^d)rjxOQgp)Ye@^+s5Z`rYoCyi8Uodsci&`Q6=*AA(n?i7XY9}YL2~3jjru&hG zQ;y#Q_Kcr$B31V$O;kgzflLK%m$BP(!rnEn!cJWj2D@FKEJCMg>$*u}YyZ;NPH&NcKg@t?Jb|H(&-z^710F zu$7#b=G><`A;t7Ly1I{?YTB~oc)2$voghPMypvArW9nE+`J<9 -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE Buffer-over-readelf bz1532205.supp - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: nothing" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: yes" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1625057" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE deleted file mode 100644 index 10589cc..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -Description: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -Author: Martin Cermak -Bug summary: 3 elfutils: Heap-based buffer over-read in libdw/dwarf_getabbrev.c and libwd/dwarf_hasattr.c causes crash [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625057 diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp deleted file mode 100644 index 70f0f80..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/bz1532205.supp +++ /dev/null @@ -1,25 +0,0 @@ -{ - - Memcheck:Cond - fun:_nl_explode_name -} -{ - - Memcheck:Cond - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:new_composite_name -} -{ - - Memcheck:Cond - fun:_nl_explode_name -} diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf deleted file mode 100644 index e934d57..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -description: | - Bug summary: 3 elfutils: Heap-based buffer over-read in libdw/dwarf_getabbrev.c and libwd/dwarf_hasattr.c causes crash [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1625057 -contact: -- Martin Cermak -component: -- nothing -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -extra-task: /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c diff --git a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh b/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh deleted file mode 100755 index ffd6160..0000000 --- a/tests/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c/runtest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -# Description: CVE-2018-16403-heap-based-buffer-over-read-in-libdw-dwarf_getabbrev-c -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - arch | grep -q ppc64le && VGSUPP='--suppressions=bz1532205.supp' || VGSUPP='' - TMP=$(mktemp) - rlRun "valgrind $VGSUPP -q eu-readelf --debug-dump=abbrev ./Buffer-over-readelf |& tee $TMP" - rlRun "fgrep 'Invalid read of size' $TMP" 1 - rlRun "fgrep 'Abbreviation section at offset' $TMP" - rm -f $TMP - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile deleted file mode 100644 index de96661..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC-stack - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1651567" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/POC-stack b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/POC-stack deleted file mode 100644 index 2b486e8d4c7d1fedc5fe06ed22de1f335c3d1180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4542 zcmai1-ESOM7609tyY3_#JN`%-t1ihparz-8C_ z-C1{LHrSyk>y7*IkOveRmxl;hs??_nA;dobNJvOUq%Q~w5Fiy)AQT8yLsihAbMGD7 zaU=1QW_RvA=bm%!x##1~m5J$Nj4=Qf2nI~h=vIqc!vL;rlhYVR4i+B60Q%7e8Uw>k zZqWmVe0rKmyc%(2T zU9X>z9&|}I`wM`_qy)9{(Q@_W{{ty`WLs?|(GI3!ivbV75B%6JNmah|(?POgjm?#T!N}qFs4IoBpK8k(af@4Kd2rCkfH7nY zT;-PeBQS&0IBOJ^xn;fw)<0ro(aXNNt|&wHEJ=HE3`$W`?<>J!kfOkL)wVLmbyD;w z8|gQg(o`bJ2hxdZJt*hoj~~PsEZ#3XUXtOF`gRj?`P{JmdHWEQBmm7u5LL>7=Sq={ z;2XXilqyb$s8SE(TqB6o9O)F3Cq)#yejpl==V}fjXg^2(WiMWw_foxyjuP@9ZH_$0 zuX2k#Mte*7Zr@EPIY2ybwzyS#m0Oh!blA~iEq02qqd1J6i?E}Ld@I8CgV>v&$Fo5_ z_Uy5vQwL+G3|o%MLBp0_I_SHQqlyz%V7rS!v{=LU+{J1s4i)8+7e;l7M8yr)N3hTB^JC#ep|hw~2q%>9Un_;u z45#LoV3+H${IN;P0VVNR6u~alYc(&3VY}!uda;ixiNcj6NiZ^3hwXaBMp-z;V(4AM z0X3>RKs(fX6cJmSj@p%W8S=EOF}{ z28^m&OXX1VbOQLYuD2xb_7b;lGhjk$RAAa4F91li-k}z^h74F1gX}Q`T2If5N;Kgz zfGv9ZLW^4$4B6DkYn!_nWgGSaa9iARfBRWbHeA!KqYe0!k|s8kdudw)>B?=uYwLVi z{V}&z4d4mQL!fOF@AVCQWY8@GXvvnR4u$yW?7p*skCLhuG{Lr0^`yo_BvT&@6-+f&7E@t-h!dT!$7N-SPfFQT4i&e& zy+YQrjmw{DaqEvXK{iq4Qbej{RF>V=yLx6T%_urEB^_98Eo-W}so!et(BpOzGfEYN z++w1G##AXZeY+e}MW7c`)gPJpYTSh|R@tt`-ID**4awg$(PII-QBY%;@+z%TmAq_X zC-IL`O8zY&`h#-)_zK_XKP`KgER&R7k}2(2CgN}rj-7)LZKua(Cd9;vaq*Dk0hB}& zR1YDYLoo5M{7+BV#OKslBahwsjlzh-#GaHSkwq?DDnU^T>`9V@s*j3dWu*eqd+_jw zsUsM6Nc%gls?8W^mw`EYRh0l5Q(!bV(5c%|tzf_vEmnd$J@xrFIIv3VX|YsJFRN6H zrT)$K{DkWAD@s2@7v2Nb4vOsC2o5wUoAtp0=*EY+^dRZ(yAyYH*;o11jjfDo=^m+; zVHe(Fz^P?!kw?3CZ^08AvWw1gn#OeBq^nTKuy)cp^r92Ja2aH;quSYx4qV>AL-f}+ z30z^o1syG2Mz2K%RF}C$TkC3W#}86|i?##&f&st3$}LB3uN}Xmyprqt(D~Ci0bIP!={pX8rO(Y}ZqPAyVLR?99o<{oVH#<~ZeF%;^JP(rRRwIs0O(?& zlx6|nmS0GvFplEJ+?;(LLOhp0EvBEJEeHYE3%#-*#a<}lnkZH4ffr$Ys+vxfgj*No zYQ5-Gg&WtyNH~oJlmrp3u)$7UxA zqA+%JdV<8!SGFh>8baRf#Z+NNtZ%aOg(%nRff~q-xlvtIoWLbjQ|gl|QlDJfN_jgF2OU2c z9X&q%v!i)$$Yv?A6g7k&oR6VAk!#RRLd?yJ%GV)8F^aU>n&Sr$&s`Fyy^=iQeANjf YFM<$-nY{9>azp5qAEy{7%;c;81Ci9;>i_@% diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE deleted file mode 100644 index 6688efc..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference -Author: Martin Cermak -Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhdts-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651567 diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf deleted file mode 100644 index 6ab4075..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/main.fmf +++ /dev/null @@ -1,15 +0,0 @@ -summary: CVE-2018-18310-elfutils-invalid-memory-address-dereference -description: | - Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhdts-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651567 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -extra-task: /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference diff --git a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh b/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh deleted file mode 100755 index 09c885c..0000000 --- a/tests/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference/runtest.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Description: CVE-2018-18310-elfutils-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # Expect exitcode 2, unfixed package segfaults (139) - rlRun "eu-stack --core=POC-stack" 2 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile deleted file mode 100644 index 6a50f8a..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -# Description: CVE-2018-18310-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC-stack bz1532205.supp - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18310-invalid-memory-address-dereference" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: nothing" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1642606" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5 -RHEL6" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/POC-stack b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/POC-stack deleted file mode 100644 index 2b486e8d4c7d1fedc5fe06ed22de1f335c3d1180..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4542 zcmai1-ESOM7609tyY3_#JN`%-t1ihparz-8C_ z-C1{LHrSyk>y7*IkOveRmxl;hs??_nA;dobNJvOUq%Q~w5Fiy)AQT8yLsihAbMGD7 zaU=1QW_RvA=bm%!x##1~m5J$Nj4=Qf2nI~h=vIqc!vL;rlhYVR4i+B60Q%7e8Uw>k zZqWmVe0rKmyc%(2T zU9X>z9&|}I`wM`_qy)9{(Q@_W{{ty`WLs?|(GI3!ivbV75B%6JNmah|(?POgjm?#T!N}qFs4IoBpK8k(af@4Kd2rCkfH7nY zT;-PeBQS&0IBOJ^xn;fw)<0ro(aXNNt|&wHEJ=HE3`$W`?<>J!kfOkL)wVLmbyD;w z8|gQg(o`bJ2hxdZJt*hoj~~PsEZ#3XUXtOF`gRj?`P{JmdHWEQBmm7u5LL>7=Sq={ z;2XXilqyb$s8SE(TqB6o9O)F3Cq)#yejpl==V}fjXg^2(WiMWw_foxyjuP@9ZH_$0 zuX2k#Mte*7Zr@EPIY2ybwzyS#m0Oh!blA~iEq02qqd1J6i?E}Ld@I8CgV>v&$Fo5_ z_Uy5vQwL+G3|o%MLBp0_I_SHQqlyz%V7rS!v{=LU+{J1s4i)8+7e;l7M8yr)N3hTB^JC#ep|hw~2q%>9Un_;u z45#LoV3+H${IN;P0VVNR6u~alYc(&3VY}!uda;ixiNcj6NiZ^3hwXaBMp-z;V(4AM z0X3>RKs(fX6cJmSj@p%W8S=EOF}{ z28^m&OXX1VbOQLYuD2xb_7b;lGhjk$RAAa4F91li-k}z^h74F1gX}Q`T2If5N;Kgz zfGv9ZLW^4$4B6DkYn!_nWgGSaa9iARfBRWbHeA!KqYe0!k|s8kdudw)>B?=uYwLVi z{V}&z4d4mQL!fOF@AVCQWY8@GXvvnR4u$yW?7p*skCLhuG{Lr0^`yo_BvT&@6-+f&7E@t-h!dT!$7N-SPfFQT4i&e& zy+YQrjmw{DaqEvXK{iq4Qbej{RF>V=yLx6T%_urEB^_98Eo-W}so!et(BpOzGfEYN z++w1G##AXZeY+e}MW7c`)gPJpYTSh|R@tt`-ID**4awg$(PII-QBY%;@+z%TmAq_X zC-IL`O8zY&`h#-)_zK_XKP`KgER&R7k}2(2CgN}rj-7)LZKua(Cd9;vaq*Dk0hB}& zR1YDYLoo5M{7+BV#OKslBahwsjlzh-#GaHSkwq?DDnU^T>`9V@s*j3dWu*eqd+_jw zsUsM6Nc%gls?8W^mw`EYRh0l5Q(!bV(5c%|tzf_vEmnd$J@xrFIIv3VX|YsJFRN6H zrT)$K{DkWAD@s2@7v2Nb4vOsC2o5wUoAtp0=*EY+^dRZ(yAyYH*;o11jjfDo=^m+; zVHe(Fz^P?!kw?3CZ^08AvWw1gn#OeBq^nTKuy)cp^r92Ja2aH;quSYx4qV>AL-f}+ z30z^o1syG2Mz2K%RF}C$TkC3W#}86|i?##&f&st3$}LB3uN}Xmyprqt(D~Ci0bIP!={pX8rO(Y}ZqPAyVLR?99o<{oVH#<~ZeF%;^JP(rRRwIs0O(?& zlx6|nmS0GvFplEJ+?;(LLOhp0EvBEJEeHYE3%#-*#a<}lnkZH4ffr$Ys+vxfgj*No zYQ5-Gg&WtyNH~oJlmrp3u)$7UxA zqA+%JdV<8!SGFh>8baRf#Z+NNtZ%aOg(%nRff~q-xlvtIoWLbjQ|gl|QlDJfN_jgF2OU2c z9X&q%v!i)$$Yv?A6g7k&oR6VAk!#RRLd?yJ%GV)8F^aU>n&Sr$&s`Fyy^=iQeANjf YFM<$-nY{9>azp5qAEy{7%;c;81Ci9;>i_@% diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE deleted file mode 100644 index eb0721d..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -Description: CVE-2018-18310-invalid-memory-address-dereference -Author: Martin Cermak -Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1642606 diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp deleted file mode 100644 index 70f0f80..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/bz1532205.supp +++ /dev/null @@ -1,25 +0,0 @@ -{ - - Memcheck:Cond - fun:_nl_explode_name -} -{ - - Memcheck:Cond - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:_nl_make_l10nflist -} -{ - - Memcheck:Addr4 - fun:new_composite_name -} -{ - - Memcheck:Cond - fun:_nl_explode_name -} diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf deleted file mode 100644 index 86d6871..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-18310-invalid-memory-address-dereference -description: | - Bug summary: 0 elfutils: invalid memory address dereference was discovered in dwfl_segment_report_module.c in libdwfl [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1642606 -contact: -- Martin Cermak -component: -- nothing -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -extra-task: /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference diff --git a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh b/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh deleted file mode 100755 index ba44f8d..0000000 --- a/tests/Security/CVE-2018-18310-invalid-memory-address-dereference/runtest.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18310-invalid-memory-address-dereference -# Description: CVE-2018-18310-invalid-memory-address-dereference -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - arch | grep -q ppc64le && VGSUPP='--suppressions=bz1532205.supp' || VGSUPP='' - TMP=$(mktemp) - rlRun "valgrind $VGSUPP -q eu-stack --core=./POC-stack |& tee $TMP" - rlRun "fgrep 'Invalid read of size' $TMP" 1 - rm -f $TMP - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile deleted file mode 100644 index 1728cdc..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC1 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1651200" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/POC1 b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/POC1 deleted file mode 100644 index 1f6c719c0078b36858065d83b4ae69d7c5d91b7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3TW=dh6vxkc*W_YK4Wd@0f;5pLk)md^wl|JJ5ptELi6W>_FH(?@$nM5f3M4`C zR=vF77bGOU0!aM`<^hR5(RaQ8@A(4djVC~7=A5~#*G}Ls*>l-BGiPVc{PrwvB&XTo zNAs(9Kl`K;uL@SP9mlOsySx5@5RvS(|ApvwdF1~5BFzCxKdPcSa?9G1YMU}i5=he& ze=W$e41coHRwI)n2~Uhm?9+ND5~42sQ9d=Js1wIRG+VLi5c~7rZhd^KQt{M8C=VL) zzf|6W?C#Nj4Q9_qul8W+MF79O2w?GSG}?n;=I@yq*!DL+6wBMU?_U#fxE?k|J8HI~ z^;RU7@AMDEPLiwsm9=ZM)Z18k&+dTtzALCSMLDGAF2Vjewe%YZf*DXOP8_T zgK+TlC{I!d2l=Tg54o22yE%k6lRSYi9Sk7MPL7Tq9p?}ppXB{;`}X~nL7rq^L3rB# zItlxSUpzQXj{0&Ttyx`jB%GGgo4Rj^wX4=XzNQ~R9jj^w0n~nyW&r}O1BgY--Z%Xy zvBz!eQ>9yYWS`cSvmcIvm-M2z{}_LKK4dTB9FMcG?^-XZcCWC7w*Oc! z`c3lxpbD1A1NK{$J?Yon)fB-kvtS`5@R9*o8{8{$Ix9u(YrSDO}eqTqj zCEtUp)ztFMK0EU5xHX!2Yuuj(4Dy4A$A~;L5HAGnb(Jqxnx?B|Ok9gyP9qaHkcsVf zN0EAe{xLI=Z-Zi@BeT)oj(l(dCOWK4&Z5x{v-0ld`wlBx7h>fNhn3P-Mq1*fY--)n4vgc_0LXXD4PX;(RB3b z(z4f|q;nXmLX#$vjd6ymc=bJf-j00ue++eQ50o%e$o#I>Fmb{;2(tCT!(&L(FIB2Z z(rg8&$k?VeHki3IZXwIE@FbKJUB>@rJCeC^6cKZm3VCQ8Q+BNLP;(X@G=}UW-*hcc zZJz4ynLPC8u{^ZET%Dgf{Z8JxS;$*8iw|YqdgH=*EAA`it|*tc@@@pg;^H%bHhd?F zb})t2*YopP{djV|E031gH8i(QV^zt$9DJ9gnAK>(EMV~os&A!HU=DmLt2y5*%4RLG zT1Ka2sC5_6ew?K!MVDWki4Ae=*WCqAwsB1}Lg`m3ndvOrAUVxeZ!FK@X{!5VfcrDf zQgI$jy=AiJxMA7;W1SZ)DCnt?9{S5HMezY+EYCqu&MJT^pX-&v#B%)!i?XJ$v~K&a JHO^9ie*uc$G3o#S diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE deleted file mode 100644 index 3c71880..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -Author: Martin Cermak diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf deleted file mode 100644 index 417d678..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/main.fmf +++ /dev/null @@ -1,13 +0,0 @@ -summary: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -description: '' -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -extra-task: /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files diff --git a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh b/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh deleted file mode 100755 index b29cf5b..0000000 --- a/tests/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files/runtest.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-elfutils-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - rlRun "eu-size POC1" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile deleted file mode 100644 index 8375a2c..0000000 --- a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1646479" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/POC2 b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/POC2 deleted file mode 100644 index 2221cf4e3e0af720db0da033c2a2e49e1b358477..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3-EJF26vxkc*CeqiHHcb~3erT1M2ect+TJ(@MaWf}CW@d!{g8r$gm)cRDUbxk zTlM1x-yk9J3Ly0n%mos?qW8Q2_j!SG#}%M6bIyFM*G}Lsd1rQZ&&=5~XMR3Qo5^Ya z@T1Dw-OoO0$7_PsXvJ}}-Rf+7AVeew?W+)-4!_x}j6mu&)xeLcEsx!{x~%R^n2L0w)8 zQ%#56dqC`0YgiOK0QpJ_K`r&&|P(zxAP5*|~lHnux=VupwGeqZw^9 zBe8O4a3FS*OpULuU!$eo#@2gw2fQb5cvoM){M=Iy-T{z5R2^>puyFI;>fY~{F5`U{ z!r{}SEJ-08W~Zt>u2XrNYQ&2z_gf$X@0-Zf7p;S}&=0FBd}Ff9&V| zCi#C*2U|RQ?6+#W(yxW->j%UPsPc>e0S4BrPp~PF7r;M%7L4P^8hcBA;dhj9+}D|G z$@ida-D>$J&W`-zeVTh~(w{mEvxA4nh&*QsOe2hSnGaT)rfWq^T#sE&BNI1~iLF*! zk-ArTy#4X5Qpq!3DJD8Hf%10cg9|XxVP$d_jdz)qcembmSlPS~D{nZglo^fr{5j>e zV&x@br3Z`9#q)ydy3b}Z^hpNcfy>are`KiCjFaxjd2b3srFg4}O*-LihRt9oeB&%@ zME}2%)CCOHnr3gWZ!xr%XDHiih7t#uIhbOT3^hdgNqb`cPf#W`Eru4b=sDScs#-ty{UeRkQd|)~z=#T(@Fev35ndyp?AoAQtDJ z3AEuek+*{xtiGO|&+5n1>s`6E#IBJ!bsDQm?&09GB*m;o3uXa}cToLT8U<# zy}WGJ602o)N`_iz0qrMQic)m>#hKU;$Nt$NY2Hx!m0D&xivlF4+3uQ(g2dC5 zdo+OYnPjOrkEPxU*>m2oZ2z&(3+5Db)tesr%Pd9l24gNSKv2vofHLpvmE6Q~{V9vG PX0Wto`>!?0Qh -Bug summary: 0 elfutils: eu-size cannot handle recursive ar files [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646479 diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf deleted file mode 100644 index 65de371..0000000 --- a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -description: | - Bug summary: 0 elfutils: eu-size cannot handle recursive ar files [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646479 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -extra-task: /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files diff --git a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh b/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh deleted file mode 100755 index ff22f65..0000000 --- a/tests/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files/runtest.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Description: CVE-2018-18520-eu-size-cannot-handle-recursive-ar-files -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - TMP=$(mktemp) - rlRun "valgrind -q eu-size ./POC2 |& tee $TMP" - rlRun "fgrep 'Process terminating with default action of signal 11' $TMP" 1 - rm -f $TMP - rlRun "eu-size ./POC2" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/Makefile b/tests/Security/CVE-2018-18521-divide-by-zero/Makefile deleted file mode 100644 index 0f5c03e..0000000 --- a/tests/Security/CVE-2018-18521-divide-by-zero/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18521-divide-by-zero -# Description: CVE-2018-18521-divide-by-zero -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18521-divide-by-zero -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18521-divide-by-zero" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1646484" >> $(METADATA) - @echo "Releases: -RHEL4 -RHEL6 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/POC2 b/tests/Security/CVE-2018-18521-divide-by-zero/POC2 deleted file mode 100644 index f4edc4036c5aa8ea0ddd75ca50366b7c3378ed3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3-EJF26vxkc*CeqibrD#R3erT1M2ect+TJ(@MaWf~CW@d!{g8r$)a-6tr9cuC zFKXci-yk9J3Ly0n%mos?qW8Q2_j!SG#}%M6bIyFM*G}LsdFR7(X3m~D^V?b4Oir`I z4{B@oKKZB{uL)MG6UXgtr?>H*5RvS(pF;F{JaWG_0;yM20Y9p;I(EzYvTB<$NfJoY z6n|~VvJ8K+(orLmBneN9OYGA|Hxi;D{ZT%(qNp3kLbTek>Ja<2Z?`_YU8#6#B9sSB z`7D*UD7*Xgti$}-_~jlfKM&xy=K(C8jmLWs%>6w#2iyM5_r=Qgod?%M9Bzay(TQ5^ zXrmp8mAiujv6JMge|7yDE%gSL-Zyu_d-|Gp_0`MI$g8&i;r5*etHV6WK8Nsh z@I?|14j(=`O^ya~A+32`b0nOW(iPn&clxRoN8WP)Xy8Ld5J1I~G!GDP9Y8DrK!w`A z=|_n@Zd*HtGWLCV2S9sI_S$Q*H^Y^L-ErOWKcWFFWj}&d?vQVV*`tKzy4AKMWAhz% zXpfZG9<|H%4HE~}_f+W>{<3##%ZZ1h;03)X#vk*K_lN9dp5t~F;;!|AYWE8vwEf3A z?_WXwAJll18By!R8VVEC0K1Sr3fp{P&)>S@OX_~H;F>yV1IgL!*L?(7R zT}A5s+7o6Xp9aN5Mek(Ux<}A99BwaF`qvrw-qZd z5i31dgg%}ZRNwt?CPSa*5FWS;9sEazO3gUwj+}8*7%IhEO>EK$&%1^~hVoVw&+?aQ znhDYOSCYDfp<2`I?e#5&Hi`^od(BYd0Q-r4PcqaH?q*%aUNzUj#vHj(-_KT z!Cy2TeY&*l^{43^hN{%0iDYAvp(ETzS8tj;;X4Sj_0i*F zNYl^MRg1m2b7|aSmSy2dC@H#v&sHarcjG7`<}MfRp>a&NV|@=bd*MNI z#6I##*YZ^GRDa*xLw}yQhca{9kvNq1&KnoLcVb-d?ul}FDRVm@mKOgLXu~;Ow1XL} zy`G=X+9%WRt8#0IJtK2!G!~WIyBpI>C1Wr)P~s9o@68+|e(lzyd>na`pP zkkf4SC+ -Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhel-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646484 diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/main.fmf b/tests/Security/CVE-2018-18521-divide-by-zero/main.fmf deleted file mode 100644 index f288788..0000000 --- a/tests/Security/CVE-2018-18521-divide-by-zero/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2018-18521-divide-by-zero -description: | - Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhel-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1646484 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18521-divide-by-zero -extra-task: /tools/elfutils/Security/CVE-2018-18521-divide-by-zero diff --git a/tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh b/tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh deleted file mode 100755 index 4f83999..0000000 --- a/tests/Security/CVE-2018-18521-divide-by-zero/runtest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18521-divide-by-zero -# Description: CVE-2018-18521-divide-by-zero -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2018 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # This doesn't reproduce on ppach64 and ppc64le. - TMP=$(mktemp) - rlRun "valgrind -q eu-ranlib ./POC2 |& tee $TMP" - rlRun "fgrep 'Process terminating with default action of signal 8' $TMP" 1 - rm -f $TMP - rlRun "eu-ranlib ./POC2" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile deleted file mode 100644 index 075bcd7..0000000 --- a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Description: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1651203" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/POC2 b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/POC2 deleted file mode 100644 index f4edc4036c5aa8ea0ddd75ca50366b7c3378ed3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4000 zcmbW3-EJF26vxkc*CeqibrD#R3erT1M2ect+TJ(@MaWf~CW@d!{g8r$)a-6tr9cuC zFKXci-yk9J3Ly0n%mos?qW8Q2_j!SG#}%M6bIyFM*G}LsdFR7(X3m~D^V?b4Oir`I z4{B@oKKZB{uL)MG6UXgtr?>H*5RvS(pF;F{JaWG_0;yM20Y9p;I(EzYvTB<$NfJoY z6n|~VvJ8K+(orLmBneN9OYGA|Hxi;D{ZT%(qNp3kLbTek>Ja<2Z?`_YU8#6#B9sSB z`7D*UD7*Xgti$}-_~jlfKM&xy=K(C8jmLWs%>6w#2iyM5_r=Qgod?%M9Bzay(TQ5^ zXrmp8mAiujv6JMge|7yDE%gSL-Zyu_d-|Gp_0`MI$g8&i;r5*etHV6WK8Nsh z@I?|14j(=`O^ya~A+32`b0nOW(iPn&clxRoN8WP)Xy8Ld5J1I~G!GDP9Y8DrK!w`A z=|_n@Zd*HtGWLCV2S9sI_S$Q*H^Y^L-ErOWKcWFFWj}&d?vQVV*`tKzy4AKMWAhz% zXpfZG9<|H%4HE~}_f+W>{<3##%ZZ1h;03)X#vk*K_lN9dp5t~F;;!|AYWE8vwEf3A z?_WXwAJll18By!R8VVEC0K1Sr3fp{P&)>S@OX_~H;F>yV1IgL!*L?(7R zT}A5s+7o6Xp9aN5Mek(Ux<}A99BwaF`qvrw-qZd z5i31dgg%}ZRNwt?CPSa*5FWS;9sEazO3gUwj+}8*7%IhEO>EK$&%1^~hVoVw&+?aQ znhDYOSCYDfp<2`I?e#5&Hi`^od(BYd0Q-r4PcqaH?q*%aUNzUj#vHj(-_KT z!Cy2TeY&*l^{43^hN{%0iDYAvp(ETzS8tj;;X4Sj_0i*F zNYl^MRg1m2b7|aSmSy2dC@H#v&sHarcjG7`<}MfRp>a&NV|@=bd*MNI z#6I##*YZ^GRDa*xLw}yQhca{9kvNq1&KnoLcVb-d?ul}FDRVm@mKOgLXu~;Ow1XL} zy`G=X+9%WRt8#0IJtK2!G!~WIyBpI>C1Wr)P~s9o@68+|e(lzyd>na`pP zkkf4SC+ -Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhdts-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651203 diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf deleted file mode 100644 index 645e9a6..0000000 --- a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/main.fmf +++ /dev/null @@ -1,15 +0,0 @@ -summary: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -description: | - Bug summary: 1 elfutils: Divide-by-zero in arlib_add_symbols function in arlib.c [rhdts-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1651203 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -extra-task: /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c diff --git a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh b/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh deleted file mode 100755 index aa345b7..0000000 --- a/tests/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c/runtest.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Description: CVE-2018-18521-elfutils-Divide-by-zero-in-arlib_add_symbols-function-in-arlib-c -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - rlRun "eu-ranlib POC2" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7146/Makefile b/tests/Security/CVE-2019-7146/Makefile deleted file mode 100644 index 1dd17ca..0000000 --- a/tests/Security/CVE-2019-7146/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7146 -# Description: CVE-2019-7146 -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7146 -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE poc - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7146" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7146/PURPOSE b/tests/Security/CVE-2019-7146/PURPOSE deleted file mode 100644 index 0770c49..0000000 --- a/tests/Security/CVE-2019-7146/PURPOSE +++ /dev/null @@ -1,3 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7146 -Description: CVE-2019-7146 -Author: Martin Cermak diff --git a/tests/Security/CVE-2019-7146/main.fmf b/tests/Security/CVE-2019-7146/main.fmf deleted file mode 100644 index d690650..0000000 --- a/tests/Security/CVE-2019-7146/main.fmf +++ /dev/null @@ -1,14 +0,0 @@ -summary: CVE-2019-7146 -description: '' -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7146 -extra-task: /tools/elfutils/Security/CVE-2019-7146 diff --git a/tests/Security/CVE-2019-7146/poc b/tests/Security/CVE-2019-7146/poc deleted file mode 100644 index a27f86b3f45ace72b0347dd898540e4946d33e4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmYk2JxT*n6otQ+yu=p`8b~DwPHAHjWENoIPhs$nxPdTW0)q;UVrQlhL2wHZ+=3gh zw#pI&onEX1BPTN>x$qT_^X|Fl-uvC|o-u}^N|e!S`@uRN_+HHvACDRvtg}WHkmir9 z6P^K40W44kjtul->w0nOniXi~n!Nv~jjR(_H4y5jk?GTAn2xOz9Rr^Rs-$W93niew z0`(W`#19~p%i_&43=9ln>%*$9&1Z0h}gLFrUvF zn33<+4u}1A7;J{ai<`UF^<`@-^Ijy|asTjaW~)8q>E*L^H)*$>kN)}V+p|8YX9;*Z H_ -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # https://svn.devel.redhat.com/repos/srtvulns/trunk/components/elfutils/CVE-2019-7146/ - # Expected Output - # An error instead of segfault. - rlRun "valgrind -q --error-exitcode=99 eu-readelf -a ./poc" 1 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile deleted file mode 100644 index b022ffa..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC1 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1680056" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/POC1 b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/POC1 deleted file mode 100644 index 63698a3e8f18c2e78462cf60faac676bf5000912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3208 zcmb_ePiP!f82`;qlHGKZZIU(E)FLa@YQde&CYxlN+BP+9nl$1;5;2DuXLo1+nBCbp zJ6jXMrchc^3W9>tgP?+VD+IjcAX=ygPaegC6|@M&g6KgMT3q?wd~bGklEsTZn0fDg z@B7~O-uLgl&9g7e1Qg{k95nvKQlCQoP5MnS8Ax}!U8YW95Cd48z4ptF+5s%zrtUSt zcI8(6=ymG-bNTPT>W_;qE`JxON57<1zM|h9`dztY_lwaz8tudY+~4mZ5Ow)B?I!@B zW?Ln*Ae+2iDjPXeSMfc74r0Y6v32p2$jJ^Zk~g9Bob^z`+*dwS?{=0<+gV2$@bWCV zJmPRlh$g#Lxk}gj0Nw!*q~8oep&(6#lrCTZ*9F^yi&8|0brVtPYF)=623v_x`tLs( ziH6lkzcLW)dlVf34X1|G&}8^{`01g!D3Q$q62)r8NYs_^$*>v%It0@_6>yoR4t((Z z5YU-|8X@78Xy5?Qr6_YzB?<(ez+5yD20{lBrd1+9x8$9Ro*E)e-$*kL@axJl{+u33~KQS_# z9?OkoM^mGj(daN=s{JV)4q$b<;ReFigWLWtDhEx3a|( z>*?|Mcq$ez#Nzpyt!G!`YgW}ZvUb&y5&M4}Ig>iVN1pi4BMVEcS=EA;MXmIfVQ;J% zs4SIC6w1|%UPiX4Tfn*L>B-nLi^3D)h-2{)$1ll?$&@yn(vnAs-kwhZ4#D{dBB@SC z`mP41d%I?Of)pz>{~X&>B$S*FEI15`D1PDx6|uLY_kB_k9_2}-}x5(O?=F9bQgHx*T39GUSop{ zdxiJleWlI*i^6em~U&a~fr+VPm|F$@j z6JWnK8m|8iazKd(fd^8*Y`54Zemey?P$@pWkaDtpcMqEqG=HEoq#WfP;WN4q+}lt< zr0y`wlYhJj$-riO(#C$P6G5??_Q_3#CKE?CIFCV)UzRgz|CjxEE`ANtSam4Q6 lb)MMQ1Fm diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE deleted file mode 100644 index f09b1b4..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read -Author: Martin Cermak -Bug summary: elfutils: heap-based buffer over-read in read_srclines in dwarf_getsrclines.c in libdw [rhdts-8] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680056 diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf deleted file mode 100644 index b598856..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7149-elfutils-heap-based-buffer-over-read -description: | - Bug summary: elfutils: heap-based buffer over-read in read_srclines in dwarf_getsrclines.c in libdw [rhdts-8] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680056 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -extra-task: /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read diff --git a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh b/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh deleted file mode 100755 index bac258f..0000000 --- a/tests/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read/runtest.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Description: CVE-2019-7149-elfutils-heap-based-buffer-over-read -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - rlRun "which valgrind eu-nm" - # With RHEL I saw the invalid read of size 1 on aarch64 and ppc64le - # using devtoolset-7-elfutils-0.170-5.el7. I also saw it on x86_64 - # with base rhel elfutils-0.172-2.el7.x86_64. - # IOW - It doesn't reproduce "everywhere". - rlRun "valgrind -q --error-exitcode=99 eu-nm -C POC1" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile deleted file mode 100644 index 99a9c61..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1680046" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC1 b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC1 deleted file mode 100644 index abd8c65934356f96aee5b45bb9a61fc469499471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10442 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 diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC2 b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/POC2 deleted file mode 100644 index 0c1a4d0ddc99da693633ee0fb3c0eb453251fed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10467 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 NEi*dr;2{+2{~yGY^M3#U diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE deleted file mode 100644 index c26e276..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -Author: Martin Cermak -Bug summary: elfutils: segmentation fault in elf64_xlatetom in libelf/elf32_xlatetom.c [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680046 diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf deleted file mode 100644 index e2f01bc..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -description: | - Bug summary: elfutils: segmentation fault in elf64_xlatetom in libelf/elf32_xlatetom.c [rhel-7] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1680046 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -extra-task: /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom diff --git a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh b/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh deleted file mode 100755 index 3151176..0000000 --- a/tests/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom/runtest.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Description: CVE-2019-7150-segmentation-fault-in-elf64_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # An error is expected (2), but a SEGV is not (139). - # Reproduced with elfutils-0.172-2.el7, verified with elfutils-0.176-1.el7 - rlRun "valgrind -q --error-exitcode=99 eu-stack --core=POC2" 2 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile deleted file mode 100644 index 352a559..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1679071" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/POC b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/POC deleted file mode 100644 index e449ac211e908c4b89b33586751f62d5c5340eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10393 zcmeG?e{ht?b?+nrhk&~S1eW=^*r$Xf)`4(LWo(x_al)TmVXGjpQ>+{(-KWzv$DO$Q z1cG5|(nAhk&N58eN!_NC@#K%xlXhC{*bX5nI(`^%(@upu?ikxGvTNKsKt=`!3kkHH zx4TdG>5y!kw)rbhqkG?b``+8PZ+GABxBER+Tff#;WCIxDoP!IX1Z-eLqr*MC_)rKC z%JAp(67dZ1YXC1)!&LCX0+`I-Ts_>((j31I*x7^siF!XjA?i?+yzMQa2;T_nkBbPNFYC_U*VSwSJR zQm(9&D=UQil$(7vn1WWQwb)YpZ&bB3s@4*gJ{Hyq&~V-ep{3mRKAyLD!Xry`N*Ox^@mC;D7qqDNJ zdS&IxuX~bl&kEs_3uMnd{OCpzA&R4HH^6KFz>cF{+V|QL+nz~JPD9>20GN;eoS$2$ z+JoU=te%C9J)B#b>b=WC0Kmui^Oc3qEcki%$Byv2pzGcfpUzrS`{t#K|907NcH0vR ze(_)5+kO9)^n#!M=+jwaRmZ}902oi89mTM-#pvl{B3frA5O$0Xr?K$Q6Ua}sjbG{f z3HURu{K0%&j#=yvTdHpnm@=v$P#4o1 zgUwML0)g<>cr1`Kf(auKfWRZ$1MBs0Bx&f0#&v6=agsybKv*~ALo|{!AkZ3#MIaD~ zMHDwFi*td5zBRsG$DD*PCg&lDTo;Wrx1cjCLGO$hkkpN6yd@abA>M98Vj*bP6Nz{N zLM>r#7<#7x?HxuEe_Gmt2}l~DNDRWd5pOq;*wd@4e2tCk167_C^spQ~EP`USq?E`%{@>~e%OnpM9Qlk-Ho=__Ht~lN z0C3p`KTyLS2U5qp$W)a5hFZjIP$UvE1uC)hxv7}pbkXMk?Sd|Xn35k{EXM#YJl4Ul z(xF(k)#@yO#v?B0nBWNp)tE#+E&l@4m_fcZ!P6K+KJ8Kv%9R~liIs~2*eJh;)-eG~ zNBJs`D_Ac0^MxI(gP__XZ(VG?7QWa8D9|i?nhyvK7XDNc27o6l{8GsmVcKHhPqWCk zS@_e5KQ0qH&mug7gmI@~;X5t-Jr+I<2!wqW{!EMf0Sn)nKcBPk#l}*>^A`RbVgkSm z7XDld|Dc6`hlQ`DF4?v8q=j=BXk8g&Qg*WqKuevlAD2S>zFBh^@QSiI44jL-z$=h$ z!@^u2=bTrRB8}rE*DL5Eq;bQN%Lsa?j6qxRB7odMLBD}C&Zpe-NPp)7(l}0X2SoY% zNaOg(?Gg0bNaMK3wdeJ5Jmj_r`k$~I$3d<^(8rL*{?B;@eHdx%_uO(pzl1dQca91A zCrD$L=3IjQ5z;sxbGTUXioZe{yEZp4g7o*0#xBkEjc|UZ;=4#=SLS*}`JW<iDv>u=?@ICI^R9nS;8-0znRo6CdFmGz+Ro_2iJZq~y&{CJGwe;_2 zS8~pe?3?R_Dz2H6UMORb-5^=3hk7t}SwE8AxnAg5Ki3P{S4KFOPd^yp{FL7<#*TK% z?-n~_d=OLWz+rQ)7c}!f&CA&(ob%KmH;+2^;ufXb_i}3R%g*oMj+MJ#tG>ev&c#q$ z)qn9$`OH(fRmk%=7w;7jl;$*P z?y)iE>^bMCIqB9CDYjII;m%XImCKG`t%^VN)R>d8YGo31yU{$swWCw-|KMSjz8mpS*oZUb;Wi(4#T>PE41Z>vo_ zl{mZZvjOzL06=!dP0qEhOr3ecx%cfN0IhqsoBbU7qAGLsZ>c@$dUsiUx8KbUqf)*3 zp=O@T{@xAFyE4wMpA`Z4(q(Sn5$uAlH=cUvVnB7HFTJda%V6})@j^CqgY&xX9VME1 zN;A(^Wy}lN;0@0G=0IKQq|JAKiTh97f6!9@a!GAh|GMr6r*|Bw>wc;v+dn);=Bamm zX}`M!>u%wkU;KtIb;;Hd(o(zK<>1`=4yK;;Zg+WAMoYcUul&7cp4L9?)lylT>31`K z+V3t)*Snc!p3~Be?s6?{xb4}9YR&v2jCsGa>mv+$>O^%_W^>b~Cw)!6Z~6kqWm{aL zW3%5M=3GlZw0frM(CjP2oM%}vJcWHD%wnAQ5XQ;)Y0rl^rQRFnDk4{;l?G|$x{Cq2 zW7o_VMQpO+Va|Inq}l(#CtOXlDHQI?Xy$9qyU)L)btAeL8Di(9Ba+ zne2{@gaQ)c#_ABb@uwA!QTb-GgW|XtC)x-T*E!EcF&|;mY|{PgYu7o)PR-e|zscgGt;4eWm{mQR*7#0T58at zndi69KZMB%*VCCzJy^i|T4_c$9mi!fpTUk``9|&A9|;3TM~XG`yk-t)N3*Ln+ez)r zh%sl>+BCFg0Pk}yhNk1P{yh%`9Sopj=0?ptpN(KquG2QAHS=|akgKw)1C!);RqX(!LYuH zRV3Nw%KG&iwl%TJB*WL9Sa7S(Hdk&E#P(pcLvLd3L8DFZ+1)Iu8%(fEnFOneaNa~- zrvUC|;ml3_+d3i%AqGCfNJN@D44vIok-SSp--xpys|c~?orX?s#uKa}xeD!$ zm2V4%K0_E+&_a1^+IYrQ`+NqA>cONjaT~`rU|B~pu`JmZOz6wh8!rwrsNBTj7%6$~ z5@I_dMjNY4mcqtZLT`zOW075Yh~dj|JhqBew3I?})uvV9Rf$#6ZT0InfO`8C@9Fp= zz9!xg4Y63<5D^lgk})aGzsu)kZ~)#aBgd3QObxPICB=b2-kcamW26A~<=?->d>i;2 zn%>*nCXn+^!2dkE|JUX0HvO>QrW`1_(+WSYux)XNE z^%}==pJQo_gVi|7YaFf`hutS$&asZa1As%Yd zbYiG(7Df*R=_X+GR^y^BwfkUdO;_$G>ixAvOeN(Q8f8YCtGwfOZAU% z*&dgY=ZdC!2PADhEB#y$>w~-v{f&XHq6=a2G}+F%3V%uAl?ty_c$31d3U62VX@$S9 z@Q)RKRpFBg|GUB;Dtt}h$jS7`*p;0eb%JZ-^b8+bxHW67OcB{mYWWV@b7M&hwCL?8j4gdPo| zf_iF?8fZUa06u!caRWT!e#axOlRSxdC};%1qqhZG6Tz)|pe>ZhQ&Ke$OeBIkr3O9! zaZ5t@6WkhU0W>RXlE#{oN#R#Ov^N@weXB4UUmS40;MAeID+bL^0?H2rc*2Ww zg7oQA1^R?x^y*Q8xKXkI-o#wvJWl#F?>iOanF2kUZv(WJ>5IL&1*koQ@k0P>{a%$PylSB$e+lg0r6&oy3iR=u3!y>j zCn(`7pn3^#jkeZL>);8T7yzT|0YPE=pH}+Rf4%BPy;teKP@quQo@Wd6^Pm368Xp8$ zPjw>{n1jDA&_AR;9Xdq%1p~gY{vWGXtJfqRSQ@LZSZu08--q+W-In diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE deleted file mode 100644 index dbdbfc3..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -Author: Martin Cermak -Bug summary: elfutils: Out of bound write in elf_cvt_note in libelf/note_xlate.h [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679071 diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf deleted file mode 100644 index a8720df..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -description: | - Bug summary: elfutils: Out of bound write in elf_cvt_note in libelf/note_xlate.h [rhel-7] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679071 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -extra-task: /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note diff --git a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh b/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh deleted file mode 100755 index 5b1c28e..0000000 --- a/tests/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note/runtest.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Description: CVE-2019-7664-Out-of-bound-write-in-elf_cvt_note -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # Reproduced with elfutils-0.174-5.fc28.x86_64 - # This is expected to fail (1), but not to segfault (139). - rlRun "valgrind -q --error-exitcode=99 eu-elflint -d POC" 1 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile deleted file mode 100644 index 6d2f4dc..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE POC2 - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Martin Cermak " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 48h" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils valgrind" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1679078" >> $(METADATA) - @echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/POC2 b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/POC2 deleted file mode 100644 index 0776e6191a98595bf229c769df307e28e2fb7de2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2659 zcmdT`U1(fI6#jNIyPcSL-NsZ+Q#7_IsMvHHN(r=L7HthBl&XzBiKZ-)g_uCIE0z}W zvx!Xzu}EZJtPgqgRf+_ukTkVz9)xYkLxlQ+bg?$Yg4i0={p|-r;m`&c)B(yY)O6C!wZNBKMMNTK0Jd7GR-ly+6z7$YePy8CI#ROd z&=NL!18&9^voFhb2D};05C zV1yjc7t%IJfN@%UZS`Yt2E)JuQQ!x@HHHD~>`oos*`3_co$ATF)zsJ9)NBpX5jybP zp$=?vp-{&st1L+#)BuO+sm$_ z)2{B}rO@~Ze}YryO)aiV{}Fs^@S(fZ3cv9}A)RFTL<2OWdeT=s&<0>1fQLlH6jmb8 zBij=}^{I+P5PMra6VzrShk|%-u>0AdB@ygP1g!^yczaNrmCL=|oYLd~`pec{$|+q> z`!w7Y>Kz?YIpK%*vtJRdlj~?UIS3+e4QCmdgfaZ)*#QS0(}2f zrs&_V{4@jk;}+Y>{99f7iv926Flo;!&4d{Ka3FKC?|Mt*;#sBR6~Op94;I-tQzFOy zJ*SG_&jFEjCO+Zh=y!ft>AbS>dGJh*yXBdMV423s(CCD-XE37lnTX{RgTHNveYb9C zRb*IImKpK~0(jrmouhtE49vv9}1y-7qT)Upl`75|68{ diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE deleted file mode 100644 index 7fc62cd..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -Author: Martin Cermak -Bug summary: elfutils: heap-based buffer over-read in function elf32_xlatetom in elf32_xlatetom.c [rhel-7] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679078 diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf deleted file mode 100644 index 7883a64..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -description: | - Bug summary: elfutils: heap-based buffer over-read in function elf32_xlatetom in elf32_xlatetom.c [rhel-7] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1679078 -contact: -- Martin Cermak -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -- valgrind -duration: 48h -extra-summary: /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -extra-task: /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom diff --git a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh b/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh deleted file mode 100755 index 06e697c..0000000 --- a/tests/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom/runtest.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Description: CVE-2019-7665-heap-based-buffer-over-read-in-function-elf32_xlatetom -# Author: Martin Cermak -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2019 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -rlJournalStart - rlPhaseStartTest - # We expect 1, but not 99 ... - # Reproduced with valgrind-3.13.0-13.el7 and elfutils-0.172-2.el7 - # Verified with valgrind-3.14.0-16.el7 and elfutils-0.176-1.el7 - rlRun "valgrind -q --error-exitcode=99 eu-readelf -a POC2" 1 - rlPhaseEnd -rlJournalPrintText -rlJournalEnd diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile deleted file mode 100644 index 47c2e7b..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/Makefile +++ /dev/null @@ -1,63 +0,0 @@ -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Makefile of /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -# Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw -# Author: Vaclav Kadlcik -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2014 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -export TEST=/tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -export TESTVERSION=1.0 - -BUILT_FILES= - -FILES=$(METADATA) runtest.sh Makefile PURPOSE dwz-overflow.elf - -.PHONY: all install download clean - -run: $(FILES) build - ./runtest.sh - -build: $(BUILT_FILES) - test -x runtest.sh || chmod a+x runtest.sh - -clean: - rm -f *~ $(BUILT_FILES) - - -include /usr/share/rhts/lib/rhts-make.include - -$(METADATA): Makefile - @echo "Owner: Vaclav Kadlcik " > $(METADATA) - @echo "Name: $(TEST)" >> $(METADATA) - @echo "TestVersion: $(TESTVERSION)" >> $(METADATA) - @echo "Path: $(TEST_DIR)" >> $(METADATA) - @echo "Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw" >> $(METADATA) - @echo "Type: Security" >> $(METADATA) - @echo "TestTime: 5m" >> $(METADATA) - @echo "RunFor: elfutils" >> $(METADATA) - @echo "Requires: elfutils" >> $(METADATA) - @echo "Priority: Normal" >> $(METADATA) - @echo "License: GPLv2+" >> $(METADATA) - @echo "Confidential: no" >> $(METADATA) - @echo "Destructive: no" >> $(METADATA) - @echo "Bug: 1139128" >> $(METADATA) - - rhts-lint $(METADATA) diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE deleted file mode 100644 index 419b4a6..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/PURPOSE +++ /dev/null @@ -1,5 +0,0 @@ -PURPOSE of /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw -Author: Vaclav Kadlcik -Bug summary: elfutils: integer overflow, leading to a heap-based buffer overflow in libdw [rhel-6.6] -Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1139128 diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/dwz-overflow.elf b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/dwz-overflow.elf deleted file mode 100644 index 98cdfb0594ce32244fc46df70e826bc5b13a6674..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24928 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 diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf deleted file mode 100644 index a2e4032..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/main.fmf +++ /dev/null @@ -1,16 +0,0 @@ -summary: 'CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer - overflow in libdw' -description: | - Bug summary: elfutils: integer overflow, leading to a heap-based buffer overflow in libdw [rhel-6.6] - Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1139128 -contact: -- Vaclav Kadlcik -component: -- elfutils -test: ./runtest.sh -framework: beakerlib -recommend: -- elfutils -duration: 5m -extra-summary: /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -extra-task: /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow diff --git a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh b/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh deleted file mode 100755 index 0f8e722..0000000 --- a/tests/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow/runtest.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# runtest.sh of /tools/elfutils/Security/bz1139128-CVE-2014-0172-elfutils-integer-overflow -# Description: CVE-2014-0172 elfutils: integer overflow, leading to a heap-based buffer overflow in libdw -# Author: Vaclav Kadlcik -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# -# Copyright (c) 2014 Red Hat, Inc. -# -# This program is free software: you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 2 of -# the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be -# useful, but WITHOUT ANY WARRANTY; without even the implied -# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -# PURPOSE. See the GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see http://www.gnu.org/licenses/. -# -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -# Include Beaker environment -. /usr/share/beakerlib/beakerlib.sh || exit 1 - -PACKAGE="elfutils" - -# Reproducer by Florian Weimer -REPRODUCING_FILE=dwz-overflow.elf - -rlJournalStart - rlPhaseStartSetup - rlAssertRpm $PACKAGE - rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory" - rlRun "cp $REPRODUCING_FILE $TmpDir" 0 - rlRun "pushd $TmpDir" - rlPhaseEnd - - rlPhaseStartTest - # eu-readelf since 0.153 was vulnerable. - # The following crashed with "Segmentation fault" - # and exit value 139. - rlRun "eu-readelf -w $REPRODUCING_FILE" 0,1 'eu-readelf should not crash' - rlPhaseEnd - - rlPhaseStartCleanup - rlRun "popd" - rlRun "rm -r $TmpDir" 0 "Removing tmp directory" - rlPhaseEnd -rlJournalPrintText -rlJournalEnd From 47f425708ebee1961f64d4c15813a01848ca9515 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Tue, 16 Nov 2021 19:43:53 +0100 Subject: [PATCH 09/80] CI Gating: Add tests for debuginfod and yama --- tests/Sanity/elfutils-debuginfod/body.sh | 81 +++++++++++++ tests/Sanity/elfutils-debuginfod/main.fmf | 14 +++ tests/Sanity/elfutils-debuginfod/runtest.sh | 54 +++++++++ .../sshpass-debuginfo-1.09-2.fc35.x86_64.rpm | Bin 0 -> 22784 bytes tests/Sanity/yama-scope/main.fmf | 16 +++ tests/Sanity/yama-scope/ptrace-scope-test.sh | 8 ++ tests/Sanity/yama-scope/runtest.sh | 108 ++++++++++++++++++ 7 files changed, 281 insertions(+) create mode 100755 tests/Sanity/elfutils-debuginfod/body.sh create mode 100644 tests/Sanity/elfutils-debuginfod/main.fmf create mode 100755 tests/Sanity/elfutils-debuginfod/runtest.sh create mode 100644 tests/Sanity/elfutils-debuginfod/sshpass-debuginfo-1.09-2.fc35.x86_64.rpm create mode 100644 tests/Sanity/yama-scope/main.fmf create mode 100644 tests/Sanity/yama-scope/ptrace-scope-test.sh create mode 100755 tests/Sanity/yama-scope/runtest.sh diff --git a/tests/Sanity/elfutils-debuginfod/body.sh b/tests/Sanity/elfutils-debuginfod/body.sh new file mode 100755 index 0000000..1f93014 --- /dev/null +++ b/tests/Sanity/elfutils-debuginfod/body.sh @@ -0,0 +1,81 @@ +#!/bin/bash + +set -xeo pipefail + + +export DEBUGINFOD_VERBOSE=1 +export DEBUGINFOD_CACHE_PATH=$HOME/.debuginfod_client_cache/ + +# Initial cleanup +systemctl stop debuginfod +rm -rf ~/.cache/debuginfod_client +rm -rf /usr/src/my_extra_rpms $DEBUGINFOD_CACHE_PATH +mkdir $DEBUGINFOD_CACHE_PATH +journalctl -g debuginfod -f & +logger=$! + +# Set up a delay. A delay of 3 worked for me reliably for manual testing. +DELAY=120 + +# Clean up after possible previous failed (=> unfinished) run of this testcase +rm -rf /usr/src/my_extra_rpms $HOME/.debuginfod_client_cache + +# Check the config file is there +cat /etc/sysconfig/debuginfod + +# Make sure the config file doesn't contain unwanted relicts +# from possible previous failed run of this testcase +fgrep DEBUGINFOD_PATHS /etc/sysconfig/debuginfod | (! fgrep /usr/src/my_extra_rpms) + +# Add some directory to the DEBUGINFOD_PATH and configure it +# within /etc/sysconfig/debuginfod +mkdir -p /usr/src/my_extra_rpms +sed -i 's/DEBUGINFOD_PATHS="[^"]*/\0\ \/usr\/src\/my_extra_rpms/' /etc/sysconfig/debuginfod +fgrep DEBUGINFOD_PATHS /etc/sysconfig/debuginfod | fgrep /usr/src/my_extra_rpms + +# Note the DEBUGINFOD_PORT in the sysconfig file +# and use it to export the server URL for the client to use +source /etc/sysconfig/debuginfod +export DEBUGINFOD_URLS="localhost:$DEBUGINFOD_PORT" + +# Get the build-id from some installed binary and make sure +# it isn't found +buildid=$(eu-unstrip -n -e /usr/bin/true | cut -f2 -d\ | cut -f1 -d@) +! debuginfod-find executable $buildid + +# Start the service +systemctl start debuginfod + +# Give it some time to index +sleep $DELAY + +# Now the binary should be found +debuginfod-find executable $buildid + +# Take a small debuginfo rpm and make sure you know the buildid of +# some .debug file in to the directory you created and added to +# the DEBUGINFO_PATH in the config file. +cp sshpass-debuginfo-1.09-2.fc35.x86_64.rpm /usr/src/my_extra_rpms + +# Make sure the denuginfo can't be found yet +# Related: +# - https://bugzilla.redhat.com/show_bug.cgi?id=2023454 +# - https://sourceware.org/bugzilla/show_bug.cgi?id=28240 +! debuginfod-find debuginfo 73952ed43c6edc82cc92186a581ec27f009c529c +echo 0 > $DEBUGINFOD_CACHE_PATH/cache_miss_s + +# Tell debuginfod to start indexing immediately +debuginfod_pid=$(systemctl status debuginfod | fgrep PID | grep -Po '\d+') +kill -SIGUSR1 $debuginfod_pid + +# Give it some time to index +sleep $DELAY + +# Try to find the debug file with the known buildid +debuginfod-find debuginfo 73952ed43c6edc82cc92186a581ec27f009c529c + +# Clean up +rm -rf /usr/src/my_extra_rpms $HOME/.debuginfod_client_cache + +# Kill the logger +kill $logger diff --git a/tests/Sanity/elfutils-debuginfod/main.fmf b/tests/Sanity/elfutils-debuginfod/main.fmf new file mode 100644 index 0000000..dcdc35d --- /dev/null +++ b/tests/Sanity/elfutils-debuginfod/main.fmf @@ -0,0 +1,14 @@ +summary: elfutils-debuginfod +description: '' +contact: Martin Cermak +component: +- elfutils +test: ./runtest.sh +framework: beakerlib +recommend: +- elfutils +- elfutils-debuginfod +- elfutils-debuginfod-client +duration: 48h +extra-summary: /tools/elfutils/Sanity/elfutils-debuginfod +extra-task: /tools/elfutils/Sanity/elfutils-debuginfod diff --git a/tests/Sanity/elfutils-debuginfod/runtest.sh b/tests/Sanity/elfutils-debuginfod/runtest.sh new file mode 100755 index 0000000..1ae097e --- /dev/null +++ b/tests/Sanity/elfutils-debuginfod/runtest.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/elfutils/Sanity/elfutils-debuginfod +# Description: elfutils-debuginfod +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2019 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="elfutils" + +rlJournalStart + rlPhaseStartSetup + for p in elfutils-debuginfod elfutils-debuginfod-client; do + rlAssertRpm $p + done + rlRun "TMPD=$(mktemp -d)" + rlRun "cp body.sh sshpass-debuginfo-1.09-2.fc35.x86_64.rpm $TMPD" + rlRun "pushd $TMPD" + rlFileBackup /etc/sysconfig/debuginfod + rlPhaseEnd + + rlPhaseStartTest + rlRun "./body.sh" + rlPhaseEnd + + rlPhaseStartCleanup + rlFileRestore + rlRun "popd" + rlRun "rm -r $TMPD" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd diff --git a/tests/Sanity/elfutils-debuginfod/sshpass-debuginfo-1.09-2.fc35.x86_64.rpm b/tests/Sanity/elfutils-debuginfod/sshpass-debuginfo-1.09-2.fc35.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..3ae7fe178f204bc0f85d053bd3d155fb0460a914 GIT binary patch literal 22784 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 7.4 + Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1455514 +contact: Martin Cermak +component: +- elfutils +test: ./runtest.sh +framework: beakerlib +recommend: +- elfutils +duration: 48h +link: +- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1455514 +extra-summary: /tools/elfutils/Sanity/yama-scope +extra-task: /tools/elfutils/Sanity/yama-scope diff --git a/tests/Sanity/yama-scope/ptrace-scope-test.sh b/tests/Sanity/yama-scope/ptrace-scope-test.sh new file mode 100644 index 0000000..6eb1ca4 --- /dev/null +++ b/tests/Sanity/yama-scope/ptrace-scope-test.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +RETVAL=0 +OUT=$(mktemp) +eu-stack -p $$ |& tee $OUT +grep -i 'operation not permitted' $OUT && RETVAL=1 +rm $OUT +exit $RETVAL diff --git a/tests/Sanity/yama-scope/runtest.sh b/tests/Sanity/yama-scope/runtest.sh new file mode 100755 index 0000000..8195b54 --- /dev/null +++ b/tests/Sanity/yama-scope/runtest.sh @@ -0,0 +1,108 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/elfutils/Sanity/yama-scope +# Description: yama-scope +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2017 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="elfutils" +MY_USER="ptrace_scope_testuser" +TESTCASE="/tmp/ptrace-scope-test.sh" +PROCFILE='/proc/sys/kernel/yama/ptrace_scope' + +test_root() +{ + $TESTCASE +} + +test_user() +{ + su - $MY_USER -c $TESTCASE +} + +rlJournalStart + rlPhaseStartTest + +# This can easily be tested with strace. Just cycle through the settings: + +# 0 - Default attach security permissions. +# 1 - Restricted attach. Only child processes plus normal permissions. +# 2 - Admin-only attach. Only executables with CAP_SYS_PTRACE. +# 3 - No attach. No process may call ptrace at all. Irrevocable. + +# echo 0 > /proc/sys/kernel/yama/ptrace_scope + +# With 0, strace works against any process with your uid. For example, strace -p 2190. +# With 1, strace errors when doing the same as in 0: strace: attach: ptrace(PTRACE_SEIZE, 3180): Operation not permitted. However, you can strace any program you run from strace, "strace /bin/ls" or example. +# With 2, you can only strace from the root account. You can no longer strace commands run from strace. +# With 3, even root cannot strace. + +# --- + +# possible related AVCs tracked as https://bugzilla.redhat.com/show_bug.cgi?id=1458999 + +# --- + + rlRun "useradd $MY_USER" 0,9 + + rlRun "cp ptrace-scope-test.sh /tmp/" + rlRun "chmod a+rx /tmp/ptrace-scope-test.sh" + + rlRun "ORIGVAL=$( cat $PROCFILE )" + + # First, test the default behaviour, which is "no restriction" + # from the ptrace perspective. Here we assume that + # elfutils-default-yama-scope.rpm is installed and so the default + # yama policy is set to 0 instead of 1 which would otherwise be set + # as a kernel default (security/yama/yama_lsm.c ---> YAMA_SCOPE_RELATIONAL) + rlRun test_root + rlRun test_user + + rlRun "echo 0 > $PROCFILE" + rlRun test_root + rlRun test_user + rlRun "echo 1 > $PROCFILE" + rlRun test_root + rlRun test_user 1 + rlRun "echo 2 > $PROCFILE" + rlRun test_root + rlRun test_user 1 + # Following subtest would be irrevertible (till next reboot) + # rlRun "echo 3 > $PROCFILE" + # rlRun test_root 1 + # rlRun test_user 1 + + rlRun "userdel -f $MY_USER" + +# This testcase could be more complex - using child and non-child processes and +# performing reboots. But let's keep this simple, since we are not testing the +# kernel facility, but merely an elfutils "plugin" for it, whose purpose is to +# set the default yama policy as such. + + rlRun "echo $ORIGVAL > $PROCFILE" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From 299f1fc7e318986032fd3408a33c681183fa4b26 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 11 Nov 2021 00:40:26 +0100 Subject: [PATCH 10/80] 0.186-1 - Upgrade to upstream 0.186 --- .gitignore | 1 + elfutils.spec | 51 +++++++++++++++++++++++++++++++++------------------ sources | 2 +- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index e99bda5..862ef94 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,4 @@ /elfutils-0.183.tar.bz2 /elfutils-0.184.tar.bz2 /elfutils-0.185.tar.bz2 +/elfutils-0.186.tar.bz2 diff --git a/elfutils.spec b/elfutils.spec index c1cb8e4..014bdba 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.185 -%global baserelease 2 +Version: 0.186 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -42,11 +42,11 @@ BuildRequires: pkgconfig(libarchive) >= 3.1.2 # For tests need to bunzip2 test files. BuildRequires: bzip2 BuildRequires: zstd -# For the run-debuginfod-find.sh test case in %%check for /usr/sbin/ss +# For the run-debuginfod-find.sh test case in %%check for /usr/sbin/ss etc. BuildRequires: iproute +BuildRequires: procps BuildRequires: bsdtar BuildRequires: curl -BuildRequires: procps BuildRequires: automake BuildRequires: autoconf @@ -228,9 +228,7 @@ The ELF/DWARF file searching functions in libdwfl can query such servers to download those files on demand. %prep -%setup -q - -# Apply patches +%autosetup -p1 autoreconf -f -v -i @@ -239,14 +237,6 @@ autoreconf -f -v -i find . -name \*.sh ! -perm -0100 -print | xargs chmod +x %build -# This package uses top level ASM constructs which are incompatible with LTO. -# Top level ASMs are often used to implement symbol versioning. gcc-10 -# introduces a new mechanism for symbol versioning which works with LTO. -# Converting packages to use that mechanism instead of toplevel ASMs is -# recommended. -# Disable LTO -%define _lto_cflags %{nil} - # Remove -Wall from default flags. The makefiles enable enough warnings # themselves, and they use -Werror. Appending -Wall defeats the cases where # the makefiles disable some specific warnings for specific code. @@ -259,10 +249,10 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat" trap 'cat config.log' EXIT %configure CFLAGS="$RPM_OPT_FLAGS -fexceptions" trap '' EXIT -%make_build -s +%make_build %install -%make_install -s +%make_install chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* # We don't want the static libraries @@ -287,7 +277,7 @@ touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite # Record some build root versions in build.log uname -r; rpm -q binutils gcc glibc || true -%make_build -s check || (cat tests/test-suite.log; false) +%make_build check || (cat tests/test-suite.log; false) # Only the latest Fedora and EPEL have these scriptlets, # older Fedora and plain RHEL don't. @@ -379,6 +369,7 @@ fi %{_libdir}/libdebuginfod.so.* %{_bindir}/debuginfod-find %{_mandir}/man1/debuginfod-find.1* +%{_mandir}/man7/debuginfod*.7* %files debuginfod-client-devel %{_libdir}/pkgconfig/libdebuginfod.pc @@ -410,6 +401,30 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Nov 25 2021 Mark Wielaard - 0.186-1 +- Upgrade to upstream 0.186 + - debuginfod-client: Default $DEBUGINFOD_URLS is computed from + drop-in files /etc/debuginfod/*.urls rather than + hardcoded into the /etc/profile.d/debuginfod* + scripts. + Add $DEBUGINFOD_MAXSIZE and $DEBUGINFOD_MAXTIME settings + for skipping large/slow transfers. + Add $DEBUGINFOD_RETRY for retrying aborted lookups. + - debuginfod: Supply extra HTTP response headers, describing + archive/file names that satisfy the requested buildid content. + Support -d :memory: option for in-memory databases. + Protect against loops in federated server configurations. + Add -r option to use -I/-X regexes for grooming stale files. + Protect against wasted CPU from duplicate concurrent requests. + Limit the duration of groom ops roughly to rescan (-t) times. + Add --passive mode for serving from read-only database. + Several other performance improvements & prometheus metrics. + - libdw: Support for the NVIDIA Cuda line map extensions. + DW_LNE_NVIDIA_inlined_call and DW_LNE_NVIDIA_set_function_name + are defined in dwarf.h. New functions dwarf_linecontext and + dwarf_linefunctionname. + - translations: Update Japanese translation. + * Thu May 27 2021 Mark Wielaard - 0.185-2 - Disable debuginfod client by default for f34. diff --git a/sources b/sources index b564fdb..9267009 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.185.tar.bz2) = 34de0de1355b11740e036e0fc64f2fc063587c8eb121b19216ee5548d3f0f268d8fc3995176c47190466b9d881007cfa11a9d01e9a50e38af6119492bf8bb47f +SHA512 (elfutils-0.186.tar.bz2) = c9180b27ec62935f18b9431268d176f6023d1bb938731d2af6e7626ae460af6608a70ba68483aa1ec7e6cb0fa0528b661ca8b68bc4f58ea8e18af527c5950c78 From 6835503d55d3f2c1876c79da46e4e4bf4877434d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 25 Nov 2021 14:33:11 +0100 Subject: [PATCH 11/80] Disable LTO --- elfutils.spec | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/elfutils.spec b/elfutils.spec index 014bdba..3dce6cc 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -237,6 +237,10 @@ autoreconf -f -v -i find . -name \*.sh ! -perm -0100 -print | xargs chmod +x %build +# Disable LTO +# See https://sourceware.org/pipermail/elfutils-devel/2021q4/004385.html +%define _lto_cflags %{nil} + # Remove -Wall from default flags. The makefiles enable enough warnings # themselves, and they use -Werror. Appending -Wall defeats the cases where # the makefiles disable some specific warnings for specific code. From bf0787573d6e5a42920c326faf43181fe48de6e4 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Thu, 2 Dec 2021 14:05:28 +0100 Subject: [PATCH 12/80] GI Gating: set fedora-ci.koji-build.rpminspect.static-analysis mandatory --- gating.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/gating.yaml b/gating.yaml index 4fab4ec..f2f9f20 100644 --- a/gating.yaml +++ b/gating.yaml @@ -5,6 +5,7 @@ decision_context: bodhi_update_push_stable subject_type: koji_build rules: - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.rpminspect.static-analysis} --- !Policy product_versions: - rhel-9 From ebdf87f265f49d550fb2cbf6cbfb6184dca2b1f4 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 20 Jan 2022 01:47:46 +0000 Subject: [PATCH 13/80] - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index dff98ca..d109535 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.186 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -399,6 +399,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Jan 20 2022 Fedora Release Engineering - 0.186-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + * Wed Nov 10 2021 Mark Wielaard - 0.186-1 - Upgrade to upstream 0.186 - debuginfod-client: Default $DEBUGINFOD_URLS is computed from From 4a3ca6544c2bad79002316e912aa7b77982ebe9e Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 25 Mar 2022 12:21:37 +0100 Subject: [PATCH 14/80] 0.186-3 - Add support for FDO packaging metadata Also add s390x big endian workaround for broken FDO ELF note. And a workaround for ppc64le -Werror=null-dereference --- elfutils-0.186-elf-glibc.patch | 208 ++++++++++++++++++ elfutils-0.186-fdo-ebl.patch | 46 ++++ elfutils-0.186-fdo-efllint.patch | 26 +++ elfutils-0.186-fdo-swap.patch | 35 +++ ....186-ppc64le-error-return-workaround.patch | 97 ++++++++ elfutils.spec | 19 +- 6 files changed, 430 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.186-elf-glibc.patch create mode 100644 elfutils-0.186-fdo-ebl.patch create mode 100644 elfutils-0.186-fdo-efllint.patch create mode 100644 elfutils-0.186-fdo-swap.patch create mode 100644 elfutils-0.186-ppc64le-error-return-workaround.patch diff --git a/elfutils-0.186-elf-glibc.patch b/elfutils-0.186-elf-glibc.patch new file mode 100644 index 0000000..40aab81 --- /dev/null +++ b/elfutils-0.186-elf-glibc.patch @@ -0,0 +1,208 @@ +commit 31d551ae4dd8cf307c68f86b6c1ecac2f92b522a +Author: Mark Wielaard +Date: Thu Mar 24 23:06:09 2022 +0100 + + libelf: Sync elf.h from glibc. + + Adds EM_INTELGT, NT_ARM_TAGGED_ADDR_CTRL, NT_ARM_PAC_ENABLED_KEYS, + ELF_NOTE_FDO, NT_FDO_PACKAGING_METADATA and OpenRISC 1000 specific + relocs. + + It also adds and renames some GNU_PROPERTY constants. But none of the + constants the elfutils code uses was renamed or given a different + constant value. + + dwelf_elf_e_machine_string was updated to handle EM_INTELGT. + + Signed-off-by: Mark Wielaard + +diff --git a/libdwelf/dwelf_elf_e_machine_string.c b/libdwelf/dwelf_elf_e_machine_string.c +index 387648e2..051c70b5 100644 +--- a/libdwelf/dwelf_elf_e_machine_string.c ++++ b/libdwelf/dwelf_elf_e_machine_string.c +@@ -360,6 +360,8 @@ dwelf_elf_e_machine_string (int machine) + return "XMOS xCORE"; + case EM_MCHP_PIC: + return "Microchip 8-bit PIC"; ++ case EM_INTELGT: ++ return "Intel Graphics Technology"; + case EM_KM32: + return "KM211 KM32"; + case EM_KMX32: + + * elf_getdata.c (__libelf_type_aligns): ELF_T_GNUHASH has different +diff --git a/libelf/elf.h b/libelf/elf.h +index 8e3e618f..0735f6b5 100644 +--- a/libelf/elf.h ++++ b/libelf/elf.h +@@ -1,5 +1,5 @@ + /* This file defines standard ELF types, structures, and macros. +- Copyright (C) 1995-2020 Free Software Foundation, Inc. ++ Copyright (C) 1995-2022 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -336,7 +336,8 @@ typedef struct + #define EM_BA2 202 /* Beyond BA2 */ + #define EM_XCORE 203 /* XMOS xCORE */ + #define EM_MCHP_PIC 204 /* Microchip 8-bit PIC(r) */ +- /* reserved 205-209 */ ++#define EM_INTELGT 205 /* Intel Graphics Technology */ ++ /* reserved 206-209 */ + #define EM_KM32 210 /* KM211 KM32 */ + #define EM_KMX32 211 /* KM211 KMX32 */ + #define EM_EMX16 212 /* KM211 KMX16 */ +@@ -813,6 +814,10 @@ typedef struct + address keys. */ + #define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication + generic key. */ ++#define NT_ARM_TAGGED_ADDR_CTRL 0x409 /* AArch64 tagged address ++ control. */ ++#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* AArch64 pointer authentication ++ enabled keys. */ + #define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */ + #define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */ + #define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */ +@@ -1226,8 +1231,7 @@ typedef struct + #define AT_L3_CACHESIZE 46 + #define AT_L3_CACHEGEOMETRY 47 + +-#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery +- (AArch64). */ ++#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery */ + + /* Note section contents. Each entry in the note section begins with + a header of a fixed form. */ +@@ -1254,6 +1258,8 @@ typedef struct + /* Note entries for GNU systems have this name. */ + #define ELF_NOTE_GNU "GNU" + ++/* Note entries for freedesktop.org have this name. */ ++#define ELF_NOTE_FDO "FDO" + + /* Defined types of notes for Solaris. */ + +@@ -1297,6 +1303,10 @@ typedef struct + /* Program property. */ + #define NT_GNU_PROPERTY_TYPE_0 5 + ++/* Packaging metadata as defined on ++ https://systemd.io/COREDUMP_PACKAGE_METADATA/ */ ++#define NT_FDO_PACKAGING_METADATA 0xcafe1a7e ++ + /* Note section name of program property. */ + #define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property" + +@@ -1307,6 +1317,23 @@ typedef struct + /* No copy relocation on protected data symbol. */ + #define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 + ++/* A 4-byte unsigned integer property: A bit is set if it is set in all ++ relocatable inputs. */ ++#define GNU_PROPERTY_UINT32_AND_LO 0xb0000000 ++#define GNU_PROPERTY_UINT32_AND_HI 0xb0007fff ++ ++/* A 4-byte unsigned integer property: A bit is set if it is set in any ++ relocatable inputs. */ ++#define GNU_PROPERTY_UINT32_OR_LO 0xb0008000 ++#define GNU_PROPERTY_UINT32_OR_HI 0xb000ffff ++ ++/* The needed properties by the object file. */ ++#define GNU_PROPERTY_1_NEEDED GNU_PROPERTY_UINT32_OR_LO ++ ++/* Set if the object file requires canonical function pointers and ++ cannot be used with copy relocation. */ ++#define GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS (1U << 0) ++ + /* Processor-specific semantics, lo */ + #define GNU_PROPERTY_LOPROC 0xc0000000 + /* Processor-specific semantics, hi */ +@@ -1324,31 +1351,26 @@ typedef struct + + /* The x86 instruction sets indicated by the corresponding bits are + used in program. Their support in the hardware is optional. */ +-#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000 ++#define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002 + /* The x86 instruction sets indicated by the corresponding bits are + used in program and they must be supported by the hardware. */ +-#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001 ++#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002 + /* X86 processor-specific features used in program. */ + #define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 + +-#define GNU_PROPERTY_X86_ISA_1_486 (1U << 0) +-#define GNU_PROPERTY_X86_ISA_1_586 (1U << 1) +-#define GNU_PROPERTY_X86_ISA_1_686 (1U << 2) +-#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 3) +-#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 4) +-#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 5) +-#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 6) +-#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 7) +-#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 8) +-#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 9) +-#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 10) +-#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 11) +-#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 12) +-#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 13) +-#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 14) +-#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 15) +-#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 16) +-#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 17) ++/* GNU_PROPERTY_X86_ISA_1_BASELINE: CMOV, CX8 (cmpxchg8b), FPU (fld), ++ MMX, OSFXSR (fxsave), SCE (syscall), SSE and SSE2. */ ++#define GNU_PROPERTY_X86_ISA_1_BASELINE (1U << 0) ++/* GNU_PROPERTY_X86_ISA_1_V2: GNU_PROPERTY_X86_ISA_1_BASELINE, ++ CMPXCHG16B (cmpxchg16b), LAHF-SAHF (lahf), POPCNT (popcnt), SSE3, ++ SSSE3, SSE4.1 and SSE4.2. */ ++#define GNU_PROPERTY_X86_ISA_1_V2 (1U << 1) ++/* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1, ++ BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE. */ ++#define GNU_PROPERTY_X86_ISA_1_V3 (1U << 2) ++/* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F, ++ AVX512BW, AVX512CD, AVX512DQ and AVX512VL. */ ++#define GNU_PROPERTY_X86_ISA_1_V4 (1U << 3) + + /* This indicates that all executable sections are compatible with + IBT. */ +@@ -4102,4 +4124,41 @@ enum + #define R_ARC_TLS_LE_S9 0x4a + #define R_ARC_TLS_LE_32 0x4b + ++/* OpenRISC 1000 specific relocs. */ ++#define R_OR1K_NONE 0 ++#define R_OR1K_32 1 ++#define R_OR1K_16 2 ++#define R_OR1K_8 3 ++#define R_OR1K_LO_16_IN_INSN 4 ++#define R_OR1K_HI_16_IN_INSN 5 ++#define R_OR1K_INSN_REL_26 6 ++#define R_OR1K_GNU_VTENTRY 7 ++#define R_OR1K_GNU_VTINHERIT 8 ++#define R_OR1K_32_PCREL 9 ++#define R_OR1K_16_PCREL 10 ++#define R_OR1K_8_PCREL 11 ++#define R_OR1K_GOTPC_HI16 12 ++#define R_OR1K_GOTPC_LO16 13 ++#define R_OR1K_GOT16 14 ++#define R_OR1K_PLT26 15 ++#define R_OR1K_GOTOFF_HI16 16 ++#define R_OR1K_GOTOFF_LO16 17 ++#define R_OR1K_COPY 18 ++#define R_OR1K_GLOB_DAT 19 ++#define R_OR1K_JMP_SLOT 20 ++#define R_OR1K_RELATIVE 21 ++#define R_OR1K_TLS_GD_HI16 22 ++#define R_OR1K_TLS_GD_LO16 23 ++#define R_OR1K_TLS_LDM_HI16 24 ++#define R_OR1K_TLS_LDM_LO16 25 ++#define R_OR1K_TLS_LDO_HI16 26 ++#define R_OR1K_TLS_LDO_LO16 27 ++#define R_OR1K_TLS_IE_HI16 28 ++#define R_OR1K_TLS_IE_LO16 29 ++#define R_OR1K_TLS_LE_HI16 30 ++#define R_OR1K_TLS_LE_LO16 31 ++#define R_OR1K_TLS_TPOFF 32 ++#define R_OR1K_TLS_DTPOFF 33 ++#define R_OR1K_TLS_DTPMOD 34 ++ + #endif /* elf.h */ diff --git a/elfutils-0.186-fdo-ebl.patch b/elfutils-0.186-fdo-ebl.patch new file mode 100644 index 0000000..9173f96 --- /dev/null +++ b/elfutils-0.186-fdo-ebl.patch @@ -0,0 +1,46 @@ +commit 1e5302ad3cf02788339a340f6322d1af1f05d9f9 +Author: Luca Boccassi +Date: Sun Nov 21 19:43:18 2021 +0000 + + libebl: recognize FDO Packaging Metadata ELF note + + As defined on: https://systemd.io/COREDUMP_PACKAGE_METADATA/ + this note will be used starting from Fedora 36. Allow + readelf --notes to pretty print it: + + Note section [ 3] '.note.package' of 76 bytes at offset 0x2e8: + Owner Data size Type + FDO 57 FDO_PACKAGING_METADATA + Packaging Metadata: {"type":"deb","name":"fsverity-utils","version":"1.3-1"} + + Signed-off-by: Luca Boccassi + +diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c +index 36efe275..5a7c5c62 100644 +--- a/libebl/eblobjnote.c ++++ b/libebl/eblobjnote.c +@@ -288,6 +288,10 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type, + if (descsz == 0 && type == NT_VERSION) + return; + ++ if (strcmp ("FDO", name) == 0 && type == NT_FDO_PACKAGING_METADATA ++ && descsz > 0 && desc[descsz - 1] == '\0') ++ printf(" Packaging Metadata: %.*s\n", (int) descsz, desc); ++ + /* Everything else should have the "GNU" owner name. */ + if (strcmp ("GNU", name) != 0) + return; +diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c +index 4662906d..473a1f2f 100644 +--- a/libebl/eblobjnotetypename.c ++++ b/libebl/eblobjnotetypename.c +@@ -101,6 +101,9 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, + return buf; + } + ++ if (strcmp (name, "FDO") == 0 && type == NT_FDO_PACKAGING_METADATA) ++ return "FDO_PACKAGING_METADATA"; ++ + if (strcmp (name, "GNU") != 0) + { + /* NT_VERSION is special, all data is in the name. */ diff --git a/elfutils-0.186-fdo-efllint.patch b/elfutils-0.186-fdo-efllint.patch new file mode 100644 index 0000000..682c569 --- /dev/null +++ b/elfutils-0.186-fdo-efllint.patch @@ -0,0 +1,26 @@ +commit 4a22e01277e37540d753e3513c4df3bd2b6e1246 +Author: Mark Wielaard +Date: Fri Mar 25 00:00:47 2022 +0100 + + elflint: Recognize NT_FDO_PACKAGING_METADATA + + Signed-off-by: Mark Wielaard + +diff --git a/src/elflint.c b/src/elflint.c +index ef7725ce..d919936f 100644 +--- a/src/elflint.c ++++ b/src/elflint.c +@@ -4384,6 +4384,13 @@ section [%2d] '%s': unknown core file note type %" PRIu32 + else + goto unknown_note; + ++ case NT_FDO_PACKAGING_METADATA: ++ if (nhdr.n_namesz == sizeof ELF_NOTE_FDO ++ && strcmp (data->d_buf + name_offset, ELF_NOTE_FDO) == 0) ++ break; ++ else ++ goto unknown_note; ++ + case 0: + /* Linux vDSOs use a type 0 note for the kernel version word. */ + if (nhdr.n_namesz == sizeof "Linux" diff --git a/elfutils-0.186-fdo-swap.patch b/elfutils-0.186-fdo-swap.patch new file mode 100644 index 0000000..34b114f --- /dev/null +++ b/elfutils-0.186-fdo-swap.patch @@ -0,0 +1,35 @@ +diff --git a/libelf/gelf_getnote.c b/libelf/gelf_getnote.c +index 0f7b9d68..6ef970c5 100644 +--- a/libelf/gelf_getnote.c ++++ b/libelf/gelf_getnote.c +@@ -31,6 +31,7 @@ + #endif + + #include ++#include + #include + #include + +@@ -73,6 +74,22 @@ gelf_getnote (Elf_Data *data, size_t offset, GElf_Nhdr *result, + offset = 0; + else + { ++ /* Workaround FDO package notes on big-endian systems, ++ getting namesz and descsz wrong. Detect it by getting ++ a bad namesz, descsz and byte swapped n_type for ++ NT_FDO_PACKAGING_METADATA. */ ++ if (unlikely (n->n_type == bswap_32 (NT_FDO_PACKAGING_METADATA) ++ && n->n_namesz > data->d_size ++ && n->n_descsz > data->d_size)) ++ { ++ /* n might not be writable, use result and redirect n. */ ++ *result = *n; ++ result->n_type = bswap_32 (n->n_type); ++ result->n_namesz = bswap_32 (n->n_namesz); ++ result->n_descsz = bswap_32 (n->n_descsz); ++ n = result; ++ } ++ + /* This is slightly tricky, offset is guaranteed to be 4 + byte aligned, which is what we need for the name_offset. + And normally desc_offset is also 4 byte aligned, but not diff --git a/elfutils-0.186-ppc64le-error-return-workaround.patch b/elfutils-0.186-ppc64le-error-return-workaround.patch new file mode 100644 index 0000000..adcd5a9 --- /dev/null +++ b/elfutils-0.186-ppc64le-error-return-workaround.patch @@ -0,0 +1,97 @@ +diff --git a/src/readelf.c b/src/readelf.c +index 93fb5989..43ae00b6 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -1661,10 +1661,13 @@ print_scngrp (Ebl *ebl) + elf_ndxscn (scn)); + shdr = gelf_getshdr (scn, &shdr_mem); + if (unlikely (shdr == NULL)) ++ { + error (EXIT_FAILURE, 0, + _("cannot get section [%zd] header: %s"), + elf_ndxscn (scn), + elf_errmsg (-1)); ++ return; ++ } + } + handle_scngrp (ebl, scn, shdr); + } +@@ -2388,9 +2391,12 @@ print_symtab (Ebl *ebl, int type) + elf_ndxscn (scn)); + shdr = gelf_getshdr (scn, &shdr_mem); + if (unlikely (shdr == NULL)) ++ { + error (EXIT_FAILURE, 0, + _("cannot get section [%zd] header: %s"), + elf_ndxscn (scn), elf_errmsg (-1)); ++ return; ++ } + } + handle_symtab (ebl, scn, shdr); + } +@@ -2722,8 +2728,11 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) + GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), + &glink_mem); + if (glink == NULL) ++ { + error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"), + elf_ndxscn (scn)); ++ return; ++ } + + printf (ngettext ("\ + \nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", +@@ -2798,8 +2807,11 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) + GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), + &glink_mem); + if (glink == NULL) ++ { + error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"), + elf_ndxscn (scn)); ++ return; ++ } + + int class = gelf_getclass (ebl->elf); + printf (ngettext ("\ +@@ -3102,8 +3114,11 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) + &glink_mem); + size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_HALF, 1, EV_CURRENT); + if (glink == NULL) ++ { + error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"), + elf_ndxscn (scn)); ++ return; ++ } + + /* Print the header. */ + printf (ngettext ("\ +@@ -3495,9 +3510,12 @@ handle_hash (Ebl *ebl) + elf_ndxscn (scn)); + shdr = gelf_getshdr (scn, &shdr_mem); + if (unlikely (shdr == NULL)) ++ { + error (EXIT_FAILURE, 0, + _("cannot get section [%zd] header: %s"), + elf_ndxscn (scn), elf_errmsg (-1)); ++ return; ++ } + } + + if (shdr->sh_type == SHT_HASH) +diff --git a/src/unstrip.c b/src/unstrip.c +index aacc9aad..0dc713aa 100644 +--- a/src/unstrip.c ++++ b/src/unstrip.c +@@ -1552,9 +1552,12 @@ more sections in stripped file than debug file -- arguments reversed?")); + } + + if (sec == NULL) ++ { + error (EXIT_FAILURE, 0, + _("cannot find matching section for [%zu] '%s'"), + elf_ndxscn (scn), name); ++ return; ++ } + + sec->outscn = scn; + } diff --git a/elfutils.spec b/elfutils.spec index d109535..9a074d2 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.186 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -63,6 +63,16 @@ BuildRequires: gettext-devel # Patches +# Support for FDO packaging metadata +Patch1: elfutils-0.186-elf-glibc.patch +Patch2: elfutils-0.186-fdo-ebl.patch +Patch3: elfutils-0.186-fdo-efllint.patch +# For s390x... +Patch4: elfutils-0.186-fdo-swap.patch +# Workaround for gcc on ppc64le +# error: potential null pointer dereference [-Werror=null-dereference] +Patch5: elfutils-0.186-ppc64le-error-return-workaround.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -399,6 +409,13 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Mar 25 2022 Mark Wielaard - 0.186-3 +- Add elfutils-0.186-elf-glibc.patch +- Add elfutils-0.186-fdo-ebl.patch +- Add elfutils-0.186-fdo-efllint.patch +- Add elfutils-0.186-fdo-swap.patch +- Add elfutils-0.186-ppc64le-error-return-workaround.patch + * Thu Jan 20 2022 Fedora Release Engineering - 0.186-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild From c4a576eb457e57a9f12fbc0b33a568f38dd558c5 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 7 Apr 2022 15:02:13 +0200 Subject: [PATCH 15/80] 0.186-4 - Add an explicit versioned requires --- elfutils.spec | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 9a074d2..2ff9257 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.186 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -196,6 +196,8 @@ License: GPLv3+ and (GPLv2+ or LGPLv3+) %if 0%{!?_isa:1} Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} %endif +# For debuginfod-find binary +Requires: elfutils-libs%{depsuffix} = %{version}-%{release} %package debuginfod-client-devel Summary: Libraries and headers to build debuginfod client applications @@ -409,6 +411,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Apr 7 2022 Mark Wielaard - 0.186-4 +- Add an explicit versioned requires from elfutils-debuginfod-client + on elfutils-libs. + * Fri Mar 25 2022 Mark Wielaard - 0.186-3 - Add elfutils-0.186-elf-glibc.patch - Add elfutils-0.186-fdo-ebl.patch From d00affffb1a7380b3b8a59cdbe106729a2bf686d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 12 Apr 2022 15:58:14 +0200 Subject: [PATCH 16/80] 0.186-5 - Add another explicit versioned requires --- elfutils.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 2ff9257..c36501b 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.186 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -198,6 +198,7 @@ Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} %endif # For debuginfod-find binary Requires: elfutils-libs%{depsuffix} = %{version}-%{release} +Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} %package debuginfod-client-devel Summary: Libraries and headers to build debuginfod client applications @@ -411,6 +412,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Apr 12 2022 Mark Wielaard - 0.186-5 +- Add an explicit versioned requires from elfutils-debuginfod-client + on elfutils-libelf. + * Thu Apr 7 2022 Mark Wielaard - 0.186-4 - Add an explicit versioned requires from elfutils-debuginfod-client on elfutils-libs. From 5323c422e7f4c8f66a4cb3142beda0743aec7737 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 26 Apr 2022 14:25:14 +0200 Subject: [PATCH 17/80] 0.187-1 - Upgrade to elfutils 0.187 --- .gitignore | 1 + elfutils-0.186-elf-glibc.patch | 208 ------------------ elfutils-0.186-fdo-ebl.patch | 46 ---- elfutils-0.186-fdo-efllint.patch | 26 --- ....186-ppc64le-error-return-workaround.patch | 97 -------- elfutils.spec | 30 ++- sources | 2 +- 7 files changed, 21 insertions(+), 389 deletions(-) delete mode 100644 elfutils-0.186-elf-glibc.patch delete mode 100644 elfutils-0.186-fdo-ebl.patch delete mode 100644 elfutils-0.186-fdo-efllint.patch delete mode 100644 elfutils-0.186-ppc64le-error-return-workaround.patch diff --git a/.gitignore b/.gitignore index 862ef94..f28cb05 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ /elfutils-0.184.tar.bz2 /elfutils-0.185.tar.bz2 /elfutils-0.186.tar.bz2 +/elfutils-0.187.tar.bz2 diff --git a/elfutils-0.186-elf-glibc.patch b/elfutils-0.186-elf-glibc.patch deleted file mode 100644 index 40aab81..0000000 --- a/elfutils-0.186-elf-glibc.patch +++ /dev/null @@ -1,208 +0,0 @@ -commit 31d551ae4dd8cf307c68f86b6c1ecac2f92b522a -Author: Mark Wielaard -Date: Thu Mar 24 23:06:09 2022 +0100 - - libelf: Sync elf.h from glibc. - - Adds EM_INTELGT, NT_ARM_TAGGED_ADDR_CTRL, NT_ARM_PAC_ENABLED_KEYS, - ELF_NOTE_FDO, NT_FDO_PACKAGING_METADATA and OpenRISC 1000 specific - relocs. - - It also adds and renames some GNU_PROPERTY constants. But none of the - constants the elfutils code uses was renamed or given a different - constant value. - - dwelf_elf_e_machine_string was updated to handle EM_INTELGT. - - Signed-off-by: Mark Wielaard - -diff --git a/libdwelf/dwelf_elf_e_machine_string.c b/libdwelf/dwelf_elf_e_machine_string.c -index 387648e2..051c70b5 100644 ---- a/libdwelf/dwelf_elf_e_machine_string.c -+++ b/libdwelf/dwelf_elf_e_machine_string.c -@@ -360,6 +360,8 @@ dwelf_elf_e_machine_string (int machine) - return "XMOS xCORE"; - case EM_MCHP_PIC: - return "Microchip 8-bit PIC"; -+ case EM_INTELGT: -+ return "Intel Graphics Technology"; - case EM_KM32: - return "KM211 KM32"; - case EM_KMX32: - - * elf_getdata.c (__libelf_type_aligns): ELF_T_GNUHASH has different -diff --git a/libelf/elf.h b/libelf/elf.h -index 8e3e618f..0735f6b5 100644 ---- a/libelf/elf.h -+++ b/libelf/elf.h -@@ -1,5 +1,5 @@ - /* This file defines standard ELF types, structures, and macros. -- Copyright (C) 1995-2020 Free Software Foundation, Inc. -+ Copyright (C) 1995-2022 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -336,7 +336,8 @@ typedef struct - #define EM_BA2 202 /* Beyond BA2 */ - #define EM_XCORE 203 /* XMOS xCORE */ - #define EM_MCHP_PIC 204 /* Microchip 8-bit PIC(r) */ -- /* reserved 205-209 */ -+#define EM_INTELGT 205 /* Intel Graphics Technology */ -+ /* reserved 206-209 */ - #define EM_KM32 210 /* KM211 KM32 */ - #define EM_KMX32 211 /* KM211 KMX32 */ - #define EM_EMX16 212 /* KM211 KMX16 */ -@@ -813,6 +814,10 @@ typedef struct - address keys. */ - #define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication - generic key. */ -+#define NT_ARM_TAGGED_ADDR_CTRL 0x409 /* AArch64 tagged address -+ control. */ -+#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* AArch64 pointer authentication -+ enabled keys. */ - #define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */ - #define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */ - #define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */ -@@ -1226,8 +1231,7 @@ typedef struct - #define AT_L3_CACHESIZE 46 - #define AT_L3_CACHEGEOMETRY 47 - --#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery -- (AArch64). */ -+#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery */ - - /* Note section contents. Each entry in the note section begins with - a header of a fixed form. */ -@@ -1254,6 +1258,8 @@ typedef struct - /* Note entries for GNU systems have this name. */ - #define ELF_NOTE_GNU "GNU" - -+/* Note entries for freedesktop.org have this name. */ -+#define ELF_NOTE_FDO "FDO" - - /* Defined types of notes for Solaris. */ - -@@ -1297,6 +1303,10 @@ typedef struct - /* Program property. */ - #define NT_GNU_PROPERTY_TYPE_0 5 - -+/* Packaging metadata as defined on -+ https://systemd.io/COREDUMP_PACKAGE_METADATA/ */ -+#define NT_FDO_PACKAGING_METADATA 0xcafe1a7e -+ - /* Note section name of program property. */ - #define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property" - -@@ -1307,6 +1317,23 @@ typedef struct - /* No copy relocation on protected data symbol. */ - #define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2 - -+/* A 4-byte unsigned integer property: A bit is set if it is set in all -+ relocatable inputs. */ -+#define GNU_PROPERTY_UINT32_AND_LO 0xb0000000 -+#define GNU_PROPERTY_UINT32_AND_HI 0xb0007fff -+ -+/* A 4-byte unsigned integer property: A bit is set if it is set in any -+ relocatable inputs. */ -+#define GNU_PROPERTY_UINT32_OR_LO 0xb0008000 -+#define GNU_PROPERTY_UINT32_OR_HI 0xb000ffff -+ -+/* The needed properties by the object file. */ -+#define GNU_PROPERTY_1_NEEDED GNU_PROPERTY_UINT32_OR_LO -+ -+/* Set if the object file requires canonical function pointers and -+ cannot be used with copy relocation. */ -+#define GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS (1U << 0) -+ - /* Processor-specific semantics, lo */ - #define GNU_PROPERTY_LOPROC 0xc0000000 - /* Processor-specific semantics, hi */ -@@ -1324,31 +1351,26 @@ typedef struct - - /* The x86 instruction sets indicated by the corresponding bits are - used in program. Their support in the hardware is optional. */ --#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000 -+#define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002 - /* The x86 instruction sets indicated by the corresponding bits are - used in program and they must be supported by the hardware. */ --#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0000001 -+#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002 - /* X86 processor-specific features used in program. */ - #define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002 - --#define GNU_PROPERTY_X86_ISA_1_486 (1U << 0) --#define GNU_PROPERTY_X86_ISA_1_586 (1U << 1) --#define GNU_PROPERTY_X86_ISA_1_686 (1U << 2) --#define GNU_PROPERTY_X86_ISA_1_SSE (1U << 3) --#define GNU_PROPERTY_X86_ISA_1_SSE2 (1U << 4) --#define GNU_PROPERTY_X86_ISA_1_SSE3 (1U << 5) --#define GNU_PROPERTY_X86_ISA_1_SSSE3 (1U << 6) --#define GNU_PROPERTY_X86_ISA_1_SSE4_1 (1U << 7) --#define GNU_PROPERTY_X86_ISA_1_SSE4_2 (1U << 8) --#define GNU_PROPERTY_X86_ISA_1_AVX (1U << 9) --#define GNU_PROPERTY_X86_ISA_1_AVX2 (1U << 10) --#define GNU_PROPERTY_X86_ISA_1_AVX512F (1U << 11) --#define GNU_PROPERTY_X86_ISA_1_AVX512CD (1U << 12) --#define GNU_PROPERTY_X86_ISA_1_AVX512ER (1U << 13) --#define GNU_PROPERTY_X86_ISA_1_AVX512PF (1U << 14) --#define GNU_PROPERTY_X86_ISA_1_AVX512VL (1U << 15) --#define GNU_PROPERTY_X86_ISA_1_AVX512DQ (1U << 16) --#define GNU_PROPERTY_X86_ISA_1_AVX512BW (1U << 17) -+/* GNU_PROPERTY_X86_ISA_1_BASELINE: CMOV, CX8 (cmpxchg8b), FPU (fld), -+ MMX, OSFXSR (fxsave), SCE (syscall), SSE and SSE2. */ -+#define GNU_PROPERTY_X86_ISA_1_BASELINE (1U << 0) -+/* GNU_PROPERTY_X86_ISA_1_V2: GNU_PROPERTY_X86_ISA_1_BASELINE, -+ CMPXCHG16B (cmpxchg16b), LAHF-SAHF (lahf), POPCNT (popcnt), SSE3, -+ SSSE3, SSE4.1 and SSE4.2. */ -+#define GNU_PROPERTY_X86_ISA_1_V2 (1U << 1) -+/* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1, -+ BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE. */ -+#define GNU_PROPERTY_X86_ISA_1_V3 (1U << 2) -+/* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F, -+ AVX512BW, AVX512CD, AVX512DQ and AVX512VL. */ -+#define GNU_PROPERTY_X86_ISA_1_V4 (1U << 3) - - /* This indicates that all executable sections are compatible with - IBT. */ -@@ -4102,4 +4124,41 @@ enum - #define R_ARC_TLS_LE_S9 0x4a - #define R_ARC_TLS_LE_32 0x4b - -+/* OpenRISC 1000 specific relocs. */ -+#define R_OR1K_NONE 0 -+#define R_OR1K_32 1 -+#define R_OR1K_16 2 -+#define R_OR1K_8 3 -+#define R_OR1K_LO_16_IN_INSN 4 -+#define R_OR1K_HI_16_IN_INSN 5 -+#define R_OR1K_INSN_REL_26 6 -+#define R_OR1K_GNU_VTENTRY 7 -+#define R_OR1K_GNU_VTINHERIT 8 -+#define R_OR1K_32_PCREL 9 -+#define R_OR1K_16_PCREL 10 -+#define R_OR1K_8_PCREL 11 -+#define R_OR1K_GOTPC_HI16 12 -+#define R_OR1K_GOTPC_LO16 13 -+#define R_OR1K_GOT16 14 -+#define R_OR1K_PLT26 15 -+#define R_OR1K_GOTOFF_HI16 16 -+#define R_OR1K_GOTOFF_LO16 17 -+#define R_OR1K_COPY 18 -+#define R_OR1K_GLOB_DAT 19 -+#define R_OR1K_JMP_SLOT 20 -+#define R_OR1K_RELATIVE 21 -+#define R_OR1K_TLS_GD_HI16 22 -+#define R_OR1K_TLS_GD_LO16 23 -+#define R_OR1K_TLS_LDM_HI16 24 -+#define R_OR1K_TLS_LDM_LO16 25 -+#define R_OR1K_TLS_LDO_HI16 26 -+#define R_OR1K_TLS_LDO_LO16 27 -+#define R_OR1K_TLS_IE_HI16 28 -+#define R_OR1K_TLS_IE_LO16 29 -+#define R_OR1K_TLS_LE_HI16 30 -+#define R_OR1K_TLS_LE_LO16 31 -+#define R_OR1K_TLS_TPOFF 32 -+#define R_OR1K_TLS_DTPOFF 33 -+#define R_OR1K_TLS_DTPMOD 34 -+ - #endif /* elf.h */ diff --git a/elfutils-0.186-fdo-ebl.patch b/elfutils-0.186-fdo-ebl.patch deleted file mode 100644 index 9173f96..0000000 --- a/elfutils-0.186-fdo-ebl.patch +++ /dev/null @@ -1,46 +0,0 @@ -commit 1e5302ad3cf02788339a340f6322d1af1f05d9f9 -Author: Luca Boccassi -Date: Sun Nov 21 19:43:18 2021 +0000 - - libebl: recognize FDO Packaging Metadata ELF note - - As defined on: https://systemd.io/COREDUMP_PACKAGE_METADATA/ - this note will be used starting from Fedora 36. Allow - readelf --notes to pretty print it: - - Note section [ 3] '.note.package' of 76 bytes at offset 0x2e8: - Owner Data size Type - FDO 57 FDO_PACKAGING_METADATA - Packaging Metadata: {"type":"deb","name":"fsverity-utils","version":"1.3-1"} - - Signed-off-by: Luca Boccassi - -diff --git a/libebl/eblobjnote.c b/libebl/eblobjnote.c -index 36efe275..5a7c5c62 100644 ---- a/libebl/eblobjnote.c -+++ b/libebl/eblobjnote.c -@@ -288,6 +288,10 @@ ebl_object_note (Ebl *ebl, uint32_t namesz, const char *name, uint32_t type, - if (descsz == 0 && type == NT_VERSION) - return; - -+ if (strcmp ("FDO", name) == 0 && type == NT_FDO_PACKAGING_METADATA -+ && descsz > 0 && desc[descsz - 1] == '\0') -+ printf(" Packaging Metadata: %.*s\n", (int) descsz, desc); -+ - /* Everything else should have the "GNU" owner name. */ - if (strcmp ("GNU", name) != 0) - return; -diff --git a/libebl/eblobjnotetypename.c b/libebl/eblobjnotetypename.c -index 4662906d..473a1f2f 100644 ---- a/libebl/eblobjnotetypename.c -+++ b/libebl/eblobjnotetypename.c -@@ -101,6 +101,9 @@ ebl_object_note_type_name (Ebl *ebl, const char *name, uint32_t type, - return buf; - } - -+ if (strcmp (name, "FDO") == 0 && type == NT_FDO_PACKAGING_METADATA) -+ return "FDO_PACKAGING_METADATA"; -+ - if (strcmp (name, "GNU") != 0) - { - /* NT_VERSION is special, all data is in the name. */ diff --git a/elfutils-0.186-fdo-efllint.patch b/elfutils-0.186-fdo-efllint.patch deleted file mode 100644 index 682c569..0000000 --- a/elfutils-0.186-fdo-efllint.patch +++ /dev/null @@ -1,26 +0,0 @@ -commit 4a22e01277e37540d753e3513c4df3bd2b6e1246 -Author: Mark Wielaard -Date: Fri Mar 25 00:00:47 2022 +0100 - - elflint: Recognize NT_FDO_PACKAGING_METADATA - - Signed-off-by: Mark Wielaard - -diff --git a/src/elflint.c b/src/elflint.c -index ef7725ce..d919936f 100644 ---- a/src/elflint.c -+++ b/src/elflint.c -@@ -4384,6 +4384,13 @@ section [%2d] '%s': unknown core file note type %" PRIu32 - else - goto unknown_note; - -+ case NT_FDO_PACKAGING_METADATA: -+ if (nhdr.n_namesz == sizeof ELF_NOTE_FDO -+ && strcmp (data->d_buf + name_offset, ELF_NOTE_FDO) == 0) -+ break; -+ else -+ goto unknown_note; -+ - case 0: - /* Linux vDSOs use a type 0 note for the kernel version word. */ - if (nhdr.n_namesz == sizeof "Linux" diff --git a/elfutils-0.186-ppc64le-error-return-workaround.patch b/elfutils-0.186-ppc64le-error-return-workaround.patch deleted file mode 100644 index adcd5a9..0000000 --- a/elfutils-0.186-ppc64le-error-return-workaround.patch +++ /dev/null @@ -1,97 +0,0 @@ -diff --git a/src/readelf.c b/src/readelf.c -index 93fb5989..43ae00b6 100644 ---- a/src/readelf.c -+++ b/src/readelf.c -@@ -1661,10 +1661,13 @@ print_scngrp (Ebl *ebl) - elf_ndxscn (scn)); - shdr = gelf_getshdr (scn, &shdr_mem); - if (unlikely (shdr == NULL)) -+ { - error (EXIT_FAILURE, 0, - _("cannot get section [%zd] header: %s"), - elf_ndxscn (scn), - elf_errmsg (-1)); -+ return; -+ } - } - handle_scngrp (ebl, scn, shdr); - } -@@ -2388,9 +2391,12 @@ print_symtab (Ebl *ebl, int type) - elf_ndxscn (scn)); - shdr = gelf_getshdr (scn, &shdr_mem); - if (unlikely (shdr == NULL)) -+ { - error (EXIT_FAILURE, 0, - _("cannot get section [%zd] header: %s"), - elf_ndxscn (scn), elf_errmsg (-1)); -+ return; -+ } - } - handle_symtab (ebl, scn, shdr); - } -@@ -2722,8 +2728,11 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) - GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink_mem); - if (glink == NULL) -+ { - error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"), - elf_ndxscn (scn)); -+ return; -+ } - - printf (ngettext ("\ - \nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n", -@@ -2798,8 +2807,11 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) - GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), - &glink_mem); - if (glink == NULL) -+ { - error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"), - elf_ndxscn (scn)); -+ return; -+ } - - int class = gelf_getclass (ebl->elf); - printf (ngettext ("\ -@@ -3102,8 +3114,11 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr) - &glink_mem); - size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_HALF, 1, EV_CURRENT); - if (glink == NULL) -+ { - error (EXIT_FAILURE, 0, _("invalid sh_link value in section %zu"), - elf_ndxscn (scn)); -+ return; -+ } - - /* Print the header. */ - printf (ngettext ("\ -@@ -3495,9 +3510,12 @@ handle_hash (Ebl *ebl) - elf_ndxscn (scn)); - shdr = gelf_getshdr (scn, &shdr_mem); - if (unlikely (shdr == NULL)) -+ { - error (EXIT_FAILURE, 0, - _("cannot get section [%zd] header: %s"), - elf_ndxscn (scn), elf_errmsg (-1)); -+ return; -+ } - } - - if (shdr->sh_type == SHT_HASH) -diff --git a/src/unstrip.c b/src/unstrip.c -index aacc9aad..0dc713aa 100644 ---- a/src/unstrip.c -+++ b/src/unstrip.c -@@ -1552,9 +1552,12 @@ more sections in stripped file than debug file -- arguments reversed?")); - } - - if (sec == NULL) -+ { - error (EXIT_FAILURE, 0, - _("cannot find matching section for [%zu] '%s'"), - elf_ndxscn (scn), name); -+ return; -+ } - - sec->outscn = scn; - } diff --git a/elfutils.spec b/elfutils.spec index c36501b..7adb433 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.186 -%global baserelease 5 +Version: 0.187 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -63,15 +63,8 @@ BuildRequires: gettext-devel # Patches -# Support for FDO packaging metadata -Patch1: elfutils-0.186-elf-glibc.patch -Patch2: elfutils-0.186-fdo-ebl.patch -Patch3: elfutils-0.186-fdo-efllint.patch -# For s390x... -Patch4: elfutils-0.186-fdo-swap.patch -# Workaround for gcc on ppc64le -# error: potential null pointer dereference [-Werror=null-dereference] -Patch5: elfutils-0.186-ppc64le-error-return-workaround.patch +# For s390x... FDO package notes are bogus. +Patch1: elfutils-0.186-fdo-swap.patch %description Elfutils is a collection of utilities, including stack (to show @@ -412,6 +405,21 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Apr 26 2022 Mark Wielaard - 0.187-1 +- Upgrade to elfutils 0.187 + - debuginfod: Support -C option for connection thread pooling. + - debuginfod-client: Negative cache file are now zero sized instead + of no-permission files. + - addr2line: The -A, --absolute option, which shows file names + includingthe full compilation directory is now the + default. To get theold behavior use the new option --relative. + - readelf, elflint: Recognize FDO Packaging Metadata ELF notes + - libdw, debuginfo-client: Load libcurl lazily only when files need + to be fetched remotely. libcurl is now never loaded when + DEBUGINFOD_URLS is unset. And whenDEBUGINFOD_URLS is set, + libcurl is only loaded when the debuginfod_begin function is + called. + * Tue Apr 12 2022 Mark Wielaard - 0.186-5 - Add an explicit versioned requires from elfutils-debuginfod-client on elfutils-libelf. diff --git a/sources b/sources index 9267009..808d95e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.186.tar.bz2) = c9180b27ec62935f18b9431268d176f6023d1bb938731d2af6e7626ae460af6608a70ba68483aa1ec7e6cb0fa0528b661ca8b68bc4f58ea8e18af527c5950c78 +SHA512 (elfutils-0.187.tar.bz2) = a9b9e32b503b8b50a62d4e4001097ed2721d3475232a6380e6b9853bd1647aec016440c0ca7ceb950daf1144f8db9814ab43cf33cc0ebef7fc91e9e775c9e874 From 6a6ddccfb426374f09063594ae7d87be4edea143 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 3 May 2022 18:49:19 +0200 Subject: [PATCH 18/80] 0.187-2 - Add elfutils-0.187-csh-profile.patch Resolves: #2080957 "Ambiguous output redirect" warning with csh or tcsh --- elfutils-0.187-csh-profile.patch | 28 ++++++++++++++++++++++++++++ elfutils.spec | 6 +++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.187-csh-profile.patch diff --git a/elfutils-0.187-csh-profile.patch b/elfutils-0.187-csh-profile.patch new file mode 100644 index 0000000..6f26815 --- /dev/null +++ b/elfutils-0.187-csh-profile.patch @@ -0,0 +1,28 @@ +commit f1252e4dbe781f75d806ce0b990779548eeeb7a9 +Author: Mark Wielaard +Date: Tue May 3 17:48:55 2022 +0200 + + config: Move the 2>/dev/null inside the sh -c '' quotes for profile.csh. + + csh/tcsh would warn about "Ambiguous output redirect" if not done inside + the sh -c command. + + Fix-by: наб + + https://bugzilla.redhat.com/show_bug.cgi?id=2080957 + + Signed-off-by: Mark Wielaard + +diff --git a/config/profile.csh.in b/config/profile.csh.in +index 012e243a..74c20c99 100644 +--- a/config/profile.csh.in ++++ b/config/profile.csh.in +@@ -6,7 +6,7 @@ + + if (! $?DEBUGINFOD_URLS) then + set prefix="@prefix@" +- set DEBUGINFOD_URLS=`sh -c 'cat "$0"/*.urls; :' "@sysconfdir@/debuginfod" 2>/dev/null | tr '\n' ' '` ++ set DEBUGINFOD_URLS=`sh -c 'cat "$0"/*.urls 2>/dev/null; :' "@sysconfdir@/debuginfod" | tr '\n' ' '` + if ( "$DEBUGINFOD_URLS" != "" ) then + setenv DEBUGINFOD_URLS "$DEBUGINFOD_URLS" + else diff --git a/elfutils.spec b/elfutils.spec index 7adb433..8ff69ae 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -65,6 +65,7 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +Patch2: elfutils-0.187-csh-profile.patch %description Elfutils is a collection of utilities, including stack (to show @@ -405,6 +406,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue May 3 2022 Mark Wielaard - 0.187-2 +- Add elfutils-0.187-csh-profile.patch + * Tue Apr 26 2022 Mark Wielaard - 0.187-1 - Upgrade to elfutils 0.187 - debuginfod: Support -C option for connection thread pooling. From 58242698fadbf5f2dfcfd9088cae713562da1286 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 5 May 2022 17:39:38 +0200 Subject: [PATCH 19/80] 0.187-3 - Add elfutils-0.187-debuginfod-client-fd-leak.patch --- ...tils-0.187-debuginfod-client-fd-leak.patch | 98 +++++++++++++++++++ elfutils.spec | 8 +- 2 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.187-debuginfod-client-fd-leak.patch diff --git a/elfutils-0.187-debuginfod-client-fd-leak.patch b/elfutils-0.187-debuginfod-client-fd-leak.patch new file mode 100644 index 0000000..2f6b78b --- /dev/null +++ b/elfutils-0.187-debuginfod-client-fd-leak.patch @@ -0,0 +1,98 @@ +commit 59158656f3b0b99d8784ddc82c15778813000edc +Author: Frank Ch. Eigler +Date: Wed May 4 10:26:42 2022 -0400 + + PR29117: fix fd leak in debuginfod client for cache-miss files + + Correct a nasty fd leak and a few less nasty leaks in the debuginfod + client code. The nasty one impacts long-lived apps such as debuginfod + servers. + + Signed-off-by: Mark Wielaard + Signed-off-by: Frank Ch. Eigler + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index ea6e461a..521972e4 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -243,7 +243,13 @@ debuginfod_config_cache(char *config_path, + return -errno; + + if (dprintf(fd, "%ld", cache_config_default_s) < 0) +- return -errno; ++ { ++ int ret = -errno; ++ close (fd); ++ return ret; ++ } ++ ++ close (fd); + } + + long cache_config; +@@ -284,7 +290,13 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path) + return -errno; + + if (dprintf(fd, "%ld", cache_clean_default_interval_s) < 0) +- return -errno; ++ { ++ int ret = -errno; ++ close (fd); ++ return ret; ++ } ++ ++ close (fd); + + /* init max age config file. */ + if (stat(maxage_path, &st) != 0 +@@ -292,8 +304,13 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path) + return -errno; + + if (dprintf(fd, "%ld", cache_default_max_unused_age_s) < 0) +- return -errno; ++ { ++ int ret = -errno; ++ close (fd); ++ return ret; ++ } + ++ close (fd); + return 0; + } + +@@ -812,18 +829,17 @@ debuginfod_query_server (debuginfod_client *c, + has passed since the last attempt. */ + time_t cache_miss; + time_t target_mtime = st.st_mtime; ++ ++ close(fd); /* no need to hold onto the negative-hit file descriptor */ ++ + rc = debuginfod_config_cache(cache_miss_path, + cache_miss_default_s, &st); + if (rc < 0) +- { +- close(fd); +- goto out; +- } ++ goto out; + + cache_miss = (time_t)rc; + if (time(NULL) - target_mtime <= cache_miss) + { +- close(fd); + rc = -ENOENT; + goto out; + } +diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c +index 3e8ab203..f60b5463 100644 +--- a/debuginfod/debuginfod-find.c ++++ b/debuginfod/debuginfod-find.c +@@ -231,6 +231,8 @@ main(int argc, char** argv) + fprintf(stderr, "Server query failed: %s\n", strerror(-rc)); + return 1; + } ++ else ++ close (rc); + + printf("%s\n", cache_name); + free (cache_name); diff --git a/elfutils.spec b/elfutils.spec index 8ff69ae..46de58b 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -65,7 +65,10 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=2080957 Patch2: elfutils-0.187-csh-profile.patch +# https://sourceware.org/bugzilla/show_bug.cgi?id=29117 +Patch3: elfutils-0.187-debuginfod-client-fd-leak.patch %description Elfutils is a collection of utilities, including stack (to show @@ -406,6 +409,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu May 5 2022 Mark Wielaard - 0.187-3 +- Add elfutils-0.187-debuginfod-client-fd-leak.patch + * Tue May 3 2022 Mark Wielaard - 0.187-2 - Add elfutils-0.187-csh-profile.patch From 0ccdef528013e2344b9e8ebdab2b4861335a0b4d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 6 May 2022 16:29:39 +0200 Subject: [PATCH 20/80] 0.187-4 - Add elfutils-0.187-mhd_no_dual_stack.patch - Add elfutils-0.187-mhd_epoll.patch --- elfutils-0.187-mhd_epoll.patch | 51 +++++++++++ elfutils-0.187-mhd_no_dual_stack.patch | 118 +++++++++++++++++++++++++ elfutils.spec | 10 ++- 3 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.187-mhd_epoll.patch create mode 100644 elfutils-0.187-mhd_no_dual_stack.patch diff --git a/elfutils-0.187-mhd_epoll.patch b/elfutils-0.187-mhd_epoll.patch new file mode 100644 index 0000000..fbbbdac --- /dev/null +++ b/elfutils-0.187-mhd_epoll.patch @@ -0,0 +1,51 @@ +commit 28f9d86ea89f88b24f1d12c8e9d5ddc3f77da194 +Author: Mark Wielaard +Date: Fri May 6 00:29:28 2022 +0200 + + debuginfod: Use MHD_USE_EPOLL for libmicrohttpd version 0.9.51 or higher + + Also disable MHD_USE_THREAD_PER_CONNECTION when using MHD_USE_EPOLL. + + https://sourceware.org/bugzilla/show_bug.cgi?id=29123 + + Signed-off-by: Mark Wielaard + +diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx +index c02540f1..d4f47bf7 100644 +--- a/debuginfod/debuginfod.cxx ++++ b/debuginfod/debuginfod.cxx +@@ -1,6 +1,6 @@ + /* Debuginfo-over-http server. + Copyright (C) 2019-2021 Red Hat, Inc. +- Copyright (C) 2021 Mark J. Wielaard ++ Copyright (C) 2021, 2022 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -3899,7 +3899,14 @@ main (int argc, char *argv[]) + } + } + +- unsigned int mhd_flags = ((connection_pool ++ /* Note that MHD_USE_EPOLL and MHD_USE_THREAD_PER_CONNECTION don't ++ work together. */ ++ unsigned int use_epoll = 0; ++#if MHD_VERSION >= 0x00095100 ++ use_epoll = MHD_USE_EPOLL; ++#endif ++ ++ unsigned int mhd_flags = ((connection_pool || use_epoll + ? 0 : MHD_USE_THREAD_PER_CONNECTION) + #if MHD_VERSION >= 0x00095300 + | MHD_USE_INTERNAL_POLLING_THREAD +@@ -3907,9 +3914,7 @@ main (int argc, char *argv[]) + | MHD_USE_SELECT_INTERNALLY + #endif + | MHD_USE_DUAL_STACK +-#ifdef MHD_USE_EPOLL +- | MHD_USE_EPOLL +-#endif ++ | use_epoll + #if MHD_VERSION >= 0x00095200 + | MHD_USE_ITC + #endif diff --git a/elfutils-0.187-mhd_no_dual_stack.patch b/elfutils-0.187-mhd_no_dual_stack.patch new file mode 100644 index 0000000..3f38e36 --- /dev/null +++ b/elfutils-0.187-mhd_no_dual_stack.patch @@ -0,0 +1,118 @@ +commit ba675ed25a26fd425ffd19b02cf18babf4291b4f +Author: Mark Wielaard +Date: Thu May 5 23:59:57 2022 +0200 + + debuginfod: Try without MHD_USE_DUAL_STACK if MHD_start_daemon fails + + On a systems that have ipv6 disabled debuginfod doesn't start up + anymore because libhttpd MHD_USE_DUAL_STACK only works if it can + open an ipv6 socket. If MHD_start_daemon with MHD_USE_DUAL_STACK + fails try again without that flag set. + + https://sourceware.org/bugzilla/show_bug.cgi?id=29122 + + Signed-off-by: Mark Wielaard + +diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx +index 4aaf41c0..c02540f1 100644 +--- a/debuginfod/debuginfod.cxx ++++ b/debuginfod/debuginfod.cxx +@@ -3899,40 +3899,67 @@ main (int argc, char *argv[]) + } + } + +- // Start httpd server threads. Use a single dual-homed pool. +- MHD_Daemon *d46 = MHD_start_daemon ((connection_pool ? 0 : MHD_USE_THREAD_PER_CONNECTION) ++ unsigned int mhd_flags = ((connection_pool ++ ? 0 : MHD_USE_THREAD_PER_CONNECTION) + #if MHD_VERSION >= 0x00095300 +- | MHD_USE_INTERNAL_POLLING_THREAD ++ | MHD_USE_INTERNAL_POLLING_THREAD + #else +- | MHD_USE_SELECT_INTERNALLY ++ | MHD_USE_SELECT_INTERNALLY + #endif ++ | MHD_USE_DUAL_STACK + #ifdef MHD_USE_EPOLL +- | MHD_USE_EPOLL ++ | MHD_USE_EPOLL + #endif +- | MHD_USE_DUAL_STACK + #if MHD_VERSION >= 0x00095200 +- | MHD_USE_ITC ++ | MHD_USE_ITC + #endif +- | MHD_USE_DEBUG, /* report errors to stderr */ +- http_port, +- NULL, NULL, /* default accept policy */ +- handler_cb, NULL, /* handler callback */ +- MHD_OPTION_EXTERNAL_LOGGER, error_cb, NULL, +- (connection_pool ? MHD_OPTION_THREAD_POOL_SIZE : MHD_OPTION_END), +- (connection_pool ? (int)connection_pool : MHD_OPTION_END), +- MHD_OPTION_END); ++ | MHD_USE_DEBUG); /* report errors to stderr */ + ++ // Start httpd server threads. Use a single dual-homed pool. ++ MHD_Daemon *d46 = MHD_start_daemon (mhd_flags, http_port, ++ NULL, NULL, /* default accept policy */ ++ handler_cb, NULL, /* handler callback */ ++ MHD_OPTION_EXTERNAL_LOGGER, ++ error_cb, NULL, ++ (connection_pool ++ ? MHD_OPTION_THREAD_POOL_SIZE ++ : MHD_OPTION_END), ++ (connection_pool ++ ? (int)connection_pool ++ : MHD_OPTION_END), ++ MHD_OPTION_END); ++ ++ MHD_Daemon *d4 = NULL; + if (d46 == NULL) + { +- sqlite3 *database = db; +- sqlite3 *databaseq = dbq; +- db = dbq = 0; // for signal_handler not to freak +- sqlite3_close (databaseq); +- sqlite3_close (database); +- error (EXIT_FAILURE, 0, "cannot start http server at port %d", http_port); +- } ++ // Cannot use dual_stack, use ipv4 only ++ mhd_flags &= ~(MHD_USE_DUAL_STACK); ++ d4 = MHD_start_daemon (mhd_flags, http_port, ++ NULL, NULL, /* default accept policy */ ++ handler_cb, NULL, /* handler callback */ ++ MHD_OPTION_EXTERNAL_LOGGER, ++ error_cb, NULL, ++ (connection_pool ++ ? MHD_OPTION_THREAD_POOL_SIZE ++ : MHD_OPTION_END), ++ (connection_pool ++ ? (int)connection_pool ++ : MHD_OPTION_END), ++ MHD_OPTION_END); ++ if (d4 == NULL) ++ { ++ sqlite3 *database = db; ++ sqlite3 *databaseq = dbq; ++ db = dbq = 0; // for signal_handler not to freak ++ sqlite3_close (databaseq); ++ sqlite3_close (database); ++ error (EXIT_FAILURE, 0, "cannot start http server at port %d", ++ http_port); ++ } + +- obatched(clog) << "started http server on IPv4 IPv6 " ++ } ++ obatched(clog) << "started http server on" ++ << (d4 != NULL ? " IPv4 " : " IPv4 IPv6 ") + << "port=" << http_port << endl; + + // add maxigroom sql if -G given +@@ -4053,6 +4080,7 @@ main (int argc, char *argv[]) + + /* Stop all the web service threads. */ + if (d46) MHD_stop_daemon (d46); ++ if (d4) MHD_stop_daemon (d4); + + if (! passive_p) + { diff --git a/elfutils.spec b/elfutils.spec index 46de58b..5c7c82f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -69,6 +69,10 @@ Patch1: elfutils-0.186-fdo-swap.patch Patch2: elfutils-0.187-csh-profile.patch # https://sourceware.org/bugzilla/show_bug.cgi?id=29117 Patch3: elfutils-0.187-debuginfod-client-fd-leak.patch +# https://sourceware.org/bugzilla/show_bug.cgi?id=29122 +Patch4: elfutils-0.187-mhd_no_dual_stack.patch +# https://sourceware.org/bugzilla/show_bug.cgi?id=29123 +Patch5: elfutils-0.187-mhd_epoll.patch %description Elfutils is a collection of utilities, including stack (to show @@ -409,6 +413,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri May 6 2022 Mark Wielaard - 0.187-4 +- Add elfutils-0.187-mhd_no_dual_stack.patch +- Add elfutils-0.187-mhd_epoll.patch + * Thu May 5 2022 Mark Wielaard - 0.187-3 - Add elfutils-0.187-debuginfod-client-fd-leak.patch From 8675595d8f6f088b4e96e7aac6354606bdb57b1a Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Tue, 14 Jun 2022 17:41:53 +0200 Subject: [PATCH 21/80] 0.187-5 - Add sysuser support for creating the debuginfod user Resolves: #2096358 [RFE] elfutils use systemd-sysusers --- elfutils-debuginfod.sysusers | 1 + elfutils.spec | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 elfutils-debuginfod.sysusers diff --git a/elfutils-debuginfod.sysusers b/elfutils-debuginfod.sysusers new file mode 100644 index 0000000..18c2561 --- /dev/null +++ b/elfutils-debuginfod.sysusers @@ -0,0 +1 @@ +u debuginfod - "elfutils debuginfo server" /var/cache/debuginfod - diff --git a/elfutils.spec b/elfutils.spec index 5c7c82f..7f4bc45 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,11 +1,12 @@ Name: elfutils Version: 0.187 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ License: GPLv3+ and (GPLv2+ or LGPLv3+) and GFDL Source: %{?source_url}%{name}-%{version}.tar.bz2 +Source1: elfutils-debuginfod.sysusers Summary: A collection of utilities and DSOs to handle ELF files and DWARF data # Needed for isa specific Provides and Requires. @@ -61,6 +62,12 @@ BuildRequires: gettext-devel %global provide_yama_scope 1 %endif +%global with_sysusers 0 + +%if 0%{?fedora} >= 32 || 0%{?rhel} >= 9 +%global with_sysusers 1 +%endif + # Patches # For s390x... FDO package notes are bogus. @@ -216,6 +223,9 @@ Requires: elfutils-libs%{depsuffix} = %{version}-%{release} Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} BuildRequires: systemd +%if %{with_sysusers} +BuildRequires: systemd-rpm-macros +%endif BuildRequires: make Requires(post): systemd Requires(preun): systemd @@ -283,6 +293,10 @@ install -Dm0644 config/debuginfod.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysc mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite +%if %{with_sysusers} +install -Dm0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/elfutils-debuginfod.conf +%endif + %check # Record some build root versions in build.log uname -r; rpm -q binutils gcc glibc || true @@ -394,17 +408,24 @@ fi %config(noreplace) %{_sysconfdir}/sysconfig/debuginfod %{_unitdir}/debuginfod.service %{_sysconfdir}/sysconfig/debuginfod +%if %{with_sysusers} +%{_sysusersdir}/elfutils-debuginfod.conf +%endif %{_mandir}/man8/debuginfod.8* %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod %ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite %pre debuginfod +%if %{with_sysusers} +%sysusers_create_compat %{SOURCE1} +%else getent group debuginfod >/dev/null || groupadd -r debuginfod getent passwd debuginfod >/dev/null || \ useradd -r -g debuginfod -d /var/cache/debuginfod -s /sbin/nologin \ -c "elfutils debuginfo server" debuginfod exit 0 +%endif %post debuginfod %systemd_post debuginfod.service @@ -413,6 +434,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Jun 14 2022 Mark Wielaard - 0.187-5 +- Add sysuser support for creating the debuginfod user + * Fri May 6 2022 Mark Wielaard - 0.187-4 - Add elfutils-0.187-mhd_no_dual_stack.patch - Add elfutils-0.187-mhd_epoll.patch From 794d24375487494ebd9b486b906929bb9f65ea41 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 21 Jul 2022 01:49:45 +0000 Subject: [PATCH 22/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 7f4bc45..e594809 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 5 +%global baserelease 6 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -434,6 +434,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Jul 21 2022 Fedora Release Engineering - 0.187-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + * Tue Jun 14 2022 Mark Wielaard - 0.187-5 - Add sysuser support for creating the debuginfod user From 4f559f27407b8ece24ad22107f30f99f74c90169 Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Thu, 30 Jun 2022 15:22:45 +0000 Subject: [PATCH 23/80] Allow building without default debuginfod_url Building with `--without=with_debuginfod_url` will not configure a debuginfod_url by default. This is useful for downstreams like Amazon Linux that do not (yet) provide a debuginfod server. --- elfutils.spec | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index e594809..11e7613 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 6 +%global baserelease 7 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -68,6 +68,8 @@ BuildRequires: gettext-devel %global with_sysusers 1 %endif +%bcond with_debuginfod_url 1 + # Patches # For s390x... FDO package notes are bogus. @@ -271,7 +273,11 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat" trap 'cat config.log' EXIT +%if %{with with_debuginfod_url} %configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=https://debuginfod.fedoraproject.org/ +%else +%configure CFLAGS="$RPM_OPT_FLAGS" +%endif trap '' EXIT %make_build @@ -395,7 +401,9 @@ fi %{_mandir}/man1/debuginfod-find.1* %{_mandir}/man7/debuginfod*.7* %config(noreplace) %{_sysconfdir}/profile.d/* +%if %{with with_debuginfod_url} %config(noreplace) %{_sysconfdir}/debuginfod/* +%endif %files debuginfod-client-devel %{_libdir}/pkgconfig/libdebuginfod.pc @@ -434,6 +442,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Jul 27 2022 Amit Shah - 0.187-7 +- Allow building without default debuginfod URL + * Thu Jul 21 2022 Fedora Release Engineering - 0.187-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild From 21528c8512bd07d04e9a721ebb39242a94a585f8 Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Wed, 24 Aug 2022 17:40:43 +0200 Subject: [PATCH 24/80] Use %sysusers_requires_compat to match %sysusers_create_compat Fallout from 8675595d8f6f088b4e96e7aac6354606bdb57b1a --- elfutils.spec | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 11e7613..d5f2419 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 7 +%global baserelease 8 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -232,7 +232,11 @@ BuildRequires: make Requires(post): systemd Requires(preun): systemd Requires(postun): systemd +%if %{with_sysusers} +%{?sysusers_requires_compat} +%else Requires(pre): shadow-utils +%endif # To extract .deb files with a bsdtar (= libarchive) subshell Requires: bsdtar @@ -442,6 +446,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Aug 24 2022 Debarshi Ray - 0.187-8 +- Use %%sysusers_requires_compat to match %%sysusers_create_compat + * Wed Jul 27 2022 Amit Shah - 0.187-7 - Allow building without default debuginfod URL From 3e1f9c3f60e2ee5204e0b52b5b1b8e2caec3085c Mon Sep 17 00:00:00 2001 From: Debarshi Ray Date: Wed, 24 Aug 2022 17:46:20 +0200 Subject: [PATCH 25/80] Silence mixed-use-of-spaces-and-tabs --- elfutils.spec | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index d5f2419..bd6d2d0 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -56,16 +56,16 @@ BuildRequires: gettext-devel %global _gnu %{nil} %global _program_prefix eu- -%global provide_yama_scope 0 +%global provide_yama_scope 0 %if 0%{?fedora} >= 22 || 0%{?rhel} >= 7 -%global provide_yama_scope 1 +%global provide_yama_scope 1 %endif -%global with_sysusers 0 +%global with_sysusers 0 %if 0%{?fedora} >= 32 || 0%{?rhel} >= 9 -%global with_sysusers 1 +%global with_sysusers 1 %endif %bcond with_debuginfod_url 1 From 17c16efeeb9b8285d9c53e8dd7362adba42a0aeb Mon Sep 17 00:00:00 2001 From: Amit Shah Date: Mon, 1 Aug 2022 12:35:18 +0530 Subject: [PATCH 26/80] Use distro-configured debuginfod server Fedora and CentOS configure a debuginfod server by default, whereas RHEL and Amazon Linux do not. The new `dist_debuginfod_url` macro sets the server URL in a central place. Use that value, if defined, to configure with a default server. If unset, do not configure one. This ensures we have a unified spec file for all distro variants, and distro-specific config resides in the macros.dist file. With this change, we do not need the recently-added bcond for with_debuginfo_url, so drop it. Signed-off-by: Amit Shah --- elfutils.spec | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index bd6d2d0..9d0a6b3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.187 -%global baserelease 8 +%global baserelease 9 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -68,8 +68,6 @@ BuildRequires: gettext-devel %global with_sysusers 1 %endif -%bcond with_debuginfod_url 1 - # Patches # For s390x... FDO package notes are bogus. @@ -277,8 +275,11 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat" trap 'cat config.log' EXIT -%if %{with with_debuginfod_url} -%configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=https://debuginfod.fedoraproject.org/ +# dist_debuginfod_url is defined in macros.dist. Fedora and CentOS have +# URLs pointing to their respective servers. RHEL and Amazon Linux do +# not configure a default server. +%if "%{?dist_debuginfod_url}" +%configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=%{dist_debuginfod_url} %else %configure CFLAGS="$RPM_OPT_FLAGS" %endif @@ -405,7 +406,7 @@ fi %{_mandir}/man1/debuginfod-find.1* %{_mandir}/man7/debuginfod*.7* %config(noreplace) %{_sysconfdir}/profile.d/* -%if %{with with_debuginfod_url} +%if "%{?dist_debuginfod_url}" %config(noreplace) %{_sysconfdir}/debuginfod/* %endif @@ -446,6 +447,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Oct 5 2022 Amit Shah - 0.187-9 +- Auto-configure debuginfod_url based on macros.dist + * Wed Aug 24 2022 Debarshi Ray - 0.187-8 - Use %%sysusers_requires_compat to match %%sysusers_create_compat From 3d4d19222dd89051504cc7b40d5cd727981b2003 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 2 Nov 2022 16:33:41 +0100 Subject: [PATCH 27/80] 0.188-1 - Upgrade to upsteam elfutils 0.188 --- .gitignore | 1 + elfutils-0.187-csh-profile.patch | 28 ----- ...tils-0.187-debuginfod-client-fd-leak.patch | 98 --------------- elfutils-0.187-mhd_epoll.patch | 51 -------- elfutils-0.187-mhd_no_dual_stack.patch | 118 ------------------ elfutils.spec | 22 ++-- sources | 2 +- 7 files changed, 12 insertions(+), 308 deletions(-) delete mode 100644 elfutils-0.187-csh-profile.patch delete mode 100644 elfutils-0.187-debuginfod-client-fd-leak.patch delete mode 100644 elfutils-0.187-mhd_epoll.patch delete mode 100644 elfutils-0.187-mhd_no_dual_stack.patch diff --git a/.gitignore b/.gitignore index f28cb05..d23f6fd 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,4 @@ /elfutils-0.185.tar.bz2 /elfutils-0.186.tar.bz2 /elfutils-0.187.tar.bz2 +/elfutils-0.188.tar.bz2 diff --git a/elfutils-0.187-csh-profile.patch b/elfutils-0.187-csh-profile.patch deleted file mode 100644 index 6f26815..0000000 --- a/elfutils-0.187-csh-profile.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit f1252e4dbe781f75d806ce0b990779548eeeb7a9 -Author: Mark Wielaard -Date: Tue May 3 17:48:55 2022 +0200 - - config: Move the 2>/dev/null inside the sh -c '' quotes for profile.csh. - - csh/tcsh would warn about "Ambiguous output redirect" if not done inside - the sh -c command. - - Fix-by: наб - - https://bugzilla.redhat.com/show_bug.cgi?id=2080957 - - Signed-off-by: Mark Wielaard - -diff --git a/config/profile.csh.in b/config/profile.csh.in -index 012e243a..74c20c99 100644 ---- a/config/profile.csh.in -+++ b/config/profile.csh.in -@@ -6,7 +6,7 @@ - - if (! $?DEBUGINFOD_URLS) then - set prefix="@prefix@" -- set DEBUGINFOD_URLS=`sh -c 'cat "$0"/*.urls; :' "@sysconfdir@/debuginfod" 2>/dev/null | tr '\n' ' '` -+ set DEBUGINFOD_URLS=`sh -c 'cat "$0"/*.urls 2>/dev/null; :' "@sysconfdir@/debuginfod" | tr '\n' ' '` - if ( "$DEBUGINFOD_URLS" != "" ) then - setenv DEBUGINFOD_URLS "$DEBUGINFOD_URLS" - else diff --git a/elfutils-0.187-debuginfod-client-fd-leak.patch b/elfutils-0.187-debuginfod-client-fd-leak.patch deleted file mode 100644 index 2f6b78b..0000000 --- a/elfutils-0.187-debuginfod-client-fd-leak.patch +++ /dev/null @@ -1,98 +0,0 @@ -commit 59158656f3b0b99d8784ddc82c15778813000edc -Author: Frank Ch. Eigler -Date: Wed May 4 10:26:42 2022 -0400 - - PR29117: fix fd leak in debuginfod client for cache-miss files - - Correct a nasty fd leak and a few less nasty leaks in the debuginfod - client code. The nasty one impacts long-lived apps such as debuginfod - servers. - - Signed-off-by: Mark Wielaard - Signed-off-by: Frank Ch. Eigler - -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index ea6e461a..521972e4 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -243,7 +243,13 @@ debuginfod_config_cache(char *config_path, - return -errno; - - if (dprintf(fd, "%ld", cache_config_default_s) < 0) -- return -errno; -+ { -+ int ret = -errno; -+ close (fd); -+ return ret; -+ } -+ -+ close (fd); - } - - long cache_config; -@@ -284,7 +290,13 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path) - return -errno; - - if (dprintf(fd, "%ld", cache_clean_default_interval_s) < 0) -- return -errno; -+ { -+ int ret = -errno; -+ close (fd); -+ return ret; -+ } -+ -+ close (fd); - - /* init max age config file. */ - if (stat(maxage_path, &st) != 0 -@@ -292,8 +304,13 @@ debuginfod_init_cache (char *cache_path, char *interval_path, char *maxage_path) - return -errno; - - if (dprintf(fd, "%ld", cache_default_max_unused_age_s) < 0) -- return -errno; -+ { -+ int ret = -errno; -+ close (fd); -+ return ret; -+ } - -+ close (fd); - return 0; - } - -@@ -812,18 +829,17 @@ debuginfod_query_server (debuginfod_client *c, - has passed since the last attempt. */ - time_t cache_miss; - time_t target_mtime = st.st_mtime; -+ -+ close(fd); /* no need to hold onto the negative-hit file descriptor */ -+ - rc = debuginfod_config_cache(cache_miss_path, - cache_miss_default_s, &st); - if (rc < 0) -- { -- close(fd); -- goto out; -- } -+ goto out; - - cache_miss = (time_t)rc; - if (time(NULL) - target_mtime <= cache_miss) - { -- close(fd); - rc = -ENOENT; - goto out; - } -diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c -index 3e8ab203..f60b5463 100644 ---- a/debuginfod/debuginfod-find.c -+++ b/debuginfod/debuginfod-find.c -@@ -231,6 +231,8 @@ main(int argc, char** argv) - fprintf(stderr, "Server query failed: %s\n", strerror(-rc)); - return 1; - } -+ else -+ close (rc); - - printf("%s\n", cache_name); - free (cache_name); diff --git a/elfutils-0.187-mhd_epoll.patch b/elfutils-0.187-mhd_epoll.patch deleted file mode 100644 index fbbbdac..0000000 --- a/elfutils-0.187-mhd_epoll.patch +++ /dev/null @@ -1,51 +0,0 @@ -commit 28f9d86ea89f88b24f1d12c8e9d5ddc3f77da194 -Author: Mark Wielaard -Date: Fri May 6 00:29:28 2022 +0200 - - debuginfod: Use MHD_USE_EPOLL for libmicrohttpd version 0.9.51 or higher - - Also disable MHD_USE_THREAD_PER_CONNECTION when using MHD_USE_EPOLL. - - https://sourceware.org/bugzilla/show_bug.cgi?id=29123 - - Signed-off-by: Mark Wielaard - -diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx -index c02540f1..d4f47bf7 100644 ---- a/debuginfod/debuginfod.cxx -+++ b/debuginfod/debuginfod.cxx -@@ -1,6 +1,6 @@ - /* Debuginfo-over-http server. - Copyright (C) 2019-2021 Red Hat, Inc. -- Copyright (C) 2021 Mark J. Wielaard -+ Copyright (C) 2021, 2022 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -3899,7 +3899,14 @@ main (int argc, char *argv[]) - } - } - -- unsigned int mhd_flags = ((connection_pool -+ /* Note that MHD_USE_EPOLL and MHD_USE_THREAD_PER_CONNECTION don't -+ work together. */ -+ unsigned int use_epoll = 0; -+#if MHD_VERSION >= 0x00095100 -+ use_epoll = MHD_USE_EPOLL; -+#endif -+ -+ unsigned int mhd_flags = ((connection_pool || use_epoll - ? 0 : MHD_USE_THREAD_PER_CONNECTION) - #if MHD_VERSION >= 0x00095300 - | MHD_USE_INTERNAL_POLLING_THREAD -@@ -3907,9 +3914,7 @@ main (int argc, char *argv[]) - | MHD_USE_SELECT_INTERNALLY - #endif - | MHD_USE_DUAL_STACK --#ifdef MHD_USE_EPOLL -- | MHD_USE_EPOLL --#endif -+ | use_epoll - #if MHD_VERSION >= 0x00095200 - | MHD_USE_ITC - #endif diff --git a/elfutils-0.187-mhd_no_dual_stack.patch b/elfutils-0.187-mhd_no_dual_stack.patch deleted file mode 100644 index 3f38e36..0000000 --- a/elfutils-0.187-mhd_no_dual_stack.patch +++ /dev/null @@ -1,118 +0,0 @@ -commit ba675ed25a26fd425ffd19b02cf18babf4291b4f -Author: Mark Wielaard -Date: Thu May 5 23:59:57 2022 +0200 - - debuginfod: Try without MHD_USE_DUAL_STACK if MHD_start_daemon fails - - On a systems that have ipv6 disabled debuginfod doesn't start up - anymore because libhttpd MHD_USE_DUAL_STACK only works if it can - open an ipv6 socket. If MHD_start_daemon with MHD_USE_DUAL_STACK - fails try again without that flag set. - - https://sourceware.org/bugzilla/show_bug.cgi?id=29122 - - Signed-off-by: Mark Wielaard - -diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx -index 4aaf41c0..c02540f1 100644 ---- a/debuginfod/debuginfod.cxx -+++ b/debuginfod/debuginfod.cxx -@@ -3899,40 +3899,67 @@ main (int argc, char *argv[]) - } - } - -- // Start httpd server threads. Use a single dual-homed pool. -- MHD_Daemon *d46 = MHD_start_daemon ((connection_pool ? 0 : MHD_USE_THREAD_PER_CONNECTION) -+ unsigned int mhd_flags = ((connection_pool -+ ? 0 : MHD_USE_THREAD_PER_CONNECTION) - #if MHD_VERSION >= 0x00095300 -- | MHD_USE_INTERNAL_POLLING_THREAD -+ | MHD_USE_INTERNAL_POLLING_THREAD - #else -- | MHD_USE_SELECT_INTERNALLY -+ | MHD_USE_SELECT_INTERNALLY - #endif -+ | MHD_USE_DUAL_STACK - #ifdef MHD_USE_EPOLL -- | MHD_USE_EPOLL -+ | MHD_USE_EPOLL - #endif -- | MHD_USE_DUAL_STACK - #if MHD_VERSION >= 0x00095200 -- | MHD_USE_ITC -+ | MHD_USE_ITC - #endif -- | MHD_USE_DEBUG, /* report errors to stderr */ -- http_port, -- NULL, NULL, /* default accept policy */ -- handler_cb, NULL, /* handler callback */ -- MHD_OPTION_EXTERNAL_LOGGER, error_cb, NULL, -- (connection_pool ? MHD_OPTION_THREAD_POOL_SIZE : MHD_OPTION_END), -- (connection_pool ? (int)connection_pool : MHD_OPTION_END), -- MHD_OPTION_END); -+ | MHD_USE_DEBUG); /* report errors to stderr */ - -+ // Start httpd server threads. Use a single dual-homed pool. -+ MHD_Daemon *d46 = MHD_start_daemon (mhd_flags, http_port, -+ NULL, NULL, /* default accept policy */ -+ handler_cb, NULL, /* handler callback */ -+ MHD_OPTION_EXTERNAL_LOGGER, -+ error_cb, NULL, -+ (connection_pool -+ ? MHD_OPTION_THREAD_POOL_SIZE -+ : MHD_OPTION_END), -+ (connection_pool -+ ? (int)connection_pool -+ : MHD_OPTION_END), -+ MHD_OPTION_END); -+ -+ MHD_Daemon *d4 = NULL; - if (d46 == NULL) - { -- sqlite3 *database = db; -- sqlite3 *databaseq = dbq; -- db = dbq = 0; // for signal_handler not to freak -- sqlite3_close (databaseq); -- sqlite3_close (database); -- error (EXIT_FAILURE, 0, "cannot start http server at port %d", http_port); -- } -+ // Cannot use dual_stack, use ipv4 only -+ mhd_flags &= ~(MHD_USE_DUAL_STACK); -+ d4 = MHD_start_daemon (mhd_flags, http_port, -+ NULL, NULL, /* default accept policy */ -+ handler_cb, NULL, /* handler callback */ -+ MHD_OPTION_EXTERNAL_LOGGER, -+ error_cb, NULL, -+ (connection_pool -+ ? MHD_OPTION_THREAD_POOL_SIZE -+ : MHD_OPTION_END), -+ (connection_pool -+ ? (int)connection_pool -+ : MHD_OPTION_END), -+ MHD_OPTION_END); -+ if (d4 == NULL) -+ { -+ sqlite3 *database = db; -+ sqlite3 *databaseq = dbq; -+ db = dbq = 0; // for signal_handler not to freak -+ sqlite3_close (databaseq); -+ sqlite3_close (database); -+ error (EXIT_FAILURE, 0, "cannot start http server at port %d", -+ http_port); -+ } - -- obatched(clog) << "started http server on IPv4 IPv6 " -+ } -+ obatched(clog) << "started http server on" -+ << (d4 != NULL ? " IPv4 " : " IPv4 IPv6 ") - << "port=" << http_port << endl; - - // add maxigroom sql if -G given -@@ -4053,6 +4080,7 @@ main (int argc, char *argv[]) - - /* Stop all the web service threads. */ - if (d46) MHD_stop_daemon (d46); -+ if (d4) MHD_stop_daemon (d4); - - if (! passive_p) - { diff --git a/elfutils.spec b/elfutils.spec index 9d0a6b3..19f9d92 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.187 -%global baserelease 9 +Version: 0.188 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -48,6 +48,8 @@ BuildRequires: iproute BuildRequires: procps BuildRequires: bsdtar BuildRequires: curl +# For run-debuginfod-response-headers.sh test case +BuildRequires: socat BuildRequires: automake BuildRequires: autoconf @@ -72,14 +74,6 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch -# https://bugzilla.redhat.com/show_bug.cgi?id=2080957 -Patch2: elfutils-0.187-csh-profile.patch -# https://sourceware.org/bugzilla/show_bug.cgi?id=29117 -Patch3: elfutils-0.187-debuginfod-client-fd-leak.patch -# https://sourceware.org/bugzilla/show_bug.cgi?id=29122 -Patch4: elfutils-0.187-mhd_no_dual_stack.patch -# https://sourceware.org/bugzilla/show_bug.cgi?id=29123 -Patch5: elfutils-0.187-mhd_epoll.patch %description Elfutils is a collection of utilities, including stack (to show @@ -420,11 +414,12 @@ fi %{_bindir}/debuginfod %config(noreplace) %{_sysconfdir}/sysconfig/debuginfod %{_unitdir}/debuginfod.service -%{_sysconfdir}/sysconfig/debuginfod %if %{with_sysusers} %{_sysusersdir}/elfutils-debuginfod.conf %endif -%{_mandir}/man8/debuginfod.8* +%{_mandir}/man8/debuginfod*.8* +%{_mandir}/man7/debuginfod*.7* + %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod %ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite @@ -447,6 +442,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Nov 2 2022 Mark Wielaard - 0.188-1 +- Upgrade to upsteam elfutils 0.188. + * Wed Oct 5 2022 Amit Shah - 0.187-9 - Auto-configure debuginfod_url based on macros.dist diff --git a/sources b/sources index 808d95e..04cbb1b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.187.tar.bz2) = a9b9e32b503b8b50a62d4e4001097ed2721d3475232a6380e6b9853bd1647aec016440c0ca7ceb950daf1144f8db9814ab43cf33cc0ebef7fc91e9e775c9e874 +SHA512 (elfutils-0.188.tar.bz2) = 585551b2d937d19d1becfc2f28935db1dd1a3d25571a62f322b70ac8da98c1a741a55d070327705df6c3e2ee026652e0b9a3c733b050a0b0ec5f2fc75d5b74b5 From 8b711f9c7127b75dcc7fc6ef18a6d6df0331fbc1 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 2 Nov 2022 18:14:57 +0100 Subject: [PATCH 28/80] 0.188-2 - Add elfutils-0.188-static-extract_section.patch --- elfutils-0.188-static-extract_section.patch | 24 +++++++++++++++++++++ elfutils.spec | 5 +++++ 2 files changed, 29 insertions(+) create mode 100644 elfutils-0.188-static-extract_section.patch diff --git a/elfutils-0.188-static-extract_section.patch b/elfutils-0.188-static-extract_section.patch new file mode 100644 index 0000000..6305b3e --- /dev/null +++ b/elfutils-0.188-static-extract_section.patch @@ -0,0 +1,24 @@ +commit 58a7aa900bc2d9822b0d0cb596ba95a21ff0fd2d +Author: Mark Wielaard +Date: Wed Nov 2 17:54:11 2022 +0100 + + debuginfod: Mark extract_section function static + + The extract_section function in debuginfod-client.c is an internal + function and should not be exported. Mark it as static. + + Signed-off-by: Mark Wielaard + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index 0c4a00cf..f48e32cc 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -621,7 +621,7 @@ path_escape (const char *src, char *dest) + section name was not found. -EEXIST indicates that the section was + found but had type SHT_NOBITS. */ + +-int ++static int + extract_section (int fd, const char *section, char *fd_path, char **usr_path) + { + elf_version (EV_CURRENT); diff --git a/elfutils.spec b/elfutils.spec index 19f9d92..ce46a88 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -74,6 +74,8 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# Don't export internal function. +Patch2: elfutils-0.188-static-extract_section.patch %description Elfutils is a collection of utilities, including stack (to show @@ -442,6 +444,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Nov 2 2022 Mark Wielaard - 0.188-2 +- Add elfutils-0.188-static-extract_section.patch. + * Wed Nov 2 2022 Mark Wielaard - 0.188-1 - Upgrade to upsteam elfutils 0.188. From dae35159865c8d1ed670a0b895efdb02b2912f3d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 2 Nov 2022 18:22:54 +0100 Subject: [PATCH 29/80] 0.188-2 --- elfutils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index ce46a88..733b59e 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.188 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ From 0f93d8ded57ba7d54d7a0541c899ac600e1dee25 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 7 Nov 2022 17:15:00 +0100 Subject: [PATCH 30/80] 0.188-3 - Add elfutils-0.188-compile-warnings.patch - Add elfutils-0.188-debuginfod-client-lifetime.patch --- elfutils-0.188-compile-warnings.patch | 109 +++++++++++ ...ils-0.188-debuginfod-client-lifetime.patch | 171 ++++++++++++++++++ elfutils.spec | 10 +- 3 files changed, 289 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.188-compile-warnings.patch create mode 100644 elfutils-0.188-debuginfod-client-lifetime.patch diff --git a/elfutils-0.188-compile-warnings.patch b/elfutils-0.188-compile-warnings.patch new file mode 100644 index 0000000..397583f --- /dev/null +++ b/elfutils-0.188-compile-warnings.patch @@ -0,0 +1,109 @@ +commit 75f2de448f311807e2493f2a37a980e2d872b229 +Author: Mark Wielaard +Date: Thu Nov 3 13:38:45 2022 +0100 + + readelf: Check phdr != NULL or shdr != NULL in handle_dynamic. + + The compiler doesn't know that when use_dynamic_segment is true, + then phdr should/will be non-NULL and otherwise shdr is non-NULL. + Add explicit checks to help the compiler out and in case an error + is made calling the handle_dynamic function. + + Signed-off-by: Mark Wielaard + +diff --git a/src/readelf.c b/src/readelf.c +index 0e0b05c4..e721a209 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -1828,7 +1828,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) + size_t dyn_ents; + + /* Get the data of the section. */ +- if (use_dynamic_segment) ++ if (use_dynamic_segment && phdr != NULL) + data = elf_getdata_rawchunk(ebl->elf, phdr->p_offset, + phdr->p_filesz, ELF_T_DYN); + else +@@ -1840,7 +1840,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) + /* Get the dynamic section entry number */ + dyn_ents = get_dyn_ents (data); + +- if (!use_dynamic_segment) ++ if (!use_dynamic_segment && shdr != NULL) + { + /* Get the section header string table index. */ + if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) +@@ -1862,7 +1862,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) + (int) shdr->sh_link, + elf_strptr (ebl->elf, shstrndx, glink->sh_name)); + } +- else ++ else if (phdr != NULL) + { + printf (ngettext ("\ + \nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 "\n", +@@ -1879,7 +1879,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) + /* if --use-dynamic option is enabled, + use the string table to get the related library info. */ + Elf_Data *strtab_data = NULL; +- if (use_dynamic_segment) ++ if (use_dynamic_segment && phdr != NULL) + { + strtab_data = get_dynscn_strtab(ebl->elf, phdr); + if (strtab_data == NULL) +@@ -1903,7 +1903,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) + || dyn->d_tag == DT_RPATH + || dyn->d_tag == DT_RUNPATH) + { +- if (! use_dynamic_segment) ++ if (! use_dynamic_segment && shdr != NULL) + name = elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val); + else if (dyn->d_un.d_val < strtab_data->d_size + && memrchr (strtab_data->d_buf + dyn->d_un.d_val, '\0', + +commit b0a0235771906e3bcd6174c4e3c020b5522b0be5 +Author: Mark Wielaard +Date: Thu Nov 3 13:44:35 2022 +0100 + + libdw: Don't dereference and assign values we are skipping + + We don't use the FDE address encoding byte, so no reason + to read and store it. Just skip past it. + + Signed-off-by: Mark Wielaard + +diff --git a/libdw/dwarf_next_cfi.c b/libdw/dwarf_next_cfi.c +index 23b16885..be08984f 100644 +--- a/libdw/dwarf_next_cfi.c ++++ b/libdw/dwarf_next_cfi.c +@@ -226,7 +226,7 @@ dwarf_next_cfi (const unsigned char e_ident[], + if (sized_augmentation) + { + /* Skip FDE address encoding byte. */ +- encoding = *bytes++; ++ bytes++; + continue; + } + break; + +commit 52a6a3110e019d696284fdd822c2a2f0987dded2 +Author: Mark Wielaard +Date: Thu Nov 3 13:52:32 2022 +0100 + + readelf: Check gelf_getdyn doesn't return NULL + + Signed-off-by: Mark Wielaard + +diff --git a/src/readelf.c b/src/readelf.c +index e721a209..3dafb041 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -4910,7 +4910,7 @@ get_dynscn_addrs(Elf *elf, GElf_Phdr *phdr, GElf_Addr addrs[i_max]) + GElf_Dyn dyn_mem; + GElf_Dyn *dyn = gelf_getdyn(data, dyn_idx, &dyn_mem); + /* DT_NULL Marks end of dynamic section. */ +- if (dyn->d_tag == DT_NULL) ++ if (dyn == NULL || dyn->d_tag == DT_NULL) + break; + + switch (dyn->d_tag) { diff --git a/elfutils-0.188-debuginfod-client-lifetime.patch b/elfutils-0.188-debuginfod-client-lifetime.patch new file mode 100644 index 0000000..4c8f735 --- /dev/null +++ b/elfutils-0.188-debuginfod-client-lifetime.patch @@ -0,0 +1,171 @@ +commit c424e5f3d24f76e01242d15ba361dc6234706fed +Author: Frank Ch. Eigler +Date: Thu Nov 3 10:07:31 2022 -0400 + + debuginfod.cxx: fix coverity-found use-after-release error + + The debuginfod_client object lifetime needs more careful handling, + made easier with the defer_dtor<> gadget. + + Signed-off-by: Frank Ch. Eigler + +diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx +index f46da6ef..02a11477 100644 +--- a/debuginfod/debuginfod.cxx ++++ b/debuginfod/debuginfod.cxx +@@ -2249,85 +2249,82 @@ handle_buildid (MHD_Connection* conn, + + int fd = -1; + debuginfod_client *client = debuginfod_pool_begin (); +- if (client != NULL) +- { +- debuginfod_set_progressfn (client, & debuginfod_find_progress); ++ if (client == NULL) ++ throw libc_exception(errno, "debuginfod client pool alloc"); ++ defer_dtor client_closer (client, debuginfod_pool_end); ++ ++ debuginfod_set_progressfn (client, & debuginfod_find_progress); + +- if (conn) +- { +- // Transcribe incoming User-Agent: +- string ua = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "User-Agent") ?: ""; +- string ua_complete = string("User-Agent: ") + ua; +- debuginfod_add_http_header (client, ua_complete.c_str()); +- +- // Compute larger XFF:, for avoiding info loss during +- // federation, and for future cyclicity detection. +- string xff = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "X-Forwarded-For") ?: ""; +- if (xff != "") +- xff += string(", "); // comma separated list +- +- unsigned int xff_count = 0; +- for (auto&& i : xff){ +- if (i == ',') xff_count++; +- } ++ if (conn) ++ { ++ // Transcribe incoming User-Agent: ++ string ua = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "User-Agent") ?: ""; ++ string ua_complete = string("User-Agent: ") + ua; ++ debuginfod_add_http_header (client, ua_complete.c_str()); ++ ++ // Compute larger XFF:, for avoiding info loss during ++ // federation, and for future cyclicity detection. ++ string xff = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "X-Forwarded-For") ?: ""; ++ if (xff != "") ++ xff += string(", "); // comma separated list ++ ++ unsigned int xff_count = 0; ++ for (auto&& i : xff){ ++ if (i == ',') xff_count++; ++ } + +- // if X-Forwarded-For: exceeds N hops, +- // do not delegate a local lookup miss to upstream debuginfods. +- if (xff_count >= forwarded_ttl_limit) +- throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found, --forwared-ttl-limit reached \ ++ // if X-Forwarded-For: exceeds N hops, ++ // do not delegate a local lookup miss to upstream debuginfods. ++ if (xff_count >= forwarded_ttl_limit) ++ throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found, --forwared-ttl-limit reached \ + and will not query the upstream servers"); + +- // Compute the client's numeric IP address only - so can't merge with conninfo() +- const union MHD_ConnectionInfo *u = MHD_get_connection_info (conn, +- MHD_CONNECTION_INFO_CLIENT_ADDRESS); +- struct sockaddr *so = u ? u->client_addr : 0; +- char hostname[256] = ""; // RFC1035 +- if (so && so->sa_family == AF_INET) { +- (void) getnameinfo (so, sizeof (struct sockaddr_in), hostname, sizeof (hostname), NULL, 0, +- NI_NUMERICHOST); +- } else if (so && so->sa_family == AF_INET6) { +- struct sockaddr_in6* addr6 = (struct sockaddr_in6*) so; +- if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { +- struct sockaddr_in addr4; +- memset (&addr4, 0, sizeof(addr4)); +- addr4.sin_family = AF_INET; +- addr4.sin_port = addr6->sin6_port; +- memcpy (&addr4.sin_addr.s_addr, addr6->sin6_addr.s6_addr+12, sizeof(addr4.sin_addr.s_addr)); +- (void) getnameinfo ((struct sockaddr*) &addr4, sizeof (addr4), +- hostname, sizeof (hostname), NULL, 0, +- NI_NUMERICHOST); +- } else { +- (void) getnameinfo (so, sizeof (struct sockaddr_in6), hostname, sizeof (hostname), NULL, 0, +- NI_NUMERICHOST); +- } +- } +- +- string xff_complete = string("X-Forwarded-For: ")+xff+string(hostname); +- debuginfod_add_http_header (client, xff_complete.c_str()); ++ // Compute the client's numeric IP address only - so can't merge with conninfo() ++ const union MHD_ConnectionInfo *u = MHD_get_connection_info (conn, ++ MHD_CONNECTION_INFO_CLIENT_ADDRESS); ++ struct sockaddr *so = u ? u->client_addr : 0; ++ char hostname[256] = ""; // RFC1035 ++ if (so && so->sa_family == AF_INET) { ++ (void) getnameinfo (so, sizeof (struct sockaddr_in), hostname, sizeof (hostname), NULL, 0, ++ NI_NUMERICHOST); ++ } else if (so && so->sa_family == AF_INET6) { ++ struct sockaddr_in6* addr6 = (struct sockaddr_in6*) so; ++ if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { ++ struct sockaddr_in addr4; ++ memset (&addr4, 0, sizeof(addr4)); ++ addr4.sin_family = AF_INET; ++ addr4.sin_port = addr6->sin6_port; ++ memcpy (&addr4.sin_addr.s_addr, addr6->sin6_addr.s6_addr+12, sizeof(addr4.sin_addr.s_addr)); ++ (void) getnameinfo ((struct sockaddr*) &addr4, sizeof (addr4), ++ hostname, sizeof (hostname), NULL, 0, ++ NI_NUMERICHOST); ++ } else { ++ (void) getnameinfo (so, sizeof (struct sockaddr_in6), hostname, sizeof (hostname), NULL, 0, ++ NI_NUMERICHOST); + } +- +- if (artifacttype == "debuginfo") +- fd = debuginfod_find_debuginfo (client, +- (const unsigned char*) buildid.c_str(), +- 0, NULL); +- else if (artifacttype == "executable") +- fd = debuginfod_find_executable (client, +- (const unsigned char*) buildid.c_str(), +- 0, NULL); +- else if (artifacttype == "source") +- fd = debuginfod_find_source (client, +- (const unsigned char*) buildid.c_str(), +- 0, suffix.c_str(), NULL); +- else if (artifacttype == "section") +- fd = debuginfod_find_section (client, +- (const unsigned char*) buildid.c_str(), +- 0, section.c_str(), NULL); +- ++ } ++ ++ string xff_complete = string("X-Forwarded-For: ")+xff+string(hostname); ++ debuginfod_add_http_header (client, xff_complete.c_str()); + } +- else +- fd = -errno; /* Set by debuginfod_begin. */ +- debuginfod_pool_end (client); +- ++ ++ if (artifacttype == "debuginfo") ++ fd = debuginfod_find_debuginfo (client, ++ (const unsigned char*) buildid.c_str(), ++ 0, NULL); ++ else if (artifacttype == "executable") ++ fd = debuginfod_find_executable (client, ++ (const unsigned char*) buildid.c_str(), ++ 0, NULL); ++ else if (artifacttype == "source") ++ fd = debuginfod_find_source (client, ++ (const unsigned char*) buildid.c_str(), ++ 0, suffix.c_str(), NULL); ++ else if (artifacttype == "section") ++ fd = debuginfod_find_section (client, ++ (const unsigned char*) buildid.c_str(), ++ 0, section.c_str(), NULL); ++ + if (fd >= 0) + { + if (conn != 0) diff --git a/elfutils.spec b/elfutils.spec index 733b59e..3d372ad 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.188 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -76,6 +76,10 @@ BuildRequires: gettext-devel Patch1: elfutils-0.186-fdo-swap.patch # Don't export internal function. Patch2: elfutils-0.188-static-extract_section.patch +# Silence some compiler warnings +Patch3: elfutils-0.188-compile-warnings.patch +# The debuginfod_client object lifetime needs more careful handling +Patch4: elfutils-0.188-debuginfod-client-lifetime.patch %description Elfutils is a collection of utilities, including stack (to show @@ -444,6 +448,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Nov 7 2022 Mark Wielaard - 0.188-3 +- Add elfutils-0.188-compile-warnings.patch +- Add elfutils-0.188-debuginfod-client-lifetime.patch + * Wed Nov 2 2022 Mark Wielaard - 0.188-2 - Add elfutils-0.188-static-extract_section.patch. From a1e6f5590cfb0425099c7ac3246afd67f62d67c0 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 19 Jan 2023 02:12:19 +0000 Subject: [PATCH 31/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 3d372ad..997c470 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.188 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -448,6 +448,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Jan 19 2023 Fedora Release Engineering - 0.188-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + * Mon Nov 7 2022 Mark Wielaard - 0.188-3 - Add elfutils-0.188-compile-warnings.patch - Add elfutils-0.188-debuginfod-client-lifetime.patch From c468385a0e2df7a02bdc7d4354403bb79a8458fd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 27 Jan 2023 19:09:16 +0100 Subject: [PATCH 32/80] 0.188-5 Add various libcurl fixes for deprecated constants - Add elfutils-0.188-deprecated-CURLINFO.patch, elfutils-0.188-CURL_AT_LEAST_VERSION.patch and elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch --- elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch | 35 ++++++++++++++++ elfutils-0.188-CURL_AT_LEAST_VERSION.patch | 36 ++++++++++++++++ elfutils-0.188-deprecated-CURLINFO.patch | 49 ++++++++++++++++++++++ elfutils.spec | 11 ++++- 4 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch create mode 100644 elfutils-0.188-CURL_AT_LEAST_VERSION.patch create mode 100644 elfutils-0.188-deprecated-CURLINFO.patch diff --git a/elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch b/elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch new file mode 100644 index 0000000..3352c21 --- /dev/null +++ b/elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch @@ -0,0 +1,35 @@ +From 6560fb26a62ef135a804357ef4f15a47de3e49b3 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Tue, 10 Jan 2023 23:20:41 +0100 +Subject: [PATCH 8/8] debuginfod-client: Use CURLOPT_PROTOCOLS_STR for libcurl + >= 7.85.0 + +https://sourceware.org/bugzilla/show_bug.cgi?id=29926 + +Signed-off-by: Mark Wielaard +--- + debuginfod/ChangeLog | 5 +++++ + debuginfod/debuginfod-client.c | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index a16165bd..1ce45632 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -1336,8 +1336,13 @@ debuginfod_query_server (debuginfod_client *c, + + /* Only allow http:// + https:// + file:// so we aren't being + redirected to some unsupported protocol. */ ++#if CURL_AT_LEAST_VERSION(7, 85, 0) ++ curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS_STR, ++ "http,https,file"); ++#else + curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS, + (CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FILE)); ++#endif + curl_easy_setopt_ck(data[i].handle, CURLOPT_URL, data[i].url); + if (vfd >= 0) + curl_easy_setopt_ck(data[i].handle, CURLOPT_ERRORBUFFER, +-- +2.39.1 + diff --git a/elfutils-0.188-CURL_AT_LEAST_VERSION.patch b/elfutils-0.188-CURL_AT_LEAST_VERSION.patch new file mode 100644 index 0000000..0eca664 --- /dev/null +++ b/elfutils-0.188-CURL_AT_LEAST_VERSION.patch @@ -0,0 +1,36 @@ +From 304741e11018c29e7ff17751e05dcc5c786a3fd9 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 21 Dec 2022 18:21:08 +0100 +Subject: [PATCH 2/8] debuginfod: Define CURL_AT_LEAST_VERSION if necessary + +Older curl.h don't define CURL_AT_LEAST_VERSION, so define it +ourselves because it is nicer than doing hex encoded version +comparisons. + +Signed-off-by: Mark Wielaard +--- + debuginfod/ChangeLog | 4 ++++ + debuginfod/debuginfod-client.c | 7 +++++++ + 2 files changed, 11 insertions(+) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index 692aecce..a16165bd 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -105,6 +105,13 @@ void debuginfod_end (debuginfod_client *c) { } + #include + #endif + ++/* Older curl.h don't define CURL_AT_LEAST_VERSION. */ ++#ifndef CURL_AT_LEAST_VERSION ++ #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) ++ #define CURL_AT_LEAST_VERSION(x,y,z) \ ++ (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) ++#endif ++ + #include + + static pthread_once_t init_control = PTHREAD_ONCE_INIT; +-- +2.39.1 + diff --git a/elfutils-0.188-deprecated-CURLINFO.patch b/elfutils-0.188-deprecated-CURLINFO.patch new file mode 100644 index 0000000..e9bc9a3 --- /dev/null +++ b/elfutils-0.188-deprecated-CURLINFO.patch @@ -0,0 +1,49 @@ +From d2bf497b12fbd49b4996ccf0744303ffd67735b1 Mon Sep 17 00:00:00 2001 +From: Andrew Paprocki +Date: Wed, 21 Dec 2022 11:15:00 -0500 +Subject: [PATCH 1/8] PR29926: debuginfod: Fix usage of deprecated CURLINFO_* + +The `CURLINFO_SIZE_DOWNLOAD_T` and `CURLINFO_CONTENT_LENGTH_DOWNLOAD_T` +identifiers are `enum`s, not pre-processor definitions, so the current +`#ifdef` logic is not selecting the newer API. This results in the +older identifiers being used and they now generate errors when compiled +against Curl 7.87, which has silently deprecated them, causing GCC to +emit `-Werror=deprecated-declarations`. + +Instead, the newer identifiers were added in Curl 7.55, so explicitly +check for `CURL_AT_LEAST_VERSION(7, 55, 0)` instead of the current +logic. This eliminates the error when compiling against Curl 7.87. + +Ref: https://github.com/curl/curl/pull/1511 + +Signed-off-by: Andrew Paprocki +--- + debuginfod/ChangeLog | 4 ++++ + debuginfod/debuginfod-client.c | 4 ++-- + 2 files changed, 6 insertions(+), 2 deletions(-) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index 8873fcc8..692aecce 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -1456,7 +1456,7 @@ debuginfod_query_server (debuginfod_client *c, + deflate-compressing proxies, this number is likely to be + unavailable, so -1 may show. */ + CURLcode curl_res; +-#ifdef CURLINFO_CONTENT_LENGTH_DOWNLOAD_T ++#if CURL_AT_LEAST_VERSION(7, 55, 0) + curl_off_t cl; + curl_res = curl_easy_getinfo(target_handle, + CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, +@@ -1491,7 +1491,7 @@ debuginfod_query_server (debuginfod_client *c, + if (target_handle) /* we've committed to a server; report its download progress */ + { + CURLcode curl_res; +-#ifdef CURLINFO_SIZE_DOWNLOAD_T ++#if CURL_AT_LEAST_VERSION(7, 55, 0) + curl_off_t dl; + curl_res = curl_easy_getinfo(target_handle, + CURLINFO_SIZE_DOWNLOAD_T, +-- +2.39.1 + diff --git a/elfutils.spec b/elfutils.spec index 997c470..849868f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.188 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -80,6 +80,10 @@ Patch2: elfutils-0.188-static-extract_section.patch Patch3: elfutils-0.188-compile-warnings.patch # The debuginfod_client object lifetime needs more careful handling Patch4: elfutils-0.188-debuginfod-client-lifetime.patch +# Various libcurl deprecated constants +Patch5: elfutils-0.188-deprecated-CURLINFO.patch +Patch6: elfutils-0.188-CURL_AT_LEAST_VERSION.patch +Patch7: elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch %description Elfutils is a collection of utilities, including stack (to show @@ -448,6 +452,11 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Jan 27 2023 Mark Wielaard - 0.188-5 +- Add elfutils-0.188-deprecated-CURLINFO.patch, + elfutils-0.188-CURL_AT_LEAST_VERSION.patch and + elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch + * Thu Jan 19 2023 Fedora Release Engineering - 0.188-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild From ad7295b9972ff5315a064c707ff8ed00213fa7c5 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Mon, 13 Feb 2023 12:56:12 +0100 Subject: [PATCH 33/80] CI Tests: Update Regression/GNU-Attribute-notes-not-recognized --- .../Makefile | 2 +- .../main.fmf | 10 +++--- .../runtest.sh | 35 +++++++++++++++---- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/tests/Regression/GNU-Attribute-notes-not-recognized/Makefile b/tests/Regression/GNU-Attribute-notes-not-recognized/Makefile index 03e071d..332e11f 100644 --- a/tests/Regression/GNU-Attribute-notes-not-recognized/Makefile +++ b/tests/Regression/GNU-Attribute-notes-not-recognized/Makefile @@ -54,7 +54,7 @@ $(METADATA): Makefile @echo "TestTime: 48h" >> $(METADATA) @echo "RunFor: elfutils" >> $(METADATA) @echo "Requires: elfutils" >> $(METADATA) - @echo "Requires: bash" >> $(METADATA) + @echo "Requires: bash bash-debuginfo" >> $(METADATA) @echo "Priority: Normal" >> $(METADATA) @echo "License: GPLv2+" >> $(METADATA) @echo "Confidential: no" >> $(METADATA) diff --git a/tests/Regression/GNU-Attribute-notes-not-recognized/main.fmf b/tests/Regression/GNU-Attribute-notes-not-recognized/main.fmf index 896cbd2..eb1809c 100644 --- a/tests/Regression/GNU-Attribute-notes-not-recognized/main.fmf +++ b/tests/Regression/GNU-Attribute-notes-not-recognized/main.fmf @@ -2,15 +2,15 @@ summary: GNU-Attribute-notes-not-recognized description: | Bug summary: elfutils doesn't recognize GNU Attribute notes Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1650125 -contact: -- Martin Cermak +contact: Martin Cermak component: -- elfutils + - elfutils test: ./runtest.sh framework: beakerlib recommend: -- elfutils -- bash + - elfutils + - bash + - bash-debuginfo duration: 48h extra-summary: /tools/elfutils/Regression/GNU-Attribute-notes-not-recognized extra-task: /tools/elfutils/Regression/GNU-Attribute-notes-not-recognized diff --git a/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh b/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh index d60f5ac..7b6e187 100755 --- a/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh +++ b/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh @@ -32,12 +32,35 @@ PACKAGE="elfutils" rlJournalStart rlPhaseStartTest - # Rely on that /bin/bash is annobin-annotated per - # - https://fedoraproject.org/wiki/Toolchain/Watermark - # - https://fedoraproject.org/wiki/Changes/Annobin - # Seems to work fine with bash-4.4.19-6.el8 and elfutils-0.174-5.el8. - set -o pipefail - rlRun "eu-readelf -n /bin/bash | grep -2 '^ GA' | fgrep 'GNU Build Attribute' | tail -50" + # Rely on that /bin/bash is annobin-annotated per + # - https://fedoraproject.org/wiki/Toolchain/Watermark + # - https://fedoraproject.org/wiki/Changes/Annobin + # Seems to work fine with bash-4.4.19-6.el8 and elfutils-0.174-5.el8. + f="/bin/bash" + + # Annobin notes originally used to reside in the binary itself. + # Later on they moved to debuginfo. + # Let's see if we can chase down needed debuginfo somewhere... + + # Attempt getting the needed file using debuginfod + export DEBUGINFOD_URLS=http://debuginfod.usersys.redhat.com:3632/ + rlRun "f=\"$f $(debuginfod-find debuginfo /bin/bash)\"" + + # Attempt getting the needed file by traditional means + rlRun "debuginfo-install -y bash" + rlRun "buildid=$(eu-readelf -n /bin/bash | awk '/Build ID:/ {print $NF}')" + for i in $(rpm -ql bash-debuginfo); do + test -f $i || continue + if eu-readelf -n $i | fgrep $buildid; then + rlRun "f=\"$f $i\"" + fi + done + + set -o pipefail + export f + # Check if eu-readelf can read the notes from at least one of files + # that can possibly contain it... + rlRun "(for i in $f; do eu-readelf -n $i; done ) | grep -2 '^ GA' | fgrep 'GNU Build Attribute' | tail -50" rlPhaseEnd rlJournalPrintText rlJournalEnd From cb758000501eadeefa2de11c216280c8be7e3d17 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 3 Mar 2023 17:44:51 +0100 Subject: [PATCH 34/80] 0.189-1 - Upgrade to upsteam elfutils 0.189 --- .gitignore | 1 + elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch | 35 ---- elfutils-0.188-CURL_AT_LEAST_VERSION.patch | 36 ---- elfutils-0.188-compile-warnings.patch | 109 ----------- ...ils-0.188-debuginfod-client-lifetime.patch | 171 ------------------ elfutils-0.188-deprecated-CURLINFO.patch | 49 ----- elfutils-0.188-static-extract_section.patch | 24 --- elfutils.spec | 17 +- sources | 2 +- 9 files changed, 7 insertions(+), 437 deletions(-) delete mode 100644 elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch delete mode 100644 elfutils-0.188-CURL_AT_LEAST_VERSION.patch delete mode 100644 elfutils-0.188-compile-warnings.patch delete mode 100644 elfutils-0.188-debuginfod-client-lifetime.patch delete mode 100644 elfutils-0.188-deprecated-CURLINFO.patch delete mode 100644 elfutils-0.188-static-extract_section.patch diff --git a/.gitignore b/.gitignore index d23f6fd..9d73fa8 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ /elfutils-0.186.tar.bz2 /elfutils-0.187.tar.bz2 /elfutils-0.188.tar.bz2 +/elfutils-0.189.tar.bz2 diff --git a/elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch b/elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch deleted file mode 100644 index 3352c21..0000000 --- a/elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 6560fb26a62ef135a804357ef4f15a47de3e49b3 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Tue, 10 Jan 2023 23:20:41 +0100 -Subject: [PATCH 8/8] debuginfod-client: Use CURLOPT_PROTOCOLS_STR for libcurl - >= 7.85.0 - -https://sourceware.org/bugzilla/show_bug.cgi?id=29926 - -Signed-off-by: Mark Wielaard ---- - debuginfod/ChangeLog | 5 +++++ - debuginfod/debuginfod-client.c | 5 +++++ - 2 files changed, 10 insertions(+) - -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index a16165bd..1ce45632 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -1336,8 +1336,13 @@ debuginfod_query_server (debuginfod_client *c, - - /* Only allow http:// + https:// + file:// so we aren't being - redirected to some unsupported protocol. */ -+#if CURL_AT_LEAST_VERSION(7, 85, 0) -+ curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS_STR, -+ "http,https,file"); -+#else - curl_easy_setopt_ck(data[i].handle, CURLOPT_PROTOCOLS, - (CURLPROTO_HTTP | CURLPROTO_HTTPS | CURLPROTO_FILE)); -+#endif - curl_easy_setopt_ck(data[i].handle, CURLOPT_URL, data[i].url); - if (vfd >= 0) - curl_easy_setopt_ck(data[i].handle, CURLOPT_ERRORBUFFER, --- -2.39.1 - diff --git a/elfutils-0.188-CURL_AT_LEAST_VERSION.patch b/elfutils-0.188-CURL_AT_LEAST_VERSION.patch deleted file mode 100644 index 0eca664..0000000 --- a/elfutils-0.188-CURL_AT_LEAST_VERSION.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 304741e11018c29e7ff17751e05dcc5c786a3fd9 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Wed, 21 Dec 2022 18:21:08 +0100 -Subject: [PATCH 2/8] debuginfod: Define CURL_AT_LEAST_VERSION if necessary - -Older curl.h don't define CURL_AT_LEAST_VERSION, so define it -ourselves because it is nicer than doing hex encoded version -comparisons. - -Signed-off-by: Mark Wielaard ---- - debuginfod/ChangeLog | 4 ++++ - debuginfod/debuginfod-client.c | 7 +++++++ - 2 files changed, 11 insertions(+) - -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index 692aecce..a16165bd 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -105,6 +105,13 @@ void debuginfod_end (debuginfod_client *c) { } - #include - #endif - -+/* Older curl.h don't define CURL_AT_LEAST_VERSION. */ -+#ifndef CURL_AT_LEAST_VERSION -+ #define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z)) -+ #define CURL_AT_LEAST_VERSION(x,y,z) \ -+ (LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z)) -+#endif -+ - #include - - static pthread_once_t init_control = PTHREAD_ONCE_INIT; --- -2.39.1 - diff --git a/elfutils-0.188-compile-warnings.patch b/elfutils-0.188-compile-warnings.patch deleted file mode 100644 index 397583f..0000000 --- a/elfutils-0.188-compile-warnings.patch +++ /dev/null @@ -1,109 +0,0 @@ -commit 75f2de448f311807e2493f2a37a980e2d872b229 -Author: Mark Wielaard -Date: Thu Nov 3 13:38:45 2022 +0100 - - readelf: Check phdr != NULL or shdr != NULL in handle_dynamic. - - The compiler doesn't know that when use_dynamic_segment is true, - then phdr should/will be non-NULL and otherwise shdr is non-NULL. - Add explicit checks to help the compiler out and in case an error - is made calling the handle_dynamic function. - - Signed-off-by: Mark Wielaard - -diff --git a/src/readelf.c b/src/readelf.c -index 0e0b05c4..e721a209 100644 ---- a/src/readelf.c -+++ b/src/readelf.c -@@ -1828,7 +1828,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) - size_t dyn_ents; - - /* Get the data of the section. */ -- if (use_dynamic_segment) -+ if (use_dynamic_segment && phdr != NULL) - data = elf_getdata_rawchunk(ebl->elf, phdr->p_offset, - phdr->p_filesz, ELF_T_DYN); - else -@@ -1840,7 +1840,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) - /* Get the dynamic section entry number */ - dyn_ents = get_dyn_ents (data); - -- if (!use_dynamic_segment) -+ if (!use_dynamic_segment && shdr != NULL) - { - /* Get the section header string table index. */ - if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) -@@ -1862,7 +1862,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) - (int) shdr->sh_link, - elf_strptr (ebl->elf, shstrndx, glink->sh_name)); - } -- else -+ else if (phdr != NULL) - { - printf (ngettext ("\ - \nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 "\n", -@@ -1879,7 +1879,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) - /* if --use-dynamic option is enabled, - use the string table to get the related library info. */ - Elf_Data *strtab_data = NULL; -- if (use_dynamic_segment) -+ if (use_dynamic_segment && phdr != NULL) - { - strtab_data = get_dynscn_strtab(ebl->elf, phdr); - if (strtab_data == NULL) -@@ -1903,7 +1903,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) - || dyn->d_tag == DT_RPATH - || dyn->d_tag == DT_RUNPATH) - { -- if (! use_dynamic_segment) -+ if (! use_dynamic_segment && shdr != NULL) - name = elf_strptr (ebl->elf, shdr->sh_link, dyn->d_un.d_val); - else if (dyn->d_un.d_val < strtab_data->d_size - && memrchr (strtab_data->d_buf + dyn->d_un.d_val, '\0', - -commit b0a0235771906e3bcd6174c4e3c020b5522b0be5 -Author: Mark Wielaard -Date: Thu Nov 3 13:44:35 2022 +0100 - - libdw: Don't dereference and assign values we are skipping - - We don't use the FDE address encoding byte, so no reason - to read and store it. Just skip past it. - - Signed-off-by: Mark Wielaard - -diff --git a/libdw/dwarf_next_cfi.c b/libdw/dwarf_next_cfi.c -index 23b16885..be08984f 100644 ---- a/libdw/dwarf_next_cfi.c -+++ b/libdw/dwarf_next_cfi.c -@@ -226,7 +226,7 @@ dwarf_next_cfi (const unsigned char e_ident[], - if (sized_augmentation) - { - /* Skip FDE address encoding byte. */ -- encoding = *bytes++; -+ bytes++; - continue; - } - break; - -commit 52a6a3110e019d696284fdd822c2a2f0987dded2 -Author: Mark Wielaard -Date: Thu Nov 3 13:52:32 2022 +0100 - - readelf: Check gelf_getdyn doesn't return NULL - - Signed-off-by: Mark Wielaard - -diff --git a/src/readelf.c b/src/readelf.c -index e721a209..3dafb041 100644 ---- a/src/readelf.c -+++ b/src/readelf.c -@@ -4910,7 +4910,7 @@ get_dynscn_addrs(Elf *elf, GElf_Phdr *phdr, GElf_Addr addrs[i_max]) - GElf_Dyn dyn_mem; - GElf_Dyn *dyn = gelf_getdyn(data, dyn_idx, &dyn_mem); - /* DT_NULL Marks end of dynamic section. */ -- if (dyn->d_tag == DT_NULL) -+ if (dyn == NULL || dyn->d_tag == DT_NULL) - break; - - switch (dyn->d_tag) { diff --git a/elfutils-0.188-debuginfod-client-lifetime.patch b/elfutils-0.188-debuginfod-client-lifetime.patch deleted file mode 100644 index 4c8f735..0000000 --- a/elfutils-0.188-debuginfod-client-lifetime.patch +++ /dev/null @@ -1,171 +0,0 @@ -commit c424e5f3d24f76e01242d15ba361dc6234706fed -Author: Frank Ch. Eigler -Date: Thu Nov 3 10:07:31 2022 -0400 - - debuginfod.cxx: fix coverity-found use-after-release error - - The debuginfod_client object lifetime needs more careful handling, - made easier with the defer_dtor<> gadget. - - Signed-off-by: Frank Ch. Eigler - -diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx -index f46da6ef..02a11477 100644 ---- a/debuginfod/debuginfod.cxx -+++ b/debuginfod/debuginfod.cxx -@@ -2249,85 +2249,82 @@ handle_buildid (MHD_Connection* conn, - - int fd = -1; - debuginfod_client *client = debuginfod_pool_begin (); -- if (client != NULL) -- { -- debuginfod_set_progressfn (client, & debuginfod_find_progress); -+ if (client == NULL) -+ throw libc_exception(errno, "debuginfod client pool alloc"); -+ defer_dtor client_closer (client, debuginfod_pool_end); -+ -+ debuginfod_set_progressfn (client, & debuginfod_find_progress); - -- if (conn) -- { -- // Transcribe incoming User-Agent: -- string ua = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "User-Agent") ?: ""; -- string ua_complete = string("User-Agent: ") + ua; -- debuginfod_add_http_header (client, ua_complete.c_str()); -- -- // Compute larger XFF:, for avoiding info loss during -- // federation, and for future cyclicity detection. -- string xff = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "X-Forwarded-For") ?: ""; -- if (xff != "") -- xff += string(", "); // comma separated list -- -- unsigned int xff_count = 0; -- for (auto&& i : xff){ -- if (i == ',') xff_count++; -- } -+ if (conn) -+ { -+ // Transcribe incoming User-Agent: -+ string ua = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "User-Agent") ?: ""; -+ string ua_complete = string("User-Agent: ") + ua; -+ debuginfod_add_http_header (client, ua_complete.c_str()); -+ -+ // Compute larger XFF:, for avoiding info loss during -+ // federation, and for future cyclicity detection. -+ string xff = MHD_lookup_connection_value (conn, MHD_HEADER_KIND, "X-Forwarded-For") ?: ""; -+ if (xff != "") -+ xff += string(", "); // comma separated list -+ -+ unsigned int xff_count = 0; -+ for (auto&& i : xff){ -+ if (i == ',') xff_count++; -+ } - -- // if X-Forwarded-For: exceeds N hops, -- // do not delegate a local lookup miss to upstream debuginfods. -- if (xff_count >= forwarded_ttl_limit) -- throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found, --forwared-ttl-limit reached \ -+ // if X-Forwarded-For: exceeds N hops, -+ // do not delegate a local lookup miss to upstream debuginfods. -+ if (xff_count >= forwarded_ttl_limit) -+ throw reportable_exception(MHD_HTTP_NOT_FOUND, "not found, --forwared-ttl-limit reached \ - and will not query the upstream servers"); - -- // Compute the client's numeric IP address only - so can't merge with conninfo() -- const union MHD_ConnectionInfo *u = MHD_get_connection_info (conn, -- MHD_CONNECTION_INFO_CLIENT_ADDRESS); -- struct sockaddr *so = u ? u->client_addr : 0; -- char hostname[256] = ""; // RFC1035 -- if (so && so->sa_family == AF_INET) { -- (void) getnameinfo (so, sizeof (struct sockaddr_in), hostname, sizeof (hostname), NULL, 0, -- NI_NUMERICHOST); -- } else if (so && so->sa_family == AF_INET6) { -- struct sockaddr_in6* addr6 = (struct sockaddr_in6*) so; -- if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { -- struct sockaddr_in addr4; -- memset (&addr4, 0, sizeof(addr4)); -- addr4.sin_family = AF_INET; -- addr4.sin_port = addr6->sin6_port; -- memcpy (&addr4.sin_addr.s_addr, addr6->sin6_addr.s6_addr+12, sizeof(addr4.sin_addr.s_addr)); -- (void) getnameinfo ((struct sockaddr*) &addr4, sizeof (addr4), -- hostname, sizeof (hostname), NULL, 0, -- NI_NUMERICHOST); -- } else { -- (void) getnameinfo (so, sizeof (struct sockaddr_in6), hostname, sizeof (hostname), NULL, 0, -- NI_NUMERICHOST); -- } -- } -- -- string xff_complete = string("X-Forwarded-For: ")+xff+string(hostname); -- debuginfod_add_http_header (client, xff_complete.c_str()); -+ // Compute the client's numeric IP address only - so can't merge with conninfo() -+ const union MHD_ConnectionInfo *u = MHD_get_connection_info (conn, -+ MHD_CONNECTION_INFO_CLIENT_ADDRESS); -+ struct sockaddr *so = u ? u->client_addr : 0; -+ char hostname[256] = ""; // RFC1035 -+ if (so && so->sa_family == AF_INET) { -+ (void) getnameinfo (so, sizeof (struct sockaddr_in), hostname, sizeof (hostname), NULL, 0, -+ NI_NUMERICHOST); -+ } else if (so && so->sa_family == AF_INET6) { -+ struct sockaddr_in6* addr6 = (struct sockaddr_in6*) so; -+ if (IN6_IS_ADDR_V4MAPPED(&addr6->sin6_addr)) { -+ struct sockaddr_in addr4; -+ memset (&addr4, 0, sizeof(addr4)); -+ addr4.sin_family = AF_INET; -+ addr4.sin_port = addr6->sin6_port; -+ memcpy (&addr4.sin_addr.s_addr, addr6->sin6_addr.s6_addr+12, sizeof(addr4.sin_addr.s_addr)); -+ (void) getnameinfo ((struct sockaddr*) &addr4, sizeof (addr4), -+ hostname, sizeof (hostname), NULL, 0, -+ NI_NUMERICHOST); -+ } else { -+ (void) getnameinfo (so, sizeof (struct sockaddr_in6), hostname, sizeof (hostname), NULL, 0, -+ NI_NUMERICHOST); - } -- -- if (artifacttype == "debuginfo") -- fd = debuginfod_find_debuginfo (client, -- (const unsigned char*) buildid.c_str(), -- 0, NULL); -- else if (artifacttype == "executable") -- fd = debuginfod_find_executable (client, -- (const unsigned char*) buildid.c_str(), -- 0, NULL); -- else if (artifacttype == "source") -- fd = debuginfod_find_source (client, -- (const unsigned char*) buildid.c_str(), -- 0, suffix.c_str(), NULL); -- else if (artifacttype == "section") -- fd = debuginfod_find_section (client, -- (const unsigned char*) buildid.c_str(), -- 0, section.c_str(), NULL); -- -+ } -+ -+ string xff_complete = string("X-Forwarded-For: ")+xff+string(hostname); -+ debuginfod_add_http_header (client, xff_complete.c_str()); - } -- else -- fd = -errno; /* Set by debuginfod_begin. */ -- debuginfod_pool_end (client); -- -+ -+ if (artifacttype == "debuginfo") -+ fd = debuginfod_find_debuginfo (client, -+ (const unsigned char*) buildid.c_str(), -+ 0, NULL); -+ else if (artifacttype == "executable") -+ fd = debuginfod_find_executable (client, -+ (const unsigned char*) buildid.c_str(), -+ 0, NULL); -+ else if (artifacttype == "source") -+ fd = debuginfod_find_source (client, -+ (const unsigned char*) buildid.c_str(), -+ 0, suffix.c_str(), NULL); -+ else if (artifacttype == "section") -+ fd = debuginfod_find_section (client, -+ (const unsigned char*) buildid.c_str(), -+ 0, section.c_str(), NULL); -+ - if (fd >= 0) - { - if (conn != 0) diff --git a/elfutils-0.188-deprecated-CURLINFO.patch b/elfutils-0.188-deprecated-CURLINFO.patch deleted file mode 100644 index e9bc9a3..0000000 --- a/elfutils-0.188-deprecated-CURLINFO.patch +++ /dev/null @@ -1,49 +0,0 @@ -From d2bf497b12fbd49b4996ccf0744303ffd67735b1 Mon Sep 17 00:00:00 2001 -From: Andrew Paprocki -Date: Wed, 21 Dec 2022 11:15:00 -0500 -Subject: [PATCH 1/8] PR29926: debuginfod: Fix usage of deprecated CURLINFO_* - -The `CURLINFO_SIZE_DOWNLOAD_T` and `CURLINFO_CONTENT_LENGTH_DOWNLOAD_T` -identifiers are `enum`s, not pre-processor definitions, so the current -`#ifdef` logic is not selecting the newer API. This results in the -older identifiers being used and they now generate errors when compiled -against Curl 7.87, which has silently deprecated them, causing GCC to -emit `-Werror=deprecated-declarations`. - -Instead, the newer identifiers were added in Curl 7.55, so explicitly -check for `CURL_AT_LEAST_VERSION(7, 55, 0)` instead of the current -logic. This eliminates the error when compiling against Curl 7.87. - -Ref: https://github.com/curl/curl/pull/1511 - -Signed-off-by: Andrew Paprocki ---- - debuginfod/ChangeLog | 4 ++++ - debuginfod/debuginfod-client.c | 4 ++-- - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index 8873fcc8..692aecce 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -1456,7 +1456,7 @@ debuginfod_query_server (debuginfod_client *c, - deflate-compressing proxies, this number is likely to be - unavailable, so -1 may show. */ - CURLcode curl_res; --#ifdef CURLINFO_CONTENT_LENGTH_DOWNLOAD_T -+#if CURL_AT_LEAST_VERSION(7, 55, 0) - curl_off_t cl; - curl_res = curl_easy_getinfo(target_handle, - CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, -@@ -1491,7 +1491,7 @@ debuginfod_query_server (debuginfod_client *c, - if (target_handle) /* we've committed to a server; report its download progress */ - { - CURLcode curl_res; --#ifdef CURLINFO_SIZE_DOWNLOAD_T -+#if CURL_AT_LEAST_VERSION(7, 55, 0) - curl_off_t dl; - curl_res = curl_easy_getinfo(target_handle, - CURLINFO_SIZE_DOWNLOAD_T, --- -2.39.1 - diff --git a/elfutils-0.188-static-extract_section.patch b/elfutils-0.188-static-extract_section.patch deleted file mode 100644 index 6305b3e..0000000 --- a/elfutils-0.188-static-extract_section.patch +++ /dev/null @@ -1,24 +0,0 @@ -commit 58a7aa900bc2d9822b0d0cb596ba95a21ff0fd2d -Author: Mark Wielaard -Date: Wed Nov 2 17:54:11 2022 +0100 - - debuginfod: Mark extract_section function static - - The extract_section function in debuginfod-client.c is an internal - function and should not be exported. Mark it as static. - - Signed-off-by: Mark Wielaard - -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index 0c4a00cf..f48e32cc 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -621,7 +621,7 @@ path_escape (const char *src, char *dest) - section name was not found. -EEXIST indicates that the section was - found but had type SHT_NOBITS. */ - --int -+static int - extract_section (int fd, const char *section, char *fd_path, char **usr_path) - { - elf_version (EV_CURRENT); diff --git a/elfutils.spec b/elfutils.spec index 849868f..8d2b05b 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.188 -%global baserelease 5 +Version: 0.189 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -74,16 +74,6 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch -# Don't export internal function. -Patch2: elfutils-0.188-static-extract_section.patch -# Silence some compiler warnings -Patch3: elfutils-0.188-compile-warnings.patch -# The debuginfod_client object lifetime needs more careful handling -Patch4: elfutils-0.188-debuginfod-client-lifetime.patch -# Various libcurl deprecated constants -Patch5: elfutils-0.188-deprecated-CURLINFO.patch -Patch6: elfutils-0.188-CURL_AT_LEAST_VERSION.patch -Patch7: elfutils-0.188-CURLOPT_PROTOCOLS_STR.patch %description Elfutils is a collection of utilities, including stack (to show @@ -452,6 +442,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Mar 3 2023 Mark Wielaard - 0.189-1 +- Upgrade to upsteam elfutils 0.189. + * Fri Jan 27 2023 Mark Wielaard - 0.188-5 - Add elfutils-0.188-deprecated-CURLINFO.patch, elfutils-0.188-CURL_AT_LEAST_VERSION.patch and diff --git a/sources b/sources index 04cbb1b..57e5577 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.188.tar.bz2) = 585551b2d937d19d1becfc2f28935db1dd1a3d25571a62f322b70ac8da98c1a741a55d070327705df6c3e2ee026652e0b9a3c733b050a0b0ec5f2fc75d5b74b5 +SHA512 (elfutils-0.189.tar.bz2) = 93a877e34db93e5498581d0ab2d702b08c0d87e4cafd9cec9d6636dfa85a168095c305c11583a5b0fb79374dd93bc8d0e9ce6016e6c172764bcea12861605b71 From 66e41cec577e0dc194fcf8f2cc971706954e0dd7 Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Mon, 6 Mar 2023 10:06:48 +0100 Subject: [PATCH 35/80] CI Tests: Fix the debuginfod URL --- tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh b/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh index 7b6e187..aaa6c89 100755 --- a/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh +++ b/tests/Regression/GNU-Attribute-notes-not-recognized/runtest.sh @@ -43,7 +43,7 @@ rlJournalStart # Let's see if we can chase down needed debuginfo somewhere... # Attempt getting the needed file using debuginfod - export DEBUGINFOD_URLS=http://debuginfod.usersys.redhat.com:3632/ + export DEBUGINFOD_URLS=https://debuginfod.fedoraproject.org/ rlRun "f=\"$f $(debuginfod-find debuginfo /bin/bash)\"" # Attempt getting the needed file by traditional means From 829b595e08d16f53cf70e56a895983d3f583d56d Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 22 Apr 2023 22:23:26 +0200 Subject: [PATCH 36/80] Add elfutils-0.189-c99-compat.patch --- elfutils-0.189-c99-compat.patch | 31 +++++++++++++++++++++++++++++++ elfutils.spec | 5 +++++ 2 files changed, 36 insertions(+) create mode 100644 elfutils-0.189-c99-compat.patch diff --git a/elfutils-0.189-c99-compat.patch b/elfutils-0.189-c99-compat.patch new file mode 100644 index 0000000..4932c2c --- /dev/null +++ b/elfutils-0.189-c99-compat.patch @@ -0,0 +1,31 @@ +From 6e7ac623674242628c9e54892a532d55d3288bb8 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Sat, 22 Apr 2023 21:37:09 +0200 +Subject: [PATCH] testsuite: Avoid C99 compatibility issues in + run-native-test.sh + +Include for the pause function, and add the return type +of main. Avoids an implicit function declaration and implicit int. + +Signed-off-by: Florian Weimer +--- + tests/run-native-test.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/run-native-test.sh b/tests/run-native-test.sh +index d19007f2..042a51c6 100755 +--- a/tests/run-native-test.sh ++++ b/tests/run-native-test.sh +@@ -27,7 +27,8 @@ + # in all builds. + + tempfiles native.c native +-echo 'main () { while (1) pause (); }' > native.c ++printf '#include \nint main (void) { while (1) pause (); }\n' \ ++ > native.c + + native=0 + kill_native() +-- +2.31.1 + diff --git a/elfutils.spec b/elfutils.spec index 8d2b05b..8de0442 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -74,6 +74,8 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# testsuite: Avoid C99 compatibility issues in run-native-test.sh +Patch2: elfutils-0.189-c99-compat.patch %description Elfutils is a collection of utilities, including stack (to show @@ -442,6 +444,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Sat Apr 22 2023 Mark Wielaard +- Add elfutils-0.189-c99-compat.patch + * Fri Mar 3 2023 Mark Wielaard - 0.189-1 - Upgrade to upsteam elfutils 0.189. From 4ae92c9668a4ebe1fd1e8c73243c241a660160aa Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 22 Apr 2023 22:28:38 +0200 Subject: [PATCH 37/80] Add elfutils-0.189-elfcompress.patch --- elfutils-0.189-elfcompress.patch | 95 ++++++++++++++++++++++++++++++++ elfutils.spec | 3 + 2 files changed, 98 insertions(+) create mode 100644 elfutils-0.189-elfcompress.patch diff --git a/elfutils-0.189-elfcompress.patch b/elfutils-0.189-elfcompress.patch new file mode 100644 index 0000000..5f0d681 --- /dev/null +++ b/elfutils-0.189-elfcompress.patch @@ -0,0 +1,95 @@ +From ef9164520c81ea61efe88777a8ad61bf17a54201 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Sat, 22 Apr 2023 01:26:17 +0200 +Subject: [PATCH] elfcompress: Don't compress if section already compressed + unless forced + +Before commit a5b07cdf9 "support ZSTD compression algorithm" +elfcompress would not try to compress a section if it already +had the requested compression type (or was already uncompressed) +unless the --force flag was given. An else if construct was changed +to an if in the commit causing elfcompress to warn (in verbose mode) +but then still try to (re)compress the section. + +Add an explicit check so if nothing needs (un)compressing, the file +isn't changed. + +The diff looks large, but git diff -b -w is just: + ++ if (force || type != schtype) ++ { + if (shdr->sh_type != SHT_NOBITS + && (shdr->sh_flags & SHF_ALLOC) == 0) + { +@@ -554,6 +556,7 @@ process_file (const char *fname) + printf ("[%zd] %s ignoring %s section\n", ndx, sname, + (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); + } ++ } + +Signed-off-by: Mark Wielaard +--- + src/elfcompress.c | 43 +++++++++++++++++++++++-------------------- + 1 file changed, 23 insertions(+), 20 deletions(-) + +diff --git a/src/elfcompress.c b/src/elfcompress.c +index 18ade66f..f771b92a 100644 +--- a/src/elfcompress.c ++++ b/src/elfcompress.c +@@ -529,30 +529,33 @@ process_file (const char *fname) + } + } + +- if (shdr->sh_type != SHT_NOBITS +- && (shdr->sh_flags & SHF_ALLOC) == 0) ++ if (force || type != schtype) + { +- set_section (sections, ndx); +- /* Check if we might want to change this section name. */ +- if (! adjust_names +- && ((type != ZLIB_GNU +- && startswith (sname, ".zdebug")) +- || (type == ZLIB_GNU +- && startswith (sname, ".debug")))) +- adjust_names = true; +- +- /* We need a buffer this large if we change the names. */ +- if (adjust_names) ++ if (shdr->sh_type != SHT_NOBITS ++ && (shdr->sh_flags & SHF_ALLOC) == 0) + { +- size_t slen = strlen (sname); +- if (slen > maxnamelen) +- maxnamelen = slen; ++ set_section (sections, ndx); ++ /* Check if we might want to change this section name. */ ++ if (! adjust_names ++ && ((type != ZLIB_GNU ++ && startswith (sname, ".zdebug")) ++ || (type == ZLIB_GNU ++ && startswith (sname, ".debug")))) ++ adjust_names = true; ++ ++ /* We need a buffer this large if we change the names. */ ++ if (adjust_names) ++ { ++ size_t slen = strlen (sname); ++ if (slen > maxnamelen) ++ maxnamelen = slen; ++ } + } ++ else ++ if (verbose >= 0) ++ printf ("[%zd] %s ignoring %s section\n", ndx, sname, ++ (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); + } +- else +- if (verbose >= 0) +- printf ("[%zd] %s ignoring %s section\n", ndx, sname, +- (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); + } + + if (shdr->sh_type == SHT_SYMTAB) +-- +2.31.1 + diff --git a/elfutils.spec b/elfutils.spec index 8de0442..f18aea2 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -76,6 +76,8 @@ BuildRequires: gettext-devel Patch1: elfutils-0.186-fdo-swap.patch # testsuite: Avoid C99 compatibility issues in run-native-test.sh Patch2: elfutils-0.189-c99-compat.patch +# elfcompress: Don't compress if section already compressed unless forced +Patch3: elfutils-0.189-elfcompress.patch %description Elfutils is a collection of utilities, including stack (to show @@ -446,6 +448,7 @@ exit 0 %changelog * Sat Apr 22 2023 Mark Wielaard - Add elfutils-0.189-c99-compat.patch +- Add elfutils-0.189-elfcompress.patch * Fri Mar 3 2023 Mark Wielaard - 0.189-1 - Upgrade to upsteam elfutils 0.189. From 25ede0eead897a8a7c79e6d03d76756baa724827 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 22 Apr 2023 22:29:20 +0200 Subject: [PATCH 38/80] 0.189-2 --- elfutils.spec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index f18aea2..86f3b34 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.189 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -446,7 +446,7 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog -* Sat Apr 22 2023 Mark Wielaard +* Sat Apr 22 2023 Mark Wielaard - 0.189-2 - Add elfutils-0.189-c99-compat.patch - Add elfutils-0.189-elfcompress.patch From 7c06a3670c42b5b2ec973902e9645dc45d016abd Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Tue, 25 Apr 2023 12:40:59 +0200 Subject: [PATCH 39/80] CI Tests: Test cover rhbz2188064 --- .../eu-elfcompress-breaks-hard-links/bubble.c | 36 ++++++++++++ .../eu-elfcompress-breaks-hard-links/main.fmf | 15 +++++ .../runtest.sh | 55 +++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c create mode 100644 tests/Regression/eu-elfcompress-breaks-hard-links/main.fmf create mode 100755 tests/Regression/eu-elfcompress-breaks-hard-links/runtest.sh diff --git a/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c b/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c new file mode 100644 index 0000000..9ec3260 --- /dev/null +++ b/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c @@ -0,0 +1,36 @@ +/* Bubble sort code */ + +#include + +int main() +{ + int array[100], n, c, d, swap; + + printf("Enter number of elements\n"); + scanf("%d", &n); + + printf("Enter %d integers\n", n); + + for (c = 0; c < n; c++) + scanf("%d", &array[c]); + + for (c = 0 ; c < n - 1; c++) + { + for (d = 0 ; d < n - c - 1; d++) + { + if (array[d] > array[d+1]) /* For decreasing order use '<' instead of '>' */ + { + swap = array[d]; + array[d] = array[d+1]; + array[d+1] = swap; + } + } + } + + printf("Sorted list in ascending order:\n"); + + for (c = 0; c < n; c++) + printf("%d\n", array[c]); + + return 0; +} diff --git a/tests/Regression/eu-elfcompress-breaks-hard-links/main.fmf b/tests/Regression/eu-elfcompress-breaks-hard-links/main.fmf new file mode 100644 index 0000000..a34c573 --- /dev/null +++ b/tests/Regression/eu-elfcompress-breaks-hard-links/main.fmf @@ -0,0 +1,15 @@ +summary: eu-elfcompress-breaks-hard-links +description: '' +link: + - relates: https://bugzilla.redhat.com/show_bug.cgi?id=2188064 +contact: Martin Cermak +component: + - elfutils +test: ./runtest.sh +framework: beakerlib +recommend: + - elfutils + - gcc +duration: 1h +extra-summary: /tools/elfutils/Regression/eu-elfcompress-breaks-hard-links +extra-task: /tools/elfutils/Regression/eu-elfcompress-breaks-hard-links diff --git a/tests/Regression/eu-elfcompress-breaks-hard-links/runtest.sh b/tests/Regression/eu-elfcompress-breaks-hard-links/runtest.sh new file mode 100755 index 0000000..7709a74 --- /dev/null +++ b/tests/Regression/eu-elfcompress-breaks-hard-links/runtest.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# runtest.sh of /tools/elfutils/Regression/eu-elfcompress-breaks-hard-links +# Description: eu-elfcompress-breaks-hard-links +# Author: Martin Cermak +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Copyright (c) 2023 Red Hat, Inc. +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation, either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be +# useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +# PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see http://www.gnu.org/licenses/. +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +# Include Beaker environment +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +PACKAGE="elfutils" + +rlJournalStart + rlPhaseStartSetup + rlAssertRpm $PACKAGE + rlRun "TMP=$(mktemp -d)" + rlRun "cp bubble.c $TMP/" + rlRun "pushd $TMP" + rlPhaseEnd + + rlPhaseStartTest + rlRun "gcc -o a.out -g bubble.c" + rlRun "ln a.out a.lnk" + rlRun "eu-elfcompress -q -p -t none a.lnk" + rlRun "i0=$(stat -c '%i' a.out)" + rlRun "i1=$(stat -c '%i' a.lnk)" + rlRun "test $i0 -eq $i1" + rlPhaseEnd + + rlPhaseStartCleanup + rlRun "popd" + rlRun "rm -r $TMP" + rlPhaseEnd +rlJournalPrintText +rlJournalEnd From 771965e4bcd3e0041069c05796a15f78e696b74c Mon Sep 17 00:00:00 2001 From: Martin Cermak Date: Tue, 25 Apr 2023 12:50:10 +0200 Subject: [PATCH 40/80] CI Tests: Simplify test for rhbz2188064 --- .../eu-elfcompress-breaks-hard-links/bubble.c | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c b/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c index 9ec3260..f8b643a 100644 --- a/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c +++ b/tests/Regression/eu-elfcompress-breaks-hard-links/bubble.c @@ -1,36 +1,4 @@ -/* Bubble sort code */ - -#include - int main() { - int array[100], n, c, d, swap; - - printf("Enter number of elements\n"); - scanf("%d", &n); - - printf("Enter %d integers\n", n); - - for (c = 0; c < n; c++) - scanf("%d", &array[c]); - - for (c = 0 ; c < n - 1; c++) - { - for (d = 0 ; d < n - c - 1; d++) - { - if (array[d] > array[d+1]) /* For decreasing order use '<' instead of '>' */ - { - swap = array[d]; - array[d] = array[d+1]; - array[d+1] = swap; - } - } - } - - printf("Sorted list in ascending order:\n"); - - for (c = 0; c < n; c++) - printf("%d\n", array[c]); - return 0; } From 87f9e5c38df3d99ffdaf716450e642a8d0138f20 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 22 Jun 2023 15:08:31 +0200 Subject: [PATCH 41/80] Add elfutils-0.189-elf_getdata_rawchunk.patch --- elfutils-0.189-elf_getdata_rawchunk.patch | 224 ++++++++++++++++++++++ elfutils.spec | 5 + 2 files changed, 229 insertions(+) create mode 100644 elfutils-0.189-elf_getdata_rawchunk.patch diff --git a/elfutils-0.189-elf_getdata_rawchunk.patch b/elfutils-0.189-elf_getdata_rawchunk.patch new file mode 100644 index 0000000..7ce6695 --- /dev/null +++ b/elfutils-0.189-elf_getdata_rawchunk.patch @@ -0,0 +1,224 @@ +From 3aca5b5f1f1617db2220022d9061dcaf129e54c4 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Wed, 21 Jun 2023 18:05:12 +0200 +Subject: [PATCH] libelf: Replace list of elf_getdata_rawchunk results with a + tree + +elf_getdata_rawchunks did a linear search to see if a chunk was +already fetched. Replace this list with a binary search tree to make +lookup faster when a lot of Elf_Data_Chunk were created. + + * libelf/libelfP.h (Elf_Data_Chunk): Remove next field. + (struct Elf): Change the rawchunks type from Elf_Data_Chunk * + to void *. + * elf_getdata_rawchunk.c (chunk_compare): New static function. + (elf_getdata_rawchunk): Use tsearch instead of a manual linked + list. + * elf_end.c (free_chunk): New static function. + (elf_end): Call tdestroy instead of walking linked list. + +Signed-off-by: Mark Wielaard +--- + libelf/elf_end.c | 22 +++++++++------- + libelf/elf_getdata_rawchunk.c | 47 +++++++++++++++++++++++++---------- + libelf/libelfP.h | 13 ++++------ + 3 files changed, 52 insertions(+), 30 deletions(-) + +diff --git a/libelf/elf_end.c b/libelf/elf_end.c +index 5c451f36..3e5d4c86 100644 +--- a/libelf/elf_end.c ++++ b/libelf/elf_end.c +@@ -1,5 +1,6 @@ + /* Free resources associated with Elf descriptor. + Copyright (C) 1998,1999,2000,2001,2002,2004,2005,2007,2015,2016 Red Hat, Inc. ++ Copyright (C) 2023 Mark J. Wielaard + This file is part of elfutils. + Written by Ulrich Drepper , 1998. + +@@ -32,12 +33,22 @@ + #endif + + #include ++#include + #include + #include + + #include "libelfP.h" + + ++static void ++free_chunk (void *n) ++{ ++ Elf_Data_Chunk *rawchunk = (Elf_Data_Chunk *)n; ++ if (rawchunk->dummy_scn.flags & ELF_F_MALLOCED) ++ free (rawchunk->data.d.d_buf); ++ free (rawchunk); ++} ++ + int + elf_end (Elf *elf) + { +@@ -112,20 +123,13 @@ elf_end (Elf *elf) + + case ELF_K_ELF: + { +- Elf_Data_Chunk *rawchunks ++ void *rawchunks + = (elf->class == ELFCLASS32 + || (offsetof (struct Elf, state.elf32.rawchunks) + == offsetof (struct Elf, state.elf64.rawchunks)) + ? elf->state.elf32.rawchunks + : elf->state.elf64.rawchunks); +- while (rawchunks != NULL) +- { +- Elf_Data_Chunk *next = rawchunks->next; +- if (rawchunks->dummy_scn.flags & ELF_F_MALLOCED) +- free (rawchunks->data.d.d_buf); +- free (rawchunks); +- rawchunks = next; +- } ++ tdestroy (rawchunks, free_chunk); + + Elf_ScnList *list = (elf->class == ELFCLASS32 + || (offsetof (struct Elf, state.elf32.scns) +diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c +index 5a35ccdc..cfd40396 100644 +--- a/libelf/elf_getdata_rawchunk.c ++++ b/libelf/elf_getdata_rawchunk.c +@@ -1,6 +1,6 @@ + /* Return converted data from raw chunk of ELF file. + Copyright (C) 2007, 2014, 2015 Red Hat, Inc. +- Copyright (C) 2022 Mark J. Wielaard ++ Copyright (C) 2022, 2023 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -33,12 +33,28 @@ + + #include + #include ++#include + #include + #include + + #include "libelfP.h" + #include "common.h" + ++static int ++chunk_compare (const void *a, const void *b) ++{ ++ Elf_Data_Chunk *da = (Elf_Data_Chunk *)a; ++ Elf_Data_Chunk *db = (Elf_Data_Chunk *)b; ++ ++ if (da->offset != db->offset) ++ return da->offset - db->offset; ++ ++ if (da->data.d.d_size != db->data.d.d_size) ++ return da->data.d.d_size - db->data.d.d_size; ++ ++ return da->data.d.d_type - db->data.d.d_type; ++} ++ + Elf_Data * + elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) + { +@@ -75,19 +91,25 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) + rwlock_rdlock (elf->lock); + + /* Maybe we already got this chunk? */ +- Elf_Data_Chunk *rawchunks = elf->state.elf.rawchunks; +- while (rawchunks != NULL) ++ Elf_Data_Chunk key; ++ key.offset = offset; ++ key.data.d.d_size = size; ++ key.data.d.d_type = type; ++ Elf_Data_Chunk **found = tsearch (&key, &elf->state.elf.rawchunks, ++ &chunk_compare); ++ if (found == NULL) ++ goto nomem; ++ ++ /* Existing entry. */ ++ if (*found != &key && *found != NULL) + { +- if ((rawchunks->offset == offset || size == 0) +- && rawchunks->data.d.d_size == size +- && rawchunks->data.d.d_type == type) +- { +- result = &rawchunks->data.d; +- goto out; +- } +- rawchunks = rawchunks->next; ++ result = &(*found)->data.d; ++ goto out; + } + ++ /* New entry. */ ++ *found = NULL; ++ + size_t align = __libelf_type_align (elf->class, type); + if (elf->map_address != NULL) + { +@@ -189,8 +211,7 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) + rwlock_unlock (elf->lock); + rwlock_wrlock (elf->lock); + +- chunk->next = elf->state.elf.rawchunks; +- elf->state.elf.rawchunks = chunk; ++ *found = chunk; + result = &chunk->data.d; + + out: +diff --git a/libelf/libelfP.h b/libelf/libelfP.h +index 6624f38a..d3c241e5 100644 +--- a/libelf/libelfP.h ++++ b/libelf/libelfP.h +@@ -1,5 +1,6 @@ + /* Internal interfaces for libelf. + Copyright (C) 1998-2010, 2015, 2016 Red Hat, Inc. ++ Copyright (C) 2023 Mark J. Wielaard + This file is part of elfutils. + Contributed by Ulrich Drepper , 1998. + +@@ -262,11 +263,7 @@ typedef struct Elf_ScnList + typedef struct Elf_Data_Chunk + { + Elf_Data_Scn data; +- union +- { +- Elf_Scn dummy_scn; +- struct Elf_Data_Chunk *next; +- }; ++ Elf_Scn dummy_scn; + int64_t offset; /* The original raw offset in the Elf image. */ + } Elf_Data_Chunk; + +@@ -324,7 +321,7 @@ struct Elf + Elf_ScnList *scns_last; /* Last element in the section list. + If NULL the data has not yet been + read from the file. */ +- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ ++ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ + unsigned int scnincr; /* Number of sections allocate the last + time. */ + int ehdr_flags; /* Flags (dirty) for ELF header. */ +@@ -343,7 +340,7 @@ struct Elf + Elf_ScnList *scns_last; /* Last element in the section list. + If NULL the data has not yet been + read from the file. */ +- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ ++ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ + unsigned int scnincr; /* Number of sections allocate the last + time. */ + int ehdr_flags; /* Flags (dirty) for ELF header. */ +@@ -368,7 +365,7 @@ struct Elf + Elf_ScnList *scns_last; /* Last element in the section list. + If NULL the data has not yet been + read from the file. */ +- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ ++ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ + unsigned int scnincr; /* Number of sections allocate the last + time. */ + int ehdr_flags; /* Flags (dirty) for ELF header. */ +-- +2.40.1 + diff --git a/elfutils.spec b/elfutils.spec index 86f3b34..7955ff1 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -78,6 +78,8 @@ Patch1: elfutils-0.186-fdo-swap.patch Patch2: elfutils-0.189-c99-compat.patch # elfcompress: Don't compress if section already compressed unless forced Patch3: elfutils-0.189-elfcompress.patch +# libelf: Replace list of elf_getdata_rawchunk results with a tree +Patch4: elfutils-0.189-elf_getdata_rawchunk.patch %description Elfutils is a collection of utilities, including stack (to show @@ -446,6 +448,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Jun 22 2023 Mark Wielaard +- Add elfutils-0.189-elf_getdata_rawchunk.patch + * Sat Apr 22 2023 Mark Wielaard - 0.189-2 - Add elfutils-0.189-c99-compat.patch - Add elfutils-0.189-elfcompress.patch From cb376abe7f3e01ac583fed9852f45bc34fac56dd Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 22 Jun 2023 15:10:49 +0200 Subject: [PATCH 42/80] 0.189-3 - Add elfutils-0.189-debuginfod_config_cache-double-close.patch --- ...debuginfod_config_cache-double-close.patch | 73 +++++++++++++++++++ elfutils.spec | 7 +- 2 files changed, 78 insertions(+), 2 deletions(-) create mode 100644 elfutils-0.189-debuginfod_config_cache-double-close.patch diff --git a/elfutils-0.189-debuginfod_config_cache-double-close.patch b/elfutils-0.189-debuginfod_config_cache-double-close.patch new file mode 100644 index 0000000..3380b71 --- /dev/null +++ b/elfutils-0.189-debuginfod_config_cache-double-close.patch @@ -0,0 +1,73 @@ +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index ef4d47e3..d92d8d62 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -248,7 +248,7 @@ debuginfod_write_callback (char *ptr, size_t size, size_t nmemb, void *data) + + /* handle config file read and write */ + static int +-debuginfod_config_cache(char *config_path, ++debuginfod_config_cache(debuginfod_client *c, char *config_path, + long cache_config_default_s, + struct stat *st) + { +@@ -277,17 +277,27 @@ debuginfod_config_cache(char *config_path, + } + + long cache_config; ++ /* PR29696 - NB: When using fdopen, the file descriptor is NOT ++ dup'ed and will be closed when the stream is closed. Manually ++ closing fd after fclose is called will lead to a race condition ++ where, if reused, the file descriptor will compete for its ++ regular use before being incorrectly closed here. */ + FILE *config_file = fdopen(fd, "r"); + if (config_file) + { + if (fscanf(config_file, "%ld", &cache_config) != 1) +- cache_config = cache_config_default_s; +- fclose(config_file); ++ cache_config = cache_config_default_s; ++ if (0 != fclose (config_file) && c->verbose_fd >= 0) ++ dprintf (c->verbose_fd, "fclose failed with %s (err=%d)\n", ++ strerror (errno), errno); + } + else +- cache_config = cache_config_default_s; +- +- close (fd); ++ { ++ cache_config = cache_config_default_s; ++ if (0 != close (fd) && c->verbose_fd >= 0) ++ dprintf (c->verbose_fd, "close failed with %s (err=%d)\n", ++ strerror (errno), errno); ++ } + return cache_config; + } + +@@ -303,7 +313,7 @@ debuginfod_clean_cache(debuginfod_client *c, + struct stat st; + + /* Create new interval file. */ +- rc = debuginfod_config_cache(interval_path, ++ rc = debuginfod_config_cache(c, interval_path, + cache_clean_default_interval_s, &st); + if (rc < 0) + return rc; +@@ -320,7 +330,7 @@ debuginfod_clean_cache(debuginfod_client *c, + utime (interval_path, NULL); + + /* Read max unused age value from config file. */ +- rc = debuginfod_config_cache(max_unused_path, ++ rc = debuginfod_config_cache(c, max_unused_path, + cache_default_max_unused_age_s, &st); + if (rc < 0) + return rc; +@@ -1110,7 +1135,7 @@ debuginfod_query_server (debuginfod_client *c, + + close(fd); /* no need to hold onto the negative-hit file descriptor */ + +- rc = debuginfod_config_cache(cache_miss_path, ++ rc = debuginfod_config_cache(c, cache_miss_path, + cache_miss_default_s, &st); + if (rc < 0) + goto out; diff --git a/elfutils.spec b/elfutils.spec index 7955ff1..c27e88f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.189 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -80,6 +80,8 @@ Patch2: elfutils-0.189-c99-compat.patch Patch3: elfutils-0.189-elfcompress.patch # libelf: Replace list of elf_getdata_rawchunk results with a tree Patch4: elfutils-0.189-elf_getdata_rawchunk.patch +# PR29696: Removed secondary fd close in cache config causing race condition +Patch5: elfutils-0.189-debuginfod_config_cache-double-close.patch %description Elfutils is a collection of utilities, including stack (to show @@ -448,8 +450,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog -* Thu Jun 22 2023 Mark Wielaard +* Thu Jun 22 2023 Mark Wielaard - 0.189-3 - Add elfutils-0.189-elf_getdata_rawchunk.patch +- Add elfutils-0.189-debuginfod_config_cache-double-close.patch * Sat Apr 22 2023 Mark Wielaard - 0.189-2 - Add elfutils-0.189-c99-compat.patch From 62b5826af2a93fa9108d5c1407e6f24ecaa21860 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 19 Jul 2023 18:20:35 +0000 Subject: [PATCH 43/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index c27e88f..24dc195 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.189 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -450,6 +450,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Jul 19 2023 Fedora Release Engineering - 0.189-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + * Thu Jun 22 2023 Mark Wielaard - 0.189-3 - Add elfutils-0.189-elf_getdata_rawchunk.patch - Add elfutils-0.189-debuginfod_config_cache-double-close.patch From 62589988718e8fac4fb39ec5037f51839f05951b Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 24 Aug 2023 00:16:51 +0200 Subject: [PATCH 44/80] 0.189-5 - Add elfutils-0.189-relr.patch --- elfutils-0.189-relr.patch | 446 ++++++++++++++++++++++++++++++++++++++ elfutils.spec | 7 +- 2 files changed, 452 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.189-relr.patch diff --git a/elfutils-0.189-relr.patch b/elfutils-0.189-relr.patch new file mode 100644 index 0000000..29a7b73 --- /dev/null +++ b/elfutils-0.189-relr.patch @@ -0,0 +1,446 @@ +commit 6ba977ed6c7ac6e51350f2093ebe0b90ff89f90c +Author: Mark Wielaard +Date: Sun Jul 23 23:14:31 2023 +0200 + + libelf, readelf, elflint: Add RELR support + + Handle RELR as defined here: + https://groups.google.com/g/generic-abi/c/bX460iggiKg/m/YT2RrjpMAwAJ + + Introduce new ELF_T_RELR Elf_Type and handle it for SHT_RELR. Check + various properties in elflint. Print RELR relocations in + readelf. Just the entries with -U. Just the addresses with -N. And + addresses pluse symbol/offsets by default. + + * libebl/eblsectiontypename.c (ebl_section_type_name): Add RELR + to knownstype. + * libelf/elf32_updatenull.c (updatenull_wrlock): Handle + sh_entsize for SHT_RELR. + * libelf/gelf.h (Gelf_Relr): New typedef for Elf64_Relr. + * libelf/gelf_fsize.c (__libelf_type_sizes): Add ELF_T_RELR. + * libelf/gelf_xlate.c (__elf_xfctstom): Likewise. + * libelf/gelf_xlate.h: Add RELR as FUNDAMENTAL. + * libelf/libelf.h (Elf_Type): Add ELF_T_RELR. + * libelf/libelfP.h: Define ELF32_FSZ_RELR and ELF64_FSZ_RELR. + * src/elflint.c (check_reloc_shdr): Check she_entsize for + ELF_T_RELR. + (check_relr): New function. + (check_dynamic): Handle DT_RELR. + (special_sections): Add SHT_RELR. + (check_sections): Call check_relr. + * src/readelf.c (print_relocs): Also accept a Dwfl_Module. + (handle_relocs_relr): New function. + (print_dwarf_addr): Make static and declare early. + (process_elf_file): Pass dwflmod to print_relocs. + (handle_dynamic): Handle DT_RELRSZ and DTRELRENT. + + Signed-off-by: Mark Wielaard + +diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c +index 2008b95a..ade25d4a 100644 +--- a/libebl/eblsectiontypename.c ++++ b/libebl/eblsectiontypename.c +@@ -61,7 +61,8 @@ ebl_section_type_name (Ebl *ebl, int section, char *buf, size_t len) + KNOWNSTYPE (FINI_ARRAY), + KNOWNSTYPE (PREINIT_ARRAY), + KNOWNSTYPE (GROUP), +- KNOWNSTYPE (SYMTAB_SHNDX) ++ KNOWNSTYPE (SYMTAB_SHNDX), ++ KNOWNSTYPE (RELR) + }; + + /* Handle standard names. */ +diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c +index 6c06e5e4..c5d26b00 100644 +--- a/libelf/elf32_updatenull.c ++++ b/libelf/elf32_updatenull.c +@@ -256,6 +256,9 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) + case SHT_SUNW_syminfo: + sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYMINFO, 1); + break; ++ case SHT_RELR: ++ sh_entsize = elf_typesize (LIBELFBITS, ELF_T_RELR, 1); ++ break; + default: + break; + } +diff --git a/libelf/gelf.h b/libelf/gelf.h +index 7a3c87aa..f032d7e1 100644 +--- a/libelf/gelf.h ++++ b/libelf/gelf.h +@@ -82,6 +82,9 @@ typedef Elf64_Rel GElf_Rel; + /* Relocation table entry with addend (in section of type SHT_RELA). */ + typedef Elf64_Rela GElf_Rela; + ++/* Relative relocation entry (in section of type SHT_RELR). */ ++typedef Elf64_Relr Gelf_Relr; ++ + /* Program segment header. */ + typedef Elf64_Phdr GElf_Phdr; + +diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c +index 493d7916..63bcbae5 100644 +--- a/libelf/gelf_fsize.c ++++ b/libelf/gelf_fsize.c +@@ -69,7 +69,8 @@ const size_t __libelf_type_sizes[ELFCLASSNUM - 1][ELF_T_NUM] = + [ELF_T_LIB] = sizeof (ElfW2(LIBELFBITS, Ext_Lib)), \ + [ELF_T_AUXV] = sizeof (ElfW2(LIBELFBITS, Ext_auxv_t)), \ + [ELF_T_CHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Chdr)), \ +- [ELF_T_GNUHASH] = ELFW2(LIBELFBITS, FSZ_WORD) ++ [ELF_T_GNUHASH] = ELFW2(LIBELFBITS, FSZ_WORD), \ ++ [ELF_T_RELR] = ELFW2(LIBELFBITS, FSZ_RELR) + TYPE_SIZES (32) + }, + [ELFCLASS64 - 1] = { +diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c +index d8ad0634..749da1a1 100644 +--- a/libelf/gelf_xlate.c ++++ b/libelf/gelf_xlate.c +@@ -204,7 +204,8 @@ const xfct_t __elf_xfctstom[ELFCLASSNUM - 1][ELF_T_NUM] = + [ELF_T_MOVE] = ElfW2(Bits, cvt_Move), \ + [ELF_T_LIB] = ElfW2(Bits, cvt_Lib), \ + [ELF_T_AUXV] = ElfW2(Bits, cvt_auxv_t), \ +- [ELF_T_CHDR] = ElfW2(Bits, cvt_chdr) ++ [ELF_T_CHDR] = ElfW2(Bits, cvt_chdr), \ ++ [ELF_T_RELR] = ElfW2(Bits, cvt_Relr) + define_xfcts (32), + [ELF_T_GNUHASH] = Elf32_cvt_Word + }, +diff --git a/libelf/gelf_xlate.h b/libelf/gelf_xlate.h +index 3c0e4bf6..d5511c34 100644 +--- a/libelf/gelf_xlate.h ++++ b/libelf/gelf_xlate.h +@@ -36,6 +36,7 @@ FUNDAMENTAL (WORD, Word, LIBELFBITS); + FUNDAMENTAL (SWORD, Sword, LIBELFBITS); + FUNDAMENTAL (XWORD, Xword, LIBELFBITS); + FUNDAMENTAL (SXWORD, Sxword, LIBELFBITS); ++FUNDAMENTAL (RELR, Relr, LIBELFBITS); + + /* The structured types. */ + TYPE (Ehdr, LIBELFBITS) +diff --git a/libelf/libelf.h b/libelf/libelf.h +index 2374a48a..2837db72 100644 +--- a/libelf/libelf.h ++++ b/libelf/libelf.h +@@ -124,6 +124,7 @@ typedef enum + ELF_T_CHDR, /* Compressed, Elf32_Chdr, Elf64_Chdr, ... */ + ELF_T_NHDR8, /* Special GNU Properties note. Same as Nhdr, + except padding. */ ++ ELF_T_RELR, /* Relative relocation entry. */ + /* Keep this the last entry. */ + ELF_T_NUM + } Elf_Type; +diff --git a/libelf/libelfP.h b/libelf/libelfP.h +index d3c241e5..96476064 100644 +--- a/libelf/libelfP.h ++++ b/libelf/libelfP.h +@@ -63,6 +63,7 @@ + #define ELF32_FSZ_SWORD 4 + #define ELF32_FSZ_XWORD 8 + #define ELF32_FSZ_SXWORD 8 ++#define ELF32_FSZ_RELR 4 + + /* Same for 64 bits objects. */ + #define ELF64_FSZ_ADDR 8 +@@ -72,6 +73,7 @@ + #define ELF64_FSZ_SWORD 4 + #define ELF64_FSZ_XWORD 8 + #define ELF64_FSZ_SXWORD 8 ++#define ELF64_FSZ_RELR 8 + + + /* This is an extension of the ELF_F_* enumeration. The values here are +diff --git a/src/elflint.c b/src/elflint.c +index dd42dcb4..864de710 100644 +--- a/src/elflint.c ++++ b/src/elflint.c +@@ -1,5 +1,6 @@ + /* Pedantic checking of ELF files compliance with gABI/psABI spec. + Copyright (C) 2001-2015, 2017, 2018 Red Hat, Inc. ++ Copyright (C) 2023 Mark J. Wielaard + This file is part of elfutils. + Written by Ulrich Drepper , 2001. + +@@ -1291,10 +1292,20 @@ section [%2d] '%s': no relocations for merge-able string sections possible\n"), + + size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT); + if (shdr->sh_entsize != sh_entsize) +- ERROR (_(reltype == ELF_T_RELA ? "\ +-section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\ +-section [%2d] '%s': section entry size does not match ElfXX_Rel\n"), +- idx, section_name (ebl, idx)); ++ { ++ if (reltype == ELF_T_RELA) ++ ERROR ("\ ++section [%2d] '%s': section entry size does not match ElfXX_Rela\n", ++ idx, section_name (ebl, idx)); ++ else if (reltype == ELF_T_REL) ++ ERROR ("\ ++section [%2d] '%s': section entry size does not match ElfXX_Rel\n", ++ idx, section_name (ebl, idx)); ++ else ++ ERROR ("\ ++section [%2d] '%s': section entry size does not match ElfXX_Relr\n", ++ idx, section_name (ebl, idx)); ++ } + + /* In preparation of checking whether relocations are text + relocations or not we need to determine whether the file is +@@ -1590,6 +1601,32 @@ section [%2d] '%s': cannot get relocation %zu: %s\n"), + } + } + ++static void ++check_relr (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) ++{ ++ Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); ++ if (data == NULL) ++ { ++ ERROR (_("section [%2d] '%s': cannot get section data\n"), ++ idx, section_name (ebl, idx)); ++ return; ++ } ++ ++ /* Check the fields of the section header. */ ++ GElf_Shdr destshdr_mem; ++ GElf_Shdr *destshdr = NULL; ++ struct loaded_segment *loaded = NULL; ++ check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELR, &destshdr, ++ &destshdr_mem, &loaded); ++ ++ /* Just throw them away. */ ++ while (loaded != NULL) ++ { ++ struct loaded_segment *old = loaded; ++ loaded = loaded->next; ++ free (old); ++ } ++} + + /* Number of dynamic sections. */ + static int ndynamic; +@@ -1780,6 +1817,7 @@ section [%2d] '%s': entry %zu: pointer does not match address of section [%2d] ' + case DT_PLTGOT: + case DT_REL: + case DT_RELA: ++ case DT_RELR: + case DT_SYMBOLIC: + case DT_SYMTAB: + case DT_VERDEF: +@@ -3660,6 +3698,7 @@ static const struct + { ".plt", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more tests + { ".preinit_array", 15, SHT_PREINIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 }, + { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests ++ { ".relr", 5, SHT_RELR, atleast, 0, SHF_ALLOC }, // XXX more tests + { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests + { ".rodata", 8, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS }, + { ".rodata1", 9, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS }, +@@ -4182,6 +4221,10 @@ section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"), + check_rel (ebl, ehdr, shdr, cnt); + break; + ++ case SHT_RELR: ++ check_relr (ebl, ehdr, shdr, cnt); ++ break; ++ + case SHT_DYNAMIC: + check_dynamic (ebl, ehdr, shdr, cnt); + break; +diff --git a/src/readelf.c b/src/readelf.c +index eda0ce09..db31ad09 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -1,5 +1,6 @@ + /* Print information from ELF file in human-readable form. + Copyright (C) 1999-2018 Red Hat, Inc. ++ Copyright (C) 2023 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -302,11 +302,13 @@ + static void print_phdr (Ebl *ebl, GElf_Ehdr *ehdr); + static void print_scngrp (Ebl *ebl); + static void print_dynamic (Ebl *ebl); +-static void print_relocs (Ebl *ebl, GElf_Ehdr *ehdr); ++static void print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr); + static void handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, + GElf_Shdr *shdr); + static void handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, + GElf_Shdr *shdr); ++static void handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, ++ GElf_Shdr *shdr); + static bool print_symtab (Ebl *ebl, int type); + static void handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr); + static void print_verinfo (Ebl *ebl); +@@ -336,6 +339,8 @@ static void dump_data (Ebl *ebl); + static void dump_strings (Ebl *ebl); + static void print_strings (Ebl *ebl); + static void dump_archive_index (Elf *, const char *); ++static void print_dwarf_addr (Dwfl_Module *dwflmod, int address_size, ++ Dwarf_Addr address, Dwarf_Addr raw); + + enum dyn_idx + { +@@ -1052,7 +1057,7 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) + if (print_dynamic_table) + print_dynamic (ebl); + if (print_relocations) +- print_relocs (pure_ebl, ehdr); ++ print_relocs (pure_ebl, dwflmod, ehdr); + if (print_histogram) + handle_hash (ebl); + if (print_symbol_table || print_dynsym_table) +@@ -1971,9 +1976,11 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) + case DT_RELASZ: + case DT_STRSZ: + case DT_RELSZ: ++ case DT_RELRSZ: + case DT_RELAENT: + case DT_SYMENT: + case DT_RELENT: ++ case DT_RELRENT: + case DT_PLTPADSZ: + case DT_MOVEENT: + case DT_MOVESZ: +@@ -2049,7 +2056,7 @@ print_dynamic (Ebl *ebl) + + /* Print relocations. */ + static void +-print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) ++print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr) + { + /* Find all relocation sections and handle them. */ + Elf_Scn *scn = NULL; +@@ -2066,6 +2073,8 @@ print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) + handle_relocs_rel (ebl, ehdr, scn, shdr); + else if (shdr->sh_type == SHT_RELA) + handle_relocs_rela (ebl, ehdr, scn, shdr); ++ else if (shdr->sh_type == SHT_RELR) ++ handle_relocs_relr (ebl, mod, scn, shdr); + } + } + } +@@ -2454,6 +2463,114 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) + } + } + ++/* Handle a relocation section. */ ++static void ++handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, GElf_Shdr *shdr) ++{ ++ int class = gelf_getclass (ebl->elf); ++ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELR, 1, EV_CURRENT); ++ int nentries = shdr->sh_size / sh_entsize; ++ ++ /* Get the data of the section. */ ++ Elf_Data *data = elf_getdata (scn, NULL); ++ if (data == NULL) ++ return; ++ ++ /* Get the section header string table index. */ ++ size_t shstrndx; ++ if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) ++ error_exit (0, _("cannot get section header string table index")); ++ ++ /* A .relr.dyn section does not refer to a specific section. */ ++ printf (ngettext ("\ ++\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n", ++ "\ ++\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n", ++ nentries), ++ (unsigned int) elf_ndxscn (scn), ++ elf_strptr (ebl->elf, shstrndx, shdr->sh_name), ++ shdr->sh_offset, ++ nentries); ++ ++ if (class == ELFCLASS32) ++ { ++ uint32_t base = 0; ++ for (int cnt = 0; cnt < nentries; ++cnt) ++ { ++ Elf32_Word *words = data->d_buf; ++ Elf32_Word entry = words[cnt]; ++ ++ /* Just the raw entries? */ ++ if (print_unresolved_addresses) ++ printf (" %#010" PRIx32 "%s\n", entry, ++ (entry & 1) == 0 ? " *" : ""); ++ else ++ { ++ /* A real address, also sets base. */ ++ if ((entry & 1) == 0) ++ { ++ printf (" "); ++ print_dwarf_addr (mod, 4, entry, entry); ++ printf (" *\n"); ++ ++ base = entry + 4; ++ } ++ else ++ { ++ /* Untangle address from base and bits. */ ++ uint32_t addr; ++ for (addr = base; (entry >>= 1) != 0; addr += 4) ++ if ((entry & 1) != 0) ++ { ++ printf (" "); ++ print_dwarf_addr (mod, 4, addr, addr); ++ printf ("\n"); ++ } ++ base += 4 * (4 * 8 - 1); ++ } ++ } ++ } ++ } ++ else ++ { ++ uint64_t base = 0; ++ for (int cnt = 0; cnt < nentries; ++cnt) ++ { ++ Elf64_Xword *xwords = data->d_buf; ++ Elf64_Xword entry = xwords[cnt]; ++ ++ /* Just the raw entries? */ ++ if (print_unresolved_addresses) ++ printf (" %#018" PRIx64 "%s\n", entry, ++ (entry & 1) == 0 ? " *" : ""); ++ else ++ { ++ /* A real address, also sets base. */ ++ if ((entry & 1) == 0) ++ { ++ printf (" "); ++ print_dwarf_addr (mod, 8, entry, entry); ++ printf (" *\n"); ++ ++ base = entry + 8; ++ } ++ else ++ { ++ /* Untangle address from base and bits. */ ++ uint64_t addr; ++ for (addr = base; (entry >>= 1) != 0; addr += 8) ++ if ((entry & 1) != 0) ++ { ++ printf (" "); ++ print_dwarf_addr (mod, 8, addr, addr); ++ printf ("\n"); ++ } ++ base += 8 * (8 * 8 - 1); ++ } ++ } ++ } ++ } ++} + + /* Print the program header. Return true if a symtab is printed, + false otherwise. */ +@@ -4107,7 +4224,7 @@ get_debug_elf_data (Dwarf *dbg, Ebl *ebl, int idx, Elf_Scn *scn) + return elf_getdata (scn, NULL); + } + +-void ++static void + print_dwarf_addr (Dwfl_Module *dwflmod, + int address_size, Dwarf_Addr address, Dwarf_Addr raw) + { diff --git a/elfutils.spec b/elfutils.spec index 24dc195..2b4cb14 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.189 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -82,6 +82,8 @@ Patch3: elfutils-0.189-elfcompress.patch Patch4: elfutils-0.189-elf_getdata_rawchunk.patch # PR29696: Removed secondary fd close in cache config causing race condition Patch5: elfutils-0.189-debuginfod_config_cache-double-close.patch +# Bug 28495 - Add support for SHT_RELR to eu-readelf +Patch6: elfutils-0.189-relr.patch %description Elfutils is a collection of utilities, including stack (to show @@ -450,6 +452,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Aug 23 2023 Mark Wielaard - 0.189-5 +- Add elfutils-0.189-relr.patch + * Wed Jul 19 2023 Fedora Release Engineering - 0.189-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild From 87c5e66753fb9f61bf424d3306f0414e31647aae Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 25 Aug 2023 01:15:22 +0200 Subject: [PATCH 45/80] 0.189-6 - Update elfutils-0.189-relr.patch --- elfutils-0.189-relr.patch | 39 +++++++++++++++++++++++++++++++-------- elfutils.spec | 5 ++++- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/elfutils-0.189-relr.patch b/elfutils-0.189-relr.patch index 29a7b73..2814104 100644 --- a/elfutils-0.189-relr.patch +++ b/elfutils-0.189-relr.patch @@ -1,4 +1,4 @@ -commit 6ba977ed6c7ac6e51350f2093ebe0b90ff89f90c +commit e7648c87478ccc337c92841c7785387dd391f954 Author: Mark Wielaard Date: Sun Jul 23 23:14:31 2023 +0200 @@ -10,17 +10,18 @@ Date: Sun Jul 23 23:14:31 2023 +0200 Introduce new ELF_T_RELR Elf_Type and handle it for SHT_RELR. Check various properties in elflint. Print RELR relocations in readelf. Just the entries with -U. Just the addresses with -N. And - addresses pluse symbol/offsets by default. + addresses plus symbol/offsets by default. * libebl/eblsectiontypename.c (ebl_section_type_name): Add RELR to knownstype. * libelf/elf32_updatenull.c (updatenull_wrlock): Handle sh_entsize for SHT_RELR. - * libelf/gelf.h (Gelf_Relr): New typedef for Elf64_Relr. + * libelf/gelf.h (GElf_Relr): New typedef for Elf64_Relr. * libelf/gelf_fsize.c (__libelf_type_sizes): Add ELF_T_RELR. * libelf/gelf_xlate.c (__elf_xfctstom): Likewise. * libelf/gelf_xlate.h: Add RELR as FUNDAMENTAL. - * libelf/libelf.h (Elf_Type): Add ELF_T_RELR. + * libelf/libelf.h (Elf_Type): Add ELF_T_RELR. Add RELR + defines/typedefs if undefined in system elf.h. * libelf/libelfP.h: Define ELF32_FSZ_RELR and ELF64_FSZ_RELR. * src/elflint.c (check_reloc_shdr): Check she_entsize for ELF_T_RELR. @@ -34,6 +35,8 @@ Date: Sun Jul 23 23:14:31 2023 +0200 (process_elf_file): Pass dwflmod to print_relocs. (handle_dynamic): Handle DT_RELRSZ and DTRELRENT. + https://sourceware.org/bugzilla/show_bug.cgi?id=28495 + Signed-off-by: Mark Wielaard diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c @@ -65,7 +68,7 @@ index 6c06e5e4..c5d26b00 100644 break; } diff --git a/libelf/gelf.h b/libelf/gelf.h -index 7a3c87aa..f032d7e1 100644 +index 7a3c87aa..1847021e 100644 --- a/libelf/gelf.h +++ b/libelf/gelf.h @@ -82,6 +82,9 @@ typedef Elf64_Rel GElf_Rel; @@ -73,7 +76,7 @@ index 7a3c87aa..f032d7e1 100644 typedef Elf64_Rela GElf_Rela; +/* Relative relocation entry (in section of type SHT_RELR). */ -+typedef Elf64_Relr Gelf_Relr; ++typedef Elf64_Relr GElf_Relr; + /* Program segment header. */ typedef Elf64_Phdr GElf_Phdr; @@ -119,10 +122,30 @@ index 3c0e4bf6..d5511c34 100644 /* The structured types. */ TYPE (Ehdr, LIBELFBITS) diff --git a/libelf/libelf.h b/libelf/libelf.h -index 2374a48a..2837db72 100644 +index 2374a48a..458a1fad 100644 --- a/libelf/libelf.h +++ b/libelf/libelf.h -@@ -124,6 +124,7 @@ typedef enum +@@ -69,6 +69,19 @@ + #define ELFCOMPRESS_ZSTD 2 /* Zstandard algorithm. */ + #endif + ++#ifndef SHT_RELR ++ /* So RELR defines/typedefs can be used even with an old system elf.h. */ ++ #define SHT_RELR 19 /* RELR relative relocations */ ++ ++ /* RELR relocation table entry */ ++ typedef Elf32_Word Elf32_Relr; ++ typedef Elf64_Xword Elf64_Relr; ++ ++ #define DT_RELRSZ 35 /* Total size of RELR relative relocations */ ++ #define DT_RELR 36 /* Address of RELR relative relocations */ ++ #define DT_RELRENT 37 /* Size of one RELR relative relocaction */ ++#endif ++ + #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) + # define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__))) + # define __deprecated_attribute__ __attribute__ ((__deprecated__)) +@@ -124,6 +137,7 @@ typedef enum ELF_T_CHDR, /* Compressed, Elf32_Chdr, Elf64_Chdr, ... */ ELF_T_NHDR8, /* Special GNU Properties note. Same as Nhdr, except padding. */ diff --git a/elfutils.spec b/elfutils.spec index 2b4cb14..c164f1d 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.189 -%global baserelease 5 +%global baserelease 6 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -452,6 +452,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Aug 24 2023 Mark Wielaard - 0.189-6 +- Update elfutils-0.189-relr.patch + * Wed Aug 23 2023 Mark Wielaard - 0.189-5 - Add elfutils-0.189-relr.patch From d6169014dd19a04b254b15f7dbd4ee269b620c9c Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 3 Nov 2023 21:11:40 +0100 Subject: [PATCH 46/80] 0.190-1 - Upgrade to upstream elfutils 0.190 - Add eu-srcfiles - Drop upstreamed patches elfutils-0.189-relr.patch elfutils-0.189-debuginfod_config_cache-double-close.patch elfutils-0.189-elf_getdata_rawchunk.patch elfutils-0.189-elfcompress.patch elfutils-0.189-c99-compat.patch - Only package debuginfod-client-config.7 manpage for debuginfod-client --- .gitignore | 1 + elfutils-0.189-c99-compat.patch | 31 -- ...debuginfod_config_cache-double-close.patch | 73 --- elfutils-0.189-elf_getdata_rawchunk.patch | 224 --------- elfutils-0.189-elfcompress.patch | 95 ---- elfutils-0.189-relr.patch | 469 ------------------ elfutils.spec | 27 +- sources | 2 +- 8 files changed, 16 insertions(+), 906 deletions(-) delete mode 100644 elfutils-0.189-c99-compat.patch delete mode 100644 elfutils-0.189-debuginfod_config_cache-double-close.patch delete mode 100644 elfutils-0.189-elf_getdata_rawchunk.patch delete mode 100644 elfutils-0.189-elfcompress.patch delete mode 100644 elfutils-0.189-relr.patch diff --git a/.gitignore b/.gitignore index 9d73fa8..eb85273 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ /elfutils-0.187.tar.bz2 /elfutils-0.188.tar.bz2 /elfutils-0.189.tar.bz2 +/elfutils-0.190.tar.bz2 diff --git a/elfutils-0.189-c99-compat.patch b/elfutils-0.189-c99-compat.patch deleted file mode 100644 index 4932c2c..0000000 --- a/elfutils-0.189-c99-compat.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 6e7ac623674242628c9e54892a532d55d3288bb8 Mon Sep 17 00:00:00 2001 -From: Florian Weimer -Date: Sat, 22 Apr 2023 21:37:09 +0200 -Subject: [PATCH] testsuite: Avoid C99 compatibility issues in - run-native-test.sh - -Include for the pause function, and add the return type -of main. Avoids an implicit function declaration and implicit int. - -Signed-off-by: Florian Weimer ---- - tests/run-native-test.sh | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/tests/run-native-test.sh b/tests/run-native-test.sh -index d19007f2..042a51c6 100755 ---- a/tests/run-native-test.sh -+++ b/tests/run-native-test.sh -@@ -27,7 +27,8 @@ - # in all builds. - - tempfiles native.c native --echo 'main () { while (1) pause (); }' > native.c -+printf '#include \nint main (void) { while (1) pause (); }\n' \ -+ > native.c - - native=0 - kill_native() --- -2.31.1 - diff --git a/elfutils-0.189-debuginfod_config_cache-double-close.patch b/elfutils-0.189-debuginfod_config_cache-double-close.patch deleted file mode 100644 index 3380b71..0000000 --- a/elfutils-0.189-debuginfod_config_cache-double-close.patch +++ /dev/null @@ -1,73 +0,0 @@ -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index ef4d47e3..d92d8d62 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -248,7 +248,7 @@ debuginfod_write_callback (char *ptr, size_t size, size_t nmemb, void *data) - - /* handle config file read and write */ - static int --debuginfod_config_cache(char *config_path, -+debuginfod_config_cache(debuginfod_client *c, char *config_path, - long cache_config_default_s, - struct stat *st) - { -@@ -277,17 +277,27 @@ debuginfod_config_cache(char *config_path, - } - - long cache_config; -+ /* PR29696 - NB: When using fdopen, the file descriptor is NOT -+ dup'ed and will be closed when the stream is closed. Manually -+ closing fd after fclose is called will lead to a race condition -+ where, if reused, the file descriptor will compete for its -+ regular use before being incorrectly closed here. */ - FILE *config_file = fdopen(fd, "r"); - if (config_file) - { - if (fscanf(config_file, "%ld", &cache_config) != 1) -- cache_config = cache_config_default_s; -- fclose(config_file); -+ cache_config = cache_config_default_s; -+ if (0 != fclose (config_file) && c->verbose_fd >= 0) -+ dprintf (c->verbose_fd, "fclose failed with %s (err=%d)\n", -+ strerror (errno), errno); - } - else -- cache_config = cache_config_default_s; -- -- close (fd); -+ { -+ cache_config = cache_config_default_s; -+ if (0 != close (fd) && c->verbose_fd >= 0) -+ dprintf (c->verbose_fd, "close failed with %s (err=%d)\n", -+ strerror (errno), errno); -+ } - return cache_config; - } - -@@ -303,7 +313,7 @@ debuginfod_clean_cache(debuginfod_client *c, - struct stat st; - - /* Create new interval file. */ -- rc = debuginfod_config_cache(interval_path, -+ rc = debuginfod_config_cache(c, interval_path, - cache_clean_default_interval_s, &st); - if (rc < 0) - return rc; -@@ -320,7 +330,7 @@ debuginfod_clean_cache(debuginfod_client *c, - utime (interval_path, NULL); - - /* Read max unused age value from config file. */ -- rc = debuginfod_config_cache(max_unused_path, -+ rc = debuginfod_config_cache(c, max_unused_path, - cache_default_max_unused_age_s, &st); - if (rc < 0) - return rc; -@@ -1110,7 +1135,7 @@ debuginfod_query_server (debuginfod_client *c, - - close(fd); /* no need to hold onto the negative-hit file descriptor */ - -- rc = debuginfod_config_cache(cache_miss_path, -+ rc = debuginfod_config_cache(c, cache_miss_path, - cache_miss_default_s, &st); - if (rc < 0) - goto out; diff --git a/elfutils-0.189-elf_getdata_rawchunk.patch b/elfutils-0.189-elf_getdata_rawchunk.patch deleted file mode 100644 index 7ce6695..0000000 --- a/elfutils-0.189-elf_getdata_rawchunk.patch +++ /dev/null @@ -1,224 +0,0 @@ -From 3aca5b5f1f1617db2220022d9061dcaf129e54c4 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Wed, 21 Jun 2023 18:05:12 +0200 -Subject: [PATCH] libelf: Replace list of elf_getdata_rawchunk results with a - tree - -elf_getdata_rawchunks did a linear search to see if a chunk was -already fetched. Replace this list with a binary search tree to make -lookup faster when a lot of Elf_Data_Chunk were created. - - * libelf/libelfP.h (Elf_Data_Chunk): Remove next field. - (struct Elf): Change the rawchunks type from Elf_Data_Chunk * - to void *. - * elf_getdata_rawchunk.c (chunk_compare): New static function. - (elf_getdata_rawchunk): Use tsearch instead of a manual linked - list. - * elf_end.c (free_chunk): New static function. - (elf_end): Call tdestroy instead of walking linked list. - -Signed-off-by: Mark Wielaard ---- - libelf/elf_end.c | 22 +++++++++------- - libelf/elf_getdata_rawchunk.c | 47 +++++++++++++++++++++++++---------- - libelf/libelfP.h | 13 ++++------ - 3 files changed, 52 insertions(+), 30 deletions(-) - -diff --git a/libelf/elf_end.c b/libelf/elf_end.c -index 5c451f36..3e5d4c86 100644 ---- a/libelf/elf_end.c -+++ b/libelf/elf_end.c -@@ -1,5 +1,6 @@ - /* Free resources associated with Elf descriptor. - Copyright (C) 1998,1999,2000,2001,2002,2004,2005,2007,2015,2016 Red Hat, Inc. -+ Copyright (C) 2023 Mark J. Wielaard - This file is part of elfutils. - Written by Ulrich Drepper , 1998. - -@@ -32,12 +33,22 @@ - #endif - - #include -+#include - #include - #include - - #include "libelfP.h" - - -+static void -+free_chunk (void *n) -+{ -+ Elf_Data_Chunk *rawchunk = (Elf_Data_Chunk *)n; -+ if (rawchunk->dummy_scn.flags & ELF_F_MALLOCED) -+ free (rawchunk->data.d.d_buf); -+ free (rawchunk); -+} -+ - int - elf_end (Elf *elf) - { -@@ -112,20 +123,13 @@ elf_end (Elf *elf) - - case ELF_K_ELF: - { -- Elf_Data_Chunk *rawchunks -+ void *rawchunks - = (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.rawchunks) - == offsetof (struct Elf, state.elf64.rawchunks)) - ? elf->state.elf32.rawchunks - : elf->state.elf64.rawchunks); -- while (rawchunks != NULL) -- { -- Elf_Data_Chunk *next = rawchunks->next; -- if (rawchunks->dummy_scn.flags & ELF_F_MALLOCED) -- free (rawchunks->data.d.d_buf); -- free (rawchunks); -- rawchunks = next; -- } -+ tdestroy (rawchunks, free_chunk); - - Elf_ScnList *list = (elf->class == ELFCLASS32 - || (offsetof (struct Elf, state.elf32.scns) -diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c -index 5a35ccdc..cfd40396 100644 ---- a/libelf/elf_getdata_rawchunk.c -+++ b/libelf/elf_getdata_rawchunk.c -@@ -1,6 +1,6 @@ - /* Return converted data from raw chunk of ELF file. - Copyright (C) 2007, 2014, 2015 Red Hat, Inc. -- Copyright (C) 2022 Mark J. Wielaard -+ Copyright (C) 2022, 2023 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -33,12 +33,28 @@ - - #include - #include -+#include - #include - #include - - #include "libelfP.h" - #include "common.h" - -+static int -+chunk_compare (const void *a, const void *b) -+{ -+ Elf_Data_Chunk *da = (Elf_Data_Chunk *)a; -+ Elf_Data_Chunk *db = (Elf_Data_Chunk *)b; -+ -+ if (da->offset != db->offset) -+ return da->offset - db->offset; -+ -+ if (da->data.d.d_size != db->data.d.d_size) -+ return da->data.d.d_size - db->data.d.d_size; -+ -+ return da->data.d.d_type - db->data.d.d_type; -+} -+ - Elf_Data * - elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) - { -@@ -75,19 +91,25 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) - rwlock_rdlock (elf->lock); - - /* Maybe we already got this chunk? */ -- Elf_Data_Chunk *rawchunks = elf->state.elf.rawchunks; -- while (rawchunks != NULL) -+ Elf_Data_Chunk key; -+ key.offset = offset; -+ key.data.d.d_size = size; -+ key.data.d.d_type = type; -+ Elf_Data_Chunk **found = tsearch (&key, &elf->state.elf.rawchunks, -+ &chunk_compare); -+ if (found == NULL) -+ goto nomem; -+ -+ /* Existing entry. */ -+ if (*found != &key && *found != NULL) - { -- if ((rawchunks->offset == offset || size == 0) -- && rawchunks->data.d.d_size == size -- && rawchunks->data.d.d_type == type) -- { -- result = &rawchunks->data.d; -- goto out; -- } -- rawchunks = rawchunks->next; -+ result = &(*found)->data.d; -+ goto out; - } - -+ /* New entry. */ -+ *found = NULL; -+ - size_t align = __libelf_type_align (elf->class, type); - if (elf->map_address != NULL) - { -@@ -189,8 +211,7 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type) - rwlock_unlock (elf->lock); - rwlock_wrlock (elf->lock); - -- chunk->next = elf->state.elf.rawchunks; -- elf->state.elf.rawchunks = chunk; -+ *found = chunk; - result = &chunk->data.d; - - out: -diff --git a/libelf/libelfP.h b/libelf/libelfP.h -index 6624f38a..d3c241e5 100644 ---- a/libelf/libelfP.h -+++ b/libelf/libelfP.h -@@ -1,5 +1,6 @@ - /* Internal interfaces for libelf. - Copyright (C) 1998-2010, 2015, 2016 Red Hat, Inc. -+ Copyright (C) 2023 Mark J. Wielaard - This file is part of elfutils. - Contributed by Ulrich Drepper , 1998. - -@@ -262,11 +263,7 @@ typedef struct Elf_ScnList - typedef struct Elf_Data_Chunk - { - Elf_Data_Scn data; -- union -- { -- Elf_Scn dummy_scn; -- struct Elf_Data_Chunk *next; -- }; -+ Elf_Scn dummy_scn; - int64_t offset; /* The original raw offset in the Elf image. */ - } Elf_Data_Chunk; - -@@ -324,7 +321,7 @@ struct Elf - Elf_ScnList *scns_last; /* Last element in the section list. - If NULL the data has not yet been - read from the file. */ -- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ -+ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ - unsigned int scnincr; /* Number of sections allocate the last - time. */ - int ehdr_flags; /* Flags (dirty) for ELF header. */ -@@ -343,7 +340,7 @@ struct Elf - Elf_ScnList *scns_last; /* Last element in the section list. - If NULL the data has not yet been - read from the file. */ -- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ -+ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ - unsigned int scnincr; /* Number of sections allocate the last - time. */ - int ehdr_flags; /* Flags (dirty) for ELF header. */ -@@ -368,7 +365,7 @@ struct Elf - Elf_ScnList *scns_last; /* Last element in the section list. - If NULL the data has not yet been - read from the file. */ -- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */ -+ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */ - unsigned int scnincr; /* Number of sections allocate the last - time. */ - int ehdr_flags; /* Flags (dirty) for ELF header. */ --- -2.40.1 - diff --git a/elfutils-0.189-elfcompress.patch b/elfutils-0.189-elfcompress.patch deleted file mode 100644 index 5f0d681..0000000 --- a/elfutils-0.189-elfcompress.patch +++ /dev/null @@ -1,95 +0,0 @@ -From ef9164520c81ea61efe88777a8ad61bf17a54201 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Sat, 22 Apr 2023 01:26:17 +0200 -Subject: [PATCH] elfcompress: Don't compress if section already compressed - unless forced - -Before commit a5b07cdf9 "support ZSTD compression algorithm" -elfcompress would not try to compress a section if it already -had the requested compression type (or was already uncompressed) -unless the --force flag was given. An else if construct was changed -to an if in the commit causing elfcompress to warn (in verbose mode) -but then still try to (re)compress the section. - -Add an explicit check so if nothing needs (un)compressing, the file -isn't changed. - -The diff looks large, but git diff -b -w is just: - -+ if (force || type != schtype) -+ { - if (shdr->sh_type != SHT_NOBITS - && (shdr->sh_flags & SHF_ALLOC) == 0) - { -@@ -554,6 +556,7 @@ process_file (const char *fname) - printf ("[%zd] %s ignoring %s section\n", ndx, sname, - (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); - } -+ } - -Signed-off-by: Mark Wielaard ---- - src/elfcompress.c | 43 +++++++++++++++++++++++-------------------- - 1 file changed, 23 insertions(+), 20 deletions(-) - -diff --git a/src/elfcompress.c b/src/elfcompress.c -index 18ade66f..f771b92a 100644 ---- a/src/elfcompress.c -+++ b/src/elfcompress.c -@@ -529,30 +529,33 @@ process_file (const char *fname) - } - } - -- if (shdr->sh_type != SHT_NOBITS -- && (shdr->sh_flags & SHF_ALLOC) == 0) -+ if (force || type != schtype) - { -- set_section (sections, ndx); -- /* Check if we might want to change this section name. */ -- if (! adjust_names -- && ((type != ZLIB_GNU -- && startswith (sname, ".zdebug")) -- || (type == ZLIB_GNU -- && startswith (sname, ".debug")))) -- adjust_names = true; -- -- /* We need a buffer this large if we change the names. */ -- if (adjust_names) -+ if (shdr->sh_type != SHT_NOBITS -+ && (shdr->sh_flags & SHF_ALLOC) == 0) - { -- size_t slen = strlen (sname); -- if (slen > maxnamelen) -- maxnamelen = slen; -+ set_section (sections, ndx); -+ /* Check if we might want to change this section name. */ -+ if (! adjust_names -+ && ((type != ZLIB_GNU -+ && startswith (sname, ".zdebug")) -+ || (type == ZLIB_GNU -+ && startswith (sname, ".debug")))) -+ adjust_names = true; -+ -+ /* We need a buffer this large if we change the names. */ -+ if (adjust_names) -+ { -+ size_t slen = strlen (sname); -+ if (slen > maxnamelen) -+ maxnamelen = slen; -+ } - } -+ else -+ if (verbose >= 0) -+ printf ("[%zd] %s ignoring %s section\n", ndx, sname, -+ (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); - } -- else -- if (verbose >= 0) -- printf ("[%zd] %s ignoring %s section\n", ndx, sname, -- (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated")); - } - - if (shdr->sh_type == SHT_SYMTAB) --- -2.31.1 - diff --git a/elfutils-0.189-relr.patch b/elfutils-0.189-relr.patch deleted file mode 100644 index 2814104..0000000 --- a/elfutils-0.189-relr.patch +++ /dev/null @@ -1,469 +0,0 @@ -commit e7648c87478ccc337c92841c7785387dd391f954 -Author: Mark Wielaard -Date: Sun Jul 23 23:14:31 2023 +0200 - - libelf, readelf, elflint: Add RELR support - - Handle RELR as defined here: - https://groups.google.com/g/generic-abi/c/bX460iggiKg/m/YT2RrjpMAwAJ - - Introduce new ELF_T_RELR Elf_Type and handle it for SHT_RELR. Check - various properties in elflint. Print RELR relocations in - readelf. Just the entries with -U. Just the addresses with -N. And - addresses plus symbol/offsets by default. - - * libebl/eblsectiontypename.c (ebl_section_type_name): Add RELR - to knownstype. - * libelf/elf32_updatenull.c (updatenull_wrlock): Handle - sh_entsize for SHT_RELR. - * libelf/gelf.h (GElf_Relr): New typedef for Elf64_Relr. - * libelf/gelf_fsize.c (__libelf_type_sizes): Add ELF_T_RELR. - * libelf/gelf_xlate.c (__elf_xfctstom): Likewise. - * libelf/gelf_xlate.h: Add RELR as FUNDAMENTAL. - * libelf/libelf.h (Elf_Type): Add ELF_T_RELR. Add RELR - defines/typedefs if undefined in system elf.h. - * libelf/libelfP.h: Define ELF32_FSZ_RELR and ELF64_FSZ_RELR. - * src/elflint.c (check_reloc_shdr): Check she_entsize for - ELF_T_RELR. - (check_relr): New function. - (check_dynamic): Handle DT_RELR. - (special_sections): Add SHT_RELR. - (check_sections): Call check_relr. - * src/readelf.c (print_relocs): Also accept a Dwfl_Module. - (handle_relocs_relr): New function. - (print_dwarf_addr): Make static and declare early. - (process_elf_file): Pass dwflmod to print_relocs. - (handle_dynamic): Handle DT_RELRSZ and DTRELRENT. - - https://sourceware.org/bugzilla/show_bug.cgi?id=28495 - - Signed-off-by: Mark Wielaard - -diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c -index 2008b95a..ade25d4a 100644 ---- a/libebl/eblsectiontypename.c -+++ b/libebl/eblsectiontypename.c -@@ -61,7 +61,8 @@ ebl_section_type_name (Ebl *ebl, int section, char *buf, size_t len) - KNOWNSTYPE (FINI_ARRAY), - KNOWNSTYPE (PREINIT_ARRAY), - KNOWNSTYPE (GROUP), -- KNOWNSTYPE (SYMTAB_SHNDX) -+ KNOWNSTYPE (SYMTAB_SHNDX), -+ KNOWNSTYPE (RELR) - }; - - /* Handle standard names. */ -diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c -index 6c06e5e4..c5d26b00 100644 ---- a/libelf/elf32_updatenull.c -+++ b/libelf/elf32_updatenull.c -@@ -256,6 +256,9 @@ __elfw2(LIBELFBITS,updatenull_wrlock) (Elf *elf, int *change_bop, size_t shnum) - case SHT_SUNW_syminfo: - sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYMINFO, 1); - break; -+ case SHT_RELR: -+ sh_entsize = elf_typesize (LIBELFBITS, ELF_T_RELR, 1); -+ break; - default: - break; - } -diff --git a/libelf/gelf.h b/libelf/gelf.h -index 7a3c87aa..1847021e 100644 ---- a/libelf/gelf.h -+++ b/libelf/gelf.h -@@ -82,6 +82,9 @@ typedef Elf64_Rel GElf_Rel; - /* Relocation table entry with addend (in section of type SHT_RELA). */ - typedef Elf64_Rela GElf_Rela; - -+/* Relative relocation entry (in section of type SHT_RELR). */ -+typedef Elf64_Relr GElf_Relr; -+ - /* Program segment header. */ - typedef Elf64_Phdr GElf_Phdr; - -diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c -index 493d7916..63bcbae5 100644 ---- a/libelf/gelf_fsize.c -+++ b/libelf/gelf_fsize.c -@@ -69,7 +69,8 @@ const size_t __libelf_type_sizes[ELFCLASSNUM - 1][ELF_T_NUM] = - [ELF_T_LIB] = sizeof (ElfW2(LIBELFBITS, Ext_Lib)), \ - [ELF_T_AUXV] = sizeof (ElfW2(LIBELFBITS, Ext_auxv_t)), \ - [ELF_T_CHDR] = sizeof (ElfW2(LIBELFBITS, Ext_Chdr)), \ -- [ELF_T_GNUHASH] = ELFW2(LIBELFBITS, FSZ_WORD) -+ [ELF_T_GNUHASH] = ELFW2(LIBELFBITS, FSZ_WORD), \ -+ [ELF_T_RELR] = ELFW2(LIBELFBITS, FSZ_RELR) - TYPE_SIZES (32) - }, - [ELFCLASS64 - 1] = { -diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c -index d8ad0634..749da1a1 100644 ---- a/libelf/gelf_xlate.c -+++ b/libelf/gelf_xlate.c -@@ -204,7 +204,8 @@ const xfct_t __elf_xfctstom[ELFCLASSNUM - 1][ELF_T_NUM] = - [ELF_T_MOVE] = ElfW2(Bits, cvt_Move), \ - [ELF_T_LIB] = ElfW2(Bits, cvt_Lib), \ - [ELF_T_AUXV] = ElfW2(Bits, cvt_auxv_t), \ -- [ELF_T_CHDR] = ElfW2(Bits, cvt_chdr) -+ [ELF_T_CHDR] = ElfW2(Bits, cvt_chdr), \ -+ [ELF_T_RELR] = ElfW2(Bits, cvt_Relr) - define_xfcts (32), - [ELF_T_GNUHASH] = Elf32_cvt_Word - }, -diff --git a/libelf/gelf_xlate.h b/libelf/gelf_xlate.h -index 3c0e4bf6..d5511c34 100644 ---- a/libelf/gelf_xlate.h -+++ b/libelf/gelf_xlate.h -@@ -36,6 +36,7 @@ FUNDAMENTAL (WORD, Word, LIBELFBITS); - FUNDAMENTAL (SWORD, Sword, LIBELFBITS); - FUNDAMENTAL (XWORD, Xword, LIBELFBITS); - FUNDAMENTAL (SXWORD, Sxword, LIBELFBITS); -+FUNDAMENTAL (RELR, Relr, LIBELFBITS); - - /* The structured types. */ - TYPE (Ehdr, LIBELFBITS) -diff --git a/libelf/libelf.h b/libelf/libelf.h -index 2374a48a..458a1fad 100644 ---- a/libelf/libelf.h -+++ b/libelf/libelf.h -@@ -69,6 +69,19 @@ - #define ELFCOMPRESS_ZSTD 2 /* Zstandard algorithm. */ - #endif - -+#ifndef SHT_RELR -+ /* So RELR defines/typedefs can be used even with an old system elf.h. */ -+ #define SHT_RELR 19 /* RELR relative relocations */ -+ -+ /* RELR relocation table entry */ -+ typedef Elf32_Word Elf32_Relr; -+ typedef Elf64_Xword Elf64_Relr; -+ -+ #define DT_RELRSZ 35 /* Total size of RELR relative relocations */ -+ #define DT_RELR 36 /* Address of RELR relative relocations */ -+ #define DT_RELRENT 37 /* Size of one RELR relative relocaction */ -+#endif -+ - #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) - # define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__))) - # define __deprecated_attribute__ __attribute__ ((__deprecated__)) -@@ -124,6 +137,7 @@ typedef enum - ELF_T_CHDR, /* Compressed, Elf32_Chdr, Elf64_Chdr, ... */ - ELF_T_NHDR8, /* Special GNU Properties note. Same as Nhdr, - except padding. */ -+ ELF_T_RELR, /* Relative relocation entry. */ - /* Keep this the last entry. */ - ELF_T_NUM - } Elf_Type; -diff --git a/libelf/libelfP.h b/libelf/libelfP.h -index d3c241e5..96476064 100644 ---- a/libelf/libelfP.h -+++ b/libelf/libelfP.h -@@ -63,6 +63,7 @@ - #define ELF32_FSZ_SWORD 4 - #define ELF32_FSZ_XWORD 8 - #define ELF32_FSZ_SXWORD 8 -+#define ELF32_FSZ_RELR 4 - - /* Same for 64 bits objects. */ - #define ELF64_FSZ_ADDR 8 -@@ -72,6 +73,7 @@ - #define ELF64_FSZ_SWORD 4 - #define ELF64_FSZ_XWORD 8 - #define ELF64_FSZ_SXWORD 8 -+#define ELF64_FSZ_RELR 8 - - - /* This is an extension of the ELF_F_* enumeration. The values here are -diff --git a/src/elflint.c b/src/elflint.c -index dd42dcb4..864de710 100644 ---- a/src/elflint.c -+++ b/src/elflint.c -@@ -1,5 +1,6 @@ - /* Pedantic checking of ELF files compliance with gABI/psABI spec. - Copyright (C) 2001-2015, 2017, 2018 Red Hat, Inc. -+ Copyright (C) 2023 Mark J. Wielaard - This file is part of elfutils. - Written by Ulrich Drepper , 2001. - -@@ -1291,10 +1292,20 @@ section [%2d] '%s': no relocations for merge-able string sections possible\n"), - - size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT); - if (shdr->sh_entsize != sh_entsize) -- ERROR (_(reltype == ELF_T_RELA ? "\ --section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\ --section [%2d] '%s': section entry size does not match ElfXX_Rel\n"), -- idx, section_name (ebl, idx)); -+ { -+ if (reltype == ELF_T_RELA) -+ ERROR ("\ -+section [%2d] '%s': section entry size does not match ElfXX_Rela\n", -+ idx, section_name (ebl, idx)); -+ else if (reltype == ELF_T_REL) -+ ERROR ("\ -+section [%2d] '%s': section entry size does not match ElfXX_Rel\n", -+ idx, section_name (ebl, idx)); -+ else -+ ERROR ("\ -+section [%2d] '%s': section entry size does not match ElfXX_Relr\n", -+ idx, section_name (ebl, idx)); -+ } - - /* In preparation of checking whether relocations are text - relocations or not we need to determine whether the file is -@@ -1590,6 +1601,32 @@ section [%2d] '%s': cannot get relocation %zu: %s\n"), - } - } - -+static void -+check_relr (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx) -+{ -+ Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL); -+ if (data == NULL) -+ { -+ ERROR (_("section [%2d] '%s': cannot get section data\n"), -+ idx, section_name (ebl, idx)); -+ return; -+ } -+ -+ /* Check the fields of the section header. */ -+ GElf_Shdr destshdr_mem; -+ GElf_Shdr *destshdr = NULL; -+ struct loaded_segment *loaded = NULL; -+ check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELR, &destshdr, -+ &destshdr_mem, &loaded); -+ -+ /* Just throw them away. */ -+ while (loaded != NULL) -+ { -+ struct loaded_segment *old = loaded; -+ loaded = loaded->next; -+ free (old); -+ } -+} - - /* Number of dynamic sections. */ - static int ndynamic; -@@ -1780,6 +1817,7 @@ section [%2d] '%s': entry %zu: pointer does not match address of section [%2d] ' - case DT_PLTGOT: - case DT_REL: - case DT_RELA: -+ case DT_RELR: - case DT_SYMBOLIC: - case DT_SYMTAB: - case DT_VERDEF: -@@ -3660,6 +3698,7 @@ static const struct - { ".plt", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more tests - { ".preinit_array", 15, SHT_PREINIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 }, - { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests -+ { ".relr", 5, SHT_RELR, atleast, 0, SHF_ALLOC }, // XXX more tests - { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests - { ".rodata", 8, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS }, - { ".rodata1", 9, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS }, -@@ -4182,6 +4221,10 @@ section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"), - check_rel (ebl, ehdr, shdr, cnt); - break; - -+ case SHT_RELR: -+ check_relr (ebl, ehdr, shdr, cnt); -+ break; -+ - case SHT_DYNAMIC: - check_dynamic (ebl, ehdr, shdr, cnt); - break; -diff --git a/src/readelf.c b/src/readelf.c -index eda0ce09..db31ad09 100644 ---- a/src/readelf.c -+++ b/src/readelf.c -@@ -1,5 +1,6 @@ - /* Print information from ELF file in human-readable form. - Copyright (C) 1999-2018 Red Hat, Inc. -+ Copyright (C) 2023 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -302,11 +302,13 @@ - static void print_phdr (Ebl *ebl, GElf_Ehdr *ehdr); - static void print_scngrp (Ebl *ebl); - static void print_dynamic (Ebl *ebl); --static void print_relocs (Ebl *ebl, GElf_Ehdr *ehdr); -+static void print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr); - static void handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); - static void handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, - GElf_Shdr *shdr); -+static void handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, -+ GElf_Shdr *shdr); - static bool print_symtab (Ebl *ebl, int type); - static void handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr); - static void print_verinfo (Ebl *ebl); -@@ -336,6 +339,8 @@ static void dump_data (Ebl *ebl); - static void dump_strings (Ebl *ebl); - static void print_strings (Ebl *ebl); - static void dump_archive_index (Elf *, const char *); -+static void print_dwarf_addr (Dwfl_Module *dwflmod, int address_size, -+ Dwarf_Addr address, Dwarf_Addr raw); - - enum dyn_idx - { -@@ -1052,7 +1057,7 @@ process_elf_file (Dwfl_Module *dwflmod, int fd) - if (print_dynamic_table) - print_dynamic (ebl); - if (print_relocations) -- print_relocs (pure_ebl, ehdr); -+ print_relocs (pure_ebl, dwflmod, ehdr); - if (print_histogram) - handle_hash (ebl); - if (print_symbol_table || print_dynsym_table) -@@ -1971,9 +1976,11 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr, GElf_Phdr *phdr) - case DT_RELASZ: - case DT_STRSZ: - case DT_RELSZ: -+ case DT_RELRSZ: - case DT_RELAENT: - case DT_SYMENT: - case DT_RELENT: -+ case DT_RELRENT: - case DT_PLTPADSZ: - case DT_MOVEENT: - case DT_MOVESZ: -@@ -2049,7 +2056,7 @@ print_dynamic (Ebl *ebl) - - /* Print relocations. */ - static void --print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) -+print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr) - { - /* Find all relocation sections and handle them. */ - Elf_Scn *scn = NULL; -@@ -2066,6 +2073,8 @@ print_relocs (Ebl *ebl, GElf_Ehdr *ehdr) - handle_relocs_rel (ebl, ehdr, scn, shdr); - else if (shdr->sh_type == SHT_RELA) - handle_relocs_rela (ebl, ehdr, scn, shdr); -+ else if (shdr->sh_type == SHT_RELR) -+ handle_relocs_relr (ebl, mod, scn, shdr); - } - } - } -@@ -2454,6 +2463,114 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr) - } - } - -+/* Handle a relocation section. */ -+static void -+handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, GElf_Shdr *shdr) -+{ -+ int class = gelf_getclass (ebl->elf); -+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELR, 1, EV_CURRENT); -+ int nentries = shdr->sh_size / sh_entsize; -+ -+ /* Get the data of the section. */ -+ Elf_Data *data = elf_getdata (scn, NULL); -+ if (data == NULL) -+ return; -+ -+ /* Get the section header string table index. */ -+ size_t shstrndx; -+ if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) -+ error_exit (0, _("cannot get section header string table index")); -+ -+ /* A .relr.dyn section does not refer to a specific section. */ -+ printf (ngettext ("\ -+\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n", -+ "\ -+\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n", -+ nentries), -+ (unsigned int) elf_ndxscn (scn), -+ elf_strptr (ebl->elf, shstrndx, shdr->sh_name), -+ shdr->sh_offset, -+ nentries); -+ -+ if (class == ELFCLASS32) -+ { -+ uint32_t base = 0; -+ for (int cnt = 0; cnt < nentries; ++cnt) -+ { -+ Elf32_Word *words = data->d_buf; -+ Elf32_Word entry = words[cnt]; -+ -+ /* Just the raw entries? */ -+ if (print_unresolved_addresses) -+ printf (" %#010" PRIx32 "%s\n", entry, -+ (entry & 1) == 0 ? " *" : ""); -+ else -+ { -+ /* A real address, also sets base. */ -+ if ((entry & 1) == 0) -+ { -+ printf (" "); -+ print_dwarf_addr (mod, 4, entry, entry); -+ printf (" *\n"); -+ -+ base = entry + 4; -+ } -+ else -+ { -+ /* Untangle address from base and bits. */ -+ uint32_t addr; -+ for (addr = base; (entry >>= 1) != 0; addr += 4) -+ if ((entry & 1) != 0) -+ { -+ printf (" "); -+ print_dwarf_addr (mod, 4, addr, addr); -+ printf ("\n"); -+ } -+ base += 4 * (4 * 8 - 1); -+ } -+ } -+ } -+ } -+ else -+ { -+ uint64_t base = 0; -+ for (int cnt = 0; cnt < nentries; ++cnt) -+ { -+ Elf64_Xword *xwords = data->d_buf; -+ Elf64_Xword entry = xwords[cnt]; -+ -+ /* Just the raw entries? */ -+ if (print_unresolved_addresses) -+ printf (" %#018" PRIx64 "%s\n", entry, -+ (entry & 1) == 0 ? " *" : ""); -+ else -+ { -+ /* A real address, also sets base. */ -+ if ((entry & 1) == 0) -+ { -+ printf (" "); -+ print_dwarf_addr (mod, 8, entry, entry); -+ printf (" *\n"); -+ -+ base = entry + 8; -+ } -+ else -+ { -+ /* Untangle address from base and bits. */ -+ uint64_t addr; -+ for (addr = base; (entry >>= 1) != 0; addr += 8) -+ if ((entry & 1) != 0) -+ { -+ printf (" "); -+ print_dwarf_addr (mod, 8, addr, addr); -+ printf ("\n"); -+ } -+ base += 8 * (8 * 8 - 1); -+ } -+ } -+ } -+ } -+} - - /* Print the program header. Return true if a symtab is printed, - false otherwise. */ -@@ -4107,7 +4224,7 @@ get_debug_elf_data (Dwarf *dbg, Ebl *ebl, int idx, Elf_Scn *scn) - return elf_getdata (scn, NULL); - } - --void -+static void - print_dwarf_addr (Dwfl_Module *dwflmod, - int address_size, Dwarf_Addr address, Dwarf_Addr raw) - { diff --git a/elfutils.spec b/elfutils.spec index c164f1d..4511694 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils -Version: 0.189 -%global baserelease 6 +Version: 0.190 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -74,16 +74,6 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch -# testsuite: Avoid C99 compatibility issues in run-native-test.sh -Patch2: elfutils-0.189-c99-compat.patch -# elfcompress: Don't compress if section already compressed unless forced -Patch3: elfutils-0.189-elfcompress.patch -# libelf: Replace list of elf_getdata_rawchunk results with a tree -Patch4: elfutils-0.189-elf_getdata_rawchunk.patch -# PR29696: Removed secondary fd close in cache config causing race condition -Patch5: elfutils-0.189-debuginfod_config_cache-double-close.patch -# Bug 28495 - Add support for SHT_RELR to eu-readelf -Patch6: elfutils-0.189-relr.patch %description Elfutils is a collection of utilities, including stack (to show @@ -358,6 +348,7 @@ fi %{_bindir}/eu-ranlib %{_bindir}/eu-readelf %{_bindir}/eu-size +%{_bindir}/eu-srcfiles %{_bindir}/eu-stack %{_bindir}/eu-strings %{_bindir}/eu-strip @@ -428,7 +419,6 @@ fi %{_sysusersdir}/elfutils-debuginfod.conf %endif %{_mandir}/man8/debuginfod*.8* -%{_mandir}/man7/debuginfod*.7* %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod @@ -452,6 +442,17 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Nov 3 2023 Mark Wielaard - 0.190-1 +- Upgrade to upstream elfutils 0.190 +- Add eu-srcfiles +- Drop upstreamed patches + elfutils-0.189-relr.patch + elfutils-0.189-debuginfod_config_cache-double-close.patch + elfutils-0.189-elf_getdata_rawchunk.patch + elfutils-0.189-elfcompress.patch + elfutils-0.189-c99-compat.patch +- Only package debuginfod-client-config.7 manpage for debuginfod-client + * Thu Aug 24 2023 Mark Wielaard - 0.189-6 - Update elfutils-0.189-relr.patch diff --git a/sources b/sources index 57e5577..658148d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.189.tar.bz2) = 93a877e34db93e5498581d0ab2d702b08c0d87e4cafd9cec9d6636dfa85a168095c305c11583a5b0fb79374dd93bc8d0e9ce6016e6c172764bcea12861605b71 +SHA512 (elfutils-0.190.tar.bz2) = 9c4f5328097e028286c42f29e39dc3d80914b656cdfbbe05b639e91bc787ae8ae64dd4d69a6e317ce30c01648ded10281b86a51e718295f4c589df1225a48102 From 4bf94eb436332188bd7c35a11ab414aba97697bf Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sat, 4 Nov 2023 01:10:11 +0100 Subject: [PATCH 47/80] 0.190-2 - Update Fedora license tags to spdx license tags --- elfutils.spec | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index 4511694..1c8c52f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,10 +1,10 @@ Name: elfutils Version: 0.190 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ -License: GPLv3+ and (GPLv2+ or LGPLv3+) and GFDL +License: GPL-3.0-or-later and (GPL-2.0-or-later or LGPL-3.0-or-later) and GFDL-1.3-no-invariants-or-later Source: %{?source_url}%{name}-%{version}.tar.bz2 Source1: elfutils-debuginfod.sysusers Summary: A collection of utilities and DSOs to handle ELF files and DWARF data @@ -85,7 +85,7 @@ elfcompress (to compress or decompress ELF sections). %package libs Summary: Libraries to handle compiled objects -License: GPLv2+ or LGPLv3+ +License: GPL-2.0-or-later or LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libs%{depsuffix} = %{version}-%{release} %endif @@ -108,7 +108,7 @@ libraries. %package devel Summary: Development libraries to handle compiled objects -License: GPLv2+ or LGPLv3+ +License: GPL-2.0-or-later or LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-devel%{depsuffix} = %{version}-%{release} %endif @@ -129,7 +129,7 @@ assembler interface. %package libelf Summary: Library to read and write ELF files -License: GPLv2+ or LGPLv3+ +License: GPL-2.0-or-later or LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libelf%{depsuffix} = %{version}-%{release} %endif @@ -143,7 +143,7 @@ elfutils package use it also to generate new ELF files. %package libelf-devel Summary: Development support for libelf -License: GPLv2+ or LGPLv3+ +License: GPL-2.0-or-later or LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libelf-devel%{depsuffix} = %{version}-%{release} %endif @@ -160,7 +160,7 @@ different sections of an ELF file. %if %{provide_yama_scope} %package default-yama-scope Summary: Default yama attach scope sysctl setting -License: GPLv2+ or LGPLv3+ +License: GPL-2.0-or-later or LGPL-3.0-or-later Provides: default-yama-scope BuildArch: noarch # For the sysctl_apply macro we need systemd as build requires. @@ -194,7 +194,7 @@ profiling) of processes. %package debuginfod-client Summary: Library and command line client for build-id HTTP ELF/DWARF server -License: GPLv3+ and (GPLv2+ or LGPLv3+) +License: GPL-3.0-or-later and (GPL-2.0-or-later or LGPL-3.0-or-later) %if 0%{!?_isa:1} Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} %endif @@ -204,7 +204,7 @@ Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} %package debuginfod-client-devel Summary: Libraries and headers to build debuginfod client applications -License: GPLv2+ or LGPLv3+ +License: GPL-2.0-or-later or LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release} %endif @@ -212,7 +212,7 @@ Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} %package debuginfod Summary: HTTP ELF/DWARF file server addressed by build-id -License: GPLv3+ +License: GPL-3.0-or-later Requires: elfutils-libs%{depsuffix} = %{version}-%{release} Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} @@ -442,6 +442,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Nov 3 2023 Mark Wielaard - 0.190-2 +- Update Fedora license tags to spdx license tags + * Fri Nov 3 2023 Mark Wielaard - 0.190-1 - Upgrade to upstream elfutils 0.190 - Add eu-srcfiles From 67d56959ad806464964319ccd939124357fc95e6 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Fri, 24 Nov 2023 14:27:53 -0500 Subject: [PATCH 48/80] 0.190-3 - Add elfutils-0.190-fix-core-noncontig.patch --- elfutils-0.190-fix-core-noncontig.patch | 329 ++++++++++++++++++++++++ elfutils.spec | 10 +- testcore-noncontig.bz2 | Bin 0 -> 54684 bytes 3 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.190-fix-core-noncontig.patch create mode 100644 testcore-noncontig.bz2 diff --git a/elfutils-0.190-fix-core-noncontig.patch b/elfutils-0.190-fix-core-noncontig.patch new file mode 100644 index 0000000..e8a7f07 --- /dev/null +++ b/elfutils-0.190-fix-core-noncontig.patch @@ -0,0 +1,329 @@ +From 0fba72fed595f77ca19a57553096ce3cc81cf8f3 Mon Sep 17 00:00:00 2001 +From: Aaron Merey +Date: Fri, 24 Nov 2023 14:52:38 -0500 +Subject: [PATCH] libdwfl: Correctly handle corefile non-contiguous segments + +It is possible for segments of different shared libaries to be interleaved +in memory such that the segments of one library are located in between +non-contiguous segments of another library. + +For example, this can be seen with firefox on RHEL 7.9 where multiple +shared libraries could be mapped in between ld-2.17.so segments: + + [...] + 7f0972082000-7f09720a4000 00000000 139264 /usr/lib64/ld-2.17.so + 7f09720a4000-7f09720a5000 00000000 4096 /memfd:mozilla-ipc (deleted) + 7f09720a5000-7f09720a7000 00000000 8192 /memfd:mozilla-ipc (deleted) + 7f09720a7000-7f09720a9000 00000000 8192 /memfd:mozilla-ipc (deleted) + 7f0972134000-7f0972136000 00000000 8192 /usr/lib64/firefox/libmozwayland.so + 7f0972136000-7f0972137000 00002000 4096 /usr/lib64/firefox/libmozwayland.so + 7f0972137000-7f0972138000 00003000 4096 /usr/lib64/firefox/libmozwayland.so + 7f0972138000-7f0972139000 00003000 4096 /usr/lib64/firefox/libmozwayland.so + 7f097213a000-7f0972147000 00000000 53248 /usr/lib64/firefox/libmozsqlite3.so + 7f0972147000-7f097221e000 0000d000 880640 /usr/lib64/firefox/libmozsqlite3.so + 7f097221e000-7f0972248000 000e4000 172032 /usr/lib64/firefox/libmozsqlite3.so + 7f0972248000-7f0972249000 0010e000 4096 /usr/lib64/firefox/libmozsqlite3.so + 7f0972249000-7f097224c000 0010e000 12288 /usr/lib64/firefox/libmozsqlite3.so + 7f097224c000-7f0972250000 00111000 16384 /usr/lib64/firefox/libmozsqlite3.so + 7f0972250000-7f0972253000 00000000 12288 /usr/lib64/firefox/liblgpllibs.so + [...] + 7f09722a3000-7f09722a4000 00021000 4096 /usr/lib64/ld-2.17.so + 7f09722a4000-7f09722a5000 00022000 4096 /usr/lib64/ld-2.17.so + +dwfl_segment_report_module did not account for the possibility of +interleaving non-contiguous segments, resulting in premature closure +of modules as well as failing to report modules. + +Fix this by removing segment skipping in dwfl_segment_report_module. +When dwfl_segment_report_module reported a module, it would return +the index of the segment immediately following the end address of the +current module. Since there's a chance that other modules might fall +within this address range, dwfl_segment_report_module instead returns +the index of the next segment. + +This patch also fixes premature module closure that can occur in +dwfl_segment_report_module when interleaving non-contiguous segments +are found. Previously modules with start and end addresses that overlap +with the current segment would have their build-ids compared with the +current segment's build-id. If there was a mismatch, that module would +be closed. Avoid closing modules in this case when mismatching build-ids +correspond to distinct modules. + +https://sourceware.org/bugzilla/show_bug.cgi?id=30975 + +Signed-off-by: Aaron Merey +--- + libdwfl/dwfl_segment_report_module.c | 37 ++++++++---- + tests/Makefile.am | 8 ++- + tests/dwfl-core-noncontig.c | 82 +++++++++++++++++++++++++++ + tests/run-dwfl-core-noncontig.sh | 63 ++++++++++++++++++++ + 4 files changed, 177 insertions(+), 14 deletions(-) + create mode 100644 tests/dwfl-core-noncontig.c + create mode 100755 tests/run-dwfl-core-noncontig.sh + +diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c +index 3ef62a7d..09ee37b3 100644 +--- a/libdwfl/dwfl_segment_report_module.c ++++ b/libdwfl/dwfl_segment_report_module.c +@@ -737,17 +737,34 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, + && invalid_elf (module->elf, module->disk_file_has_build_id, + &build_id)) + { +- elf_end (module->elf); +- close (module->fd); +- module->elf = NULL; +- module->fd = -1; ++ /* If MODULE's build-id doesn't match the disk file's ++ build-id, close ELF only if MODULE and ELF refer to ++ different builds of files with the same name. This ++ prevents premature closure of the correct ELF in cases ++ where segments of a module are non-contiguous in memory. */ ++ if (name != NULL && module->name[0] != '\0' ++ && strcmp (basename (module->name), basename (name)) == 0) ++ { ++ elf_end (module->elf); ++ close (module->fd); ++ module->elf = NULL; ++ module->fd = -1; ++ } + } +- if (module->elf != NULL) ++ else if (module->elf != NULL) + { +- /* Ignore this found module if it would conflict in address +- space with any already existing module of DWFL. */ ++ /* This module has already been reported. */ + skip_this_module = true; + } ++ else ++ { ++ /* Only report this module if we haven't already done so. */ ++ for (Dwfl_Module *mod = dwfl->modulelist; mod != NULL; ++ mod = mod->next) ++ if (mod->low_addr == module_start ++ && mod->high_addr == module_end) ++ skip_this_module = true; ++ } + } + if (skip_this_module) + goto out; +@@ -781,10 +798,6 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, + } + } + +- /* Our return value now says to skip the segments contained +- within the module. */ +- ndx = addr_segndx (dwfl, segment, module_end, true); +- + /* Examine its .dynamic section to get more interesting details. + If it has DT_SONAME, we'll use that as the module name. + If it has a DT_DEBUG, then it's actually a PIE rather than a DSO. +@@ -929,6 +942,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, + ndx = -1; + goto out; + } ++ else ++ ndx++; + + /* We have reported the module. Now let the caller decide whether we + should read the whole thing in right now. */ +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 7fb8efb1..9f8f7698 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -42,7 +42,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ + dwfl-bug-addr-overflow arls dwfl-bug-fd-leak \ + dwfl-addr-sect dwfl-bug-report early-offscn \ + dwfl-bug-getmodules dwarf-getmacros dwarf-ranges addrcfi \ +- dwarfcfi \ ++ dwfl-core-noncontig dwarfcfi \ + test-flag-nobits dwarf-getstring rerequest_tag \ + alldts typeiter typeiter2 low_high_pc \ + test-elf_cntl_gelf_getshdr dwflsyms dwfllines \ +@@ -212,7 +212,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ + $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ + run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ + run-readelf-dw-form-indirect.sh run-strip-largealign.sh \ +- run-readelf-Dd.sh ++ run-readelf-Dd.sh run-dwfl-core-noncontig.sh + + if !BIARCH + export ELFUTILS_DISABLE_BIARCH = 1 +@@ -632,7 +632,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ + run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ + testfile_nvidia_linemap.bz2 \ + testfile-largealign.o.bz2 run-strip-largealign.sh \ +- run-funcretval++11.sh ++ run-funcretval++11.sh \ ++ run-dwfl-core-noncontig.sh testcore-noncontig.bz2 + + + if USE_VALGRIND +@@ -738,6 +739,7 @@ dwfl_bug_fd_leak_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) + dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) + dwfl_bug_getmodules_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) + dwfl_addr_sect_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) $(argp_LDADD) ++dwfl_core_noncontig_LDADD = $(libdw) $(libelf) + dwarf_getmacros_LDADD = $(libdw) + dwarf_ranges_LDADD = $(libdw) + dwarf_getstring_LDADD = $(libdw) +diff --git a/tests/dwfl-core-noncontig.c b/tests/dwfl-core-noncontig.c +new file mode 100644 +index 00000000..04558e28 +--- /dev/null ++++ b/tests/dwfl-core-noncontig.c +@@ -0,0 +1,82 @@ ++/* Test program for dwfl_getmodules bug. ++ Copyright (C) 2008 Red Hat, Inc. ++ This file is part of elfutils. ++ ++ This file is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++#include ++#include ++#include ++#include ++#include ELFUTILS_HEADER(dwfl) ++#include ELFUTILS_HEADER(elf) ++ ++static const Dwfl_Callbacks cb = ++{ ++ NULL, ++ NULL, ++ NULL, ++ NULL, ++}; ++ ++int ++main (int argc, char **argv) ++{ ++ assert (argc == 2); ++ ++ Dwfl *dwfl = dwfl_begin (&cb); ++ ++ int fd = open (argv[1], O_RDONLY); ++ assert (fd != -1); ++ ++ Elf *elf = elf_begin (fd, ELF_C_READ, NULL); ++ (void) dwfl_core_file_report (dwfl, elf, argv[0]); ++ ++ /* testcore-noncontig contains a shared library mapped between ++ non-contiguous segments of another shared library: ++ ++ [...] ++ 7f14e458c000-7f14e45ae000 00000000 139264 /usr/lib64/ld-2.17.so (1) ++ 7f14e4795000-7f14e4798000 00000000 12288 /usr/lib64/firefox/liblgpllibs.so (2) ++ 7f14e4798000-7f14e479d000 00003000 20480 /usr/lib64/firefox/liblgpllibs.so ++ 7f14e479d000-7f14e479f000 00008000 8192 /usr/lib64/firefox/liblgpllibs.so ++ 7f14e479f000-7f14e47a0000 00009000 4096 /usr/lib64/firefox/liblgpllibs.so ++ 7f14e47a0000-7f14e47a1000 0000a000 4096 /usr/lib64/firefox/liblgpllibs.so (3) ++ 7f14e47ad000-7f14e47ae000 00021000 4096 /usr/lib64/ld-2.17.so (4) ++ 7f14e47ae000-7f14e47af000 00022000 4096 /usr/lib64/ld-2.17.so */ ++ ++ /* First segment of the non-contiguous module (1). */ ++ int seg = dwfl_addrsegment (dwfl, 0x7f14e458c000, NULL); ++ assert (seg == 32); ++ ++ /* First segment of the module within the non-contiguous module's address ++ range (2). */ ++ seg = dwfl_addrsegment (dwfl, 0x7f14e4795000, NULL); ++ assert (seg == 33); ++ ++ /* Last segment of the module within the non-contiguous module's ++ address range (3). */ ++ seg = dwfl_addrsegment (dwfl, 0x7f14e47a0000, NULL); ++ assert (seg == 37); ++ ++ /* First segment of non-contiguous module following its address space ++ gap (4). */ ++ seg = dwfl_addrsegment (dwfl, 0x7f14e47ad000, NULL); ++ assert (seg == 40); ++ ++ dwfl_end (dwfl); ++ elf_end (elf); ++ ++ return 0; ++} +diff --git a/tests/run-dwfl-core-noncontig.sh b/tests/run-dwfl-core-noncontig.sh +new file mode 100755 +index 00000000..1245b67f +--- /dev/null ++++ b/tests/run-dwfl-core-noncontig.sh +@@ -0,0 +1,63 @@ ++#! /bin/sh ++# Copyright (C) 2023 Red Hat, Inc. ++# This file is part of elfutils. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# elfutils is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++. $srcdir/test-subr.sh ++ ++# Test whether libdwfl can handle corefiles containing non-contiguous ++# segments where multiple modules are contained within the address ++# space of some other module. ++ ++# testcore-noncontig was generated from the following program with ++# systemd-coredump on RHEL 7.9 Workstation, kernel ++# 3.10.0-1160.105.1.el7.x86_64. liblgpllibs.so was packaged with ++# firefox-115.4.0-1.el7_9.x86_64.rpm. ++ ++# #include ++# #include ++# ++# int main () { ++# dlopen ("/usr/lib64/firefox/liblgpllibs.so", RTLD_GLOBAL | RTLD_NOW); ++# sleep (60); ++# return 0; ++# } ++# ++# gcc -ldl -o test test.c ++ ++tempfiles out ++testfiles testcore-noncontig ++ ++testrun ${abs_builddir}/dwfl-core-noncontig testcore-noncontig ++ ++# Remove parts of the output that could change depending on which ++# libraries are locally installed. ++testrun ${abs_top_builddir}/src/unstrip -n --core testcore-noncontig \ ++ | sed 's/+/ /g' | cut -d " " -f1,3 | sort > out ++ ++testrun_compare cat out <<\EOF ++0x400000 3a1748a544b40a38b3be3d2d13ffa34a2a5a71c0@0x400284 ++0x7f14e357e000 edf51350c7f71496149d064aa8b1441f786df88a@0x7f14e357e1d8 ++0x7f14e3794000 7615604eaf4a068dfae5085444d15c0dee93dfbd@0x7f14e37941d8 ++0x7f14e3a96000 09cfb171310110bc7ea9f4476c9fa044d85baff4@0x7f14e3a96210 ++0x7f14e3d9e000 e10cc8f2b932fc3daeda22f8dac5ebb969524e5b@0x7f14e3d9e248 ++0x7f14e3fba000 fc4fa58e47a5acc137eadb7689bce4357c557a96@0x7f14e3fba280 ++0x7f14e4388000 7f2e9cb0769d7e57bd669b485a74b537b63a57c4@0x7f14e43881d8 ++0x7f14e458c000 62c449974331341bb08dcce3859560a22af1e172@0x7f14e458c1d8 ++0x7f14e4795000 175efdcef445455872a86a6fbee7567ca16a513e@0x7f14e4795248 ++0x7ffcfe59f000 80d79b32785868a2dc10047b39a80d1daec8923d@0x7ffcfe59f328 ++EOF ++ ++exit 0 +-- +2.41.0 + diff --git a/elfutils.spec b/elfutils.spec index 1c8c52f..34ded73 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,12 +1,13 @@ Name: elfutils Version: 0.190 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ License: GPL-3.0-or-later and (GPL-2.0-or-later or LGPL-3.0-or-later) and GFDL-1.3-no-invariants-or-later Source: %{?source_url}%{name}-%{version}.tar.bz2 Source1: elfutils-debuginfod.sysusers +Source2: testcore-noncontig.bz2 Summary: A collection of utilities and DSOs to handle ELF files and DWARF data # Needed for isa specific Provides and Requires. @@ -74,6 +75,8 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# PR30975: Fix handling of corefiles with non-contiguous .so segments. +Patch2: elfutils-0.190-fix-core-noncontig.patch %description Elfutils is a collection of utilities, including stack (to show @@ -258,6 +261,8 @@ autoreconf -f -v -i # are executable. find . -name \*.sh ! -perm -0100 -print | xargs chmod +x +cp %{SOURCE2} tests + %build # Remove -Wall from default flags. The makefiles enable enough warnings # themselves, and they use -Werror. Appending -Wall defeats the cases where @@ -442,6 +447,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Nov 24 2023 Aaron Merey - 0.190-3 +- Add elfutils-0.190-fix-core-noncontig.patch + * Fri Nov 3 2023 Mark Wielaard - 0.190-2 - Update Fedora license tags to spdx license tags diff --git a/testcore-noncontig.bz2 b/testcore-noncontig.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..514ad010e00499b9a75a98800aa20ec61596d491 GIT binary patch literal 54684 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 literal 0 HcmV?d00001 From 0aecb034b0e5b4a81685b09aeb9d81a70b1a5ecc Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Fri, 24 Nov 2023 14:27:53 -0500 Subject: [PATCH 49/80] 0.190-4 - Add elfutils-0.190-remove-ET_REL-unstrip-test.patch --- ...ils-0.190-remove-ET_REL-unstrip-test.patch | 32 +++++++++++++++++++ elfutils.spec | 8 ++++- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.190-remove-ET_REL-unstrip-test.patch diff --git a/elfutils-0.190-remove-ET_REL-unstrip-test.patch b/elfutils-0.190-remove-ET_REL-unstrip-test.patch new file mode 100644 index 0000000..0f5599e --- /dev/null +++ b/elfutils-0.190-remove-ET_REL-unstrip-test.patch @@ -0,0 +1,32 @@ +From 010cacd89b847659b3c666ac963269b06a8c5058 Mon Sep 17 00:00:00 2001 +From: Aaron Merey +Date: Tue, 28 Nov 2023 16:41:35 -0500 +Subject: [PATCH] tests/run-strip-strmerge.sh: remove ET_REL unstrip and + elflint tests + +These tests can fail on i386. Remove them for now since stripping and +unstripping an ET_REL file is obscure. + +--- + tests/run-strip-strmerge.sh | 6 ------ + 1 file changed, 6 deletions(-) + +diff --git a/tests/run-strip-strmerge.sh b/tests/run-strip-strmerge.sh +index aa9c1eb..67543eb 100755 +--- a/tests/run-strip-strmerge.sh ++++ b/tests/run-strip-strmerge.sh +@@ -69,11 +69,5 @@ echo elflint $stripped + testrun ${abs_top_builddir}/src/elflint --gnu $stripped + echo elflint $debugfile + testrun ${abs_top_builddir}/src/elflint --gnu -d $debugfile +-echo unstrip +-testrun ${abs_top_builddir}/src/unstrip -o $remerged $stripped $debugfile +-echo elflint $remerged +-testrun ${abs_top_builddir}/src/elflint --gnu $remerged +-echo elfcmp +-testrun ${abs_top_builddir}/src/elfcmp $merged $remerged + + exit 0 +-- +2.41.0 + diff --git a/elfutils.spec b/elfutils.spec index 34ded73..359a9c3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.190 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -77,6 +77,8 @@ BuildRequires: gettext-devel Patch1: elfutils-0.186-fdo-swap.patch # PR30975: Fix handling of corefiles with non-contiguous .so segments. Patch2: elfutils-0.190-fix-core-noncontig.patch +# Remove obscure tests that can fail on i386. +Patch3: elfutils-0.190-remove-ET_REL-unstrip-test.patch %description Elfutils is a collection of utilities, including stack (to show @@ -447,6 +449,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog + +* Tue Nov 28 2023 Aaron Merey - 0.190-4 +- Add elfutils-0.190-remove-ET_REL-unstrip-test.patch + * Fri Nov 24 2023 Aaron Merey - 0.190-3 - Add elfutils-0.190-fix-core-noncontig.patch From ea7ed5a10d9f03173b7a36080da79b357b591a33 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 19 Jan 2024 17:59:24 +0000 Subject: [PATCH 50/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 359a9c3..a40edd3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.190 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -449,6 +449,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Jan 19 2024 Fedora Release Engineering - 0.190-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Tue Nov 28 2023 Aaron Merey - 0.190-4 - Add elfutils-0.190-remove-ET_REL-unstrip-test.patch From 30c0ab2617e9af730633270fd864c496e6e0ca71 Mon Sep 17 00:00:00 2001 From: Yaakov Selkowitz Date: Fri, 19 Jan 2024 14:25:33 -0500 Subject: [PATCH 51/80] Fix build with GCC 14 https://sourceware.org/git/?p=elfutils.git;h=ae580d48278b9924da7503886b37be34378e1b04 --- elfutils-0.190-gcc-14.patch | 33 +++++++++++++++++++++++++++++++++ elfutils.spec | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 elfutils-0.190-gcc-14.patch diff --git a/elfutils-0.190-gcc-14.patch b/elfutils-0.190-gcc-14.patch new file mode 100644 index 0000000..f81bcc8 --- /dev/null +++ b/elfutils-0.190-gcc-14.patch @@ -0,0 +1,33 @@ +From: Sergei Trofimovich +Date: Thu, 21 Dec 2023 09:23:30 +0000 (+0000) +Subject: tests: fix build against upcoming `gcc-14` (`-Werror=calloc-transposed-args`) +X-Git-Url: https://sourceware.org/git/?p=elfutils.git;a=commitdiff_plain;h=ae580d48278b9924da7503886b37be34378e1b04;hp=a2194f6b305bf0d0b9dd49dccd0a5c21994c8eea + +tests: fix build against upcoming `gcc-14` (`-Werror=calloc-transposed-args`) + +`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It +detected minor infelicity in `calloc()` API usage in `elfutils`: + + elfstrmerge.c: In function 'main': + elfstrmerge.c:450:32: error: + 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] + 450 | newscnbufs = calloc (sizeof (void *), newshnums); + | ^~~~ + elfstrmerge.c:450:32: note: earlier argument should specify number of elements, later size of each element + +Signed-off-by: Sergei Trofimovich +--- + +diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c +index 56350bb91..4eb58bbb5 100644 +--- a/tests/elfstrmerge.c ++++ b/tests/elfstrmerge.c +@@ -447,7 +447,7 @@ main (int argc, char **argv) + } + + newshnums = shdrnum - 1; +- newscnbufs = calloc (sizeof (void *), newshnums); ++ newscnbufs = calloc (newshnums, sizeof (void *)); + if (newscnbufs == NULL) + fail_errno ("Couldn't allocate memory for new section buffers", NULL); + diff --git a/elfutils.spec b/elfutils.spec index a40edd3..d890ae6 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -79,6 +79,8 @@ Patch1: elfutils-0.186-fdo-swap.patch Patch2: elfutils-0.190-fix-core-noncontig.patch # Remove obscure tests that can fail on i386. Patch3: elfutils-0.190-remove-ET_REL-unstrip-test.patch +# tests: fix build against gcc-14 (-Werror=calloc-transposed-args) +Patch4: elfutils-0.190-gcc-14.patch %description Elfutils is a collection of utilities, including stack (to show From fc141358f549682689833673f78e857733bdafdc Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 24 Jan 2024 10:15:47 +0000 Subject: [PATCH 52/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index d890ae6..ee877fd 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.190 -%global baserelease 5 +%global baserelease 6 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -451,6 +451,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Jan 24 2024 Fedora Release Engineering - 0.190-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + * Fri Jan 19 2024 Fedora Release Engineering - 0.190-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild From 0f01156de51d8b00e2112bb9a8e0b6febce17de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20Such=C3=BD?= Date: Thu, 29 Feb 2024 06:14:25 +0000 Subject: [PATCH 53/80] Correct SPDX license formula The operator has to be upper case according to the standard. --- elfutils.spec | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index ee877fd..dd18ebe 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -92,7 +92,7 @@ elfcompress (to compress or decompress ELF sections). %package libs Summary: Libraries to handle compiled objects -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libs%{depsuffix} = %{version}-%{release} %endif @@ -115,7 +115,7 @@ libraries. %package devel Summary: Development libraries to handle compiled objects -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-devel%{depsuffix} = %{version}-%{release} %endif @@ -136,7 +136,7 @@ assembler interface. %package libelf Summary: Library to read and write ELF files -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libelf%{depsuffix} = %{version}-%{release} %endif @@ -150,7 +150,7 @@ elfutils package use it also to generate new ELF files. %package libelf-devel Summary: Development support for libelf -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libelf-devel%{depsuffix} = %{version}-%{release} %endif @@ -167,7 +167,7 @@ different sections of an ELF file. %if %{provide_yama_scope} %package default-yama-scope Summary: Default yama attach scope sysctl setting -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later Provides: default-yama-scope BuildArch: noarch # For the sysctl_apply macro we need systemd as build requires. @@ -201,7 +201,7 @@ profiling) of processes. %package debuginfod-client Summary: Library and command line client for build-id HTTP ELF/DWARF server -License: GPL-3.0-or-later and (GPL-2.0-or-later or LGPL-3.0-or-later) +License: GPL-3.0-or-later AND (GPL-2.0-or-later OR LGPL-3.0-or-later) %if 0%{!?_isa:1} Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} %endif @@ -211,7 +211,7 @@ Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} %package debuginfod-client-devel Summary: Libraries and headers to build debuginfod client applications -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release} %endif From 4124e4f1f2e1037ac8aa3d31f025af21030d0885 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 4 Mar 2024 11:30:42 -0500 Subject: [PATCH 54/80] 0.191-1 - Upgrade to upstream elfutils 0.191 - Drop upstreamed patches elfutils-0.190-fix-core-noncontig.patch elfutils-0.190-gcc-14.patch elfutils-0.190-remove-ET_REL-unstrip-test.patch - Drop testcore-noncontig.bz2 --- .gitignore | 1 + elfutils-0.190-fix-core-noncontig.patch | 329 ------------------ elfutils-0.190-gcc-14.patch | 33 -- ...ils-0.190-remove-ET_REL-unstrip-test.patch | 32 -- elfutils.spec | 22 +- sources | 2 +- testcore-noncontig.bz2 | Bin 54684 -> 0 bytes 7 files changed, 12 insertions(+), 407 deletions(-) delete mode 100644 elfutils-0.190-fix-core-noncontig.patch delete mode 100644 elfutils-0.190-gcc-14.patch delete mode 100644 elfutils-0.190-remove-ET_REL-unstrip-test.patch delete mode 100644 testcore-noncontig.bz2 diff --git a/.gitignore b/.gitignore index eb85273..fa7036f 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,4 @@ /elfutils-0.188.tar.bz2 /elfutils-0.189.tar.bz2 /elfutils-0.190.tar.bz2 +/elfutils-0.191.tar.bz2 diff --git a/elfutils-0.190-fix-core-noncontig.patch b/elfutils-0.190-fix-core-noncontig.patch deleted file mode 100644 index e8a7f07..0000000 --- a/elfutils-0.190-fix-core-noncontig.patch +++ /dev/null @@ -1,329 +0,0 @@ -From 0fba72fed595f77ca19a57553096ce3cc81cf8f3 Mon Sep 17 00:00:00 2001 -From: Aaron Merey -Date: Fri, 24 Nov 2023 14:52:38 -0500 -Subject: [PATCH] libdwfl: Correctly handle corefile non-contiguous segments - -It is possible for segments of different shared libaries to be interleaved -in memory such that the segments of one library are located in between -non-contiguous segments of another library. - -For example, this can be seen with firefox on RHEL 7.9 where multiple -shared libraries could be mapped in between ld-2.17.so segments: - - [...] - 7f0972082000-7f09720a4000 00000000 139264 /usr/lib64/ld-2.17.so - 7f09720a4000-7f09720a5000 00000000 4096 /memfd:mozilla-ipc (deleted) - 7f09720a5000-7f09720a7000 00000000 8192 /memfd:mozilla-ipc (deleted) - 7f09720a7000-7f09720a9000 00000000 8192 /memfd:mozilla-ipc (deleted) - 7f0972134000-7f0972136000 00000000 8192 /usr/lib64/firefox/libmozwayland.so - 7f0972136000-7f0972137000 00002000 4096 /usr/lib64/firefox/libmozwayland.so - 7f0972137000-7f0972138000 00003000 4096 /usr/lib64/firefox/libmozwayland.so - 7f0972138000-7f0972139000 00003000 4096 /usr/lib64/firefox/libmozwayland.so - 7f097213a000-7f0972147000 00000000 53248 /usr/lib64/firefox/libmozsqlite3.so - 7f0972147000-7f097221e000 0000d000 880640 /usr/lib64/firefox/libmozsqlite3.so - 7f097221e000-7f0972248000 000e4000 172032 /usr/lib64/firefox/libmozsqlite3.so - 7f0972248000-7f0972249000 0010e000 4096 /usr/lib64/firefox/libmozsqlite3.so - 7f0972249000-7f097224c000 0010e000 12288 /usr/lib64/firefox/libmozsqlite3.so - 7f097224c000-7f0972250000 00111000 16384 /usr/lib64/firefox/libmozsqlite3.so - 7f0972250000-7f0972253000 00000000 12288 /usr/lib64/firefox/liblgpllibs.so - [...] - 7f09722a3000-7f09722a4000 00021000 4096 /usr/lib64/ld-2.17.so - 7f09722a4000-7f09722a5000 00022000 4096 /usr/lib64/ld-2.17.so - -dwfl_segment_report_module did not account for the possibility of -interleaving non-contiguous segments, resulting in premature closure -of modules as well as failing to report modules. - -Fix this by removing segment skipping in dwfl_segment_report_module. -When dwfl_segment_report_module reported a module, it would return -the index of the segment immediately following the end address of the -current module. Since there's a chance that other modules might fall -within this address range, dwfl_segment_report_module instead returns -the index of the next segment. - -This patch also fixes premature module closure that can occur in -dwfl_segment_report_module when interleaving non-contiguous segments -are found. Previously modules with start and end addresses that overlap -with the current segment would have their build-ids compared with the -current segment's build-id. If there was a mismatch, that module would -be closed. Avoid closing modules in this case when mismatching build-ids -correspond to distinct modules. - -https://sourceware.org/bugzilla/show_bug.cgi?id=30975 - -Signed-off-by: Aaron Merey ---- - libdwfl/dwfl_segment_report_module.c | 37 ++++++++---- - tests/Makefile.am | 8 ++- - tests/dwfl-core-noncontig.c | 82 +++++++++++++++++++++++++++ - tests/run-dwfl-core-noncontig.sh | 63 ++++++++++++++++++++ - 4 files changed, 177 insertions(+), 14 deletions(-) - create mode 100644 tests/dwfl-core-noncontig.c - create mode 100755 tests/run-dwfl-core-noncontig.sh - -diff --git a/libdwfl/dwfl_segment_report_module.c b/libdwfl/dwfl_segment_report_module.c -index 3ef62a7d..09ee37b3 100644 ---- a/libdwfl/dwfl_segment_report_module.c -+++ b/libdwfl/dwfl_segment_report_module.c -@@ -737,17 +737,34 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, - && invalid_elf (module->elf, module->disk_file_has_build_id, - &build_id)) - { -- elf_end (module->elf); -- close (module->fd); -- module->elf = NULL; -- module->fd = -1; -+ /* If MODULE's build-id doesn't match the disk file's -+ build-id, close ELF only if MODULE and ELF refer to -+ different builds of files with the same name. This -+ prevents premature closure of the correct ELF in cases -+ where segments of a module are non-contiguous in memory. */ -+ if (name != NULL && module->name[0] != '\0' -+ && strcmp (basename (module->name), basename (name)) == 0) -+ { -+ elf_end (module->elf); -+ close (module->fd); -+ module->elf = NULL; -+ module->fd = -1; -+ } - } -- if (module->elf != NULL) -+ else if (module->elf != NULL) - { -- /* Ignore this found module if it would conflict in address -- space with any already existing module of DWFL. */ -+ /* This module has already been reported. */ - skip_this_module = true; - } -+ else -+ { -+ /* Only report this module if we haven't already done so. */ -+ for (Dwfl_Module *mod = dwfl->modulelist; mod != NULL; -+ mod = mod->next) -+ if (mod->low_addr == module_start -+ && mod->high_addr == module_end) -+ skip_this_module = true; -+ } - } - if (skip_this_module) - goto out; -@@ -781,10 +798,6 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, - } - } - -- /* Our return value now says to skip the segments contained -- within the module. */ -- ndx = addr_segndx (dwfl, segment, module_end, true); -- - /* Examine its .dynamic section to get more interesting details. - If it has DT_SONAME, we'll use that as the module name. - If it has a DT_DEBUG, then it's actually a PIE rather than a DSO. -@@ -929,6 +942,8 @@ dwfl_segment_report_module (Dwfl *dwfl, int ndx, const char *name, - ndx = -1; - goto out; - } -+ else -+ ndx++; - - /* We have reported the module. Now let the caller decide whether we - should read the whole thing in right now. */ -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 7fb8efb1..9f8f7698 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -42,7 +42,7 @@ check_PROGRAMS = arextract arsymtest newfile saridx scnnames sectiondump \ - dwfl-bug-addr-overflow arls dwfl-bug-fd-leak \ - dwfl-addr-sect dwfl-bug-report early-offscn \ - dwfl-bug-getmodules dwarf-getmacros dwarf-ranges addrcfi \ -- dwarfcfi \ -+ dwfl-core-noncontig dwarfcfi \ - test-flag-nobits dwarf-getstring rerequest_tag \ - alldts typeiter typeiter2 low_high_pc \ - test-elf_cntl_gelf_getshdr dwflsyms dwfllines \ -@@ -212,7 +212,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ - $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ - run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ - run-readelf-dw-form-indirect.sh run-strip-largealign.sh \ -- run-readelf-Dd.sh -+ run-readelf-Dd.sh run-dwfl-core-noncontig.sh - - if !BIARCH - export ELFUTILS_DISABLE_BIARCH = 1 -@@ -632,7 +632,8 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ - run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ - testfile_nvidia_linemap.bz2 \ - testfile-largealign.o.bz2 run-strip-largealign.sh \ -- run-funcretval++11.sh -+ run-funcretval++11.sh \ -+ run-dwfl-core-noncontig.sh testcore-noncontig.bz2 - - - if USE_VALGRIND -@@ -738,6 +739,7 @@ dwfl_bug_fd_leak_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) - dwfl_bug_report_LDADD = $(libdw) $(libebl) $(libelf) - dwfl_bug_getmodules_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) - dwfl_addr_sect_LDADD = $(libeu) $(libdw) $(libebl) $(libelf) $(argp_LDADD) -+dwfl_core_noncontig_LDADD = $(libdw) $(libelf) - dwarf_getmacros_LDADD = $(libdw) - dwarf_ranges_LDADD = $(libdw) - dwarf_getstring_LDADD = $(libdw) -diff --git a/tests/dwfl-core-noncontig.c b/tests/dwfl-core-noncontig.c -new file mode 100644 -index 00000000..04558e28 ---- /dev/null -+++ b/tests/dwfl-core-noncontig.c -@@ -0,0 +1,82 @@ -+/* Test program for dwfl_getmodules bug. -+ Copyright (C) 2008 Red Hat, Inc. -+ This file is part of elfutils. -+ -+ This file is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ elfutils is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see . */ -+ -+#include -+#include -+#include -+#include -+#include ELFUTILS_HEADER(dwfl) -+#include ELFUTILS_HEADER(elf) -+ -+static const Dwfl_Callbacks cb = -+{ -+ NULL, -+ NULL, -+ NULL, -+ NULL, -+}; -+ -+int -+main (int argc, char **argv) -+{ -+ assert (argc == 2); -+ -+ Dwfl *dwfl = dwfl_begin (&cb); -+ -+ int fd = open (argv[1], O_RDONLY); -+ assert (fd != -1); -+ -+ Elf *elf = elf_begin (fd, ELF_C_READ, NULL); -+ (void) dwfl_core_file_report (dwfl, elf, argv[0]); -+ -+ /* testcore-noncontig contains a shared library mapped between -+ non-contiguous segments of another shared library: -+ -+ [...] -+ 7f14e458c000-7f14e45ae000 00000000 139264 /usr/lib64/ld-2.17.so (1) -+ 7f14e4795000-7f14e4798000 00000000 12288 /usr/lib64/firefox/liblgpllibs.so (2) -+ 7f14e4798000-7f14e479d000 00003000 20480 /usr/lib64/firefox/liblgpllibs.so -+ 7f14e479d000-7f14e479f000 00008000 8192 /usr/lib64/firefox/liblgpllibs.so -+ 7f14e479f000-7f14e47a0000 00009000 4096 /usr/lib64/firefox/liblgpllibs.so -+ 7f14e47a0000-7f14e47a1000 0000a000 4096 /usr/lib64/firefox/liblgpllibs.so (3) -+ 7f14e47ad000-7f14e47ae000 00021000 4096 /usr/lib64/ld-2.17.so (4) -+ 7f14e47ae000-7f14e47af000 00022000 4096 /usr/lib64/ld-2.17.so */ -+ -+ /* First segment of the non-contiguous module (1). */ -+ int seg = dwfl_addrsegment (dwfl, 0x7f14e458c000, NULL); -+ assert (seg == 32); -+ -+ /* First segment of the module within the non-contiguous module's address -+ range (2). */ -+ seg = dwfl_addrsegment (dwfl, 0x7f14e4795000, NULL); -+ assert (seg == 33); -+ -+ /* Last segment of the module within the non-contiguous module's -+ address range (3). */ -+ seg = dwfl_addrsegment (dwfl, 0x7f14e47a0000, NULL); -+ assert (seg == 37); -+ -+ /* First segment of non-contiguous module following its address space -+ gap (4). */ -+ seg = dwfl_addrsegment (dwfl, 0x7f14e47ad000, NULL); -+ assert (seg == 40); -+ -+ dwfl_end (dwfl); -+ elf_end (elf); -+ -+ return 0; -+} -diff --git a/tests/run-dwfl-core-noncontig.sh b/tests/run-dwfl-core-noncontig.sh -new file mode 100755 -index 00000000..1245b67f ---- /dev/null -+++ b/tests/run-dwfl-core-noncontig.sh -@@ -0,0 +1,63 @@ -+#! /bin/sh -+# Copyright (C) 2023 Red Hat, Inc. -+# This file is part of elfutils. -+# -+# This file is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# elfutils is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. $srcdir/test-subr.sh -+ -+# Test whether libdwfl can handle corefiles containing non-contiguous -+# segments where multiple modules are contained within the address -+# space of some other module. -+ -+# testcore-noncontig was generated from the following program with -+# systemd-coredump on RHEL 7.9 Workstation, kernel -+# 3.10.0-1160.105.1.el7.x86_64. liblgpllibs.so was packaged with -+# firefox-115.4.0-1.el7_9.x86_64.rpm. -+ -+# #include -+# #include -+# -+# int main () { -+# dlopen ("/usr/lib64/firefox/liblgpllibs.so", RTLD_GLOBAL | RTLD_NOW); -+# sleep (60); -+# return 0; -+# } -+# -+# gcc -ldl -o test test.c -+ -+tempfiles out -+testfiles testcore-noncontig -+ -+testrun ${abs_builddir}/dwfl-core-noncontig testcore-noncontig -+ -+# Remove parts of the output that could change depending on which -+# libraries are locally installed. -+testrun ${abs_top_builddir}/src/unstrip -n --core testcore-noncontig \ -+ | sed 's/+/ /g' | cut -d " " -f1,3 | sort > out -+ -+testrun_compare cat out <<\EOF -+0x400000 3a1748a544b40a38b3be3d2d13ffa34a2a5a71c0@0x400284 -+0x7f14e357e000 edf51350c7f71496149d064aa8b1441f786df88a@0x7f14e357e1d8 -+0x7f14e3794000 7615604eaf4a068dfae5085444d15c0dee93dfbd@0x7f14e37941d8 -+0x7f14e3a96000 09cfb171310110bc7ea9f4476c9fa044d85baff4@0x7f14e3a96210 -+0x7f14e3d9e000 e10cc8f2b932fc3daeda22f8dac5ebb969524e5b@0x7f14e3d9e248 -+0x7f14e3fba000 fc4fa58e47a5acc137eadb7689bce4357c557a96@0x7f14e3fba280 -+0x7f14e4388000 7f2e9cb0769d7e57bd669b485a74b537b63a57c4@0x7f14e43881d8 -+0x7f14e458c000 62c449974331341bb08dcce3859560a22af1e172@0x7f14e458c1d8 -+0x7f14e4795000 175efdcef445455872a86a6fbee7567ca16a513e@0x7f14e4795248 -+0x7ffcfe59f000 80d79b32785868a2dc10047b39a80d1daec8923d@0x7ffcfe59f328 -+EOF -+ -+exit 0 --- -2.41.0 - diff --git a/elfutils-0.190-gcc-14.patch b/elfutils-0.190-gcc-14.patch deleted file mode 100644 index f81bcc8..0000000 --- a/elfutils-0.190-gcc-14.patch +++ /dev/null @@ -1,33 +0,0 @@ -From: Sergei Trofimovich -Date: Thu, 21 Dec 2023 09:23:30 +0000 (+0000) -Subject: tests: fix build against upcoming `gcc-14` (`-Werror=calloc-transposed-args`) -X-Git-Url: https://sourceware.org/git/?p=elfutils.git;a=commitdiff_plain;h=ae580d48278b9924da7503886b37be34378e1b04;hp=a2194f6b305bf0d0b9dd49dccd0a5c21994c8eea - -tests: fix build against upcoming `gcc-14` (`-Werror=calloc-transposed-args`) - -`gcc-14` added a new `-Wcalloc-transposed-args` warning recently. It -detected minor infelicity in `calloc()` API usage in `elfutils`: - - elfstrmerge.c: In function 'main': - elfstrmerge.c:450:32: error: - 'calloc' sizes specified with 'sizeof' in the earlier argument and not in the later argument [-Werror=calloc-transposed-args] - 450 | newscnbufs = calloc (sizeof (void *), newshnums); - | ^~~~ - elfstrmerge.c:450:32: note: earlier argument should specify number of elements, later size of each element - -Signed-off-by: Sergei Trofimovich ---- - -diff --git a/tests/elfstrmerge.c b/tests/elfstrmerge.c -index 56350bb91..4eb58bbb5 100644 ---- a/tests/elfstrmerge.c -+++ b/tests/elfstrmerge.c -@@ -447,7 +447,7 @@ main (int argc, char **argv) - } - - newshnums = shdrnum - 1; -- newscnbufs = calloc (sizeof (void *), newshnums); -+ newscnbufs = calloc (newshnums, sizeof (void *)); - if (newscnbufs == NULL) - fail_errno ("Couldn't allocate memory for new section buffers", NULL); - diff --git a/elfutils-0.190-remove-ET_REL-unstrip-test.patch b/elfutils-0.190-remove-ET_REL-unstrip-test.patch deleted file mode 100644 index 0f5599e..0000000 --- a/elfutils-0.190-remove-ET_REL-unstrip-test.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 010cacd89b847659b3c666ac963269b06a8c5058 Mon Sep 17 00:00:00 2001 -From: Aaron Merey -Date: Tue, 28 Nov 2023 16:41:35 -0500 -Subject: [PATCH] tests/run-strip-strmerge.sh: remove ET_REL unstrip and - elflint tests - -These tests can fail on i386. Remove them for now since stripping and -unstripping an ET_REL file is obscure. - ---- - tests/run-strip-strmerge.sh | 6 ------ - 1 file changed, 6 deletions(-) - -diff --git a/tests/run-strip-strmerge.sh b/tests/run-strip-strmerge.sh -index aa9c1eb..67543eb 100755 ---- a/tests/run-strip-strmerge.sh -+++ b/tests/run-strip-strmerge.sh -@@ -69,11 +69,5 @@ echo elflint $stripped - testrun ${abs_top_builddir}/src/elflint --gnu $stripped - echo elflint $debugfile - testrun ${abs_top_builddir}/src/elflint --gnu -d $debugfile --echo unstrip --testrun ${abs_top_builddir}/src/unstrip -o $remerged $stripped $debugfile --echo elflint $remerged --testrun ${abs_top_builddir}/src/elflint --gnu $remerged --echo elfcmp --testrun ${abs_top_builddir}/src/elfcmp $merged $remerged - - exit 0 --- -2.41.0 - diff --git a/elfutils.spec b/elfutils.spec index dd18ebe..8f2521a 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,13 +1,12 @@ Name: elfutils -Version: 0.190 -%global baserelease 6 +Version: 0.191 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ License: GPL-3.0-or-later and (GPL-2.0-or-later or LGPL-3.0-or-later) and GFDL-1.3-no-invariants-or-later Source: %{?source_url}%{name}-%{version}.tar.bz2 Source1: elfutils-debuginfod.sysusers -Source2: testcore-noncontig.bz2 Summary: A collection of utilities and DSOs to handle ELF files and DWARF data # Needed for isa specific Provides and Requires. @@ -75,12 +74,6 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch -# PR30975: Fix handling of corefiles with non-contiguous .so segments. -Patch2: elfutils-0.190-fix-core-noncontig.patch -# Remove obscure tests that can fail on i386. -Patch3: elfutils-0.190-remove-ET_REL-unstrip-test.patch -# tests: fix build against gcc-14 (-Werror=calloc-transposed-args) -Patch4: elfutils-0.190-gcc-14.patch %description Elfutils is a collection of utilities, including stack (to show @@ -265,8 +258,6 @@ autoreconf -f -v -i # are executable. find . -name \*.sh ! -perm -0100 -print | xargs chmod +x -cp %{SOURCE2} tests - %build # Remove -Wall from default flags. The makefiles enable enough warnings # themselves, and they use -Werror. Appending -Wall defeats the cases where @@ -451,13 +442,20 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Mar 4 2024 Aaron Merey - 0.191-1 +- Upgrade to upstream elfutils 0.191 +- Drop upstreamed patches + elfutils-0.190-fix-core-noncontig.patch + elfutils-0.190-gcc-14.patch + elfutils-0.190-remove-ET_REL-unstrip-test.patch +- Drop testcore-noncontig.bz2 + * Wed Jan 24 2024 Fedora Release Engineering - 0.190-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Fri Jan 19 2024 Fedora Release Engineering - 0.190-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - * Tue Nov 28 2023 Aaron Merey - 0.190-4 - Add elfutils-0.190-remove-ET_REL-unstrip-test.patch diff --git a/sources b/sources index 658148d..6091854 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.190.tar.bz2) = 9c4f5328097e028286c42f29e39dc3d80914b656cdfbbe05b639e91bc787ae8ae64dd4d69a6e317ce30c01648ded10281b86a51e718295f4c589df1225a48102 +SHA512 (elfutils-0.191.tar.bz2) = e22d85f25317a79b36d370347e50284c9120c86f9830f08791b7b6a7b4ad89b9bf4c7c71129133b8d193a0edffb2a2c17987b7e48428b9670aff5ce918777e04 diff --git a/testcore-noncontig.bz2 b/testcore-noncontig.bz2 deleted file mode 100644 index 514ad010e00499b9a75a98800aa20ec61596d491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54684 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 From 3bb662da98c330c501f9fdb46315d0e57dc2b446 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 4 Mar 2024 15:40:54 -0500 Subject: [PATCH 55/80] Correct another SPDX license formula Operators must be capitalized. --- elfutils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 8f2521a..16152ac 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Version: 0.191 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ -License: GPL-3.0-or-later and (GPL-2.0-or-later or LGPL-3.0-or-later) and GFDL-1.3-no-invariants-or-later +License: GPL-3.0-or-later AND (GPL-2.0-or-later OR LGPL-3.0-or-later) AND GFDL-1.3-no-invariants-or-later Source: %{?source_url}%{name}-%{version}.tar.bz2 Source1: elfutils-debuginfod.sysusers Summary: A collection of utilities and DSOs to handle ELF files and DWARF data From 3bd65efc371c4dd6d6a096d9976baae86a8e5ece Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 4 Mar 2024 15:57:00 -0500 Subject: [PATCH 56/80] Increment baserelease --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 16152ac..3011716 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,6 @@ Name: elfutils Version: 0.191 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -442,6 +442,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Mar 4 2024 Aaron Merey - 0.191-2 +- Update SPDX license. + * Mon Mar 4 2024 Aaron Merey - 0.191-1 - Upgrade to upstream elfutils 0.191 - Drop upstreamed patches From f5ae9e95e9e2cc69cafeb5c14654af08eb90ae71 Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Wed, 28 Feb 2024 20:20:54 -0600 Subject: [PATCH 57/80] Add feature flag to reenable elfutils-libelf-devel-static and elfutils-devel-static This reverts commit ec548c1605c3f672001b4eae3f52a1c20bcdbbbb. Signed-off-by: Michel Lind --- elfutils.spec | 53 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index 3011716..5e64ed3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -1,6 +1,10 @@ +# Rebuild --with static to enable static subpackages +# This is *not* supported by elfutils maintainers +%bcond_with static + Name: elfutils Version: 0.191 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -119,7 +123,6 @@ Recommends: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release} %else Requires: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release} %endif -Obsoletes: elfutils-devel-static < 0.180-5 %description devel The elfutils-devel package contains the libraries to create @@ -127,6 +130,21 @@ applications for handling compiled objects. libdw provides access to the DWARF debugging information. libasm provides a programmable assembler interface. +%if %{with static} +%package devel-static +Summary: Static archives to handle compiled objects +License: GPL-2.0-or-later or LGPL-3.0-or-later +%if 0%{!?_isa:1} +Provides: elfutils-devel-static%{depsuffix} = %{version}-%{release} +%endif +Requires: elfutils-devel%{depsuffix} = %{version}-%{release} +Requires: elfutils-libelf-devel-static%{depsuffix} = %{version}-%{release} + +%description devel-static +The elfutils-devel-static package contains the static archives +with the code to handle compiled objects. +%endif + %package libelf Summary: Library to read and write ELF files License: GPL-2.0-or-later OR LGPL-3.0-or-later @@ -149,7 +167,6 @@ Provides: elfutils-libelf-devel%{depsuffix} = %{version}-%{release} %endif Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Obsoletes: libelf-devel <= 0.8.2-2 -Obsoletes: elfutils-libelf-devel-static < 0.180-5 %description libelf-devel The elfutils-libelf-devel package contains the libraries to create @@ -157,6 +174,20 @@ applications for handling compiled objects. libelf allows you to access the internals of the ELF object file format, so you can see the different sections of an ELF file. +%if %{with static} +%package libelf-devel-static +Summary: Static archive of libelf +License: GPL-2.0-or-later or LGPL-3.0-or-later +%if 0%{!?_isa:1} +Provides: elfutils-libelf-devel-static%{depsuffix} = %{version}-%{release} +%endif +Requires: elfutils-libelf-devel%{depsuffix} = %{version}-%{release} + +%description libelf-devel-static +The elfutils-libelf-static package contains the static archive +for libelf. +%endif + %if %{provide_yama_scope} %package default-yama-scope Summary: Default yama attach scope sysctl setting @@ -284,8 +315,10 @@ trap '' EXIT %make_install chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* +%if %{without static} # We don't want the static libraries rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib{elf,dw,asm}.a +%endif %find_lang %{name} @@ -376,6 +409,12 @@ fi %{_libdir}/libdw.so %{_libdir}/pkgconfig/libdw.pc +%if %{with static} +%files devel-static +%{_libdir}/libdw.a +%{_libdir}/libasm.a +%endif + %files -f %{name}.lang libelf %license COPYING-GPLV2 COPYING-LGPLV3 %{_libdir}/libelf-%{version}.so @@ -389,6 +428,11 @@ fi %{_libdir}/pkgconfig/libelf.pc %{_mandir}/man3/elf_*.3* +%if %{with static} +%files libelf-devel-static +%{_libdir}/libelf.a +%endif + %if %{provide_yama_scope} %files default-yama-scope %{_sysctldir}/10-default-yama-scope.conf @@ -442,6 +486,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Mar 11 2024 Michel Lind - 0.191-3 +- Add feature flag for reenabling elfutils-libelf-devel-static and elfutils-devel-static + * Mon Mar 4 2024 Aaron Merey - 0.191-2 - Update SPDX license. From b3d29104fe5a92803216d2b2207abc0512930ace Mon Sep 17 00:00:00 2001 From: Michel Lind Date: Fri, 15 Mar 2024 11:10:43 -0700 Subject: [PATCH 58/80] Make elfutils-libelf-static subpackage (not built by default) pull in libzstd-static Signed-off-by: Michel Lind --- elfutils.spec | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 5e64ed3..5a2677d 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -182,6 +182,7 @@ License: GPL-2.0-or-later or LGPL-3.0-or-later Provides: elfutils-libelf-devel-static%{depsuffix} = %{version}-%{release} %endif Requires: elfutils-libelf-devel%{depsuffix} = %{version}-%{release} +Requires: libzstd-static%{depsuffix} %description libelf-devel-static The elfutils-libelf-static package contains the static archive @@ -486,8 +487,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog -* Mon Mar 11 2024 Michel Lind - 0.191-3 +* Fri Mar 15 2024 Michel Lind - 0.191-3 - Add feature flag for reenabling elfutils-libelf-devel-static and elfutils-devel-static +- Add dependency on libzstd-static for elfutils-libelf-devel-static * Mon Mar 4 2024 Aaron Merey - 0.191-2 - Update SPDX license. From abfa37e359a2d0a86cb02ac8d78f6b04417f7224 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 20 Mar 2024 16:47:31 +0100 Subject: [PATCH 59/80] 0.191-4 - Add elfutils-0.190-riscv-flatten.patch --- elfutils-0.190-riscv-flatten.patch | 359 +++++++++++++++++++++++++++++ elfutils.spec | 7 +- 2 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.190-riscv-flatten.patch diff --git a/elfutils-0.190-riscv-flatten.patch b/elfutils-0.190-riscv-flatten.patch new file mode 100644 index 0000000..a96d339 --- /dev/null +++ b/elfutils-0.190-riscv-flatten.patch @@ -0,0 +1,359 @@ +From e39336df6588c3f9853be7d02819aee262ba2121 Mon Sep 17 00:00:00 2001 +From: Mark Wielaard +Date: Tue, 19 Mar 2024 22:43:10 +0000 +Subject: [PATCH] riscv: Partial implementation of flatten_aggregate + +dwfl_module_return_value_location would fail on riscv for functions +which return a (small) struct. This patch implements the simplest +cases of flatten_aggregate in backends/riscv_retval.c. It just handles +structs containing one or two members of the same base type which fit +completely or in pieces in one or two general or floating point +registers. + +It also adds a specific test case run-funcretval-struct.sh containing +small structs of ints, longs, floats and doubles. All these testscases +now work for riscv. There is already a slightly more extensive +testcase for this in tests/run-funcretval.sh but that only has a +testcase for aarch64. + + * backends/riscv_retval.c (flatten_aggregate_arg): Implement + for the simple cases where we have a struct with one or two + members of the same base type. + (pass_by_flattened_arg): Likewise. Call either + pass_in_gpr_lp64 or pass_in_fpr_lp64d. + (riscv_return_value_location_lp64ifd): Call + flatten_aggregate_arg including size. + * tests/Makefile.am (TESTS): Add run-funcretval-struct.sh + and run-funcretval-struct-native.sh. + (check_PROGRAMS): Add funcretval_test_struct. + (funcretval_test_struct_SOURCES): New. + (EXTRA_DIST): Add run-funcretval-struct.sh, + funcretval_test_struct_riscv.bz2 and + run-funcretval-struct-native.sh. + * tests/funcretval_test_struct_riscv.bz2: New test binary. + * tests/run-funcretval-struct-native.sh: New test. + * tests/run-funcretval-struct.sh: Likewise. + +https://sourceware.org/bugzilla/show_bug.cgi?id=31142 + +Signed-off-by: Mark Wielaard +--- + backends/riscv_retval.c | 123 ++++++++++++++++++++++--- + tests/Makefile.am | 7 ++ + tests/funcretval_test_struct.c | 86 +++++++++++++++++ + tests/funcretval_test_struct_riscv.bz2 | Bin 0 -> 3821 bytes + tests/run-funcretval-struct-native.sh | 22 +++++ + tests/run-funcretval-struct.sh | 35 +++++++ + 6 files changed, 262 insertions(+), 11 deletions(-) + create mode 100644 tests/funcretval_test_struct.c + create mode 100755 tests/funcretval_test_struct_riscv.bz2 + create mode 100755 tests/run-funcretval-struct-native.sh + create mode 100755 tests/run-funcretval-struct.sh + +Fedora NOTE: Both the riscv specific test files weren't included + (funcretval_test_struct_riscv.bz2 and run-funcretval-struct.sh) + Because it contained a binary test. The native test is included + though. + +diff --git a/backends/riscv_retval.c b/backends/riscv_retval.c +index 0a1e02f81cd2..50c451a4ba32 100644 +--- a/backends/riscv_retval.c ++++ b/backends/riscv_retval.c +@@ -1,6 +1,7 @@ + /* Function return value location for Linux/RISC-V ABI. + Copyright (C) 2018 Sifive, Inc. + Copyright (C) 2013 Red Hat, Inc. ++ Copyright (C) 2024 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -105,23 +106,123 @@ pass_in_fpr_lp64d (const Dwarf_Op **locp, Dwarf_Word size) + return size <= 8 ? 1 : 4; + } + ++/* Checks if we can "flatten" the given type, Only handles the simple ++ cases where we have a struct with one or two the same base type ++ elements. */ + static int +-flatten_aggregate_arg (Dwarf_Die *typedie __attribute__ ((unused)), +- Dwarf_Die *arg0 __attribute__ ((unused)), +- Dwarf_Die *arg1 __attribute__ ((unused))) ++flatten_aggregate_arg (Dwarf_Die *typedie, ++ Dwarf_Word size, ++ Dwarf_Die *arg0, ++ Dwarf_Die *arg1) + { +- /* ??? */ ++ int tag0, tag1; ++ Dwarf_Die member; ++ Dwarf_Word encoding0, encoding1; ++ Dwarf_Attribute attr; ++ Dwarf_Word size0, size1; ++ ++ if (size < 8 || size > 16) ++ return 0; ++ ++ if (dwarf_child (typedie, arg0) != 0) ++ return 0; ++ ++ tag0 = dwarf_tag (arg0); ++ while (tag0 != -1 && tag0 != DW_TAG_member) ++ { ++ if (dwarf_siblingof (arg0, arg0) != 0) ++ return 0; ++ tag0 = dwarf_tag (arg0); ++ } ++ ++ if (tag0 != DW_TAG_member) ++ return 0; ++ ++ /* Remember where we are. */ ++ member = *arg0; ++ ++ tag0 = dwarf_peeled_die_type (arg0, arg0); ++ if (tag0 != DW_TAG_base_type) ++ return 0; ++ ++ if (dwarf_attr_integrate (arg0, DW_AT_encoding, &attr) == NULL ++ || dwarf_formudata (&attr, &encoding0) != 0) ++ return 0; ++ ++ if (dwarf_bytesize_aux (arg0, &size0) != 0) ++ return 0; ++ ++ if (size == size0) ++ return 1; /* This one member is the whole size. */ ++ ++ if (size != 2 * size0) ++ return 0; /* We only handle two of the same. */ ++ ++ /* Look for another member with the same encoding. */ ++ if (dwarf_siblingof (&member, arg1) != 0) ++ return 0; ++ ++ tag1 = dwarf_tag (arg1); ++ while (tag1 != -1 && tag1 != DW_TAG_member) ++ { ++ if (dwarf_siblingof (arg1, arg1) != 0) ++ return 0; ++ tag1 = dwarf_tag (arg1); ++ } ++ ++ if (tag1 != DW_TAG_member) ++ return 0; ++ ++ tag1 = dwarf_peeled_die_type (arg1, arg1); ++ if (tag1 != DW_TAG_base_type) ++ return 0; /* We can only handle two equal base types for now. */ ++ ++ if (dwarf_attr_integrate (arg1, DW_AT_encoding, &attr) == NULL ++ || dwarf_formudata (&attr, &encoding1) != 0 ++ || encoding0 != encoding1) ++ return 0; /* We can only handle two of the same for now. */ ++ ++ if (dwarf_bytesize_aux (arg1, &size1) != 0) ++ return 0; ++ ++ if (size0 != size1) ++ return 0; /* We can only handle two of the same for now. */ ++ + return 1; + } + ++/* arg0 and arg1 should be the peeled die types found by ++ flatten_aggregate_arg. */ + static int +-pass_by_flattened_arg (const Dwarf_Op **locp __attribute__ ((unused)), +- Dwarf_Word size __attribute__ ((unused)), +- Dwarf_Die *arg0 __attribute__ ((unused)), +- Dwarf_Die *arg1 __attribute__ ((unused))) ++pass_by_flattened_arg (const Dwarf_Op **locp, ++ Dwarf_Word size, ++ Dwarf_Die *arg0, ++ Dwarf_Die *arg1 __attribute__((unused))) + { +- /* ??? */ +- return -2; ++ /* For now we just assume arg0 and arg1 are the same type and ++ encoding. */ ++ Dwarf_Word encoding; ++ Dwarf_Attribute attr; ++ ++ if (dwarf_attr_integrate (arg0, DW_AT_encoding, &attr) == NULL ++ || dwarf_formudata (&attr, &encoding) != 0) ++ return -1; ++ ++ switch (encoding) ++ { ++ case DW_ATE_boolean: ++ case DW_ATE_signed: ++ case DW_ATE_unsigned: ++ case DW_ATE_unsigned_char: ++ case DW_ATE_signed_char: ++ return pass_in_gpr_lp64 (locp, size); ++ ++ case DW_ATE_float: ++ return pass_in_fpr_lp64d (locp, size); ++ ++ default: ++ return -1; ++ } + } + + int +@@ -158,7 +259,7 @@ riscv_return_value_location_lp64ifd (int fp, Dwarf_Die *functypedie, + provided the floating-point real is no more than FLEN bits wide and + the integer is no more than XLEN bits wide. */ + if (tag == DW_TAG_structure_type +- && flatten_aggregate_arg (&typedie, &arg0, &arg1)) ++ && flatten_aggregate_arg (&typedie, size, &arg0, &arg1)) + return pass_by_flattened_arg (locp, size, &arg0, &arg1); + /* Aggregates larger than 2*XLEN bits are passed by reference. */ + else if (size > 16) +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 9141074fe44c..9315ec3bbe4c 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -284,6 +285,10 @@ funcretval_test__11_SOURCES = funcretval_test++11.cxx + TESTS += run-funcretval++11.sh + endif + ++check_PROGRAMS += funcretval_test_struct ++funcretval_test_struct_SOURCES = funcretval_test_struct.c ++TESTS += run-funcretval-struct-native.sh ++ + EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ + run-ar-N.sh \ + run-show-die-info.sh run-get-files.sh run-get-lines.sh \ +@@ -635,6 +641,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ + testfile_nvidia_linemap.bz2 \ + testfile-largealign.o.bz2 run-strip-largealign.sh \ + run-funcretval++11.sh \ ++ run-funcretval-struct-native.sh \ + test-ar-duplicates.a.bz2 \ + run-dwfl-core-noncontig.sh testcore-noncontig.bz2 \ + testfile-dwarf5-line-clang.bz2 \ +diff --git a/tests/funcretval_test_struct.c b/tests/funcretval_test_struct.c +new file mode 100644 +index 000000000000..df94bde0a42d +--- /dev/null ++++ b/tests/funcretval_test_struct.c +@@ -0,0 +1,86 @@ ++/* Copyright (C) 2024 Mark J. Wielaard ++ This file is part of elfutils. ++ ++ This file is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 3 of the License, or ++ (at your option) any later version. ++ ++ elfutils is distributed in the hope that it will be useful, but ++ WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program. If not, see . */ ++ ++typedef struct ++ { ++ int q; ++ int r; ++ } div_t; ++ ++typedef struct ++ { ++ long q; ++ long r; ++ } ldiv_t; ++ ++typedef struct ++ { ++ float x; ++ float y; ++ } point_t; ++ ++typedef struct ++ { ++ double x; ++ double y; ++ } dpoint_t; ++ ++div_t __attribute__((__noinline__)) ++div (int n, int d) ++{ ++ div_t r; ++ r.q = n / d; ++ r.r = n % d; ++ return r; ++} ++ ++ldiv_t __attribute__((__noinline__)) ++ldiv (long n, long d) ++{ ++ ldiv_t r; ++ r.q = n / d; ++ r.r = n % d; ++ return r; ++} ++ ++point_t __attribute__((__noinline__)) ++mkpt (float x, float y) ++{ ++ point_t r; ++ r.x = x; ++ r.y = y; ++ return r; ++} ++ ++dpoint_t __attribute__((__noinline__)) ++dmkpt (double x, double y) ++{ ++ dpoint_t r; ++ r.x = x; ++ r.y = y; ++ return r; ++} ++ ++int ++main (void) ++{ ++ div_t d = div (3, 2); ++ ldiv_t ld = ldiv (3, 2); ++ point_t p = mkpt (3.0f, 1.0f); ++ dpoint_t dp = dmkpt (3.0d, 1.0d); ++ ++ return d.q - (int) p.y + ld.q - (int) dp.y; ++} + +diff --git a/tests/run-funcretval-struct-native.sh b/tests/run-funcretval-struct-native.sh +new file mode 100755 +index 000000000000..798edb3b61b3 +--- /dev/null ++++ b/tests/run-funcretval-struct-native.sh +@@ -0,0 +1,22 @@ ++#! /bin/sh ++# Copyright (C) 2024 Mark J. Wielaard ++# This file is part of elfutils. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# elfutils is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++. $srcdir/test-subr.sh ++ ++# Just run it, we don't know what the native representation is. ++# But it should at least work and not error out. ++testrun $abs_builddir/funcretval -e $abs_builddir/funcretval_test_struct +-- +2.44.0 + diff --git a/elfutils.spec b/elfutils.spec index 5a2677d..232864a 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.191 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -79,6 +79,8 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +Patch2: elfutils-0.190-riscv-flatten.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -487,6 +489,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Mar 20 2024 Mark Wielaard - 0.191-4 +- Add elfutils-0.190-riscv-flatten.patch + * Fri Mar 15 2024 Michel Lind - 0.191-3 - Add feature flag for reenabling elfutils-libelf-devel-static and elfutils-devel-static - Add dependency on libzstd-static for elfutils-libelf-devel-static From 42ca992686dc3781c9fbfe2523d3e44932a588e9 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Wed, 27 Mar 2024 15:48:18 +0100 Subject: [PATCH 60/80] 0.191-5 - Add elfutils-0.190-profile-empty-urls.patch --- elfutils-0.190-profile-empty-urls.patch | 96 +++++++++++++++++++++++++ elfutils.spec | 9 ++- 2 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.190-profile-empty-urls.patch diff --git a/elfutils-0.190-profile-empty-urls.patch b/elfutils-0.190-profile-empty-urls.patch new file mode 100644 index 0000000..dab4d9b --- /dev/null +++ b/elfutils-0.190-profile-empty-urls.patch @@ -0,0 +1,96 @@ +commit 0ba2e4aa9945019a8c6db95d27d142b660a63a79 +Author: Mark Wielaard +Date: Tue Mar 26 21:42:39 2024 +0100 + + config: Make sure profile.sh succeeds with set -e and set -o pipefail + + profile.sh might fail with set -o pipefail because: + + cat /dev/null "${prefix}/etc/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' + + might fail when there isn't an *.urls file the first command in the + pipe fails (the 2>/dev/null is there to hide that failure). + + This can be fixed by adding || : at the end. + + This works because : always succeeds and produces no outpur which is + what the script expects when the command would fail. + + Also add a new testcase that runs profile.sh with bout set -e + and set -o pipefail. + + * config/profile.sh.in: Add || : at end of pipe. + * tests/run-debuginfod-client-profile.sh: New test. + * tests/Makefile.am (TESTS): Add run-debuginfod-client-profile.sh. + (EXTRA_DIST): Likewise. + + https://sourceware.org/bugzilla/show_bug.cgi?id=31562 + + Signed-off-by: Mark Wielaard + +diff --git a/config/profile.sh.in b/config/profile.sh.in +index 3f4397dcb44d..84d3260ddcfc 100644 +--- a/config/profile.sh.in ++++ b/config/profile.sh.in +@@ -6,7 +6,7 @@ + + if [ -z "$DEBUGINFOD_URLS" ]; then + prefix="@prefix@" +- DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ') ++ DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' || :) + [ -n "$DEBUGINFOD_URLS" ] && export DEBUGINFOD_URLS || unset DEBUGINFOD_URLS + unset prefix + fi +diff --git a/tests/Makefile.am b/tests/Makefile.am +index 9315ec3bbe4c..344d6706e16e 100644 +--- a/tests/Makefile.am ++++ b/tests/Makefile.am +@@ -209,6 +209,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ + run-disasm-riscv64.sh \ + run-pt_gnu_prop-tests.sh \ + run-getphdrnum.sh run-test-includes.sh \ ++ run-debuginfod-client-profile.sh \ + leb128 read_unaligned \ + msg_tst system-elf-libelf-test system-elf-gelf-test \ + $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ +@@ -636,6 +637,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ + testfile_pt_gnu_prop.bz2 testfile_pt_gnu_prop32.bz2 \ + run-getphdrnum.sh testfile-phdrs.elf.bz2 \ + run-test-includes.sh run-low_high_pc-dw-form-indirect.sh \ ++ run-debuginfod-client-profile.sh \ + run-readelf-dw-form-indirect.sh testfile-dw-form-indirect.bz2 \ + run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ + testfile_nvidia_linemap.bz2 \ +diff --git a/tests/run-debuginfod-client-profile.sh b/tests/run-debuginfod-client-profile.sh +new file mode 100755 +index 000000000000..7435ced83f15 +--- /dev/null ++++ b/tests/run-debuginfod-client-profile.sh +@@ -0,0 +1,27 @@ ++#! /bin/sh ++# Copyright (C) 2024 Mark J. Wielaard ++# This file is part of elfutils. ++# ++# This file is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; either version 3 of the License, or ++# (at your option) any later version. ++# ++# elfutils is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program. If not, see . ++ ++. $srcdir/test-subr.sh ++ ++# Make sure the profile.sh or profile.d/debuginfod.sh works even with ++# set -e (any command error is an error) and set -o pipefail (any error ++# in a pipe fails the whole pipe command). ++ ++set -e ++set -o pipefail ++ ++source ${abs_top_builddir}/config/profile.sh diff --git a/elfutils.spec b/elfutils.spec index 232864a..064396c 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.191 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -79,8 +79,12 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# https://sourceware.org/bugzilla/show_bug.cgi?id=31142 Patch2: elfutils-0.190-riscv-flatten.patch +# https://sourceware.org/bugzilla/show_bug.cgi?id=31562 +Patch3: elfutils-0.190-profile-empty-urls.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -489,6 +493,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Mar 27 2024 Mark Wielaard - 0.191-5 +- Add elfutils-0.190-profile-empty-urls.patch + * Wed Mar 20 2024 Mark Wielaard - 0.191-4 - Add elfutils-0.190-riscv-flatten.patch From 8201cf798437a5af2fc3dd68a92b34856526a7a4 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Fri, 19 Apr 2024 14:30:24 +0200 Subject: [PATCH 61/80] 0.191-6 - eu-srcfiles directly links to libdebuginfod.so add Requires eu-srcfiles directly links to libdebuginfod.so so explicitly Require elfutils-debuginfod-client not just Recommends. --- elfutils.spec | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index 064396c..f17762b 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.191 -%global baserelease 5 +%global baserelease 6 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -18,11 +18,7 @@ Summary: A collection of utilities and DSOs to handle ELF files and DWARF data Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-libs%{depsuffix} = %{version}-%{release} -%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20 -Recommends: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} -%else Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} -%endif BuildRequires: gcc # For libstdc++ demangle support @@ -493,6 +489,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Fri Apr 19 2024 Mark Wielaard - 0.191-6 +- eu-srcfiles directly links to libdebuginfod.so so explicitly + Require elfutils-debuginfod-client not just Recommends. + * Wed Mar 27 2024 Mark Wielaard - 0.191-5 - Add elfutils-0.190-profile-empty-urls.patch From 58b9fb4783130e27dae845f5f016d98e2a66e015 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 22 Apr 2024 16:40:49 -0400 Subject: [PATCH 62/80] 0.191-7 Capitalize SPDX booleans. --- elfutils.spec | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index f17762b..5ca5340 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.191 -%global baserelease 6 +%global baserelease 7 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -135,7 +135,7 @@ assembler interface. %if %{with static} %package devel-static Summary: Static archives to handle compiled objects -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-devel-static%{depsuffix} = %{version}-%{release} %endif @@ -179,7 +179,7 @@ different sections of an ELF file. %if %{with static} %package libelf-devel-static Summary: Static archive of libelf -License: GPL-2.0-or-later or LGPL-3.0-or-later +License: GPL-2.0-or-later OR LGPL-3.0-or-later %if 0%{!?_isa:1} Provides: elfutils-libelf-devel-static%{depsuffix} = %{version}-%{release} %endif @@ -489,6 +489,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Apr 22 2024 Aaron Merey - 0.191-7 +- Capitalize SPDX booleans. + * Fri Apr 19 2024 Mark Wielaard - 0.191-6 - eu-srcfiles directly links to libdebuginfod.so so explicitly Require elfutils-debuginfod-client not just Recommends. From 53f97b514f048d1b18749b0c36dda13a8448e422 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 17 Jul 2024 21:51:45 +0000 Subject: [PATCH 63/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 5ca5340..2fa3fe1 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.191 -%global baserelease 7 +%global baserelease 8 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -489,6 +489,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Jul 17 2024 Fedora Release Engineering - 0.191-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + * Mon Apr 22 2024 Aaron Merey - 0.191-7 - Capitalize SPDX booleans. From b91c7473d0956d36b5fcbbeaab620be5d5bfca3a Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 21 Oct 2024 16:24:21 -0400 Subject: [PATCH 64/80] 0.192-1 - Upgrade to upstream elfutils 0.192 - Drop upstreamed patches Add elfutils-0.190-profile-empty-urls.patch Add elfutils-0.190-riscv-flatten.patch --- .gitignore | 1 + elfutils-0.190-profile-empty-urls.patch | 96 ------- elfutils-0.190-riscv-flatten.patch | 359 ------------------------ elfutils.spec | 20 +- sources | 2 +- 5 files changed, 14 insertions(+), 464 deletions(-) delete mode 100644 elfutils-0.190-profile-empty-urls.patch delete mode 100644 elfutils-0.190-riscv-flatten.patch diff --git a/.gitignore b/.gitignore index fa7036f..abe9c2b 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ /elfutils-0.189.tar.bz2 /elfutils-0.190.tar.bz2 /elfutils-0.191.tar.bz2 +/elfutils-0.192.tar.bz2 diff --git a/elfutils-0.190-profile-empty-urls.patch b/elfutils-0.190-profile-empty-urls.patch deleted file mode 100644 index dab4d9b..0000000 --- a/elfutils-0.190-profile-empty-urls.patch +++ /dev/null @@ -1,96 +0,0 @@ -commit 0ba2e4aa9945019a8c6db95d27d142b660a63a79 -Author: Mark Wielaard -Date: Tue Mar 26 21:42:39 2024 +0100 - - config: Make sure profile.sh succeeds with set -e and set -o pipefail - - profile.sh might fail with set -o pipefail because: - - cat /dev/null "${prefix}/etc/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' - - might fail when there isn't an *.urls file the first command in the - pipe fails (the 2>/dev/null is there to hide that failure). - - This can be fixed by adding || : at the end. - - This works because : always succeeds and produces no outpur which is - what the script expects when the command would fail. - - Also add a new testcase that runs profile.sh with bout set -e - and set -o pipefail. - - * config/profile.sh.in: Add || : at end of pipe. - * tests/run-debuginfod-client-profile.sh: New test. - * tests/Makefile.am (TESTS): Add run-debuginfod-client-profile.sh. - (EXTRA_DIST): Likewise. - - https://sourceware.org/bugzilla/show_bug.cgi?id=31562 - - Signed-off-by: Mark Wielaard - -diff --git a/config/profile.sh.in b/config/profile.sh.in -index 3f4397dcb44d..84d3260ddcfc 100644 ---- a/config/profile.sh.in -+++ b/config/profile.sh.in -@@ -6,7 +6,7 @@ - - if [ -z "$DEBUGINFOD_URLS" ]; then - prefix="@prefix@" -- DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ') -+ DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' || :) - [ -n "$DEBUGINFOD_URLS" ] && export DEBUGINFOD_URLS || unset DEBUGINFOD_URLS - unset prefix - fi -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 9315ec3bbe4c..344d6706e16e 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -209,6 +209,7 @@ TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \ - run-disasm-riscv64.sh \ - run-pt_gnu_prop-tests.sh \ - run-getphdrnum.sh run-test-includes.sh \ -+ run-debuginfod-client-profile.sh \ - leb128 read_unaligned \ - msg_tst system-elf-libelf-test system-elf-gelf-test \ - $(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \ -@@ -636,6 +637,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ - testfile_pt_gnu_prop.bz2 testfile_pt_gnu_prop32.bz2 \ - run-getphdrnum.sh testfile-phdrs.elf.bz2 \ - run-test-includes.sh run-low_high_pc-dw-form-indirect.sh \ -+ run-debuginfod-client-profile.sh \ - run-readelf-dw-form-indirect.sh testfile-dw-form-indirect.bz2 \ - run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \ - testfile_nvidia_linemap.bz2 \ -diff --git a/tests/run-debuginfod-client-profile.sh b/tests/run-debuginfod-client-profile.sh -new file mode 100755 -index 000000000000..7435ced83f15 ---- /dev/null -+++ b/tests/run-debuginfod-client-profile.sh -@@ -0,0 +1,27 @@ -+#! /bin/sh -+# Copyright (C) 2024 Mark J. Wielaard -+# This file is part of elfutils. -+# -+# This file is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# elfutils is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. $srcdir/test-subr.sh -+ -+# Make sure the profile.sh or profile.d/debuginfod.sh works even with -+# set -e (any command error is an error) and set -o pipefail (any error -+# in a pipe fails the whole pipe command). -+ -+set -e -+set -o pipefail -+ -+source ${abs_top_builddir}/config/profile.sh diff --git a/elfutils-0.190-riscv-flatten.patch b/elfutils-0.190-riscv-flatten.patch deleted file mode 100644 index a96d339..0000000 --- a/elfutils-0.190-riscv-flatten.patch +++ /dev/null @@ -1,359 +0,0 @@ -From e39336df6588c3f9853be7d02819aee262ba2121 Mon Sep 17 00:00:00 2001 -From: Mark Wielaard -Date: Tue, 19 Mar 2024 22:43:10 +0000 -Subject: [PATCH] riscv: Partial implementation of flatten_aggregate - -dwfl_module_return_value_location would fail on riscv for functions -which return a (small) struct. This patch implements the simplest -cases of flatten_aggregate in backends/riscv_retval.c. It just handles -structs containing one or two members of the same base type which fit -completely or in pieces in one or two general or floating point -registers. - -It also adds a specific test case run-funcretval-struct.sh containing -small structs of ints, longs, floats and doubles. All these testscases -now work for riscv. There is already a slightly more extensive -testcase for this in tests/run-funcretval.sh but that only has a -testcase for aarch64. - - * backends/riscv_retval.c (flatten_aggregate_arg): Implement - for the simple cases where we have a struct with one or two - members of the same base type. - (pass_by_flattened_arg): Likewise. Call either - pass_in_gpr_lp64 or pass_in_fpr_lp64d. - (riscv_return_value_location_lp64ifd): Call - flatten_aggregate_arg including size. - * tests/Makefile.am (TESTS): Add run-funcretval-struct.sh - and run-funcretval-struct-native.sh. - (check_PROGRAMS): Add funcretval_test_struct. - (funcretval_test_struct_SOURCES): New. - (EXTRA_DIST): Add run-funcretval-struct.sh, - funcretval_test_struct_riscv.bz2 and - run-funcretval-struct-native.sh. - * tests/funcretval_test_struct_riscv.bz2: New test binary. - * tests/run-funcretval-struct-native.sh: New test. - * tests/run-funcretval-struct.sh: Likewise. - -https://sourceware.org/bugzilla/show_bug.cgi?id=31142 - -Signed-off-by: Mark Wielaard ---- - backends/riscv_retval.c | 123 ++++++++++++++++++++++--- - tests/Makefile.am | 7 ++ - tests/funcretval_test_struct.c | 86 +++++++++++++++++ - tests/funcretval_test_struct_riscv.bz2 | Bin 0 -> 3821 bytes - tests/run-funcretval-struct-native.sh | 22 +++++ - tests/run-funcretval-struct.sh | 35 +++++++ - 6 files changed, 262 insertions(+), 11 deletions(-) - create mode 100644 tests/funcretval_test_struct.c - create mode 100755 tests/funcretval_test_struct_riscv.bz2 - create mode 100755 tests/run-funcretval-struct-native.sh - create mode 100755 tests/run-funcretval-struct.sh - -Fedora NOTE: Both the riscv specific test files weren't included - (funcretval_test_struct_riscv.bz2 and run-funcretval-struct.sh) - Because it contained a binary test. The native test is included - though. - -diff --git a/backends/riscv_retval.c b/backends/riscv_retval.c -index 0a1e02f81cd2..50c451a4ba32 100644 ---- a/backends/riscv_retval.c -+++ b/backends/riscv_retval.c -@@ -1,6 +1,7 @@ - /* Function return value location for Linux/RISC-V ABI. - Copyright (C) 2018 Sifive, Inc. - Copyright (C) 2013 Red Hat, Inc. -+ Copyright (C) 2024 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -105,23 +106,123 @@ pass_in_fpr_lp64d (const Dwarf_Op **locp, Dwarf_Word size) - return size <= 8 ? 1 : 4; - } - -+/* Checks if we can "flatten" the given type, Only handles the simple -+ cases where we have a struct with one or two the same base type -+ elements. */ - static int --flatten_aggregate_arg (Dwarf_Die *typedie __attribute__ ((unused)), -- Dwarf_Die *arg0 __attribute__ ((unused)), -- Dwarf_Die *arg1 __attribute__ ((unused))) -+flatten_aggregate_arg (Dwarf_Die *typedie, -+ Dwarf_Word size, -+ Dwarf_Die *arg0, -+ Dwarf_Die *arg1) - { -- /* ??? */ -+ int tag0, tag1; -+ Dwarf_Die member; -+ Dwarf_Word encoding0, encoding1; -+ Dwarf_Attribute attr; -+ Dwarf_Word size0, size1; -+ -+ if (size < 8 || size > 16) -+ return 0; -+ -+ if (dwarf_child (typedie, arg0) != 0) -+ return 0; -+ -+ tag0 = dwarf_tag (arg0); -+ while (tag0 != -1 && tag0 != DW_TAG_member) -+ { -+ if (dwarf_siblingof (arg0, arg0) != 0) -+ return 0; -+ tag0 = dwarf_tag (arg0); -+ } -+ -+ if (tag0 != DW_TAG_member) -+ return 0; -+ -+ /* Remember where we are. */ -+ member = *arg0; -+ -+ tag0 = dwarf_peeled_die_type (arg0, arg0); -+ if (tag0 != DW_TAG_base_type) -+ return 0; -+ -+ if (dwarf_attr_integrate (arg0, DW_AT_encoding, &attr) == NULL -+ || dwarf_formudata (&attr, &encoding0) != 0) -+ return 0; -+ -+ if (dwarf_bytesize_aux (arg0, &size0) != 0) -+ return 0; -+ -+ if (size == size0) -+ return 1; /* This one member is the whole size. */ -+ -+ if (size != 2 * size0) -+ return 0; /* We only handle two of the same. */ -+ -+ /* Look for another member with the same encoding. */ -+ if (dwarf_siblingof (&member, arg1) != 0) -+ return 0; -+ -+ tag1 = dwarf_tag (arg1); -+ while (tag1 != -1 && tag1 != DW_TAG_member) -+ { -+ if (dwarf_siblingof (arg1, arg1) != 0) -+ return 0; -+ tag1 = dwarf_tag (arg1); -+ } -+ -+ if (tag1 != DW_TAG_member) -+ return 0; -+ -+ tag1 = dwarf_peeled_die_type (arg1, arg1); -+ if (tag1 != DW_TAG_base_type) -+ return 0; /* We can only handle two equal base types for now. */ -+ -+ if (dwarf_attr_integrate (arg1, DW_AT_encoding, &attr) == NULL -+ || dwarf_formudata (&attr, &encoding1) != 0 -+ || encoding0 != encoding1) -+ return 0; /* We can only handle two of the same for now. */ -+ -+ if (dwarf_bytesize_aux (arg1, &size1) != 0) -+ return 0; -+ -+ if (size0 != size1) -+ return 0; /* We can only handle two of the same for now. */ -+ - return 1; - } - -+/* arg0 and arg1 should be the peeled die types found by -+ flatten_aggregate_arg. */ - static int --pass_by_flattened_arg (const Dwarf_Op **locp __attribute__ ((unused)), -- Dwarf_Word size __attribute__ ((unused)), -- Dwarf_Die *arg0 __attribute__ ((unused)), -- Dwarf_Die *arg1 __attribute__ ((unused))) -+pass_by_flattened_arg (const Dwarf_Op **locp, -+ Dwarf_Word size, -+ Dwarf_Die *arg0, -+ Dwarf_Die *arg1 __attribute__((unused))) - { -- /* ??? */ -- return -2; -+ /* For now we just assume arg0 and arg1 are the same type and -+ encoding. */ -+ Dwarf_Word encoding; -+ Dwarf_Attribute attr; -+ -+ if (dwarf_attr_integrate (arg0, DW_AT_encoding, &attr) == NULL -+ || dwarf_formudata (&attr, &encoding) != 0) -+ return -1; -+ -+ switch (encoding) -+ { -+ case DW_ATE_boolean: -+ case DW_ATE_signed: -+ case DW_ATE_unsigned: -+ case DW_ATE_unsigned_char: -+ case DW_ATE_signed_char: -+ return pass_in_gpr_lp64 (locp, size); -+ -+ case DW_ATE_float: -+ return pass_in_fpr_lp64d (locp, size); -+ -+ default: -+ return -1; -+ } - } - - int -@@ -158,7 +259,7 @@ riscv_return_value_location_lp64ifd (int fp, Dwarf_Die *functypedie, - provided the floating-point real is no more than FLEN bits wide and - the integer is no more than XLEN bits wide. */ - if (tag == DW_TAG_structure_type -- && flatten_aggregate_arg (&typedie, &arg0, &arg1)) -+ && flatten_aggregate_arg (&typedie, size, &arg0, &arg1)) - return pass_by_flattened_arg (locp, size, &arg0, &arg1); - /* Aggregates larger than 2*XLEN bits are passed by reference. */ - else if (size > 16) -diff --git a/tests/Makefile.am b/tests/Makefile.am -index 9141074fe44c..9315ec3bbe4c 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -284,6 +285,10 @@ funcretval_test__11_SOURCES = funcretval_test++11.cxx - TESTS += run-funcretval++11.sh - endif - -+check_PROGRAMS += funcretval_test_struct -+funcretval_test_struct_SOURCES = funcretval_test_struct.c -+TESTS += run-funcretval-struct-native.sh -+ - EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ - run-ar-N.sh \ - run-show-die-info.sh run-get-files.sh run-get-lines.sh \ -@@ -635,6 +641,7 @@ EXTRA_DIST = run-arextract.sh run-arsymtest.sh run-ar.sh \ - testfile_nvidia_linemap.bz2 \ - testfile-largealign.o.bz2 run-strip-largealign.sh \ - run-funcretval++11.sh \ -+ run-funcretval-struct-native.sh \ - test-ar-duplicates.a.bz2 \ - run-dwfl-core-noncontig.sh testcore-noncontig.bz2 \ - testfile-dwarf5-line-clang.bz2 \ -diff --git a/tests/funcretval_test_struct.c b/tests/funcretval_test_struct.c -new file mode 100644 -index 000000000000..df94bde0a42d ---- /dev/null -+++ b/tests/funcretval_test_struct.c -@@ -0,0 +1,86 @@ -+/* Copyright (C) 2024 Mark J. Wielaard -+ This file is part of elfutils. -+ -+ This file is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ elfutils is distributed in the hope that it will be useful, but -+ WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program. If not, see . */ -+ -+typedef struct -+ { -+ int q; -+ int r; -+ } div_t; -+ -+typedef struct -+ { -+ long q; -+ long r; -+ } ldiv_t; -+ -+typedef struct -+ { -+ float x; -+ float y; -+ } point_t; -+ -+typedef struct -+ { -+ double x; -+ double y; -+ } dpoint_t; -+ -+div_t __attribute__((__noinline__)) -+div (int n, int d) -+{ -+ div_t r; -+ r.q = n / d; -+ r.r = n % d; -+ return r; -+} -+ -+ldiv_t __attribute__((__noinline__)) -+ldiv (long n, long d) -+{ -+ ldiv_t r; -+ r.q = n / d; -+ r.r = n % d; -+ return r; -+} -+ -+point_t __attribute__((__noinline__)) -+mkpt (float x, float y) -+{ -+ point_t r; -+ r.x = x; -+ r.y = y; -+ return r; -+} -+ -+dpoint_t __attribute__((__noinline__)) -+dmkpt (double x, double y) -+{ -+ dpoint_t r; -+ r.x = x; -+ r.y = y; -+ return r; -+} -+ -+int -+main (void) -+{ -+ div_t d = div (3, 2); -+ ldiv_t ld = ldiv (3, 2); -+ point_t p = mkpt (3.0f, 1.0f); -+ dpoint_t dp = dmkpt (3.0d, 1.0d); -+ -+ return d.q - (int) p.y + ld.q - (int) dp.y; -+} - -diff --git a/tests/run-funcretval-struct-native.sh b/tests/run-funcretval-struct-native.sh -new file mode 100755 -index 000000000000..798edb3b61b3 ---- /dev/null -+++ b/tests/run-funcretval-struct-native.sh -@@ -0,0 +1,22 @@ -+#! /bin/sh -+# Copyright (C) 2024 Mark J. Wielaard -+# This file is part of elfutils. -+# -+# This file is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 3 of the License, or -+# (at your option) any later version. -+# -+# elfutils is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+. $srcdir/test-subr.sh -+ -+# Just run it, we don't know what the native representation is. -+# But it should at least work and not error out. -+testrun $abs_builddir/funcretval -e $abs_builddir/funcretval_test_struct --- -2.44.0 - diff --git a/elfutils.spec b/elfutils.spec index 2fa3fe1..3789ce3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -3,8 +3,8 @@ %bcond_with static Name: elfutils -Version: 0.191 -%global baserelease 8 +Version: 0.192 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -75,12 +75,6 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch -# https://sourceware.org/bugzilla/show_bug.cgi?id=31142 -Patch2: elfutils-0.190-riscv-flatten.patch - -# https://sourceware.org/bugzilla/show_bug.cgi?id=31562 -Patch3: elfutils-0.190-profile-empty-urls.patch - %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -430,6 +424,9 @@ fi %{_libdir}/libelf.so %{_libdir}/pkgconfig/libelf.pc %{_mandir}/man3/elf_*.3* +%{_mandir}/man3/elf32_*.3* +%{_mandir}/man3/elf64_*.3* +%{_mandir}/man3/libelf.3* %if %{with static} %files libelf-devel-static @@ -450,6 +447,7 @@ fi %config(noreplace) %{_sysconfdir}/profile.d/* %if "%{?dist_debuginfod_url}" %config(noreplace) %{_sysconfdir}/debuginfod/* +%config(noreplace) %{_datadir}/fish/vendor_conf.d/* %endif %files debuginfod-client-devel @@ -489,6 +487,12 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Oct 21 2024 Aaron Merey - 0.192-1 +- Upgrade to upstream elfutils 0.192 +- Drop upstreamed patches + Add elfutils-0.190-profile-empty-urls.patch + Add elfutils-0.190-riscv-flatten.patch + * Wed Jul 17 2024 Fedora Release Engineering - 0.191-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild diff --git a/sources b/sources index 6091854..52f4826 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.191.tar.bz2) = e22d85f25317a79b36d370347e50284c9120c86f9830f08791b7b6a7b4ad89b9bf4c7c71129133b8d193a0edffb2a2c17987b7e48428b9670aff5ce918777e04 +SHA512 (elfutils-0.192.tar.bz2) = 543188f5f2cfe5bc7955a878416c5f252edff9926754e5de0c6c57b132f21d9285c9b29e41281e93baad11d4ae7efbbf93580c114579c182103565fe99bd3909 From 309360885cf9e6e427ef338ed53ee5fd192d1de5 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 21 Oct 2024 17:46:30 -0400 Subject: [PATCH 65/80] Add BuildRequires for json-c New libdebuginfod dependency. --- elfutils.spec | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 3789ce3..e8c6055 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -39,6 +39,8 @@ BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33 BuildRequires: pkgconfig(libcurl) >= 7.29.0 BuildRequires: pkgconfig(sqlite3) >= 3.7.17 BuildRequires: pkgconfig(libarchive) >= 3.1.2 +# For debugindod metadata query +BuildRequires: pkgconfig(json-c) >= 0.11 # For tests need to bunzip2 test files. BuildRequires: bzip2 @@ -487,6 +489,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Oct 21 2024 Aaron Merey - 0.192-2 +- Add BuildRequires for json-c + * Mon Oct 21 2024 Aaron Merey - 0.192-1 - Upgrade to upstream elfutils 0.192 - Drop upstreamed patches From e50c1eff305b5651b04abc6aa8a7529de0814b49 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Tue, 22 Oct 2024 14:03:15 -0400 Subject: [PATCH 66/80] 0.192-3 Add elfutils-0.192-libelf-static.patch --- elfutils-0.192-libelf-static.patch | 36 ++++++++++++++++++++++++++++++ elfutils.spec | 8 ++++++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.192-libelf-static.patch diff --git a/elfutils-0.192-libelf-static.patch b/elfutils-0.192-libelf-static.patch new file mode 100644 index 0000000..799cfb4 --- /dev/null +++ b/elfutils-0.192-libelf-static.patch @@ -0,0 +1,36 @@ +From 0a65a54593ae489d40cb993caa74095d45bc47fd 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(+) + +diff --git a/libelf/Makefile.am b/libelf/Makefile.am +index 3402863e..2d3dbdf2 100644 +--- a/libelf/Makefile.am ++++ b/libelf/Makefile.am +@@ -122,6 +122,9 @@ libelf.so: $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS) + @$(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 +-- +2.47.0 + diff --git a/elfutils.spec b/elfutils.spec index e8c6055..130110f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -77,6 +77,9 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# Include libeu.a objects in libelf.a for static linking. +Patch2: elfutils-0.192-libelf-static.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -489,6 +492,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Oct 22 2024 Aaron Merey - 0.192-3 +- Add elfutils-0.192-libelf-static.patch + * Mon Oct 21 2024 Aaron Merey - 0.192-2 - Add BuildRequires for json-c From 72bb5b7f423a9c807e862b99827a43d925afaced Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 24 Oct 2024 15:21:23 +0200 Subject: [PATCH 67/80] 0.192-4 - Enable eu-stacktrace on x86_64 --- elfutils-0.192-stacktrace-lto.patch | 35 +++++++++++++++++++++++++++++ elfutils.spec | 35 +++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 elfutils-0.192-stacktrace-lto.patch diff --git a/elfutils-0.192-stacktrace-lto.patch b/elfutils-0.192-stacktrace-lto.patch new file mode 100644 index 0000000..9f110f8 --- /dev/null +++ b/elfutils-0.192-stacktrace-lto.patch @@ -0,0 +1,35 @@ +commit 43829fb8780ecbe9d17aaed22d3dfcb806cb5f45 +Author: Mark Wielaard +Date: Thu Oct 24 10:44:25 2024 +0200 + + stacktrace: Init elf_fd in sysprof_init_dwfl + + When building with LTO gcc believes elf_fd can be used uninitialized: + + In function ‘sysprof_init_dwfl’, + inlined from ‘sysprof_unwind_cb’ at stacktrace.c:1235:16: + stacktrace.c:1087:7: error: ‘elf_fd’ may be used uninitialized [-Werror=maybe-uninitialized] + 1087 | close (elf_fd); + | ^ + + This code won't be reached because if find_procfile doesn't initialize + elf_fd, it will return an error. But help the compiler by initializing + elf_fd to -1. + + * src/stacktrace.c (sysprof_init_dwfl): Init elf_fd to -1. + + Signed-off-by: Mark Wielaard + +diff --git a/src/stacktrace.c b/src/stacktrace.c +index 438cb1dd0d38..b912ca5de502 100644 +--- a/src/stacktrace.c ++++ b/src/stacktrace.c +@@ -1033,7 +1033,7 @@ sysprof_init_dwfl (struct sysprof_unwind_info *sui, + } + + Elf *elf = NULL; +- int elf_fd; ++ int elf_fd = -1; + err = find_procfile (dwfl, &pid, &elf, &elf_fd); + if (err < 0) + { diff --git a/elfutils.spec b/elfutils.spec index 130110f..e415af8 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 3 +%global baserelease 4 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -16,6 +16,13 @@ Summary: A collection of utilities and DSOs to handle ELF files and DWARF data # Needed for isa specific Provides and Requires. %global depsuffix %{?_isa}%{!?_isa:-%{_arch}} +# eu-stacktrace currently only supports x86_64 +%ifarch x86_64 +%global enable_stacktrace 1 +%else +%global enable_stacktrace 0 +%endif + Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-libs%{depsuffix} = %{version}-%{release} Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} @@ -52,6 +59,13 @@ BuildRequires: bsdtar BuildRequires: curl # For run-debuginfod-response-headers.sh test case BuildRequires: socat +# For run-debuginfod-find-metadata.sh +BuildRequires: jq + +# For eu-stacktrace +%if %{enable_stacktrace} +BuildRequires: sysprof-capture-devel +%endif BuildRequires: automake BuildRequires: autoconf @@ -80,6 +94,9 @@ Patch1: elfutils-0.186-fdo-swap.patch # Include libeu.a objects in libelf.a for static linking. Patch2: elfutils-0.192-libelf-static.patch +# Fix eu-stacktrace build with lto enabled. +Patch3: elfutils-0.192-stacktrace-lto.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -305,11 +322,14 @@ trap 'cat config.log' EXIT # dist_debuginfod_url is defined in macros.dist. Fedora and CentOS have # URLs pointing to their respective servers. RHEL and Amazon Linux do # not configure a default server. +%configure CFLAGS="$RPM_OPT_FLAGS" \ %if "%{?dist_debuginfod_url}" -%configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=%{dist_debuginfod_url} -%else -%configure CFLAGS="$RPM_OPT_FLAGS" + --enable-debuginfod-urls=%{dist_debuginfod_url} \ %endif +%if %{enable_stacktrace} + --enable-stacktrace \ +%endif + --enable-debuginfod trap '' EXIT %make_build @@ -385,6 +405,9 @@ fi %{_bindir}/eu-size %{_bindir}/eu-srcfiles %{_bindir}/eu-stack +%if %{enable_stacktrace} +%{_bindir}/eu-stacktrace +%endif %{_bindir}/eu-strings %{_bindir}/eu-strip %{_bindir}/eu-unstrip @@ -492,6 +515,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Oct 24 2024 Mark Wielaard - 0.192-4 +- Add elfutils-0.192-stacktrace-lto.patch +- Enable eu-stacktrace on x86_64 + * Tue Oct 22 2024 Aaron Merey - 0.192-3 - Add elfutils-0.192-libelf-static.patch From 347c8e91ee1c65b9d7dc1cc83446a1d7bdb0c013 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Tue, 29 Oct 2024 12:43:39 -0400 Subject: [PATCH 68/80] 0.192-5 - Enable debuginfod IMA verification - Add elfutils-0.192-fix-configure-conditional.patch - Add elfutils-0.192-fix-zsh-profile.patch --- ...tils-0.192-fix-configure-conditional.patch | 25 +++++++++++++ elfutils-0.192-fix-zsh-profile.patch | 37 +++++++++++++++++++ elfutils.spec | 22 ++++++++++- 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 elfutils-0.192-fix-configure-conditional.patch create mode 100644 elfutils-0.192-fix-zsh-profile.patch diff --git a/elfutils-0.192-fix-configure-conditional.patch b/elfutils-0.192-fix-configure-conditional.patch new file mode 100644 index 0000000..608782a --- /dev/null +++ b/elfutils-0.192-fix-configure-conditional.patch @@ -0,0 +1,25 @@ +From fb4753feb0ed7e3387f52b54bb02c6c74aac6a3e Mon Sep 17 00:00:00 2001 +From: Aaron Merey +Date: Tue, 29 Oct 2024 14:54:10 -0400 +Subject: [PATCH] m + +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index f191488..3d2d3ee 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -892,7 +892,7 @@ AS_IF([test "x$enable_debuginfod" != "xno"],AC_DEFINE([ENABLE_DEBUGINFOD],[1],[B + 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} +-- +2.47.0 + diff --git a/elfutils-0.192-fix-zsh-profile.patch b/elfutils-0.192-fix-zsh-profile.patch new file mode 100644 index 0000000..6df2df8 --- /dev/null +++ b/elfutils-0.192-fix-zsh-profile.patch @@ -0,0 +1,37 @@ +From 00cb3efe36337f27925dbff9b2e7d97c7df95bf8 Mon Sep 17 00:00:00 2001 +From: RocketDev +Date: Sat, 26 Oct 2024 22:18:09 +0800 +Subject: [PATCH] config: fix globing error for zsh + +Zsh treat unmatched glob as error while bash treat that as the original +string. Substitute globing with find to solve. + + * config/profile.sh.in: Fix globing error for zsh + +Signed-off-by: RocketDev +--- + config/profile.sh.in | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/config/profile.sh.in b/config/profile.sh.in +index 5e86f433..9f3e415a 100644 +--- a/config/profile.sh.in ++++ b/config/profile.sh.in +@@ -6,12 +6,12 @@ + + prefix="@prefix@" + if [ -z "$DEBUGINFOD_URLS" ]; then +- DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' || :) ++ DEBUGINFOD_URLS=$(find "@sysconfdir@/debuginfod" -name "*.urls" -print0 2>/dev/null | xargs -0 cat 2>/dev/null | tr '\n' ' ' || :) + [ -n "$DEBUGINFOD_URLS" ] && export DEBUGINFOD_URLS || unset DEBUGINFOD_URLS + fi + + if [ -z "$DEBUGINFOD_IMA_CERT_PATH" ]; then +- DEBUGINFOD_IMA_CERT_PATH=$(cat /dev/null "@sysconfdir@/debuginfod"/*.certpath 2>/dev/null | tr '\n' ':' || :) ++ DEBUGINFOD_IMA_CERT_PATH=$(find "@sysconfdir@/debuginfod" -name "*.certpath" -print0 2>/dev/null | xargs -0 cat 2>/dev/null | tr '\n' ':' || :) + [ -n "$DEBUGINFOD_IMA_CERT_PATH" ] && export DEBUGINFOD_IMA_CERT_PATH || unset DEBUGINFOD_IMA_CERT_PATH + fi + unset prefix +-- +2.47.0 + diff --git a/elfutils.spec b/elfutils.spec index e415af8..4d9b44d 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 4 +%global baserelease 5 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -62,6 +62,12 @@ BuildRequires: socat # For run-debuginfod-find-metadata.sh BuildRequires: jq +# For debuginfod rpm IMA verification +BuildRequires: rpm-devel +BuildRequires: ima-evm-utils-devel +BuildRequires: openssl-devel +BuildRequires: rpm-sign + # For eu-stacktrace %if %{enable_stacktrace} BuildRequires: sysprof-capture-devel @@ -97,6 +103,12 @@ Patch2: elfutils-0.192-libelf-static.patch # Fix eu-stacktrace build with lto enabled. Patch3: elfutils-0.192-stacktrace-lto.patch +# Fix ENABLE_IMA_VERIFICATION always evaluating to false. +Patch4: elfutils-0.192-fix-configure-conditional.patch + +# Fix empty glob error on zsh. +Patch5: elfutils-0.192-fix-zsh-profile.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -324,12 +336,13 @@ trap 'cat config.log' EXIT # not configure a default server. %configure CFLAGS="$RPM_OPT_FLAGS" \ %if "%{?dist_debuginfod_url}" + --enable-debuginfod \ --enable-debuginfod-urls=%{dist_debuginfod_url} \ %endif %if %{enable_stacktrace} --enable-stacktrace \ %endif - --enable-debuginfod + --enable-debuginfod-ima-verification trap '' EXIT %make_build @@ -515,6 +528,11 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Oct 29 2024 Aaron Merey - 0.192-5 +- Enable debuginfod IMA verification +- Add elfutils-0.192-fix-configure-conditional.patch +- Add elfutils-0.192-fix-zsh-profile.patch + * Thu Oct 24 2024 Mark Wielaard - 0.192-4 - Add elfutils-0.192-stacktrace-lto.patch - Enable eu-stacktrace on x86_64 From 861e4d63d5203347beaf3e1b43e76619fa115ae2 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Tue, 12 Nov 2024 13:44:16 -0500 Subject: [PATCH 69/80] 0.192-6 - Add elfutils-0.192-strip-ignore-non-ET_REL.patch - Set debuginfod IMA cert path --- elfutils-0.192-strip-ignore-non-ET_REL.patch | 48 ++++++++++++++++++++ elfutils.spec | 12 ++++- 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 elfutils-0.192-strip-ignore-non-ET_REL.patch diff --git a/elfutils-0.192-strip-ignore-non-ET_REL.patch b/elfutils-0.192-strip-ignore-non-ET_REL.patch new file mode 100644 index 0000000..bef6ca6 --- /dev/null +++ b/elfutils-0.192-strip-ignore-non-ET_REL.patch @@ -0,0 +1,48 @@ +From e425a70469436c704e6c24dd4bc2abb8fb24b61d Mon Sep 17 00:00:00 2001 +From: Aaron Merey +Date: Tue, 5 Nov 2024 17:41:26 -0500 +Subject: [PATCH] strip: Ignore --reloc-debug-sections-only for non-ET_REL + files. + +strip --reloc-debug-sections-only is expected to be a no-op for +non-ET_REL files. This was not enforced in the code. Sections +were copied over to a new output file and normally its contents +would be identical to the input file. + +However the output file is not identical to a non-ET_REL input +file if the linker organized sections such that the indices of +SHF_ALLOC sections are not in a contigous group. + +In this case strip will modify sections in order to keep all SHF_ALLOC +sections in a contiguous group. + +Fix this by ignoring --reloc-debug-sections-only for non-ET_REL files. + +https://sourceware.org/bugzilla/show_bug.cgi?id=32253 + +Signed-off-by: Aaron Merey +--- + src/strip.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/strip.c b/src/strip.c +index 403e0f6f..3812fb17 100644 +--- a/src/strip.c ++++ b/src/strip.c +@@ -1139,6 +1139,13 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, + + if (reloc_debug_only) + { ++ if (ehdr->e_type != ET_REL) ++ { ++ /* Only ET_REL files can have debug relocations to remove. */ ++ error (0, 0, _("Ignoring --reloc-debug-sections-only for " \ ++ "non-ET_REL file '%s'"), fname); ++ goto fail_close; ++ } + if (handle_debug_relocs (elf, ebl, newelf, ehdr, fname, shstrndx, + &lastsec_offset, &lastsec_size) != 0) + { +-- +2.47.0 + diff --git a/elfutils.spec b/elfutils.spec index 4d9b44d..01e85ad 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 5 +%global baserelease 6 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -109,6 +109,9 @@ Patch4: elfutils-0.192-fix-configure-conditional.patch # Fix empty glob error on zsh. Patch5: elfutils-0.192-fix-zsh-profile.patch +# Fix testsuite failure caused by ld changes. +Patch6: elfutils-0.192-strip-ignore-non-ET_REL.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -342,7 +345,8 @@ trap 'cat config.log' EXIT %if %{enable_stacktrace} --enable-stacktrace \ %endif - --enable-debuginfod-ima-verification + --enable-debuginfod-ima-verification \ + --enable-debuginfod-ima-cert-path=%{_sysconfdir}/keys/ima trap '' EXIT %make_build @@ -528,6 +532,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Nov 12 2024 Aaron Merey - 0.192-6 +- Add elfutils-0.192-strip-ignore-non-ET_REL.patch +- Set debuginfod IMA cert path + * Tue Oct 29 2024 Aaron Merey - 0.192-5 - Enable debuginfod IMA verification - Add elfutils-0.192-fix-configure-conditional.patch From 1e27db2f4c45bf0f7dff00e341f60d8b6d8317a7 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Mon, 2 Dec 2024 23:41:40 +0100 Subject: [PATCH 70/80] 0.192-7 - Add elfutils-0.192-ATOMIC_VAR_INIT.patch - Add elfutils-0.192-more-dwarf5-lang.patch --- elfutils-0.192-ATOMIC_VAR_INIT.patch | 28 ++++ elfutils-0.192-more-dwarf5-lang.patch | 204 ++++++++++++++++++++++++++ elfutils.spec | 13 +- 3 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.192-ATOMIC_VAR_INIT.patch create mode 100644 elfutils-0.192-more-dwarf5-lang.patch diff --git a/elfutils-0.192-ATOMIC_VAR_INIT.patch b/elfutils-0.192-ATOMIC_VAR_INIT.patch new file mode 100644 index 0000000..962d4c9 --- /dev/null +++ b/elfutils-0.192-ATOMIC_VAR_INIT.patch @@ -0,0 +1,28 @@ +commit 5cc89c78499cd37465d7b0b3f35ef0e5d07a98cc +Author: Mark Wielaard +Date: Mon Nov 18 19:50:17 2024 +0100 + + libdw: Don't use ATOMIC_VAR_INIT + + ATOMIC_VAR_INIT was introduced in C11, but not deemed necessary to + implement atomics. So deprecated in C17 and removed in C23. Normal + initialization syntax should be sufficient. + + * libdw/libdw_alloc.c (next_id): Initialize to zero without + using ATOMIC_VAR_INIT. + + Signed-off-by: Mark Wielaard + +diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c +index b3e533434939..adc729f525f2 100644 +--- a/libdw/libdw_alloc.c ++++ b/libdw/libdw_alloc.c +@@ -45,7 +45,7 @@ + + #define THREAD_ID_UNSET ((size_t) -1) + static __thread size_t thread_id = THREAD_ID_UNSET; +-static atomic_size_t next_id = ATOMIC_VAR_INIT(0); ++static atomic_size_t next_id = 0; + + struct libdw_memblock * + __libdw_alloc_tail (Dwarf *dbg) diff --git a/elfutils-0.192-more-dwarf5-lang.patch b/elfutils-0.192-more-dwarf5-lang.patch new file mode 100644 index 0000000..2aa0d3b --- /dev/null +++ b/elfutils-0.192-more-dwarf5-lang.patch @@ -0,0 +1,204 @@ +commit 04ba163e813f6b88da850c658a03ac7b5f19f7ad +Author: Mark Wielaard +Date: Fri Nov 22 18:17:29 2024 +0100 + + libdw: Update DW_LANG codes + + Pick up the language codes published after DWARF5 was published. + The are listed at https://dwarfstd.org/languages.html + + Also adjust C language dectection in dwarf_getfuncs and update the + dwarf_default_lower_bound function to return the default lower bounds + for the new langauge codes. + + There is one small change in dwarf_default_lower_bound. We now return + zero instead of an error when called for DW_LANG_Mips_Assembler. Since + there is now an "official" DW_LANG_Assembly which is explicitly + defined as having a default lower bound of zero. It seems better to do + the same for the vendor code too. + + * libdw/dwarf.h: Add new DW_LANG codes. + * libdw/dwarf_default_lower_bound.c (dwarf_default_lower_bound): + Handle new language codes and remove a special case for + DW_LANG_Mips_Assembler. + * libdw/dwarf_getfuncs.c (dwarf_getfuncs): Check against + DW_LANG_C17 and DW_LANG_C23. + * tests/dwarf_default_lower_bound.c: Also check for + DW_LANG_Mips_Assembler. + + Signed-off-by: Mark Wielaard + +diff --git a/libdw/dwarf.h b/libdw/dwarf.h +index 4be32de5a67d..573ffd6925b2 100644 +--- a/libdw/dwarf.h ++++ b/libdw/dwarf.h +@@ -1,5 +1,6 @@ + /* This file defines standard DWARF types, structures, and macros. + Copyright (C) 2000-2011, 2014, 2016, 2017, 2018 Red Hat, Inc. ++ Copyright (C) 2024 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -697,7 +698,11 @@ enum + }; + + +-/* DWARF language encodings. */ ++/* DWARF language encodings. ++ ++ See https://dwarfstd.org/languages.html for language code published ++ after DWARF5 was published (but before DWARF6 has been released, ++ which will introduce a new DW_AT_language_name/version scheme). */ + enum + { + DW_LANG_C89 = 0x0001, /* ISO C:1989 */ +@@ -738,6 +743,35 @@ enum + DW_LANG_RenderScript = 0x0024, /* RenderScript Kernal Language */ + DW_LANG_BLISS = 0x0025, /* BLISS */ + ++ DW_LANG_Kotlin = 0x0026, /* Kotlin */ ++ DW_LANG_Zig = 0x0027, /* Zig */ ++ DW_LANG_Crystal = 0x0028, /* Crystal */ ++ DW_LANG_C_plus_plus_17 = 0x002a, /* ISO C++:2017 */ ++ DW_LANG_C_plus_plus_20 = 0x002b, /* ISO C++:2018 */ ++ DW_LANG_C17 = 0x002c, /* ISO C:2017 */ ++ DW_LANG_Fortran18 = 0x002d, /* ISO/IEC 1539-1:2018 */ ++ DW_LANG_Ada2005 = 0x002e, /* ISO Ada:2005 */ ++ DW_LANG_Ada2012 = 0x002f, /* ISO Ada:2005 */ ++ DW_LANG_HIP = 0x0030, /* HIP */ ++ DW_LANG_Assembly = 0x0031, /* Assembly */ ++ DW_LANG_C_sharp = 0x0032, /* C# */ ++ DW_LANG_Mojo = 0x0033, /* Mojo */ ++ DW_LANG_GLSL = 0x0034, /* OpenGL Shading Language */ ++ DW_LANG_GLSL_ES = 0x0035, /* OpenGL ES Shading Language */ ++ DW_LANG_HLSL = 0x0036, /* High-Level Shading Language */ ++ DW_LANG_OpenCL_CPP = 0x0037, /* OpenCL C++ */ ++ DW_LANG_CPP_for_OpenCL = 0x0038, /* C++ for OpenCL */ ++ DW_LANG_SYCL = 0x0039, /* SYCL */ ++ DW_LANG_C_plus_plus_23 = 0x003a, /* ISO C++:2023 */ ++ DW_LANG_Odin = 0x003b, /* Odin */ ++ DW_LANG_P4 = 0x003c, /* P4 */ ++ DW_LANG_Metal = 0x003d, /* Metal */ ++ DW_LANG_C23 = 0x003e, /* ISO C:2023 */ ++ DW_LANG_Fortran23 = 0x003f, /* ISO/IEC 1539-1:2023 */ ++ DW_LANG_Ruby = 0x0040, /* Ruby */ ++ DW_LANG_Move = 0x0041, /* Move */ ++ DW_LANG_Hylo = 0x0042, /* Hylo */ ++ + DW_LANG_lo_user = 0x8000, + DW_LANG_Mips_Assembler = 0x8001, /* Assembler */ + DW_LANG_hi_user = 0xffff +diff --git a/libdw/dwarf_default_lower_bound.c b/libdw/dwarf_default_lower_bound.c +index a33a34335b1b..50639e32428e 100644 +--- a/libdw/dwarf_default_lower_bound.c ++++ b/libdw/dwarf_default_lower_bound.c +@@ -1,5 +1,6 @@ + /* Get the default subrange lower bound for a given language. + Copyright (C) 2016 Red Hat, Inc. ++ Copyright (C) 2024 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -63,6 +64,30 @@ dwarf_default_lower_bound (int lang, Dwarf_Sword *result) + case DW_LANG_Dylan: + case DW_LANG_RenderScript: + case DW_LANG_BLISS: ++ case DW_LANG_Kotlin: ++ case DW_LANG_Zig: ++ case DW_LANG_Crystal: ++ case DW_LANG_C_plus_plus_17: ++ case DW_LANG_C_plus_plus_20: ++ case DW_LANG_C17: ++ case DW_LANG_HIP: ++ case DW_LANG_Assembly: ++ case DW_LANG_C_sharp: ++ case DW_LANG_Mojo: ++ case DW_LANG_GLSL: ++ case DW_LANG_GLSL_ES: ++ case DW_LANG_HLSL: ++ case DW_LANG_OpenCL_CPP: ++ case DW_LANG_CPP_for_OpenCL: ++ case DW_LANG_SYCL: ++ case DW_LANG_C_plus_plus_23: ++ case DW_LANG_Odin: ++ case DW_LANG_P4: ++ case DW_LANG_Metal: ++ case DW_LANG_C23: ++ case DW_LANG_Ruby: ++ case DW_LANG_Move: ++ case DW_LANG_Hylo: + *result = 0; + return 0; + +@@ -80,9 +105,18 @@ dwarf_default_lower_bound (int lang, Dwarf_Sword *result) + case DW_LANG_Modula3: + case DW_LANG_PLI: + case DW_LANG_Julia: ++ case DW_LANG_Fortran18: ++ case DW_LANG_Ada2005: ++ case DW_LANG_Ada2012: ++ case DW_LANG_Fortran23: + *result = 1; + return 0; + ++ /* Special case vendor Assembly variant. */ ++ case DW_LANG_Mips_Assembler: ++ *result = 0; ++ return 0; ++ + default: + __libdw_seterrno (DWARF_E_UNKNOWN_LANGUAGE); + return -1; +diff --git a/libdw/dwarf_getfuncs.c b/libdw/dwarf_getfuncs.c +index b95f06f403d1..f6968f0081d4 100644 +--- a/libdw/dwarf_getfuncs.c ++++ b/libdw/dwarf_getfuncs.c +@@ -1,5 +1,6 @@ + /* Get function information. + Copyright (C) 2005, 2013, 2015 Red Hat, Inc. ++ Copyright (C) 2024 Mark J. Wielaard + This file is part of elfutils. + Written by Ulrich Drepper , 2005. + +@@ -104,7 +105,9 @@ dwarf_getfuncs (Dwarf_Die *cudie, int (*callback) (Dwarf_Die *, void *), + bool c_cu = (lang == DW_LANG_C89 + || lang == DW_LANG_C + || lang == DW_LANG_C99 +- || lang == DW_LANG_C11); ++ || lang == DW_LANG_C11 ++ || lang == DW_LANG_C17 ++ || lang == DW_LANG_C23); + + struct visitor_info v = { callback, arg, (void *) offset, NULL, c_cu }; + struct Dwarf_Die_Chain chain = { .die = CUDIE (cudie->cu), +diff --git a/tests/dwarf_default_lower_bound.c b/tests/dwarf_default_lower_bound.c +index d57424fc77fe..46e26f885a6b 100644 +--- a/tests/dwarf_default_lower_bound.c ++++ b/tests/dwarf_default_lower_bound.c +@@ -1,6 +1,7 @@ + /* Test all DW_LANG constants are handled by dwarf_default_lower_bound. + + Copyright (C) 2016 Red Hat, Inc. ++ Copyright (C) 2024 Mark J. Wielaard + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify +@@ -34,18 +35,6 @@ test_lang (const char *name, int lang) + Dwarf_Sword low; + int res = dwarf_default_lower_bound (lang, &low); + +- /* Assembler is special, it doesn't really have arrays. */ +- if (lang == DW_LANG_Mips_Assembler) +- { +- if (res == 0) +- { +- printf ("%s shouldn't have a known lower bound\n", name); +- exit (-1); +- } +- printf ("%s: \n", name); +- return; +- } +- + if (res != 0) + { + printf ("dwarf_default_lower_bound failed (%d) for %s\n", res, name); diff --git a/elfutils.spec b/elfutils.spec index 01e85ad..ea03564 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 6 +%global baserelease 7 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -112,6 +112,12 @@ Patch5: elfutils-0.192-fix-zsh-profile.patch # Fix testsuite failure caused by ld changes. Patch6: elfutils-0.192-strip-ignore-non-ET_REL.patch +# In c23 ATOMIC_VAR_INIT has been removed +Patch7: elfutils-0.192-ATOMIC_VAR_INIT.patch + +# New DWARF5 language constants +Patch8: elfutils-0.192-more-dwarf5-lang.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -532,6 +538,11 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog + +* Mon Dec 2 2024 Mark Wielaard - 0.192-7 +- Add elfutils-0.192-ATOMIC_VAR_INIT.patch +- Add elfutils-0.192-more-dwarf5-lang.patch + * Tue Nov 12 2024 Aaron Merey - 0.192-6 - Add elfutils-0.192-strip-ignore-non-ET_REL.patch - Set debuginfod IMA cert path From f6430a4ebda42fcb5088cd5731c5f3fc11cc5667 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 16 Jan 2025 16:47:28 +0000 Subject: [PATCH 71/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index ea03564..70ec135 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 7 +%global baserelease 8 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -538,6 +538,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Thu Jan 16 2025 Fedora Release Engineering - 0.192-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + * Mon Dec 2 2024 Mark Wielaard - 0.192-7 - Add elfutils-0.192-ATOMIC_VAR_INIT.patch From d699b959583150a338063b89425f4805bd886b47 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Sun, 23 Feb 2025 13:32:24 +0100 Subject: [PATCH 72/80] 0.192-9 - Add elfutils-0.192-imasig-fail-free.patch --- elfutils-0.192-imasig-fail-free.patch | 33 +++++++++++++++++++++++++++ elfutils.spec | 9 ++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 elfutils-0.192-imasig-fail-free.patch diff --git a/elfutils-0.192-imasig-fail-free.patch b/elfutils-0.192-imasig-fail-free.patch new file mode 100644 index 0000000..8840fcd --- /dev/null +++ b/elfutils-0.192-imasig-fail-free.patch @@ -0,0 +1,33 @@ +commit 1be0787d6654ed71bf659e8bfd34895fea7589eb +Author: Aaron Merey +Date: Fri Jan 24 19:43:19 2025 -0500 + + debuginfod-client.c: Avoid freeing uninitialized value + + debuginfod_validate_imasig might call free on an uninitialized sig_buf + due to a goto that can occur before sig_buf is set to NULL. + + Fix this by setting sig_buf to NULL before the goto. + + Signed-off-by: Aaron Merey + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index deff19ff4568..d89beae93ea1 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -1587,6 +1587,7 @@ debuginfod_validate_imasig (debuginfod_client *c, int fd) + { + int rc = ENOSYS; + ++ char* sig_buf = NULL; + EVP_MD_CTX *ctx = NULL; + if (!c || !c->winning_headers) + { +@@ -1594,7 +1595,6 @@ debuginfod_validate_imasig (debuginfod_client *c, int fd) + goto exit_validate; + } + // Extract the HEX IMA-signature from the header +- char* sig_buf = NULL; + char* hdr_ima_sig = strcasestr(c->winning_headers, "x-debuginfod-imasignature"); + if (!hdr_ima_sig || 1 != sscanf(hdr_ima_sig + strlen("x-debuginfod-imasignature:"), "%ms", &sig_buf)) + { diff --git a/elfutils.spec b/elfutils.spec index 70ec135..5e1ef20 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.192 -%global baserelease 8 +%global baserelease 9 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -118,6 +118,9 @@ Patch7: elfutils-0.192-ATOMIC_VAR_INIT.patch # New DWARF5 language constants Patch8: elfutils-0.192-more-dwarf5-lang.patch +# debuginfod-client.c: Avoid freeing uninitialized value +patch9: elfutils-0.192-imasig-fail-free.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -538,10 +541,12 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Sun Feb 23 2025 Mark Wielaard - 0.192-9 +- Add elfutils-0.192-imasig-fail-free.patch + * Thu Jan 16 2025 Fedora Release Engineering - 0.192-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - * Mon Dec 2 2024 Mark Wielaard - 0.192-7 - Add elfutils-0.192-ATOMIC_VAR_INIT.patch - Add elfutils-0.192-more-dwarf5-lang.patch From 3e1c6bb1d8bae31db498ad4d9b181c195e90669a Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Tue, 8 Apr 2025 17:32:01 +0000 Subject: [PATCH 73/80] Update elfutils.spec, supporting dist_debuginfod_url values with spaces --- elfutils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 5e1ef20..281eb0f 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -349,7 +349,7 @@ trap 'cat config.log' EXIT %configure CFLAGS="$RPM_OPT_FLAGS" \ %if "%{?dist_debuginfod_url}" --enable-debuginfod \ - --enable-debuginfod-urls=%{dist_debuginfod_url} \ + --enable-debuginfod-urls="%{dist_debuginfod_url}" \ %endif %if %{enable_stacktrace} --enable-stacktrace \ From 34ae6eb109ec01600b21b615add4098e0b3f65ea Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Mon, 28 Apr 2025 18:01:43 -0400 Subject: [PATCH 74/80] 0.193-1 - Upgrade to upstream elfutils 0.193 - Drop upstreamed patches elfutils-0.192-ATOMIC_VAR_INIT.patch elfutils-0.192-libelf-static.patch elfutils-0.192-fix-configure-conditional.patch elfutils-0.192-more-dwarf5-lang.patch elfutils-0.192-fix-zsh-profile.patch elfutils-0.192-stacktrace-lto.patch elfutils-0.192-imasig-fail-free.patch elfutils-0.192-strip-ignore-non-ET_REL.patch --- .gitignore | 1 + elfutils-0.192-ATOMIC_VAR_INIT.patch | 28 --- ...tils-0.192-fix-configure-conditional.patch | 25 --- elfutils-0.192-fix-zsh-profile.patch | 37 ---- elfutils-0.192-imasig-fail-free.patch | 33 --- elfutils-0.192-libelf-static.patch | 36 ---- elfutils-0.192-more-dwarf5-lang.patch | 204 ------------------ elfutils-0.192-stacktrace-lto.patch | 35 --- elfutils-0.192-strip-ignore-non-ET_REL.patch | 48 ----- elfutils.spec | 40 ++-- sources | 2 +- 11 files changed, 16 insertions(+), 473 deletions(-) delete mode 100644 elfutils-0.192-ATOMIC_VAR_INIT.patch delete mode 100644 elfutils-0.192-fix-configure-conditional.patch delete mode 100644 elfutils-0.192-fix-zsh-profile.patch delete mode 100644 elfutils-0.192-imasig-fail-free.patch delete mode 100644 elfutils-0.192-libelf-static.patch delete mode 100644 elfutils-0.192-more-dwarf5-lang.patch delete mode 100644 elfutils-0.192-stacktrace-lto.patch delete mode 100644 elfutils-0.192-strip-ignore-non-ET_REL.patch diff --git a/.gitignore b/.gitignore index abe9c2b..a406bd1 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,4 @@ /elfutils-0.190.tar.bz2 /elfutils-0.191.tar.bz2 /elfutils-0.192.tar.bz2 +/elfutils-0.193.tar.bz2 diff --git a/elfutils-0.192-ATOMIC_VAR_INIT.patch b/elfutils-0.192-ATOMIC_VAR_INIT.patch deleted file mode 100644 index 962d4c9..0000000 --- a/elfutils-0.192-ATOMIC_VAR_INIT.patch +++ /dev/null @@ -1,28 +0,0 @@ -commit 5cc89c78499cd37465d7b0b3f35ef0e5d07a98cc -Author: Mark Wielaard -Date: Mon Nov 18 19:50:17 2024 +0100 - - libdw: Don't use ATOMIC_VAR_INIT - - ATOMIC_VAR_INIT was introduced in C11, but not deemed necessary to - implement atomics. So deprecated in C17 and removed in C23. Normal - initialization syntax should be sufficient. - - * libdw/libdw_alloc.c (next_id): Initialize to zero without - using ATOMIC_VAR_INIT. - - Signed-off-by: Mark Wielaard - -diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c -index b3e533434939..adc729f525f2 100644 ---- a/libdw/libdw_alloc.c -+++ b/libdw/libdw_alloc.c -@@ -45,7 +45,7 @@ - - #define THREAD_ID_UNSET ((size_t) -1) - static __thread size_t thread_id = THREAD_ID_UNSET; --static atomic_size_t next_id = ATOMIC_VAR_INIT(0); -+static atomic_size_t next_id = 0; - - struct libdw_memblock * - __libdw_alloc_tail (Dwarf *dbg) diff --git a/elfutils-0.192-fix-configure-conditional.patch b/elfutils-0.192-fix-configure-conditional.patch deleted file mode 100644 index 608782a..0000000 --- a/elfutils-0.192-fix-configure-conditional.patch +++ /dev/null @@ -1,25 +0,0 @@ -From fb4753feb0ed7e3387f52b54bb02c6c74aac6a3e Mon Sep 17 00:00:00 2001 -From: Aaron Merey -Date: Tue, 29 Oct 2024 14:54:10 -0400 -Subject: [PATCH] m - ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index f191488..3d2d3ee 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -892,7 +892,7 @@ AS_IF([test "x$enable_debuginfod" != "xno"],AC_DEFINE([ENABLE_DEBUGINFOD],[1],[B - 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} --- -2.47.0 - diff --git a/elfutils-0.192-fix-zsh-profile.patch b/elfutils-0.192-fix-zsh-profile.patch deleted file mode 100644 index 6df2df8..0000000 --- a/elfutils-0.192-fix-zsh-profile.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 00cb3efe36337f27925dbff9b2e7d97c7df95bf8 Mon Sep 17 00:00:00 2001 -From: RocketDev -Date: Sat, 26 Oct 2024 22:18:09 +0800 -Subject: [PATCH] config: fix globing error for zsh - -Zsh treat unmatched glob as error while bash treat that as the original -string. Substitute globing with find to solve. - - * config/profile.sh.in: Fix globing error for zsh - -Signed-off-by: RocketDev ---- - config/profile.sh.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/config/profile.sh.in b/config/profile.sh.in -index 5e86f433..9f3e415a 100644 ---- a/config/profile.sh.in -+++ b/config/profile.sh.in -@@ -6,12 +6,12 @@ - - prefix="@prefix@" - if [ -z "$DEBUGINFOD_URLS" ]; then -- DEBUGINFOD_URLS=$(cat /dev/null "@sysconfdir@/debuginfod"/*.urls 2>/dev/null | tr '\n' ' ' || :) -+ DEBUGINFOD_URLS=$(find "@sysconfdir@/debuginfod" -name "*.urls" -print0 2>/dev/null | xargs -0 cat 2>/dev/null | tr '\n' ' ' || :) - [ -n "$DEBUGINFOD_URLS" ] && export DEBUGINFOD_URLS || unset DEBUGINFOD_URLS - fi - - if [ -z "$DEBUGINFOD_IMA_CERT_PATH" ]; then -- DEBUGINFOD_IMA_CERT_PATH=$(cat /dev/null "@sysconfdir@/debuginfod"/*.certpath 2>/dev/null | tr '\n' ':' || :) -+ DEBUGINFOD_IMA_CERT_PATH=$(find "@sysconfdir@/debuginfod" -name "*.certpath" -print0 2>/dev/null | xargs -0 cat 2>/dev/null | tr '\n' ':' || :) - [ -n "$DEBUGINFOD_IMA_CERT_PATH" ] && export DEBUGINFOD_IMA_CERT_PATH || unset DEBUGINFOD_IMA_CERT_PATH - fi - unset prefix --- -2.47.0 - diff --git a/elfutils-0.192-imasig-fail-free.patch b/elfutils-0.192-imasig-fail-free.patch deleted file mode 100644 index 8840fcd..0000000 --- a/elfutils-0.192-imasig-fail-free.patch +++ /dev/null @@ -1,33 +0,0 @@ -commit 1be0787d6654ed71bf659e8bfd34895fea7589eb -Author: Aaron Merey -Date: Fri Jan 24 19:43:19 2025 -0500 - - debuginfod-client.c: Avoid freeing uninitialized value - - debuginfod_validate_imasig might call free on an uninitialized sig_buf - due to a goto that can occur before sig_buf is set to NULL. - - Fix this by setting sig_buf to NULL before the goto. - - Signed-off-by: Aaron Merey - -diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c -index deff19ff4568..d89beae93ea1 100644 ---- a/debuginfod/debuginfod-client.c -+++ b/debuginfod/debuginfod-client.c -@@ -1587,6 +1587,7 @@ debuginfod_validate_imasig (debuginfod_client *c, int fd) - { - int rc = ENOSYS; - -+ char* sig_buf = NULL; - EVP_MD_CTX *ctx = NULL; - if (!c || !c->winning_headers) - { -@@ -1594,7 +1595,6 @@ debuginfod_validate_imasig (debuginfod_client *c, int fd) - goto exit_validate; - } - // Extract the HEX IMA-signature from the header -- char* sig_buf = NULL; - char* hdr_ima_sig = strcasestr(c->winning_headers, "x-debuginfod-imasignature"); - if (!hdr_ima_sig || 1 != sscanf(hdr_ima_sig + strlen("x-debuginfod-imasignature:"), "%ms", &sig_buf)) - { diff --git a/elfutils-0.192-libelf-static.patch b/elfutils-0.192-libelf-static.patch deleted file mode 100644 index 799cfb4..0000000 --- a/elfutils-0.192-libelf-static.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0a65a54593ae489d40cb993caa74095d45bc47fd 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(+) - -diff --git a/libelf/Makefile.am b/libelf/Makefile.am -index 3402863e..2d3dbdf2 100644 ---- a/libelf/Makefile.am -+++ b/libelf/Makefile.am -@@ -122,6 +122,9 @@ libelf.so: $(srcdir)/libelf.map $(libelf_so_LIBS) $(libelf_so_DEPS) - @$(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 --- -2.47.0 - diff --git a/elfutils-0.192-more-dwarf5-lang.patch b/elfutils-0.192-more-dwarf5-lang.patch deleted file mode 100644 index 2aa0d3b..0000000 --- a/elfutils-0.192-more-dwarf5-lang.patch +++ /dev/null @@ -1,204 +0,0 @@ -commit 04ba163e813f6b88da850c658a03ac7b5f19f7ad -Author: Mark Wielaard -Date: Fri Nov 22 18:17:29 2024 +0100 - - libdw: Update DW_LANG codes - - Pick up the language codes published after DWARF5 was published. - The are listed at https://dwarfstd.org/languages.html - - Also adjust C language dectection in dwarf_getfuncs and update the - dwarf_default_lower_bound function to return the default lower bounds - for the new langauge codes. - - There is one small change in dwarf_default_lower_bound. We now return - zero instead of an error when called for DW_LANG_Mips_Assembler. Since - there is now an "official" DW_LANG_Assembly which is explicitly - defined as having a default lower bound of zero. It seems better to do - the same for the vendor code too. - - * libdw/dwarf.h: Add new DW_LANG codes. - * libdw/dwarf_default_lower_bound.c (dwarf_default_lower_bound): - Handle new language codes and remove a special case for - DW_LANG_Mips_Assembler. - * libdw/dwarf_getfuncs.c (dwarf_getfuncs): Check against - DW_LANG_C17 and DW_LANG_C23. - * tests/dwarf_default_lower_bound.c: Also check for - DW_LANG_Mips_Assembler. - - Signed-off-by: Mark Wielaard - -diff --git a/libdw/dwarf.h b/libdw/dwarf.h -index 4be32de5a67d..573ffd6925b2 100644 ---- a/libdw/dwarf.h -+++ b/libdw/dwarf.h -@@ -1,5 +1,6 @@ - /* This file defines standard DWARF types, structures, and macros. - Copyright (C) 2000-2011, 2014, 2016, 2017, 2018 Red Hat, Inc. -+ Copyright (C) 2024 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -697,7 +698,11 @@ enum - }; - - --/* DWARF language encodings. */ -+/* DWARF language encodings. -+ -+ See https://dwarfstd.org/languages.html for language code published -+ after DWARF5 was published (but before DWARF6 has been released, -+ which will introduce a new DW_AT_language_name/version scheme). */ - enum - { - DW_LANG_C89 = 0x0001, /* ISO C:1989 */ -@@ -738,6 +743,35 @@ enum - DW_LANG_RenderScript = 0x0024, /* RenderScript Kernal Language */ - DW_LANG_BLISS = 0x0025, /* BLISS */ - -+ DW_LANG_Kotlin = 0x0026, /* Kotlin */ -+ DW_LANG_Zig = 0x0027, /* Zig */ -+ DW_LANG_Crystal = 0x0028, /* Crystal */ -+ DW_LANG_C_plus_plus_17 = 0x002a, /* ISO C++:2017 */ -+ DW_LANG_C_plus_plus_20 = 0x002b, /* ISO C++:2018 */ -+ DW_LANG_C17 = 0x002c, /* ISO C:2017 */ -+ DW_LANG_Fortran18 = 0x002d, /* ISO/IEC 1539-1:2018 */ -+ DW_LANG_Ada2005 = 0x002e, /* ISO Ada:2005 */ -+ DW_LANG_Ada2012 = 0x002f, /* ISO Ada:2005 */ -+ DW_LANG_HIP = 0x0030, /* HIP */ -+ DW_LANG_Assembly = 0x0031, /* Assembly */ -+ DW_LANG_C_sharp = 0x0032, /* C# */ -+ DW_LANG_Mojo = 0x0033, /* Mojo */ -+ DW_LANG_GLSL = 0x0034, /* OpenGL Shading Language */ -+ DW_LANG_GLSL_ES = 0x0035, /* OpenGL ES Shading Language */ -+ DW_LANG_HLSL = 0x0036, /* High-Level Shading Language */ -+ DW_LANG_OpenCL_CPP = 0x0037, /* OpenCL C++ */ -+ DW_LANG_CPP_for_OpenCL = 0x0038, /* C++ for OpenCL */ -+ DW_LANG_SYCL = 0x0039, /* SYCL */ -+ DW_LANG_C_plus_plus_23 = 0x003a, /* ISO C++:2023 */ -+ DW_LANG_Odin = 0x003b, /* Odin */ -+ DW_LANG_P4 = 0x003c, /* P4 */ -+ DW_LANG_Metal = 0x003d, /* Metal */ -+ DW_LANG_C23 = 0x003e, /* ISO C:2023 */ -+ DW_LANG_Fortran23 = 0x003f, /* ISO/IEC 1539-1:2023 */ -+ DW_LANG_Ruby = 0x0040, /* Ruby */ -+ DW_LANG_Move = 0x0041, /* Move */ -+ DW_LANG_Hylo = 0x0042, /* Hylo */ -+ - DW_LANG_lo_user = 0x8000, - DW_LANG_Mips_Assembler = 0x8001, /* Assembler */ - DW_LANG_hi_user = 0xffff -diff --git a/libdw/dwarf_default_lower_bound.c b/libdw/dwarf_default_lower_bound.c -index a33a34335b1b..50639e32428e 100644 ---- a/libdw/dwarf_default_lower_bound.c -+++ b/libdw/dwarf_default_lower_bound.c -@@ -1,5 +1,6 @@ - /* Get the default subrange lower bound for a given language. - Copyright (C) 2016 Red Hat, Inc. -+ Copyright (C) 2024 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -63,6 +64,30 @@ dwarf_default_lower_bound (int lang, Dwarf_Sword *result) - case DW_LANG_Dylan: - case DW_LANG_RenderScript: - case DW_LANG_BLISS: -+ case DW_LANG_Kotlin: -+ case DW_LANG_Zig: -+ case DW_LANG_Crystal: -+ case DW_LANG_C_plus_plus_17: -+ case DW_LANG_C_plus_plus_20: -+ case DW_LANG_C17: -+ case DW_LANG_HIP: -+ case DW_LANG_Assembly: -+ case DW_LANG_C_sharp: -+ case DW_LANG_Mojo: -+ case DW_LANG_GLSL: -+ case DW_LANG_GLSL_ES: -+ case DW_LANG_HLSL: -+ case DW_LANG_OpenCL_CPP: -+ case DW_LANG_CPP_for_OpenCL: -+ case DW_LANG_SYCL: -+ case DW_LANG_C_plus_plus_23: -+ case DW_LANG_Odin: -+ case DW_LANG_P4: -+ case DW_LANG_Metal: -+ case DW_LANG_C23: -+ case DW_LANG_Ruby: -+ case DW_LANG_Move: -+ case DW_LANG_Hylo: - *result = 0; - return 0; - -@@ -80,9 +105,18 @@ dwarf_default_lower_bound (int lang, Dwarf_Sword *result) - case DW_LANG_Modula3: - case DW_LANG_PLI: - case DW_LANG_Julia: -+ case DW_LANG_Fortran18: -+ case DW_LANG_Ada2005: -+ case DW_LANG_Ada2012: -+ case DW_LANG_Fortran23: - *result = 1; - return 0; - -+ /* Special case vendor Assembly variant. */ -+ case DW_LANG_Mips_Assembler: -+ *result = 0; -+ return 0; -+ - default: - __libdw_seterrno (DWARF_E_UNKNOWN_LANGUAGE); - return -1; -diff --git a/libdw/dwarf_getfuncs.c b/libdw/dwarf_getfuncs.c -index b95f06f403d1..f6968f0081d4 100644 ---- a/libdw/dwarf_getfuncs.c -+++ b/libdw/dwarf_getfuncs.c -@@ -1,5 +1,6 @@ - /* Get function information. - Copyright (C) 2005, 2013, 2015 Red Hat, Inc. -+ Copyright (C) 2024 Mark J. Wielaard - This file is part of elfutils. - Written by Ulrich Drepper , 2005. - -@@ -104,7 +105,9 @@ dwarf_getfuncs (Dwarf_Die *cudie, int (*callback) (Dwarf_Die *, void *), - bool c_cu = (lang == DW_LANG_C89 - || lang == DW_LANG_C - || lang == DW_LANG_C99 -- || lang == DW_LANG_C11); -+ || lang == DW_LANG_C11 -+ || lang == DW_LANG_C17 -+ || lang == DW_LANG_C23); - - struct visitor_info v = { callback, arg, (void *) offset, NULL, c_cu }; - struct Dwarf_Die_Chain chain = { .die = CUDIE (cudie->cu), -diff --git a/tests/dwarf_default_lower_bound.c b/tests/dwarf_default_lower_bound.c -index d57424fc77fe..46e26f885a6b 100644 ---- a/tests/dwarf_default_lower_bound.c -+++ b/tests/dwarf_default_lower_bound.c -@@ -1,6 +1,7 @@ - /* Test all DW_LANG constants are handled by dwarf_default_lower_bound. - - Copyright (C) 2016 Red Hat, Inc. -+ Copyright (C) 2024 Mark J. Wielaard - This file is part of elfutils. - - This file is free software; you can redistribute it and/or modify -@@ -34,18 +35,6 @@ test_lang (const char *name, int lang) - Dwarf_Sword low; - int res = dwarf_default_lower_bound (lang, &low); - -- /* Assembler is special, it doesn't really have arrays. */ -- if (lang == DW_LANG_Mips_Assembler) -- { -- if (res == 0) -- { -- printf ("%s shouldn't have a known lower bound\n", name); -- exit (-1); -- } -- printf ("%s: \n", name); -- return; -- } -- - if (res != 0) - { - printf ("dwarf_default_lower_bound failed (%d) for %s\n", res, name); diff --git a/elfutils-0.192-stacktrace-lto.patch b/elfutils-0.192-stacktrace-lto.patch deleted file mode 100644 index 9f110f8..0000000 --- a/elfutils-0.192-stacktrace-lto.patch +++ /dev/null @@ -1,35 +0,0 @@ -commit 43829fb8780ecbe9d17aaed22d3dfcb806cb5f45 -Author: Mark Wielaard -Date: Thu Oct 24 10:44:25 2024 +0200 - - stacktrace: Init elf_fd in sysprof_init_dwfl - - When building with LTO gcc believes elf_fd can be used uninitialized: - - In function ‘sysprof_init_dwfl’, - inlined from ‘sysprof_unwind_cb’ at stacktrace.c:1235:16: - stacktrace.c:1087:7: error: ‘elf_fd’ may be used uninitialized [-Werror=maybe-uninitialized] - 1087 | close (elf_fd); - | ^ - - This code won't be reached because if find_procfile doesn't initialize - elf_fd, it will return an error. But help the compiler by initializing - elf_fd to -1. - - * src/stacktrace.c (sysprof_init_dwfl): Init elf_fd to -1. - - Signed-off-by: Mark Wielaard - -diff --git a/src/stacktrace.c b/src/stacktrace.c -index 438cb1dd0d38..b912ca5de502 100644 ---- a/src/stacktrace.c -+++ b/src/stacktrace.c -@@ -1033,7 +1033,7 @@ sysprof_init_dwfl (struct sysprof_unwind_info *sui, - } - - Elf *elf = NULL; -- int elf_fd; -+ int elf_fd = -1; - err = find_procfile (dwfl, &pid, &elf, &elf_fd); - if (err < 0) - { diff --git a/elfutils-0.192-strip-ignore-non-ET_REL.patch b/elfutils-0.192-strip-ignore-non-ET_REL.patch deleted file mode 100644 index bef6ca6..0000000 --- a/elfutils-0.192-strip-ignore-non-ET_REL.patch +++ /dev/null @@ -1,48 +0,0 @@ -From e425a70469436c704e6c24dd4bc2abb8fb24b61d Mon Sep 17 00:00:00 2001 -From: Aaron Merey -Date: Tue, 5 Nov 2024 17:41:26 -0500 -Subject: [PATCH] strip: Ignore --reloc-debug-sections-only for non-ET_REL - files. - -strip --reloc-debug-sections-only is expected to be a no-op for -non-ET_REL files. This was not enforced in the code. Sections -were copied over to a new output file and normally its contents -would be identical to the input file. - -However the output file is not identical to a non-ET_REL input -file if the linker organized sections such that the indices of -SHF_ALLOC sections are not in a contigous group. - -In this case strip will modify sections in order to keep all SHF_ALLOC -sections in a contiguous group. - -Fix this by ignoring --reloc-debug-sections-only for non-ET_REL files. - -https://sourceware.org/bugzilla/show_bug.cgi?id=32253 - -Signed-off-by: Aaron Merey ---- - src/strip.c | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/src/strip.c b/src/strip.c -index 403e0f6f..3812fb17 100644 ---- a/src/strip.c -+++ b/src/strip.c -@@ -1139,6 +1139,13 @@ handle_elf (int fd, Elf *elf, const char *prefix, const char *fname, - - if (reloc_debug_only) - { -+ if (ehdr->e_type != ET_REL) -+ { -+ /* Only ET_REL files can have debug relocations to remove. */ -+ error (0, 0, _("Ignoring --reloc-debug-sections-only for " \ -+ "non-ET_REL file '%s'"), fname); -+ goto fail_close; -+ } - if (handle_debug_relocs (elf, ebl, newelf, ehdr, fname, shstrndx, - &lastsec_offset, &lastsec_size) != 0) - { --- -2.47.0 - diff --git a/elfutils.spec b/elfutils.spec index 281eb0f..a220b32 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -3,8 +3,8 @@ %bcond_with static Name: elfutils -Version: 0.192 -%global baserelease 9 +Version: 0.193 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -97,30 +97,6 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch -# Include libeu.a objects in libelf.a for static linking. -Patch2: elfutils-0.192-libelf-static.patch - -# Fix eu-stacktrace build with lto enabled. -Patch3: elfutils-0.192-stacktrace-lto.patch - -# Fix ENABLE_IMA_VERIFICATION always evaluating to false. -Patch4: elfutils-0.192-fix-configure-conditional.patch - -# Fix empty glob error on zsh. -Patch5: elfutils-0.192-fix-zsh-profile.patch - -# Fix testsuite failure caused by ld changes. -Patch6: elfutils-0.192-strip-ignore-non-ET_REL.patch - -# In c23 ATOMIC_VAR_INIT has been removed -Patch7: elfutils-0.192-ATOMIC_VAR_INIT.patch - -# New DWARF5 language constants -Patch8: elfutils-0.192-more-dwarf5-lang.patch - -# debuginfod-client.c: Avoid freeing uninitialized value -patch9: elfutils-0.192-imasig-fail-free.patch - %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -541,6 +517,18 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Mon Apr 28 2025 Aaron Merey - 0.193-1 +- Upgrade to upstream elfutils 0.193 +- Drop upstreamed patches + elfutils-0.192-ATOMIC_VAR_INIT.patch + elfutils-0.192-libelf-static.patch + elfutils-0.192-fix-configure-conditional.patch + elfutils-0.192-more-dwarf5-lang.patch + elfutils-0.192-fix-zsh-profile.patch + elfutils-0.192-stacktrace-lto.patch + elfutils-0.192-imasig-fail-free.patch + elfutils-0.192-strip-ignore-non-ET_REL.patch + * Sun Feb 23 2025 Mark Wielaard - 0.192-9 - Add elfutils-0.192-imasig-fail-free.patch diff --git a/sources b/sources index 52f4826..7c1ca7e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.192.tar.bz2) = 543188f5f2cfe5bc7955a878416c5f252edff9926754e5de0c6c57b132f21d9285c9b29e41281e93baad11d4ae7efbbf93580c114579c182103565fe99bd3909 +SHA512 (elfutils-0.193.tar.bz2) = 557e328e3de0d2a69d09c15a9333f705f3233584e2c6a7d3ce855d06a12dc129e69168d6be64082803630397bd64e1660a8b5324d4f162d17922e10ddb367d76 From 6d89dc3f7ea5dc28c5b1d50b5596662d6555f75a Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Wed, 30 Apr 2025 08:38:12 -0400 Subject: [PATCH 75/80] Include libdwfl_stacktrace.h when building eu-stacktrace --- elfutils.spec | 3 +++ 1 file changed, 3 insertions(+) diff --git a/elfutils.spec b/elfutils.spec index a220b32..fb4094a 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -432,6 +432,9 @@ fi %{_includedir}/elfutils/libdwfl.h %{_includedir}/elfutils/libdwelf.h %{_includedir}/elfutils/version.h +%if %{enable_stacktrace} +%{_includedir}/elfutils/libdwfl_stacktrace.h +%endif %{_libdir}/libasm.so %{_libdir}/libdw.so %{_libdir}/pkgconfig/libdw.pc From 1e730db939dd7ab34e5f5142ceff6cb6f5ea2433 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Wed, 30 Apr 2025 08:54:03 -0400 Subject: [PATCH 76/80] 0.193-2 Include libdwfl_stacktrace.h unconditionally --- elfutils.spec | 2 -- 1 file changed, 2 deletions(-) diff --git a/elfutils.spec b/elfutils.spec index fb4094a..f677ca3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -432,9 +432,7 @@ fi %{_includedir}/elfutils/libdwfl.h %{_includedir}/elfutils/libdwelf.h %{_includedir}/elfutils/version.h -%if %{enable_stacktrace} %{_includedir}/elfutils/libdwfl_stacktrace.h -%endif %{_libdir}/libasm.so %{_libdir}/libdw.so %{_libdir}/pkgconfig/libdw.pc From accba9105dc16f095930fe2a75aef0f559ccca65 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Wed, 30 Apr 2025 08:56:27 -0400 Subject: [PATCH 77/80] Bump release version --- elfutils.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index f677ca3..0a545aa 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.193 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ From d93e194c37525d17f6c497b6712a56bf0f971598 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Wed, 23 Jul 2025 19:47:24 +0000 Subject: [PATCH 78/80] Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild --- elfutils.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/elfutils.spec b/elfutils.spec index 0a545aa..6c79016 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.193 -%global baserelease 2 +%global baserelease 3 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -518,6 +518,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Wed Jul 23 2025 Fedora Release Engineering - 0.193-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + * Mon Apr 28 2025 Aaron Merey - 0.193-1 - Upgrade to upstream elfutils 0.193 - Drop upstreamed patches From 77509c6ab099e628f22724f74c09bdf78e92cad5 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Tue, 28 Oct 2025 16:10:55 -0400 Subject: [PATCH 79/80] 0.194-1 - Upgrade to upstream elfutils 0.194 - Add elfutils-0.194-alloc-jobs.patch --- .gitignore | 1 + elfutils-0.194-alloc-jobs.patch | 135 ++++++++++++++++++++++++++++++++ elfutils.spec | 12 ++- sources | 2 +- 4 files changed, 147 insertions(+), 3 deletions(-) create mode 100644 elfutils-0.194-alloc-jobs.patch diff --git a/.gitignore b/.gitignore index a406bd1..6aac4df 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ /elfutils-0.191.tar.bz2 /elfutils-0.192.tar.bz2 /elfutils-0.193.tar.bz2 +/elfutils-0.194.tar.bz2 diff --git a/elfutils-0.194-alloc-jobs.patch b/elfutils-0.194-alloc-jobs.patch new file mode 100644 index 0000000..cabf590 --- /dev/null +++ b/elfutils-0.194-alloc-jobs.patch @@ -0,0 +1,135 @@ +From f66135f16fe44182a3fc5b651d7e5071c936217d Mon Sep 17 00:00:00 2001 +From: Aaron Merey +Date: Mon, 27 Oct 2025 22:00:12 -0400 +Subject: [PATCH] readelf: Allocate job_data one-by-one as needed + +Currently, job_data is stored in an array whose size is equal to the +number of debug sections (.debug_*, .eh_frame, .gdb_index, etc.). + +This size may be too small if a binary contains multiple debug sections +with the same name. For example an ET_REL binary compiled with -ggdb3 +can contain multiple .debug_macro sections. + +Fix this by allocating job_data on the fly when preparing to read a +debug section. This supports an arbitrary number of debug sections +while also avoiding unnecessary memory allocation. + +https://sourceware.org/bugzilla/show_bug.cgi?id=33580 + +Signed-off-by: Aaron Merey +--- + src/readelf.c | 49 +++++++++++++++++++++++++------------------------ + 1 file changed, 25 insertions(+), 24 deletions(-) + +diff --git a/src/readelf.c b/src/readelf.c +index ee6c203d..a2d17358 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -12200,7 +12200,8 @@ getone_dwflmod (Dwfl_Module *dwflmod, + return DWARF_CB_OK; + } + +-typedef struct { ++typedef struct Job_Data { ++ struct Job_Data *next; + Dwfl_Module *dwflmod; + Ebl *ebl; + GElf_Ehdr *ehdr; +@@ -12230,7 +12231,7 @@ do_job (void *data, FILE *out) + If thread safety is not supported or the maximum number of threads is set + to 1, then immediately call START_ROUTINE with the given arguments. */ + static void +-schedule_job (job_data jdata[], size_t idx, ++schedule_job (job_data **jdatalist, + void (*start_routine) (Dwfl_Module *, Ebl *, GElf_Ehdr *, + Elf_Scn *, GElf_Shdr *, Dwarf *, FILE *), + Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, +@@ -12239,21 +12240,24 @@ schedule_job (job_data jdata[], size_t idx, + #ifdef USE_LOCKS + if (max_threads > 1) + { +- /* Add to the job queue. */ +- jdata[idx].dwflmod = dwflmod; +- jdata[idx].ebl = ebl; +- jdata[idx].ehdr = ehdr; +- jdata[idx].scn = *scn; +- jdata[idx].shdr = *shdr; +- jdata[idx].dbg = dbg; +- jdata[idx].fp = start_routine; ++ job_data *jdata = xmalloc (sizeof (job_data)); ++ ++ jdata->dwflmod = dwflmod; ++ jdata->ebl = ebl; ++ jdata->ehdr = ehdr; ++ jdata->scn = *scn; ++ jdata->shdr = *shdr; ++ jdata->dbg = dbg; ++ jdata->fp = start_routine; ++ jdata->next = *jdatalist; ++ *jdatalist = jdata; + +- add_job (do_job, (void *) &jdata[idx]); ++ add_job (do_job, (void *) jdata); + } + else + start_routine (dwflmod, ebl, ehdr, scn, shdr, dbg, stdout); + #else +- (void) jdata; (void) idx; ++ (void) jdatalist; + + start_routine (dwflmod, ebl, ehdr, scn, shdr, dbg, stdout); + #endif +@@ -12431,8 +12435,7 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr) + if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)) + error_exit (0, _("cannot get section header string table index")); + +- ssize_t num_jobs = 0; +- job_data *jdata = NULL; ++ job_data *jdatalist = NULL; + + /* If the .debug_info section is listed as implicitly required then + we must make sure to handle it before handling any other debug +@@ -12531,13 +12534,6 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr) + if (name == NULL) + continue; + +- if (jdata == NULL) +- { +- jdata = calloc (ndebug_sections, sizeof (*jdata)); +- if (jdata == NULL) +- error_exit (0, _("failed to allocate job data")); +- } +- + int n; + for (n = 0; n < ndebug_sections; ++n) + { +@@ -12561,10 +12557,9 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr) + { + if (((print_debug_sections | implicit_debug_sections) + & debug_sections[n].bitmask)) +- schedule_job (jdata, num_jobs++, debug_sections[n].fp, ++ schedule_job (&jdatalist, debug_sections[n].fp, + dwflmod, ebl, ehdr, scn, shdr, dbg); + +- assert (num_jobs <= ndebug_sections); + break; + } + } +@@ -12579,7 +12574,13 @@ print_debug (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr) + + dwfl_end (skel_dwfl); + free (skel_name); +- free (jdata); ++ ++ while (jdatalist != NULL) ++ { ++ job_data *jdata = jdatalist; ++ jdatalist = jdatalist->next; ++ free (jdata); ++ } + + /* Turn implicit and/or explicit back on in case we go over another file. */ + if (implicit_info) +-- +2.51.0 + diff --git a/elfutils.spec b/elfutils.spec index 6c79016..cbd3bf3 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -3,8 +3,8 @@ %bcond_with static Name: elfutils -Version: 0.193 -%global baserelease 3 +Version: 0.194 +%global baserelease 1 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -97,6 +97,9 @@ BuildRequires: gettext-devel # For s390x... FDO package notes are bogus. Patch1: elfutils-0.186-fdo-swap.patch +# Prevent assert failure in readelf for some -ggdb3 binaries. +Patch2: elfutils-0.194-alloc-jobs.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -457,6 +460,7 @@ fi %{_mandir}/man3/elf_*.3* %{_mandir}/man3/elf32_*.3* %{_mandir}/man3/elf64_*.3* +%{_mandir}/man3/gelf_*.3* %{_mandir}/man3/libelf.3* %if %{with static} @@ -518,6 +522,10 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Oct 28 2025 Aaron Merey - 0.194-1 +- Upgrade to upstream elfutils 0.194 +- Add elfutils-0.194-alloc-jobs.patch + * Wed Jul 23 2025 Fedora Release Engineering - 0.193-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild diff --git a/sources b/sources index 7c1ca7e..bd25645 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (elfutils-0.193.tar.bz2) = 557e328e3de0d2a69d09c15a9333f705f3233584e2c6a7d3ce855d06a12dc129e69168d6be64082803630397bd64e1660a8b5324d4f162d17922e10ddb367d76 +SHA512 (elfutils-0.194.tar.bz2) = 5d00502f61b92643bf61dc61da4ddded36c423466388d992bcd388c5208761b8ed9db1a01492c085cd0984eef30c08f895a8e307e78e0df8df40b56ae35b78a5 From fe811227810613065ff5d02ef25edcc82ddae288 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Tue, 9 Dec 2025 10:23:48 -0500 Subject: [PATCH 80/80] 0.194-2 Add elfutils-0.194-fix-const.patch --- elfutils-0.194-fix-const.patch | 301 +++++++++++++++++++++++++++++++++ elfutils.spec | 8 +- 2 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 elfutils-0.194-fix-const.patch diff --git a/elfutils-0.194-fix-const.patch b/elfutils-0.194-fix-const.patch new file mode 100644 index 0000000..085f899 --- /dev/null +++ b/elfutils-0.194-fix-const.patch @@ -0,0 +1,301 @@ +From 4a5cf8be906d5991e7527e69e3f2ceaa74811301 Mon Sep 17 00:00:00 2001 +From: Andreas Schwab +Date: Mon, 24 Nov 2025 13:46:16 +0100 +Subject: [PATCH] Fix const-correctness issues + +These were uncovered by the C23 const-preserving library macros. +--- + debuginfod/debuginfod-client.c | 2 +- + libcpu/riscv_disasm.c | 52 +++++++++++++++++----------------- + libdw/dwarf_getsrclines.c | 6 ++-- + src/readelf.c | 8 +++--- + 4 files changed, 34 insertions(+), 34 deletions(-) + +diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c +index c0ff5967..c5bc8a4f 100644 +--- a/debuginfod/debuginfod-client.c ++++ b/debuginfod/debuginfod-client.c +@@ -3104,7 +3104,7 @@ int debuginfod_add_http_header (debuginfod_client *client, const char* header) + /* Sanity check header value is of the form Header: Value. + It should contain at least one colon that isn't the first or + last character. */ +- char *colon = strchr (header, ':'); /* first colon */ ++ const char *colon = strchr (header, ':'); /* first colon */ + if (colon == NULL /* present */ + || colon == header /* not at beginning - i.e., have a header name */ + || *(colon + 1) == '\0') /* not at end - i.e., have a value */ +diff --git a/libcpu/riscv_disasm.c b/libcpu/riscv_disasm.c +index 0dee842a..749d4567 100644 +--- a/libcpu/riscv_disasm.c ++++ b/libcpu/riscv_disasm.c +@@ -77,7 +77,7 @@ static const char *regnames[32] = + "a6", "a7", "s2", "s3", "s4", "s5", "s6", "s7", + "s8", "s9", "s10", "s11", "t3", "t4", "t5", "t6" + }; +-#define REG(nr) ((char *) regnames[nr]) ++#define REG(nr) regnames[nr] + #define REGP(nr) REG (8 + (nr)) + + +@@ -88,7 +88,7 @@ static const char *fregnames[32] = + "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7", + "fs8", "fs9", "fs10", "fs11", "ft8", "ft9", "ft10", "ft11" + }; +-#define FREG(nr) ((char *) fregnames[nr]) ++#define FREG(nr) fregnames[nr] + #define FREGP(nr) FREG (8 + (nr)) + + +@@ -163,12 +163,12 @@ riscv_disasm (Ebl *ebl, + break; + } + +- char *mne = NULL; ++ const char *mne = NULL; + /* Max length is 24, which is "illegal", so we print it as + "0x<48 hex chars>" + See: No instruction encodings defined for these sizes yet, below */ + char mnebuf[50]; +- char *op[5] = { NULL, NULL, NULL, NULL, NULL }; ++ const char *op[5] = { NULL, NULL, NULL, NULL, NULL }; + char immbuf[32]; + size_t len; + char *strp = NULL; +@@ -400,7 +400,7 @@ riscv_disasm (Ebl *ebl, + { + "sub", "xor", "or", "and", "subw", "addw", NULL, NULL + }; +- mne = (char *) arithmne[((first >> 10) & 0x4) | ((first >> 5) & 0x3)]; ++ mne = arithmne[((first >> 10) & 0x4) | ((first >> 5) & 0x3)]; + } + op[0] = op[1] = REGP ((first >> 7) & 0x7); + break; +@@ -572,7 +572,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, NULL, "flw", "fld", "flq", NULL, NULL, NULL + }; +- mne = (char *) (idx == 0x00 ? loadmne[func] : floadmne[func]); ++ mne = idx == 0x00 ? loadmne[func] : floadmne[func]; + break; + case 0x03: + // MISC-MEM +@@ -595,8 +595,8 @@ riscv_disasm (Ebl *ebl, + uint32_t succ = (word >> 24) & 0xf; + if (pred != 0xf || succ != 0xf) + { +- op[0] = (char *) order[succ]; +- op[1] = (char *) order[pred]; ++ op[0] = order[succ]; ++ op[1] = order[pred]; + } + mne = "fence"; + } +@@ -614,7 +614,7 @@ riscv_disasm (Ebl *ebl, + "addi", NULL, "slti", "sltiu", "xori", NULL, "ori", "andi" + }; + func = (word >> 12) & 0x7; +- mne = (char *) opimmmne[func]; ++ mne = opimmmne[func]; + if (mne == NULL) + { + const uint64_t shiftmask = ebl->class == ELFCLASS32 ? 0x1f : 0x3f; +@@ -697,7 +697,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, NULL, "fsw", "fsd", "fsq", NULL, NULL, NULL + }; +- mne = (char *) (idx == 0x08 ? storemne[func] : fstoremne[func]); ++ mne = idx == 0x08 ? storemne[func] : fstoremne[func]; + break; + case 0x0b: + // AMO +@@ -778,7 +778,7 @@ riscv_disasm (Ebl *ebl, + } + else + { +- mne = (char *) (idx == 0x0c ? arithmne2[func] : arithmne3[func]); ++ mne = idx == 0x0c ? arithmne2[func] : arithmne3[func]; + op[1] = REG (rs1); + op[2] = REG (rs2); + } +@@ -811,7 +811,7 @@ riscv_disasm (Ebl *ebl, + op[2] = FREG (rs2); + op[3] = FREG (rs3); + if (rm != 0x7) +- op[4] = (char *) rndmode[rm]; ++ op[4] = rndmode[rm]; + } + break; + case 0x14: +@@ -839,7 +839,7 @@ riscv_disasm (Ebl *ebl, + op[1] = FREG (rs1); + op[2] = FREG (rs2); + if (rm != 0x7) +- op[3] = (char *) rndmode[rm]; ++ op[3] = rndmode[rm]; + } + else if (func == 0x1c && width != 2 && rs2 == 0 && rm <= 1) + { +@@ -950,7 +950,7 @@ riscv_disasm (Ebl *ebl, + } + mne = mnebuf; + if (rm != 0x7 && (func == 0x18 || width == 0 || rs2 >= 2)) +- op[2] = (char *) rndmode[rm]; ++ op[2] = rndmode[rm]; + } + else if (func == 0x0b && rs2 == 0) + { +@@ -961,7 +961,7 @@ riscv_disasm (Ebl *ebl, + *cp = '\0'; + mne = mnebuf; + if (rm != 0x7) +- op[2] = (char *) rndmode[rm]; ++ op[2] = rndmode[rm]; + } + else if (func == 0x05 && rm < 2) + { +@@ -1007,7 +1007,7 @@ riscv_disasm (Ebl *ebl, + "beq", "bne", NULL, NULL, "blt", "bge", "bltu", "bgeu" + }; + func = (word >> 12) & 0x7; +- mne = (char *) branchmne[func]; ++ mne = branchmne[func]; + if (rs1 == 0 && func == 5) + { + op[0] = op[1]; +@@ -1035,7 +1035,7 @@ riscv_disasm (Ebl *ebl, + else if (func == 5 || func == 7) + { + // binutils use these opcodes and the reverse parameter order +- char *tmp = op[0]; ++ const char *tmp = op[0]; + op[0] = op[1]; + op[1] = tmp; + mne = func == 5 ? "ble" : "bleu"; +@@ -1103,7 +1103,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, "frflags", "frrm", "frsr", + }; +- mne = (char *) unprivrw[csr - 0x000]; ++ mne = unprivrw[csr - 0x000]; + } + else if (csr >= 0xc00 && csr <= 0xc03) + { +@@ -1111,7 +1111,7 @@ riscv_disasm (Ebl *ebl, + { + "rdcycle", "rdtime", "rdinstret" + }; +- mne = (char *) unprivrolow[csr - 0xc00]; ++ mne = unprivrolow[csr - 0xc00]; + } + op[0] = REG ((word >> 7) & 0x1f); + } +@@ -1128,7 +1128,7 @@ riscv_disasm (Ebl *ebl, + { + NULL, "fsflagsi", "fsrmi", NULL + }; +- mne = (char *) ((word & 0x4000) == 0 ? unprivrs : unprivrsi)[csr - 0x000]; ++ mne = ((word & 0x4000) == 0 ? unprivrs : unprivrsi)[csr - 0x000]; + + if ((word & 0x4000) == 0) + op[0] = REG ((word >> 15) & 0x1f); +@@ -1259,12 +1259,12 @@ riscv_disasm (Ebl *ebl, + if (rd != 0) + op[last++] = REG (rd); + struct known_csrs key = { csr, NULL }; +- struct known_csrs *found = bsearch (&key, known, +- sizeof (known) / sizeof (known[0]), +- sizeof (known[0]), +- compare_csr); ++ const struct known_csrs *found = bsearch (&key, known, ++ sizeof (known) / sizeof (known[0]), ++ sizeof (known[0]), ++ compare_csr); + if (found) +- op[last] = (char *) found->name; ++ op[last] = found->name; + else + { + snprintf (addrbuf, sizeof (addrbuf), "0x%" PRIx32, csr); +@@ -1289,7 +1289,7 @@ riscv_disasm (Ebl *ebl, + else if (instr == 3 && rd == 0) + mne = "csrc"; + else +- mne = (char *) mnecsr[instr]; ++ mne = mnecsr[instr]; + } + break; + default: +diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c +index be10cdee..76db2929 100644 +--- a/libdw/dwarf_getsrclines.c ++++ b/libdw/dwarf_getsrclines.c +@@ -364,7 +364,7 @@ read_srcfiles (Dwarf *dbg, + const unsigned char *dirp = linep; + while (dirp < lineendp && *dirp != 0) + { +- uint8_t *endp = memchr (dirp, '\0', lineendp - dirp); ++ const uint8_t *endp = memchr (dirp, '\0', lineendp - dirp); + if (endp == NULL) + goto invalid_data; + ++ndirs; +@@ -440,7 +440,7 @@ read_srcfiles (Dwarf *dbg, + for (unsigned int n = 1; n < ndirlist; n++) + { + dirarray[n].dir = (char *) linep; +- uint8_t *endp = memchr (linep, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (linep, '\0', lineendp - linep); + assert (endp != NULL); // Checked above when calculating ndirlist. + dirarray[n].len = endp - linep; + linep = endp + 1; +@@ -927,7 +927,7 @@ read_srclines (Dwarf *dbg, + case DW_LNE_define_file: + { + char *fname = (char *) linep; +- uint8_t *endp = memchr (linep, '\0', lineendp - linep); ++ const uint8_t *endp = memchr (linep, '\0', lineendp - linep); + if (endp == NULL) + goto invalid_data; + size_t fnamelen = endp - linep; +diff --git a/src/readelf.c b/src/readelf.c +index a2d17358..fbdf8c71 100644 +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -8269,7 +8269,7 @@ attr_callback (Dwarf_Attribute *attrp, void *arg) + valuestr = dwarf_filesrc (files, num, NULL, NULL); + if (valuestr != NULL) + { +- char *filename = strrchr (valuestr, '/'); ++ const char *filename = strrchr (valuestr, '/'); + if (filename != NULL) + valuestr = filename + 1; + } +@@ -9033,7 +9033,7 @@ print_form_data (Dwarf *dbg, int form, const unsigned char *readp, + Dwarf_Off str_offsets_base, FILE *out) + { + Dwarf_Word val; +- unsigned char *endp; ++ const unsigned char *endp; + Elf_Data *data; + char *str; + switch (form) +@@ -9530,7 +9530,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + { + while (linep < lineendp && *linep != 0) + { +- unsigned char *endp = memchr (linep, '\0', lineendp - linep); ++ const unsigned char *endp = memchr (linep, '\0', lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; + +@@ -9764,7 +9764,7 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, + case DW_LNE_define_file: + { + char *fname = (char *) linep; +- unsigned char *endp = memchr (linep, '\0', ++ const unsigned char *endp = memchr (linep, '\0', + lineendp - linep); + if (unlikely (endp == NULL)) + goto invalid_unit; +-- +2.52.0 + diff --git a/elfutils.spec b/elfutils.spec index cbd3bf3..803a824 100644 --- a/elfutils.spec +++ b/elfutils.spec @@ -4,7 +4,7 @@ Name: elfutils Version: 0.194 -%global baserelease 1 +%global baserelease 2 Release: %{baserelease}%{?dist} URL: http://elfutils.org/ %global source_url ftp://sourceware.org/pub/elfutils/%{version}/ @@ -100,6 +100,9 @@ Patch1: elfutils-0.186-fdo-swap.patch # Prevent assert failure in readelf for some -ggdb3 binaries. Patch2: elfutils-0.194-alloc-jobs.patch +# Fix const warning from newer GCC. +Patch3: elfutils-0.194-fix-const.patch + %description Elfutils is a collection of utilities, including stack (to show backtraces), nm (for listing symbols from object files), size @@ -522,6 +525,9 @@ exit 0 %systemd_postun_with_restart debuginfod.service %changelog +* Tue Dec 09 2025 Aaron Merey - 0.194-2 +- Add elfutils-0.194-fix-const.patch + * Tue Oct 28 2025 Aaron Merey - 0.194-1 - Upgrade to upstream elfutils 0.194 - Add elfutils-0.194-alloc-jobs.patch