Compare commits

...
Sign in to create a new pull request.

50 commits

Author SHA1 Message Date
Aaron Merey
fe81122781
0.194-2
Add elfutils-0.194-fix-const.patch
2025-12-09 10:23:48 -05:00
Aaron Merey
77509c6ab0
0.194-1
- Upgrade to upstream elfutils 0.194
- Add elfutils-0.194-alloc-jobs.patch
2025-10-28 16:49:18 -04:00
Fedora Release Engineering
d93e194c37 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-23 19:47:24 +00:00
Aaron Merey
accba9105d Bump release version 2025-04-30 08:56:27 -04:00
Aaron Merey
1e730db939 0.193-2
Include libdwfl_stacktrace.h unconditionally
2025-04-30 08:54:03 -04:00
Aaron Merey
6d89dc3f7e Include libdwfl_stacktrace.h when building eu-stacktrace 2025-04-30 08:38:12 -04:00
Aaron Merey
34ae6eb109 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
2025-04-28 18:01:43 -04:00
Frank Ch. Eigler
3e1c6bb1d8 Update elfutils.spec, supporting dist_debuginfod_url values with spaces 2025-04-08 17:32:01 +00:00
Mark Wielaard
d699b95958 0.192-9 - Add elfutils-0.192-imasig-fail-free.patch 2025-02-23 13:32:24 +01:00
Fedora Release Engineering
f6430a4ebd Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-16 16:47:28 +00:00
Mark Wielaard
1e27db2f4c 0.192-7
- Add elfutils-0.192-ATOMIC_VAR_INIT.patch
- Add elfutils-0.192-more-dwarf5-lang.patch
2024-12-02 23:41:40 +01:00
Aaron Merey
861e4d63d5 0.192-6
- Add elfutils-0.192-strip-ignore-non-ET_REL.patch
- Set debuginfod IMA cert path
2024-11-12 13:44:16 -05:00
Aaron Merey
347c8e91ee 0.192-5
- Enable debuginfod IMA verification
- Add elfutils-0.192-fix-configure-conditional.patch
- Add elfutils-0.192-fix-zsh-profile.patch
2024-10-29 15:04:52 -04:00
Mark Wielaard
72bb5b7f42 0.192-4 - Enable eu-stacktrace on x86_64 2024-10-24 15:21:23 +02:00
Aaron Merey
e50c1eff30 0.192-3 Add elfutils-0.192-libelf-static.patch 2024-10-22 14:03:15 -04:00
Aaron Merey
309360885c Add BuildRequires for json-c
New libdebuginfod dependency.
2024-10-21 17:54:44 -04:00
Aaron Merey
b91c7473d0 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
2024-10-21 16:41:38 -04:00
Fedora Release Engineering
53f97b514f Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-17 21:51:45 +00:00
Aaron Merey
58b9fb4783 0.191-7
Capitalize SPDX booleans.
2024-04-22 16:40:49 -04:00
Mark Wielaard
8201cf7984 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.
2024-04-19 14:30:56 +02:00
Mark Wielaard
42ca992686 0.191-5 - Add elfutils-0.190-profile-empty-urls.patch 2024-03-27 15:48:18 +01:00
Mark Wielaard
abfa37e359 0.191-4 - Add elfutils-0.190-riscv-flatten.patch 2024-03-20 16:47:31 +01:00
Michel Lind
b3d29104fe
Make elfutils-libelf-static subpackage (not built by default) pull in
libzstd-static

Signed-off-by: Michel Lind <salimma@fedoraproject.org>
2024-03-15 11:10:43 -07:00
Michel Lind
f5ae9e95e9
Add feature flag to reenable elfutils-libelf-devel-static and elfutils-devel-static
This reverts commit ec548c1605.

