Rebase to 1.162

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 ChangeLog                   |   30 +++++++++++++++++++++
 backends/ChangeLog          |   12 +++++++++
 backends/Makefile.am        |    2 +-
 config/ChangeLog            |    4 +++
 config/eu.am                |   14 +++++++---
 configure.ac                |   61 +++++++++++++++++++++++++++++++++++++++++--
 lib/ChangeLog               |    8 ++++++
 lib/eu-config.h             |   10 +++++++
 libasm/ChangeLog            |    5 ++++
 libcpu/ChangeLog            |    8 ++++++
 libcpu/i386_disasm.c        |    1 +
 libdw/ChangeLog             |   13 +++++++++
 libdw/dwarf_begin_elf.c     |    8 ++++++
 libdw/libdw.h               |    2 +-
 libdwfl/ChangeLog           |   20 ++++++++++++++
 libdwfl/linux-core-attach.c |   29 ++++++++++++++++++++
 libdwfl/linux-pid-attach.c  |   14 ++++++++++
 libebl/ChangeLog            |    5 ++++
 libelf/ChangeLog            |   10 +++++++
 libelf/common.h             |    4 +--
 libelf/gnuhash_xlate.h      |    6 +++--
 src/ChangeLog               |   30 +++++++++++++++++++++
 src/Makefile.am             |    5 ++++
 src/addr2line.c             |    4 +--
 src/findtextrel.c           |    6 ++++-
 src/ld.h                    |    2 ++
 src/readelf.c               |   15 +++++++----
 src/strings.c               |   11 ++++++++
 src/strip.c                 |    6 +++++
 tests/ChangeLog             |   14 ++++++++++
 tests/Makefile.am           |    1 +
 tests/backtrace.c           |    1 +
 tests/line2addr.c           |    2 +-
 33 files changed, 343 insertions(+), 20 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d829783..89bfd24 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -253,6 +253,8 @@
 
 2012-01-24  Mark Wielaard  <mjw@redhat.com>
 
+	* configure.ac: Wrap AC_COMPILE_IFELSE sources in AC_LANG_SOURCE.
+
 	* COPYING: Fix address. Updated version from gnulib.
 
 2012-01-23  Mark Wielaard  <mjw@redhat.com>
@@ -271,6 +273,9 @@
 
 2011-10-08  Mike Frysinger  <vapier@gentoo.org>
 
+	* configure.ac (--disable-werror): Handle it, controlling BUILD_WERROR
+	automake option.
+
 	* configure.ac: Fix use of AC_ARG_ENABLE to handle $enableval correctly.
 
 2011-10-02  Ulrich Drepper  <drepper@gmail.com>
@@ -292,6 +297,10 @@
 
 	* configure.ac (LOCALEDIR, DATADIRNAME): Removed.
 
+2009-11-22  Roland McGrath  <roland@redhat.com>
+
+	* configure.ac: Use sed and expr instead of modern bash extensions.
+
 2009-09-21  Ulrich Drepper  <drepper@redhat.com>
 
 	* configure.ac: Update for more modern autoconf.
@@ -300,6 +309,10 @@
 
 	* configure.ac (zip_LIBS): Check for liblzma too.
 
+2009-08-17  Roland McGrath  <roland@redhat.com>
+
+	* configure.ac: Check for -fgnu89-inline; add it to WEXTRA if it works.
+
 2009-04-19  Roland McGrath  <roland@redhat.com>
 
 	* configure.ac (eu_version): Round down here, not in version.h macros.
@@ -311,6 +324,8 @@
 
 2009-01-23  Roland McGrath  <roland@redhat.com>
 
+	* configure.ac: Check for __builtin_popcount.
+
 	* configure.ac (zlib check): Check for gzdirect, need zlib >= 1.2.2.3.
 
 	* configure.ac (__thread check): Use AC_LINK_IFELSE, in case of
@@ -391,6 +406,10 @@
 	* configure.ac: Add dummy automake conditional to get dependencies
 	for non-generic linker right.  See src/Makefile.am.
 
+2005-11-22  Roland McGrath  <roland@redhat.com>
+
+	* configure.ac: Check for --as-needed linker option.
+
 2005-11-18  Roland McGrath  <roland@redhat.com>
 
 	* Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable.
