Compare commits

..

10 commits

Author SHA1 Message Date
Aaron Merey
d5f93720bb 0.190-2
- Update Fedora license tags to spdx license tags
- Add elfutils-0.190-fix-core-noncontig.patch
- Add elfutils-0.190-remove-ET_REL-unstrip-test.patch
2023-11-29 14:23:33 -05:00
Mark Wielaard
6a0f0e45c4 0.190-1
- Upgrade to upstream elfutils 0.190
- Add eu-srcfiles
- Drop upstreamed patches
  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
2023-11-10 11:05:46 +01:00
Mark Wielaard
dc22742a61 0.189-3 - Add elfutils-0.189-debuginfod_config_cache-double-close.patch 2023-07-04 00:12:04 +02:00
Mark Wielaard
e719860fcd Add elfutils-0.189-elf_getdata_rawchunk.patch 2023-07-04 00:11:51 +02:00
Martin Cermak
fb3a116370 CI Tests: Simplify test for rhbz2188064 2023-04-28 19:53:30 +02:00
Martin Cermak
0d0a9de978 CI Tests: Test cover rhbz2188064 2023-04-28 19:53:30 +02:00
Mark Wielaard
76ba0b256c 0.189-2 2023-04-28 19:53:30 +02:00
Mark Wielaard
8bb416f870 Add elfutils-0.189-elfcompress.patch 2023-04-28 19:53:30 +02:00
Mark Wielaard
fda83a73f8 Add elfutils-0.189-c99-compat.patch 2023-04-28 19:53:30 +02:00
Martin Cermak
ea8d0bf5ce CI Tests: Fix the debuginfod URL 2023-03-08 12:44:48 +01:00
8 changed files with 391 additions and 654 deletions

4
.gitignore vendored
View file

@ -31,7 +31,3 @@
/elfutils-0.188.tar.bz2 /elfutils-0.188.tar.bz2
/elfutils-0.189.tar.bz2 /elfutils-0.189.tar.bz2
/elfutils-0.190.tar.bz2 /elfutils-0.190.tar.bz2
/elfutils-0.191.tar.bz2
/elfutils-0.192.tar.bz2
/elfutils-0.193.tar.bz2
/elfutils-0.194.tar.bz2

View file

@ -0,0 +1,329 @@
From 0fba72fed595f77ca19a57553096ce3cc81cf8f3 Mon Sep 17 00:00:00 2001
From: Aaron Merey <amerey@redhat.com>
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 <amerey@redhat.com>
---
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 <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <assert.h>
+#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 <http://www.gnu.org/licenses/>.
+
+. $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 <unistd.h>
+# #include <dlfcn.h>
+#
+# 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

View file

@ -0,0 +1,32 @@
From 010cacd89b847659b3c666ac963269b06a8c5058 Mon Sep 17 00:00:00 2001
From: Aaron Merey <amerey@redhat.com>
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

View file

@ -1,135 +0,0 @@
From f66135f16fe44182a3fc5b651d7e5071c936217d Mon Sep 17 00:00:00 2001
From: Aaron Merey <amerey@redhat.com>
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 <amerey@redhat.com>
---
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

View file

@ -1,301 +0,0 @@
From 4a5cf8be906d5991e7527e69e3f2ceaa74811301 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
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

View file