Signed-off-by: Michel Lind <salimma@fedoraproject.org>
2024-03-11 13:04:12 -05:00
Aaron Merey
3bd65efc37 Increment baserelease 2024-03-04 15:57:19 -05:00
Aaron Merey
3bb662da98 Correct another SPDX license formula
Operators must be capitalized.
2024-03-04 15:40:54 -05:00
Aaron Merey
4124e4f1f2 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
2024-03-04 11:30:42 -05:00
Miroslav Suchý
0f01156de5 Correct SPDX license formula
The operator has to be upper case according to the standard.
2024-02-29 06:14:25 +00:00
Fedora Release Engineering
fc141358f5 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-24 10:15:47 +00:00
Yaakov Selkowitz
30c0ab2617 Fix build with GCC 14
https://sourceware.org/git/?p=elfutils.git;h=ae580d48278b9924da7503886b37be34378e1b04
2024-01-19 14:25:33 -05:00
Fedora Release Engineering
ea7ed5a10d Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-19 17:59:24 +00:00
Aaron Merey
0aecb034b0 0.190-4 - Add elfutils-0.190-remove-ET_REL-unstrip-test.patch 2023-11-28 17:12:38 -05:00
Aaron Merey
67d56959ad 0.190-3 - Add elfutils-0.190-fix-core-noncontig.patch 2023-11-24 16:33:03 -05:00
Mark Wielaard
4bf94eb436 0.190-2 - Update Fedora license tags to spdx license tags 2023-11-04 01:10:11 +01:00
Mark Wielaard
d6169014dd 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
2023-11-03 21:21:05 +01:00
Mark Wielaard
87c5e66753 0.189-6 - Update elfutils-0.189-relr.patch 2023-08-25 01:15:22 +02:00
Mark Wielaard
6258998871 0.189-5 - Add elfutils-0.189-relr.patch 2023-08-24 00:16:51 +02:00
Fedora Release Engineering
62b5826af2 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-19 18:20:35 +00:00
Mark Wielaard
cb376abe7f 0.189-3 - Add elfutils-0.189-debuginfod_config_cache-double-close.patch 2023-06-22 15:10:49 +02:00
Mark Wielaard
87f9e5c38d Add elfutils-0.189-elf_getdata_rawchunk.patch 2023-06-22 15:08:31 +02:00
Martin Cermak
771965e4bc CI Tests: Simplify test for rhbz2188064 2023-04-25 12:50:10 +02:00
Martin Cermak
7c06a3670c CI Tests: Test cover rhbz2188064 2023-04-25 12:40:59 +02:00
Mark Wielaard
25ede0eead 0.189-2 2023-04-22 22:29:20 +02:00
Mark Wielaard
4ae92c9668 Add elfutils-0.189-elfcompress.patch 2023-04-22 22:28:38 +02:00
Mark Wielaard
829b595e08 Add elfutils-0.189-c99-compat.patch 2023-04-22 22:23:26 +02:00
Martin Cermak
66e41cec57 CI Tests: Fix the debuginfod URL 2023-03-06 10:06:48 +01:00
Mark Wielaard
cb75800050 0.189-1 - Upgrade to upsteam elfutils 0.189 2023-03-03 17:44:51 +01:00
Martin Cermak
ad7295b997 CI Tests: Update Regression/GNU-Attribute-notes-not-recognized 2023-02-13 12:56:12 +01:00
Mark Wielaard
c468385a0e 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
2023-01-27 19:09:22 +01:00
Fedora Release Engineering
a1e6f5590c Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-19 02:12:19 +00:00
14 changed files with 798 additions and 344 deletions

6
.gitignore vendored
View file

@ -29,3 +29,9 @@
/elfutils-0.186.tar.bz2 /elfutils-0.186.tar.bz2
/elfutils-0.187.tar.bz2 /elfutils-0.187.tar.bz2
/elfutils-0.188.tar.bz2 /elfutils-0.188.tar.bz2
/elfutils-0.189.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

@ -1,109 +0,0 @@
commit 75f2de448f311807e2493f2a37a980e2d872b229
Author: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
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 <mark@klomp.org>
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 <mark@klomp.org>
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 <mark@klomp.org>
Date: Thu Nov 3 13:52:32 2022 +0100
readelf: Check gelf_getdyn doesn't return NULL
Signed-off-by: Mark Wielaard <mark@klomp.org>
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) {

View file

@ -1,171 +0,0 @@
commit c424e5f3d24f76e01242d15ba361dc6234706fed
Author: Frank Ch. Eigler <fche@redhat.com>
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 <fche@redhat.com>
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<debuginfod_client*,void> 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)

View file

