[packages/elfutils] - updated to 0.159 - updated portability patch (from upstream), removed obsolete robustify patch - u
qboosh
qboosh at pld-linux.org
Sat Jun 14 16:27:14 CEST 2014
commit df44456578d600b6f57710f30e7b3dc947cdcb6a
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Sat Jun 14 16:31:03 2014 +0200
- updated to 0.159
- updated portability patch (from upstream), removed obsolete robustify patch
- updated pl.po,inline,scanf patches
elfutils-inline.patch | 44 +-
elfutils-pl.po.patch | 200 ++++-
elfutils-portability.patch | 912 +++++++++++++----------
elfutils-robustify.patch | 1756 --------------------------------------------
elfutils-scanf.patch | 32 +-
elfutils.spec | 20 +-
6 files changed, 766 insertions(+), 2198 deletions(-)
---
diff --git a/elfutils.spec b/elfutils.spec
index 18f7179..25fd7cf 100644
--- a/elfutils.spec
+++ b/elfutils.spec
@@ -5,22 +5,21 @@
Summary: A collection of utilities and DSOs to handle compiled objects
Summary(pl.UTF-8): Zestaw narzędzi i bibliotek do obsługi skompilowanych obiektów
Name: elfutils
-Version: 0.157
+Version: 0.159
Release: 1
License: GPL v2+ or LGPL v3+ (libraries), GPL v3+ (programs)
Group: Development/Tools
Source0: https://fedorahosted.org/releases/e/l/elfutils/%{version}/%{name}-%{version}.tar.bz2
-# Source0-md5: 0f6746a55f0bc26558f0c162fe137fa1
+# Source0-md5: 1f45a18231c782ccd0966059e2e42ea9
Patch0: %{name}-pl.po.patch
Patch1: %{name}-debian-manpages.patch
Patch2: %{name}-portability.patch
-Patch3: %{name}-robustify.patch
-Patch4: %{name}-align.patch
-Patch5: %{name}-paxflags.patch
-Patch6: %{name}-sparc.patch
-Patch7: %{name}-inline.patch
-Patch8: %{name}-scanf.patch
-Patch9: %{name}-strings_c.patch
+Patch3: %{name}-align.patch
+Patch4: %{name}-paxflags.patch
+Patch5: %{name}-sparc.patch
+Patch6: %{name}-inline.patch
+Patch7: %{name}-scanf.patch
+Patch8: %{name}-strings_c.patch
URL: https://fedorahosted.org/elfutils/
BuildRequires: autoconf >= 2.63
BuildRequires: automake >= 1:1.8
@@ -146,8 +145,7 @@ programowalny interfejs asemblera.
%patch5 -p1
%patch6 -p1
%patch7 -p1
-%patch8 -p1
-%patch9 -p0
+%patch8 -p0
%{__rm} po/stamp-po
diff --git a/elfutils-inline.patch b/elfutils-inline.patch
index 53ecbee..31252b9 100644
--- a/elfutils-inline.patch
+++ b/elfutils-inline.patch
@@ -30,26 +30,26 @@
{
return INTUSE(dwarf_line_file) (dwfl_line (line));
}
---- elfutils-0.127/libdwfl/elf-from-memory.c.orig 2007-03-11 03:11:55.000000000 +0100
-+++ elfutils-0.127/libdwfl/elf-from-memory.c 2007-05-19 16:09:58.174735114 +0200
-@@ -215,7 +215,7 @@
- GElf_Addr loadbase = ehdr_vma;
- switch (ehdr.e32.e_ident[EI_CLASS])
- {
-- inline void handle_segment (GElf_Addr vaddr, GElf_Off offset,
-+ __libdw_gnu_inline void handle_segment (GElf_Addr vaddr, GElf_Off offset,
- GElf_Xword filesz, GElf_Xword align)
+--- elfutils-0.159/libdwfl/elf-from-memory.c.orig 2014-06-14 14:34:49.631795359 +0200
++++ elfutils-0.159/libdwfl/elf-from-memory.c 2014-06-14 14:35:58.288460597 +0200
+@@ -205,7 +205,7 @@ elf_from_remote_memory (GElf_Addr ehdr_v
+ segments_end, segments_end_mem and loadbase (if not
+ found_base yet). Returns true if sanity checking failed,
+ false otherwise. */
+- inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
++ __libdw_gnu_inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
+ GElf_Xword filesz, GElf_Xword memsz,
+ GElf_Xword palign)
{
- GElf_Off segment_end = ((offset + filesz + align - 1) & -align);
-@@ -276,7 +276,7 @@
-
- switch (ehdr.e32.e_ident[EI_CLASS])
+@@ -286,7 +286,7 @@ elf_from_remote_memory (GElf_Addr ehdr_v
{
+ /* Reads the given segment. Returns true if reading fails,
+ false otherwise. */
- inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
+ __libdw_gnu_inline bool handle_segment (GElf_Addr vaddr, GElf_Off offset,
- GElf_Xword filesz, GElf_Xword align)
+ GElf_Xword filesz)
{
- GElf_Off start = offset & -align;
+ GElf_Off start = offset & -pagesize;
--- elfutils-0.127/libdwfl/argp-std.c.orig 2007-04-05 11:12:36.000000000 +0200
+++ elfutils-0.127/libdwfl/argp-std.c 2007-05-19 16:08:04.209055832 +0200
@@ -106,7 +106,7 @@
@@ -101,17 +101,17 @@
{
if (last_file != NULL)
{
---- elfutils-0.157/libdwfl/dwfl_module_addrsym.c.orig 2013-12-03 16:39:28.066627488 +0100
-+++ elfutils-0.157/libdwfl/dwfl_module_addrsym.c 2013-12-03 16:40:10.559959039 +0100
-@@ -41,7 +41,7 @@
-
+--- elfutils-0.159/libdwfl/dwfl_module_addrsym.c.orig 2014-06-14 14:36:48.425126218 +0200
++++ elfutils-0.159/libdwfl/dwfl_module_addrsym.c 2014-06-14 14:42:22.541785921 +0200
+@@ -44,7 +44,7 @@ __libdwfl_addrsym (Dwfl_Module *mod, GEl
/* Return true iff we consider ADDR to lie in the same section as SYM. */
GElf_Word addr_shndx = SHN_UNDEF;
-- inline bool same_section (const GElf_Sym *sym, struct dwfl_file *symfile,
-+ __libdw_gnu_inline bool same_section (const GElf_Sym *sym, struct dwfl_file *symfile,
- GElf_Word shndx)
+ Elf *addr_symelf = NULL;
+- inline bool same_section (GElf_Addr value, Elf *symelf, GElf_Word shndx)
++ __libdw_gnu_inline bool same_section (GElf_Addr value, Elf *symelf, GElf_Word shndx)
{
/* For absolute symbols and the like, only match exactly. */
+ if (shndx >= SHN_LORESERVE)
--- elfutils-0.127/backends/ia64_retval.c.orig 2006-07-21 13:28:28.000000000 +0200
+++ elfutils-0.127/backends/ia64_retval.c 2007-05-19 16:13:08.295213177 +0200
@@ -96,7 +96,7 @@
diff --git a/elfutils-pl.po.patch b/elfutils-pl.po.patch
index 5e352df..45837dd 100644
--- a/elfutils-pl.po.patch
+++ b/elfutils-pl.po.patch
@@ -1,14 +1,128 @@
---- elfutils-0.157/po/pl.po.orig 2013-09-30 14:32:33.000000000 +0200
-+++ elfutils-0.157/po/pl.po 2013-12-03 16:38:37.466629613 +0100
-@@ -624,6 +624,7 @@
+--- elfutils-0.159/po/pl.po.orig 2014-05-20 11:02:26.000000000 +0200
++++ elfutils-0.159/po/pl.po 2014-06-14 14:31:04.491800051 +0200
+@@ -249,9 +249,8 @@
+ msgstr "dopuszczalna jest tylko jedna z opcji -e, -p, -k, -K lub --core"
+
+ #: libdwfl/argp-std.c:177
+-#, fuzzy
+ msgid "cannot attach to process"
+-msgstr "nie można utworzyć drzewa wyszukiwania"
++msgstr "nie można podłączyć się do procesu"
+
+ #: libdwfl/argp-std.c:231
+ msgid "cannot load kernel symbols"
+@@ -271,9 +270,8 @@
+ msgstr "nie można odczytać pliku core ELF: %s"
+
+ #: libdwfl/argp-std.c:307
+-#, fuzzy
+ msgid "cannot attach to core"
+-msgstr "nie można utworzyć drzewa wyszukiwania"
++msgstr "nie można podłączyć się do zrzutu core"
+
+ #: libdwfl/argp-std.c:314
+ msgid "No modules recognized in core file"
+@@ -377,58 +375,55 @@
+
+ #: libdwfl/libdwflP.h:82
+ msgid "Internal error due to ebl"
+-msgstr ""
++msgstr "Błąd wewnętrzny z powodu ebl"
+
+ #: libdwfl/libdwflP.h:83
+ msgid "Missing data in core file"
+-msgstr ""
++msgstr "Brak danych w pliku core"
+
+ #: libdwfl/libdwflP.h:84
+-#, fuzzy
+ msgid "Invalid register"
+-msgstr "nieprawidłowy parametr"
++msgstr "Nieprawidłowy rejestr"
+
+ #: libdwfl/libdwflP.h:85
+ msgid "Error reading process memory"
+-msgstr ""
++msgstr "Błąd podczas odczytu pamięci procesu"
+
+ #: libdwfl/libdwflP.h:86
+ msgid "Couldn't find architecture of any ELF"
+-msgstr ""
++msgstr "Nie udało się odnaleźć architektury żadnego ELF-a"
+
+ #: libdwfl/libdwflP.h:87
+ msgid "Error parsing /proc filesystem"
+-msgstr ""
++msgstr "Błąd analizy systemu plików /proc"
+
+ #: libdwfl/libdwflP.h:88
+-#, fuzzy
+ msgid "Invalid DWARF"
+-msgstr "nieprawidłowy DWARF"
++msgstr "Nieprawidłowy DWARF"
+
+ #: libdwfl/libdwflP.h:89
+ msgid "Unsupported DWARF"
+-msgstr ""
++msgstr "Nieobsługiwany DWARF"
+
+ #: libdwfl/libdwflP.h:90
+ msgid "Unable to find more threads"
+-msgstr ""
++msgstr "Nie udało się odnaleźć większej liczby wątków"
+
+ #: libdwfl/libdwflP.h:91
+ msgid "Dwfl already has attached state"
+-msgstr ""
++msgstr "Dwfl ma już stan podłączony"
+
+ #: libdwfl/libdwflP.h:92
+ msgid "Dwfl has no attached state"
+-msgstr ""
++msgstr "Dwfl nie ma stanu podłączonego"
+
+ #: libdwfl/libdwflP.h:93
+ msgid "Unwinding not supported for this architecture"
+-msgstr ""
++msgstr "Rozwijanie stosu nie jest obsługiwane dla tej architektury"
+
+ #: libdwfl/libdwflP.h:94
+-#, fuzzy
+ msgid "Invalid argument"
+-msgstr "nieprawidłowy parametr"
++msgstr "nieprawidłowy argument"
+
+ #: libebl/eblbackendname.c:42
+ msgid "No backend"
+@@ -677,9 +672,8 @@
+ msgstr "Wyświetla także nazwy symboli ub sekcji"
+
+ #: src/addr2line.c:64
+-#, fuzzy
+ msgid "Also show symbol and the section names"
+-msgstr "Wyświetla także nazwy symboli ub sekcji"
++msgstr "Wyświetla także nazwy symboli i sekcji"
+
+ #: src/addr2line.c:65
+ msgid "Also show line table flags"
+@@ -694,6 +688,7 @@
"Show all source locations that caused inline expansion of subroutines at the "
"address."
msgstr ""
+"Wyświetla wszystkie pozycje źródłowe, które spowodowały rozwinięcie inline funkcji z podanego adresu."
- #: src/addr2line.c:71 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
+ #: src/addr2line.c:72 src/elfcmp.c:72 src/findtextrel.c:67 src/nm.c:100
#: src/strings.c:75
-@@ -4118,14 +4119,14 @@
+@@ -2019,7 +2014,7 @@
+ msgstr "sekcja [%2d] \"%s\": rozmiar maski bitowej nie jest potęgą 2: %u\n"
+
+ #: src/elflint.c:2085
+-#, fuzzy, c-format
++#, c-format
+ msgid ""
+ "section [%2d] '%s': hash table section is too small (is %ld, expected at "
+ "least %ld)\n"
+@@ -4188,14 +4183,14 @@
msgstr "błąd podczas zwalniania deskryptora pod-ELF: %s"
#: src/readelf.c:71
@@ -25,7 +139,7 @@
#: src/readelf.c:75
msgid "ELF output selection:"
-@@ -4184,15 +4185,14 @@
+@@ -4254,15 +4249,14 @@
msgstr "Dodatkowy wybór wyjścia:"
#: src/readelf.c:97
@@ -43,7 +157,7 @@
#: src/readelf.c:101
msgid "Dump the uninterpreted contents of SECTION, by number or name"
-@@ -4215,10 +4215,9 @@
+@@ -4285,10 +4279,9 @@
msgstr "Bez odnajdywania nazw symboli dla adresów w danych DWARF"
#: src/readelf.c:112
@@ -55,7 +169,7 @@
#: src/readelf.c:114
msgid "Ignored for compatibility (lines always wide)"
-@@ -4253,25 +4252,25 @@
+@@ -4323,25 +4316,25 @@
msgstr "nie można uzyskać nagłówka sekcji: %s"
#: src/readelf.c:562
@@ -65,8 +179,8 @@
-msgstr "nie można uzyskać nagłówka sekcji\n"
+msgstr "nie można uzyskać nazwy sekcji"
- #: src/readelf.c:571 src/readelf.c:5126 src/readelf.c:7299 src/readelf.c:7401
- #: src/readelf.c:7559
+ #: src/readelf.c:571 src/readelf.c:5207 src/readelf.c:7400 src/readelf.c:7502
+ #: src/readelf.c:7660
#, c-format
msgid "cannot get %s content: %s"
-msgstr "nie można uzyskać zwartości %s: %s"
@@ -88,7 +202,7 @@
#: src/readelf.c:602 src/readelf.c:619 src/readelf.c:648
#, c-format
-@@ -4279,9 +4278,9 @@
+@@ -4349,9 +4342,9 @@
msgstr "błąd podczas zamykania deskryptora ELF: %s"
#: src/readelf.c:609
@@ -100,34 +214,46 @@
#: src/readelf.c:643
#, c-format
-@@ -4289,9 +4288,9 @@
+@@ -4359,9 +4352,9 @@
msgstr "\"%s\" nie jest archiwum, nie można wyświetlić indeksu archiwum"
- #: src/readelf.c:728
+ #: src/readelf.c:742
-#, fuzzy, c-format
+#, c-format
msgid "No such section '%s' in '%s'"
-msgstr "nie można odczytać notatki sekcji [%zu] \"%s\" w \"%s\": %s"
+msgstr "Brak sekcji \"%s\" w \"%s\""
- #: src/readelf.c:755
+ #: src/readelf.c:769
+ #, c-format
+@@ -4682,9 +4675,9 @@
+
+ #: src/readelf.c:1585 src/readelf.c:2188 src/readelf.c:2446 src/readelf.c:2516
+ #: src/readelf.c:2798 src/readelf.c:2871 src/readelf.c:4474
+-#, fuzzy, c-format
++#, c-format
+ msgid "invalid sh_link value in section %Zu"
+-msgstr "nieprawidłowa sekcja .debug_line"
++msgstr "nieprawidłowa wartość sh_link w sekcji %Zu"
+
+ #: src/readelf.c:1588
#, c-format
-@@ -5126,9 +5125,9 @@
+@@ -5202,9 +5195,9 @@
msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami offsetu"
- #: src/readelf.c:4206
+ #: src/readelf.c:4274
-#, fuzzy, c-format
+#, c-format
msgid "%s %#<PRIx64> used with different base addresses"
-msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
+msgstr "%s %#<PRIx64> zostało użyte z różnymi adresami bazowymi"
- #: src/readelf.c:4288
+ #: src/readelf.c:4356
#, c-format
-@@ -5239,63 +5238,67 @@
+@@ -5315,63 +5308,67 @@
msgstr "nieprawidłowe dane w sekcji [%zu] \"%s\""
- #: src/readelf.c:4497
+ #: src/readelf.c:4575
-#, fuzzy, c-format
+#, c-format
msgid ""
@@ -138,41 +264,41 @@
+"\n"
+" Długość: %6<PRIu64>\n"
- #: src/readelf.c:4509
+ #: src/readelf.c:4587
-#, fuzzy, c-format
+#, c-format
msgid " DWARF version: %6<PRIuFAST16>\n"
-msgstr " Wersja: %<PRIu16>\n"
+msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
- #: src/readelf.c:4513
+ #: src/readelf.c:4591
#, c-format
msgid "unsupported aranges version"
-msgstr ""
+msgstr "nieobsługiwana wersja aranges"
- #: src/readelf.c:4524
+ #: src/readelf.c:4602
-#, fuzzy, c-format
+#, c-format
msgid " CU offset: %6<PRIx64>\n"
-msgstr " offset CU: %#<PRIx32>\n"
+msgstr " offset CU: %6<PRIx64>\n"
- #: src/readelf.c:4530
+ #: src/readelf.c:4608
-#, fuzzy, c-format
+#, c-format
msgid " Address size: %6<PRIu64>\n"
-msgstr " offset adresu: %#<PRIx32>\n"
+msgstr " Rozmiar adresu: %6<PRIu64>\n"
- #: src/readelf.c:4534
+ #: src/readelf.c:4612
-#, fuzzy, c-format
+#, c-format
msgid "unsupported address size"
-msgstr "brak wartości adresu"
+msgstr "nieobsługiwany rozmiar adresu"
- #: src/readelf.c:4539
+ #: src/readelf.c:4617
-#, fuzzy, c-format
+#, c-format
msgid ""
@@ -183,60 +309,60 @@
+" Rozmiar segmentu: %6<PRIu64>\n"
+"\n"
- #: src/readelf.c:4543
+ #: src/readelf.c:4621
#, c-format
msgid "unsupported segment size"
-msgstr ""
+msgstr "nieobsługiwany rozmiar segmentu"
- #: src/readelf.c:4583
+ #: src/readelf.c:4661
-#, fuzzy, c-format
+#, c-format
msgid " %s..%s (%<PRIx64>)\n"
-msgstr " %s: %<PRId64>\n"
+msgstr " %s..%s (%<PRIx64>)\n"
- #: src/readelf.c:4586
+ #: src/readelf.c:4664
-#, fuzzy, c-format
+#, c-format
msgid " %s..%s\n"
-msgstr " [%6tx] %s...%s\n"
+msgstr " %s..%s\n"
- #: src/readelf.c:4595
+ #: src/readelf.c:4673
#, c-format
msgid " %Zu padding bytes\n"
-msgstr ""
+msgstr " %Zu bajtów wyrównania\n"
- #: src/readelf.c:4613
+ #: src/readelf.c:4691
#, c-format
-@@ -5328,9 +5331,9 @@
+@@ -5404,9 +5401,9 @@
msgstr " %s...%s\n"
- #: src/readelf.c:5118
+ #: src/readelf.c:5196
-#, fuzzy, c-format
+#, c-format
msgid "cannot get ELF: %s"
-msgstr "nie można uzyskać nagłówka ELF: %s"
+msgstr "nie można uzyskać ELF: %s"
- #: src/readelf.c:5133
+ #: src/readelf.c:5213
#, c-format
-@@ -5455,7 +5458,7 @@
+@@ -5531,7 +5528,7 @@
msgstr "nie można uzyskać następnego DIE: %s"
- #: src/readelf.c:5945
+ #: src/readelf.c:6045
-#, fuzzy, c-format
+#, c-format
msgid ""
"\n"
"DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
-@@ -5463,6 +5466,7 @@
+@@ -5539,6 +5536,7 @@
msgstr ""
"\n"
"Sekcja DWARF [%2zu] \"%s\" pod offsetem %#<PRIx64>:\n"
+"\n"
- #: src/readelf.c:6044
+ #: src/readelf.c:6144
#, c-format
diff --git a/elfutils-portability.patch b/elfutils-portability.patch
index 434baac..7a36434 100644
--- a/elfutils-portability.patch
+++ b/elfutils-portability.patch
@@ -1,6 +1,6 @@
--- elfutils/backends/ChangeLog
+++ elfutils/backends/ChangeLog
-@@ -188,6 +188,10 @@
+@@ -364,6 +364,10 @@
* ppc_attrs.c (ppc_check_object_attribute): Handle tag
GNU_Power_ABI_Struct_Return.
@@ -11,7 +11,7 @@
2008-10-04 Ulrich Drepper <drepper at redhat.com>
* i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and
-@@ -515,6 +519,11 @@
+@@ -691,6 +695,11 @@
* sparc_init.c: Likewise.
* x86_64_init.c: Likewise.
@@ -23,7 +23,7 @@
2005-11-19 Roland McGrath <roland at redhat.com>
* ppc64_reloc.def: REL30 -> ADDR30.
-@@ -537,6 +546,9 @@
+@@ -713,6 +722,9 @@
* Makefile.am (uninstall): Don't try to remove $(pkgincludedir).
(CLEANFILES): Add libebl_$(m).so.
@@ -35,28 +35,26 @@
--- elfutils/backends/Makefile.am
+++ elfutils/backends/Makefile.am
-@@ -112,7 +112,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
+@@ -119,7 +119,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
$(LINK) -shared -o $(@:.map=.so) \
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
-Wl,--version-script,$(@:.so=.map) \
-- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) $(libmudflap)
-+ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw) $(libmudflap)
+- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
++ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw)
$(textrel_check)
libebl_i386.so: $(cpu_i386)
--- elfutils/backends/Makefile.in
+++ elfutils/backends/Makefile.in
-@@ -83,7 +83,8 @@ host_triplet = @host@
+@@ -83,6 +83,7 @@ host_triplet = @host@
DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(noinst_HEADERS) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
subdir = backends
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-@@ -266,6 +267,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -285,6 +286,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -64,7 +62,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -295,6 +297,7 @@ SHELL = @SHELL@
+@@ -316,6 +318,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -72,31 +70,35 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -357,10 +360,9 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
+@@ -378,11 +381,11 @@ zip_LIBS = @zip_LIBS@
+ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(top_srcdir)/libebl -I$(top_srcdir)/libasm \
-I$(top_srcdir)/libelf -I$(top_srcdir)/libdw
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+- $(if $($(*F)_no_Werror),,-Werror) \
+- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+- $($(*F)_CFLAGS)
+-
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
++ $($(*F)_no_Werror),,-Werror) $(if \
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1)
-+ $(am__append_1) $(am__append_2)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
-@@ -834,7 +836,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda $(foreach m,$(modules), libebl_$(m).map \
+ libebl_$(m).so $(am_libebl_$(m)_pic_a_OBJECTS))
+@@ -885,7 +888,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a
$(LINK) -shared -o $(@:.map=.so) \
-Wl,--whole-archive $< $(cpu_$*) -Wl,--no-whole-archive \
-Wl,--version-script,$(@:.so=.map) \
-- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw) $(libmudflap)
-+ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw) $(libmudflap)
+- -Wl,-z,defs -Wl,--as-needed $(libelf) $(libdw)
++ -Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw)
$(textrel_check)
libebl_i386.so: $(cpu_i386)
--- elfutils/ChangeLog
+++ elfutils/ChangeLog
-@@ -38,6 +38,8 @@
+@@ -148,6 +148,8 @@
2012-01-24 Mark Wielaard <mjw at redhat.com>
@@ -105,7 +107,7 @@
* COPYING: Fix address. Updated version from gnulib.
2012-01-23 Mark Wielaard <mjw at redhat.com>
-@@ -56,6 +58,9 @@
+@@ -166,6 +168,9 @@
2011-10-08 Mike Frysinger <vapier at gentoo.org>
@@ -115,7 +117,7 @@
* configure.ac: Fix use of AC_ARG_ENABLE to handle $enableval correctly.
2011-10-02 Ulrich Drepper <drepper at gmail.com>
-@@ -77,6 +82,10 @@
+@@ -187,6 +192,10 @@
* configure.ac (LOCALEDIR, DATADIRNAME): Removed.
@@ -126,7 +128,7 @@
2009-09-21 Ulrich Drepper <drepper at redhat.com>
* configure.ac: Update for more modern autoconf.
-@@ -85,6 +94,10 @@
+@@ -195,6 +204,10 @@
* configure.ac (zip_LIBS): Check for liblzma too.
@@ -137,7 +139,7 @@
2009-04-19 Roland McGrath <roland at redhat.com>
* configure.ac (eu_version): Round down here, not in version.h macros.
-@@ -96,6 +109,8 @@
+@@ -206,6 +219,8 @@
2009-01-23 Roland McGrath <roland at redhat.com>
@@ -146,7 +148,7 @@
* configure.ac (zlib check): Check for gzdirect, need zlib >= 1.2.2.3.
* configure.ac (__thread check): Use AC_LINK_IFELSE, in case of
-@@ -176,6 +191,10 @@
+@@ -286,6 +301,10 @@
* configure.ac: Add dummy automake conditional to get dependencies
for non-generic linker right. See src/Makefile.am.
@@ -157,7 +159,7 @@
2005-11-18 Roland McGrath <roland at redhat.com>
* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable.
-@@ -223,6 +242,17 @@
+@@ -333,6 +352,17 @@
* Makefile.am (all_SUBDIRS): Add libdwfl.
* configure.ac: Write libdwfl/Makefile.
@@ -177,7 +179,7 @@
* configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros.
--- elfutils/config/ChangeLog
+++ elfutils/config/ChangeLog
-@@ -23,6 +23,10 @@
+@@ -58,6 +58,10 @@
* known-dwarf.awk: Use gawk.
@@ -193,12 +195,12 @@
@@ -1,6 +1,6 @@
## Common automake fragments for elfutils subdirectory makefiles.
##
--## Copyright (C) 2010 Red Hat, Inc.
-+## Copyright (C) 2010-2011 Red Hat, Inc.
+-## Copyright (C) 2010, 2014 Red Hat, Inc.
++## Copyright (C) 2010-2011, 2014 Red Hat, Inc.
##
## This file is part of elfutils.
##
-@@ -29,14 +29,20 @@
+@@ -29,13 +29,21 @@
## not, see <http://www.gnu.org/licenses/>.
##
@@ -207,23 +209,24 @@
+
DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow \
-- $(if $($(*F)_no_Werror),,-Werror) \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow \
+ $(if $($(*F)_no_Werror),,-Werror) \
- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+ $(if $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) \
- $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) \
++ $(if $($(*F)_no_Wformat),-Wno-format,-Wformat=2) \
$($(*F)_CFLAGS)
+if BUILD_WERROR
+AM_CFLAGS += $(if $($(*F)_no_Werror),,-Werror)
+endif
+
- if MUDFLAP
- AM_CFLAGS += -fmudflap
- libmudflap = -lmudflap
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+
+ %.os: %.c %.o
--- elfutils/config/Makefile.in
+++ elfutils/config/Makefile.in
-@@ -140,6 +140,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -146,6 +146,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -231,7 +234,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -169,6 +170,7 @@ SHELL = @SHELL@
+@@ -177,6 +178,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -241,17 +244,17 @@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
--- elfutils/config.h.in
+++ elfutils/config.h.in
-@@ -6,6 +6,9 @@
- /* Defined if libdw should support GNU ref_alt FORM, dwz multi files. */
- #undef ENABLE_DWZ
+@@ -3,6 +3,9 @@
+ /* Should ar and ranlib use -D behavior by default? */
+ #undef DEFAULT_AR_DETERMINISTIC
+/* Have __builtin_popcount. */
+#undef HAVE_BUILTIN_POPCOUNT
+
- /* $libdir subdirectory containing libebl modules. */
- #undef LIBEBL_SUBDIR
+ /* Define to 1 if you have the <inttypes.h> header file. */
+ #undef HAVE_INTTYPES_H
-@@ -69,4 +72,7 @@
+@@ -99,4 +102,7 @@
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
@@ -261,7 +264,7 @@
#include <eu-config.h>
--- elfutils/configure
+++ elfutils/configure
-@@ -618,6 +618,8 @@ ZLIB_TRUE
+@@ -661,6 +661,8 @@ ZLIB_TRUE
LIBEBL_SUBDIR
TESTS_RPATH_FALSE
TESTS_RPATH_TRUE
@@ -270,16 +273,16 @@
BUILD_STATIC_FALSE
BUILD_STATIC_TRUE
USE_VALGRIND_FALSE
-@@ -635,6 +637,8 @@ NEVER_TRUE
+@@ -676,6 +678,8 @@ NEVER_TRUE
base_cpu
NATIVE_LD_FALSE
NATIVE_LD_TRUE
+LD_AS_NEEDED
+WEXTRA
- LEXLIB
- LEX_OUTPUT_ROOT
- LEX
-@@ -755,6 +759,7 @@ enable_debugpred
+ NM
+ READELF
+ ac_ct_AR
+@@ -796,6 +800,7 @@ enable_debugpred
enable_gprof
enable_gcov
enable_valgrind
@@ -287,7 +290,7 @@
enable_tests_rpath
enable_libebl_subdir
with_zlib
-@@ -1412,6 +1417,7 @@ Optional Features:
+@@ -1452,6 +1457,7 @@ Optional Features:
--enable-gprof build binaries with gprof support
--enable-gcov build binaries with gcov support
--enable-valgrind run all tests under valgrind
@@ -295,7 +298,7 @@
--enable-tests-rpath build $ORIGIN-using rpath into tests
--enable-libebl-subdir=DIR
install libebl_CPU modules in $(libdir)/DIR
-@@ -4012,6 +4018,130 @@ if test "x$ac_cv_c99" != xyes; then :
+@@ -4674,6 +4680,130 @@ if test "x$ac_cv_c99" != xyes; then :
as_fn_error $? "gcc with C99 support required" "$LINENO" 5
fi
@@ -426,7 +429,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __thread support" >&5
$as_echo_n "checking for __thread support... " >&6; }
if ${ac_cv_tls+:} false; then :
-@@ -4048,7 +4178,13 @@ fi
+@@ -4710,7 +4840,13 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
$as_echo "$ac_cv_tls" >&6; }
if test "x$ac_cv_tls" != xyes; then :
@@ -441,7 +444,7 @@
fi
# Check whether --enable-largefile was given.
-@@ -4458,6 +4594,22 @@ else
+@@ -5077,6 +5213,22 @@ else
fi
@@ -464,16 +467,16 @@
# Check whether --enable-tests-rpath was given.
if test "${enable_tests_rpath+set}" = set; then :
enableval=$enable_tests_rpath; tests_use_rpath=$enableval
-@@ -5178,7 +5330,7 @@ case "$eu_version" in
+@@ -5800,7 +5952,7 @@ case "$eu_version" in
esac
# Round up to the next release API (x.y) version.
-eu_version=$(( (eu_version + 999) / 1000 ))
+eu_version=`expr \( $eu_version + 999 \) / 1000`
- cat >confcache <<\_ACEOF
- # This file is a shell script that caches the results of configure
-@@ -5353,6 +5505,10 @@ if test -z "${BUILD_STATIC_TRUE}" && tes
+ ac_ext=c
+ ac_cpp='$CPP $CPPFLAGS'
+@@ -6530,6 +6682,10 @@ if test -z "${BUILD_STATIC_TRUE}" && tes
as_fn_error $? "conditional \"BUILD_STATIC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
@@ -486,7 +489,7 @@
Usually this means the macro was only invoked conditionally." "$LINENO" 5
--- elfutils/configure.ac
+++ elfutils/configure.ac
-@@ -90,6 +90,54 @@ CFLAGS="$old_CFLAGS"])
+@@ -89,6 +89,54 @@ CFLAGS="$old_CFLAGS"])
AS_IF([test "x$ac_cv_c99" != xyes],
AC_MSG_ERROR([gcc with C99 support required]))
@@ -541,7 +544,7 @@
AC_CACHE_CHECK([for __thread support], ac_cv_tls, [dnl
# Use the same flags that we use for our DSOs, so the test is representative.
# Some old compiler/linker/libc combinations fail some ways and not others.
-@@ -105,7 +153,10 @@ static __thread int a; int foo (int b) {
+@@ -104,7 +152,10 @@ static __thread int a; int foo (int b) {
CFLAGS="$save_CFLAGS"
LDFLAGS="$save_LDFLAGS"])
AS_IF([test "x$ac_cv_tls" != xyes],
@@ -553,9 +556,9 @@
dnl This test must come as early as possible after the compiler configuration
dnl tests, because the choice of the file model can (in principle) affect
-@@ -204,6 +255,11 @@ AM_CONDITIONAL(USE_VALGRIND, test "$use_
+@@ -183,6 +234,11 @@ AM_CONDITIONAL(USE_VALGRIND, test "$use_
AM_CONDITIONAL(BUILD_STATIC, [dnl
- test "$use_mudflap" = yes -o "$use_gprof" = yes -o "$use_gcov" = yes])
+ test "$use_gprof" = yes -o "$use_gcov" = yes])
+AC_ARG_ENABLE([werror],
+AS_HELP_STRING([--disable-werror],[do not build with -Werror]),
@@ -565,17 +568,18 @@
AC_ARG_ENABLE([tests-rpath],
AS_HELP_STRING([--enable-tests-rpath],[build $ORIGIN-using rpath into tests]),
[tests_use_rpath=$enableval], [tests_use_rpath=no])
-@@ -315,6 +371,6 @@ case "$eu_version" in
+@@ -297,7 +353,7 @@ case "$eu_version" in
esac
# Round up to the next release API (x.y) version.
-eu_version=$(( (eu_version + 999) / 1000 ))
+eu_version=`expr \( $eu_version + 999 \) / 1000`
- AC_OUTPUT
+ AC_CHECK_SIZEOF(long)
+
--- elfutils/lib/ChangeLog
+++ elfutils/lib/ChangeLog
-@@ -57,6 +57,9 @@
+@@ -65,6 +65,9 @@
2009-01-23 Roland McGrath <roland at redhat.com>
@@ -585,7 +589,7 @@
* eu-config.h: Add multiple inclusion protection.
2009-01-17 Ulrich Drepper <drepper at redhat.com>
-@@ -113,6 +116,11 @@
+@@ -121,6 +124,11 @@
* Makefile.am (libeu_a_SOURCES): Add it.
* system.h: Declare crc32_file.
@@ -619,17 +623,15 @@
# define OLD_VERSION(name, version) \
--- elfutils/lib/Makefile.in
+++ elfutils/lib/Makefile.in
-@@ -82,7 +82,8 @@ host_triplet = @host@
+@@ -82,6 +82,7 @@ host_triplet = @host@
DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(noinst_HEADERS) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-@@ -193,6 +194,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -197,6 +198,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -637,7 +639,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -222,6 +224,7 @@ SHELL = @SHELL@
+@@ -228,6 +230,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -645,22 +647,23 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -283,10 +286,9 @@ zip_LIBS = @zip_LIBS@
+@@ -289,9 +292,11 @@ top_srcdir = @top_srcdir@
+ zip_LIBS = @zip_LIBS@
AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+ $($(*F)_no_Werror),,-Werror) $(if \
+- $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1) -fpic
-+ $(am__append_1) $(am__append_2) -fpic
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1) -fpic
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda
+ textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
--- elfutils/libasm/ChangeLog
+++ elfutils/libasm/ChangeLog
-@@ -75,6 +75,11 @@
+@@ -79,6 +79,11 @@
* asm_error.c: Add new error ASM_E_IOERROR.
* libasmP.h: Add ASM_E_IOERROR definition.
@@ -674,21 +677,18 @@
* Makefile.am (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.
--- elfutils/libasm/Makefile.in
+++ elfutils/libasm/Makefile.in
-@@ -83,10 +83,11 @@ host_triplet = @host@
+@@ -83,8 +83,9 @@ host_triplet = @host@
DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
- @MUDFLAP_FALSE at noinst_PROGRAMS = $(am__EXEEXT_1)
- @MUDFLAP_TRUE at am_libasm_pic_a_OBJECTS =
-- at MUDFLAP_FALSE@@USE_LOCKS_TRUE at am__append_2 = -lpthread
-+ at MUDFLAP_FALSE@@USE_LOCKS_TRUE at am__append_3 = -lpthread
+ noinst_PROGRAMS = $(am__EXEEXT_1)
+- at USE_LOCKS_TRUE@am__append_1 = -lpthread
++ at USE_LOCKS_TRUE@am__append_2 = -lpthread
subdir = libasm
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-@@ -245,6 +246,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -248,6 +249,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -696,7 +696,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -274,6 +276,7 @@ SHELL = @SHELL@
+@@ -279,6 +281,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@@ -704,31 +704,35 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -336,10 +339,9 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
+@@ -341,11 +344,11 @@ zip_LIBS = @zip_LIBS@
+ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(top_srcdir)/libelf -I$(top_srcdir)/libebl \
-I$(top_srcdir)/libdw
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+- $(if $($(*F)_no_Werror),,-Werror) \
+- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+- $($(*F)_CFLAGS)
+-
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
++ $($(*F)_no_Werror),,-Werror) $(if \
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1)
-+ $(am__append_1) $(am__append_2)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
-@@ -368,7 +370,7 @@ libasm_a_SOURCES = asm_begin.c asm_abort
-
- @MUDFLAP_FALSE at libasm_pic_a_SOURCES =
- @MUDFLAP_FALSE at am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
-- at MUDFLAP_FALSE@libasm_so_LDLIBS = $(am__append_2)
-+ at MUDFLAP_FALSE@libasm_so_LDLIBS = $(am__append_3)
- @MUDFLAP_FALSE at libasm_so_SOURCES =
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda $(am_libasm_pic_a_OBJECTS) \
+ libasm.so.$(VERSION)
+@@ -370,7 +373,7 @@ libasm_a_SOURCES = asm_begin.c asm_abort
+
+ libasm_pic_a_SOURCES =
+ am_libasm_pic_a_OBJECTS = $(libasm_a_SOURCES:.c=.os)
+-libasm_so_LDLIBS = $(am__append_1)
++libasm_so_LDLIBS = $(am__append_2)
+ libasm_so_SOURCES =
noinst_HEADERS = libasmP.h symbolhash.h
EXTRA_DIST = libasm.map
--- elfutils/libcpu/ChangeLog
+++ elfutils/libcpu/ChangeLog
-@@ -47,6 +47,9 @@
+@@ -51,6 +51,9 @@
2009-01-23 Roland McGrath <roland at redhat.com>
@@ -738,7 +742,7 @@
* Makefile.am (i386_parse_CFLAGS): Use quotes around command
substitution that can produce leading whitespace.
-@@ -376,6 +379,11 @@
+@@ -380,6 +383,11 @@
* defs/i386.doc: New file.
* defs/x86_64: New file.
@@ -762,17 +766,15 @@
else
--- elfutils/libcpu/Makefile.in
+++ elfutils/libcpu/Makefile.in
-@@ -84,7 +84,8 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
+@@ -84,6 +84,7 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
$(srcdir)/Makefile.am i386_lex.c i386_parse.c \
$(top_srcdir)/config/depcomp $(top_srcdir)/config/ylwrap \
$(am__noinst_HEADERS_DIST) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
@MAINTAINER_MODE_TRUE at noinst_PROGRAMS = i386_gendis$(EXEEXT)
subdir = libcpu
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-@@ -220,6 +221,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -223,6 +224,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -780,7 +782,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = lex.$(<F:lex.l=)
-@@ -249,6 +251,7 @@ SHELL = @SHELL@
+@@ -254,6 +256,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -788,22 +790,24 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -311,10 +314,9 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
+@@ -316,10 +319,11 @@ zip_LIBS = @zip_LIBS@
+ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
-I$(srcdir)/../libdw -I$(srcdir)/../libasm
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+ $($(*F)_no_Werror),,-Werror) $(if \
+- $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic \
+- -fdollars-in-identifiers
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1) -fpic -fdollars-in-identifiers
-+ $(am__append_1) $(am__append_2) -fpic -fdollars-in-identifiers
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1) -fpic -fdollars-in-identifiers
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda $(foreach P,i386 x86_64,$P_defs \
+ $P.mnemonics)
--- elfutils/libdw/ChangeLog
+++ elfutils/libdw/ChangeLog
-@@ -177,6 +177,10 @@
+@@ -420,6 +420,10 @@
* Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
@@ -814,7 +818,7 @@
2011-07-14 Mark Wielaard <mjw at redhat.com>
* libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
-@@ -536,6 +540,10 @@
+@@ -779,6 +783,10 @@
* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
@@ -825,7 +829,7 @@
2009-08-10 Roland McGrath <roland at redhat.com>
* dwarf_getscopevar.c: Use dwarf_diename.
-@@ -1304,6 +1312,11 @@
+@@ -1547,6 +1555,11 @@
2005-05-31 Roland McGrath <roland at redhat.com>
@@ -839,7 +843,7 @@
--- elfutils/libdw/dwarf_begin_elf.c
+++ elfutils/libdw/dwarf_begin_elf.c
-@@ -48,6 +48,14 @@
+@@ -47,6 +47,14 @@
#if USE_ZLIB
# include <endian.h>
# define crc32 loser_crc32
@@ -856,7 +860,7 @@
#endif
--- elfutils/libdw/libdw.h
+++ elfutils/libdw/libdw.h
-@@ -831,7 +831,7 @@ extern Dwarf_OOM dwarf_new_oom_handler (
+@@ -891,7 +891,7 @@ extern Dwarf_OOM dwarf_new_oom_handler (
/* Inline optimizations. */
@@ -867,19 +871,17 @@
dwarf_whatattr (Dwarf_Attribute *attr)
--- elfutils/libdw/Makefile.in
+++ elfutils/libdw/Makefile.in
-@@ -84,8 +84,9 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
+@@ -84,7 +84,8 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS) \
ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
-- at BUILD_STATIC_TRUE@am__append_2 = -fpic
+- at BUILD_STATIC_TRUE@am__append_1 = -fpic
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
-+ at BUILD_STATIC_TRUE@am__append_3 = -fpic
- @MUDFLAP_FALSE at noinst_PROGRAMS = $(am__EXEEXT_1)
- @MUDFLAP_TRUE at am_libdw_pic_a_OBJECTS =
++ at BUILD_STATIC_TRUE@am__append_2 = -fpic
+ noinst_PROGRAMS = $(am__EXEEXT_1)
subdir = libdw
-@@ -291,6 +292,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+@@ -295,6 +296,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -887,7 +889,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -320,6 +322,7 @@ SHELL = @SHELL@
+@@ -326,6 +328,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@@ -895,22 +897,89 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -381,10 +384,9 @@ zip_LIBS = @zip_LIBS@
+@@ -387,10 +390,11 @@ top_srcdir = @top_srcdir@
+ zip_LIBS = @zip_LIBS@
AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+ $($(*F)_no_Werror),,-Werror) $(if \
+- $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) \
+- $(am__append_1)
++ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1) $(am__append_2)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda
+ textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+--- elfutils/libdwelf/Makefile.in
++++ elfutils/libdwelf/Makefile.in
+@@ -82,6 +82,7 @@ host_triplet = @host@
+ DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
+ $(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
+ $(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
++ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
+ subdir = libdwelf
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -227,6 +228,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ LDFLAGS = @LDFLAGS@
++LD_AS_NEEDED = @LD_AS_NEEDED@
+ LEX = @LEX@
+ LEXLIB = @LEXLIB@
+ LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+@@ -258,6 +260,7 @@ SHELL = @SHELL@
+ STRIP = @STRIP@
+ USE_NLS = @USE_NLS@
+ VERSION = 1
++WEXTRA = @WEXTRA@
+ XGETTEXT = @XGETTEXT@
+ XGETTEXT_015 = @XGETTEXT_015@
+ XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
+@@ -320,11 +323,11 @@ zip_LIBS = @zip_LIBS@
+ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
+ -I$(srcdir)/../libelf -I$(srcdir)/../libdw \
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libebl
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+- $(if $($(*F)_no_Werror),,-Werror) \
+- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+- $($(*F)_CFLAGS)
+-
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
++ $($(*F)_no_Werror),,-Werror) $(if \
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1) $(am__append_2)
-+ $(am__append_1) $(am__append_2) $(am__append_3)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda $(am_libdwelf_pic_a_OBJECTS)
+ textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
--- elfutils/libdwfl/ChangeLog
+++ elfutils/libdwfl/ChangeLog
-@@ -1624,6 +1624,11 @@
+@@ -421,6 +421,21 @@
+ (dwfl_module_addrsym) (i_to_symfile): New function.
+ (dwfl_module_addrsym) (search_table): Use it.
+
++2013-11-09 Jan Kratochvil <jan.kratochvil at redhat.com>
++
++ Older OS compatibility bits.
++ * linux-core-attach.c (be64toh, le64toh, be32toh, le32toh): Provide
++ fallbacks if not defined by system.
++
++2013-11-09 Jan Kratochvil <jan.kratochvil at redhat.com>
++
++ Handle T-stopped detach for old kernels.
++ * linux-pid-attach.c (struct pid_arg): New field stopped.
++ (ptrace_attach): New parameter stoppedp. Set it appropriately.
++ (pid_set_initial_registers): Pass the new field.
++ (pid_thread_detach): Handle the case of STOPPED for old kernels.
++ (__libdwfl_attach_state_for_pid): Initialize STOPPED.
++
+ 2013-11-07 Jan Kratochvil <jan.kratochvil at redhat.com>
+ Mark Wielaard <mjw at redhat.com>
+
+@@ -2186,6 +2201,11 @@
2005-07-21 Roland McGrath <roland at redhat.com>
@@ -922,27 +991,91 @@
* Makefile.am (noinst_HEADERS): Add loc2c.c.
* test2.c (main): Check sscanf result to quiet warning.
+--- elfutils/libdwfl/linux-core-attach.c
++++ elfutils/libdwfl/linux-core-attach.c
+@@ -29,6 +29,35 @@
+ #include "libdwflP.h"
+ #include <fcntl.h>
+ #include "system.h"
++#include <endian.h>
++#include <byteswap.h>
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++# ifndef be64toh
++# define be64toh(x) bswap_64 (x)
++# endif
++# ifndef le64toh
++# define le64toh(x) (x)
++# endif
++# ifndef be32toh
++# define be32toh(x) bswap_32 (x)
++# endif
++# ifndef le32toh
++# define le32toh(x) (x)
++# endif
++#else
++# ifndef be64toh
++# define be64toh(x) (x)
++# endif
++# ifndef le64toh
++# define le64toh(x) bswap_64 (x)
++# endif
++# ifndef be32toh
++# define be32toh(x) (x)
++# endif
++# ifndef le32toh
++# define le32toh(x) bswap_32 (x)
++# endif
++#endif
+
+ #ifndef MIN
+ # define MIN(a, b) ((a) < (b) ? (a) : (b))
+--- elfutils/libdwfl/linux-pid-attach.c
++++ elfutils/libdwfl/linux-pid-attach.c
+@@ -255,6 +255,11 @@ void
+ internal_function
+ __libdwfl_ptrace_detach (pid_t tid, bool tid_was_stopped)
+ {
++ // Older kernels (tested kernel-2.6.18-348.12.1.el5.x86_64) need special
++ // handling of the detachment to keep the process State: T (stopped).
++ if (tid_was_stopped)
++ syscall (__NR_tkill, tid, SIGSTOP);
++
+ /* This handling is needed only on older Linux kernels such as
+ 2.6.32-358.23.2.el6.ppc64. Later kernels such as
+ 3.11.7-200.fc19.x86_64 remember the T (stopped) state
+@@ -262,6 +267,15 @@ __libdwfl_ptrace_detach (pid_t tid, bool
+ PTRACE_DETACH. */
+ ptrace (PTRACE_DETACH, tid, NULL,
+ (void *) (intptr_t) (tid_was_stopped ? SIGSTOP : 0));
++
++ if (tid_was_stopped)
++ {
++ // Wait till the SIGSTOP settles down.
++ int i;
++ for (i = 0; i < 100000; i++)
++ if (linux_proc_pid_is_stopped (tid))
++ break;
++ }
+ }
+
+ static void
--- elfutils/libdwfl/Makefile.in
+++ elfutils/libdwfl/Makefile.in
-@@ -82,11 +82,12 @@ host_triplet = @host@
+@@ -82,9 +82,10 @@ host_triplet = @host@
DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
-- at MUDFLAP_FALSE@am__append_2 = libdwfl_pic.a
-- at ZLIB_TRUE@am__append_3 = gzip.c
-- at BZLIB_TRUE@am__append_4 = bzip2.c
-- at LZMA_TRUE@am__append_5 = lzma.c
+- at ZLIB_TRUE@am__append_1 = gzip.c
+- at BZLIB_TRUE@am__append_2 = bzip2.c
+- at LZMA_TRUE@am__append_3 = lzma.c
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
-+ at MUDFLAP_FALSE@am__append_3 = libdwfl_pic.a
-+ at ZLIB_TRUE@am__append_4 = gzip.c
-+ at BZLIB_TRUE@am__append_5 = bzip2.c
-+ at LZMA_TRUE@am__append_6 = lzma.c
- @MUDFLAP_TRUE at am_libdwfl_pic_a_OBJECTS =
++ at ZLIB_TRUE@am__append_2 = gzip.c
++ at BZLIB_TRUE@am__append_3 = bzip2.c
++ at LZMA_TRUE@am__append_4 = lzma.c
subdir = libdwfl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-@@ -280,6 +281,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -286,6 +287,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -950,7 +1083,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -309,6 +311,7 @@ SHELL = @SHELL@
+@@ -317,6 +319,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@@ -958,42 +1091,37 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -371,10 +374,9 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
+@@ -379,11 +382,11 @@ zip_LIBS = @zip_LIBS@
+ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. -I$(srcdir) \
-I$(srcdir)/../libelf -I$(srcdir)/../libebl \
- -I$(srcdir)/../libdw
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+- $(if $($(*F)_no_Werror),,-Werror) \
+- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+- $($(*F)_CFLAGS)
+-
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
++ $($(*F)_no_Werror),,-Werror) $(if \
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1)
-+ $(am__append_1) $(am__append_2)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
-@@ -382,7 +384,7 @@ COMPILE.os = $(filter-out -fprofile-arcs
-
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
CLEANFILES = *.gcno *.gcda $(am_libdwfl_pic_a_OBJECTS)
- textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
--noinst_LIBRARIES = libdwfl.a $(am__append_2)
-+noinst_LIBRARIES = libdwfl.a $(am__append_3)
- pkginclude_HEADERS = libdwfl.h
- libdwfl_a_SOURCES = dwfl_begin.c dwfl_end.c dwfl_error.c \
- dwfl_version.c dwfl_module.c dwfl_report_elf.c relocate.c \
-@@ -403,8 +405,8 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_en
- dwfl_module_getsym.c dwfl_module_addrname.c \
- dwfl_module_addrsym.c dwfl_module_return_value_location.c \
+ textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+@@ -410,8 +413,8 @@ libdwfl_a_SOURCES = dwfl_begin.c dwfl_en
dwfl_module_register_names.c dwfl_segment_report_module.c \
-- link_map.c core-file.c open.c image-header.c $(am__append_3) \
-- $(am__append_4) $(am__append_5)
-+ link_map.c core-file.c open.c image-header.c $(am__append_4) \
-+ $(am__append_5) $(am__append_6)
- @MUDFLAP_FALSE at libdwfl = $(libdw)
- @MUDFLAP_TRUE at libdwfl = libdwfl.a $(libdw) $(libebl) $(libelf) $(libeu)
- @MUDFLAP_FALSE at libdw = ../libdw/libdw.so
+ link_map.c core-file.c open.c image-header.c dwfl_frame.c \
+ frame_unwind.c dwfl_frame_pc.c linux-pid-attach.c \
+- linux-core-attach.c dwfl_frame_regs.c $(am__append_1) \
+- $(am__append_2) $(am__append_3)
++ linux-core-attach.c dwfl_frame_regs.c $(am__append_2) \
++ $(am__append_3) $(am__append_4)
+ libdwfl = $(libdw)
+ libdw = ../libdw/libdw.so
+ libelf = ../libelf/libelf.so
--- elfutils/libebl/ChangeLog
+++ elfutils/libebl/ChangeLog
-@@ -674,6 +674,11 @@
+@@ -748,6 +748,11 @@
* Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency
tracking works right.
@@ -1007,17 +1135,15 @@
* libebl_x86_64.map: Add x86_64_core_note.
--- elfutils/libebl/Makefile.in
+++ elfutils/libebl/Makefile.in
-@@ -82,7 +82,8 @@ host_triplet = @host@
+@@ -82,6 +82,7 @@ host_triplet = @host@
DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(noinst_HEADERS) $(pkginclude_HEADERS) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
subdir = libebl
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-@@ -242,6 +243,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -249,6 +250,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -1025,7 +1151,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -271,6 +273,7 @@ SHELL = @SHELL@
+@@ -280,6 +282,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@@ -1033,22 +1159,23 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -333,10 +336,9 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
+@@ -342,9 +345,11 @@ zip_LIBS = @zip_LIBS@
+ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. \
-I$(srcdir)/../libelf -I$(srcdir)/../libdw \
-I$(srcdir)/../libasm
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+ $($(*F)_no_Werror),,-Werror) $(if \
+- $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) -fpic
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1) -fpic
-+ $(am__append_1) $(am__append_2) -fpic
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1) -fpic
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda $(am_libebl_pic_a_OBJECTS)
+ textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
--- elfutils/libelf/ChangeLog
+++ elfutils/libelf/ChangeLog
-@@ -46,6 +46,11 @@
+@@ -135,6 +135,11 @@
* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
@@ -1060,7 +1187,7 @@
2011-02-26 Mark Wielaard <mjw at redhat.com>
* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
-@@ -723,6 +728,11 @@
+@@ -812,6 +817,11 @@
* elf.h: Update from glibc.
@@ -1114,23 +1241,20 @@
}
--- elfutils/libelf/Makefile.in
+++ elfutils/libelf/Makefile.in
-@@ -84,11 +84,12 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
+@@ -84,9 +84,10 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(include_HEADERS) $(noinst_HEADERS) $(pkginclude_HEADERS) \
ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
-- at BUILD_STATIC_TRUE@am__append_2 = -fpic
+- at BUILD_STATIC_TRUE@am__append_1 = -fpic
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
-+ at BUILD_STATIC_TRUE@am__append_3 = -fpic
- @MUDFLAP_FALSE at noinst_PROGRAMS = $(am__EXEEXT_1)
- @MUDFLAP_TRUE at am_libelf_pic_a_OBJECTS =
-- at MUDFLAP_FALSE@@USE_LOCKS_TRUE at am__append_3 = -lpthread
-+ at MUDFLAP_FALSE@@USE_LOCKS_TRUE at am__append_4 = -lpthread
++ at BUILD_STATIC_TRUE@am__append_2 = -fpic
+ noinst_PROGRAMS = $(am__EXEEXT_1)
+- at USE_LOCKS_TRUE@am__append_2 = -lpthread
++ at USE_LOCKS_TRUE@am__append_3 = -lpthread
subdir = libelf
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-@@ -288,6 +289,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -291,6 +292,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -1138,7 +1262,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -317,6 +319,7 @@ SHELL = @SHELL@
+@@ -322,6 +324,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = 1
@@ -1146,31 +1270,33 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -377,10 +380,9 @@ top_srcdir = @top_srcdir@
+@@ -382,10 +385,11 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 $(if \
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
+ $($(*F)_no_Werror),,-Werror) $(if \
+- $($(*F)_no_Wunused),,-Wunused -Wextra) $($(*F)_CFLAGS) \
+- $(am__append_1)
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1) $(am__append_2)
-+ $(am__append_1) $(am__append_2) $(am__append_3)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
-@@ -445,7 +447,7 @@ libelf_a_SOURCES = elf_version.c elf_has
-
- @MUDFLAP_FALSE at libelf_pic_a_SOURCES =
- @MUDFLAP_FALSE at am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
-- at MUDFLAP_FALSE@libelf_so_LDLIBS = $(am__append_3)
-+ at MUDFLAP_FALSE@libelf_so_LDLIBS = $(am__append_4)
- @MUDFLAP_FALSE at libelf_so_SOURCES =
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1) $(am__append_2)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda $(am_libelf_pic_a_OBJECTS) \
+ libelf.so.$(VERSION)
+@@ -446,7 +450,7 @@ libelf_a_SOURCES = elf_version.c elf_has
+
+ libelf_pic_a_SOURCES =
+ am_libelf_pic_a_OBJECTS = $(libelf_a_SOURCES:.c=.os)
+-libelf_so_LDLIBS = $(am__append_2)
++libelf_so_LDLIBS = $(am__append_3)
+ libelf_so_SOURCES =
noinst_HEADERS = elf.h abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \
version_xlate.h gnuhash_xlate.h note_xlate.h dl-hash.h
--- elfutils/m4/Makefile.in
+++ elfutils/m4/Makefile.in
-@@ -139,6 +139,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -145,6 +145,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -1178,7 +1304,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -168,6 +169,7 @@ SHELL = @SHELL@
+@@ -176,6 +177,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -1188,7 +1314,7 @@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
--- elfutils/Makefile.in
+++ elfutils/Makefile.in
-@@ -256,6 +256,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -263,6 +263,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -1196,7 +1322,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -285,6 +286,7 @@ SHELL = @SHELL@
+@@ -294,6 +295,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -1206,7 +1332,7 @@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
--- elfutils/src/addr2line.c
+++ elfutils/src/addr2line.c
-@@ -448,10 +448,10 @@ handle_address (const char *string, Dwfl
+@@ -540,10 +540,10 @@ handle_address (const char *string, Dwfl
bool parsed = false;
int i, j;
char *name = NULL;
@@ -1221,7 +1347,7 @@
break;
--- elfutils/src/ChangeLog
+++ elfutils/src/ChangeLog
-@@ -766,8 +766,16 @@
+@@ -1112,8 +1112,16 @@
* readelf.c (attr_callback): Use print_block only when we don't use
print_ops.
@@ -1238,7 +1364,7 @@
* ar.c (do_oper_extract): Use pathconf instead of statfs.
2009-08-01 Ulrich Drepper <drepper at redhat.com>
-@@ -931,6 +939,8 @@
+@@ -1277,6 +1285,8 @@
* readelf.c (print_debug_frame_section): Use t instead of j formats
for ptrdiff_t OFFSET.
@@ -1247,7 +1373,7 @@
2009-01-21 Ulrich Drepper <drepper at redhat.com>
* elflint.c (check_program_header): Fix typo in .eh_frame_hdr section
-@@ -1114,6 +1124,11 @@
+@@ -1460,6 +1470,11 @@
that matches its PT_LOAD's p_flags &~ PF_W. On sparc, PF_X really
is valid in RELRO.
@@ -1259,7 +1385,7 @@
2008-02-29 Roland McGrath <roland at redhat.com>
* readelf.c (print_attributes): Add a cast.
-@@ -1365,6 +1380,8 @@
+@@ -1711,6 +1726,8 @@
* readelf.c (hex_dump): Fix rounding error in whitespace calculation.
@@ -1268,7 +1394,7 @@
2007-10-15 Roland McGrath <roland at redhat.com>
* make-debug-archive.in: New file.
-@@ -1804,6 +1821,10 @@
+@@ -2150,6 +2167,10 @@
* elflint.c (valid_e_machine): Add EM_ALPHA.
Reported by Christian Aichinger <Greek0 at gmx.net>.
@@ -1279,7 +1405,7 @@
2006-08-08 Ulrich Drepper <drepper at redhat.com>
* elflint.c (check_dynamic): Don't require DT_HASH for DT_SYMTAB.
-@@ -1880,6 +1901,10 @@
+@@ -2226,6 +2247,10 @@
* Makefile.am: Add hacks to create dependency files for non-generic
linker.
@@ -1290,7 +1416,7 @@
2006-06-12 Ulrich Drepper <drepper at redhat.com>
* ldgeneric.c (ld_generic_generate_sections): Don't create .interp
-@@ -2228,6 +2253,11 @@
+@@ -2574,6 +2599,11 @@
* readelf.c (print_debug_loc_section): Fix indentation for larger
address size.
@@ -1336,50 +1462,50 @@
#endif /* ld.h */
--- elfutils/src/Makefile.am
+++ elfutils/src/Makefile.am
-@@ -95,6 +95,9 @@ addr2line_no_Wformat = yes
+@@ -89,6 +89,11 @@ endif
# XXX While the file is not finished, don't warn about this
ldgeneric_no_Wunused = yes
-+# Buggy old compilers.
++# Buggy old compilers or libc headers.
+readelf_no_Werror = yes
++strings_no_Werror = yes
++addr2line_no_Wformat = yes
+
- readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
- nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
+ readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl
+ nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl \
$(demanglelib)
--- elfutils/src/Makefile.in
+++ elfutils/src/Makefile.in
-@@ -85,7 +85,8 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
+@@ -85,6 +85,7 @@ DIST_COMMON = $(top_srcdir)/config/eu.am
$(srcdir)/Makefile.am ldlex.c ldscript.c \
$(top_srcdir)/config/depcomp $(top_srcdir)/config/ylwrap \
$(noinst_HEADERS) ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
bin_PROGRAMS = readelf$(EXEEXT) nm$(EXEEXT) size$(EXEEXT) \
strip$(EXEEXT) ld$(EXEEXT) elflint$(EXEEXT) \
findtextrel$(EXEEXT) addr2line$(EXEEXT) elfcmp$(EXEEXT) \
-@@ -94,9 +95,9 @@ bin_PROGRAMS = readelf$(EXEEXT) nm$(EXEE
+@@ -93,9 +94,9 @@ bin_PROGRAMS = readelf$(EXEEXT) nm$(EXEE
@NATIVE_LD_FALSE at noinst_PROGRAMS = $(am__EXEEXT_1)
# We never build this library but we need to get the dependency files
# of all the linker backends that might be used in a non-generic linker.
-- at NEVER_TRUE@am__append_2 = libdummy.a
-+ at NEVER_TRUE@am__append_3 = libdummy.a
+- at NEVER_TRUE@am__append_1 = libdummy.a
++ at NEVER_TRUE@am__append_2 = libdummy.a
# -ldl is always needed for libebl.
-- at NATIVE_LD_TRUE@am__append_3 = libld_elf.a
-+ at NATIVE_LD_TRUE@am__append_4 = libld_elf.a
+- at NATIVE_LD_TRUE@am__append_2 = libld_elf.a
++ at NATIVE_LD_TRUE@am__append_3 = libld_elf.a
@NATIVE_LD_TRUE at am_libld_elf_i386_pic_a_OBJECTS =
subdir = src
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-@@ -164,7 +165,7 @@ am_ld_OBJECTS = ld.$(OBJEXT) ldgeneric.$
+@@ -159,7 +160,7 @@ am_ld_OBJECTS = ld.$(OBJEXT) ldgeneric.$
+ ldscript.$(OBJEXT) symbolhash.$(OBJEXT) sectionhash.$(OBJEXT) \
versionhash.$(OBJEXT)
ld_OBJECTS = $(am_ld_OBJECTS)
- ld_DEPENDENCIES = $(libebl) $(libelf) $(libeu) $(am__DEPENDENCIES_1) \
-- $(am__append_3)
-+ $(am__append_4)
+-ld_DEPENDENCIES = $(libebl) $(libelf) $(libeu) $(am__append_2)
++ld_DEPENDENCIES = $(libebl) $(libelf) $(libeu) $(am__append_3)
ld_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(ld_LDFLAGS) $(LDFLAGS) -o \
$@
am_libld_elf_i386_so_OBJECTS =
-@@ -338,6 +339,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+@@ -340,6 +341,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -1387,7 +1513,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -367,6 +369,7 @@ SHELL = @SHELL@
+@@ -371,6 +373,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -1395,63 +1521,62 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -430,10 +433,9 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
- -I$(srcdir)/../libdw -I$(srcdir)/../libdwfl \
- -I$(srcdir)/../libasm
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+@@ -434,11 +437,11 @@ AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_sr
+ -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
+ -I$(srcdir)/../libdw -I$(srcdir)/../libdwelf \
+ -I$(srcdir)/../libdwfl -I$(srcdir)/../libasm
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+- $(if $($(*F)_no_Werror),,-Werror) \
+- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+- $($(*F)_CFLAGS)
+-
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
++ $($(*F)_no_Werror),,-Werror) $(if \
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1)
-+ $(am__append_1) $(am__append_2)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
-@@ -449,8 +451,8 @@ AM_LFLAGS = -Pld -olex.yy.c
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda make-debug-archive none_ld.os \
+ $(ld_modules:.c=.os) *.gconv
+@@ -449,8 +452,8 @@ AM_LFLAGS = -Pld -olex.yy.c
native_ld = @native_ld@
ld_dsos = libld_elf_i386_pic.a
@NATIVE_LD_FALSE at noinst_LIBRARIES = libld_elf.a libar.a $(ld_dsos) \
-- at NATIVE_LD_FALSE@ $(am__append_2)
-- at NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a libar.a $(am__append_2)
-+ at NATIVE_LD_FALSE@ $(am__append_3)
-+ at NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a libar.a $(am__append_3)
+- at NATIVE_LD_FALSE@ $(am__append_1)
+- at NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a libar.a $(am__append_1)
++ at NATIVE_LD_FALSE@ $(am__append_2)
++ at NATIVE_LD_TRUE@noinst_LIBRARIES = libld_elf.a libar.a $(am__append_2)
@NATIVE_LD_TRUE at native_ld_cflags = -DBASE_ELF_NAME=elf_$(base_cpu)
@NEVER_TRUE at libdummy_a_SOURCES = i386_ld.c
ld_SOURCES = ld.c ldgeneric.c ldlex.l ldscript.y symbolhash.c sectionhash.c \
-@@ -479,6 +481,9 @@ strings_no_Wformat = yes
- addr2line_no_Wformat = yes
+@@ -476,13 +479,18 @@ libeu = ../lib/libeu.a
+
# XXX While the file is not finished, don't warn about this
ldgeneric_no_Wunused = yes
+
-+# Buggy old compilers.
++# Buggy old compilers or libc headers.
+readelf_no_Werror = yes
- readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
- nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
++strings_no_Werror = yes
++addr2line_no_Wformat = yes
+ readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl
+ nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) -ldl \
$(demanglelib)
-@@ -486,7 +491,7 @@ nm_LDADD = $(libdw) $(libebl) $(libelf)
- size_LDADD = $(libelf) $(libeu) $(libmudflap)
- strip_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
- ld_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl \
-- $(am__append_3)
-+ $(am__append_4)
+
+ size_LDADD = $(libelf) $(libeu)
+ strip_LDADD = $(libebl) $(libelf) $(libeu) -ldl
+-ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl $(am__append_2)
++ld_LDADD = $(libebl) $(libelf) $(libeu) -ldl $(am__append_3)
ld_LDFLAGS = -rdynamic
- elflint_LDADD = $(libebl) $(libelf) $(libeu) $(libmudflap) -ldl
- findtextrel_LDADD = $(libdw) $(libelf) $(libmudflap)
+ elflint_LDADD = $(libebl) $(libelf) $(libeu) -ldl
+ findtextrel_LDADD = $(libdw) $(libelf)
--- elfutils/src/readelf.c
+++ elfutils/src/readelf.c
-@@ -4150,6 +4150,8 @@ struct listptr
- #define listptr_offset_size(p) ((p)->dwarf64 ? 8 : 4)
- #define listptr_address_size(p) ((p)->addr64 ? 8 : 4)
+@@ -4239,10 +4239,12 @@ listptr_base (struct listptr *p)
+ return base;
+ }
+static const char *listptr_name;
+
- static Dwarf_Addr
- listptr_base (struct listptr *p)
- {
-@@ -4171,9 +4173,9 @@ listptr_base (struct listptr *p)
- }
-
static int
-compare_listptr (const void *a, const void *b, void *arg)
+compare_listptr (const void *a, const void *b)
@@ -1461,7 +1586,7 @@
struct listptr *p1 = (void *) a;
struct listptr *p2 = (void *) b;
-@@ -4262,8 +4264,11 @@ static void
+@@ -4331,8 +4333,11 @@ static void
sort_listptr (struct listptr_table *table, const char *name)
{
if (table->n > 0)
@@ -1475,7 +1600,7 @@
}
static bool
-@@ -8986,7 +8991,7 @@ dump_archive_index (Elf *elf, const char
+@@ -9252,7 +9257,7 @@ dump_archive_index (Elf *elf, const char
if (unlikely (elf_rand (elf, as_off) == 0)
|| unlikely ((subelf = elf_begin (-1, ELF_C_READ_MMAP, elf))
== NULL))
@@ -1497,7 +1622,7 @@
/* Prototypes of local functions. */
static int read_fd (int fd, const char *fname, off64_t fdlen);
-@@ -483,8 +487,13 @@ map_file (int fd, off64_t start_off, off
+@@ -489,8 +493,13 @@ map_file (int fd, off64_t start_off, off
fd, start_off);
if (mem != MAP_FAILED)
{
@@ -1511,7 +1636,7 @@
break;
}
if (errno != EINVAL && errno != ENOMEM)
-@@ -576,9 +585,11 @@ read_block (int fd, const char *fname, o
+@@ -581,9 +590,11 @@ read_block (int fd, const char *fname, o
elfmap_off = from & ~(ps - 1);
elfmap_base = elfmap = map_file (fd, elfmap_off, fdlen, &elfmap_size);
@@ -1557,7 +1682,7 @@
}
/* Open the file. */
-@@ -2060,7 +2076,7 @@ while computing checksum for debug infor
+@@ -2086,7 +2102,7 @@ while computing checksum for debug infor
/* If requested, preserve the timestamp. */
if (tvp != NULL)
{
@@ -1566,7 +1691,7 @@
{
error (0, errno, gettext ("\
cannot set access and modification date of '%s'"),
-@@ -2117,7 +2133,7 @@ handle_ar (int fd, Elf *elf, const char
+@@ -2143,7 +2159,7 @@ handle_ar (int fd, Elf *elf, const char
if (tvp != NULL)
{
@@ -1575,9 +1700,33 @@
{
error (0, errno, gettext ("\
cannot set access and modification date of '%s'"), fname);
+--- elfutils/tests/backtrace.c
++++ elfutils/tests/backtrace.c
+@@ -36,6 +36,7 @@
+ #include <fcntl.h>
+ #include <string.h>
+ #include <argp.h>
++#include <sys/syscall.h>
+ #include ELFUTILS_HEADER(dwfl)
+
+ #ifndef __linux__
--- elfutils/tests/ChangeLog
+++ elfutils/tests/ChangeLog
-@@ -647,6 +647,8 @@
+@@ -283,6 +283,13 @@
+
+ 2013-12-02 Jan Kratochvil <jan.kratochvil at redhat.com>
+
++ Handle T-stopped detach for old kernels.
++ * backtrace.c: Include sys/syscall.h.
++ (linux_proc_pid_is_stopped): New function.
++ (ptrace_detach_stopped): Handle old kernels.
++
++2013-12-02 Jan Kratochvil <jan.kratochvil at redhat.com>
++
+ * Makefile.am (check_PROGRAMS): Add backtrace, backtrace-child,
+ backtrace-data and backtrace-dwarf.
+ (BUILT_SOURCES, clean-local, backtrace-child-biarch): New.
+@@ -1147,6 +1154,8 @@
2008-01-21 Roland McGrath <roland at redhat.com>
@@ -1586,7 +1735,7 @@
* testfile45.S.bz2: Add tests for cltq, cqto.
* testfile45.expect.bz2: Adjust.
-@@ -1355,6 +1357,11 @@
+@@ -1855,6 +1864,11 @@
* Makefile.am (TESTS): Add run-elflint-test.sh.
(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
@@ -1609,48 +1758,67 @@
{
default:
case 0:
+--- elfutils/tests/Makefile.am
++++ elfutils/tests/Makefile.am
+@@ -356,6 +356,7 @@ get_lines_LDADD = $(libdw) $(libelf)
+ get_files_LDADD = $(libdw) $(libelf)
+ get_aranges_LDADD = $(libdw) $(libelf)
+ allfcts_LDADD = $(libdw) $(libelf)
++line2addr_no_Wformat = yes
+ line2addr_LDADD = $(libdw)
+ addrscopes_LDADD = $(libdw)
+ funcscopes_LDADD = $(libdw)
--- elfutils/tests/Makefile.in
+++ elfutils/tests/Makefile.in
-@@ -80,14 +80,15 @@ host_triplet = @host@
+@@ -80,13 +80,14 @@ host_triplet = @host@
DIST_COMMON = $(top_srcdir)/config/eu.am $(srcdir)/Makefile.in \
$(srcdir)/Makefile.am $(top_srcdir)/config/depcomp \
$(top_srcdir)/config/test-driver ChangeLog
-- at MUDFLAP_TRUE@am__append_1 = -fmudflap
-- at STANDALONE_FALSE@am__append_2 = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
+- at STANDALONE_FALSE@am__append_1 = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
+ at BUILD_WERROR_TRUE@am__append_1 = $(if $($(*F)_no_Werror),,-Werror)
-+ at MUDFLAP_TRUE@am__append_2 = -fmudflap
-+ at STANDALONE_FALSE@am__append_3 = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
- @STANDALONE_FALSE@ -I$(top_srcdir)/libdwfl \
++ at STANDALONE_FALSE@am__append_2 = -I$(top_srcdir)/libasm -I$(top_srcdir)/libdw \
+ @STANDALONE_FALSE@ -I$(top_srcdir)/libdwfl -I$(top_srcdir)/libdwelf \
@STANDALONE_FALSE@ -I$(top_srcdir)/libebl -I$(top_srcdir)/libelf \
@STANDALONE_FALSE@ -I$(top_srcdir)/lib -I..
-- at STANDALONE_FALSE@am__append_3 = -Wl,-rpath-link,../libasm:../libdw:../libelf
-- at TESTS_RPATH_TRUE@am__append_4 = -Wl,-rpath,$(BUILD_RPATH)
-+ at STANDALONE_FALSE@am__append_4 = -Wl,-rpath-link,../libasm:../libdw:../libelf
-+ at TESTS_RPATH_TRUE@am__append_5 = -Wl,-rpath,$(BUILD_RPATH)
+- at STANDALONE_FALSE@am__append_2 = -Wl,-rpath-link,../libasm:../libdw:../libelf
+- at TESTS_RPATH_TRUE@am__append_3 = -Wl,-rpath,$(BUILD_RPATH)
++ at STANDALONE_FALSE@am__append_3 = -Wl,-rpath-link,../libasm:../libdw:../libelf
++ at TESTS_RPATH_TRUE@am__append_4 = -Wl,-rpath,$(BUILD_RPATH)
check_PROGRAMS = arextract$(EXEEXT) arsymtest$(EXEEXT) \
newfile$(EXEEXT) saridx$(EXEEXT) scnnames$(EXEEXT) \
sectiondump$(EXEEXT) showptable$(EXEEXT) update1$(EXEEXT) \
-@@ -142,13 +143,13 @@
- run-readelf-mixed-corenote.sh run-dwfllines.sh \
- run-dwfl-report-elf-align.sh run-addr2line-test.sh \
- run-addr2line-i-test.sh run-varlocs.sh $(am__EXEEXT_1) \
-- $(am__append_7) $(am__EXEEXT_3) $(am__append_10)
+@@ -111,7 +112,7 @@ check_PROGRAMS = arextract$(EXEEXT) arsy
+ backtrace-data$(EXEEXT) backtrace-dwarf$(EXEEXT) \
+ debuglink$(EXEEXT) debugaltlink$(EXEEXT) buildid$(EXEEXT) \
+ $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_4)
+- at BIARCH_TRUE@am__append_4 = backtrace-child-biarch
++ at BIARCH_TRUE@am__append_5 = backtrace-child-biarch
+ TESTS = run-arextract.sh run-arsymtest.sh newfile$(EXEEXT) \
+ test-nlist$(EXEEXT) update1$(EXEEXT) update2$(EXEEXT) \
+ update3$(EXEEXT) update4$(EXEEXT) run-show-die-info.sh \
+@@ -155,14 +156,14 @@ TESTS = run-arextract.sh run-arsymtest.s
+ run-backtrace-core-s390.sh run-backtrace-core-aarch64.sh \
+ run-backtrace-demangle.sh run-stack-d-test.sh \
+ run-stack-i-test.sh run-readelf-dwz-multi.sh \
+- run-allfcts-multi.sh $(am__EXEEXT_2) $(am__append_7) \
+- $(am__append_8) $(am__EXEEXT_4)
- at STANDALONE_FALSE@am__append_5 = msg_tst md5-sha1-test
-+ $(am__append_8) $(am__EXEEXT_3) $(am__append_11)
++ run-allfcts-multi.sh $(am__EXEEXT_2) $(am__append_8) \
++ $(am__append_9) $(am__EXEEXT_4)
@STANDALONE_FALSE at am__append_6 = msg_tst md5-sha1-test
- at LZMA_TRUE@am__append_7 = run-readelf-s.sh run-dwflsyms.sh
-- at HAVE_LIBASM_TRUE@am__append_8 = $(asm_TESTS)
+- at ZLIB_TRUE@am__append_8 = run-readelf-zdebug.sh
+- at HAVE_LIBASM_TRUE@am__append_9 = $(asm_TESTS)
+ at STANDALONE_FALSE@am__append_7 = msg_tst md5-sha1-test
+ at LZMA_TRUE@am__append_8 = run-readelf-s.sh run-dwflsyms.sh
- @HAVE_LIBASM_TRUE at am__append_9 = $(asm_TESTS)
-- at ENABLE_DWZ_TRUE@am__append_10 = run-readelf-dwz-multi.sh
-+ at HAVE_LIBASM_TRUE@am__append_10 = $(asm_TESTS)
-+ at ENABLE_DWZ_TRUE@am__append_11 = run-readelf-dwz-multi.sh
++ at ZLIB_TRUE@am__append_9 = run-readelf-zdebug.sh
+ @HAVE_LIBASM_TRUE at am__append_10 = $(asm_TESTS)
++ at HAVE_LIBASM_TRUE@am__append_11 = $(asm_TESTS)
subdir = tests
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
-@@ -722,6 +723,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ am__aclocal_m4_deps = $(top_srcdir)/m4/biarch.m4 \
+@@ -768,6 +769,7 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
@@ -1658,7 +1826,7 @@
LEX = @LEX@
LEXLIB = @LEXLIB@
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
-@@ -751,6 +753,7 @@ SHELL = @SHELL@
+@@ -799,6 +801,7 @@ SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
@@ -1666,28 +1834,36 @@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
-@@ -809,12 +812,11 @@ top_build_prefix = @top_build_prefix@
+@@ -858,17 +861,17 @@ top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
zip_LIBS = @zip_LIBS@
--AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. $(am__append_2)
-+AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. $(am__append_3)
- AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
-- $($(*F)_no_Werror),,-Werror) $(if \
-- $($(*F)_no_Wunused),,-Wunused -Wextra) $(if \
+-AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. $(am__append_1)
+-AM_CFLAGS = -std=gnu99 -Wall -Wshadow -Wformat=2 \
+- $(if $($(*F)_no_Werror),,-Werror) \
+- $(if $($(*F)_no_Wunused),,-Wunused -Wextra) \
+- $($(*F)_CFLAGS)
+-
++AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I.. $(am__append_2)
++AM_CFLAGS = -std=gnu99 -Wall -Wshadow $(if \
++ $($(*F)_no_Werror),,-Werror) $(if \
+ $($(*F)_no_Wunused),,-Wunused $(WEXTRA)) $(if \
- $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
-- $(am__append_1)
-+ $(am__append_1) $(am__append_2)
- @MUDFLAP_FALSE at libmudflap =
- @MUDFLAP_TRUE at libmudflap = -lmudflap
- COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage $(no_mudflap.os),\
-@@ -824,7 +826,7 @@ CLEANFILES = *.gcno *.gcda
- textrel_check = if readelf -d $@ | fgrep -q TEXTREL; then exit 1; fi
- @MUDFLAP_FALSE at BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
- @MUDFLAP_TRUE at BUILD_RPATH = \$$ORIGIN/../backends
--AM_LDFLAGS = $(am__append_3) $(am__append_4)
-+AM_LDFLAGS = $(am__append_4) $(am__append_5)
++ $($(*F)_no_Wformat),-Wno-format,-Wformat=2) $($(*F)_CFLAGS) \
++ $(am__append_1)
+ COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
+ CLEANFILES = *.gcno *.gcda
+ textrel_check = if $(READELF) -d $@ | fgrep -q TEXTREL; then exit 1; fi
+ BUILD_RPATH = \$$ORIGIN/../libasm:\$$ORIGIN/../libdw:\$$ORIGIN/../backends:\$$ORIGIN/../libelf
+-AM_LDFLAGS = $(am__append_2) $(am__append_3)
++AM_LDFLAGS = $(am__append_3) $(am__append_4)
@TESTS_RPATH_FALSE at tests_rpath = no
@TESTS_RPATH_TRUE at tests_rpath = yes
asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
+@@ -1077,6 +1080,7 @@ get_lines_LDADD = $(libdw) $(libelf)
+ get_files_LDADD = $(libdw) $(libelf)
+ get_aranges_LDADD = $(libdw) $(libelf)
+ allfcts_LDADD = $(libdw) $(libelf)
++line2addr_no_Wformat = yes
+ line2addr_LDADD = $(libdw)
+ addrscopes_LDADD = $(libdw)
+ funcscopes_LDADD = $(libdw)
diff --git a/elfutils-robustify.patch b/elfutils-robustify.patch
deleted file mode 100644
index 8359a9b..0000000
--- a/elfutils-robustify.patch
+++ /dev/null
@@ -1,1756 +0,0 @@
---- elfutils/libdwfl/ChangeLog
-+++ elfutils/libdwfl/ChangeLog
-@@ -256,6 +256,11 @@
- * dwfl_module_getdwarf.c (open_elf): Clear errno before CBFAIL.
- Reported by Kurt Roeckx <kurt at roeckx.be>.
-
-+2011-03-23 Petr Machata <pmachata at redhat.com>
-+
-+ * relocate.c (relocate_section): Use gelf_fsize instead of relying
-+ on shdr->sh_entsize.
-+
- 2011-02-11 Roland McGrath <roland at redhat.com>
-
- * linux-kernel-modules.c (try_kernel_name): Try .gz, .bz2, .xz
---- elfutils/libdwfl/relocate.c
-+++ elfutils/libdwfl/relocate.c
-@@ -1,5 +1,5 @@
- /* Relocate debug information.
-- Copyright (C) 2005-2010 Red Hat, Inc.
-+ Copyright (C) 2005-2011 Red Hat, Inc.
- This file is part of elfutils.
-
- This file is free software; you can redistribute it and/or modify
-@@ -456,7 +456,10 @@ relocate_section (Dwfl_Module *mod, Elf
- }
- }
-
-- size_t nrels = shdr->sh_size / shdr->sh_entsize;
-+ size_t sh_entsize
-+ = gelf_fsize (relocated, shdr->sh_type == SHT_REL ? ELF_T_REL : ELF_T_RELA,
-+ 1, EV_CURRENT);
-+ size_t nrels = shdr->sh_size / sh_entsize;
- size_t complete = 0;
- if (shdr->sh_type == SHT_REL)
- for (size_t relidx = 0; !result && relidx < nrels; ++relidx)
-@@ -558,7 +561,7 @@ relocate_section (Dwfl_Module *mod, Elf
- nrels = next;
- }
-
-- shdr->sh_size = reldata->d_size = nrels * shdr->sh_entsize;
-+ shdr->sh_size = reldata->d_size = nrels * sh_entsize;
- gelf_update_shdr (scn, shdr);
- }
-
---- elfutils/libelf/ChangeLog
-+++ elfutils/libelf/ChangeLog
-@@ -715,10 +715,53 @@
- If section content hasn't been read yet, do it before looking for the
- block size. If no section data present, infer size of section header.
-
-+2005-05-14 Jakub Jelinek <jakub at redhat.com>
-+
-+ * libelfP.h (INVALID_NDX): Define.
-+ * gelf_getdyn.c (gelf_getdyn): Use it. Remove ndx < 0 test if any.
-+ * gelf_getlib.c (gelf_getlib): Likewise.
-+ * gelf_getmove.c (gelf_getmove): Likewise.
-+ * gelf_getrel.c (gelf_getrel): Likewise.
-+ * gelf_getrela.c (gelf_getrela): Likewise.
-+ * gelf_getsym.c (gelf_getsym): Likewise.
-+ * gelf_getsyminfo.c (gelf_getsyminfo): Likewise.
-+ * gelf_getsymshndx.c (gelf_getsymshndx): Likewise.
-+ * gelf_getversym.c (gelf_getversym): Likewise.
-+ * gelf_update_dyn.c (gelf_update_dyn): Likewise.
-+ * gelf_update_lib.c (gelf_update_lib): Likewise.
-+ * gelf_update_move.c (gelf_update_move): Likewise.
-+ * gelf_update_rel.c (gelf_update_rel): Likewise.
-+ * gelf_update_rela.c (gelf_update_rela): Likewise.
-+ * gelf_update_sym.c (gelf_update_sym): Likewise.
-+ * gelf_update_syminfo.c (gelf_update_syminfo): Likewise.
-+ * gelf_update_symshndx.c (gelf_update_symshndx): Likewise.
-+ * gelf_update_versym.c (gelf_update_versym): Likewise.
-+ * elf_newscn.c (elf_newscn): Check for overflow.
-+ * elf32_updatefile.c (__elfw2(LIBELFBITS,updatemmap)): Likewise.
-+ (__elfw2(LIBELFBITS,updatefile)): Likewise.
-+ * elf_begin.c (file_read_elf): Likewise.
-+ * elf32_newphdr.c (elfw2(LIBELFBITS,newphdr)): Likewise.
-+ * elf_getarsym.c (elf_getarsym): Likewise.
-+ * elf32_getshdr.c (elfw2(LIBELFBITS,getshdr)): Likewise.
- 2005-05-11 Ulrich Drepper <drepper at redhat.com>
-
- * elf.h: Update again.
-
-+2005-05-17 Jakub Jelinek <jakub at redhat.com>
-+
-+ * elf32_getphdr.c (elfw2(LIBELFBITS,getphdr)): Check if program header
-+ table fits into object's bounds.
-+ * elf_getshstrndx.c (elf_getshstrndx): Add elf->start_offset to
-+ elf->map_address. Check if first section header fits into object's
-+ bounds.
-+ * elf32_getshdr.c (elfw2(LIBELFBITS,getshdr)):
-+ Check if section header table fits into object's bounds.
-+ * elf_begin.c (get_shnum): Ensure section headers fits into
-+ object's bounds.
-+ (file_read_elf): Make sure scncnt is small enough to allocate both
-+ ElfXX_Shdr and Elf_Scn array. Make sure section and program header
-+ tables fit into object's bounds. Avoid memory leak on failure.
-+
- 2005-05-09 Ulrich Drepper <drepper at redhat.com>
-
- * elf.h: Update from glibc.
---- elfutils/libelf/elf32_getphdr.c
-+++ elfutils/libelf/elf32_getphdr.c
-@@ -93,6 +93,16 @@ __elfw2(LIBELFBITS,getphdr_wrlock) (elf)
-
- if (elf->map_address != NULL)
- {
-+ /* First see whether the information in the ELF header is
-+ valid and it does not ask for too much. */
-+ if (unlikely (ehdr->e_phoff >= elf->maximum_size)
-+ || unlikely (elf->maximum_size - ehdr->e_phoff < size))
-+ {
-+ /* Something is wrong. */
-+ __libelf_seterrno (ELF_E_INVALID_PHDR);
-+ goto out;
-+ }
-+
- /* All the data is already mapped. Use it. */
- void *file_phdr = ((char *) elf->map_address
- + elf->start_offset + ehdr->e_phoff);
---- elfutils/libelf/elf32_getshdr.c
-+++ elfutils/libelf/elf32_getshdr.c
-@@ -60,7 +60,8 @@ load_shdr_wrlock (Elf_Scn *scn)
- goto out;
-
- size_t shnum;
-- if (__elf_getshdrnum_rdlock (elf, &shnum) != 0)
-+ if (__elf_getshdrnum_rdlock (elf, &shnum) != 0
-+ || shnum > SIZE_MAX / sizeof (ElfW2(LIBELFBITS,Shdr)))
- goto out;
- size_t size = shnum * sizeof (ElfW2(LIBELFBITS,Shdr));
-
-@@ -77,6 +78,16 @@ load_shdr_wrlock (Elf_Scn *scn)
-
- if (elf->map_address != NULL)
- {
-+ /* First see whether the information in the ELF header is
-+ valid and it does not ask for too much. */
-+ if (unlikely (ehdr->e_shoff >= elf->maximum_size)
-+ || unlikely (elf->maximum_size - ehdr->e_shoff < size))
-+ {
-+ /* Something is wrong. */
-+ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
-+ goto free_and_out;
-+ }
-+
- ElfW2(LIBELFBITS,Shdr) *notcvt;
-
- /* All the data is already mapped. If we could use it
---- elfutils/libelf/elf32_newphdr.c
-+++ elfutils/libelf/elf32_newphdr.c
-@@ -114,6 +114,12 @@ elfw2(LIBELFBITS,newphdr) (elf, count)
- || count == PN_XNUM
- || elf->state.ELFW(elf,LIBELFBITS).phdr == NULL)
- {
-+ if (unlikely (count > SIZE_MAX / sizeof (ElfW2(LIBELFBITS,Phdr))))
-+ {
-+ result = NULL;
-+ goto out;
-+ }
-+
- /* Allocate a new program header with the appropriate number of
- elements. */
- result = (ElfW2(LIBELFBITS,Phdr) *)
---- elfutils/libelf/elf32_updatefile.c
-+++ elfutils/libelf/elf32_updatefile.c
-@@ -202,6 +202,9 @@ __elfw2(LIBELFBITS,updatemmap) (Elf *elf
- /* Write all the sections. Well, only those which are modified. */
- if (shnum > 0)
- {
-+ if (unlikely (shnum > SIZE_MAX / sizeof (Elf_Scn *)))
-+ return 1;
-+
- Elf_ScnList *list = &elf->state.ELFW(elf,LIBELFBITS).scns;
- Elf_Scn **scns = (Elf_Scn **) alloca (shnum * sizeof (Elf_Scn *));
- char *const shdr_start = ((char *) elf->map_address + elf->start_offset
-@@ -624,6 +627,10 @@ __elfw2(LIBELFBITS,updatefile) (Elf *elf
- /* Write all the sections. Well, only those which are modified. */
- if (shnum > 0)
- {
-+ if (unlikely (shnum > SIZE_MAX / (sizeof (Elf_Scn *)
-+ + sizeof (ElfW2(LIBELFBITS,Shdr)))))
-+ return 1;
-+
- off_t shdr_offset = elf->start_offset + ehdr->e_shoff;
- #if EV_NUM != 2
- xfct_t shdr_fctp = __elf_xfctstom[__libelf_version - 1][EV_CURRENT - 1][ELFW(ELFCLASS, LIBELFBITS) - 1][ELF_T_SHDR];
---- elfutils/libelf/elf_begin.c
-+++ elfutils/libelf/elf_begin.c
-@@ -144,7 +144,8 @@ get_shnum (void *map_address, unsigned c
-
- if (unlikely (result == 0) && ehdr.e32->e_shoff != 0)
- {
-- if (ehdr.e32->e_shoff + sizeof (Elf32_Shdr) > maxsize)
-+ if (unlikely (ehdr.e32->e_shoff >= maxsize)
-+ || unlikely (maxsize - ehdr.e32->e_shoff < sizeof (Elf32_Shdr)))
- /* Cannot read the first section header. */
- return 0;
-
-@@ -192,7 +193,8 @@ get_shnum (void *map_address, unsigned c
-
- if (unlikely (result == 0) && ehdr.e64->e_shoff != 0)
- {
-- if (ehdr.e64->e_shoff + sizeof (Elf64_Shdr) > maxsize)
-+ if (unlikely (ehdr.e64->e_shoff >= maxsize)
-+ || unlikely (ehdr.e64->e_shoff + sizeof (Elf64_Shdr) > maxsize))
- /* Cannot read the first section header. */
- return 0;
-
-@@ -264,6 +266,15 @@ file_read_elf (int fildes, void *map_add
- /* Could not determine the number of sections. */
- return NULL;
-
-+ /* Check for too many sections. */
-+ if (e_ident[EI_CLASS] == ELFCLASS32)
-+ {
-+ if (scncnt > SIZE_MAX / (sizeof (Elf_Scn) + sizeof (Elf32_Shdr)))
-+ return NULL;
-+ }
-+ else if (scncnt > SIZE_MAX / (sizeof (Elf_Scn) + sizeof (Elf64_Shdr)))
-+ return NULL;
-+
- /* We can now allocate the memory. Even if there are no section headers,
- we allocate space for a zeroth section in case we need it later. */
- const size_t scnmax = (scncnt ?: (cmd == ELF_C_RDWR || cmd == ELF_C_RDWR_MMAP)
-@@ -303,6 +314,16 @@ file_read_elf (int fildes, void *map_add
- {
- /* We can use the mmapped memory. */
- elf->state.elf32.ehdr = ehdr;
-+
-+ if (unlikely (ehdr->e_shoff >= maxsize)
-+ || unlikely (maxsize - ehdr->e_shoff
-+ < scncnt * sizeof (Elf32_Shdr)))
-+ {
-+ free_and_out:
-+ free (elf);
-+ __libelf_seterrno (ELF_E_INVALID_FILE);
-+ return NULL;
-+ }
- elf->state.elf32.shdr
- = (Elf32_Shdr *) ((char *) ehdr + ehdr->e_shoff);
-
-@@ -389,6 +410,11 @@ file_read_elf (int fildes, void *map_add
- {
- /* We can use the mmapped memory. */
- elf->state.elf64.ehdr = ehdr;
-+
-+ if (unlikely (ehdr->e_shoff >= maxsize)
-+ || unlikely (ehdr->e_shoff
-+ + scncnt * sizeof (Elf32_Shdr) > maxsize))
-+ goto free_and_out;
- elf->state.elf64.shdr
- = (Elf64_Shdr *) ((char *) ehdr + ehdr->e_shoff);
-
---- elfutils/libelf/elf_getarsym.c
-+++ elfutils/libelf/elf_getarsym.c
-@@ -183,6 +183,9 @@ elf_getarsym (elf, ptr)
- size_t index_size = atol (tmpbuf);
-
- if (SARMAG + sizeof (struct ar_hdr) + index_size > elf->maximum_size
-+#if SIZE_MAX <= 4294967295U
-+ || n >= SIZE_MAX / sizeof (Elf_Arsym)
-+#endif
- || n * w > index_size)
- {
- /* This index table cannot be right since it does not fit into
---- elfutils/libelf/elf_getshdrstrndx.c
-+++ elfutils/libelf/elf_getshdrstrndx.c
-@@ -104,10 +104,25 @@ elf_getshdrstrndx (elf, dst)
- if (elf->map_address != NULL
- && elf->state.elf32.ehdr->e_ident[EI_DATA] == MY_ELFDATA
- && (ALLOW_UNALIGNED
-- || (((size_t) ((char *) elf->map_address + offset))
-+ || (((size_t) ((char *) elf->map_address
-+ + elf->start_offset + offset))
- & (__alignof__ (Elf32_Shdr) - 1)) == 0))
-- /* We can directly access the memory. */
-- num = ((Elf32_Shdr *) (elf->map_address + offset))->sh_link;
-+ {
-+ /* First see whether the information in the ELF header is
-+ valid and it does not ask for too much. */
-+ if (unlikely (elf->maximum_size - offset
-+ < sizeof (Elf32_Shdr)))
-+ {
-+ /* Something is wrong. */
-+ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
-+ result = -1;
-+ goto out;
-+ }
-+
-+ /* We can directly access the memory. */
-+ num = ((Elf32_Shdr *) (elf->map_address + elf->start_offset
-+ + offset))->sh_link;
-+ }
- else
- {
- /* We avoid reading in all the section headers. Just read
-@@ -142,10 +157,25 @@ elf_getshdrstrndx (elf, dst)
- if (elf->map_address != NULL
- && elf->state.elf64.ehdr->e_ident[EI_DATA] == MY_ELFDATA
- && (ALLOW_UNALIGNED
-- || (((size_t) ((char *) elf->map_address + offset))
-+ || (((size_t) ((char *) elf->map_address
-+ + elf->start_offset + offset))
- & (__alignof__ (Elf64_Shdr) - 1)) == 0))
-- /* We can directly access the memory. */
-- num = ((Elf64_Shdr *) (elf->map_address + offset))->sh_link;
-+ {
-+ /* First see whether the information in the ELF header is
-+ valid and it does not ask for too much. */
-+ if (unlikely (elf->maximum_size - offset
-+ < sizeof (Elf64_Shdr)))
-+ {
-+ /* Something is wrong. */
-+ __libelf_seterrno (ELF_E_INVALID_SECTION_HEADER);
-+ result = -1;
-+ goto out;
-+ }
-+
-+ /* We can directly access the memory. */
-+ num = ((Elf64_Shdr *) (elf->map_address + elf->start_offset
-+ + offset))->sh_link;
-+ }
- else
- {
- /* We avoid reading in all the section headers. Just read
---- elfutils/libelf/elf_newscn.c
-+++ elfutils/libelf/elf_newscn.c
-@@ -83,10 +83,18 @@ elf_newscn (elf)
- else
- {
- /* We must allocate a new element. */
-- Elf_ScnList *newp;
-+ Elf_ScnList *newp = NULL;
-
- assert (elf->state.elf.scnincr > 0);
-
-+ if (
-+#if SIZE_MAX <= 4294967295U
-+ likely (elf->state.elf.scnincr
-+ < SIZE_MAX / 2 / sizeof (Elf_Scn) - sizeof (Elf_ScnList))
-+#else
-+ 1
-+#endif
-+ )
- newp = (Elf_ScnList *) calloc (sizeof (Elf_ScnList)
- + ((elf->state.elf.scnincr *= 2)
- * sizeof (Elf_Scn)), 1);
---- elfutils/libelf/gelf_getdyn.c
-+++ elfutils/libelf/gelf_getdyn.c
-@@ -1,5 +1,5 @@
- /* Get information from dynamic table at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -72,7 +72,7 @@ gelf_getdyn (data, ndx, dst)
- table entries has to be adopted. The user better has provided
- a buffer where we can store the information. While copying the
- data we are converting the format. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Dyn) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Dyn, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -93,7 +93,7 @@ gelf_getdyn (data, ndx, dst)
-
- /* The data is already in the correct form. Just make sure the
- index is OK. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Dyn) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, GElf_Dyn, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_getlib.c
-+++ elfutils/libelf/gelf_getlib.c
-@@ -1,5 +1,5 @@
- /* Get library from table at the given index.
-- Copyright (C) 2004 Red Hat, Inc.
-+ Copyright (C) 2004-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2004.
-
-@@ -65,7 +65,7 @@ gelf_getlib (data, ndx, dst)
- /* The data is already in the correct form. Just make sure the
- index is OK. */
- GElf_Lib *result = NULL;
-- if (unlikely ((ndx + 1) * sizeof (GElf_Lib) > data->d_size))
-+ if (INVALID_NDX (ndx, GElf_Lib, data))
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- else
- {
---- elfutils/libelf/gelf_getmove.c
-+++ elfutils/libelf/gelf_getmove.c
-@@ -1,5 +1,5 @@
- /* Get move structure at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -62,7 +62,7 @@ gelf_getmove (data, ndx, dst)
-
- /* The data is already in the correct form. Just make sure the
- index is OK. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Move) > data->d_size))
-+ if (INVALID_NDX (ndx, GElf_Move, data))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_getrela.c
-+++ elfutils/libelf/gelf_getrela.c
-@@ -1,5 +1,5 @@
- /* Get RELA relocation information at given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -50,12 +50,6 @@ gelf_getrela (data, ndx, dst)
- if (data_scn == NULL)
- return NULL;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return NULL;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_RELA))
- {
- __libelf_seterrno (ELF_E_INVALID_HANDLE);
-@@ -72,7 +66,7 @@ gelf_getrela (data, ndx, dst)
- if (scn->elf->class == ELFCLASS32)
- {
- /* We have to convert the data. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Rela) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Rela, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- result = NULL;
-@@ -93,7 +87,7 @@ gelf_getrela (data, ndx, dst)
- {
- /* Simply copy the data after we made sure we are actually getting
- correct data. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Rela) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Rela, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- result = NULL;
---- elfutils/libelf/gelf_getrel.c
-+++ elfutils/libelf/gelf_getrel.c
-@@ -1,5 +1,5 @@
- /* Get REL relocation information at given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -50,12 +50,6 @@ gelf_getrel (data, ndx, dst)
- if (data_scn == NULL)
- return NULL;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return NULL;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_REL))
- {
- __libelf_seterrno (ELF_E_INVALID_HANDLE);
-@@ -72,7 +66,7 @@ gelf_getrel (data, ndx, dst)
- if (scn->elf->class == ELFCLASS32)
- {
- /* We have to convert the data. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Rel) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Rel, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- result = NULL;
-@@ -92,7 +86,7 @@ gelf_getrel (data, ndx, dst)
- {
- /* Simply copy the data after we made sure we are actually getting
- correct data. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Rel) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Rel, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- result = NULL;
---- elfutils/libelf/gelf_getsym.c
-+++ elfutils/libelf/gelf_getsym.c
-@@ -1,5 +1,5 @@
- /* Get symbol information from symbol table at the given index.
-- Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 1999-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 1999.
-
-@@ -69,7 +69,7 @@ gelf_getsym (data, ndx, dst)
- table entries has to be adopted. The user better has provided
- a buffer where we can store the information. While copying the
- data we are converting the format. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > data->d_size))
-+ if (INVALID_NDX (ndx, Elf32_Sym, data))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -98,7 +98,7 @@ gelf_getsym (data, ndx, dst)
-
- /* The data is already in the correct form. Just make sure the
- index is OK. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Sym) > data->d_size))
-+ if (INVALID_NDX (ndx, GElf_Sym, data))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_getsyminfo.c
-+++ elfutils/libelf/gelf_getsyminfo.c
-@@ -1,5 +1,5 @@
- /* Get additional symbol information from symbol table at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -63,7 +63,7 @@ gelf_getsyminfo (data, ndx, dst)
-
- /* The data is already in the correct form. Just make sure the
- index is OK. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Syminfo) > data->d_size))
-+ if (INVALID_NDX (ndx, GElf_Syminfo, data))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_getsymshndx.c
-+++ elfutils/libelf/gelf_getsymshndx.c
-@@ -1,6 +1,6 @@
- /* Get symbol information and separate section index from symbol table
- at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -69,7 +69,7 @@ gelf_getsymshndx (symdata, shndxdata, nd
- section index table. */
- if (likely (shndxdata_scn != NULL))
- {
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Word) > shndxdata_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Word, &shndxdata_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -89,7 +89,7 @@ gelf_getsymshndx (symdata, shndxdata, nd
- table entries has to be adopted. The user better has provided
- a buffer where we can store the information. While copying the
- data we are converting the format. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > symdata->d_size))
-+ if (INVALID_NDX (ndx, Elf32_Sym, symdata))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -118,7 +118,7 @@ gelf_getsymshndx (symdata, shndxdata, nd
-
- /* The data is already in the correct form. Just make sure the
- index is OK. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Sym) > symdata->d_size))
-+ if (INVALID_NDX (ndx, GElf_Sym, symdata))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_getversym.c
-+++ elfutils/libelf/gelf_getversym.c
-@@ -1,5 +1,5 @@
- /* Get symbol version information at the given index.
-- Copyright (C) 1999, 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 1999-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 1999.
-
-@@ -71,7 +71,7 @@ gelf_getversym (data, ndx, dst)
-
- /* The data is already in the correct form. Just make sure the
- index is OK. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Versym) > data->d_size))
-+ if (INVALID_NDX (ndx, GElf_Versym, data))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- result = NULL;
---- elfutils/libelf/gelf_update_dyn.c
-+++ elfutils/libelf/gelf_update_dyn.c
-@@ -1,5 +1,5 @@
- /* Update information in dynamic table at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -50,12 +50,6 @@ gelf_update_dyn (data, ndx, src)
- if (data == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_DYN))
- {
- /* The type of the data better should match. */
-@@ -81,7 +75,7 @@ gelf_update_dyn (data, ndx, src)
- }
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Dyn) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Dyn, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -95,7 +89,7 @@ gelf_update_dyn (data, ndx, src)
- else
- {
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Dyn) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Dyn, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_update_lib.c
-+++ elfutils/libelf/gelf_update_lib.c
-@@ -1,5 +1,5 @@
- /* Update library in table at the given index.
-- Copyright (C) 2004 Red Hat, Inc.
-+ Copyright (C) 2004-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2004.
-
-@@ -47,12 +47,6 @@ gelf_update_lib (data, ndx, src)
- if (data == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- Elf_Data_Scn *data_scn = (Elf_Data_Scn *) data;
- if (unlikely (data_scn->d.d_type != ELF_T_LIB))
- {
-@@ -66,7 +60,7 @@ gelf_update_lib (data, ndx, src)
-
- /* Check whether we have to resize the data buffer. */
- int result = 0;
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Lib) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Lib, &data_scn->d))
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- else
- {
---- elfutils/libelf/gelf_update_move.c
-+++ elfutils/libelf/gelf_update_move.c
-@@ -1,5 +1,5 @@
- /* Update move structure at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -54,8 +54,7 @@ gelf_update_move (data, ndx, src)
- assert (sizeof (GElf_Move) == sizeof (Elf64_Move));
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely (ndx < 0)
-- || unlikely ((ndx + 1) * sizeof (GElf_Move) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, GElf_Move, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
---- elfutils/libelf/gelf_update_rela.c
-+++ elfutils/libelf/gelf_update_rela.c
-@@ -1,5 +1,5 @@
- /* Update RELA relocation information at given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -47,12 +47,6 @@ gelf_update_rela (Elf_Data *dst, int ndx
- if (dst == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_RELA))
- {
- /* The type of the data better should match. */
-@@ -80,7 +74,7 @@ gelf_update_rela (Elf_Data *dst, int ndx
- }
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Rela) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Rela, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -96,7 +90,7 @@ gelf_update_rela (Elf_Data *dst, int ndx
- else
- {
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Rela) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Rela, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_update_rel.c
-+++ elfutils/libelf/gelf_update_rel.c
-@@ -1,5 +1,5 @@
- /* Update REL relocation information at given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -47,12 +47,6 @@ gelf_update_rel (Elf_Data *dst, int ndx,
- if (dst == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_REL))
- {
- /* The type of the data better should match. */
-@@ -78,7 +72,7 @@ gelf_update_rel (Elf_Data *dst, int ndx,
- }
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Rel) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Rel, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -93,7 +87,7 @@ gelf_update_rel (Elf_Data *dst, int ndx,
- else
- {
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Rel) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Rel, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_update_sym.c
-+++ elfutils/libelf/gelf_update_sym.c
-@@ -1,5 +1,5 @@
- /* Update symbol information in symbol table at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -51,12 +51,6 @@ gelf_update_sym (data, ndx, src)
- if (data == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_SYM))
- {
- /* The type of the data better should match. */
-@@ -81,7 +75,7 @@ gelf_update_sym (data, ndx, src)
- }
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Sym, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -104,7 +98,7 @@ gelf_update_sym (data, ndx, src)
- else
- {
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Sym) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Sym, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_update_syminfo.c
-+++ elfutils/libelf/gelf_update_syminfo.c
-@@ -1,5 +1,5 @@
- /* Update additional symbol information in symbol table at the given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -51,12 +51,6 @@ gelf_update_syminfo (data, ndx, src)
- if (data == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- if (unlikely (data_scn->d.d_type != ELF_T_SYMINFO))
- {
- /* The type of the data better should match. */
-@@ -72,7 +66,7 @@ gelf_update_syminfo (data, ndx, src)
- rwlock_wrlock (scn->elf->lock);
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (GElf_Syminfo) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, GElf_Syminfo, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_update_symshndx.c
-+++ elfutils/libelf/gelf_update_symshndx.c
-@@ -1,6 +1,6 @@
- /* Update symbol information and section index in symbol table at the
- given index.
-- Copyright (C) 2000, 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2000-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2000.
-
-@@ -56,12 +56,6 @@ gelf_update_symshndx (symdata, shndxdata
- if (symdata == NULL)
- return 0;
-
-- if (unlikely (ndx < 0))
-- {
-- __libelf_seterrno (ELF_E_INVALID_INDEX);
-- return 0;
-- }
--
- if (unlikely (symdata_scn->d.d_type != ELF_T_SYM))
- {
- /* The type of the data better should match. */
-@@ -107,7 +101,7 @@ gelf_update_symshndx (symdata, shndxdata
- }
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf32_Sym) > symdata_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf32_Sym, &symdata_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
-@@ -130,7 +124,7 @@ gelf_update_symshndx (symdata, shndxdata
- else
- {
- /* Check whether we have to resize the data buffer. */
-- if (unlikely ((ndx + 1) * sizeof (Elf64_Sym) > symdata_scn->d.d_size))
-+ if (INVALID_NDX (ndx, Elf64_Sym, &symdata_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- goto out;
---- elfutils/libelf/gelf_update_versym.c
-+++ elfutils/libelf/gelf_update_versym.c
-@@ -1,5 +1,5 @@
- /* Update symbol version information.
-- Copyright (C) 2001, 2002 Red Hat, Inc.
-+ Copyright (C) 2001-2009 Red Hat, Inc.
- This file is part of elfutils.
- Written by Ulrich Drepper <drepper at redhat.com>, 2001.
-
-@@ -54,8 +54,7 @@ gelf_update_versym (data, ndx, src)
- assert (sizeof (GElf_Versym) == sizeof (Elf64_Versym));
-
- /* Check whether we have to resize the data buffer. */
-- if (unlikely (ndx < 0)
-- || unlikely ((ndx + 1) * sizeof (GElf_Versym) > data_scn->d.d_size))
-+ if (INVALID_NDX (ndx, GElf_Versym, &data_scn->d))
- {
- __libelf_seterrno (ELF_E_INVALID_INDEX);
- return 0;
---- elfutils/libelf/libelfP.h
-+++ elfutils/libelf/libelfP.h
-@@ -587,4 +587,8 @@ extern uint32_t __libelf_crc32 (uint32_t
- /* Align offset to 4 bytes as needed for note name and descriptor data. */
- #define NOTE_ALIGN(n) (((n) + 3) & -4U)
-
-+/* Convenience macro. */
-+#define INVALID_NDX(ndx, type, data) \
-+ unlikely ((data)->d_size / sizeof (type) <= (unsigned int) (ndx))
-+
- #endif /* libelfP.h */
---- elfutils/src/ChangeLog
-+++ elfutils/src/ChangeLog
-@@ -504,6 +504,12 @@
-
- * readelf.c (dwarf_attr_string): Grok DW_AT_GNU_odr_signature.
-
-+2011-03-23 Petr Machata <pmachata at redhat.com>
-+
-+ * readelf.c (handle_dynamic, handle_relocs_rel)
-+ (handle_relocs_rela, handle_versym, print_liblist):
-+ Use gelf_fsize instead of relying on shdr->sh_entsize.
-+
- 2011-02-11 Roland McGrath <roland at redhat.com>
-
- * elfcmp.c (verbose): New variable.
-@@ -2216,6 +2222,16 @@
- object symbols or symbols with unknown type.
- (check_rel): Likewise.
-
-+2005-06-09 Roland McGrath <roland at redhat.com>
-+
-+ * readelf.c (handle_dynamic, handle_symtab): Check for bogus sh_link.
-+ (handle_verneed, handle_verdef, handle_versym, handle_hash): Likewise.
-+ (handle_scngrp): Check for bogus sh_info.
-+
-+ * strip.c (handle_elf): Check for bogus values in sh_link, sh_info,
-+ st_shndx, e_shstrndx, and SHT_GROUP or SHT_SYMTAB_SHNDX data.
-+ Don't use assert on input values, instead bail with "illformed" error.
-+
- 2005-06-08 Roland McGrath <roland at redhat.com>
-
- * readelf.c (print_ops): Add consts.
-@@ -2261,6 +2277,19 @@
-
- * readelf.c (dwarf_tag_string): Add new tags.
-
-+2005-05-17 Jakub Jelinek <jakub at redhat.com>
-+
-+ * elflint.c (check_hash): Don't check entries beyond end of section.
-+ (check_note): Don't crash if gelf_rawchunk fails.
-+ (section_name): Return <invalid> if gelf_getshdr returns NULL.
-+
-+2005-05-14 Jakub Jelinek <jakub at redhat.com>
-+
-+ * elflint.c (section_name): Return "<invalid>" instead of
-+ crashing on invalid section name.
-+ (check_symtab, is_rel_dyn, check_rela, check_rel, check_dynamic,
-+ check_symtab_shndx, check_hash, check_versym): Robustify.
-+
- 2005-05-08 Roland McGrath <roland at redhat.com>
-
- * strip.c (handle_elf): Don't translate hash and versym data formats,
---- elfutils/src/elflint.c
-+++ elfutils/src/elflint.c
-@@ -123,6 +123,10 @@ static uint32_t shstrndx;
- /* Array to count references in section groups. */
- static int *scnref;
-
-+/* Numbers of sections and program headers. */
-+static unsigned int shnum;
-+static unsigned int phnum;
-+
-
- int
- main (int argc, char *argv[])
-@@ -311,10 +315,19 @@ section_name (Ebl *ebl, int idx)
- {
- GElf_Shdr shdr_mem;
- GElf_Shdr *shdr;
-+ const char *ret;
-+
-+ if ((unsigned int) idx > shnum)
-+ return "<invalid>";
-
- shdr = gelf_getshdr (elf_getscn (ebl->elf, idx), &shdr_mem);
-+ if (shdr == NULL)
-+ return "<invalid>";
-
-- return elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
-+ ret = elf_strptr (ebl->elf, shstrndx, shdr->sh_name);
-+ if (ret == NULL)
-+ return "<invalid>";
-+ return ret;
- }
-
-
-@@ -337,11 +350,6 @@ static const int valid_e_machine[] =
- (sizeof (valid_e_machine) / sizeof (valid_e_machine[0]))
-
-
--/* Numbers of sections and program headers. */
--static unsigned int shnum;
--static unsigned int phnum;
--
--
- static void
- check_elf_header (Ebl *ebl, GElf_Ehdr *ehdr, size_t size)
- {
-@@ -625,7 +633,8 @@ section [%2d] '%s': symbol table cannot
- }
- }
-
-- if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT))
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT);
-+ if (shdr->sh_entsize != sh_entsize)
- ERROR (gettext ("\
- section [%2u] '%s': entry size is does not match ElfXX_Sym\n"),
- idx, section_name (ebl, idx));
-@@ -663,7 +672,7 @@ section [%2d] '%s': XINDEX for zeroth en
- xndxscnidx, section_name (ebl, xndxscnidx));
- }
-
-- for (size_t cnt = 1; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
-+ for (size_t cnt = 1; cnt < shdr->sh_size / sh_entsize; ++cnt)
- {
- sym = gelf_getsymshndx (data, xndxdata, cnt, &sym_mem, &xndx);
- if (sym == NULL)
-@@ -683,7 +692,8 @@ section [%2d] '%s': symbol %zu: invalid
- else
- {
- name = elf_strptr (ebl->elf, shdr->sh_link, sym->st_name);
-- assert (name != NULL);
-+ assert (name != NULL
-+ || strshdr->sh_type != SHT_STRTAB);
- }
-
- if (sym->st_shndx == SHN_XINDEX)
-@@ -1040,9 +1050,11 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
- {
- GElf_Shdr rcshdr_mem;
- const GElf_Shdr *rcshdr = gelf_getshdr (scn, &rcshdr_mem);
-- assert (rcshdr != NULL);
-
-- if (rcshdr->sh_type == SHT_DYNAMIC)
-+ if (rcshdr == NULL)
-+ break;
-+
-+ if (rcshdr->sh_type == SHT_DYNAMIC && rcshdr->sh_entsize)
- {
- /* Found the dynamic section. Look through it. */
- Elf_Data *d = elf_getdata (scn, NULL);
-@@ -1052,7 +1064,9 @@ is_rel_dyn (Ebl *ebl, const GElf_Ehdr *e
- {
- GElf_Dyn dyn_mem;
- GElf_Dyn *dyn = gelf_getdyn (d, cnt, &dyn_mem);
-- assert (dyn != NULL);
-+
-+ if (dyn == NULL)
-+ break;
-
- if (dyn->d_tag == DT_RELCOUNT)
- {
-@@ -1066,7 +1080,9 @@ section [%2d] '%s': DT_RELCOUNT used for
- /* Does the number specified number of relative
- relocations exceed the total number of
- relocations? */
-- if (dyn->d_un.d_val > shdr->sh_size / shdr->sh_entsize)
-+ if (shdr->sh_entsize != 0
-+ && dyn->d_un.d_val > (shdr->sh_size
-+ / shdr->sh_entsize))
- ERROR (gettext ("\
- section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"),
- idx, section_name (ebl, idx),
-@@ -1226,7 +1242,8 @@ section [%2d] '%s': no relocations for m
- }
- }
-
-- if (shdr->sh_entsize != gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT))
-+ size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT);
-+ if (shdr->sh_entsize != sh_entsize)
- ERROR (gettext (reltype == ELF_T_RELA ? "\
- section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\
- section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
-@@ -1449,7 +1466,8 @@ check_rela (Ebl *ebl, GElf_Ehdr *ehdr, G
- Elf_Data *symdata = elf_getdata (symscn, NULL);
- enum load_state state = state_undecided;
-
-- for (size_t cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT);
-+ for (size_t cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
- {
- GElf_Rela rela_mem;
- GElf_Rela *rela = gelf_getrela (data, cnt, &rela_mem);
-@@ -1499,7 +1517,8 @@ check_rel (Ebl *ebl, GElf_Ehdr *ehdr, GE
- Elf_Data *symdata = elf_getdata (symscn, NULL);
- enum load_state state = state_undecided;
-
-- for (size_t cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT);
-+ for (size_t cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
- {
- GElf_Rel rel_mem;
- GElf_Rel *rel = gelf_getrel (data, cnt, &rel_mem);
-@@ -1598,7 +1617,8 @@ section [%2d] '%s': referenced as string
- shdr->sh_link, section_name (ebl, shdr->sh_link),
- idx, section_name (ebl, idx));
-
-- if (shdr->sh_entsize != gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT))
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
-+ if (shdr->sh_entsize != sh_entsize)
- ERROR (gettext ("\
- section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"),
- idx, section_name (ebl, idx));
-@@ -1608,7 +1628,7 @@ section [%2d] '%s': section entry size d
- idx, section_name (ebl, idx));
-
- bool non_null_warned = false;
-- for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
-+ for (cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
- {
- GElf_Dyn dyn_mem;
- GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dyn_mem);
-@@ -1880,6 +1900,8 @@ section [%2d] '%s': entry size does not
- idx, section_name (ebl, idx));
-
- if (symshdr != NULL
-+ && shdr->sh_entsize
-+ && symshdr->sh_entsize
- && (shdr->sh_size / shdr->sh_entsize
- < symshdr->sh_size / symshdr->sh_entsize))
- ERROR (gettext ("\
-@@ -1906,6 +1928,12 @@ section [%2d] '%s': extended section ind
- }
-
- Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
-+ if (data == NULL)
-+ {
-+ ERROR (gettext ("section [%2d] '%s': cannot get section data\n"),
-+ idx, section_name (ebl, idx));
-+ return;
-+ }
-
- if (*((Elf32_Word *) data->d_buf) != 0)
- ERROR (gettext ("symbol 0 should have zero extended section index\n"));
-@@ -1948,7 +1976,7 @@ section [%2d] '%s': hash table section i
-
- size_t maxidx = nchain;
-
-- if (symshdr != NULL)
-+ if (symshdr != NULL && symshdr->sh_entsize != 0)
- {
- size_t symsize = symshdr->sh_size / symshdr->sh_entsize;
-
-@@ -1959,18 +1987,28 @@ section [%2d] '%s': hash table section i
- maxidx = symsize;
- }
-
-+ Elf32_Word *buf = (Elf32_Word *) data->d_buf;
-+ Elf32_Word *end = (Elf32_Word *) ((char *) data->d_buf + shdr->sh_size);
- size_t cnt;
- for (cnt = 2; cnt < 2 + nbucket; ++cnt)
-- if (((Elf32_Word *) data->d_buf)[cnt] >= maxidx)
-+ {
-+ if (buf + cnt >= end)
-+ break;
-+ else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
- section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
- idx, section_name (ebl, idx), cnt - 2);
-+ }
-
- for (; cnt < 2 + nbucket + nchain; ++cnt)
-- if (((Elf32_Word *) data->d_buf)[cnt] >= maxidx)
-+ {
-+ if (buf + cnt >= end)
-+ break;
-+ else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
- section [%2d] '%s': hash chain reference %zu out of bounds\n"),
- idx, section_name (ebl, idx), cnt - 2 - nbucket);
-+ }
- }
-
-
-@@ -2000,18 +2038,28 @@ section [%2d] '%s': hash table section i
- maxidx = symsize;
- }
-
-+ Elf64_Xword *buf = (Elf64_Xword *) data->d_buf;
-+ Elf64_Xword *end = (Elf64_Xword *) ((char *) data->d_buf + shdr->sh_size);
- size_t cnt;
- for (cnt = 2; cnt < 2 + nbucket; ++cnt)
-- if (((Elf64_Xword *) data->d_buf)[cnt] >= maxidx)
-+ {
-+ if (buf + cnt >= end)
-+ break;
-+ else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
- section [%2d] '%s': hash bucket reference %zu out of bounds\n"),
- idx, section_name (ebl, idx), cnt - 2);
-+ }
-
- for (; cnt < 2 + nbucket + nchain; ++cnt)
-- if (((Elf64_Xword *) data->d_buf)[cnt] >= maxidx)
-+ {
-+ if (buf + cnt >= end)
-+ break;
-+ else if (buf[cnt] >= maxidx)
- ERROR (gettext ("\
- section [%2d] '%s': hash chain reference %" PRIu64 " out of bounds\n"),
-- idx, section_name (ebl, idx), (uint64_t) (cnt - 2 - nbucket));
-+ idx, section_name (ebl, idx), (uint64_t) cnt - 2 - nbucket);
-+ }
- }
-
-
-@@ -2036,7 +2084,7 @@ section [%2d] '%s': bitmask size not pow
- if (shdr->sh_size < (4 + bitmask_words + nbuckets) * sizeof (Elf32_Word))
- {
- ERROR (gettext ("\
--section [%2d] '%s': hash table section is too small (is %ld, expected at least%ld)\n"),
-+section [%2d] '%s': hash table section is too small (is %ld, expected at least %ld)\n"),
- idx, section_name (ebl, idx), (long int) shdr->sh_size,
- (long int) ((4 + bitmask_words + nbuckets) * sizeof (Elf32_Word)));
- return;
-@@ -2708,8 +2756,9 @@ section [%2d] '%s' refers in sh_link to
-
- /* The number of elements in the version symbol table must be the
- same as the number of symbols. */
-- if (shdr->sh_size / shdr->sh_entsize
-- != symshdr->sh_size / symshdr->sh_entsize)
-+ if (shdr->sh_entsize && symshdr->sh_entsize
-+ && (shdr->sh_size / shdr->sh_entsize
-+ != symshdr->sh_size / symshdr->sh_entsize))
- ERROR (gettext ("\
- section [%2d] '%s' has different number of entries than symbol table [%2d] '%s'\n"),
- idx, section_name (ebl, idx),
---- elfutils/src/readelf.c
-+++ elfutils/src/readelf.c
-@@ -1363,6 +1363,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
- Elf32_Word *grpref = (Elf32_Word *) data->d_buf;
-
- GElf_Sym sym_mem;
-+ GElf_Sym *sym = gelf_getsym (symdata, shdr->sh_info, &sym_mem);
-+
- printf ((grpref[0] & GRP_COMDAT)
- ? ngettext ("\
- \nCOMDAT section group [%2zu] '%s' with signature '%s' contains %zu entry:\n",
-@@ -1375,8 +1377,8 @@ handle_scngrp (Ebl *ebl, Elf_Scn *scn, G
- data->d_size / sizeof (Elf32_Word) - 1),
- elf_ndxscn (scn),
- elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
-- elf_strptr (ebl->elf, symshdr->sh_link,
-- gelf_getsym (symdata, shdr->sh_info, &sym_mem)->st_name)
-+ (sym == NULL ? NULL
-+ : elf_strptr (ebl->elf, symshdr->sh_link, sym->st_name))
- ?: gettext ("<INVALID SYMBOL>"),
- data->d_size / sizeof (Elf32_Word) - 1);
-
-@@ -1527,10 +1529,12 @@ static void
- handle_dynamic (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
- {
- int class = gelf_getclass (ebl->elf);
-- GElf_Shdr glink;
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink;
- Elf_Data *data;
- size_t cnt;
- size_t shstrndx;
-+ size_t sh_entsize;
-
- /* Get the data of the section. */
- data = elf_getdata (scn, NULL);
-@@ -1542,21 +1546,26 @@ handle_dynamic (Ebl *ebl, Elf_Scn *scn,
- error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
-
-+ sh_entsize = gelf_fsize (ebl->elf, ELF_T_DYN, 1, EV_CURRENT);
-+
-+ glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &glink_mem);
-+ if (glink == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+
- printf (ngettext ("\
- \nDynamic segment contains %lu entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
- "\
- \nDynamic segment contains %lu entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
-- shdr->sh_size / shdr->sh_entsize),
-- (unsigned long int) (shdr->sh_size / shdr->sh_entsize),
-+ shdr->sh_size / sh_entsize),
-+ (unsigned long int) (shdr->sh_size / sh_entsize),
- class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
- shdr->sh_offset,
- (int) shdr->sh_link,
-- elf_strptr (ebl->elf, shstrndx,
-- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-- &glink)->sh_name));
-+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
- fputs_unlocked (gettext (" Type Value\n"), stdout);
-
-- for (cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
-+ for (cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
- {
- GElf_Dyn dynmem;
- GElf_Dyn *dyn = gelf_getdyn (data, cnt, &dynmem);
-@@ -1705,7 +1714,8 @@ static void
- handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
- {
- int class = gelf_getclass (ebl->elf);
-- int nentries = shdr->sh_size / shdr->sh_entsize;
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_REL, 1, EV_CURRENT);
-+ int nentries = shdr->sh_size / sh_entsize;
-
- /* Get the data of the section. */
- Elf_Data *data = elf_getdata (scn, NULL);
-@@ -1891,7 +1901,8 @@ static void
- handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn, GElf_Shdr *shdr)
- {
- int class = gelf_getclass (ebl->elf);
-- int nentries = shdr->sh_size / shdr->sh_entsize;
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELA, 1, EV_CURRENT);
-+ int nentries = shdr->sh_size / sh_entsize;
-
- /* Get the data of the section. */
- Elf_Data *data = elf_getdata (scn, NULL);
-@@ -2138,6 +2149,13 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
- error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
-
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-+ &glink_mem);
-+ if (glink == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+
- /* Now we can compute the number of entries in the section. */
- unsigned int nsyms = data->d_size / (class == ELFCLASS32
- ? sizeof (Elf32_Sym)
-@@ -2148,15 +2166,12 @@ handle_symtab (Ebl *ebl, Elf_Scn *scn, G
- nsyms),
- (unsigned int) elf_ndxscn (scn),
- elf_strptr (ebl->elf, shstrndx, shdr->sh_name), nsyms);
-- GElf_Shdr glink;
- printf (ngettext (" %lu local symbol String table: [%2u] '%s'\n",
- " %lu local symbols String table: [%2u] '%s'\n",
- shdr->sh_info),
- (unsigned long int) shdr->sh_info,
- (unsigned int) shdr->sh_link,
-- elf_strptr (ebl->elf, shstrndx,
-- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-- &glink)->sh_name));
-+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
-
- fputs_unlocked (class == ELFCLASS32
- ? gettext ("\
-@@ -2392,7 +2407,13 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
- error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
-
-- GElf_Shdr glink;
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-+ &glink_mem);
-+ if (glink == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+
- printf (ngettext ("\
- \nVersion needs section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
- "\
-@@ -2403,9 +2424,7 @@ handle_verneed (Ebl *ebl, Elf_Scn *scn,
- class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
- shdr->sh_offset,
- (unsigned int) shdr->sh_link,
-- elf_strptr (ebl->elf, shstrndx,
-- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-- &glink)->sh_name));
-+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
-
- unsigned int offset = 0;
- for (int cnt = shdr->sh_info; --cnt >= 0; )
-@@ -2458,8 +2477,14 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
- error (EXIT_FAILURE, 0,
- gettext ("cannot get section header string table index"));
-
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-+ &glink_mem);
-+ if (glink == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+
- int class = gelf_getclass (ebl->elf);
-- GElf_Shdr glink;
- printf (ngettext ("\
- \nVersion definition section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
- "\
-@@ -2471,9 +2496,7 @@ handle_verdef (Ebl *ebl, Elf_Scn *scn, G
- class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
- shdr->sh_offset,
- (unsigned int) shdr->sh_link,
-- elf_strptr (ebl->elf, shstrndx,
-- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-- &glink)->sh_name));
-+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
-
- unsigned int offset = 0;
- for (int cnt = shdr->sh_info; --cnt >= 0; )
-@@ -2735,25 +2758,30 @@ handle_versym (Ebl *ebl, Elf_Scn *scn, G
- filename = NULL;
- }
-
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-+ &glink_mem);
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_HALF, 1, EV_CURRENT);
-+ if (glink == NULL)
-+ error (EXIT_FAILURE, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+
- /* Print the header. */
-- GElf_Shdr glink;
- printf (ngettext ("\
- \nVersion symbols section [%2u] '%s' contains %d entry:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'",
- "\
- \nVersion symbols section [%2u] '%s' contains %d entries:\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'",
-- shdr->sh_size / shdr->sh_entsize),
-+ shdr->sh_size / sh_entsize),
- (unsigned int) elf_ndxscn (scn),
- elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
-- (int) (shdr->sh_size / shdr->sh_entsize),
-+ (int) (shdr->sh_size / sh_entsize),
- class == ELFCLASS32 ? 10 : 18, shdr->sh_addr,
- shdr->sh_offset,
- (unsigned int) shdr->sh_link,
-- elf_strptr (ebl->elf, shstrndx,
-- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-- &glink)->sh_name));
-+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
-
- /* Now we can finally look at the actual contents of this section. */
-- for (unsigned int cnt = 0; cnt < shdr->sh_size / shdr->sh_entsize; ++cnt)
-+ for (unsigned int cnt = 0; cnt < shdr->sh_size / sh_entsize; ++cnt)
- {
- if (cnt % 2 == 0)
- printf ("\n %4d:", cnt);
-@@ -2802,7 +2830,17 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
- for (Elf32_Word cnt = 0; cnt < nbucket; ++cnt)
- ++counts[lengths[cnt]];
-
-- GElf_Shdr glink;
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink = gelf_getshdr (elf_getscn (ebl->elf,
-+ shdr->sh_link),
-+ &glink_mem);
-+ if (glink == NULL)
-+ {
-+ error (0, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+ return;
-+ }
-+
- printf (ngettext ("\
- \nHistogram for bucket list length in section [%2u] '%s' (total of %d bucket):\n Addr: %#0*" PRIx64 " Offset: %#08" PRIx64 " Link to section: [%2u] '%s'\n",
- "\
-@@ -2815,9 +2853,7 @@ print_hash_info (Ebl *ebl, Elf_Scn *scn,
- shdr->sh_addr,
- shdr->sh_offset,
- (unsigned int) shdr->sh_link,
-- elf_strptr (ebl->elf, shstrndx,
-- gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link),
-- &glink)->sh_name));
-+ elf_strptr (ebl->elf, shstrndx, glink->sh_name));
-
- if (extrastr != NULL)
- fputs (extrastr, stdout);
-@@ -3077,7 +3113,8 @@ print_liblist (Ebl *ebl)
-
- if (shdr != NULL && shdr->sh_type == SHT_GNU_LIBLIST)
- {
-- int nentries = shdr->sh_size / shdr->sh_entsize;
-+ size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_LIB, 1, EV_CURRENT);
-+ int nentries = shdr->sh_size / sh_entsize;
- printf (ngettext ("\
- \nLibrary list section [%2zu] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
- "\
-@@ -4397,6 +4434,16 @@ print_decoded_aranges_section (Ebl *ebl,
- return;
- }
-
-+ GElf_Shdr glink_mem;
-+ GElf_Shdr *glink;
-+ glink = gelf_getshdr (elf_getscn (ebl->elf, shdr->sh_link), &glink_mem);
-+ if (glink == NULL)
-+ {
-+ error (0, 0, gettext ("invalid sh_link value in section %Zu"),
-+ elf_ndxscn (scn));
-+ return;
-+ }
-+
- printf (ngettext ("\
- \nDWARF section [%2zu] '%s' at offset %#" PRIx64 " contains %zu entry:\n",
- "\
---- elfutils/src/strip.c
-+++ elfutils/src/strip.c
-@@ -565,6 +565,11 @@ handle_elf (int fd, Elf *elf, const char
- goto fail_close;
- }
-
-+ if (shstrndx >= shnum)
-+ goto illformed;
-+
-+#define elf_assert(test) do { if (!(test)) goto illformed; } while (0)
-+
- /* Storage for section information. We leave room for two more
- entries since we unconditionally create a section header string
- table. Maybe some weird tool created an ELF file without one.
-@@ -586,7 +591,7 @@ handle_elf (int fd, Elf *elf, const char
- {
- /* This should always be true (i.e., there should not be any
- holes in the numbering). */
-- assert (elf_ndxscn (scn) == cnt);
-+ elf_assert (elf_ndxscn (scn) == cnt);
-
- shdr_info[cnt].scn = scn;
-
-@@ -599,6 +604,7 @@ handle_elf (int fd, Elf *elf, const char
- shdr_info[cnt].shdr.sh_name);
- if (shdr_info[cnt].name == NULL)
- {
-+ illformed:
- error (0, 0, gettext ("illformed file '%s'"), fname);
- goto fail_close;
- }
-@@ -608,6 +614,8 @@ handle_elf (int fd, Elf *elf, const char
-
- /* Remember the shdr.sh_link value. */
- shdr_info[cnt].old_sh_link = shdr_info[cnt].shdr.sh_link;
-+ if (shdr_info[cnt].old_sh_link >= shnum)
-+ goto illformed;
-
- /* Sections in files other than relocatable object files which
- are not loaded can be freely moved by us. In relocatable
-@@ -620,7 +628,7 @@ handle_elf (int fd, Elf *elf, const char
- appropriate reference. */
- if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB_SHNDX))
- {
-- assert (shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0);
-+ elf_assert (shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx == 0);
- shdr_info[shdr_info[cnt].shdr.sh_link].symtab_idx = cnt;
- }
- else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GROUP))
-@@ -637,7 +645,12 @@ handle_elf (int fd, Elf *elf, const char
- for (inner = 1;
- inner < shdr_info[cnt].data->d_size / sizeof (Elf32_Word);
- ++inner)
-+ {
-+ if (grpref[inner] < shnum)
- shdr_info[grpref[inner]].group_idx = cnt;
-+ else
-+ goto illformed;
-+ }
-
- if (inner == 1 || (inner == 2 && (grpref[0] & GRP_COMDAT) == 0))
- /* If the section group contains only one element and this
-@@ -648,7 +661,7 @@ handle_elf (int fd, Elf *elf, const char
- }
- else if (unlikely (shdr_info[cnt].shdr.sh_type == SHT_GNU_versym))
- {
-- assert (shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0);
-+ elf_assert (shdr_info[shdr_info[cnt].shdr.sh_link].version_idx == 0);
- shdr_info[shdr_info[cnt].shdr.sh_link].version_idx = cnt;
- }
-
-@@ -656,7 +669,7 @@ handle_elf (int fd, Elf *elf, const char
- discarded right away. */
- if ((shdr_info[cnt].shdr.sh_flags & SHF_GROUP) != 0)
- {
-- assert (shdr_info[cnt].group_idx != 0);
-+ elf_assert (shdr_info[cnt].group_idx != 0);
-
- if (shdr_info[shdr_info[cnt].group_idx].idx == 0)
- {
-@@ -732,10 +745,14 @@ handle_elf (int fd, Elf *elf, const char
- {
- /* If a relocation section is marked as being removed make
- sure the section it is relocating is removed, too. */
-- if ((shdr_info[cnt].shdr.sh_type == SHT_REL
-+ if (shdr_info[cnt].shdr.sh_type == SHT_REL
- || shdr_info[cnt].shdr.sh_type == SHT_RELA)
-- && shdr_info[shdr_info[cnt].shdr.sh_info].idx != 0)
-- shdr_info[cnt].idx = 1;
-+ {
-+ if (shdr_info[cnt].shdr.sh_info >= shnum)
-+ goto illformed;
-+ else if (shdr_info[shdr_info[cnt].shdr.sh_info].idx != 0)
-+ shdr_info[cnt].idx = 1;
-+ }
-
- /* If a group section is marked as being removed make
- sure all the sections it contains are being removed, too. */
-@@ -779,7 +796,7 @@ handle_elf (int fd, Elf *elf, const char
- if (shdr_info[cnt].symtab_idx != 0
- && shdr_info[shdr_info[cnt].symtab_idx].data == NULL)
- {
-- assert (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB);
-+ elf_assert (shdr_info[cnt].shdr.sh_type == SHT_SYMTAB);
-
- shdr_info[shdr_info[cnt].symtab_idx].data
- = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn,
-@@ -819,6 +836,9 @@ handle_elf (int fd, Elf *elf, const char
- else if (scnidx == SHN_XINDEX)
- scnidx = xndx;
-
-+ if (scnidx >= shnum)
-+ goto illformed;
-+
- if (shdr_info[scnidx].idx == 0)
- /* This symbol table has a real symbol in
- a discarded section. So preserve the
-@@ -849,12 +869,16 @@ handle_elf (int fd, Elf *elf, const char
- }
-
- /* Handle references through sh_info. */
-- if (SH_INFO_LINK_P (&shdr_info[cnt].shdr)
-- && shdr_info[shdr_info[cnt].shdr.sh_info].idx == 0)
-+ if (SH_INFO_LINK_P (&shdr_info[cnt].shdr))
-+ {
-+ if (shdr_info[cnt].shdr.sh_info >= shnum)
-+ goto illformed;
-+ else if ( shdr_info[shdr_info[cnt].shdr.sh_info].idx == 0)
- {
- shdr_info[shdr_info[cnt].shdr.sh_info].idx = 1;
- changes |= shdr_info[cnt].shdr.sh_info < cnt;
- }
-+ }
-
- /* Mark the section as investigated. */
- shdr_info[cnt].idx = 2;
-@@ -995,7 +1019,7 @@ handle_elf (int fd, Elf *elf, const char
- error (EXIT_FAILURE, 0, gettext ("while generating output file: %s"),
- elf_errmsg (-1));
-
-- assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
-+ elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
-
- /* Add this name to the section header string table. */
- shdr_info[cnt].se = ebl_strtabadd (shst, shdr_info[cnt].name, 0);
-@@ -1032,7 +1056,7 @@ handle_elf (int fd, Elf *elf, const char
- error (EXIT_FAILURE, 0,
- gettext ("while create section header section: %s"),
- elf_errmsg (-1));
-- assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
-+ elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == shdr_info[cnt].idx);
-
- shdr_info[cnt].data = elf_newdata (shdr_info[cnt].newscn);
- if (shdr_info[cnt].data == NULL)
-@@ -1089,7 +1113,7 @@ handle_elf (int fd, Elf *elf, const char
- error (EXIT_FAILURE, 0,
- gettext ("while create section header section: %s"),
- elf_errmsg (-1));
-- assert (elf_ndxscn (shdr_info[cnt].newscn) == idx);
-+ elf_assert (elf_ndxscn (shdr_info[cnt].newscn) == idx);
-
- /* Finalize the string table and fill in the correct indices in the
- section headers. */
-@@ -1179,20 +1203,20 @@ handle_elf (int fd, Elf *elf, const char
- shndxdata = elf_getdata (shdr_info[shdr_info[cnt].symtab_idx].scn,
- NULL);
-
-- assert ((versiondata->d_size / sizeof (Elf32_Word))
-+ elf_assert ((versiondata->d_size / sizeof (Elf32_Word))
- >= shdr_info[cnt].data->d_size / elsize);
- }
-
- if (shdr_info[cnt].version_idx != 0)
- {
-- assert (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM);
-+ elf_assert (shdr_info[cnt].shdr.sh_type == SHT_DYNSYM);
- /* This section has associated version
- information. We have to modify that
- information, too. */
- versiondata = elf_getdata (shdr_info[shdr_info[cnt].version_idx].scn,
- NULL);
-
-- assert ((versiondata->d_size / sizeof (GElf_Versym))
-+ elf_assert ((versiondata->d_size / sizeof (GElf_Versym))
- >= shdr_info[cnt].data->d_size / elsize);
- }
-
-@@ -1247,7 +1271,7 @@ handle_elf (int fd, Elf *elf, const char
- sec = shdr_info[sym->st_shndx].idx;
- else
- {
-- assert (shndxdata != NULL);
-+ elf_assert (shndxdata != NULL);
-
- sec = shdr_info[xshndx].idx;
- }
-@@ -1268,7 +1292,7 @@ handle_elf (int fd, Elf *elf, const char
- nxshndx = sec;
- }
-
-- assert (sec < SHN_LORESERVE || shndxdata != NULL);
-+ elf_assert (sec < SHN_LORESERVE || shndxdata != NULL);
-
- if ((inner != destidx || nshndx != sym->st_shndx
- || (shndxdata != NULL && nxshndx != xshndx))
-@@ -1295,9 +1319,11 @@ handle_elf (int fd, Elf *elf, const char
- {
- size_t sidx = (sym->st_shndx != SHN_XINDEX
- ? sym->st_shndx : xshndx);
-- assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION
-- || (shdr_info[sidx].shdr.sh_type == SHT_GROUP
-- && shdr_info[sidx].shdr.sh_info == inner));
-+ elf_assert (GELF_ST_TYPE (sym->st_info) == STT_SECTION
-+ || ((shdr_info[sidx].shdr.sh_type
-+ == SHT_GROUP)
-+ && (shdr_info[sidx].shdr.sh_info
-+ == inner)));
- }
- }
-
-@@ -1485,11 +1511,11 @@ handle_elf (int fd, Elf *elf, const char
- {
- GElf_Sym sym_mem;
- GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem);
-- assert (sym != NULL);
-+ elf_assert (sym != NULL);
-
- const char *name = elf_strptr (elf, strshndx,
- sym->st_name);
-- assert (name != NULL);
-+ elf_assert (name != NULL);
- size_t hidx = elf_hash (name) % nbucket;
-
- if (bucket[hidx] == 0)
-@@ -1508,8 +1534,8 @@ handle_elf (int fd, Elf *elf, const char
- else
- {
- /* Alpha and S390 64-bit use 64-bit SHT_HASH entries. */
-- assert (shdr_info[cnt].shdr.sh_entsize
-- == sizeof (Elf64_Xword));
-+ elf_assert (shdr_info[cnt].shdr.sh_entsize
-+ == sizeof (Elf64_Xword));
-
- Elf64_Xword *bucket = (Elf64_Xword *) hashd->d_buf;
-
-@@ -1539,11 +1565,11 @@ handle_elf (int fd, Elf *elf, const char
- {
- GElf_Sym sym_mem;
- GElf_Sym *sym = gelf_getsym (symd, inner, &sym_mem);
-- assert (sym != NULL);
-+ elf_assert (sym != NULL);
-
- const char *name = elf_strptr (elf, strshndx,
- sym->st_name);
-- assert (name != NULL);
-+ elf_assert (name != NULL);
- size_t hidx = elf_hash (name) % nbucket;
-
- if (bucket[hidx] == 0)
diff --git a/elfutils-scanf.patch b/elfutils-scanf.patch
index f6e3913..fc6356c 100644
--- a/elfutils-scanf.patch
+++ b/elfutils-scanf.patch
@@ -5,9 +5,9 @@
}
+#if ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 7))) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)))
-+# define SCANF_ADDR "%m"
++# define SCANF_ADDR "m"
+#else
-+# define SCANF_ADDR "%a"
++# define SCANF_ADDR "a"
+#endif
+
static int
@@ -18,11 +18,35 @@
int i, j;
char *name = NULL;
- if (sscanf (string, "(%a[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
-+ if (sscanf (string, "(" SCANF_ADDR "[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
++ if (sscanf (string, "(%" SCANF_ADDR "[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
&& string[i] == '\0')
parsed = adjust_to_section (name, &addr, dwfl);
- switch (sscanf (string, "%a[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
-+ switch (sscanf (string, SCANF_ADDR "[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
++ switch (sscanf (string, "%" SCANF_ADDR "[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
{
default:
break;
<Skipped 23 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/elfutils.git/commitdiff/df44456578d600b6f57710f30e7b3dc947cdcb6a
More information about the pld-cvs-commit
mailing list