@@ -438,6 +457,17 @@
 	* Makefile.am (all_SUBDIRS): Add libdwfl.
 	* configure.ac: Write libdwfl/Makefile.
 
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
+	* configure.ac (WEXTRA): Check for -Wextra and set this substitution.
+
+	* configure.ac: Check for struct stat st_?tim members.
+	* src/strip.c (process_file): Use st_?time if st_?tim are not there.
+
+	* configure.ac: Check for futimes function.
+	* src/strip.c (handle_elf) [! HAVE_FUTIMES]: Use utimes instead.
+	(handle_ar) [! HAVE_FUTIMES]: Likewise.
+
 2005-05-19  Roland McGrath  <roland@redhat.com>
 
 	* configure.ac [AH_BOTTOM] (INTDECL, _INTDECL): New macros.
diff --git a/backends/ChangeLog b/backends/ChangeLog
index fe61d9c..9599623 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -498,6 +498,10 @@
 	* ppc_attrs.c (ppc_check_object_attribute): Handle tag
 	GNU_Power_ABI_Struct_Return.
 
+2009-01-23  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (libebl_%.so): Use $(LD_AS_NEEDED).
+
 2008-10-04  Ulrich Drepper  <drepper@redhat.com>
 
 	* i386_reloc.def: Fix entries for TLS_GOTDESC, TLS_DESC_CALL, and
@@ -825,6 +829,11 @@
 	* sparc_init.c: Likewise.
 	* x86_64_init.c: Likewise.
 
+2005-11-22  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (LD_AS_NEEDED): New variable, substituted by configure.
+	(libebl_%.so rule): Use it in place of -Wl,--as-needed.
+
 2005-11-19  Roland McGrath  <roland@redhat.com>
 
 	* ppc64_reloc.def: REL30 -> ADDR30.
@@ -847,6 +856,9 @@
 	* Makefile.am (uninstall): Don't try to remove $(pkgincludedir).
 	(CLEANFILES): Add libebl_$(m).so.
 
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 	* ppc_reloc.def: Update bits per Alan Modra <amodra@bigpond.net.au>.
 	* ppc64_reloc.def: Likewise.
 
diff --git a/backends/Makefile.am b/backends/Makefile.am
index 21d7bd2..fe920c9 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -119,7 +119,7 @@ libebl_%.so libebl_%.map: libebl_%_pic.a $(libelf) $(libdw)
 	$(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)
+		-Wl,-z,defs $(LD_AS_NEEDED) $(libelf) $(libdw)
 	@$(textrel_check)
 
 libebl_i386.so: $(cpu_i386)
diff --git a/config/ChangeLog b/config/ChangeLog
index 64b58e1..63b3e90 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -106,6 +106,10 @@
 
 	* known-dwarf.awk: Use gawk.
 
+2011-10-08  Mike Frysinger  <vapier@gentoo.org>
+
+	* eu.am [BUILD_WERROR]: Conditionalize -Werror use on this.
+
 2010-07-02  Ulrich Drepper  <drepper@redhat.com>
 
 	* elfutils.spec.in: Add more BuildRequires.
diff --git a/config/eu.am b/config/eu.am
index 70d32de..65af085 100644
--- a/config/eu.am
+++ b/config/eu.am
@@ -1,6 +1,6 @@
 ## Common automake fragments for elfutils subdirectory makefiles.
 ##
-## Copyright (C) 2010, 2014 Red Hat, Inc.
+## Copyright (C) 2010-2011, 2014 Red Hat, Inc.
 ##
 ## This file is part of elfutils.
 ##
@@ -29,6 +29,9 @@
 ## not, see <http://www.gnu.org/licenses/>.
 ##
 
+WEXTRA = @WEXTRA@
+LD_AS_NEEDED = @LD_AS_NEEDED@
+
 DEFS = -D_GNU_SOURCE -DHAVE_CONFIG_H -DLOCALEDIR='"${localedir}"'
 AM_CPPFLAGS = -I. -I$(srcdir) -I$(top_srcdir)/lib -I..
 
@@ -38,12 +41,17 @@ STACK_USAGE_WARNING=-Wstack-usage=262144
 else
 STACK_USAGE_WARNING=
 endif
-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_Wstack_usage),,$(STACK_USAGE_WARNING)) \
 	    $($(*F)_CFLAGS)
 
+if BUILD_WERROR
+AM_CFLAGS += $(if $($(*F)_no_Werror),,-Werror)
+endif
+
 COMPILE.os = $(filter-out -fprofile-arcs -ftest-coverage, $(COMPILE))
 
 DEFS.os = -DPIC -DSHARED
