Compare commits

...

No commits in common. 'c9' and 'i8' have entirely different histories.
c9 ... i8

@ -1 +1 @@
a4b4a20bf3976e71c280b6dfb8443dbdcdd3f2f0 SOURCES/elfutils-0.189.tar.bz2
5e23c010b7f9f45140a43e95d8d1f7fb04aa8302 SOURCES/elfutils-0.188.tar.bz2

2
.gitignore vendored

@ -1 +1 @@
SOURCES/elfutils-0.189.tar.bz2
SOURCES/elfutils-0.188.tar.bz2

@ -0,0 +1,109 @@
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) {

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

@ -0,0 +1,24 @@
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);

@ -1,73 +0,0 @@
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index ef4d47e3..d92d8d62 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -248,7 +248,7 @@ debuginfod_write_callback (char *ptr, size_t size, size_t nmemb, void *data)
/* handle config file read and write */
static int
-debuginfod_config_cache(char *config_path,
+debuginfod_config_cache(debuginfod_client *c, char *config_path,
long cache_config_default_s,
struct stat *st)
{
@@ -277,17 +277,27 @@ debuginfod_config_cache(char *config_path,
}
long cache_config;
+ /* PR29696 - NB: When using fdopen, the file descriptor is NOT
+ dup'ed and will be closed when the stream is closed. Manually
+ closing fd after fclose is called will lead to a race condition
+ where, if reused, the file descriptor will compete for its
+ regular use before being incorrectly closed here. */
FILE *config_file = fdopen(fd, "r");
if (config_file)
{
if (fscanf(config_file, "%ld", &cache_config) != 1)
- cache_config = cache_config_default_s;
- fclose(config_file);
+ cache_config = cache_config_default_s;
+ if (0 != fclose (config_file) && c->verbose_fd >= 0)
+ dprintf (c->verbose_fd, "fclose failed with %s (err=%d)\n",
+ strerror (errno), errno);
}
else
- cache_config = cache_config_default_s;
-
- close (fd);
+ {
+ cache_config = cache_config_default_s;
+ if (0 != close (fd) && c->verbose_fd >= 0)
+ dprintf (c->verbose_fd, "close failed with %s (err=%d)\n",
+ strerror (errno), errno);
+ }
return cache_config;
}
@@ -303,7 +313,7 @@ debuginfod_clean_cache(debuginfod_client *c,
struct stat st;
/* Create new interval file. */
- rc = debuginfod_config_cache(interval_path,
+ rc = debuginfod_config_cache(c, interval_path,
cache_clean_default_interval_s, &st);
if (rc < 0)
return rc;
@@ -320,7 +330,7 @@ debuginfod_clean_cache(debuginfod_client *c,
utime (interval_path, NULL);
/* Read max unused age value from config file. */
- rc = debuginfod_config_cache(max_unused_path,
+ rc = debuginfod_config_cache(c, max_unused_path,
cache_default_max_unused_age_s, &st);
if (rc < 0)
return rc;
@@ -1110,7 +1135,7 @@ debuginfod_query_server (debuginfod_client *c,
close(fd); /* no need to hold onto the negative-hit file descriptor */
- rc = debuginfod_config_cache(cache_miss_path,
+ rc = debuginfod_config_cache(c, cache_miss_path,
cache_miss_default_s, &st);
if (rc < 0)
goto out;

@ -1,224 +0,0 @@
From 3aca5b5f1f1617db2220022d9061dcaf129e54c4 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Wed, 21 Jun 2023 18:05:12 +0200
Subject: [PATCH] libelf: Replace list of elf_getdata_rawchunk results with a
tree
elf_getdata_rawchunks did a linear search to see if a chunk was
already fetched. Replace this list with a binary search tree to make
lookup faster when a lot of Elf_Data_Chunk were created.
* libelf/libelfP.h (Elf_Data_Chunk): Remove next field.
(struct Elf): Change the rawchunks type from Elf_Data_Chunk *
to void *.
* elf_getdata_rawchunk.c (chunk_compare): New static function.
(elf_getdata_rawchunk): Use tsearch instead of a manual linked
list.
* elf_end.c (free_chunk): New static function.
(elf_end): Call tdestroy instead of walking linked list.
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
libelf/elf_end.c | 22 +++++++++-------
libelf/elf_getdata_rawchunk.c | 47 +++++++++++++++++++++++++----------
libelf/libelfP.h | 13 ++++------
3 files changed, 52 insertions(+), 30 deletions(-)
diff --git a/libelf/elf_end.c b/libelf/elf_end.c
index 5c451f36..3e5d4c86 100644
--- a/libelf/elf_end.c
+++ b/libelf/elf_end.c
@@ -1,5 +1,6 @@
/* Free resources associated with Elf descriptor.
Copyright (C) 1998,1999,2000,2001,2002,2004,2005,2007,2015,2016 Red Hat, Inc.
+ Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
This file is part of elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 1998.
@@ -32,12 +33,22 @@
#endif
#include <assert.h>
+#include <search.h>
#include <stddef.h>
#include <stdlib.h>
#include "libelfP.h"
+static void
+free_chunk (void *n)
+{
+ Elf_Data_Chunk *rawchunk = (Elf_Data_Chunk *)n;
+ if (rawchunk->dummy_scn.flags & ELF_F_MALLOCED)
+ free (rawchunk->data.d.d_buf);
+ free (rawchunk);
+}
+
int
elf_end (Elf *elf)
{
@@ -112,20 +123,13 @@ elf_end (Elf *elf)
case ELF_K_ELF:
{
- Elf_Data_Chunk *rawchunks
+ void *rawchunks
= (elf->class == ELFCLASS32
|| (offsetof (struct Elf, state.elf32.rawchunks)
== offsetof (struct Elf, state.elf64.rawchunks))
? elf->state.elf32.rawchunks
: elf->state.elf64.rawchunks);
- while (rawchunks != NULL)
- {
- Elf_Data_Chunk *next = rawchunks->next;
- if (rawchunks->dummy_scn.flags & ELF_F_MALLOCED)
- free (rawchunks->data.d.d_buf);
- free (rawchunks);
- rawchunks = next;
- }
+ tdestroy (rawchunks, free_chunk);
Elf_ScnList *list = (elf->class == ELFCLASS32
|| (offsetof (struct Elf, state.elf32.scns)
diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c
index 5a35ccdc..cfd40396 100644
--- a/libelf/elf_getdata_rawchunk.c
+++ b/libelf/elf_getdata_rawchunk.c
@@ -1,6 +1,6 @@
/* Return converted data from raw chunk of ELF file.
Copyright (C) 2007, 2014, 2015 Red Hat, Inc.
- Copyright (C) 2022 Mark J. Wielaard <mark@klomp.org>
+ Copyright (C) 2022, 2023 Mark J. Wielaard <mark@klomp.org>
This file is part of elfutils.
This file is free software; you can redistribute it and/or modify
@@ -33,12 +33,28 @@
#include <assert.h>
#include <errno.h>
+#include <search.h>
#include <stdlib.h>
#include <string.h>
#include "libelfP.h"
#include "common.h"
+static int
+chunk_compare (const void *a, const void *b)
+{
+ Elf_Data_Chunk *da = (Elf_Data_Chunk *)a;
+ Elf_Data_Chunk *db = (Elf_Data_Chunk *)b;
+
+ if (da->offset != db->offset)
+ return da->offset - db->offset;
+
+ if (da->data.d.d_size != db->data.d.d_size)
+ return da->data.d.d_size - db->data.d.d_size;
+
+ return da->data.d.d_type - db->data.d.d_type;
+}
+
Elf_Data *
elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type)
{
@@ -75,19 +91,25 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type)
rwlock_rdlock (elf->lock);
/* Maybe we already got this chunk? */
- Elf_Data_Chunk *rawchunks = elf->state.elf.rawchunks;
- while (rawchunks != NULL)
+ Elf_Data_Chunk key;
+ key.offset = offset;
+ key.data.d.d_size = size;
+ key.data.d.d_type = type;
+ Elf_Data_Chunk **found = tsearch (&key, &elf->state.elf.rawchunks,
+ &chunk_compare);
+ if (found == NULL)
+ goto nomem;
+
+ /* Existing entry. */
+ if (*found != &key && *found != NULL)
{
- if ((rawchunks->offset == offset || size == 0)
- && rawchunks->data.d.d_size == size
- && rawchunks->data.d.d_type == type)
- {
- result = &rawchunks->data.d;
- goto out;
- }
- rawchunks = rawchunks->next;
+ result = &(*found)->data.d;
+ goto out;
}
+ /* New entry. */
+ *found = NULL;
+
size_t align = __libelf_type_align (elf->class, type);
if (elf->map_address != NULL)
{
@@ -189,8 +211,7 @@ elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type)
rwlock_unlock (elf->lock);
rwlock_wrlock (elf->lock);
- chunk->next = elf->state.elf.rawchunks;
- elf->state.elf.rawchunks = chunk;
+ *found = chunk;
result = &chunk->data.d;
out:
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
index 6624f38a..d3c241e5 100644
--- a/libelf/libelfP.h
+++ b/libelf/libelfP.h
@@ -1,5 +1,6 @@
/* Internal interfaces for libelf.
Copyright (C) 1998-2010, 2015, 2016 Red Hat, Inc.
+ Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
This file is part of elfutils.
Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
@@ -262,11 +263,7 @@ typedef struct Elf_ScnList
typedef struct Elf_Data_Chunk
{
Elf_Data_Scn data;
- union
- {
- Elf_Scn dummy_scn;
- struct Elf_Data_Chunk *next;
- };
+ Elf_Scn dummy_scn;
int64_t offset; /* The original raw offset in the Elf image. */
} Elf_Data_Chunk;
@@ -324,7 +321,7 @@ struct Elf
Elf_ScnList *scns_last; /* Last element in the section list.
If NULL the data has not yet been
read from the file. */
- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */
+ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */
unsigned int scnincr; /* Number of sections allocate the last
time. */
int ehdr_flags; /* Flags (dirty) for ELF header. */
@@ -343,7 +340,7 @@ struct Elf
Elf_ScnList *scns_last; /* Last element in the section list.
If NULL the data has not yet been
read from the file. */
- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */
+ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */
unsigned int scnincr; /* Number of sections allocate the last
time. */
int ehdr_flags; /* Flags (dirty) for ELF header. */
@@ -368,7 +365,7 @@ struct Elf
Elf_ScnList *scns_last; /* Last element in the section list.
If NULL the data has not yet been
read from the file. */
- Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results. */
+ void *rawchunks; /* Tree of elf_getdata_rawchunk results. */
unsigned int scnincr; /* Number of sections allocate the last
time. */
int ehdr_flags; /* Flags (dirty) for ELF header. */
--
2.40.1

@ -1,95 +0,0 @@
From ef9164520c81ea61efe88777a8ad61bf17a54201 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sat, 22 Apr 2023 01:26:17 +0200
Subject: [PATCH] elfcompress: Don't compress if section already compressed
unless forced
Before commit a5b07cdf9 "support ZSTD compression algorithm"
elfcompress would not try to compress a section if it already
had the requested compression type (or was already uncompressed)
unless the --force flag was given. An else if construct was changed
to an if in the commit causing elfcompress to warn (in verbose mode)
but then still try to (re)compress the section.
Add an explicit check so if nothing needs (un)compressing, the file
isn't changed.
The diff looks large, but git diff -b -w is just:
+ if (force || type != schtype)
+ {
if (shdr->sh_type != SHT_NOBITS
&& (shdr->sh_flags & SHF_ALLOC) == 0)
{
@@ -554,6 +556,7 @@ process_file (const char *fname)
printf ("[%zd] %s ignoring %s section\n", ndx, sname,
(shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated"));
}
+ }
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
src/elfcompress.c | 43 +++++++++++++++++++++++--------------------
1 file changed, 23 insertions(+), 20 deletions(-)
diff --git a/src/elfcompress.c b/src/elfcompress.c
index 18ade66f..f771b92a 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -529,30 +529,33 @@ process_file (const char *fname)
}
}
- if (shdr->sh_type != SHT_NOBITS
- && (shdr->sh_flags & SHF_ALLOC) == 0)
+ if (force || type != schtype)
{
- set_section (sections, ndx);
- /* Check if we might want to change this section name. */
- if (! adjust_names
- && ((type != ZLIB_GNU
- && startswith (sname, ".zdebug"))
- || (type == ZLIB_GNU
- && startswith (sname, ".debug"))))
- adjust_names = true;
-
- /* We need a buffer this large if we change the names. */
- if (adjust_names)
+ if (shdr->sh_type != SHT_NOBITS
+ && (shdr->sh_flags & SHF_ALLOC) == 0)
{
- size_t slen = strlen (sname);
- if (slen > maxnamelen)
- maxnamelen = slen;
+ set_section (sections, ndx);
+ /* Check if we might want to change this section name. */
+ if (! adjust_names
+ && ((type != ZLIB_GNU
+ && startswith (sname, ".zdebug"))
+ || (type == ZLIB_GNU
+ && startswith (sname, ".debug"))))
+ adjust_names = true;
+
+ /* We need a buffer this large if we change the names. */
+ if (adjust_names)
+ {
+ size_t slen = strlen (sname);
+ if (slen > maxnamelen)
+ maxnamelen = slen;
+ }
}
+ else
+ if (verbose >= 0)
+ printf ("[%zd] %s ignoring %s section\n", ndx, sname,
+ (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated"));
}
- else
- if (verbose >= 0)
- printf ("[%zd] %s ignoring %s section\n", ndx, sname,
- (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated"));
}
if (shdr->sh_type == SHT_SYMTAB)
--
2.31.1

@ -1 +0,0 @@
u debuginfod - "elfutils debuginfo server" /var/cache/debuginfod -

@ -1,12 +1,11 @@
Name: elfutils
Version: 0.189
Version: 0.188
%global baserelease 3
Release: %{baserelease}%{?dist}
Release: %{baserelease}%{?dist}.inferit
URL: http://elfutils.org/
%global source_url ftp://sourceware.org/pub/elfutils/%{version}/
License: GPLv3+ and (GPLv2+ or LGPLv3+) and GFDL
Source: %{?source_url}%{name}-%{version}.tar.bz2
Source1: elfutils-debuginfod.sysusers
Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
# Needed for isa specific Provides and Requires.
@ -15,8 +14,7 @@ Summary: A collection of utilities and DSOs to handle ELF files and DWARF data
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
# see Supplements: instead
# Recommends: elfutils-debuginfod-client%%{depsuffix} = %%{version}-%%{release}
Recommends: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%else
Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%endif
@ -59,26 +57,20 @@ BuildRequires: gettext-devel
%global _gnu %{nil}
%global _program_prefix eu-
%global provide_yama_scope 0
%global provide_yama_scope 0
%if 0%{?fedora} >= 22 || 0%{?rhel} >= 7
%global provide_yama_scope 1
%endif
%global with_sysusers 0
%if 0%{?fedora} >= 32 || 0%{?rhel} >= 9
%global with_sysusers 1
%global provide_yama_scope 1
%endif
# Patches
# elfcompress: Don't compress if section already compressed unless forced
Patch1: elfutils-0.189-elfcompress.patch
# libelf: Replace list of elf_getdata_rawchunk results with a tree
Patch2: elfutils-0.189-elf_getdata_rawchunk.patch
# PR29696: Removed secondary fd close in cache config causing race condition
Patch3: elfutils-0.189-debuginfod_config_cache-double-close.patch
# Don't export internal function.
Patch1: elfutils-0.188-static-extract_section.patch
# Silence some compiler warnings
Patch2: elfutils-0.188-compile-warnings.patch
# The debuginfod_client object lifetime needs more careful handling
Patch3: elfutils-0.188-debuginfod-client-lifetime.patch
%description
Elfutils is a collection of utilities, including stack (to show
@ -99,8 +91,7 @@ Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Requires: default-yama-scope
%endif
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
# see Supplements: instead
# Recommends: elfutils-debuginfod-client%%{depsuffix} = %%{version}-%%{release}
Recommends: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%else
Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
%endif
@ -120,7 +111,11 @@ Provides: elfutils-devel%{depsuffix} = %{version}-%{release}
%endif
Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
Requires: elfutils-libelf-devel%{depsuffix} = %{version}-%{release}
Obsoletes: elfutils-devel-static < 0.180-5
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
Recommends: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release}
%else
Requires: elfutils-debuginfod-client-devel%{depsuffix} = %{version}-%{release}
%endif
%description devel
The elfutils-devel package contains the libraries to create
@ -128,6 +123,19 @@ applications for handling compiled objects. libdw provides access
to the DWARF debugging information. libasm provides a programmable
assembler interface.
%package devel-static
Summary: Static archives to handle compiled objects
License: GPLv2+ or LGPLv3+
%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.
%package libelf
Summary: Library to read and write ELF files
License: GPLv2+ or LGPLv3+
@ -150,7 +158,6 @@ Provides: elfutils-libelf-devel%{depsuffix} = %{version}-%{release}
%endif
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Obsoletes: libelf-devel <= 0.8.2-2
Obsoletes: elfutils-libelf-devel-static < 0.180-5
%description libelf-devel
The elfutils-libelf-devel package contains the libraries to create
@ -158,6 +165,18 @@ applications for handling compiled objects. libelf allows you to
access the internals of the ELF object file format, so you can see the
different sections of an ELF file.
%package libelf-devel-static
Summary: Static archive of libelf
License: GPLv2+ or LGPLv3+
%if 0%{!?_isa:1}
Provides: elfutils-libelf-devel-static%{depsuffix} = %{version}-%{release}
%endif
Requires: elfutils-libelf-devel%{depsuffix} = %{version}-%{release}
%description libelf-devel-static
The elfutils-libelf-static package contains the static archive
for libelf.
%if %{provide_yama_scope}
%package default-yama-scope
Summary: Default yama attach scope sysctl setting
@ -202,13 +221,6 @@ Provides: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
# For debuginfod-find binary
Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
%if 0%{?rhel} >= 8 || 0%{?fedora} >= 20
# Instead of the weak forward dependency from -libs to -debuginfod-client,
# we'll add weak reverse dependencies from some of the many programs that
# indirectly load this. This lets the base @core compose omit this library.
Supplements: systemtap-client perf gdb binutils elfutils ltrace dyninst
Supplements: valgrind annocheck bpftrace dwarves libabigail
%endif
%package debuginfod-client-devel
Summary: Libraries and headers to build debuginfod client applications
@ -225,18 +237,11 @@ Requires: elfutils-libs%{depsuffix} = %{version}-%{release}
Requires: elfutils-libelf%{depsuffix} = %{version}-%{release}
Requires: elfutils-debuginfod-client%{depsuffix} = %{version}-%{release}
BuildRequires: systemd
%if %{with_sysusers}
BuildRequires: systemd-rpm-macros
%endif
BuildRequires: make
Requires(post): systemd
Requires(preun): systemd
Requires(postun): systemd
%if %{with_sysusers}
%{?sysusers_requires_compat}
%else
Requires(pre): shadow-utils
%endif
# To extract .deb files with a bsdtar (= libarchive) subshell
Requires: bsdtar
@ -278,10 +283,10 @@ RPM_OPT_FLAGS="${RPM_OPT_FLAGS} -Wformat"
trap 'cat config.log' EXIT
%if 0%{?centos} >= 8
%configure CFLAGS="$RPM_OPT_FLAGS" --enable-debuginfod-urls=https://debuginfod.centos.org/
%if 0%{?centos} >= 8 && %{undefined msvsphere}
%configure CFLAGS="$RPM_OPT_FLAGS -fexceptions" --enable-debuginfod-urls=https://debuginfod.centos.org/
%else
%configure CFLAGS="$RPM_OPT_FLAGS"
%configure CFLAGS="$RPM_OPT_FLAGS -fexceptions"
%endif
trap '' EXIT
%make_build
@ -290,13 +295,12 @@ trap '' EXIT
%make_install
chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so*
# We don't want the static libraries
rm ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib{elf,dw,asm}.a
# We don't have standard DEBUGINFOD_URLS necessarily, but still ship
# the profile.d/debuginfod* files, in case of a site specific server.
# rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.sh
# rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.csh
%if 0%{?centos} < 8
# We don't have standard DEBUGINFOD_URLS yet.
rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.sh
rm ${RPM_BUILD_ROOT}%{_sysconfdir}/profile.d/debuginfod.csh
%endif
%find_lang %{name}
@ -309,10 +313,6 @@ install -Dm0644 config/debuginfod.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysc
mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod
touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite
%if %{with_sysusers}
install -Dm0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/elfutils-debuginfod.conf
%endif
%check
# Record some build root versions in build.log
uname -r; rpm -q binutils gcc glibc || true
@ -346,6 +346,7 @@ fi
%endif
%files
%{!?_licensedir:%global license %%doc}
%license COPYING COPYING-GPLV2 COPYING-LGPLV3 doc/COPYING-GFDL
%doc README TODO CONTRIBUTING
%{_bindir}/eu-addr2line
@ -368,6 +369,7 @@ fi
%{_mandir}/man1/eu-*.1*
%files libs
%{!?_licensedir:%global license %%doc}
%license COPYING-GPLV2 COPYING-LGPLV3
%{_libdir}/libasm-%{version}.so
%{_libdir}/libdw-%{version}.so
@ -388,7 +390,12 @@ fi
%{_libdir}/libdw.so
%{_libdir}/pkgconfig/libdw.pc
%files devel-static
%{_libdir}/libdw.a
%{_libdir}/libasm.a
%files -f %{name}.lang libelf
%{!?_licensedir:%global license %%doc}
%license COPYING-GPLV2 COPYING-LGPLV3
%{_libdir}/libelf-%{version}.so
%{_libdir}/libelf.so.*
@ -401,35 +408,39 @@ fi
%{_libdir}/pkgconfig/libelf.pc
%{_mandir}/man3/elf_*.3*
%files libelf-devel-static
%{_libdir}/libelf.a
%if %{provide_yama_scope}
%files default-yama-scope
%{_sysctldir}/10-default-yama-scope.conf
%endif
%files debuginfod-client
%defattr(-,root,root)
%{_libdir}/libdebuginfod-%{version}.so
%{_libdir}/libdebuginfod.so.*
%{_bindir}/debuginfod-find
%{_mandir}/man1/debuginfod-find.1*
%{_mandir}/man7/debuginfod*.7*
%{_sysconfdir}/profile.d/debuginfod.*
%if 0%{?centos} >= 8
%if 0%{?centos} >= 8 && %{undefined msvsphere}
%{_sysconfdir}/profile.d/debuginfod.*
%{_sysconfdir}/debuginfod/*.urls
%endif
%files debuginfod-client-devel
%defattr(-,root,root)
%{_libdir}/pkgconfig/libdebuginfod.pc
%{_mandir}/man3/debuginfod_*.3*
%{_includedir}/elfutils/debuginfod.h
%{_libdir}/libdebuginfod.so
%files debuginfod
%defattr(-,root,root)
%{_bindir}/debuginfod
%config(noreplace) %{_sysconfdir}/sysconfig/debuginfod
%{_unitdir}/debuginfod.service
%if %{with_sysusers}
%{_sysusersdir}/elfutils-debuginfod.conf
%endif
%{_mandir}/man8/debuginfod*.8*
%{_mandir}/man7/debuginfod*.7*
@ -438,15 +449,11 @@ fi
%ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite
%pre debuginfod
%if %{with_sysusers}
%sysusers_create_compat %{SOURCE1}
%else
getent group debuginfod >/dev/null || groupadd -r debuginfod
getent passwd debuginfod >/dev/null || \
useradd -r -g debuginfod -d /var/cache/debuginfod -s /sbin/nologin \
-c "elfutils debuginfo server" debuginfod
exit 0
%endif
%post debuginfod
%systemd_post debuginfod.service
@ -455,15 +462,12 @@ exit 0
%systemd_postun_with_restart debuginfod.service
%changelog
* Wed Jun 28 2023 Mark Wielaard <mjw@redhat.com> - 0.189-3
- Add elfutils-0.189-elf_getdata_rawchunk.patch
- Add elfutils-0.189-debuginfod_config_cache-double-close.patch
* Mon Apr 24 2023 Mark Wielaard <mjw@redhat.com> - 0.189-2
- Add elfutils-0.189-elfcompress.patch
* Thu Aug 31 2023 Sergey Cherevko <s.cherevko@msvsphere.ru> - 0.188-3.inferit
- Disable upstream debuginfod URL
- Rebuilt for MSVSphere 8.8
* Tue Apr 4 2023 Mark Wielaard <mjw@redhat.com> - 0.189-1
- Upgrade to upsteam elfutils 0.189.
* Tue Jul 25 2023 MSVSphere Packaging Team <packager@msvsphere.ru> - 0.188-3
- Rebuilt for MSVSphere 8.8
* Mon Nov 7 2022 Mark Wielaard <mjw@redhat.com> - 0.188-3
- Add elfutils-0.188-compile-warnings.patch
@ -473,13 +477,6 @@ exit 0
- Upgrade to upsteam elfutils 0.188.
- Add elfutils-0.188-static-extract_section.patch.
* Fri Sep 30 2022 Mark Wielaard <mjw@redhat.com> - 0.187-6
- Add sysuser support for creating the debuginfod user
* Thu Jun 16 2022 Frank Ch. Eigler <fche@redhat.com> - 0.187-5
- rhbz2088774: ship /etc/profile.d/debuginfod* files even without
default DEBUGINFOD_URLS.
* Fri May 6 2022 Mark Wielaard <mjw@redhat.com> - 0.187-4
- Upgrade to elfutils 0.187
- debuginfod: Support -C option for connection thread pooling.
@ -498,22 +495,14 @@ exit 0
- Add elfutils-0.187-debuginfod-client-fd-leak.patch
- Add elfutils-0.187-mhd_no_dual_stack.patch
- Add elfutils-0.187-mhd_epoll.patch
* Tue Apr 12 2022 Mark Wielaard <mjw@redhat.com> - 0.186-5
- Add an explicit versioned requires from elfutils-debuginfod-client
on elfutils-libelf.
* Fri Apr 8 2022 Mark Wielaard <mjw@redhat.com> - 0.186-4
- Add an explicit versioned requires from elfutils-debuginfod-client
on elfutils-libs.
* Tue Mar 22 2022 Mark Wielaard <mjw@redhat.com> - 0.186-3
on elfutils-libs and elfutils-libelf.
- Remove brew testsuite workarounds
* Thu Feb 10 2022 Frank Ch. Eigler <fche@redhat.com> - 0.186-2
- rhbz2053226: enable debuginfod.centos.org support by default
- rhbz2052574: enable debuginfod.centos.org support by default
* Tue Nov 23 2021 Mark Wielaard <mjw@redhat.com> - 0.186-1
* Thu Nov 11 2021 Mark Wielaard <mjw@redhat.com> - 0.186-1
- Upgrade to upstream 0.186
- debuginfod-client: Default $DEBUGINFOD_URLS is computed from
drop-in files /etc/debuginfod/*.urls rather than
@ -537,50 +526,16 @@ exit 0
dwarf_linefunctionname.
- translations: Update Japanese translation.
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.185-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Wed Jun 16 2021 Frank Ch. Eigler <fche@redhat.com> - 0.185-4
- RHBZ1947876 - redux.
* Wed Jun 09 2021 Frank Ch. Eigler <fche@redhat.com> - 0.185-3
- RHBZ1947876 - turn -debuginfod-client into a weak reverse dependency.
* Mon May 31 2021 Mark Wielaard <mjw@redhat.com> - 0.185-2
- Allow failing make check
* Mon May 31 2021 Mark Wielaard <mjw@redhat.com> - 0.185-1
* Thu May 27 2021 Mark Wielaard <mjw@redhat.com> - 0.185-1
- Upgrade to upstream 0.185
- debuginfod-client: Simplify curl handle reuse so downloads which
return an error are retried.
- elfcompress: Always exit with code 0 when the operation succeeds
(even when nothing was done). On error the exit code
is now always 1.
* Thu Apr 15 2021 Mohan Boddu <mboddu@redhat.com> - 0.183-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Mon Feb 8 2021 Mark Wielaard <mjw@fedoraproject.org> - 0.183-1
- Upgrade to upstream 0.183
- debuginfod: New thread-busy metric and more detailed error metrics.
New --fdcache-mintmp and tracking of filesystem freespace.
- debuginfod-client: DEBUGINFOD_SONAME macro added to debuginfod.h can
be used to dlopen the libdebuginfod.so library.
New function debuginfod_set_verbose_fd and DEBUGINFOD_VERBOSE
environment variable.
- config: profile.sh and profile.csh won't export DEBUGINFOD_URLS
unless configured --enable-debuginfod-urls[=URLS]
- elflint, readelf: Recognize SHF_GNU_RETAIN.
Handle SHT_X86_64_UNWIND as valid relocation target type.
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.182-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Thu Dec 17 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.182-2
* Thu Dec 17 2020 Mark Wielaard <mjw@redhat.com> - 0.182-3
- Add elfutils-0.182-s390-pid_memory_read.patch
* Sat Oct 31 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.182-1
* Mon Nov 2 2020 Mark Wielaard <mjw@redhat.com> - 0.182-2
- Add elfutils-0.182-debuginfod-test-fix.patch.
* Mon Nov 2 2020 Mark Wielaard <mjw@redhat.com> - 0.182-1
- Upgrade to upstream 0.182
- backends: Support for tilegx has been removed.
- config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS.
@ -590,131 +545,26 @@ exit 0
- debuginfod-client: Now supports compressed (kernel) ELF images.
- libdwfl: Add ZSTD compression support.
* Mon Oct 19 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.181-3
- Add elfutils-0.181-array-param.patch.
* Fri Sep 18 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.181-2
- Add ZSTD support elfutils-0.181-zstd.patch.
* Tue Sep 8 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.181-1
- Upgrade to upstream 0.181
- libelf: elf_update now compensates (fixes up) a bad sh_addralign
for SHF_COMPRESSED sections.
- libdebuginfod: configure now takes --enable-libdebuginfod=dummy or
--disable-libdebuginfod for bootstrapping.
DEBUGINFOD_URLS now accepts "scheme-free" urls
(guessing at what the user meant, either http:// or file://)
- readelf, elflint: Handle aarch64 bti, pac bits in dynamic table and
gnu property notes.
- libdw, readelf: Recognize DW_CFA_AARCH64_negate_ra_state. Allows
unwinding on arm64 for code that is compiled for PAC
(Pointer Authentication Code) as long as it isn't enabled.
* Tue Aug 25 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.180-7
- Add elfutils-0.180-shf-compressed.patch
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.180-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jul 22 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.180-5
- Remove elfutils-libelf-devel-static and elfutils-devel-static subpackages.
- Remove duplicate listing of sysconfig/debuginfod (config) file.
* Mon Jul 13 2020 Tom Stellard <tstellar@redhat.com> - 0.180-4
- Use make macros
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
* Fri Jul 3 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.180-3
- Add elfutils-0.180-mhd-result.patch
* Wed Jul 1 2020 Jeff Law <law@redhat.com> - 0.180-2
- Disable LTO
* Thu Jun 11 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.180-1
* Thu Jun 11 2020 Mark Wielaard <mjw@redhat.com> - 0.180-1
- New upstream release.
elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given.
libdw, readelf: Handle GCC LTO .gnu.debuglto_ prefix.
libdw: Use correct CU to resolve file names in dwarf_decl_file.
libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo.
size: Also obey radix printing for bsd format.
nm: Explicitly print weak 'V' or 'T' and common 'C' symbols.
* Thu Apr 30 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.179-2
- Add elfutils-0.179-debug-client-alt-link.patch
* Mon Mar 30 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.179-1
- New upstream release.
debuginfod-client:
- When DEBUGINFOD_PROGRESS is set and the program doesn't
install its own debuginfod_progressfn_t show download
progress on stderr.
- DEBUGINFOD_TIMEOUT is now defined as seconds to get at
least 100K, defaults to 90 seconds.
- Default to $XDG_CACHE_HOME/debuginfod_client.
- New functions debuginfod_set_user_data,
debuginfod_get_user_data, debuginfod_get_url and
debuginfod_add_http_header.
- Support for file:// URLs.
debuginfod:
- Performance improvements through highly parallelized scanning
and archive content caching.
- Uses libarchive directly for reading rpm archives.
- Support for indexing .deb/.ddeb archives through dpkg-deb
or bsdtar.
- Generic archive support through -Z EXT[=CMD]. Which can be
used for example for arch-linux pacman files by using
-Z '.tar.zst=zstdcat'.
- Better logging using User-Agent and X-Forwarded-For headers.
- More prometheus metrics.
- Support for eliding dots or extraneous slashes in path names.
debuginfod-find:
- Accept /path/names in place of buildid hex.
libelf:
- Handle PN_XNUM in elf_getphdrnum before shdr 0 is cached
- Ensure zlib resource cleanup on failure.
libdwfl:
- dwfl_linux_kernel_find_elf and dwfl_linux_kernel_report_offline
now find and handle a compressed vmlinuz image.
readelf, elflint:
- Handle PT_GNU_PROPERTY.
translations:
- Updated Ukrainian translation.
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.178-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Fri Jan 24 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.178-8
- Add elfutils-0.178-gcc10-null-dereference.patch
* Fri Jan 10 2020 Mark Wielaard <mjw@fedoraproject.org> - 0.178-7
* Fri Jan 10 2020 Mark Wielaard <mjw@redhat.com> - 0.178-7
- Add elfutils-0.178-debuginfod-timeoutprogress.patch
- Add elfutils-0.178-libasm-ebl.patch
* Wed Dec 11 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-6
* Fri Dec 13 2019 Mark Wielaard <mjw@redhat.com> - 0.178-6
- Add elfutils-0.178-curl-code-gcc-10.patch
- Add elfutils-0.178-compressed-vmlinuz.patch
* Mon Dec 9 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-5
- Add elfutils-0.178-debuginfod-no-cache.patch.
* Thu Nov 28 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-4
- Define %%{depsuffix} before use.
* Mon Dec 9 2019 Mark Wielaard <mjw@redhat.com> - 0.178-5
- Add elfutils-0.178-debuginfod-no-cache.patch. #1781097
* Thu Nov 28 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-3
* Thu Nov 28 2019 Mark Wielaard <mjw@redhat.com> - 0.178-4
- Add elfutils-debuginfod-client Provides and Requires with depsuffix
to get multilib dependencies correct. Add %%{version}-%%{release} to
keep subpackages in sync.
* Wed Nov 27 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-2
- Fix libdebuginfod file list for debuginfo-client[-devel].
* Tue Nov 26 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.178-1
* Tue Nov 26 2019 Mark Wielaard <mjw@redhat.com> - 0.178-2
- New upstream release.
- debuginfod: New server, client tool and library to index and fetch
ELF/DWARF files addressed by build-id through HTTP.
@ -729,79 +579,52 @@ exit 0
threads through the same Dwarf handle.
- libdwfl: Will try to use debuginfod when installed as fallback to
retrieve ELF and DWARF debug data files by build-id.
- Fix libdebuginfod file list for debuginfo-client[-devel].
* Wed Aug 14 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.177-1
- New upstream release.
- elfclassify: New tool to analyze ELF objects.
- readelf: Print DW_AT_data_member_location as decimal offset.
Decode DW_AT_discr_list block attributes.
- libdw: Add DW_AT_GNU_numerator, DW_AT_GNU_denominator and DW_AT_GNU_bias.
- libdwelf: Add dwelf_elf_e_machine_string.
dwelf_elf_begin now only returns NULL when there is an error
reading or decompressing a file. If the file is not an ELF file
an ELF handle of type ELF_K_NONE is returned.
- backends: Add support for C-SKY.
* Wed Jul 24 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.176-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Jul 5 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.176-4
* Fri Jul 5 2019 Mark Wielaard <mjw@redhat.com> - 0.176-5
- Add elfutils-0.176-strip-symbols-illformed.patch
* Mon Jun 3 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.176-3
- Add elfutils-0.176-elf-update.patch
* Wed Jun 5 2019 Mark Wielaard <mjw@redhat.com> - 0.176-4
- Add elfutils-0.176-elf-update.patch (#1717349)
* Tue Apr 30 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.176-2
- Update elfutils-0.176-gcc-pr88835.patch.
- Add elfutils-0.176-pt-gnu-prop.patch
- Add elfutils-0.176-xlate-note.patch
* Mon May 13 2019 Mark Wielaard <mjw@redhat.com> - 0.176-3
- Rebuilt for annobin change.
* Fri Feb 15 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.176-1
* Fri May 10 2019 Mark Wielaard <mjw@redhat.com> - 0.176-2
- Add elfutils-0.176-xlate-note.patch (#1705138)
* Tue May 7 2019 Mark Wielaard <mjw@fedoraproject.org> - 0.176-1
- New upstream release.
- backends: riscv improved core file and return value location support.
- Fixes CVE-2019-7146, CVE-2019-7148, CVE-2019-7149, CVE-2019-7150,
CVE-2019-7664, CVE-2019-7665.
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.175-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Dec 3 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.175-2
- Add elfutils-0.175-gnu-props-32.patch.
* Mon Dec 3 2018 Mark Wielaard <mjw@redhat.com> - 0.174-6
- Add elfutils-0.174-gnu-props-32.patch.
* Fri Nov 16 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.175-1
- New upstream release.
- readelf: Handle multiple .debug_macro sections.
- strip: Add strip --reloc-debug-sections-only option.
Handle relocations against GNU compressed sections.
- libdwelf: New function dwelf_elf_begin.
- libcpu: Recognize bpf jump variants BPF_JLT, BPF_JLE, BPF_JSLT
and BPF_JSLE.
- backends: RISCV handles ADD/SUB relocations.
- Remove all patches.
* Wed Nov 14 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.174-5
- Add elfutils-0.174-x86_64_unwind.patch.
- Add elfutils-0.174-gnu-property-note.patch.
* Thu Nov 15 2018 Mark Wielaard <mjw@redhat.com> - 0.174-5
- Add elfutils-0.174-x86_64_unwind.patch (#1650114).
- Add elfutils-0.174-gnu-property-note.patch (#1650120).
- Add elfutils-0.174-version-note.patch.
- Add elfutils-0.174-gnu-attribute-note.patch
- Add elfutils-0.174-gnu-attribute-note.patch (#1650125).
* Tue Nov 6 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.174-4
* Tue Nov 6 2018 Mark Wielaard <mjw@redhat.com> - 0.174-4
- Add elfutils-0.174-size-rec-ar.patch
CVE-2018-18520 (#1646478)
CVE-2018-18520 (#1646479)
- Add elfutils-0.174-ar-sh_entsize-zero.patch
CVE-2018-18521 (#1646483)
CVE-2018-18521 (#1646484)
* Fri Nov 2 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.174-3
* Fri Nov 2 2018 Mark Wielaard <mjw@redhat.com> - 0.174-3
- Add elfutils-0.174-libdwfl-sanity-check-core-reads.patch
CVE-2018-18310 (#1642605)
CVE-2018-18310 (#1642606)
* Wed Oct 17 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.174-2
- Add elfutils-0.174-strip-unstrip-group.patch.
* Fri Oct 19 2018 Mark Wielaard <mjw@redhat.com> - 0.174-2
- Add elfutils-0.174-strip-unstrip-group.patch (#1638248).
* Fri Sep 14 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.174-1
- New upstream release
* Tue Sep 18 2018 Mark Wielaard <mjw@redhat.com> - 0.174-1
- New upstream release (#1614972)
- libelf, libdw and all tools now handle extended shnum and shstrndx
correctly (#1608390).
correctly
- elfcompress: Don't rewrite input file if no section data needs
updating. Try harder to keep same file mode bits (suid) on rewrite.
- strip: Handle mixed (out of order) allocated/non-allocated sections.
@ -809,9 +632,9 @@ exit 0
- backends: RISCV and M68K now have backend implementations to
generate CFI based backtraces.
- Fixes CVE-2018-16062, CVE-2018-16402 and CVE-2018-16403
(#1623753, #1625051, #1625056).
(#1623754, #1625052, #1625057).
* Tue Jul 31 2018 Florian Weimer <fweimer@redhat.com> - 0.173-8
* Mon Jul 30 2018 Florian Weimer <fweimer@redhat.com> - 0.173-8
- Rebuild with fixed binutils
* Sun Jul 29 2018 Mark Wielaard <mjw@fedoraproject.org> - 0.173-7

Loading…
Cancel
Save