diff -Nru elfutils-0.166/debian/changelog elfutils-0.167/debian/changelog
--- elfutils-0.166/debian/changelog	2016-10-18 07:13:34.000000000 +0000
+++ elfutils-0.167/debian/changelog	2016-11-30 12:17:52.050276511 +0000
@@ -1,3 +1,9 @@
+elfutils (0.167-1) unstable; urgency=medium
+
+  * New upstream.
+
+ -- John Ogness <john.ogness@linutronix.de>  Wed, 30 Nov 2016 13:04:21 +0100
+
 elfutils (0.166-2.2) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru elfutils-0.166/debian/libdw1.symbols elfutils-0.167/debian/libdw1.symbols
--- elfutils-0.166/debian/libdw1.symbols	2016-01-11 20:45:33.000000000 +0000
+++ elfutils-0.167/debian/libdw1.symbols	2016-11-30 12:17:52.050276511 +0000
@@ -18,4 +18,5 @@
  *@ELFUTILS_0.160 0.160
  *@ELFUTILS_0.161 0.161
  *@ELFUTILS_0.165 0.165
+ *@ELFUTILS_0.167 0.167
  *@ELFUTILS_0 0.126
diff -Nru elfutils-0.166/debian/patches/hppa_backend.diff elfutils-0.167/debian/patches/hppa_backend.diff
--- elfutils-0.166/debian/patches/hppa_backend.diff	2015-12-26 20:35:48.000000000 +0000
+++ elfutils-0.167/debian/patches/hppa_backend.diff	2016-11-30 12:17:52.050276511 +0000
@@ -722,28 +722,28 @@
 +extern int parisc_return_value_location_64(Dwarf_Die *, const Dwarf_Op **locp);
 +
 +#endif
-Index: elfutils-0.164/backends/Makefile.am
+Index: elfutils-0.167/backends/Makefile.am
 ===================================================================
---- elfutils-0.164.orig/backends/Makefile.am
-+++ elfutils-0.164/backends/Makefile.am
-@@ -33,11 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
+--- elfutils-0.167.orig/backends/Makefile.am
++++ elfutils-0.167/backends/Makefile.am
+@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
  
  
  modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
--	  tilegx
-+	  tilegx parisc
+-	  tilegx m68k bpf
++	  tilegx m68k bpf parisc
  libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a    \
  	     libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a    \
  	     libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \
--	     libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a
-+	     libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
-+	     libebl_parisc_pic.a
+ 	     libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
+-	     libebl_m68k_pic.a libebl_bpf_pic.a
++	     libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a
  noinst_LIBRARIES = $(libebl_pic)
  noinst_DATA = $(libebl_pic:_pic.a=.so)
  
-@@ -111,6 +112,9 @@ tilegx_SRCS = tilegx_init.c tilegx_symbo
- libebl_tilegx_pic_a_SOURCES = $(tilegx_SRCS)
- am_libebl_tilegx_pic_a_OBJECTS = $(tilegx_SRCS:.c=.os)
+@@ -128,6 +128,9 @@ endif
+ libebl_bpf_pic_a_SOURCES = $(bpf_SRCS)
+ am_libebl_bpf_pic_a_OBJECTS = $(bpf_SRCS:.c=.os)
  
 +parisc_SRCS = parisc_init.c parisc_symbol.c parisc_regs.c parisc_retval.c
 +libebl_parisc_pic_a_SOURCES = $(parisc_SRCS)
diff -Nru elfutils-0.166/debian/patches/mips_backend.diff elfutils-0.167/debian/patches/mips_backend.diff
--- elfutils-0.166/debian/patches/mips_backend.diff	2015-12-26 20:40:19.000000000 +0000
+++ elfutils-0.167/debian/patches/mips_backend.diff	2016-11-30 12:17:52.054276472 +0000
@@ -650,55 +650,28 @@
 +  { "mips", "elf_mipsel", "mipsel", 4, EM_MIPS_RS3_LE, 0, 0 },
  
    { "m32", "elf_m32", "m32", 3, EM_M32, 0, 0 },
-   { "m68k", "elf_m68k", "m68k", 4, EM_68K, 0, 0 },
-Index: elfutils-0.164/backends/common-reloc.c
+   { "m68k", "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB },
+Index: elfutils-0.167/backends/Makefile.am
 ===================================================================
---- elfutils-0.164.orig/backends/common-reloc.c
-+++ elfutils-0.164/backends/common-reloc.c
-@@ -125,11 +125,13 @@ EBLHOOK(reloc_valid_use) (Elf *elf, int
- }
- 
- 
-+#ifndef NO_COPY_RELOC
- bool
- EBLHOOK(copy_reloc_p) (int reloc)
- {
-   return reloc == R_TYPE (COPY);
- }
-+#endif
- 
- bool
- EBLHOOK(none_reloc_p) (int reloc)
-@@ -151,7 +153,9 @@ EBLHOOK(init_reloc) (Ebl *ebl)
-   ebl->reloc_type_name = EBLHOOK(reloc_type_name);
-   ebl->reloc_type_check = EBLHOOK(reloc_type_check);
-   ebl->reloc_valid_use = EBLHOOK(reloc_valid_use);
-+#ifndef NO_COPY_RELOC
-   ebl->copy_reloc_p = EBLHOOK(copy_reloc_p);
-+#endif
-   ebl->none_reloc_p = EBLHOOK(none_reloc_p);
- #ifndef NO_RELATIVE_RELOC
-   ebl->relative_reloc_p = EBLHOOK(relative_reloc_p);
-Index: elfutils-0.164/backends/Makefile.am
-===================================================================
---- elfutils-0.164.orig/backends/Makefile.am
-+++ elfutils-0.164/backends/Makefile.am
-@@ -33,12 +33,12 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
+--- elfutils-0.167.orig/backends/Makefile.am
++++ elfutils-0.167/backends/Makefile.am
+@@ -33,12 +33,13 @@ AM_CPPFLAGS += -I$(top_srcdir)/libebl -I
  
  
  modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
--	  tilegx parisc
-+	  tilegx parisc mips
+-	  tilegx m68k bpf parisc
++	  tilegx m68k bpf parisc mips
  libebl_pic = libebl_i386_pic.a libebl_sh_pic.a libebl_x86_64_pic.a    \
  	     libebl_ia64_pic.a libebl_alpha_pic.a libebl_arm_pic.a    \
  	     libebl_aarch64_pic.a libebl_sparc_pic.a libebl_ppc_pic.a \
  	     libebl_ppc64_pic.a libebl_s390_pic.a libebl_tilegx_pic.a \
--	     libebl_parisc_pic.a
-+	     libebl_parisc_pic.a libebl_mips_pic.a
+-	     libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a
++	     libebl_m68k_pic.a libebl_bpf_pic.a libebl_parisc_pic.a   \
++	     libebl_mips_pic.a
  noinst_LIBRARIES = $(libebl_pic)
  noinst_DATA = $(libebl_pic:_pic.a=.so)
  
-@@ -116,6 +116,10 @@ parisc_SRCS = parisc_init.c parisc_symbo
+@@ -132,6 +133,10 @@ parisc_SRCS = parisc_init.c parisc_symbo
  libebl_parisc_pic_a_SOURCES = $(parisc_SRCS)
  am_libebl_parisc_pic_a_OBJECTS = $(parisc_SRCS:.c=.os)
  
diff -Nru elfutils-0.166/debian/patches/series elfutils-0.167/debian/patches/series
--- elfutils-0.166/debian/patches/series	2016-10-18 07:13:34.000000000 +0000
+++ elfutils-0.167/debian/patches/series	2016-11-30 12:17:52.054276472 +0000
@@ -1,7 +1,7 @@
 hppa_backend.diff
 arm_backend.diff
 mips_backend.diff
-m68k_backend.diff
+# m68k_backend.diff
 testsuite-ignore-elflint.diff
 mips_readelf_w.patch
 kfreebsd_path.patch
@@ -10,4 +10,3 @@
 0003-Add-mips-n64-relocation-format-hack.patch
 hurd_path.patch
 ignore_strmerge.diff
-testsuite-amd64-fix-backtrace-native.patch
diff -Nru elfutils-0.166/debian/patches/testsuite-amd64-fix-backtrace-native.patch elfutils-0.167/debian/patches/testsuite-amd64-fix-backtrace-native.patch
--- elfutils-0.166/debian/patches/testsuite-amd64-fix-backtrace-native.patch	2016-10-18 07:13:34.000000000 +0000
+++ elfutils-0.167/debian/patches/testsuite-amd64-fix-backtrace-native.patch	1970-01-01 00:00:00.000000000 +0000
@@ -1,220 +0,0 @@
-From 9008499a5276c45b37bc0adb47e7ad227e6ba2a9 Mon Sep 17 00:00:00 2001
-From: Mark Wielaard <mjw@redhat.com>
-Date: Thu, 25 Aug 2016 17:17:23 +0200
-Subject: [PATCH 1/1] tests: Simplify backtrace-native tests. Drop raise jmp
- patching for x86_64.
-
-The backtrace-native[-biarch] testcase was a little too clever in places
-making it unreliable.
-
-On x86_64 we tried to make an interesting backtrace by catching the
-first signal and then replacing the pc with the address of the first
-instruction of a function. Then we would raise a new signal, through
-ptrace, to create a backtrace that went from a signal frame into a
-frame at the start of a function. That way we could check that we were
-trying to fetch the correct CFI for the (jmp) function even at the
-first instruction (normally we would substract one from the return
-address to get at the call address).
-
-This works as long as the CFI for the jmp() function is identical to
-the CFI for the raise() function that we "patched away". Unfortunately
-on Fedora rawhide glibc has a rewritten raise() implementation that has
-different CFI, in particular the CFA is calculated differently. Making
-the testcase fail because we cannot properly unwind from jmp().
-So this special x86_64 case has been disabled (the code is still there
-in case we find another way to test this in a more reliable way).
-
-On Ubuntu there have been spurious testcase failures because
-see_exec_module found two Dwfl_Modules with the same path. This would
-trigger an assert. Although this might indicate some issue (maybe we
-are not parsing the proc/pid/map correctly?) it isn't clear that it
-really is a bug. Since the assert is not very helpful finding any
-actual bug and for the testcase it is only necessary that the first
-Dwfl_Module that represents the executable is found we just pick that
-Dwfl_Module and don't iterate through any of the others.
-
-Signed-off-by: Mark Wielaard <mjw@redhat.com>
----
- tests/backtrace-child.c | 18 ++++++++++++++----
- tests/backtrace.c       | 39 +++++++++++++++++++++------------------
- 3 files changed, 51 insertions(+), 22 deletions(-)
-
-diff --git a/tests/backtrace-child.c b/tests/backtrace-child.c
-index 40e7b32..cf4547c 100644
---- a/tests/backtrace-child.c
-+++ b/tests/backtrace-child.c
-@@ -1,5 +1,5 @@
- /* Test child for parent backtrace test.
--   Copyright (C) 2013 Red Hat, Inc.
-+   Copyright (C) 2013, 2016 Red Hat, Inc.
-    This file is part of elfutils.
- 
-    This file is free software; you can redistribute it and/or modify
-@@ -19,7 +19,8 @@
-    --ptraceme will call ptrace (PTRACE_TRACEME) in the two threads.
-    --gencore will call abort () at its end.
-    Main thread will signal SIGUSR2.  Other thread will signal SIGUSR1.
--   On x86_64 only:
-+   There used to be a difference between x86_64 and other architectures.
-+   To test getting a signal at the very first instruction of a function:
-      PC will get changed to function 'jmp' by backtrace.c function
-      prepare_thread.  Then SIGUSR2 will be signalled to backtrace-child
-      which will invoke function sigusr2.
-@@ -66,8 +67,17 @@
-    # 5 0xf77c1a48 - 1      start
-    # 6 0xf77699da - 1      start_thread
-    # 7 0xf769bbfe - 1      __clone
-+
-+   But the raise jmp patching was unreliable. It depends on the CFI for the raise()
-+   function in glibc to be the same as for the jmp() function. This is not always
-+   the case. Some newer glibc versions rewrote raise() and now the CFA is calculated
-+   differently. So we disable raise jmp patching everywhere.
-    */
- 
-+#ifdef __x86_64__
-+/* #define RAISE_JMP_PATCHING 1 */
-+#endif
-+
- #include <config.h>
- #include <assert.h>
- #include <stdlib.h>
-@@ -130,7 +140,7 @@ dummy1 (void)
-   asm volatile ("");
- }
- 
--#ifdef __x86_64__
-+#ifdef RAISE_JMP_PATCHING
- static NOINLINE_NOCLONE USED void
- jmp (void)
- {
-@@ -157,7 +167,7 @@ stdarg (int f UNUSED, ...)
-       assert (errno == 0);
-       assert (l == 0);
-     }
--#ifdef __x86_64__
-+#ifdef RAISE_JMP_PATCHING
-   if (! gencore)
-     {
-       /* Execution will get PC patched into function jmp.  */
-diff --git a/tests/backtrace.c b/tests/backtrace.c
-index 1247643..2440ab3 100644
---- a/tests/backtrace.c
-+++ b/tests/backtrace.c
-@@ -1,5 +1,5 @@
- /* Test program for unwinding of frames.
--   Copyright (C) 2013, 2014 Red Hat, Inc.
-+   Copyright (C) 2013, 2014, 2016 Red Hat, Inc.
-    This file is part of elfutils.
- 
-    This file is free software; you can redistribute it and/or modify
-@@ -64,7 +64,7 @@ dump_modules (Dwfl_Module *mod, void **userdata __attribute__ ((unused)),
-   return DWARF_CB_OK;
- }
- 
--static bool is_x86_64_native;
-+static bool use_raise_jmp_patching;
- static pid_t check_tid;
- 
- static void
-@@ -93,7 +93,7 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc,
-   static bool reduce_frameno = false;
-   if (reduce_frameno)
-     frameno--;
--  if (! is_x86_64_native && frameno >= 2)
-+  if (! use_raise_jmp_patching && frameno >= 2)
-     frameno += 2;
-   const char *symname2 = NULL;
-   switch (frameno)
-@@ -112,8 +112,8 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc,
-     case 2: // x86_64 only
-       /* __restore_rt - glibc maybe does not have to have this symbol.  */
-       break;
--    case 3: // x86_64 only
--      if (is_x86_64_native)
-+    case 3: // use_raise_jmp_patching
-+      if (use_raise_jmp_patching)
- 	{
- 	  /* Verify we trapped on the very first instruction of jmp.  */
- 	  assert (symname != NULL && strcmp (symname, "jmp") == 0);
-@@ -138,7 +138,7 @@ callback_verify (pid_t tid, unsigned frameno, Dwarf_Addr pc,
-       // there is no guarantee that the compiler doesn't reorder the
-       // instructions or even inserts some padding instructions at the end
-       // (which apparently happens on ppc64).
--      if (is_x86_64_native)
-+      if (use_raise_jmp_patching)
-         assert (symname2 == NULL || strcmp (symname2, "backtracegen") != 0);
-       break;
-   }
-@@ -243,10 +243,10 @@ see_exec_module (Dwfl_Module *mod, void **userdata __attribute__ ((unused)),
-     return DWARF_CB_OK;
-   assert (data->mod == NULL);
-   data->mod = mod;
--  return DWARF_CB_OK;
-+  return DWARF_CB_ABORT;
- }
- 
--/* On x86_64 only:
-+/* We used to do this on x86_64 only (see backtrace-child why we now don't):
-      PC will get changed to function 'jmp' by backtrace.c function
-      prepare_thread.  Then SIGUSR2 will be signalled to backtrace-child
-      which will invoke function sigusr2.
-@@ -254,13 +254,17 @@ see_exec_module (Dwfl_Module *mod, void **userdata __attribute__ ((unused)),
-      instruction of a function.  Properly handled unwind should not slip into
-      the previous unrelated function.  */
- 
-+#ifdef __x86_64__
-+/* #define RAISE_JMP_PATCHING 1 */
-+#endif
-+
- static void
- prepare_thread (pid_t pid2 __attribute__ ((unused)),
- 		void (*jmp) (void) __attribute__ ((unused)))
- {
--#ifndef __x86_64__
-+#ifndef RAISE_JMP_PATCHING
-   abort ();
--#else /* x86_64 */
-+#else /* RAISE_JMP_PATCHING */
-   long l;
-   struct user_regs_struct user_regs;
-   errno = 0;
-@@ -278,7 +282,7 @@ prepare_thread (pid_t pid2 __attribute__ ((unused)),
-   assert (got == pid2);
-   assert (WIFSTOPPED (status));
-   assert (WSTOPSIG (status) == SIGUSR1);
--#endif /* __x86_64__ */
-+#endif /* RAISE_JMP_PATCHING */
- }
- 
- #include <asm/unistd.h>
-@@ -370,21 +374,20 @@ exec_dump (const char *exec)
-   assert (ssize > 0 && ssize < (ssize_t) sizeof (data.selfpath));
-   data.selfpath[ssize] = '\0';
-   data.mod = NULL;
--  ptrdiff_t ptrdiff = dwfl_getmodules (dwfl, see_exec_module, &data, 0);
--  assert (ptrdiff == 0);
-+  dwfl_getmodules (dwfl, see_exec_module, &data, 0);
-   assert (data.mod != NULL);
-   GElf_Addr loadbase;
-   Elf *elf = dwfl_module_getelf (data.mod, &loadbase);
-   GElf_Ehdr ehdr_mem, *ehdr = gelf_getehdr (elf, &ehdr_mem);
-   assert (ehdr != NULL);
-   /* It is false also on x86_64 with i386 inferior.  */
--#ifndef __x86_64__
--  is_x86_64_native = false;
--#else /* __x86_64__ */
--  is_x86_64_native = ehdr->e_machine == EM_X86_64;
-+#ifndef RAISE_JMP_PATCHING
-+  use_raise_jmp_patching = false;
-+#else /* RAISE_JMP_PATCHING_ */
-+  use_raise_jmp_patching = ehdr->e_machine == EM_X86_64;
- #endif /* __x86_64__ */
-   void (*jmp) (void) = 0;
--  if (is_x86_64_native)
-+  if (use_raise_jmp_patching)
-     {
-       // Find inferior symbol named "jmp".
-       int nsym = dwfl_module_getsymtab (data.mod);
--- 
-2.9.3
-
