From 56cffcb0335deb5a192e388e2d45f7f0e7bd7d9d Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 9 Jan 2025 17:20:46 +0000 Subject: [PATCH] ELF: Skip any invalid DWARF sections On some start files in glibc, this error is thrown and I think it is safe to just ignore it. Signed-off-by: Michael Tremer --- src/pakfire/elf.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/pakfire/elf.c b/src/pakfire/elf.c index caf508a33..a713a7cf7 100644 --- a/src/pakfire/elf.c +++ b/src/pakfire/elf.c @@ -1132,6 +1132,10 @@ int pakfire_elf_requires(struct pakfire_elf* self, char*** requires) { #define DWARF_E_NO_DWARF 6 #endif +#ifndef DWARF_E_INVALID_DWARF +#define DWARF_E_INVALID_DWARF 16 +#endif + int pakfire_elf_foreach_source_file(struct pakfire_elf* self, pakfire_elf_foreach_source_file_callback callback, void* data) { const char* filename = NULL; @@ -1177,9 +1181,17 @@ int pakfire_elf_foreach_source_file(struct pakfire_elf* self, // Fetch the source files r = dwarf_getsrcfiles(die, &files, &count); if (r < 0) { - ERROR(self->ctx, "Could not fetch the source files: %s\n", dwarf_errmsg(-1)); - r = -errno; - goto ERROR; + switch (dwarf_errno()) { + // Skip any invalid DWARF sections + case DWARF_E_INVALID_DWARF: + goto NEXT; + + default: + ERROR(self->ctx, "Could not fetch the source files for %s: %s\n", + self->path, dwarf_errmsg(-1)); + r = -ENOTSUP; + goto ERROR; + } } // Iterate over all files... @@ -1213,6 +1225,7 @@ int pakfire_elf_foreach_source_file(struct pakfire_elf* self, goto ERROR; } +NEXT: offset = next_offset; } -- 2.47.3