@ -1,24 +0,0 @@
commit 58a7aa900bc2d9822b0d0cb596ba95a21ff0fd2d
Author: Mark Wielaard <mark@klomp.org>
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 <mark@klomp.org>
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);

View file

@ -0,0 +1,135 @@
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

@ -0,0 +1,301 @@
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,10 +1,14 @@
# Rebuild --with static to enable static subpackages
# This is *not* supported by elfutils maintainers
%bcond_with static
Name: elfutils Name: elfutils
Version: 0.188 Version: 0.194
%global baserelease 3 %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: 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 Source: %{?source_url}%{name}-%{version}.tar.bz2
Source1: elfutils-debuginfod.sysusers Source1: elfutils-debuginfod.sysusers
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
@ -12,13 +16,16 @@ 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
@ -39,6 +46,8 @@ 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
@ -50,6 +59,19 @@ 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
@ -74,12 +96,12 @@ 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
# Don't export internal function.
Patch2: elfutils-0.188-static-extract_section.patch # Prevent assert failure in readelf for some -ggdb3 binaries.
# Silence some compiler warnings Patch2: elfutils-0.194-alloc-jobs.patch
Patch3: elfutils-0.188-compile-warnings.patch
# The debuginfod_client object lifetime needs more careful handling # Fix const warning from newer GCC.
Patch4: elfutils-0.188-debuginfod-client-lifetime.patch 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
@ -91,7 +113,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: GPLv2+ or LGPLv3+ 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
@ -114,7 +136,7 @@ libraries.
%package devel %package devel
Summary: Development libraries to handle compiled objects 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} %if 0%{!?_isa:1}
Provides: elfutils-devel%{depsuffix} = %{version}-%{release} Provides: elfutils-devel%{depsuffix} = %{version}-%{release}
%endif %endif
@ -125,7 +147,6 @@ 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
@ -133,9 +154,24 @@ 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: GPLv2+ or LGPLv3+ 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
@ -149,13 +185,12 @@ 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: GPLv2+ or LGPLv3+ 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
@ -163,10 +198,25 @@ 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: GPLv2+ or LGPLv3+ 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.
@ -200,7 +250,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: 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} %if 0%{!?_isa:1}
Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%endif %endif
@ -210,7 +260,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: GPLv2+ or LGPLv3+ 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
@ -218,7 +268,7 @@ Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%package debuginfod %package debuginfod
Summary: HTTP ELF/DWARF file server addressed by build-id 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-libs%{depsuffix} = %{version}-%{release}
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release} Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release} Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
@ -278,11 +328,16 @@ 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}"
%configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=%{dist_debuginfod_url} --enable-debuginfod \
%else --enable-debuginfod-urls="%{dist_debuginfod_url}" \
%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
@ -290,8 +345,10 @@ 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}
@ -354,7 +411,11 @@ fi
%{_bindir}/eu-ranlib %{_bindir}/eu-ranlib
%{_bindir}/eu-readelf %{_bindir}/eu-readelf
%{_bindir}/eu-size %{_bindir}/eu-size
%{_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
@ -377,10 +438,17 @@ 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
@ -393,6 +461,15 @@ 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
@ -408,6 +485,7 @@ 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
@ -424,7 +502,6 @@ fi
%{_sysusersdir}/elfutils-debuginfod.conf %{_sysusersdir}/elfutils-debuginfod.conf
%endif %endif
%{_mandir}/man8/debuginfod*.8* %{_mandir}/man8/debuginfod*.8*
%{_mandir}/man7/debuginfod*.7*
%dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod
@ -448,6 +525,148 @@ 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
- Add elfutils-0.194-fix-const.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
* Fri Nov 24 2023 Aaron Merey <amerey@fedoraproject.org> - 0.190-3
- 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
- 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 <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
- Add elfutils-0.189-elf_getdata_rawchunk.patch
- Add elfutils-0.189-debuginfod_config_cache-double-close.patch
* Sat Apr 22 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.189-2
- Add elfutils-0.189-c99-compat.patch
- Add elfutils-0.189-elfcompress.patch
* Fri Mar 3 2023 Mark Wielaard <mjw@fedoraproject.org> - 0.189-1
- Upgrade to upsteam elfutils 0.189.
* Fri Jan 27 2023 Mark Wielaard <mjw@fedoraproject.org> - 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 <releng@fedoraproject.org> - 0.188-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Mon Nov 7 2022 Mark Wielaard <mjw@fedoraproject.org> - 0.188-3 * Mon Nov 7 2022 Mark Wielaard <mjw@fedoraproject.org> - 0.188-3
- Add elfutils-0.188-compile-warnings.patch - Add elfutils-0.188-compile-warnings.patch
- Add elfutils-0.188-debuginfod-client-lifetime.patch - Add elfutils-0.188-debuginfod-client-lifetime.patch

View file

@ -1 +1 @@
SHA512 (elfutils-0.188.tar.bz2) = 585551b2d937d19d1becfc2f28935db1dd1a3d25571a62f322b70ac8da98c1a741a55d070327705df6c3e2ee026652e0b9a3c733b050a0b0ec5f2fc75d5b74b5 SHA512 (elfutils-0.194.tar.bz2) = 5d00502f61b92643bf61dc61da4ddded36c423466388d992bcd388c5208761b8ed9db1a01492c085cd0984eef30c08f895a8e307e78e0df8df40b56ae35b78a5

View file

@ -54,7 +54,7 @@ $(METADATA): Makefile
@echo "TestTime: 48h" >> $(METADATA) @echo "TestTime: 48h" >> $(METADATA)
@echo "RunFor: elfutils" >> $(METADATA) @echo "RunFor: elfutils" >> $(METADATA)
@echo "Requires: elfutils" >> $(METADATA) @echo "Requires: elfutils" >> $(METADATA)
@echo "Requires: bash" >> $(METADATA) @echo "Requires: bash bash-debuginfo" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA) @echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2+" >> $(METADATA) @echo "License: GPLv2+" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA) @echo "Confidential: no" >> $(METADATA)

