[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