diff --git a/tools/elfutils/patches/095-src-unused-variable.patch b/tools/elfutils/patches/095-src-unused-variable.patch new file mode 100644 index 0000000000..be5d285574 --- /dev/null +++ b/tools/elfutils/patches/095-src-unused-variable.patch @@ -0,0 +1,29 @@ +From ef8a4b841aaf26326b8961a651dbe915d54d23e7 Mon Sep 17 00:00:00 2001 +From: Jose Quaresma +Date: Tue, 19 Mar 2024 10:34:33 +0000 +Subject: [PATCH] srcfiles: fix unused variable BUFFER_SIZE + +The const variable BUFFER_SIZE is used only on the zip_files +function witch is only available with LIBARCHIVE. + +| ../../elfutils-0.191/src/srcfiles.cxx:81:18: error: unused variable 'BUFFER_SIZE' [-Werror,-Wunused-const-variable] +| 81 | constexpr size_t BUFFER_SIZE = 8192; +| | ^~~~~~~~~~~ + +Signed-off-by: Jose Quaresma +--- + src/srcfiles.cxx | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/src/srcfiles.cxx ++++ b/src/srcfiles.cxx +@@ -78,7 +78,9 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = print_ve + /* Bug report address. */ + ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; + ++#ifdef HAVE_LIBARCHIVE + constexpr size_t BUFFER_SIZE = 8192; ++#endif + + /* Definitions of arguments for argp functions. */ + static const struct argp_option options[] = diff --git a/tools/elfutils/patches/096-lib-config_h.patch b/tools/elfutils/patches/096-lib-config_h.patch new file mode 100644 index 0000000000..cc31fcfff2 --- /dev/null +++ b/tools/elfutils/patches/096-lib-config_h.patch @@ -0,0 +1,29 @@ +From c981e61aa301d389f18df5fd279c1ca4d39d38a0 Mon Sep 17 00:00:00 2001 +From: Michael Pratt +Date: Thu, 10 Oct 2024 10:26:54 +0000 +Subject: [PATCH] lib: Add missing config.h include to next_prime.c + +This is the last remaining C source file as of this commit +without the standard conditional inclusion of config.h +as the very first header. + + * lib/next_prime.c: add missing config.h header. + +Signed-off-by: Michael Pratt +--- + lib/next_prime.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/lib/next_prime.c ++++ b/lib/next_prime.c +@@ -27,6 +27,10 @@ + the GNU Lesser General Public License along with this program. If + not, see . */ + ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ + #include + + diff --git a/tools/elfutils/patches/097-libcpu-config_h.patch b/tools/elfutils/patches/097-libcpu-config_h.patch new file mode 100644 index 0000000000..7bcd858696 --- /dev/null +++ b/tools/elfutils/patches/097-libcpu-config_h.patch @@ -0,0 +1,47 @@ +From 7f06ac2b3fc0077f29bcc68064ca8e91fa7cd080 Mon Sep 17 00:00:00 2001 +From: Michael Pratt +Date: Thu, 10 Oct 2024 10:27:02 +0000 +Subject: [PATCH] libcpu: Include config.h before standard headers in lexer + source + +As part of the processing of flex, definitions and headers +are added to output source before any literal text or generated code. + +This causes standard headers to come before config.h +unless config.h is included in a %top block instead +as specified in the flex manual, section 5.1 "Format of the Definitions". + +The %top block is non-POSIX, so using it reinforces +the requirement of "flex" over a standardized "lex" even more. + + * libcpu/i386_lex.l (%top): add flex %top block + and move config.h header inclusion to it. + +Signed-off-by: Michael Pratt +--- + libcpu/i386_lex.l | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +--- a/libcpu/i386_lex.l ++++ b/libcpu/i386_lex.l +@@ -1,3 +1,9 @@ ++%top{ ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++} ++ + %{ + /* Copyright (C) 2004, 2005, 2007, 2008 Red Hat, Inc. + Written by Ulrich Drepper , 2004. +@@ -26,10 +32,6 @@ + the GNU Lesser General Public License along with this program. If + not, see . */ + +-#ifdef HAVE_CONFIG_H +-# include +-#endif +- + #include + + #include diff --git a/tools/elfutils/patches/098-libdw-maintainer-clean.patch b/tools/elfutils/patches/098-libdw-maintainer-clean.patch new file mode 100644 index 0000000000..f502af226f --- /dev/null +++ b/tools/elfutils/patches/098-libdw-maintainer-clean.patch @@ -0,0 +1,43 @@ +From b68f34725229b08380a1612899b0537f8f597dad Mon Sep 17 00:00:00 2001 +From: Michael Pratt +Date: Thu, 10 Oct 2024 10:27:09 +0000 +Subject: [PATCH] libdw: Let clean targets be unconditional + +The automake rule "maintainer-clean-generic" +is always available and never conditional, +so let the variable that uses it be define +non-conditionally. + +If one actually wants conditional cleaning +they should write a custom rule and set it +as a dependency of a "*clean-local" automake rule. + +There is no need to do conditional cleaning here, +so move the MAINTAINERCLEANFILES variable definition +to the end of the Makefile.am file as it is +in the rest of the project. + + * libdw/Makefile.am: move MAINTAINERCLEANFILES + variable to the end of the file + as a non-conditional definition. + +Signed-off-by: Michael Pratt +--- + libdw/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/libdw/Makefile.am ++++ b/libdw/Makefile.am +@@ -97,7 +97,6 @@ libdw_a_SOURCES = dwarf_begin.c dwarf_be + + if MAINTAINER_MODE + BUILT_SOURCES = $(srcdir)/known-dwarf.h +-MAINTAINERCLEANFILES = $(srcdir)/known-dwarf.h + $(srcdir)/known-dwarf.h: $(top_srcdir)/config/known-dwarf.awk $(srcdir)/dwarf.h + gawk -f $^ > $@.new + mv -f $@.new $@ +@@ -154,3 +153,4 @@ noinst_HEADERS = libdwP.h memory-access. + EXTRA_DIST = libdw.map + + MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) libdw.so libdw.so.$(VERSION) ++MAINTAINERCLEANFILES = $(srcdir)/known-dwarf.h diff --git a/tools/elfutils/patches/099-remove-unlocked-stdio.patch b/tools/elfutils/patches/099-remove-unlocked-stdio.patch new file mode 100644 index 0000000000..a0089a3a4c --- /dev/null +++ b/tools/elfutils/patches/099-remove-unlocked-stdio.patch @@ -0,0 +1,687 @@ +From 12d58cf3e30dee91ed7aadb6475a15c6e74cc88b Mon Sep 17 00:00:00 2001 +From: Michael Pratt +Date: Wed, 16 Oct 2024 19:53:52 +0000 +Subject: [PATCH] Remove usage of "unlocked" variant of stdio print functions + +These "unlocked" Linux Standard Base variants of standard functions +are not available on some systems that are still capable +of building Linux and ELFs. + +The difference is negligible for simple printing to stdout. + +POSIX also states for the similar putc_unlocked(): + + These functions can safely be used in a multi-threaded program + if and only if they are called while the invoking thread owns + the (FILE *) object, as is the case after a successful call + to the flockfile() or ftrylockfile() functions. + +... + + These unlocked versions can be safely used + only within explicitly locked program regions, + using exported locking primitives. + +and these precautions were never done. + +Use the standard forms of these print functions. + +There is inconsistent use of fputc_unlocked() with putc_unlocked(), +so consistently use the safer fputc() instead. + +Signed-off-by: Michael Pratt +--- + libasm/asm_align.c | 4 +- + libcpu/i386_parse.y | 4 +- + libebl/eblobjnote.c | 4 +- + src/nm.c | 20 +++++----- + src/objdump.c | 24 ++++++------ + src/readelf.c | 90 ++++++++++++++++++++++----------------------- + src/size.c | 8 ++-- + src/strings.c | 20 +++++----- + tests/showptable.c | 8 ++-- + 9 files changed, 91 insertions(+), 91 deletions(-) + +--- a/libasm/asm_align.c ++++ b/libasm/asm_align.c +@@ -60,13 +60,13 @@ asm_align (AsmScn_t *asmscn, GElf_Word v + fprintf (asmscn->ctx->out.file, "%02hhx\n", asmscn->pattern->bytes[0]); + else + { +- fputc_unlocked ('"', asmscn->ctx->out.file); ++ fputc ('"', asmscn->ctx->out.file); + + for (size_t cnt = 0; cnt < asmscn->pattern->len; ++cnt) + fprintf (asmscn->ctx->out.file, "\\x%02hhx", + asmscn->pattern->bytes[cnt]); + +- fputs_unlocked ("\"\n", asmscn->ctx->out.file); ++ fputs ("\"\n", asmscn->ctx->out.file); + } + return 0; + } +--- a/libcpu/i386_parse.y ++++ b/libcpu/i386_parse.y +@@ -1158,7 +1158,7 @@ instrtable_out (void) + EMIT_SUFFIX (w1); + EMIT_SUFFIX (W1); + +- fputc_unlocked ('\n', outfile); ++ fputc ('\n', outfile); + + for (int i = 0; i < 3; ++i) + { +@@ -1333,7 +1333,7 @@ instrtable_out (void) + b = b->next; + } + +- fputc_unlocked ('\n', outfile); ++ fputc ('\n', outfile); + } + fputs ("};\n", outfile); + } +--- a/libebl/eblobjnote.c ++++ b/libebl/eblobjnote.c +@@ -643,10 +643,10 @@ ebl_object_note (Ebl *ebl, uint32_t name + for (size_t cnt = 1; cnt < descsz / 4; ++cnt) + { + if (cnt > 1) +- putchar_unlocked ('.'); ++ putchar ('.'); + printf ("%" PRIu32, buf[cnt]); + } +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + if (descsz / 4 > FIXED_TAG_BYTES) + free (buf); +--- a/src/nm.c ++++ b/src/nm.c +@@ -439,7 +439,7 @@ handle_ar (int fd, Elf *elf, const char + Elf_Arhdr *arhdr = NULL; + size_t arhdr_off = 0; /* Note: 0 is no valid offset. */ + +- fputs_unlocked (_("\nArchive index:\n"), stdout); ++ fputs (_("\nArchive index:\n"), stdout); + + while (arsym->as_off != 0) + { +@@ -825,8 +825,8 @@ show_symbols_sysv (Ebl *ebl, GElf_Word s + /* If we have to precede the line with the file name. */ + if (print_file_name) + { +- fputs_unlocked (fullname, stdout); +- putchar_unlocked (':'); ++ fputs (fullname, stdout); ++ putchar (':'); + } + + /* Convert the address. */ +@@ -972,8 +972,8 @@ show_symbols_bsd (Elf *elf, const GElf_E + /* If we have to precede the line with the file name. */ + if (print_file_name) + { +- fputs_unlocked (fullname, stdout); +- putchar_unlocked (':'); ++ fputs (fullname, stdout); ++ putchar (':'); + } + + bool is_tls = GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_TLS; +@@ -1046,8 +1046,8 @@ show_symbols_bsd (Elf *elf, const GElf_E + } + + if (color_mode) +- fputs_unlocked (color_off, stdout); +- putchar_unlocked ('\n'); ++ fputs (color_off, stdout); ++ putchar ('\n'); + } + + #ifdef USE_DEMANGLE +@@ -1104,9 +1104,9 @@ show_symbols_posix (Elf *elf, const GElf + /* If we have to precede the line with the file name. */ + if (print_file_name) + { +- fputs_unlocked (fullname, stdout); +- putchar_unlocked (':'); +- putchar_unlocked (' '); ++ fputs (fullname, stdout); ++ putchar (':'); ++ putchar (' '); + } + + printf ("%s %c%s", symstr, +--- a/src/objdump.c ++++ b/src/objdump.c +@@ -580,12 +580,12 @@ show_full_content (Ebl *ebl, const char + printf ("%02hhx%02hhx%02hhx%02hhx ", + cp[inner], cp[inner + 1], cp[inner + 2], + cp[inner + 3]); +- fputc_unlocked (' ', stdout); ++ fputc (' ', stdout); + + for (size_t inner = 0; inner < 16; ++inner) +- fputc_unlocked (isascii (cp[inner]) && isprint (cp[inner]) ++ fputc (isascii (cp[inner]) && isprint (cp[inner]) + ? cp[inner] : '.', stdout); +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + } + + printf (" %04zx ", cnt); +@@ -601,14 +601,14 @@ show_full_content (Ebl *ebl, const char + + for (inner = 2 * (16 - inner) + (16 - inner + 3) / 4 + 1; inner > 0; + --inner) +- fputc_unlocked (' ', stdout); ++ fputc (' ', stdout); + + for (inner = 0; inner < remaining; ++inner) +- fputc_unlocked (isascii (cp[inner]) && isprint (cp[inner]) ++ fputc (isascii (cp[inner]) && isprint (cp[inner]) + ? cp[inner] : '.', stdout); +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + } + } + +@@ -640,12 +640,12 @@ disasm_output (char *buf, size_t buflen, + printf ("%8" PRIx64 ": ", (uint64_t) info->addr); + + if (info->bytes_color != NULL) +- fputs_unlocked (info->bytes_color, stdout); ++ fputs (info->bytes_color, stdout); + size_t cnt; + for (cnt = 0; cnt < (size_t) MIN (info->cur - info->last_end, 8); ++cnt) + printf (" %02" PRIx8, info->last_end[cnt]); + if (info->bytes_color != NULL) +- fputs_unlocked (color_off, stdout); ++ fputs (color_off, stdout); + + printf ("%*s %.*s\n", + (int) (8 - cnt) * 3 + 1, "", (int) buflen, buf); +@@ -663,12 +663,12 @@ disasm_output (char *buf, size_t buflen, + printf ("%8" PRIx64 ": ", (uint64_t) info->addr); + + if (info->bytes_color != NULL) +- fputs_unlocked (info->bytes_color, stdout); ++ fputs (info->bytes_color, stdout); + for (; cnt < (size_t) (info->cur - info->last_end); ++cnt) + printf (" %02" PRIx8, info->last_end[cnt]); + if (info->bytes_color != NULL) +- fputs_unlocked (color_off, stdout); +- putchar_unlocked ('\n'); ++ fputs (color_off, stdout); ++ putchar ('\n'); + info->addr += info->cur - info->last_end - 8; + } + +--- a/src/readelf.c ++++ b/src/readelf.c +@@ -1127,7 +1127,7 @@ print_file_type (unsigned short int e_ty + static void + print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr) + { +- fputs_unlocked (_("ELF Header:\n Magic: "), stdout); ++ fputs (_("ELF Header:\n Magic: "), stdout); + for (size_t cnt = 0; cnt < EI_NIDENT; ++cnt) + printf (" %02hhx", ehdr->e_ident[cnt]); + +@@ -1154,7 +1154,7 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr) + printf (_(" ABI Version: %hhd\n"), + ehdr->e_ident[EI_ABIVERSION]); + +- fputs_unlocked (_(" Type: "), stdout); ++ fputs (_(" Type: "), stdout); + print_file_type (ehdr->e_type); + + const char *machine = dwelf_elf_e_machine_string (ehdr->e_machine); +@@ -1196,9 +1196,9 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr) + printf (_(" (%" PRIu32 " in [0].sh_info)"), + (uint32_t) shdr->sh_info); + else +- fputs_unlocked (_(" ([0] not available)"), stdout); ++ fputs (_(" ([0] not available)"), stdout); + } +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + + printf (_(" Size of section header entries: %" PRId16 " %s\n"), + ehdr->e_shentsize, _("(bytes)")); +@@ -1213,9 +1213,9 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr) + printf (_(" (%" PRIu32 " in [0].sh_size)"), + (uint32_t) shdr->sh_size); + else +- fputs_unlocked (_(" ([0] not available)"), stdout); ++ fputs (_(" ([0] not available)"), stdout); + } +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + + if (unlikely (ehdr->e_shstrndx == SHN_XINDEX)) + { +@@ -1406,7 +1406,7 @@ There are %zd section headers, starting + } + } + +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + } + + +@@ -1552,22 +1552,22 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr) + && shdr->sh_addr >= relro_from + && shdr->sh_addr + shdr->sh_size <= relro_to) + { +- fputs_unlocked (" [RELRO:", stdout); ++ fputs (" [RELRO:", stdout); + in_relro = true; + } + else if (has_relro && in_relro && shdr->sh_addr >= relro_to) + { +- fputs_unlocked ("]", stdout); ++ fputs ("]", stdout); + in_relro = false; + } + else if (has_relro && in_relro + && shdr->sh_addr + shdr->sh_size > relro_to) +- fputs_unlocked ("] p_type == PT_LOAD && (phdr->p_flags & PF_W) == 0) + { + if (!in_ro) + { +- fputs_unlocked (" [RO:", stdout); ++ fputs (" [RO:", stdout); + in_ro = true; + } + } +@@ -1592,12 +1592,12 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr) + { + if ((phdr2->p_flags & PF_W) == 0 && !in_ro) + { +- fputs_unlocked (" [RO:", stdout); ++ fputs (" [RO:", stdout); + in_ro = true; + } + else if ((phdr2->p_flags & PF_W) != 0 && in_ro) + { +- fputs_unlocked ("]", stdout); ++ fputs ("]", stdout); + in_ro = false; + } + } +@@ -1610,16 +1610,16 @@ print_phdr (Ebl *ebl, GElf_Ehdr *ehdr) + if (has_relro && in_relro + && shdr->sh_addr + shdr->sh_size > relro_to) + { +- fputs_unlocked (">", stdout); ++ fputs (">", stdout); + in_relro = false; + } + } + } + if (in_relro || in_ro) +- fputs_unlocked ("]", stdout); ++ fputs ("]", stdout); + + /* Finish the line. */ +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + } + } + +@@ -1788,8 +1788,8 @@ print_flags (int class, GElf_Xword d_val + if (d_val & flags[cnt].mask) + { + if (!first) +- putchar_unlocked (' '); +- fputs_unlocked (flags[cnt].str, stdout); ++ putchar (' '); ++ fputs (flags[cnt].str, stdout); + d_val &= ~flags[cnt].mask; + first = false; + } +@@ -1797,11 +1797,11 @@ print_flags (int class, GElf_Xword d_val + if (d_val != 0) + { + if (!first) +- putchar_unlocked (' '); ++ putchar (' '); + printf ("%#0*" PRIx64, class == ELFCLASS32 ? 10 : 18, d_val); + } + +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + + +@@ -1909,7 +1909,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, + phdr->p_offset); + } + +- fputs_unlocked (_(" Type Value\n"), stdout); ++ fputs (_(" Type Value\n"), stdout); + + /* if --use-dynamic option is enabled, + use the string table to get the related library info. */ +@@ -1953,7 +1953,7 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn, + case DT_BIND_NOW: + case DT_TEXTREL: + /* No further output. */ +- fputc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + break; + + case DT_NEEDED: +@@ -2147,7 +2147,7 @@ handle_relocs_rel (Ebl *ebl, GElf_Ehdr * + elf_strptr (ebl->elf, shstrndx, shdr->sh_name), + shdr->sh_offset, + nentries); +- fputs_unlocked (class == ELFCLASS32 ++ fputs (class == ELFCLASS32 + ? _("\ + Offset Type Value Name\n") + : _("\ +@@ -2384,7 +2384,7 @@ handle_relocs_rela (Ebl *ebl, GElf_Ehdr + elf_strptr (ebl->elf, shstrndx, shdr->sh_name), + shdr->sh_offset, + nentries); +- fputs_unlocked (class == ELFCLASS32 ++ fputs (class == ELFCLASS32 + ? _("\ + Offset Type Value Addend Name\n") + : _("\ +@@ -2891,7 +2891,7 @@ process_symtab (Ebl *ebl, unsigned int n + } + } + +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + } + +@@ -2973,7 +2973,7 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G + (unsigned int) shdr->sh_link, + elf_strptr (ebl->elf, shstrndx, glink->sh_name)); + +- fputs_unlocked (class == ELFCLASS32 ++ fputs (class == ELFCLASS32 + ? _("\ + Num: Value Size Type Bind Vis Ndx Name\n") + : _("\ +@@ -3649,12 +3649,12 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G + { + ssize_t n; + case 0: +- fputs_unlocked (_(" 0 *local* "), ++ fputs (_(" 0 *local* "), + stdout); + break; + + case 1: +- fputs_unlocked (_(" 1 *global* "), ++ fputs (_(" 1 *global* "), + stdout); + break; + +@@ -3671,7 +3671,7 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G + break; + } + } +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + + +@@ -3718,7 +3718,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn, + uint64_t success = 0; + + /* xgettext:no-c-format */ +- fputs_unlocked (_("\ ++ fputs (_("\ + Length Number % of total Coverage\n"), stdout); + printf (_(" 0 %6" PRIu32 " %5.1f%%\n"), + counts[0], (counts[0] * 100.0) / nbucket); +@@ -4140,7 +4140,7 @@ print_attributes (Ebl *ebl, const GElf_E + if (unlikely (*p++ != 'A')) + return; + +- fputs_unlocked (_(" Owner Size\n"), stdout); ++ fputs (_(" Owner Size\n"), stdout); + + /* Loop over the sections. */ + while (left (data, p) >= 4) +@@ -7233,7 +7233,7 @@ print_encoding_base (const char *pfx, un + if (w & 0x70) + { + if (w != fde_encoding) +- fputc_unlocked (' ', stdout); ++ fputc (' ', stdout); + + w = print_relinfo (w); + } +@@ -9772,7 +9772,7 @@ print_debug_line_section (Dwfl_Module *d + { + get_uleb128 (u128, linep, lineendp); + if (n != standard_opcode_lengths[opcode]) +- putc_unlocked (',', stdout); ++ fputc (',', stdout); + printf (" %u", u128); + } + +@@ -10525,7 +10525,7 @@ print_debug_macinfo_section (Dwfl_Module + \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), + elf_ndxscn (scn), section_name (ebl, shdr), + (uint64_t) shdr->sh_offset); +- putc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + + /* There is no function in libdw to iterate over the raw content of + the section but it is easy enough to do. */ +@@ -10687,7 +10687,7 @@ print_debug_macro_section (Dwfl_Module * + \nDWARF section [%2zu] '%s' at offset %#" PRIx64 ":\n"), + elf_ndxscn (scn), section_name (ebl, shdr), + (uint64_t) shdr->sh_offset); +- putc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + + /* Get the source file information for all CUs. Uses same + datastructure as macinfo. But uses offset field to directly +@@ -10840,15 +10840,15 @@ print_debug_macro_section (Dwfl_Module * + goto invalid_data; + args--; + if (args > 0) +- putchar_unlocked (','); ++ putchar (','); + } + } + else + printf (_(" no arguments.")); +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + } +- putchar_unlocked ('\n'); ++ putchar ('\n'); + + int level = 1; + if (readp + 1 > readendp) +@@ -11025,14 +11025,14 @@ print_debug_macro_section (Dwfl_Module * + if (args > 0) + printf (", "); + } +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + + if (readp + 1 > readendp) + goto invalid_data; + opcode = *readp++; + if (opcode == 0) +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + } + } +@@ -11368,7 +11368,7 @@ print_debug_frame_hdr_section (Dwfl_Modu + /* +4 because of the 4 byte header of the section. */ + (uint64_t) shdr->sh_offset + 4 + eh_frame_ptr); + +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + + uint64_t fde_count = 0; +@@ -11546,7 +11546,7 @@ print_debug_exception_table (Dwfl_Module + else if (ar_disp != 0) + puts (" -> ???"); + else +- putchar_unlocked ('\n'); ++ putchar ('\n'); + ++u; + } + while (readp < action_table_end); +@@ -13200,19 +13200,19 @@ handle_core_note (Ebl *ebl, const GElf_N + nregloc == 0 ? nhdr->n_descsz : 0, + items, nitems); + if (colno != 0) +- putchar_unlocked ('\n'); ++ putchar ('\n'); + + colno = handle_core_registers (ebl, ebl->elf, desc + regs_offset, + reglocs, nregloc); + if (colno != 0) +- putchar_unlocked ('\n'); ++ putchar ('\n'); + } + + static void + handle_notes_data (Ebl *ebl, const GElf_Ehdr *ehdr, + GElf_Off start, Elf_Data *data) + { +- fputs_unlocked (_(" Owner Data size Type\n"), stdout); ++ fputs (_(" Owner Data size Type\n"), stdout); + + if (data == NULL) + goto bad_note; +--- a/src/size.c ++++ b/src/size.c +@@ -411,7 +411,7 @@ show_sysv (Elf *elf, const char *prefix, + maxlen = MAX (maxlen, (int) strlen (name)); + } + +- fputs_unlocked (fname, stdout); ++ fputs (fname, stdout); + if (prefix != NULL) + printf (_(" (ex %s)"), prefix); + printf (":\n%-*s %*s %*s\n", +@@ -483,7 +483,7 @@ show_sysv_one_line (Elf *elf) + continue; + + if (! first) +- fputs_unlocked (" + ", stdout); ++ fputs (" + ", stdout); + first = false; + + printf ((radix == radix_hex ? "%" PRIx64 "(%s)" +@@ -555,7 +555,7 @@ show_bsd (Elf *elf, const char *prefix, + fname); + if (prefix != NULL) + printf (_(" (ex %s)"), prefix); +- fputs_unlocked ("\n", stdout); ++ fputs ("\n", stdout); + + total_textsize += textsize; + total_datasize += datasize; +@@ -607,7 +607,7 @@ show_segments (Elf *elf, const char *ful + continue; + + if (! first) +- fputs_unlocked (" + ", stdout); ++ fputs (" + ", stdout); + first = false; + + printf (radix == radix_hex ? "%" PRIx64 "(%c%c%c)" +--- a/src/strings.c ++++ b/src/strings.c +@@ -345,8 +345,8 @@ process_chunk_mb (const char *fname, con + /* We found a match. */ + if (unlikely (fname != NULL)) + { +- fputs_unlocked (fname, stdout); +- fputs_unlocked (": ", stdout); ++ fputs (fname, stdout); ++ fputs (": ", stdout); + } + + if (unlikely (radix != radix_none)) +@@ -357,7 +357,7 @@ process_chunk_mb (const char *fname, con + + if (unlikely (*unprinted != NULL)) + { +- fputs_unlocked (*unprinted, stdout); ++ fputs (*unprinted, stdout); + free (*unprinted); + *unprinted = NULL; + } +@@ -366,8 +366,8 @@ process_chunk_mb (const char *fname, con + assume the file data is encoded in UCS-2/UTF-16 or + UCS-4/UTF-32 respectively we could convert the string. + But there is no such guarantee. */ +- fwrite_unlocked (start, 1, buf - start, stdout); +- putc_unlocked ('\n', stdout); ++ fwrite (start, 1, buf - start, stdout); ++ fputc ('\n', stdout); + } + + start = ++buf; +@@ -413,8 +413,8 @@ process_chunk (const char *fname, const + /* We found a match. */ + if (likely (fname != NULL)) + { +- fputs_unlocked (fname, stdout); +- fputs_unlocked (": ", stdout); ++ fputs (fname, stdout); ++ fputs (": ", stdout); + } + + if (likely (radix != radix_none)) +@@ -425,12 +425,12 @@ process_chunk (const char *fname, const + + if (unlikely (*unprinted != NULL)) + { +- fputs_unlocked (*unprinted, stdout); ++ fputs (*unprinted, stdout); + free (*unprinted); + *unprinted = NULL; + } +- fwrite_unlocked (start, 1, buf - start, stdout); +- putc_unlocked ('\n', stdout); ++ fwrite (start, 1, buf - start, stdout); ++ fputc ('\n', stdout); + } + + start = ++buf; +--- a/tests/showptable.c ++++ b/tests/showptable.c +@@ -111,11 +111,11 @@ main (int argc, char *argv[]) + (unsigned long long int) phdr->p_memsz, + (unsigned long long int) phdr->p_align); + +- putc_unlocked ((phdr->p_flags & PF_X) ? 'X' : ' ', stdout); +- putc_unlocked ((phdr->p_flags & PF_W) ? 'W' : ' ', stdout); +- putc_unlocked ((phdr->p_flags & PF_R) ? 'R' : ' ', stdout); ++ fputc ((phdr->p_flags & PF_X) ? 'X' : ' ', stdout); ++ fputc ((phdr->p_flags & PF_W) ? 'W' : ' ', stdout); ++ fputc ((phdr->p_flags & PF_R) ? 'R' : ' ', stdout); + +- putc_unlocked ('\n', stdout); ++ fputc ('\n', stdout); + + if (phdr->p_type == PT_INTERP) + { diff --git a/tools/elfutils/patches/100-portability.patch b/tools/elfutils/patches/100-portability.patch index be97f95faa..c2d14e575f 100644 --- a/tools/elfutils/patches/100-portability.patch +++ b/tools/elfutils/patches/100-portability.patch @@ -235,16 +235,6 @@ Cflags: -I${includedir} Requires.private: zlib @LIBZSTD@ ---- a/lib/next_prime.c -+++ b/lib/next_prime.c -@@ -27,6 +27,7 @@ - the GNU Lesser General Public License along with this program. If - not, see . */ - -+#include - #include - - --- a/libebl/eblopenbackend.c +++ b/libebl/eblopenbackend.c @@ -200,8 +200,6 @@ static bool default_object_note (const c @@ -276,15 +266,3 @@ static bool default_check_special_symbol (Elf *elf __attribute__ ((unused)), ---- a/src/srcfiles.cxx -+++ b/src/srcfiles.cxx -@@ -78,7 +78,9 @@ ARGP_PROGRAM_VERSION_HOOK_DEF = print_ve - /* Bug report address. */ - ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT; - -+#ifdef HAVE_LIBARCHIVE - constexpr size_t BUFFER_SIZE = 8192; -+#endif - - /* Definitions of arguments for argp functions. */ - static const struct argp_option options[] = diff --git a/tools/elfutils/patches/101-shared-conditional.patch b/tools/elfutils/patches/101-shared-conditional.patch index 17d8cc72a1..800aa079a1 100644 --- a/tools/elfutils/patches/101-shared-conditional.patch +++ b/tools/elfutils/patches/101-shared-conditional.patch @@ -64,7 +64,7 @@ include_HEADERS = dwarf.h pkginclude_HEADERS = libdw.h known-dwarf.h -@@ -121,11 +123,13 @@ libdw.so: $(srcdir)/libdw.map $(libdw_so +@@ -120,11 +122,13 @@ libdw.so: $(srcdir)/libdw.map $(libdw_so @$(textrel_check) $(AM_V_at)ln -fs $@ $@.$(VERSION) @@ -78,7 +78,7 @@ uninstall: uninstall-am rm -f $(DESTDIR)$(libdir)/libdw-$(PACKAGE_VERSION).so -@@ -148,6 +152,10 @@ libdw_a_LIBADD += $(addprefix ../backend +@@ -147,6 +151,10 @@ libdw_a_LIBADD += $(addprefix ../backend libcpu_objects = $(shell $(AR) t ../libcpu/libcpu.a) libdw_a_LIBADD += $(addprefix ../libcpu/,$(libcpu_objects)) diff --git a/tools/elfutils/patches/110-objects-manifest.patch b/tools/elfutils/patches/110-objects-manifest.patch index 1f5b5d2138..983331dfa7 100644 --- a/tools/elfutils/patches/110-objects-manifest.patch +++ b/tools/elfutils/patches/110-objects-manifest.patch @@ -1,6 +1,6 @@ --- a/libdw/Makefile.am +++ b/libdw/Makefile.am -@@ -137,19 +137,19 @@ uninstall: uninstall-am +@@ -136,19 +136,19 @@ uninstall: uninstall-am rm -f $(DESTDIR)$(libdir)/libdw.so rmdir --ignore-fail-on-non-empty $(DESTDIR)$(includedir)/elfutils @@ -25,7 +25,7 @@ libdw_a_LIBADD += $(addprefix ../libcpu/,$(libcpu_objects)) if !BUILD_SHARED -@@ -161,4 +161,9 @@ noinst_HEADERS = libdwP.h memory-access. +@@ -160,5 +160,10 @@ noinst_HEADERS = libdwP.h memory-access. EXTRA_DIST = libdw.map @@ -36,6 +36,7 @@ + echo $^ > $@ + +MOSTLYCLEANFILES = $(am_libdw_pic_a_OBJECTS) $(EXTRA_libdw_a_DEPENDENCIES) libdw.so libdw.so.$(VERSION) + MAINTAINERCLEANFILES = $(srcdir)/known-dwarf.h --- a/libdwfl/Makefile.am +++ b/libdwfl/Makefile.am @@ -93,4 +93,10 @@ am_libdwfl_pic_a_OBJECTS = $(libdwfl_a_S