View file

@ -2,15 +2,15 @@ summary: GNU-Attribute-notes-not-recognized
description: | description: |
Bug summary: elfutils doesn't recognize GNU Attribute notes Bug summary: elfutils doesn't recognize GNU Attribute notes
Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1650125 Bugzilla link: https://bugzilla.redhat.com/show_bug.cgi?id=1650125
contact: contact: Martin Cermak <mcermak@redhat.com>
- Martin Cermak <mcermak@redhat.com>
component: component:
- elfutils - elfutils
test: ./runtest.sh test: ./runtest.sh
framework: beakerlib framework: beakerlib
recommend: recommend:
- elfutils - elfutils
- bash - bash
- bash-debuginfo
duration: 48h duration: 48h
extra-summary: /tools/elfutils/Regression/GNU-Attribute-notes-not-recognized extra-summary: /tools/elfutils/Regression/GNU-Attribute-notes-not-recognized
extra-task: /tools/elfutils/Regression/GNU-Attribute-notes-not-recognized extra-task: /tools/elfutils/Regression/GNU-Attribute-notes-not-recognized

View file

@ -32,12 +32,35 @@ PACKAGE="elfutils"
rlJournalStart rlJournalStart
rlPhaseStartTest rlPhaseStartTest
# Rely on that /bin/bash is annobin-annotated per # Rely on that /bin/bash is annobin-annotated per
# - https://fedoraproject.org/wiki/Toolchain/Watermark # - https://fedoraproject.org/wiki/Toolchain/Watermark
# - https://fedoraproject.org/wiki/Changes/Annobin # - https://fedoraproject.org/wiki/Changes/Annobin
# Seems to work fine with bash-4.4.19-6.el8 and elfutils-0.174-5.el8. # Seems to work fine with bash-4.4.19-6.el8 and elfutils-0.174-5.el8.
set -o pipefail f="/bin/bash"
rlRun "eu-readelf -n /bin/bash | grep -2 '^ GA' | fgrep 'GNU Build Attribute' | tail -50"
# 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=https://debuginfod.fedoraproject.org/
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 rlPhaseEnd
rlJournalPrintText rlJournalPrintText
rlJournalEnd rlJournalEnd

View file

@ -0,0 +1,4 @@
int main()
{
return 0;
}

View file

@ -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 <mcermak@redhat.com>
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

View file

@ -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 <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# 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