diff --git a/configure.ac b/configure.ac
index bc9ff56..27a1ef3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -106,6 +106,55 @@ CFLAGS="$old_CFLAGS"])
 AS_IF([test "x$ac_cv_c99" != xyes],
       AC_MSG_ERROR([gcc with GNU99 support required]))
 
+AC_CACHE_CHECK([for -Wextra option to $CC], ac_cv_cc_wextra, [dnl
+old_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -Wextra"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([void foo (void) { }])],
+		  ac_cv_cc_wextra=yes, ac_cv_cc_wextra=no)
+CFLAGS="$old_CFLAGS"])
+AC_SUBST(WEXTRA)
+AS_IF([test "x$ac_cv_cc_wextra" = xyes], [WEXTRA=-Wextra], [WEXTRA=-W])
+
+AC_CACHE_CHECK([for -fgnu89-inline option to $CC], ac_cv_cc_gnu89_inline, [dnl
+old_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fgnu89-inline -Werror"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+void foo (void)
+{
+  inline void bar (void) {}
+  bar ();
+}
+extern inline void baz (void) {}
+])], ac_cv_cc_gnu89_inline=yes, ac_cv_cc_gnu89_inline=no)
+CFLAGS="$old_CFLAGS"])
+AS_IF([test "x$ac_cv_cc_gnu89_inline" = xyes],
+      [WEXTRA="${WEXTRA:+$WEXTRA }-fgnu89-inline"])
+
+AC_CACHE_CHECK([for --as-needed linker option],
+	       ac_cv_as_needed, [dnl
+cat > conftest.c <<EOF
+int main (void) { return 0; }
+EOF
+if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS
+			    -fPIC -shared -o conftest.so conftest.c
+			    -Wl,--as-needed 1>&AS_MESSAGE_LOG_FD])
+then
+  ac_cv_as_needed=yes
+else
+  ac_cv_as_needed=no
+fi
+rm -f conftest*])
+AS_IF([test "x$ac_cv_as_needed" = xyes],
+      [LD_AS_NEEDED=-Wl,--as-needed], [LD_AS_NEEDED=])
+AC_SUBST(LD_AS_NEEDED)
+
+AC_CACHE_CHECK([for __builtin_popcount], ac_cv_popcount, [dnl
+AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[exit (__builtin_popcount (127));]])],
+	       ac_cv_popcount=yes, ac_cv_popcount=no)])
+AS_IF([test "x$ac_cv_popcount" = xyes],
+      [AC_DEFINE([HAVE_BUILTIN_POPCOUNT], [1], [Have __builtin_popcount.])])
+
+
 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.
@@ -122,7 +171,10 @@ static __thread int a; int foo (int b) { return a + b; }]],
 CFLAGS="$save_CFLAGS"
 LDFLAGS="$save_LDFLAGS"])
 AS_IF([test "x$ac_cv_tls" != xyes],
-      AC_MSG_ERROR([__thread support required]))
+      [AS_IF([test "$use_locks" = yes],
+	     [AC_MSG_ERROR([--enable-thread-safety requires __thread support])],
+	     [AC_DEFINE([__thread], [/* empty: no multi-thread support */],
+			[Stubbed out if missing compiler support.])])])
 
 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
@@ -224,6 +276,11 @@ AM_CONDITIONAL(USE_VALGRIND, test "$use_valgrind" = yes)
 AM_CONDITIONAL(BUILD_STATIC, [dnl
 test "$use_gprof" = yes -o "$use_gcov" = yes])
 
+AC_ARG_ENABLE([werror],
+AS_HELP_STRING([--disable-werror],[do not build with -Werror]),
+	       [enable_werror=$enableval], [enable_werror=yes])
+AM_CONDITIONAL(BUILD_WERROR, test "$enable_werror" = yes)
+
 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])