@ -1,31 +1,25 @@
# Rebuild --with static to enable static subpackages
# This is *not* supported by elfutils maintainers
%bcond_with static
Name: elfutils Name: elfutils
Version: 0.194 Version: 0.190
%global baserelease 2 %global baserelease 2
Release: %{baserelease}%{?dist} Release: %{baserelease}%{?dist}
URL: http://elfutils.org/ URL: http://elfutils.org/
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/ %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 Source: %{?source_url}%{name}-%{version}.tar.bz2
Source1: elfutils-debuginfod.sysusers Source1: elfutils-debuginfod.sysusers
Source2: testcore-noncontig.bz2
Summary: A collection of utilities and DSOs to handle ELF files and DWARF data Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
# Needed for isa specific Provides and Requires. # Needed for isa specific Provides and Requires.
%global depsuffix %{?_isa}%{!?_isa:-%{_arch}} %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-libelf%{depsuffix} = %{version}-%{release}
Requires: elfutils-libs%{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} Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%endif
BuildRequires: gcc BuildRequires: gcc
# For libstdc++ demangle support # For libstdc++ demangle support
@ -46,8 +40,6 @@ BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33
BuildRequires: pkgconfig(libcurl) >= 7.29.0 BuildRequires: pkgconfig(libcurl) >= 7.29.0
BuildRequires: pkgconfig(sqlite3) >= 3.7.17 BuildRequires: pkgconfig(sqlite3) >= 3.7.17
BuildRequires: pkgconfig(libarchive) >= 3.1.2 BuildRequires: pkgconfig(libarchive) >= 3.1.2
# For debugindod metadata query
BuildRequires: pkgconfig(json-c) >= 0.11
# For tests need to bunzip2 test files. # For tests need to bunzip2 test files.
BuildRequires: bzip2 BuildRequires: bzip2
@ -59,19 +51,6 @@ BuildRequires: bsdtar
BuildRequires: curl BuildRequires: curl
# For run-debuginfod-response-headers.sh test case # For run-debuginfod-response-headers.sh test case
BuildRequires: socat 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
%endif
BuildRequires: automake BuildRequires: automake
BuildRequires: autoconf BuildRequires: autoconf
@ -96,12 +75,10 @@ BuildRequires: gettext-devel
# For s390x... FDO package notes are bogus. # For s390x... FDO package notes are bogus.
Patch1: elfutils-0.186-fdo-swap.patch Patch1: elfutils-0.186-fdo-swap.patch
# PR30975: Fix handling of corefiles with non-contiguous .so segments.
# Prevent assert failure in readelf for some -ggdb3 binaries. Patch2: elfutils-0.190-fix-core-noncontig.patch
Patch2: elfutils-0.194-alloc-jobs.patch # Remove obscure tests that can fail on i386.
Patch3: elfutils-0.190-remove-ET_REL-unstrip-test.patch
# Fix const warning from newer GCC.
Patch3: elfutils-0.194-fix-const.patch
%description %description
Elfutils is a collection of utilities, including stack (to show Elfutils is a collection of utilities, including stack (to show
@ -113,7 +90,7 @@ elfcompress (to compress or decompress ELF sections).
%package libs %package libs
Summary: Libraries to handle compiled objects 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} %if 0%{!?_isa:1}
Provides: elfutils-libs%{depsuffix} = %{version}-%{release} Provides: elfutils-libs%{depsuffix} = %{version}-%{release}
%endif %endif
@ -136,7 +113,7 @@ libraries.
%package devel %package devel
Summary: Development libraries to handle compiled objects 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} %if 0%{!?_isa:1}
Provides: elfutils-devel%{depsuffix} = %{version}-%{release} Provides: elfutils-devel%{depsuffix} = %{version}-%{release}
%endif %endif
@ -147,6 +124,7 @@ Recommends: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release}
%else %else
Requires: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release} Requires: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release}
%endif %endif
Obsoletes: elfutils-devel-static < 0.180-5
%description devel %description devel
The elfutils-devel package contains the libraries to create The elfutils-devel package contains the libraries to create
@ -154,24 +132,9 @@ applications for handling compiled objects. libdw provides access
to the DWARF debugging information. libasm provides a programmable to the DWARF debugging information. libasm provides a programmable
assembler interface. 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 %package libelf
Summary: Library to read and write ELF files 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} %if 0%{!?_isa:1}
Provides: elfutils-libelf%{depsuffix} = %{version}-%{release} Provides: elfutils-libelf%{depsuffix} = %{version}-%{release}
%endif %endif
@ -185,12 +148,13 @@ elfutils package use it also to generate new ELF files.
%package libelf-devel %package libelf-devel
Summary: Development support for libelf 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} %if 0%{!?_isa:1}
Provides: elfutils-libelf-devel%{depsuffix} = %{version}-%{release} Provides: elfutils-libelf-devel%{depsuffix} = %{version}-%{release}
%endif %endif
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Obsoletes: libelf-devel <= 0.8.2-2 Obsoletes: libelf-devel <= 0.8.2-2
Obsoletes: elfutils-libelf-devel-static < 0.180-5
%description libelf-devel %description libelf-devel
The elfutils-libelf-devel package contains the libraries to create The elfutils-libelf-devel package contains the libraries to create
@ -198,25 +162,10 @@ applications for handling compiled objects. libelf allows you to
access the internals of the ELF object file format, so you can see the access the internals of the ELF object file format, so you can see the
different sections of an ELF file. 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}
Requires: libzstd-static%{depsuffix}
%description libelf-devel-static
The elfutils-libelf-static package contains the static archive
for libelf.
%endif
%if %{provide_yama_scope} %if %{provide_yama_scope}
%package default-yama-scope %package default-yama-scope
Summary: Default yama attach scope sysctl setting 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 Provides: default-yama-scope
BuildArch: noarch BuildArch: noarch
# For the sysctl_apply macro we need systemd as build requires. # For the sysctl_apply macro we need systemd as build requires.
@ -250,7 +199,7 @@ profiling) of processes.
%package debuginfod-client %package debuginfod-client
Summary: Library and command line client for build-id HTTP ELF/DWARF server 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} %if 0%{!?_isa:1}
Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%endif %endif
@ -260,7 +209,7 @@ Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
%package debuginfod-client-devel %package debuginfod-client-devel
Summary: Libraries and headers to build debuginfod client applications 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} %if 0%{!?_isa:1}
Provides: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release} Provides: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release}
%endif %endif
@ -314,6 +263,8 @@ autoreconf -f -v -i
# are executable. # are executable.
find . -name \*.sh ! -perm -0100 -print | xargs chmod +x find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
cp %{SOURCE2} tests
%build %build
# Remove -Wall from default flags. The makefiles enable enough warnings # Remove -Wall from default flags. The makefiles enable enough warnings
# themselves, and they use -Werror. Appending -Wall defeats the cases where # themselves, and they use -Werror. Appending -Wall defeats the cases where
@ -328,16 +279,11 @@ trap 'cat config.log' EXIT
# dist_debuginfod_url is defined in macros.dist. Fedora and CentOS have # dist_debuginfod_url is defined in macros.dist. Fedora and CentOS have
# URLs pointing to their respective servers. RHEL and Amazon Linux do # URLs pointing to their respective servers. RHEL and Amazon Linux do
# not configure a default server. # not configure a default server.
%configure CFLAGS="$RPM_OPT_FLAGS" \
%if "%{?dist_debuginfod_url}" %if "%{?dist_debuginfod_url}"
--enable-debuginfod \ %configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=%{dist_debuginfod_url}
--enable-debuginfod-urls="%{dist_debuginfod_url}" \ %else
%configure CFLAGS="$RPM_OPT_FLAGS"
%endif %endif
%if %{enable_stacktrace}
--enable-stacktrace \
%endif
--enable-debuginfod-ima-verification \
--enable-debuginfod-ima-cert-path=%{_sysconfdir}/keys/ima
trap '' EXIT trap '' EXIT
%make_build %make_build
@ -345,10 +291,8 @@ trap '' EXIT
%make_install %make_install
chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so* chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so*
%if %{without static}
# We don't want the static libraries # We don't want the static libraries
rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib{elf,dw,asm}.a rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib{elf,dw,asm}.a
%endif
%find_lang %{name} %find_lang %{name}
@ -413,9 +357,6 @@ fi
%{_bindir}/eu-size %{_bindir}/eu-size
%{_bindir}/eu-srcfiles %{_bindir}/eu-srcfiles
%{_bindir}/eu-stack %{_bindir}/eu-stack
%if %{enable_stacktrace}
%{_bindir}/eu-stacktrace
%endif
%{_bindir}/eu-strings %{_bindir}/eu-strings
%{_bindir}/eu-strip %{_bindir}/eu-strip
%{_bindir}/eu-unstrip %{_bindir}/eu-unstrip
@ -438,17 +379,10 @@ fi
%{_includedir}/elfutils/libdwfl.h %{_includedir}/elfutils/libdwfl.h
%{_includedir}/elfutils/libdwelf.h %{_includedir}/elfutils/libdwelf.h
%{_includedir}/elfutils/version.h %{_includedir}/elfutils/version.h
%{_includedir}/elfutils/libdwfl_stacktrace.h
%{_libdir}/libasm.so %{_libdir}/libasm.so
%{_libdir}/libdw.so %{_libdir}/libdw.so
%{_libdir}/pkgconfig/libdw.pc %{_libdir}/pkgconfig/libdw.pc
%if %{with static}
%files devel-static
%{_libdir}/libdw.a
%{_libdir}/libasm.a
%endif
%files -f %{name}.lang libelf %files -f %{name}.lang libelf
%license COPYING-GPLV2 COPYING-LGPLV3 %license COPYING-GPLV2 COPYING-LGPLV3
%{_libdir}/libelf-%{version}.so %{_libdir}/libelf-%{version}.so
@ -461,15 +395,6 @@ fi
%{_libdir}/libelf.so %{_libdir}/libelf.so
%{_libdir}/pkgconfig/libelf.pc %{_libdir}/pkgconfig/libelf.pc
%{_mandir}/man3/elf_*.3* %{_mandir}/man3/elf_*.3*
%{_mandir}/man3/elf32_*.3*
%{_mandir}/man3/elf64_*.3*
%{_mandir}/man3/gelf_*.3*
%{_mandir}/man3/libelf.3*
%if %{with static}
%files libelf-devel-static
%{_libdir}/libelf.a
%endif
%if %{provide_yama_scope} %if %{provide_yama_scope}
%files default-yama-scope %files default-yama-scope
@ -485,7 +410,6 @@ fi
%config(noreplace) %{_sysconfdir}/profile.d/* %config(noreplace) %{_sysconfdir}/profile.d/*
%if "%{?dist_debuginfod_url}" %if "%{?dist_debuginfod_url}"
%config(noreplace) %{_sysconfdir}/debuginfod/* %config(noreplace) %{_sysconfdir}/debuginfod/*
%config(noreplace) %{_datadir}/fish/vendor_conf.d/*
%endif %endif
%files debuginfod-client-devel %files debuginfod-client-devel
@ -525,129 +449,21 @@ exit 0
%systemd_postun_with_restart debuginfod.service %systemd_postun_with_restart debuginfod.service
%changelog %changelog
* Tue Dec 09 2025 Aaron Merey <amerey@redhat.com> - 0.194-2 * Wed Nov 29 2023 Aaron Merey <amerey@fedoraproject.org> - 0.190-2
- Add elfutils-0.194-fix-const.patch - Update Fedora license tags to spdx license tags
- Add elfutils-0.190-fix-core-noncontig.patch
* Tue Oct 28 2025 Aaron Merey <amerey@redhat.com> - 0.194-1
- Upgrade to upstream elfutils 0.194
- Add elfutils-0.194-alloc-jobs.patch
* Wed Jul 23 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.193-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Mon Apr 28 2025 Aaron Merey <amerey@redhat.com> - 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 <mjw@fedoraproject.org> - 0.192-9
- Add elfutils-0.192-imasig-fail-free.patch
* Thu Jan 16 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.192-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Mon Dec 2 2024 Mark Wielaard <mjw@fedoraproject.org> - 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 <amerey@fedoraproject.org> - 0.192-6
- Add elfutils-0.192-strip-ignore-non-ET_REL.patch
- Set debuginfod IMA cert path
* Tue Oct 29 2024 Aaron Merey <amerey@fedoraproject.org> - 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 <mjw@fedoraproject.org> - 0.192-4
- Add elfutils-0.192-stacktrace-lto.patch
- Enable eu-stacktrace on x86_64
* Tue Oct 22 2024 Aaron Merey <amerey@fedoraproject.org> - 0.192-3
- Add elfutils-0.192-libelf-static.patch
* Mon Oct 21 2024 Aaron Merey <amerey@fedoraproject.org> - 0.192-2
- Add BuildRequires for json-c
* Mon Oct 21 2024 Aaron Merey <amerey@fedoraproject.org> - 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 <releng@fedoraproject.org> - 0.191-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Mon Apr 22 2024 Aaron Merey <amerey@fedoraproject.org> - 0.191-7
- Capitalize SPDX booleans.
* Fri Apr 19 2024 Mark Wielaard <mjw@fedoraproject.org> - 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 <mjw@fedoraproject.org> - 0.191-5
- Add elfutils-0.190-profile-empty-urls.patch
* Wed Mar 20 2024 Mark Wielaard <mjw@fedoraproject.org> - 0.191-4
- Add elfutils-0.190-riscv-flatten.patch
* Fri Mar 15 2024 Michel Lind <salimma@fedoraproject.org> - 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 <amerey@fedoraproject.org> - 0.191-2
- Update SPDX license.
* Mon Mar 4 2024 Aaron Merey <amerey@fedoraproject.org> - 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 <releng@fedoraproject.org> - 0.190-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Fri Jan 19 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.190-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Tue Nov 28 2023 Aaron Merey <amerey@fedoraproject.org> - 0.190-4
- Add elfutils-0.190-remove-ET_REL-unstrip-test.patch - Add elfutils-0.190-remove-ET_REL-unstrip-test.patch
* Fri Nov 24 2023 Aaron Merey <amerey@fedoraproject.org> - 0.190-3 * Fri Nov 10 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.190-1
- Add elfutils-0.190-fix-core-noncontig.patch
* Fri Nov 3 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.190-2
- Update Fedora license tags to spdx license tags
* Fri Nov 3 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.190-1
- Upgrade to upstream elfutils 0.190 - Upgrade to upstream elfutils 0.190
- Add eu-srcfiles - Add eu-srcfiles
- Drop upstreamed patches - Drop upstreamed patches
elfutils-0.189-relr.patch
elfutils-0.189-debuginfod_config_cache-double-close.patch elfutils-0.189-debuginfod_config_cache-double-close.patch
elfutils-0.189-elf_getdata_rawchunk.patch elfutils-0.189-elf_getdata_rawchunk.patch
elfutils-0.189-elfcompress.patch elfutils-0.189-elfcompress.patch
elfutils-0.189-c99-compat.patch elfutils-0.189-c99-compat.patch
- Only package debuginfod-client-config.7 manpage for debuginfod-client - Only package debuginfod-client-config.7 manpage for debuginfod-client
* Thu Aug 24 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.189-6
- Update elfutils-0.189-relr.patch
* Wed Aug 23 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.189-5
- Add elfutils-0.189-relr.patch
* Wed Jul 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.189-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jun 22 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.189-3 * Thu Jun 22 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.189-3
- Add elfutils-0.189-elf_getdata_rawchunk.patch - Add elfutils-0.189-elf_getdata_rawchunk.patch
- Add elfutils-0.189-debuginfod_config_cache-double-close.patch - Add elfutils-0.189-debuginfod_config_cache-double-close.patch

View file

@ -1 +1 @@
SHA512 (elfutils-0.194.tar.bz2) = 5d00502f61b92643bf61dc61da4ddded36c423466388d992bcd388c5208761b8ed9db1a01492c085cd0984eef30c08f895a8e307e78e0df8df40b56ae35b78a5 SHA512 (elfutils-0.190.tar.bz2) = 9c4f5328097e028286c42f29e39dc3d80914b656cdfbbe05b639e91bc787ae8ae64dd4d69a6e317ce30c01648ded10281b86a51e718295f4c589df1225a48102

BIN
testcore-noncontig.bz2 Normal file

Binary file not shown.