tools/elfutils: backport version 0.192 portability patches

These patches will be present in version 0.192 release.

Include them before the update
to support changes before updating
and in order to have a more organized git history.

Manually refreshed patch:
 - 110-objects-manifest.patch

Add patch:
 - 095-src-unused-variable.patch
 - 096-lib-config_h.patch
 - 097-libcpu-config_h.patch
 - 098-libdw-maintainer-clean.patch
 - 099-remove-unlocked-stdio.patch

Tested-by: Georgi Valkov <gvalkov@gmail.com> # macOS
Signed-off-by: Michael Pratt <mcpratt@pm.me>
Link: https://github.com/openwrt/openwrt/pull/16522
Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
Michael Pratt 2024-10-20 08:33:21 -04:00 committed by Robert Marko
parent 8f920d2f94
commit c16ed51e06
8 changed files with 840 additions and 26 deletions

View File

@ -0,0 +1,29 @@
From ef8a4b841aaf26326b8961a651dbe915d54d23e7 Mon Sep 17 00:00:00 2001
From: Jose Quaresma <quaresma.jose@gmail.com>
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 <jose.quaresma@foundries.io>
---
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[] =

View File

@ -0,0 +1,29 @@
From c981e61aa301d389f18df5fd279c1ca4d39d38a0 Mon Sep 17 00:00:00 2001
From: Michael Pratt <mcpratt@pm.me>
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 <mcpratt@pm.me>
---
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 <http://www.gnu.org/licenses/>. */
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
#include <stddef.h>

View File

@ -0,0 +1,47 @@
From 7f06ac2b3fc0077f29bcc68064ca8e91fa7cd080 Mon Sep 17 00:00:00 2001
From: Michael Pratt <mcpratt@pm.me>
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 <mcpratt@pm.me>
---
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 <config.h>
+#endif
+}
+
%{
/* Copyright (C) 2004, 2005, 2007, 2008 Red Hat, Inc.
Written by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -26,10 +32,6 @@
the GNU Lesser General Public License along with this program. If
not, see <http://www.gnu.org/licenses/>. */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
#include <ctype.h>
#include <libeu.h>

View File

@ -0,0 +1,43 @@
From b68f34725229b08380a1612899b0537f8f597dad Mon Sep 17 00:00:00 2001
From: Michael Pratt <mcpratt@pm.me>
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 <mcpratt@pm.me>
---
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

View File

@ -0,0 +1,687 @@
From 12d58cf3e30dee91ed7aadb6475a15c6e74cc88b Mon Sep 17 00:00:00 2001
From: Michael Pratt <mcpratt@pm.me>
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 <mcpratt@pm.me>
---
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 ("] <RELRO:", stdout);
+ fputs ("] <RELRO:", stdout);
else if (phdr->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)
{

View File

@ -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 <http://www.gnu.org/licenses/>. */
+#include <config.h>
#include <stddef.h>
--- 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[] =

View File

@ -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))

View File

@ -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