@@ -388,7 +445,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`
 
 dnl Unique ID for this build.
 MODVERSION="Build for ${LIBEBL_SUBDIR} ${eu_version} ${ac_cv_build}"
diff --git a/lib/ChangeLog b/lib/ChangeLog
index d04bf17..720c98d 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -73,6 +73,9 @@
 
 2009-01-23  Roland McGrath  <roland@redhat.com>
 
+	* eu-config.h [! HAVE_BUILTIN_POPCOUNT]
+	(__builtin_popcount): New inline function.
+
 	* eu-config.h: Add multiple inclusion protection.
 
 2009-01-17  Ulrich Drepper  <drepper@redhat.com>
@@ -129,6 +132,11 @@
 	* Makefile.am (libeu_a_SOURCES): Add it.
 	* system.h: Declare crc32_file.
 
+2005-02-07  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 2005-04-30  Ulrich Drepper  <drepper@redhat.com>
 
 	* Makefile.am: Use -ffunction-sections for xmalloc.c.
diff --git a/lib/eu-config.h b/lib/eu-config.h
index 400cdc6..872f6bc 100644
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -163,6 +163,16 @@ asm (".section predict_data, \"aw\"; .previous\n"
 /* This macro is used by the tests conditionalize for standalone building.  */
 #define ELFUTILS_HEADER(name) <lib##name.h>
 
+#ifndef HAVE_BUILTIN_POPCOUNT
+# define __builtin_popcount hakmem_popcount
+static inline unsigned int __attribute__ ((unused))
+hakmem_popcount (unsigned int x)
+{
+  /* HAKMEM 169 */
+  unsigned int n = x - ((x >> 1) & 033333333333) - ((x >> 2) & 011111111111);
+  return ((n + (n >> 3)) & 030707070707) % 63;
+}
+#endif	/* HAVE_BUILTIN_POPCOUNT */
 
 #ifdef SYMBOL_VERSIONING
 # define OLD_VERSION(name, version) \
diff --git a/libasm/ChangeLog b/libasm/ChangeLog
index 9b25af9..32b9fd0 100644
--- a/libasm/ChangeLog
+++ b/libasm/ChangeLog
@@ -87,6 +87,11 @@
 	* asm_error.c: Add new error ASM_E_IOERROR.
 	* libasmP.h: Add ASM_E_IOERROR definition.
 
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 2005-02-15  Ulrich Drepper  <drepper@redhat.com>
 
 	* Makefile.am (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.
diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog
index a20f440..5ea23b7 100644
--- a/libcpu/ChangeLog
+++ b/libcpu/ChangeLog
@@ -51,6 +51,9 @@
 
 2009-01-23  Roland McGrath  <roland@redhat.com>
 
+	* i386_disasm.c (i386_disasm): Add abort after assert-constant for old
+	compilers that don't realize it's noreturn.
+
 	* Makefile.am (i386_parse_CFLAGS): Use quotes around command
 	substitution that can produce leading whitespace.
 
@@ -380,6 +383,11 @@
 	* defs/i386.doc: New file.
 	* defs/x86_64: New file.
 
+2005-04-04  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it instead of -Wextra.
+
 2005-02-15  Ulrich Drepper  <drepper@redhat.com>
 
 	* Makefile (AM_CFLAGS): Add -Wunused -Wextra -Wformat=2.
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
index 832241f..c7a0df0 100644
--- a/libcpu/i386_disasm.c
+++ b/libcpu/i386_disasm.c
@@ -822,6 +822,7 @@ i386_disasm (const uint8_t **startp, const uint8_t *end, GElf_Addr addr,
 
 			default:
 			  assert (! "INVALID not handled");
+			  abort ();
 			}
 		    }
 		  else
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 487e34a..06c737b 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -889,6 +889,10 @@
 
 	* Makefile.am (known-dwarf.h): Run gawk on config/known-dwarf.awk.
 
+2011-07-20  Mark Wielaard  <mjw@redhat.com>
+
+	* dwarf_begin_elf.c: Add fallback for be64toh if not defined.
+
 2011-07-14  Mark Wielaard  <mjw@redhat.com>
 
 	* libdw.h (dwarf_offdie): Fix documentation to mention .debug_info.
@@ -1248,6 +1252,10 @@
 
 	* dwarf_hasattr_integrate.c: Integrate DW_AT_specification too.
 
+2009-08-17  Roland McGrath  <roland@redhat.com>
+
+	* libdw.h: Disable extern inlines for GCC 4.2.
+
 2009-08-10  Roland McGrath  <roland@redhat.com>
 
 	* dwarf_getscopevar.c: Use dwarf_diename.
@@ -2016,6 +2024,11 @@
 
 2005-05-31  Roland McGrath  <roland@redhat.com>
 
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
 	* dwarf_formref_die.c (dwarf_formref_die): Add CU header offset to
 	formref offset.
 
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
index 4e0d590..a6616a1 100644
--- a/libdw/dwarf_begin_elf.c
+++ b/libdw/dwarf_begin_elf.c
@@ -47,6 +47,14 @@
 #if USE_ZLIB
 # include <endian.h>
 # define crc32		loser_crc32
+# ifndef be64toh
+#  include <byteswap.h>
+#  if __BYTE_ORDER == __LITTLE_ENDIAN
+#   define be64toh(x) bswap_64 (x)
+#  else
+#   define be64toh(x) (x)
+#  endif
+# endif
 # include <zlib.h>
 # undef crc32
 #endif
diff --git a/libdw/libdw.h b/libdw/libdw.h
index 473e1a2..5a511cd 100644
--- a/libdw/libdw.h
+++ b/libdw/libdw.h
@@ -1004,7 +1004,7 @@ extern Dwarf_OOM dwarf_new_oom_handler (Dwarf *dbg, Dwarf_OOM handler);
 
 
 /* Inline optimizations.  */
-#ifdef __OPTIMIZE__
+#if defined __OPTIMIZE__ && !(__GNUC__ == 4 && __GNUC_MINOR__ == 2)
 /* Return attribute code of given attribute.  */
 __libdw_extern_inline unsigned int
 dwarf_whatattr (Dwarf_Attribute *attr)
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index a5253e2..59abfac 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -704,6 +704,21 @@
 	(dwfl_module_addrsym) (i_to_symfile): New function.
 	(dwfl_module_addrsym) (search_table): Use it.
 
+2013-11-09  Jan Kratochvil  <jan.kratochvil@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@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@redhat.com>
 	    Mark Wielaard  <mjw@redhat.com>
 
@@ -2469,6 +2484,11 @@
 
 2005-07-21  Roland McGrath  <roland@redhat.com>
 
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
+2005-07-21  Roland McGrath  <roland@redhat.com>
+
 	* Makefile.am (noinst_HEADERS): Add loc2c.c.
 
 	* test2.c (main): Check sscanf result to quiet warning.
diff --git a/libdwfl/linux-core-attach.c b/libdwfl/linux-core-attach.c
index 5a7b3b3..d05ac7e 100644
--- a/libdwfl/linux-core-attach.c
+++ b/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
 
 #include "../libdw/memory-access.h"
 
diff --git a/libdwfl/linux-pid-attach.c b/libdwfl/linux-pid-attach.c
index ae71702..076b2c3 100644
--- a/libdwfl/linux-pid-attach.c
+++ b/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 tid_was_stopped)
      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
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index 51ae60f..aee0217 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -780,6 +780,11 @@
 	* Makefile.am (libebl_*_so_SOURCES): Set to $(*_SRCS) so dependency
 	tracking works right.
 
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 2005-05-21  Ulrich Drepper  <drepper@redhat.com>
 
 	* libebl_x86_64.map: Add x86_64_core_note.
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index 30017cd..9ca9c73 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -398,6 +398,11 @@
 
 	* elf-knowledge.h (SECTION_STRIP_P): Remove < SHT_NUM check.
 
+2011-03-10  Roland McGrath  <roland@redhat.com>
+
+	* gnuhash_xlate.h (elf_cvt_gnuhash): Avoid post-increment in bswap_32
+	argument, since some implementations are buggy macros.
+
 2011-02-26  Mark Wielaard  <mjw@redhat.com>
 
 	* elf_end.c (elf_end): Call rwlock_unlock before rwlock_fini.
@@ -1075,6 +1080,11 @@
 
 	* elf.h: Update from glibc.
 
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 2005-05-08  Roland McGrath  <roland@redhat.com>
 
 	* elf_begin.c (read_file) [_MUDFLAP]: Don't use mmap for now.
diff --git a/libelf/common.h b/libelf/common.h
index 744f1bb..185ea59 100644
--- a/libelf/common.h
+++ b/libelf/common.h
@@ -139,7 +139,7 @@ libelf_release_all (Elf *elf)
   (Var) = (sizeof (Var) == 1						      \
 	   ? (unsigned char) (Var)					      \
 	   : (sizeof (Var) == 2						      \
-	      ? bswap_16 (Var)						      \
+	      ? (unsigned short int) bswap_16 (Var)			      \
 	      : (sizeof (Var) == 4					      \
 		 ? bswap_32 (Var)					      \
 		 : bswap_64 (Var))))
@@ -148,7 +148,7 @@ libelf_release_all (Elf *elf)
   (Dst) = (sizeof (Var) == 1						      \
 	   ? (unsigned char) (Var)					      \
 	   : (sizeof (Var) == 2						      \
-	      ? bswap_16 (Var)						      \
+	      ? (unsigned short int) bswap_16 (Var)			      \
 	      : (sizeof (Var) == 4					      \
 		 ? bswap_32 (Var)					      \
 		 : bswap_64 (Var))))
diff --git a/libelf/gnuhash_xlate.h b/libelf/gnuhash_xlate.h
index 04d9ca1..3e25936 100644
--- a/libelf/gnuhash_xlate.h
+++ b/libelf/gnuhash_xlate.h
@@ -1,5 +1,5 @@
 /* Conversion functions for versioning information.
-   Copyright (C) 2006, 2007 Red Hat, Inc.
+   Copyright (C) 2006-2011 Red Hat, Inc.
    This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2006.
 
@@ -69,7 +69,9 @@ elf_cvt_gnuhash (void *dest, const void *src, size_t len, int encode)
   dest32 = (Elf32_Word *) &dest64[bitmask_words];
   while (len >= 4)
     {
-      *dest32++ = bswap_32 (*src32++);
+      *dest32 = bswap_32 (*src32);
+      ++dest32;
+      ++src32;
       len -= 4;
     }
 }
diff --git a/src/ChangeLog b/src/ChangeLog
index 15e6fae..78535c8 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1598,8 +1598,16 @@
 	* readelf.c (attr_callback): Use print_block only when we don't use
 	print_ops.
 
+2009-08-17  Roland McGrath  <roland@redhat.com>
+
+	* ld.h: Disable extern inlines for GCC 4.2.
+
 2009-08-14  Roland McGrath  <roland@redhat.com>
 
+	* strings.c (read_block): Conditionalize posix_fadvise use
+	on [POSIX_FADV_SEQUENTIAL].
+	From Petr Salinger <Petr.Salinger@seznam.cz>.
+
 	* ar.c (do_oper_extract): Use pathconf instead of statfs.
 
 2009-08-01  Ulrich Drepper  <drepper@redhat.com>
@@ -1763,6 +1771,8 @@
 	* readelf.c (print_debug_frame_section): Use t instead of j formats
 	for ptrdiff_t OFFSET.
 
+	* addr2line.c (handle_address): Use %a instead of %m for compatibility.
+
 2009-01-21  Ulrich Drepper  <drepper@redhat.com>
 
 	* elflint.c (check_program_header): Fix typo in .eh_frame_hdr section
@@ -1946,6 +1956,11 @@
 	that matches its PT_LOAD's p_flags &~ PF_W.  On sparc, PF_X really
 	is valid in RELRO.
 
+2008-03-01  Roland McGrath  <roland@redhat.com>
+
+	* readelf.c (dump_archive_index): Tweak portability hack
+	to match [__GNUC__ < 4] too.
+
 2008-02-29  Roland McGrath  <roland@redhat.com>
 
 	* readelf.c (print_attributes): Add a cast.
@@ -2197,6 +2212,8 @@
 
 	* readelf.c (hex_dump): Fix rounding error in whitespace calculation.
 
+	* Makefile.am (readelf_no_Werror): New variable.
+
 2007-10-15  Roland McGrath  <roland@redhat.com>
 
 	* make-debug-archive.in: New file.
@@ -2636,6 +2653,10 @@
 	* elflint.c (valid_e_machine): Add EM_ALPHA.
 	Reported by Christian Aichinger <Greek0@gmx.net>.
 
+	* strings.c (map_file): Define POSIX_MADV_SEQUENTIAL to
+	MADV_SEQUENTIAL if undefined.  	Don't call posix_madvise
+	if neither is defined.
+
 2006-08-08  Ulrich Drepper  <drepper@redhat.com>
 
 	* elflint.c (check_dynamic): Don't require DT_HASH for DT_SYMTAB.
@@ -2712,6 +2733,10 @@
 	* Makefile.am: Add hacks to create dependency files for non-generic
 	linker.
 
+2006-04-05  Roland McGrath  <roland@redhat.com>
+
+	* strings.c (MAP_POPULATE): Define to 0 if undefined.
+
 2006-06-12  Ulrich Drepper  <drepper@redhat.com>
 
 	* ldgeneric.c (ld_generic_generate_sections): Don't create .interp
@@ -3060,6 +3085,11 @@
 	* readelf.c (print_debug_loc_section): Fix indentation for larger
 	address size.
 
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 2005-05-30  Roland McGrath  <roland@redhat.com>
 
 	* readelf.c (print_debug_line_section): Print section offset of each
diff --git a/src/Makefile.am b/src/Makefile.am
index dbac3eb..9028aa1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -90,6 +90,11 @@ endif
 ldgeneric_no_Wunused = yes
 ldgeneric_no_Wstack_usage = yes
 
+# Buggy old compilers or libc headers.
+readelf_no_Werror = yes
+strings_no_Werror = yes
+addr2line_no_Wformat = yes
+
 # Bad, bad stack usage...
 readelf_no_Wstack_usage = yes
 nm_no_Wstack_usage = yes
diff --git a/src/addr2line.c b/src/addr2line.c
index 0ce854f..d2d0c8c 100644
--- a/src/addr2line.c
+++ b/src/addr2line.c
@@ -622,10 +622,10 @@ handle_address (const char *string, Dwfl *dwfl)
       bool parsed = false;
       int i, j;
       char *name = NULL;
-      if (sscanf (string, "(%m[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
+      if (sscanf (string, "(%a[^)])%" PRIiMAX "%n", &name, &addr, &i) == 2
 	  && string[i] == '\0')
 	parsed = adjust_to_section (name, &addr, dwfl);
-      switch (sscanf (string, "%m[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
+      switch (sscanf (string, "%a[^-+]%n%" PRIiMAX "%n", &name, &i, &addr, &j))
 	{
 	default:
 	  break;
diff --git a/src/findtextrel.c b/src/findtextrel.c
index 264a06b..d7de202 100644
--- a/src/findtextrel.c
+++ b/src/findtextrel.c
@@ -502,7 +502,11 @@ ptrcompare (const void *p1, const void *p2)
 
 
 static void
-check_rel (size_t nsegments, struct segments segments[nsegments],
+check_rel (size_t nsegments, struct segments segments[
+#if __GNUC__ >= 4
+						      nsegments
+#endif
+	   ],
 	   GElf_Addr addr, Elf *elf, Elf_Scn *symscn, Dwarf *dw,
 	   const char *fname, bool more_than_one, void **knownsrcs)
 {
diff --git a/src/ld.h b/src/ld.h
index 29f4031..8695c31 100644
--- a/src/ld.h
+++ b/src/ld.h
@@ -1114,6 +1114,7 @@ extern bool dynamically_linked_p (void);
 
 /* Checked whether the symbol is undefined and referenced from a DSO.  */
 extern bool linked_from_dso_p (struct scninfo *scninfo, size_t symidx);
+#if defined __OPTIMIZE__ && !(__GNUC__ == 4 && __GNUC_MINOR__ == 2)
 #ifdef __GNUC_STDC_INLINE__
 __attribute__ ((__gnu_inline__))
 #endif
@@ -1131,5 +1132,6 @@ linked_from_dso_p (struct scninfo *scninfo, size_t symidx)
 
   return sym->defined && sym->in_dso;
 }
+#endif	/* Optimizing and not GCC 4.2.  */
 
 #endif	/* ld.h */
diff --git a/src/readelf.c b/src/readelf.c
index b4cb3a8..606d220 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -4364,10 +4364,12 @@ listptr_base (struct listptr *p)
   return base;
 }
 
+static const char *listptr_name;
+
 static int
-compare_listptr (const void *a, const void *b, void *arg)
+compare_listptr (const void *a, const void *b)
 {
-  const char *name = arg;
+  const char *const name = listptr_name;
   struct listptr *p1 = (void *) a;
   struct listptr *p2 = (void *) b;
 
@@ -4463,8 +4465,11 @@ static void
 sort_listptr (struct listptr_table *table, const char *name)
 {
   if (table->n > 0)
-    qsort_r (table->table, table->n, sizeof table->table[0],
-	     &compare_listptr, (void *) name);
+    {
+      listptr_name = name;
+      qsort (table->table, table->n, sizeof table->table[0],
+	     &compare_listptr);
+    }
 }
 
 static bool
@@ -9561,7 +9566,7 @@ dump_archive_index (Elf *elf, const char *fname)
 	  if (unlikely (elf_rand (elf, as_off) == 0)
 	      || unlikely ((subelf = elf_begin (-1, ELF_C_READ_MMAP, elf))
 			   == NULL))
-#if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 7)
+#if __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 7) || __GNUC__ < 4
 	    while (1)
 #endif
 	      error (EXIT_FAILURE, 0,
diff --git a/src/strings.c b/src/strings.c
index b2bce7b..fe0ab6c 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -43,6 +43,10 @@
 
 #include <system.h>
 
+#ifndef MAP_POPULATE
+# define MAP_POPULATE 0
+#endif
+
 
 /* Prototypes of local functions.  */
 static int read_fd (int fd, const char *fname, off64_t fdlen);
@@ -489,8 +493,13 @@ map_file (int fd, off64_t start_off, off64_t fdlen, size_t *map_sizep)
 		    fd, start_off);
       if (mem != MAP_FAILED)
 	{
+#if !defined POSIX_MADV_SEQUENTIAL && defined MADV_SEQUENTIAL
+# define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
+#endif
+#ifdef POSIX_MADV_SEQUENTIAL
 	  /* We will go through the mapping sequentially.  */
 	  (void) posix_madvise (mem, map_size, POSIX_MADV_SEQUENTIAL);
+#endif
 	  break;
 	}
       if (errno != EINVAL && errno != ENOMEM)
@@ -581,9 +590,11 @@ read_block (int fd, const char *fname, off64_t fdlen, off64_t from, off64_t to)
       elfmap_off = from & ~(ps - 1);
       elfmap_base = elfmap = map_file (fd, elfmap_off, fdlen, &elfmap_size);
 
+#ifdef POSIX_FADV_SEQUENTIAL
       if (unlikely (elfmap == MAP_FAILED))
 	/* Let the kernel know we are going to read everything in sequence.  */
 	(void) posix_fadvise (fd, 0, 0, POSIX_FADV_SEQUENTIAL);
+#endif
     }
 
   if (unlikely (elfmap == MAP_FAILED))
diff --git a/src/strip.c b/src/strip.c
index 5e69334..8bd1790 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -44,6 +44,12 @@
 #include <libebl.h>
 #include <system.h>
 
+#ifdef HAVE_FUTIMES
+# define FUTIMES(fd, fname, tvp) futimes (fd, tvp)
+#else
+# define FUTIMES(fd, fname, tvp) utimes (fname, tvp)
+#endif
+
 typedef uint8_t GElf_Byte;
 
 /* Name and version of program.  */
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 19878ac..6815028 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -609,6 +609,13 @@
 
 2013-12-02  Jan Kratochvil  <jan.kratochvil@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@redhat.com>
+
 	* Makefile.am (check_PROGRAMS): Add backtrace, backtrace-child,
 	backtrace-data and backtrace-dwarf.
 	(BUILT_SOURCES, clean-local, backtrace-child-biarch): New.
@@ -1473,6 +1480,8 @@
 
 2008-01-21  Roland McGrath  <roland@redhat.com>
 
+	* line2addr.c (main): Revert last change.
+
 	* testfile45.S.bz2: Add tests for cltq, cqto.
 	* testfile45.expect.bz2: Adjust.
 
@@ -2181,6 +2190,11 @@
 	* Makefile.am (TESTS): Add run-elflint-test.sh.
 	(EXTRA_DIST): Add run-elflint-test.sh and testfile18.bz2.
 
+2005-05-31  Roland McGrath  <roland@redhat.com>
+
+	* Makefile.am (WEXTRA): New variable, substituted by configure.
+	(AM_CFLAGS): Use it in place of -Wextra.
+
 2005-05-24  Ulrich Drepper  <drepper@redhat.com>
 
 	* get-files.c (main): Use correct format specifier.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 425f8cd..69760a4 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -382,6 +382,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) $(argp_LDADD)
 addrscopes_LDADD = $(libdw) $(argp_LDADD)
 funcscopes_LDADD = $(libdw) $(argp_LDADD)
diff --git a/tests/backtrace.c b/tests/backtrace.c
index abd56ab..6a7c661 100644
--- a/tests/backtrace.c
+++ b/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__
diff --git a/tests/line2addr.c b/tests/line2addr.c
index e0d65d3..7c171b9 100644
--- a/tests/line2addr.c
+++ b/tests/line2addr.c
@@ -124,7 +124,7 @@ main (int argc, char *argv[])
     {
       struct args a = { .arg = argv[cnt] };
 
-      switch (sscanf (a.arg, "%m[^:]:%d", &a.file, &a.line))
+      switch (sscanf (a.arg, "%a[^:]:%d", &a.file, &a.line))
 	{
 	default:
 	case 0:
