Merge "Snap for 7110675 from 59c736f9a99486f3bf29cbdae4a3845cd4e6ac3c to sdk-release" into sdk-release
diff --git a/.gitignore b/.gitignore
index c979094..d737b14 100644
--- a/.gitignore
+++ b/.gitignore
@@ -151,6 +151,7 @@
 /tests/get-units-invalid
 /tests/get-units-split
 /tests/hash
+/tests/leb128
 /tests/line2addr
 /tests/low_high_pc
 /tests/msg_tst
diff --git a/Android.bp b/Android.bp
index 2602e1f..1afacc2 100644
--- a/Android.bp
+++ b/Android.bp
@@ -33,6 +33,8 @@
     visibility: [
         "//external/dwarves:__subpackages__",
         "//external/elfutils:__subpackages__",
+        "//external/libabigail:__subpackages__",
+        "//external/libbpf:__subpackages__",
     ],
 }
 
@@ -113,6 +115,7 @@
         // Do not enabled compression support
         "libdwfl/bzip2.c",
         "libdwfl/lzma.c",
+        "libdwfl/zstd.c",
         // Those headers are incompatible with clang due to nested function
         // definitions.
         "libdwfl/dwfl_segment_report_module.c",
diff --git a/ChangeLog b/ChangeLog
index 094a798..128da6c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,21 @@
+2020-10-28  Mark Wielaard  <mark@klomp.org>
+
+	* configure.ac: Set version to 0.182.
+	* NEWS: Add 0.182 section.
+
+2020-10-28  Tom Tromey  <tom@tromey.com>
+
+	* .gitignore: Add /tests/leb128.
+
+2020-10-01  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR25461
+	* configure.ac: Add --enable-debuginfod-urls[=URLS] option.
+
+2020-09-18  Mark Wielaard  <mark@klomp.org>
+
+	* configure.ac: Check availability of libzstd and zstd.
+
 2020-09-08  Mark Wielaard  <mark@klomp.org>
 
 	* configure.ac: Set version to 0.181.
diff --git a/METADATA b/METADATA
index cfb5987..0bc2da6 100644
--- a/METADATA
+++ b/METADATA
@@ -1,3 +1,6 @@
+# *** THIS PACKAGE HAS SPECIAL LICENSING CONDITIONS.  PLEASE
+#     CONSULT THE OWNERS AND opensource-licensing@google.com BEFORE
+#     DEPENDING ON IT IN YOUR PROJECT. ***
 name: "elfutils"
 description: "elfutils is a collection of utilities and libraries to read, create and modify ELF binary files, find and handle DWARF debug data, symbols, thread state and stacktraces for processes and core files on GNU/Linux."
 third_party {
@@ -9,11 +12,12 @@
     type: GIT
     value: "git://sourceware.org/git/elfutils.git"
   }
-  version: "elfutils-0.181"
-  license_type: RESTRICTED
+  version: "elfutils-0.182"
+  # would be RESTRICTED save for doc/COPYING-GFDL
+  license_type: BY_EXCEPTION_ONLY
   last_upgrade_date {
     year: 2020
-    month: 9
-    day: 23
+    month: 11
+    day: 2
   }
 }
diff --git a/NEWS b/NEWS
index 1bdb441..4e94f1c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,17 @@
+Version 0.182
+
+backends: Support for tilegx has been removed.
+
+config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS.
+
+debuginfod: More efficient package traversal, tolerate various errors
+            during scanning, grooming progress is more visible and
+            interruptible, more prometheus metrics.
+
+debuginfod-client: Now supports compressed (kernel) ELF images.
+
+libdwfl: Add ZSTD compression support.
+
 Version 0.181
 
 libelf: elf_update now compensates (fixes up) a bad sh_addralign for
diff --git a/backends/ChangeLog b/backends/ChangeLog
index ce4c971..81d4127 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,27 @@
+2020-10-19  Mark Wielard  <mark@klomp.org>
+
+	* Makefile.am (modules): Remove tilegx.
+	(tilegx_SRCS): Removed.
+	(libebl_backends_a_SOURCES): Remove tilegx_SRCS.
+	* tilegx_corenote.c: Removed.
+	* tilegx_init.c: Removed.
+	* tilegx_regs.c: Removed.
+	* tilegx_reloc.def: Removed.
+	* tilegx_retval.c: Removed.
+	* tilegx_symbol.c: Removed.
+
+2020-10-19  Mark Wielard  <mark@klomp.org>
+
+	* Makefile.am (i386_SRCS): Remove i386_syscall.c.
+	(x86_64_SRCS): Remove x86_64_syscall.c.
+	(ppc_SRCS): Remove ppc_syscall.c.
+	* i386_init.c (i386_init): Remove syscall_abi HOOK.
+	* i386_syscall.c: Delete.
+	* ppc64_init.c (ppc64_init): Remove syscall_abi HOOK.
+	* ppc_syscall.c: Delete.
+	* x86_64_init.c (x86_64_init): Remove syscall_abi HOOK.
+	* x86_64_syscall.c: Delete.
+
 2020-08-28  Mark Wielard  <mark@klomp.org>
 
 	* aarch64_init.c (aarch64_init): Hook dynamic_tag_name and
diff --git a/backends/Makefile.am b/backends/Makefile.am
index f405212..62916c9 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -37,16 +37,16 @@
 noinst_LIBRARIES = libebl_backends.a libebl_backends_pic.a
 
 modules = i386 sh x86_64 ia64 alpha arm aarch64 sparc ppc ppc64 s390 \
-	  tilegx m68k bpf riscv csky
+	  m68k bpf riscv csky
 
 i386_SRCS = i386_init.c i386_symbol.c i386_corenote.c i386_cfi.c \
-	    i386_retval.c i386_regs.c i386_auxv.c i386_syscall.c \
+	    i386_retval.c i386_regs.c i386_auxv.c \
 	    i386_initreg.c i386_unwind.c
 
 sh_SRCS = sh_init.c sh_symbol.c sh_corenote.c sh_regs.c sh_retval.c
 
 x86_64_SRCS = x86_64_init.c x86_64_symbol.c x86_64_corenote.c x86_64_cfi.c \
-	      x86_64_retval.c x86_64_regs.c x86_64_syscall.c x86_64_initreg.c \
+	      x86_64_retval.c x86_64_regs.c x86_64_initreg.c \
 	      x86_64_unwind.c x32_corenote.c
 
 
@@ -67,7 +67,7 @@
              sparc_cfi.c sparc_initreg.c
 
 ppc_SRCS = ppc_init.c ppc_symbol.c ppc_retval.c ppc_regs.c \
-	   ppc_corenote.c ppc_auxv.c ppc_attrs.c ppc_syscall.c \
+	   ppc_corenote.c ppc_auxv.c ppc_attrs.c \
 	   ppc_cfi.c ppc_initreg.c
 
 ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c ppc64_corenote.c \
@@ -77,9 +77,6 @@
 	    s390_corenote.c s390x_corenote.c s390_cfi.c s390_initreg.c \
 	    s390_unwind.c
 
-tilegx_SRCS = tilegx_init.c tilegx_symbol.c tilegx_regs.c \
-              tilegx_retval.c tilegx_corenote.c
-
 m68k_SRCS = m68k_init.c m68k_symbol.c m68k_regs.c \
 	    m68k_retval.c m68k_corenote.c m68k_cfi.c m68k_initreg.c
 
@@ -101,7 +98,7 @@
 libebl_backends_a_SOURCES = $(i386_SRCS) $(sh_SRCS) $(x86_64_SRCS) \
 			    $(ia64_SRCS) $(alpha_SRCS) $(arm_SRCS) \
 			    $(aarch64_SRCS) $(sparc_SRCS) $(ppc_SRCS) \
-			    $(ppc64_SRCS) $(s390_SRCS) $(tilegx_SRCS) \
+			    $(ppc64_SRCS) $(s390_SRCS) \
 			    $(m68k_SRCS) $(bpf_SRCS) $(riscv_SRCS) $(csky_SRCS)
 
 libebl_backends_pic_a_SOURCES =
diff --git a/backends/i386_init.c b/backends/i386_init.c
index 3f6b9ed..579e5fa 100644
--- a/backends/i386_init.c
+++ b/backends/i386_init.c
@@ -52,7 +52,6 @@
   HOOK (eh, debugscn_p);
   HOOK (eh, return_value_location);
   HOOK (eh, register_info);
-  HOOK (eh, syscall_abi);
   HOOK (eh, auxv_info);
   HOOK (eh, disasm);
   HOOK (eh, abi_cfi);
diff --git a/backends/i386_syscall.c b/backends/i386_syscall.c
deleted file mode 100644
index 535dcd8..0000000
--- a/backends/i386_syscall.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Linux/i386 system call ABI in DWARF register numbers.
-   Copyright (C) 2008 Red Hat, Inc.
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND i386_
-#include "libebl_CPU.h"
-
-int
-i386_syscall_abi (Ebl *ebl __attribute__ ((unused)),
-		  int *sp, int *pc, int *callno, int args[6])
-{
-  *sp = 4;			/* %esp */
-  *pc = 8;			/* %eip */
-  *callno = 0;			/* %eax */
-  args[0] = 3;			/* %ebx */
-  args[1] = 1;			/* %ecx */
-  args[2] = 2;			/* %edx */
-  args[3] = 6;			/* %esi */
-  args[4] = 7;			/* %edi */
-  args[5] = 5;			/* %ebp */
-  return 0;
-}
diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c
index f509aef..ffc9842 100644
--- a/backends/ppc64_init.c
+++ b/backends/ppc64_init.c
@@ -58,7 +58,6 @@
   HOOK (eh, bss_plt_p);
   HOOK (eh, return_value_location);
   HOOK (eh, register_info);
-  HOOK (eh, syscall_abi);
   HOOK (eh, core_note);
   HOOK (eh, auxv_info);
   HOOK (eh, check_object_attribute);
diff --git a/backends/ppc_init.c b/backends/ppc_init.c
index ac440ab..08468f8 100644
--- a/backends/ppc_init.c
+++ b/backends/ppc_init.c
@@ -54,7 +54,6 @@
   HOOK (eh, bss_plt_p);
   HOOK (eh, return_value_location);
   HOOK (eh, register_info);
-  HOOK (eh, syscall_abi);
   HOOK (eh, core_note);
   HOOK (eh, auxv_info);
   HOOK (eh, check_object_attribute);
diff --git a/backends/ppc_syscall.c b/backends/ppc_syscall.c
deleted file mode 100644
index b1b9c52..0000000
--- a/backends/ppc_syscall.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Linux/PPC system call ABI in DWARF register numbers.
-   Copyright (C) 2008 Red Hat, Inc.
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND ppc_
-#include "libebl_CPU.h"
-
-int
-ppc_syscall_abi (Ebl *ebl __attribute__ ((unused)),
-		 int *sp, int *pc, int *callno, int args[6])
-{
-  *sp = 1;
-  *pc = -1;
-  *callno = 0;
-  args[0] = 3;
-  args[1] = 4;
-  args[2] = 5;
-  args[3] = 6;
-  args[4] = 7;
-  args[5] = 8;
-  return 0;
-}
-
-__typeof (ppc_syscall_abi)
-ppc64_syscall_abi __attribute__ ((alias ("ppc_syscall_abi")));
diff --git a/backends/tilegx_corenote.c b/backends/tilegx_corenote.c
deleted file mode 100644
index be3e7db..0000000
--- a/backends/tilegx_corenote.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* TILE-Gx specific core note handling.
-   Copyright (C) 2012 Tilera Corporation
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <elf.h>
-#include <inttypes.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <sys/time.h>
-
-#define BACKEND	tilegx_
-#include "libebl_CPU.h"
-
-static const Ebl_Register_Location prstatus_regs[] =
-  {
-    { .offset = 0, .regno = 0, .count = 56, .bits = 64 }, /* r0-r55 */
-    { .offset = 56 * 8, .regno = 64, .count = 1, .bits = 64 } /* pc */
-  };
-#define PRSTATUS_REGS_SIZE	(57 * 8)
-
-#define ULONG			uint64_t
-#define ALIGN_ULONG		8
-#define TYPE_ULONG		ELF_T_XWORD
-#define TYPE_LONG		ELF_T_SXWORD
-#define PID_T			int32_t
-#define	UID_T			uint32_t
-#define	GID_T			uint32_t
-#define ALIGN_PID_T		4
-#define ALIGN_UID_T		4
-#define ALIGN_GID_T		4
-#define TYPE_PID_T		ELF_T_SWORD
-#define TYPE_UID_T		ELF_T_WORD
-#define TYPE_GID_T		ELF_T_WORD
-
-#include "linux-core-note.c"
diff --git a/backends/tilegx_init.c b/backends/tilegx_init.c
deleted file mode 100644
index 0f79542..0000000
--- a/backends/tilegx_init.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Initialization of TILE-Gx specific backend library.
-   Copyright (C) 2012 Tilera Corporation
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND		tilegx_
-#define RELOC_PREFIX	R_TILEGX_
-#include "libebl_CPU.h"
-
-/* This defines the common reloc hooks based on tilegx_reloc.def.  */
-#include "common-reloc.c"
-
-Ebl *
-tilegx_init (Elf *elf __attribute__ ((unused)),
-	     GElf_Half machine __attribute__ ((unused)),
-	     Ebl *eh)
-{
-  /* We handle it.  */
-  tilegx_init_reloc (eh);
-  HOOK (eh, reloc_simple_type);
-  HOOK (eh, return_value_location);
-  HOOK (eh, register_info);
-  HOOK (eh, core_note);
-
-  return eh;
-}
diff --git a/backends/tilegx_regs.c b/backends/tilegx_regs.c
deleted file mode 100644
index b1e1743..0000000
--- a/backends/tilegx_regs.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* Register names and numbers for TILE-Gx DWARF.
-   Copyright (C) 2012 Tilera Corporation
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <stdio.h>
-#include <string.h>
-#include <dwarf.h>
-
-#define BACKEND tilegx_
-#include "libebl_CPU.h"
-
-ssize_t
-tilegx_register_info (Ebl *ebl __attribute__ ((unused)),
-		    int regno, char *name, size_t namelen,
-		    const char **prefix, const char **setname,
-		    int *bits, int *type)
-{
-  if (name == NULL)
-    return 65;
-
-  if (regno < 0 || regno > 64 || namelen < 5)
-    return -1;
-
-  *prefix = "";
-  *setname = "integer";
-  *bits = 64;
-
-  switch (regno)
-    {
-    case 0 ... 9:
-      *type = DW_ATE_signed;
-      name[0] = 'r';
-      name[1] = regno + '0';
-      namelen = 2;
-      break;
-
-    case 10 ... 52:
-      *type = DW_ATE_signed;
-      name[0] = 'r';
-      name[1] = regno / 10 + '0';
-      name[2] = regno % 10 + '0';
-      namelen = 3;
-      break;
-
-    case 53:
-      *type = DW_ATE_address;
-      return stpcpy (name, "tp") + 1 - name;
-
-    case 54:
-      *type = DW_ATE_address;
-      return stpcpy (name, "sp") + 1 - name;
-
-    case 55:
-      *type = DW_ATE_address;
-      return stpcpy (name, "lr") + 1 - name;
-
-    case 56:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "sn") + 1 - name;
-
-    case 57:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "idn0") + 1 - name;
-
-    case 58:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "idn1") + 1 - name;
-
-    case 59:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "udn0") + 1 - name;
-
-    case 60:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "udn1") + 1 - name;
-
-    case 61:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "udn2") + 1 - name;
-
-    case 62:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "udn3") + 1 - name;
-
-    case 63:
-      *type = DW_ATE_unsigned;
-      return stpcpy (name, "zero") + 1 - name;
-
-    case 64:
-      *type = DW_ATE_address;
-      return stpcpy (name, "pc") + 1 - name;
-
-    /* Can't happen.  */
-    default:
-      *setname = NULL;
-      return 0;
-    }
-
-  name[namelen++] = '\0';
-  return namelen;
-}
diff --git a/backends/tilegx_reloc.def b/backends/tilegx_reloc.def
deleted file mode 100644
index 1018110..0000000
--- a/backends/tilegx_reloc.def
+++ /dev/null
@@ -1,121 +0,0 @@
-/* List the relocation types for tilegx.  -*- C -*-
-   Copyright (C) 2012 Tilera Corporation
-   Copyright (C) 2015 Red Hat, Inc.
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-/*	    NAME,			REL|EXEC|DYN	*/
-
-RELOC_TYPE (NONE,			0)
-RELOC_TYPE (64,				REL|EXEC|DYN)
-RELOC_TYPE (32,				REL|EXEC|DYN)
-RELOC_TYPE (16,				REL|EXEC|DYN)
-RELOC_TYPE (8,				REL|EXEC|DYN)
-RELOC_TYPE (64_PCREL,			REL)
-RELOC_TYPE (32_PCREL,			REL)
-RELOC_TYPE (16_PCREL,			REL)
-RELOC_TYPE (8_PCREL,			REL)
-RELOC_TYPE (HW0,			REL)
-RELOC_TYPE (HW1,			REL)
-RELOC_TYPE (HW2,			REL)
-RELOC_TYPE (HW3,			REL)
-RELOC_TYPE (HW0_LAST,			REL)
-RELOC_TYPE (HW1_LAST,			REL)
-RELOC_TYPE (HW2_LAST,			REL)
-RELOC_TYPE (COPY,			EXEC|DYN)
-RELOC_TYPE (GLOB_DAT,			EXEC|DYN)
-RELOC_TYPE (JMP_SLOT,			EXEC|DYN)
-RELOC_TYPE (RELATIVE,			EXEC|DYN)
-RELOC_TYPE (BROFF_X1,			REL)
-RELOC_TYPE (JUMPOFF_X1,			REL)
-RELOC_TYPE (JUMPOFF_X1_PLT,		REL)
-RELOC_TYPE (IMM8_X0,			REL)
-RELOC_TYPE (IMM8_Y0,			REL)
-RELOC_TYPE (IMM8_X1,			REL)
-RELOC_TYPE (IMM8_Y1,			REL)
-RELOC_TYPE (DEST_IMM8_X1,		REL)
-RELOC_TYPE (MT_IMM14_X1,		REL)
-RELOC_TYPE (MF_IMM14_X1,		REL)
-RELOC_TYPE (MMSTART_X0,			REL)
-RELOC_TYPE (MMEND_X0,			REL)
-RELOC_TYPE (SHAMT_X0,			REL)
-RELOC_TYPE (SHAMT_X1,			REL)
-RELOC_TYPE (SHAMT_Y0,			REL)
-RELOC_TYPE (SHAMT_Y1,			REL)
-RELOC_TYPE (IMM16_X0_HW0,		REL)
-RELOC_TYPE (IMM16_X1_HW0,		REL)
-RELOC_TYPE (IMM16_X0_HW1,		REL)
-RELOC_TYPE (IMM16_X1_HW1,		REL)
-RELOC_TYPE (IMM16_X0_HW2,		REL)
-RELOC_TYPE (IMM16_X1_HW2,		REL)
-RELOC_TYPE (IMM16_X0_HW3,		REL)
-RELOC_TYPE (IMM16_X1_HW3,		REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST,		REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST,		REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST,		REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST,		REL)
-RELOC_TYPE (IMM16_X0_HW2_LAST,		REL)
-RELOC_TYPE (IMM16_X1_HW2_LAST,		REL)
-RELOC_TYPE (IMM16_X0_HW0_PCREL,		REL)
-RELOC_TYPE (IMM16_X1_HW0_PCREL,		REL)
-RELOC_TYPE (IMM16_X0_HW1_PCREL,		REL)
-RELOC_TYPE (IMM16_X1_HW1_PCREL,		REL)
-RELOC_TYPE (IMM16_X0_HW2_PCREL,		REL)
-RELOC_TYPE (IMM16_X1_HW2_PCREL,		REL)
-RELOC_TYPE (IMM16_X0_HW3_PCREL,		REL)
-RELOC_TYPE (IMM16_X1_HW3_PCREL,		REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_PCREL,	REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_PCREL,	REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_PCREL,	REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_PCREL,	REL)
-RELOC_TYPE (IMM16_X0_HW2_LAST_PCREL,	REL)
-RELOC_TYPE (IMM16_X1_HW2_LAST_PCREL,	REL)
-RELOC_TYPE (IMM16_X0_HW0_GOT,		REL)
-RELOC_TYPE (IMM16_X1_HW0_GOT,		REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_GOT,	REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_GOT,	REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_GOT,	REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_GOT,	REL)
-RELOC_TYPE (IMM16_X0_HW0_TLS_GD,	REL)
-RELOC_TYPE (IMM16_X1_HW0_TLS_GD,	REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_GD,	REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_GD,	REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_GD,	REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_GD,	REL)
-RELOC_TYPE (IMM16_X0_HW0_TLS_IE,	REL)
-RELOC_TYPE (IMM16_X1_HW0_TLS_IE,	REL)
-RELOC_TYPE (IMM16_X0_HW0_LAST_TLS_IE,	REL)
-RELOC_TYPE (IMM16_X1_HW0_LAST_TLS_IE,	REL)
-RELOC_TYPE (IMM16_X0_HW1_LAST_TLS_IE,	REL)
-RELOC_TYPE (IMM16_X1_HW1_LAST_TLS_IE,	REL)
-RELOC_TYPE (TLS_DTPMOD64,		EXEC|DYN)
-RELOC_TYPE (TLS_DTPOFF64,		EXEC|DYN)
-RELOC_TYPE (TLS_TPOFF64,		EXEC|DYN)
-RELOC_TYPE (TLS_DTPMOD32,		EXEC|DYN)
-RELOC_TYPE (TLS_DTPOFF32,		EXEC|DYN)
-RELOC_TYPE (TLS_TPOFF32,		EXEC|DYN)
-RELOC_TYPE (GNU_VTINHERIT,		REL)
-RELOC_TYPE (GNU_VTENTRY,		REL)
diff --git a/backends/tilegx_retval.c b/backends/tilegx_retval.c
deleted file mode 100644
index 7f7d24b..0000000
--- a/backends/tilegx_retval.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Function return value location for Linux/TILE-Gx ABI.
-   Copyright (C) 2012 Tilera Corporation
-   Copyright (C) 2014 Red Hat, Inc.
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <assert.h>
-#include <dwarf.h>
-
-#define BACKEND tilegx_
-#include "libebl_CPU.h"
-
-
-/* r0.  */
-static const Dwarf_Op loc_intreg[] =
-  {
-    { .atom = DW_OP_reg0 }
-  };
-#define nloc_intreg	1
-
-/* The return value is a structure and is actually stored in stack space
-   passed in a hidden argument by the caller.  But, the compiler
-   helpfully returns the address of that space in r0.  */
-static const Dwarf_Op loc_aggregate[] =
-  {
-    { .atom = DW_OP_breg0, .number = 0 }
-  };
-#define nloc_aggregate 1
-
-int
-tilegx_return_value_location (Dwarf_Die *functypedie, const Dwarf_Op **locp)
-{
-  /* Start with the function's type, and get the DW_AT_type attribute,
-     which is the type of the return value.  */
-  Dwarf_Die die_mem, *typedie = &die_mem;
-  int tag = dwarf_peeled_die_type (functypedie, typedie);
-  if (tag <= 0)
-    return tag;
-
-  Dwarf_Word size;
-  switch (tag)
-    {
-    case -1:
-      return -1;
-
-    case DW_TAG_subrange_type:
-      if (! dwarf_hasattr_integrate (typedie, DW_AT_byte_size))
-	{
-	  Dwarf_Attribute attr_mem, *attr;
-	  attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
-	  typedie = dwarf_formref_die (attr, &die_mem);
-	  tag = DWARF_TAG_OR_RETURN (typedie);
-	}
-      FALLTHROUGH;
-
-    case DW_TAG_base_type:
-    case DW_TAG_enumeration_type:
-    case DW_TAG_pointer_type:
-    case DW_TAG_ptr_to_member_type:
-      {
-	Dwarf_Attribute attr_mem;
-	if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_byte_size,
-						   &attr_mem), &size) != 0)
-	  {
-	    if (tag == DW_TAG_pointer_type || tag == DW_TAG_ptr_to_member_type)
-	      size = 8;
-	    else
-	      return -1;
-	  }
-	if (tag == DW_TAG_base_type)
-	  {
-	    Dwarf_Word encoding;
-	    if (dwarf_formudata (dwarf_attr_integrate (typedie, DW_AT_encoding,
-						       &attr_mem),
-				 &encoding) != 0)
-	      return -1;
-	  }
-      }
-
-      /* Small enough structs are passed directly in registers R0 ... R7.  */
-      if (size <= 8)
-	{
-	intreg:
-	  *locp = loc_intreg;
-	  return nloc_intreg;
-	}
-
-      FALLTHROUGH;
-    case DW_TAG_structure_type:
-    case DW_TAG_class_type:
-    case DW_TAG_union_type:
-    aggregate:
-      *locp = loc_aggregate;
-      return nloc_aggregate;
-
-    case DW_TAG_array_type:
-    case DW_TAG_string_type:
-      if (dwarf_aggregate_size (typedie, &size) == 0 && size <= 8)
-	{
-	  if (tag == DW_TAG_array_type)
-	    {
-	      Dwarf_Attribute attr_mem, *attr;
-	      /* Check if it's a character array.  */
-	      attr = dwarf_attr_integrate (typedie, DW_AT_type, &attr_mem);
-	      typedie = dwarf_formref_die (attr, &die_mem);
-	      tag = DWARF_TAG_OR_RETURN (typedie);
-	      if (tag != DW_TAG_base_type)
-		goto aggregate;
-	      if (dwarf_formudata (dwarf_attr_integrate (typedie,
-							 DW_AT_byte_size,
-							 &attr_mem),
-				   &size) != 0)
-		return -1;
-	      if (size != 1)
-		goto aggregate;
-	    }
-	  goto intreg;
-	}
-      goto aggregate;
-    }
-
-  /* XXX We don't have a good way to return specific errors from ebl calls.
-     This value means we do not understand the type, but it is well-formed
-     DWARF and might be valid.  */
-  return -2;
-}
diff --git a/backends/tilegx_symbol.c b/backends/tilegx_symbol.c
deleted file mode 100644
index 62a4690..0000000
--- a/backends/tilegx_symbol.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* TILEGX-specific symbolic name handling.
-   Copyright (C) 2012 Tilera Corporation
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <elf.h>
-#include <stddef.h>
-
-#define BACKEND		tilegx_
-#include "libebl_CPU.h"
-
-/* Check for the simple reloc types.  */
-Elf_Type
-tilegx_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type,
-			  int *addsub __attribute__ ((unused)))
-{
-  switch (type)
-    {
-    case R_TILEGX_64:
-      return ELF_T_SXWORD;
-    case R_TILEGX_32:
-      return ELF_T_SWORD;
-    case R_TILEGX_16:
-      return ELF_T_HALF;
-    case R_TILEGX_8:
-      return ELF_T_BYTE;
-    default:
-      return ELF_T_NUM;
-    }
-}
diff --git a/backends/x86_64_init.c b/backends/x86_64_init.c
index 44c1ad2..8db9b64 100644
--- a/backends/x86_64_init.c
+++ b/backends/x86_64_init.c
@@ -56,7 +56,6 @@
     HOOK (eh, core_note);
   HOOK (eh, return_value_location);
   HOOK (eh, register_info);
-  HOOK (eh, syscall_abi);
   HOOK (eh, auxv_info);
   HOOK (eh, disasm);
   HOOK (eh, abi_cfi);
diff --git a/backends/x86_64_syscall.c b/backends/x86_64_syscall.c
deleted file mode 100644
index 0deb8ba..0000000
--- a/backends/x86_64_syscall.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Linux/x86-64 system call ABI in DWARF register numbers.
-   Copyright (C) 2008 Red Hat, Inc.
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#define BACKEND x86_64_
-#include "libebl_CPU.h"
-
-int
-x86_64_syscall_abi (Ebl *ebl __attribute__ ((unused)),
-		    int *sp, int *pc, int *callno, int args[6])
-{
-  *sp = 7;			/* %rsp */
-  *pc = 16;			/* %rip */
-  *callno = 0;			/* %rax */
-  args[0] = 5;			/* %rdi */
-  args[1] = 4;			/* %rsi */
-  args[2] = 1;			/* %rdx */
-  args[3] = 10;			/* %r10 */
-  args[4] = 8;			/* %r8 */
-  args[5] = 9;			/* %r9 */
-  return 0;
-}
diff --git a/config/ChangeLog b/config/ChangeLog
index 1cb3d20..c532f7e 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,38 @@
+2020-10-31  Dmitry V. Levin  <ldv@altlinux.org>
+
+	* Makefile.am (install-data-local, uninstall-local): Conditionalize
+	on DEBUGINFOD.
+
+2020-10-30  Mark Wielaard  <mark@klomp.org>
+
+	* elfutils.spec.in: Update for 0.182.
+
+2020-10-31  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod.service: Bump up TimeoutStopSec.
+
+2020-10-30  Frank Ch. Eigler  <fche@redhat.com>
+
+	* elfutils.spec.in: Fix debuginfod config/state file attributes
+	for non-lossy updates.
+
+2020-10-08  Frank Ch. Eigler  <fche@redhat.com>
+
+	* Makefile.am (uninstall-local): Uninstall the new profile.d files.
+
+2020-10-01  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR25461
+	* profile.sh.in, profile.csh.in: New files for /etc/profile.d
+	to define $DEBUGINFOD_URLS.
+	* elfutils.spec.in: Configure with --enable-debuginfod-urls.
+	* Makefile.am: Install them.
+
+2020-09-18  Mark Wielaard  <mark@klomp.org>
+
+	* elfutils.spec.in: Add BuildRequires for libzstd-devel and zstd.
+	* libdw.pc.in: Requires.private libzstd.
+
 2020-09-08  Mark Wielaard  <mark@klomp.org>
 
 	* elfutils.spec.in: Update for 0.181.
diff --git a/config/Makefile.am b/config/Makefile.am
index 11f17df..ef28dab 100644
--- a/config/Makefile.am
+++ b/config/Makefile.am
@@ -30,12 +30,19 @@
 ##
 EXTRA_DIST = elfutils.spec.in known-dwarf.awk 10-default-yama-scope.conf \
 	     libelf.pc.in libdw.pc.in libdebuginfod.pc.in \
-	     debuginfod.service debuginfod.sysconfig
+	     debuginfod.service debuginfod.sysconfig profile.sh.in profile.csh.in
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libelf.pc libdw.pc
 if DEBUGINFOD
 pkgconfig_DATA += libdebuginfod.pc
+
+install-data-local:
+	$(INSTALL_DATA) profile.sh -D $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh
+	$(INSTALL_DATA) profile.csh -D $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
+
+uninstall-local:
+	rm -f $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.sh $(DESTDIR)$(sysconfdir)/profile.d/debuginfod.csh
 endif
 
 if MAINTAINER_MODE
diff --git a/config/debuginfod.service b/config/debuginfod.service
index 8fca343..b64d8cb 100644
--- a/config/debuginfod.service
+++ b/config/debuginfod.service
@@ -9,7 +9,8 @@
 Group=debuginfod
 #CacheDirectory=debuginfod
 ExecStart=/usr/bin/debuginfod -d /var/cache/debuginfod/debuginfod.sqlite -p $DEBUGINFOD_PORT $DEBUGINFOD_VERBOSE $DEBUGINFOD_PRAGMAS $DEBUGINFOD_PATHS
-TimeoutStopSec=10
+# Stopping can take a long time if scanning of large archives is in progress
+TimeoutStopSec=60
 PrivateTmp=yes
 
 [Install]
diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
index 95f63f5..c01b5f8 100644
--- a/config/elfutils.spec.in
+++ b/config/elfutils.spec.in
@@ -24,6 +24,7 @@
 BuildRequires: zlib-devel
 BuildRequires: bzip2-devel
 BuildRequires: xz-devel
+BuildRequires: libzstd-devel
 
 # For debuginfod
 BuildRequires: pkgconfig(libmicrohttpd) >= 0.9.33
@@ -33,6 +34,7 @@
 
 # For tests need to bunzip2 test files.
 BuildRequires: bzip2
+BuildRequires: zstd
 # For the run-debuginfod-find.sh test case in %check for /usr/sbin/ss
 BuildRequires: iproute
 BuildRequires: bsdtar
@@ -179,7 +181,7 @@
 %setup -q
 
 %build
-%configure --program-prefix=%{_programprefix} --enable-debuginfod
+%configure --program-prefix=%{_programprefix} --enable-debuginfod --enable-debuginfod-urls
 make -s %{?_smp_mflags}
 
 %install
@@ -189,6 +191,8 @@
 %make_install
 
 chmod +x ${RPM_BUILD_ROOT}%{_prefix}/%{_lib}/lib*.so*
+mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod
+touch ${RPM_BUILD_ROOT}%{_localstatedir}/cache/debuginfod/debuginfod.sqlite
 
 # XXX Nuke unpackaged files
 ( cd ${RPM_BUILD_ROOT}
@@ -294,7 +298,8 @@
 %{_libdir}/libdebuginfod.so.*
 %{_bindir}/debuginfod-find
 %{_mandir}/man1/debuginfod-find.1*
-
+%config(noreplace) %{_sysconfdir}/profile.d/*
+  
 %files debuginfod-client-devel
 %defattr(-,root,root)
 %{_libdir}/pkgconfig/libdebuginfod.pc
@@ -305,13 +310,13 @@
 %files debuginfod
 %defattr(-,root,root)
 %{_bindir}/debuginfod
-%config(noreplace) %verify(not md5 size mtime) %{_sysconfdir}/sysconfig/debuginfod
+%config(noreplace) %{_sysconfdir}/sysconfig/debuginfod
 %{_unitdir}/debuginfod.service
 %{_sysconfdir}/sysconfig/debuginfod
 %{_mandir}/man8/debuginfod.8*
 
 %dir %attr(0700,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod
-%verify(not md5 size mtime) %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite
+%ghost %attr(0600,debuginfod,debuginfod) %{_localstatedir}/cache/debuginfod/debuginfod.sqlite
 
 %pre debuginfod
 getent group debuginfod >/dev/null || groupadd -r debuginfod
@@ -327,6 +332,15 @@
 %systemd_postun_with_restart debuginfod.service
 
 %changelog
+* Sat Oct 31 2020 Mark Wielaard <mark@klomp.org> 0.182-1
+- backends: Support for tilegx has been removed.
+- config: New /etc/profile.d files to provide default $DEBUGINFOD_URLS.
+- debuginfod: More efficient package traversal, tolerate various
+  errors during scanning, grooming progress is more visible and
+  interruptible, more prometheus metrics.
+- debuginfod-client: Now supports compressed (kernel) ELF images.
+- libdwfl: Add ZSTD compression support.
+
 * Tue Sep  8 2020 Mark Wielaard <mark@klomp.org> 0.181-1
 - libelf: elf_update now compensates (fixes up) a bad sh_addralign
   for SHF_COMPRESSED sections.
diff --git a/config/libdw.pc.in b/config/libdw.pc.in
index 3fc283d..2e83a43 100644
--- a/config/libdw.pc.in
+++ b/config/libdw.pc.in
@@ -17,6 +17,6 @@
 
 # We support various compressed ELF images, but don't export any of the
 # data structures or functions.  zlib (gz) is always required, bzip2 (bz2)
-# and lzma (xz) are optional.  But bzip2 doesn't have a pkg-config file.
-Requires.private: zlib @LIBLZMA@
+# lzma (xz) and zstd () are optional. But bzip2 doesn't have a pkg-config file.
+Requires.private: zlib @LIBLZMA@ @LIBZSTD@
 Libs.private: @BZ2_LIB@
diff --git a/config/profile.csh.in b/config/profile.csh.in
new file mode 100644
index 0000000..4f25896
--- /dev/null
+++ b/config/profile.csh.in
@@ -0,0 +1,2 @@
+
+setenv DEBUGINFOD_URLS "$DEBUGINFOD_URLS @DEBUGINFOD_URLS@"
diff --git a/config/profile.sh.in b/config/profile.sh.in
new file mode 100644
index 0000000..8a02248
--- /dev/null
+++ b/config/profile.sh.in
@@ -0,0 +1,3 @@
+
+DEBUGINFOD_URLS="$DEBUGINFOD_URLS @DEBUGINFOD_URLS@"
+export DEBUGINFOD_URLS
diff --git a/configure.ac b/configure.ac
index bf83387..515ac70 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
 dnl
 dnl  You should have received a copy of the GNU General Public License
 dnl  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([elfutils],[0.181],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
+AC_INIT([elfutils],[0.182],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
 
 dnl Workaround for older autoconf < 2.64
 m4_ifndef([AC_PACKAGE_URL],
@@ -397,8 +397,8 @@
 AS_IF([test "x$with_zlib" = xno], [AC_MSG_ERROR([zlib not found but is required])])
 LIBS="$save_LIBS"
 
-dnl Test for bzlib and xz/lzma, gives BZLIB/LZMALIB .am
-dnl conditional and config.h USE_BZLIB/USE_LZMALIB #define.
+dnl Test for bzlib and xz/lzma/zstd, gives BZLIB/LZMALIB/ZSTD .am
+dnl conditional and config.h USE_BZLIB/USE_LZMALIB/USE_ZSTD #define.
 save_LIBS="$LIBS"
 LIBS=
 eu_ZIPLIB(bzlib,BZLIB,bz2,BZ2_bzdopen,bzip2)
@@ -408,6 +408,9 @@
 eu_ZIPLIB(lzma,LZMA,lzma,lzma_auto_decoder,[LZMA (xz)])
 AS_IF([test "x$with_lzma" = xyes], [LIBLZMA="liblzma"], [LIBLZMA=""])
 AC_SUBST([LIBLZMA])
+eu_ZIPLIB(zstd,ZSTD,zstd,ZSTD_decompress,[ZSTD (zst)])
+AS_IF([test "x$with_zstd" = xyes], [LIBZSTD="libzstd"], [LIBLZSTD=""])
+AC_SUBST([LIBZSTD])
 zip_LIBS="$LIBS"
 LIBS="$save_LIBS"
 AC_SUBST([zip_LIBS])
@@ -677,6 +680,10 @@
   AC_MSG_WARN([No bunzip2, needed to run make check])
 fi
 
+# For tests that need to use zstd compression
+AC_CHECK_PROG(HAVE_ZSTD, zstd, yes, no)
+AM_CONDITIONAL([HAVE_ZSTD],[test "x$HAVE_ZSTD" = "xyes"])
+
 # Look for libcurl for libdebuginfod minimum version as per rhel7.
 AC_ARG_ENABLE([libdebuginfod],AC_HELP_STRING([--enable-libdebuginfod], [Build debuginfod client library (can be =dummy)]))
 AS_IF([test "x$enable_libdebuginfod" != "xno"], [
@@ -724,6 +731,18 @@
 AS_IF([test "x$enable_debuginfod" != "xno"],AC_DEFINE([ENABLE_DEBUGINFOD],[1],[Build debuginfod]))
 AM_CONDITIONAL([DEBUGINFOD],[test "x$enable_debuginfod" = "xyes"])
 
+dnl for /etc/profile.d/elfutils.{csh,sh}
+default_debuginfod_urls=""
+AC_ARG_ENABLE(debuginfod-urls,
+            [AS_HELP_STRING([--enable-debuginfod-urls@<:@=URLS@:>@],[add URLS to profile.d DEBUGINFOD_URLS])],
+            [if test "x${enableval}" = "xyes";
+             then default_debuginfod_urls="https://debuginfod.elfutils.org/";
+             elif test "x${enableval}" != "xno"; then
+             default_debuginfod_urls="${enableval}";
+             fi],
+            [default_debuginfod_urls=""])
+AC_SUBST(DEBUGINFOD_URLS, $default_debuginfod_urls)                
+AC_CONFIG_FILES([config/profile.sh config/profile.csh])
 
 AC_OUTPUT
 
@@ -742,6 +761,7 @@
     gzip support                       : ${with_zlib}
     bzip2 support                      : ${with_bzlib}
     lzma/xz support                    : ${with_lzma}
+    zstd support                       : ${with_zstd}
     libstdc++ demangle support         : ${enable_demangler}
     File textrel check                 : ${enable_textrelcheck}
     Symbol versioning                  : ${enable_symbol_versioning}
@@ -756,9 +776,11 @@
     Extra Valgrind annotations         : ${use_vg_annotations}
     libdebuginfod client support       : ${enable_libdebuginfod}
     Debuginfod server support          : ${enable_debuginfod}
+    Default DEBUGINFOD_URLS            : ${default_debuginfod_urls}
 
   EXTRA TEST FEATURES (used with make check)
     have bunzip2 installed (required)  : ${HAVE_BUNZIP2}
+    have zstd installed                : ${HAVE_ZSTD}
     debug branch prediction            : ${use_debugpred}
     gprof support                      : ${use_gprof}
     gcov support                       : ${use_gcov}
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index db8a76a..34363e7 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,77 @@
+2020-10-31  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod.cxx (scan_source_file, scan_archive_file): Add new scanned_bytes_total,
+	scanned_files_total metrics.
+	(archive_classify): Exit early if interrupted.
+	(scan_source_paths): Perform realpath/regex checks only on FTS_F files.
+	Tweak metrics.
+
+2020-10-30  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26775 cont'd.
+	* debuginfod.cxx (thread_main_scanner): Ensure control doesn't
+	leave infinite loop until program exit, even if SIGUSR2.
+	(scan_source_paths): Have traverser clean scanq on
+	SIGUSR2.  Emit additional traversed_total metrics.
+	(groom): Emit additional groomed_total metrics.
+	(thread_main_groom): Restore previous thread_work_total
+	metric.
+
+2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26775
+	* debuginfod.cxx (forced_*_count): Make these global.
+	(runq::clear): New function.
+	(thread_main_scanner): Check for pending SIGUSR2; interrupt.
+	(scan_source_paths): Check for pending SIGUSR2; interrupt.
+	(groom): Report prometheus stats before groom also.  Check for
+	pending SIGUSR1; interrupt.  Increment thread_work_total for
+	each file scanned, not the entire cycle.
+
+2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26810
+	* debuginfod.cxx (handle_buildid_*_match): Throw exceptions for
+	more lower level libc errors.
+	(handle_buildid_match): Catch & report exceptions but return 0
+	for continued iteration in the caller.
+
+2020-10-25  Mark Wielaard  <mark@klomp.org>
+
+	* debuginfod-client.c (debuginfod_query_server): Translate
+	CURLE_PEER_FAILED_VERIFICATION to ECONNREFUSED.
+
+2020-10-20  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26756: more prometheus metrics
+	* debuginfod.cxx (*_exception): Add counters for error occurrences.
+	(fdcache::*): Add counters for fdcache operations and status.
+	(fdcache::set_metric): New fn for overall stat counts.
+	(fdcache::limit): ... allow metric-less use from dtors.
+
+2020-10-20  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod.cxx (handle_buildid*): Add a parameter for detecting
+	internally-originated lookups for dwz resolution.
+
+2020-09-18  Frank Ch. Eigler <fche@redhat.com>
+
+	* debuginfod.cxx (scan_source_file, archive_classify): Store only
+	canonicalized file names in sdef & sref records in the database.
+
+2020-09-08  Mark Wielaard  <mark@klomp.org>
+
+	* Makefile.am (BUILD_STATIC): Include libcurl_LIBS in libdebuginfod
+	when NOT DUMMY_LIBDEBUGINFOD.
+
+2020-09-16  Mark Wielaard  <mark@klomp.org>
+
+	* debuginfod-find.c: Fix license block comment.
+
+2020-09-15  Mark Wielaard  <mark@klomp.org>
+
+	* debuginfod-find.c (main): Use dwelf_elf_begin.
+
 2020-07-03  Alice Zhang <alizhang@redhat.com>
 
 	* debuginfod-client.c (debuginfod_query_server): Use strncasecmp
diff --git a/debuginfod/Makefile.am b/debuginfod/Makefile.am
index 2e8a343..0198560 100644
--- a/debuginfod/Makefile.am
+++ b/debuginfod/Makefile.am
@@ -46,9 +46,9 @@
 libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread
 libelf = ../libelf/libelf.a -lz
 if DUMMY_LIBDEBUGINFOD
-libdebuginfod = ./libdebuginfod.a $(libcurl_LIBS)
-else
 libdebuginfod = ./libdebuginfod.a
+else
+libdebuginfod = ./libdebuginfod.a $(libcurl_LIBS)
 endif
 else
 libasm = ../libasm/libasm.so
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 18e7b85..0e5177b 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -871,6 +871,7 @@
                 case CURLE_COULDNT_RESOLVE_HOST: rc = -EHOSTUNREACH; break; // no NXDOMAIN
                 case CURLE_URL_MALFORMAT: rc = -EINVAL; break;
                 case CURLE_COULDNT_CONNECT: rc = -ECONNREFUSED; break;
+                case CURLE_PEER_FAILED_VERIFICATION: rc = -ECONNREFUSED; break;
                 case CURLE_REMOTE_ACCESS_DENIED: rc = -EACCES; break;
                 case CURLE_WRITE_ERROR: rc = -EIO; break;
                 case CURLE_OUT_OF_MEMORY: rc = -ENOMEM; break;
diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c
index 83a43ce..88a460f 100644
--- a/debuginfod/debuginfod-find.c
+++ b/debuginfod/debuginfod-find.c
@@ -13,9 +13,9 @@
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.
 
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
 
 #include "config.h"
 #include "printversion.h"
@@ -138,9 +138,10 @@
     }
   if (fd >= 0)
     {
-      elf = elf_begin (fd, ELF_C_READ_MMAP_PRIVATE, NULL);
+      elf = dwelf_elf_begin (fd);
       if (elf == NULL)
-        fprintf (stderr, "Cannot elf_begin %s: %s\n", build_id, elf_errmsg(-1));
+        fprintf (stderr, "Cannot open as ELF file %s: %s\n", build_id,
+		 elf_errmsg (-1));
     }
   if (elf != NULL)
     {
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index 5621030..3085f38 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -388,7 +388,9 @@
 static sqlite3 *db; // single connection, serialized across all our threads!
 static unsigned verbose;
 static volatile sig_atomic_t interrupted = 0;
+static volatile sig_atomic_t forced_rescan_count = 0;
 static volatile sig_atomic_t sigusr1 = 0;
+static volatile sig_atomic_t forced_groom_count = 0;
 static volatile sig_atomic_t sigusr2 = 0;
 static unsigned http_port = 8002;
 static unsigned rescan_s = 300;
@@ -548,23 +550,31 @@
 struct libc_exception: public reportable_exception
 {
   libc_exception(int rc, const string& msg):
-    reportable_exception(string("libc error: ") + msg + ": " + string(strerror(rc) ?: "?")) {}
+    reportable_exception(string("libc error: ") + msg + ": " + string(strerror(rc) ?: "?")) {
+    inc_metric("error_count","libc",strerror(rc));
+  }
 };
 
 
 struct archive_exception: public reportable_exception
 {
   archive_exception(const string& msg):
-    reportable_exception(string("libarchive error: ") + msg) {}
+    reportable_exception(string("libarchive error: ") + msg) {
+      inc_metric("error_count","libarchive",msg);
+  }
   archive_exception(struct archive* a, const string& msg):
-    reportable_exception(string("libarchive error: ") + msg + ": " + string(archive_error_string(a) ?: "?")) {}
+    reportable_exception(string("libarchive error: ") + msg + ": " + string(archive_error_string(a) ?: "?")) {
+    inc_metric("error_count","libarchive",msg);
+  }
 };
 
 
 struct elfutils_exception: public reportable_exception
 {
   elfutils_exception(int rc, const string& msg):
-    reportable_exception(string("elfutils error: ") + msg + ": " + string(elf_errmsg(rc) ?: "?")) {}
+    reportable_exception(string("elfutils error: ") + msg + ": " + string(elf_errmsg(rc) ?: "?")) {
+    inc_metric("error_count","elfutils",elf_errmsg(rc));
+  }
 };
 
 
@@ -599,6 +609,14 @@
     cv.notify_all();
   }
 
+  // clear the workqueue, when scanning is interrupted with USR2
+  void clear() {
+    unique_lock<mutex> lock(mtx);
+    q.clear();
+    set_metric("thread_work_pending","role","scan", q.size());
+    cv.notify_all(); // maybe wake up waiting idlers
+  }
+
   // block this scanner thread until there is work to do and no active
   bool wait_front (Payload& p)
   {
@@ -890,18 +908,15 @@
 
 
 static struct MHD_Response*
-handle_buildid_f_match (int64_t b_mtime,
+handle_buildid_f_match (bool internal_req_t,
+                        int64_t b_mtime,
                         const string& b_source0,
                         int *result_fd)
 {
+  (void) internal_req_t; // ignored
   int fd = open(b_source0.c_str(), O_RDONLY);
   if (fd < 0)
-    {
-      if (verbose)
-        obatched(clog) << "cannot open " << b_source0 << endl;
-      // if still missing, a periodic groom pass will delete this buildid record
-      return 0;
-    }
+    throw libc_exception (errno, string("open ") + b_source0);
 
   // NB: use manual close(2) in error case instead of defer_dtor, because
   // in the normal case, we want to hand the fd over to libmicrohttpd for
@@ -911,10 +926,8 @@
   int rc = fstat(fd, &s);
   if (rc < 0)
     {
-      if (verbose)
-        clog << "cannot fstat " << b_source0 << endl;
       close(fd);
-      return 0;
+      throw libc_exception (errno, string("fstat ") + b_source0);
     }
 
   if ((int64_t) s.st_mtime != b_mtime)
@@ -1083,6 +1096,15 @@
   long max_mbs;
 
 public:
+  void set_metrics()
+  {
+    double total_mb = 0.0;
+    for (auto i = lru.begin(); i < lru.end(); i++)
+      total_mb += i->fd_size_mb;
+    set_metric("fdcache_bytes", (int64_t)(total_mb*1024.0*1024.0));
+    set_metric("fdcache_count", lru.size());
+  }
+
   void intern(const string& a, const string& b, string fd, off_t sz, bool front_p)
   {
     {
@@ -1093,19 +1115,27 @@
             {
               unlink (i->fd.c_str());
               lru.erase(i);
+              inc_metric("fdcache_op_count","op","dequeue");
               break; // must not continue iterating
             }
         }
       double mb = (sz+65535)/1048576.0; // round up to 64K block
       fdcache_entry n = { a, b, fd, mb };
       if (front_p)
-        lru.push_front(n);
+        {
+          inc_metric("fdcache_op_count","op","enqueue_front");
+          lru.push_front(n);
+        }
       else
-        lru.push_back(n);
-    if (verbose > 3)
-      obatched(clog) << "fdcache interned a=" << a << " b=" << b
-                     << " fd=" << fd << " mb=" << mb << " front=" << front_p << endl;
+        {
+          inc_metric("fdcache_op_count","op","enqueue_back");
+          lru.push_back(n);
+        }
+      if (verbose > 3)
+        obatched(clog) << "fdcache interned a=" << a << " b=" << b
+                       << " fd=" << fd << " mb=" << mb << " front=" << front_p << endl;
     }
+    set_metrics();
 
     // NB: we age the cache at lookup time too
     if (front_p)
@@ -1124,7 +1154,7 @@
               fdcache_entry n = *i;
               lru.erase(i); // invalidates i, so no more iteration!
               lru.push_front(n);
-
+              inc_metric("fdcache_op_count","op","requeue_front");
               fd = open(n.fd.c_str(), O_RDONLY); // NB: no problem if dup() fails; looks like cache miss
               break;
             }
@@ -1143,8 +1173,12 @@
     for (auto i = lru.begin(); i < lru.end(); i++)
       {
         if (i->archive == a && i->entry == b)
-          return true;
+          {
+            inc_metric("fdcache_op_count","op","probe_hit");
+            return true;
+          }
       }
+    inc_metric("fdcache_op_count","op","probe_miss");
     return false;
   }
 
@@ -1157,13 +1191,15 @@
           { // found it; move it to head of lru
             fdcache_entry n = *i;
             lru.erase(i); // invalidates i, so no more iteration!
+            inc_metric("fdcache_op_count","op","clear");
             unlink (n.fd.c_str());
+            set_metrics();
             return;
           }
       }
   }
 
-  void limit(long maxfds, long maxmbs)
+  void limit(long maxfds, long maxmbs, bool metrics_p = true)
   {
     if (verbose > 3 && (this->max_fds != maxfds || this->max_mbs != maxmbs))
       obatched(clog) << "fdcache limited to maxfds=" << maxfds << " maxmbs=" << maxmbs << endl;
@@ -1188,19 +1224,23 @@
                 if (verbose > 3)
                   obatched(clog) << "fdcache evicted a=" << j->archive << " b=" << j->entry
                                  << " fd=" << j->fd << " mb=" << j->fd_size_mb << endl;
+                if (metrics_p)
+                  inc_metric("fdcache_op_count","op","evict");
                 unlink (j->fd.c_str());
               }
 
             lru.erase(i, lru.end()); // erase the nodes generally
             break;
           }
-
       }
+    if (metrics_p) set_metrics();
   }
 
   ~libarchive_fdcache()
   {
-    limit(0, 0);
+    // unlink any fdcache entries in $TMPDIR
+    // don't update metrics; those globals may be already destroyed 
+    limit(0, 0, false);
   }
 };
 static libarchive_fdcache fdcache;
@@ -1226,7 +1266,8 @@
 
 
 static struct MHD_Response*
-handle_buildid_r_match (int64_t b_mtime,
+handle_buildid_r_match (bool internal_req_p,
+                        int64_t b_mtime,
                         const string& b_source0,
                         const string& b_source1,
                         int *result_fd)
@@ -1330,7 +1371,8 @@
   // 3) extract some number of prefetched entries (just into fdcache)
   // 4) abort any further processing
   struct MHD_Response* r = 0;                 // will set in stage 2
-  unsigned prefetch_count = fdcache_prefetch; // will decrement in stage 3
+  unsigned prefetch_count =
+    internal_req_p ? 0 : fdcache_prefetch;    // will decrement in stage 3
 
   while(r == 0 || prefetch_count > 0) // stage 1, 2, or 3
     {
@@ -1363,7 +1405,8 @@
         throw libc_exception (errno, "cannot create temporary file");
       // NB: don't unlink (tmppath), as fdcache will take charge of it.
 
-      rc = archive_read_data_into_fd (a, fd);
+      // NB: this can take many uninterruptible seconds for a huge file
+      rc = archive_read_data_into_fd (a, fd); 
       if (rc != ARCHIVE_OK) // e.g. ENOSPC!
         {
           close (fd);
@@ -1424,18 +1467,28 @@
 
 
 static struct MHD_Response*
-handle_buildid_match (int64_t b_mtime,
+handle_buildid_match (bool internal_req_p,
+                      int64_t b_mtime,
                       const string& b_stype,
                       const string& b_source0,
                       const string& b_source1,
                       int *result_fd)
 {
-  if (b_stype == "F")
-    return handle_buildid_f_match(b_mtime, b_source0, result_fd);
-  else if (b_stype == "R")
-    return handle_buildid_r_match(b_mtime, b_source0, b_source1, result_fd);
-  else
-    return 0;
+  try
+    {
+      if (b_stype == "F")
+        return handle_buildid_f_match(internal_req_p, b_mtime, b_source0, result_fd);
+      else if (b_stype == "R")
+        return handle_buildid_r_match(internal_req_p, b_mtime, b_source0, b_source1, result_fd);
+    }
+  catch (const reportable_exception &e)
+    {
+      e.report(clog);
+      // Report but swallow libc etc. errors here; let the caller
+      // iterate to other matches of the content.
+    }
+  
+  return 0;
 }
 
 
@@ -1505,6 +1558,8 @@
                           "order by sharedprefix(source0,source0ref) desc, mtime desc");
       pp->reset();
       pp->bind(1, buildid);
+      // NB: we don't store the non-canonicalized path names any more, but old databases
+      // might have them (and no canon ones), so we keep searching for both.
       pp->bind(2, suffix);
       pp->bind(3, canon_pathname(suffix));
     }
@@ -1529,7 +1584,8 @@
 
       // Try accessing the located match.
       // XXX: in case of multiple matches, attempt them in parallel?
-      auto r = handle_buildid_match (b_mtime, b_stype, b_source0, b_source1, result_fd);
+      auto r = handle_buildid_match (conn ? false : true,
+                                     b_mtime, b_stype, b_source0, b_source1, result_fd);
       if (r)
         return r;
     }
@@ -1630,6 +1686,8 @@
 static map<string,int64_t> metrics; // arbitrary data for /metrics query
 // NB: store int64_t since all our metrics are integers; prometheus accepts double
 static mutex metrics_lock;
+// NB: these objects get released during the process exit via global dtors
+// do not call them from within other global dtors
 
 // utility function for assembling prometheus-compatible
 // name="escaped-value" strings
@@ -2171,7 +2229,9 @@
         elf_classify (fd, executable_p, debuginfo_p, buildid, sourcefiles);
       else
         throw libc_exception(errno, string("open ") + rps);
-      inc_metric ("scanned_total","source","file");
+      add_metric ("scanned_bytes_total","source","file",
+                  st.st_size);
+      inc_metric ("scanned_files_total","source","file");
     }
   // NB: we catch exceptions here too, so that we can
   // cache the corrupt-elf case (!executable_p &&
@@ -2254,41 +2314,27 @@
             .bind(1, srps)
             .step_ok_done();
 
-          // register the dwarfsrc name in the interning table too
-          ps_upsert_files
-            .reset()
-            .bind(1, dwarfsrc)
-            .step_ok_done();
-
-          ps_upsert_s
-            .reset()
-            .bind(1, buildid)
-            .bind(2, dwarfsrc)
-            .bind(3, srps)
-            .bind(4, sfs.st_mtime)
-            .step_ok_done();
-
-          // PR25548: also store canonicalized source path
+          // PR25548: store canonicalized dwarfsrc path
           string dwarfsrc_canon = canon_pathname (dwarfsrc);
           if (dwarfsrc_canon != dwarfsrc)
             {
               if (verbose > 3)
                 obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl;
-
-              ps_upsert_files
-                .reset()
-                .bind(1, dwarfsrc_canon)
-                .step_ok_done();
-
-              ps_upsert_s
-                .reset()
-                .bind(1, buildid)
-                .bind(2, dwarfsrc_canon)
-                .bind(3, srps)
-                .bind(4, sfs.st_mtime)
-                .step_ok_done();
             }
 
+          ps_upsert_files
+            .reset()
+            .bind(1, dwarfsrc_canon)
+            .step_ok_done();
+
+          ps_upsert_s
+            .reset()
+            .bind(1, buildid)
+            .bind(2, dwarfsrc_canon)
+            .bind(3, srps)
+            .bind(4, sfs.st_mtime)
+            .step_ok_done();
+
           inc_metric("found_sourcerefs_total","source","files");
         }
     }
@@ -2368,9 +2414,12 @@
   if (verbose > 3)
     obatched(clog) << "libarchive scanning " << rps << endl;
 
-  while(1) // parse cpio archive entries
+  while(1) // parse archive entries
     {
-      try
+    if (interrupted)
+      break;
+
+    try
         {
           struct archive_entry *e;
           rc = archive_read_next_header (a, &e);
@@ -2439,37 +2488,26 @@
                       continue;
                     }
 
-                  ps_upsert_files
-                    .reset()
-                    .bind(1, s)
-                    .step_ok_done();
-
-                  ps_upsert_sref
-                    .reset()
-                    .bind(1, buildid)
-                    .bind(2, s)
-                    .step_ok_done();
-
-                  // PR25548: also store canonicalized source path
+                  // PR25548: store canonicalized source path
                   const string& dwarfsrc = s;
                   string dwarfsrc_canon = canon_pathname (dwarfsrc);
                   if (dwarfsrc_canon != dwarfsrc)
                     {
                       if (verbose > 3)
                         obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl;
-
-                      ps_upsert_files
-                        .reset()
-                        .bind(1, dwarfsrc_canon)
-                        .step_ok_done();
-
-                      ps_upsert_sref
-                        .reset()
-                        .bind(1, buildid)
-                        .bind(2, dwarfsrc_canon)
-                        .step_ok_done();
                     }
 
+                  ps_upsert_files
+                    .reset()
+                    .bind(1, dwarfsrc_canon)
+                    .step_ok_done();
+
+                  ps_upsert_sref
+                    .reset()
+                    .bind(1, buildid)
+                    .bind(2, dwarfsrc_canon)
+                    .step_ok_done();
+
                   fts_sref ++;
                 }
             }
@@ -2570,7 +2608,9 @@
                         st.st_mtime,
                         my_fts_executable, my_fts_debuginfo, my_fts_sref, my_fts_sdef,
                         my_fts_sref_complete_p);
-      inc_metric ("scanned_total","source",archive_extension + " archive");
+      add_metric ("scanned_bytes_total","source",archive_extension + " archive",
+                  st.st_size);
+      inc_metric ("scanned_files_total","source",archive_extension + " archive");
       add_metric("found_debuginfo_total","source",archive_extension + " archive",
                  my_fts_debuginfo);
       add_metric("found_executable_total","source",archive_extension + " archive",
@@ -2679,7 +2719,8 @@
       add_metric("thread_busy", "role", "scan", -1);
       bool gotone = scanq.wait_front(p);
       add_metric("thread_busy", "role", "scan", 1);
-      if (! gotone) continue; // or break
+
+      if (! gotone) continue; // go back to waiting
 
       try
         {
@@ -2718,7 +2759,9 @@
           e.report(cerr);
         }
 
-      inc_metric("thread_work_total", "role","scan");
+      // finished a scanning step -- not a "loop", because we just
+      // consume the traversal loop's work, whenever
+      inc_metric("thread_work_total","role","scan");
     }
 
   add_metric("thread_busy", "role", "scan", -1);
@@ -2762,35 +2805,50 @@
   {
     if (interrupted) break;
 
+    if (sigusr2 != forced_groom_count) // stop early if groom triggered 
+      {
+        scanq.clear(); // clear previously issued work for scanner threads
+        break;
+      }
+    
     fts_scanned ++;
 
     if (verbose > 2)
       obatched(clog) << "fts traversing " << f->fts_path << endl;
 
-    /* Found a file.  Convert it to an absolute path, so
-       the buildid database does not have relative path
-       names that are unresolvable from a subsequent run
-       in a different cwd. */
-    char *rp = realpath(f->fts_path, NULL);
-    if (rp == NULL)
-      continue; // ignore dangling symlink or such
-    string rps = string(rp);
-    free (rp);
-
-    bool ri = !regexec (&file_include_regex, rps.c_str(), 0, 0, 0);
-    bool rx = !regexec (&file_exclude_regex, rps.c_str(), 0, 0, 0);
-    if (!ri || rx)
-      {
-        if (verbose > 3)
-          obatched(clog) << "fts skipped by regex " << (!ri ? "I" : "") << (rx ? "X" : "") << endl;
-        fts_regex ++;
-        continue;
-      }
-
     switch (f->fts_info)
       {
       case FTS_F:
-        scanq.push_back (make_pair(rps, *f->fts_statp));
+        {
+          /* Found a file.  Convert it to an absolute path, so
+             the buildid database does not have relative path
+             names that are unresolvable from a subsequent run
+             in a different cwd. */
+          char *rp = realpath(f->fts_path, NULL);
+          if (rp == NULL)
+            continue; // ignore dangling symlink or such
+          string rps = string(rp);
+          free (rp);
+          
+          bool ri = !regexec (&file_include_regex, rps.c_str(), 0, 0, 0);
+          bool rx = !regexec (&file_exclude_regex, rps.c_str(), 0, 0, 0);
+          if (!ri || rx)
+            {
+              if (verbose > 3)
+                obatched(clog) << "fts skipped by regex "
+                               << (!ri ? "I" : "") << (rx ? "X" : "") << endl;
+              fts_regex ++;
+              if (!ri)
+                inc_metric("traversed_total","type","file-skipped-I");
+              if (rx)
+                inc_metric("traversed_total","type","file-skipped-X");
+            }
+          else
+            {
+              scanq.push_back (make_pair(rps, *f->fts_statp));
+              inc_metric("traversed_total","type","file");
+            }
+        }
         break;
 
       case FTS_ERR:
@@ -2800,11 +2858,20 @@
           auto x = libc_exception(f->fts_errno, string("fts traversal ") + string(f->fts_path));
           x.report(cerr);
         }
+        inc_metric("traversed_total","type","error");
         break;
 
-      default:
-        ;
-        /* ignore */
+      case FTS_SL: // ignore, but count because debuginfod -L would traverse these
+        inc_metric("traversed_total","type","symlink");
+        break;
+
+      case FTS_D: // ignore
+        inc_metric("traversed_total","type","directory");
+        break;
+        
+      default: // ignore
+        inc_metric("traversed_total","type","other");
+        break;
       }
   }
   gettimeofday (&tv_end, NULL);
@@ -2820,7 +2887,6 @@
 {
   (void) arg; // ignore; we operate on global data
 
-  sig_atomic_t forced_rescan_count = 0;
   set_metric("thread_tid", "role","traverse", tid());
   add_metric("thread_count", "role", "traverse", 1);
 
@@ -2850,6 +2916,7 @@
             set_metric("thread_busy", "role","traverse", 1);
             scan_source_paths();
             last_rescan = time(NULL); // NB: now was before scanning
+            // finished a traversal loop
             inc_metric("thread_work_total", "role","traverse");
             set_metric("thread_busy", "role","traverse", 0);
           }
@@ -2901,6 +2968,8 @@
   struct timeval tv_start, tv_end;
   gettimeofday (&tv_start, NULL);
 
+  database_stats_report();
+  
   // scan for files that have disappeared
   sqlite_ps files (db, "check old files", "select s.mtime, s.file, f.name from "
                        BUILDIDS "_file_mtime_scanned s, " BUILDIDS "_files f "
@@ -2928,7 +2997,13 @@
           files_del_f_de.reset().bind(1,fileid).bind(2,mtime).step_ok_done();
           files_del_r_de.reset().bind(1,fileid).bind(2,mtime).step_ok_done();
           files_del_scan.reset().bind(1,fileid).bind(2,mtime).step_ok_done();
+          inc_metric("groomed_total", "decision", "stale");
         }
+      else
+        inc_metric("groomed_total", "decision", "fresh");
+
+      if (sigusr1 != forced_rescan_count) // stop early if scan triggered
+        break;
     }
   files.reset();
 
@@ -2965,7 +3040,6 @@
 static void*
 thread_main_groom (void* /*arg*/)
 {
-  sig_atomic_t forced_groom_count = 0;
   set_metric("thread_tid", "role", "groom", tid());
   add_metric("thread_count", "role", "groom", 1);
 
@@ -2994,6 +3068,7 @@
             set_metric("thread_busy", "role", "groom", 1);
             groom ();
             last_groom = time(NULL); // NB: now was before grooming
+            // finished a grooming loop
             inc_metric("thread_work_total", "role", "groom");
             set_metric("thread_busy", "role", "groom", 0);
           }
diff --git a/doc/ChangeLog b/doc/ChangeLog
index e048500..8c33f17 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,18 @@
+2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26775
+	* debuginfod.8: Document that SIGUSR1 interrupts the groom
+	cycle, and SIGUSR2 interrupts rescan.
+
+2020-10-25  Mark Wielaard  <mark@klomp.org>
+
+	* debuginfod_find_debuginfo.3 (ECONNREFUSED): Document that this
+	is also returned for a bad HTTPS server certificate.
+
+2020-10-07  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod-find.1: Add missing .br for SYNOPSIS section.
+
 2020-06-19  Mark Wielaard  <mark@klomp.org>
 
 	* Makefile.am: Guard all client manpages with LIBDEBUGINFOD.
diff --git a/doc/debuginfod-find.1 b/doc/debuginfod-find.1
index aeb1cb1..12d4ec2 100644
--- a/doc/debuginfod-find.1
+++ b/doc/debuginfod-find.1
@@ -19,10 +19,15 @@
 
 .SH SYNOPSIS
 .B debuginfod-find [\fIOPTION\fP]... debuginfo \fIBUILDID\fP
+.br
 .B debuginfod-find [\fIOPTION\fP]... debuginfo \fIPATH\fP
+.br
 .B debuginfod-find [\fIOPTION\fP]... executable \fIBUILDID\fP
+.br
 .B debuginfod-find [\fIOPTION\fP]... executable \fIPATH\fP
+.br
 .B debuginfod-find [\fIOPTION\fP]... source \fIBUILDID\fP \fI/FILENAME\fP
+.br
 .B debuginfod-find [\fIOPTION\fP]... source \fIPATH\fP \fI/FILENAME\fP
 
 .SH DESCRIPTION
diff --git a/doc/debuginfod.8 b/doc/debuginfod.8
index a645cee..152e368 100644
--- a/doc/debuginfod.8
+++ b/doc/debuginfod.8
@@ -155,7 +155,8 @@
 the index also stores the file mtimes).  A time of zero is acceptable,
 and means that only one initial scan should performed.  The default
 rescan time is 300 seconds.  Receiving a SIGUSR1 signal triggers a new
-scan, independent of the rescan time (including if it was zero).
+scan, independent of the rescan time (including if it was zero),
+interrupting a groom pass (if any).
 
 .TP
 .B "\-g SECONDS" "\-\-groom\-time=SECONDS"
@@ -167,7 +168,8 @@
 section.  The default groom time is 86400 seconds (1 day).  A time of
 zero is acceptable, and means that only one initial groom should be
 performed.  Receiving a SIGUSR2 signal triggers a new grooming pass,
-independent of the groom time (including if it was zero).
+independent of the groom time (including if it was zero), interrupting
+a rescan pass (if any)..
 
 .TP
 .B "\-G"
diff --git a/doc/debuginfod_find_debuginfo.3 b/doc/debuginfod_find_debuginfo.3
index d9717d7..eec04e5 100644
--- a/doc/debuginfod_find_debuginfo.3
+++ b/doc/debuginfod_find_debuginfo.3
@@ -254,7 +254,8 @@
 
 .TP
 .BR ECONNREFUSED
-Unable to connect to remote host.
+Unable to connect to remote host. Also returned when an HTTPS connection
+couldn't be verified (bad certificate).
 
 .TP
 .BR ECONNRESET
diff --git a/libasm/ChangeLog b/libasm/ChangeLog
index 83a6549..d7ab8c4 100644
--- a/libasm/ChangeLog
+++ b/libasm/ChangeLog
@@ -1,3 +1,8 @@
+2020-10-29  Mark Wielaard  <mark@klomp.org>
+
+	* asm_align.c (__libasm_ensure_section_space): Use calloc, not
+	malloc to allocate extra space.
+
 2020-07-19  Mark Wielaard  <mark@klomp.org>
 
 	* libasmP.h: Include libebl.h after libasm.h.
diff --git a/libasm/asm_align.c b/libasm/asm_align.c
index e59a070..c8c671b 100644
--- a/libasm/asm_align.c
+++ b/libasm/asm_align.c
@@ -143,7 +143,7 @@
       /* This is the first block.  */
       size = MAX (2 * len, 960);
 
-      asmscn->content = (struct AsmData *) malloc (sizeof (struct AsmData)
+      asmscn->content = (struct AsmData *) calloc (1, sizeof (struct AsmData)
 						   + size);
       if (asmscn->content == NULL)
 	return -1;
@@ -160,7 +160,7 @@
 
       size = MAX (2 *len, MIN (32768, 2 * asmscn->offset));
 
-      newp = (struct AsmData *) malloc (sizeof (struct AsmData) + size);
+      newp = (struct AsmData *) calloc (1, sizeof (struct AsmData) + size);
       if (newp == NULL)
 	return -1;
 
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 8b0b583..289bb4c 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,25 @@
+2020-10-28  Tom Tromey  <tom@tromey.com>
+
+	PR26773
+	* dwarf_getlocation.c (store_implicit_value): Use
+	__libdw_get_uleb128_unchecked.
+	* memory-access.h (get_sleb128_step): Assume unsigned type for
+	'var'.
+	(__libdw_get_sleb128, __libdw_get_sleb128_unchecked): Work in
+	unsigned type.  Handle final byte.
+
+2020-10-19  Mark Wielaard  <mark@klomp.org>
+
+	* dwarf_frame_register.c (dwarf_frame_register): Declare ops_mem
+	as array of (at least) 3 elements.
+	* libdw.h (dwarf_frame_register): Add extra explanation of ops_mem
+	argument.
+
+2020-10-23  Tom Tromey  <tom@tromey.com>
+
+	* memory-access.h (read_3ubyte_unaligned_inc): Call
+	read_3ubyte_unaligned.
+
 2020-09-03  Mark Wielaard  <mark@klomp.org>
 
 	* dwarf.h: Add DW_CFA_AARCH64_negate_ra_state.
diff --git a/libdw/dwarf_frame_register.c b/libdw/dwarf_frame_register.c
index d0159fb..bcf3fa0 100644
--- a/libdw/dwarf_frame_register.c
+++ b/libdw/dwarf_frame_register.c
@@ -34,7 +34,7 @@
 #include <dwarf.h>
 
 int
-dwarf_frame_register (Dwarf_Frame *fs, int regno, Dwarf_Op *ops_mem,
+dwarf_frame_register (Dwarf_Frame *fs, int regno, Dwarf_Op ops_mem[3],
 		      Dwarf_Op **ops, size_t *nops)
 {
   /* Maybe there was a previous error.  */
diff --git a/libdw/dwarf_getlocation.c b/libdw/dwarf_getlocation.c
index 4617f9e..f2bad5a 100644
--- a/libdw/dwarf_getlocation.c
+++ b/libdw/dwarf_getlocation.c
@@ -130,9 +130,8 @@
   struct loc_block_s *block = libdw_alloc (dbg, struct loc_block_s,
 					   sizeof (struct loc_block_s), 1);
   const unsigned char *data = (const unsigned char *) (uintptr_t) op->number2;
-  uint64_t len = __libdw_get_uleb128 (&data, data + len_leb128 (Dwarf_Word));
-  if (unlikely (len != op->number))
-    return -1;
+  /* Skip the block length.  */
+  __libdw_get_uleb128_unchecked (&data);
   block->addr = op;
   block->data = (unsigned char *) data;
   block->length = op->number;
diff --git a/libdw/libdw.h b/libdw/libdw.h
index 1a4e15a..f63cab1 100644
--- a/libdw/libdw.h
+++ b/libdw/libdw.h
@@ -1061,9 +1061,11 @@
    caller's REGNO is "same_value", i.e. this frame did not change it;
    ask the caller frame where to find it.
 
-   For common simple expressions *OPS is OPS_MEM.  For arbitrary DWARF
-   expressions in the CFI, *OPS is an internal pointer that can be used as
-   long as the Dwarf_CFI used to create FRAME remains alive.  */
+   For common simple expressions *OPS is OPS_MEM (which is a caller
+   owned array for at least 3 Dwarf_Ops).  For arbitrary DWARF
+   expressions in the CFI, *OPS is an internal pointer that can be
+   used as long as the Dwarf_CFI used to create FRAME remains
+   alive.  */
 extern int dwarf_frame_register (Dwarf_Frame *frame, int regno,
 				 Dwarf_Op ops_mem[3],
 				 Dwarf_Op **ops, size_t *nops)
diff --git a/libdw/memory-access.h b/libdw/memory-access.h
index a39ad6d..8b2386e 100644
--- a/libdw/memory-access.h
+++ b/libdw/memory-access.h
@@ -113,19 +113,22 @@
 #define get_sleb128_step(var, addr, nth)				      \
   do {									      \
     unsigned char __b = *(addr)++;					      \
+    (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7);		      \
     if (likely ((__b & 0x80) == 0))					      \
       {									      \
-	struct { signed int i:7; } __s = { .i = __b };			      \
-	(var) |= (typeof (var)) __s.i * ((typeof (var)) 1 << ((nth) * 7));    \
+	if ((__b & 0x40) != 0)						      \
+	  (var) |= - ((typeof (var)) 1 << (((nth) + 1) * 7));		      \
 	return (var);							      \
       }									      \
-    (var) |= (typeof (var)) (__b & 0x7f) << ((nth) * 7);		      \
   } while (0)
 
 static inline int64_t
 __libdw_get_sleb128 (const unsigned char **addrp, const unsigned char *end)
 {
-  int64_t acc = 0;
+  /* Do the work in an unsigned type, but use implementation-defined
+     behavior to cast to signed on return.  This avoids some undefined
+     behavior when shifting.  */
+  uint64_t acc = 0;
 
   /* Unroll the first step to help the compiler optimize
      for the common single-byte case.  */
@@ -134,6 +137,20 @@
   const size_t max = __libdw_max_len_sleb128 (*addrp - 1, end);
   for (size_t i = 1; i < max; ++i)
     get_sleb128_step (acc, *addrp, i);
+  if (*addrp == end)
+    return INT64_MAX;
+
+  /* There might be one extra byte.  */
+  unsigned char b = **addrp;
+  ++*addrp;
+  if (likely ((b & 0x80) == 0))
+    {
+      /* We only need the low bit of the final byte, and as it is the
+	 sign bit, we don't need to do anything else here.  */
+      acc |= ((typeof (acc)) b) << 7 * max;
+      return acc;
+    }
+
   /* Other implementations set VALUE to INT_MAX in this
      case.  So we better do this as well.  */
   return INT64_MAX;
@@ -142,7 +159,10 @@
 static inline int64_t
 __libdw_get_sleb128_unchecked (const unsigned char **addrp)
 {
-  int64_t acc = 0;
+  /* Do the work in an unsigned type, but use implementation-defined
+     behavior to cast to signed on return.  This avoids some undefined
+     behavior when shifting.  */
+  uint64_t acc = 0;
 
   /* Unroll the first step to help the compiler optimize
      for the common single-byte case.  */
@@ -152,6 +172,18 @@
   const size_t max = len_leb128 (int64_t) - 1;
   for (size_t i = 1; i < max; ++i)
     get_sleb128_step (acc, *addrp, i);
+
+  /* There might be one extra byte.  */
+  unsigned char b = **addrp;
+  ++*addrp;
+  if (likely ((b & 0x80) == 0))
+    {
+      /* We only need the low bit of the final byte, and as it is the
+	 sign bit, we don't need to do anything else here.  */
+      acc |= ((typeof (acc)) b) << 7 * max;
+      return acc;
+    }
+
   /* Other implementations set VALUE to INT_MAX in this
      case.  So we better do this as well.  */
   return INT64_MAX;
@@ -363,7 +395,7 @@
 
 
 #define read_3ubyte_unaligned_inc(Dbg, Addr) \
-  ({ uint32_t t_ = read_2ubyte_unaligned (Dbg, Addr);			      \
+  ({ uint32_t t_ = read_3ubyte_unaligned (Dbg, Addr);			      \
      Addr = (__typeof (Addr)) (((uintptr_t) (Addr)) + 3);		      \
      t_; })
 
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index ca10ce8..344db7c 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,15 @@
+2020-09-18  Mark Wielaard  <mark@klomp.org>
+
+	* zstd.c: New file.
+	* libdwflP.h: Add DWFL_E_ZSTD and __libdw_unzstd.
+	* Makefile.am (libdwfl_a_SOURCES): add zstd.c if ZSTD.
+	* gzip.c: Add defines and includes for ZSTD.
+	(zlib_fail): Don't define for ZSTD.
+	(unzip): Change pread_retry failure from zlib_fail to fail.
+	Add ZSTD support.
+	* open.c (decompress): Also try __libdw_unzstd.
+	* linux-kernel-modules.c (check_suffix): Also TRY ".ko.zst".
+
 2020-08-20  Dmitry V. Levin  <ldv@altlinux.org>
 
 	* Makefile.am (libdwfl_a_SOURCES): Conditionalize
diff --git a/libdwfl/Makefile.am b/libdwfl/Makefile.am
index 1de0549..a0013e4 100644
--- a/libdwfl/Makefile.am
+++ b/libdwfl/Makefile.am
@@ -78,6 +78,9 @@
 if LZMA
 libdwfl_a_SOURCES += lzma.c
 endif
+if ZSTD
+libdwfl_a_SOURCES += zstd.c
+endif
 if LIBDEBUGINFOD
 libdwfl_a_SOURCES += debuginfod-client.c
 endif
diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c
index e9988cc..ba8ecfb 100644
--- a/libdwfl/gzip.c
+++ b/libdwfl/gzip.c
@@ -48,6 +48,12 @@
 # define inflateInit(z)	lzma_auto_decoder (z, 1 << 30, 0)
 # define do_inflate(z)	lzma_code (z, LZMA_RUN)
 # define inflateEnd(z)	lzma_end (z)
+#elif defined ZSTD
+# define USE_INFLATE	1
+# include <zstd.h>
+# define unzip		__libdw_unzstd
+# define DWFL_E_ZLIB	DWFL_E_ZSTD
+# define MAGIC		"\x28\xb5\x2f\xfd"
 #elif defined BZLIB
 # define USE_INFLATE	1
 # include <bzlib.h>
@@ -119,6 +125,7 @@
   return failure;
 }
 
+#ifndef ZSTD
 static inline Dwfl_Error
 zlib_fail (struct unzip_state *state, int result)
 {
@@ -132,6 +139,7 @@
       return fail (state, DWFL_E_ZLIB);
     }
 }
+#endif
 
 #if !USE_INFLATE
 static Dwfl_Error
@@ -197,7 +205,7 @@
 
 	  ssize_t n = pread_retry (fd, state.input_buffer, READ_SIZE, start_offset);
 	  if (unlikely (n < 0))
-	    return zlib_fail (&state, Z (ERRNO));
+	    return fail (&state, DWFL_E_ERRNO);
 
 	  state.input_pos = n;
 	  mapped = state.input_buffer;
@@ -223,7 +231,74 @@
     /* Not a compressed file.  */
     return DWFL_E_BADELF;
 
-#if USE_INFLATE
+#ifdef ZSTD
+  /* special case for libzstd since it is slightly different from the
+     API provided by bzlib and liblzma.  */
+
+  void *next_in = mapped;
+  size_t avail_in = state.mapped_size;
+  void *next_out = NULL;
+  size_t avail_out = 0;
+  size_t total_out = 0;
+
+  size_t result;
+  ZSTD_DCtx *dctx = ZSTD_createDCtx();
+  if (dctx == NULL)
+    return fail (&state, DWFL_E_NOMEM);
+
+  do
+    {
+      if (avail_in == 0 && state.input_buffer != NULL)
+	{
+	  ssize_t n = pread_retry (fd, state.input_buffer, READ_SIZE,
+				   start_offset + state.input_pos);
+	  if (unlikely (n < 0))
+	    {
+	      ZSTD_freeDCtx (dctx);
+	      return fail (&state, DWFL_E_ERRNO);
+	    }
+	  next_in = state.input_buffer;
+	  avail_in = n;
+	  state.input_pos += n;
+	}
+      if (avail_out == 0)
+	{
+	  ptrdiff_t pos = (void *) next_out - state.buffer;
+	  if (!bigger_buffer (&state, avail_in))
+	    {
+	      ZSTD_freeDCtx (dctx);
+	      return fail (&state, DWFL_E_NOMEM);
+	    }
+	  next_out = state.buffer + pos;
+	  avail_out = state.size - pos;
+	}
+
+      ZSTD_inBuffer input = { next_in, avail_in, 0 };
+      ZSTD_outBuffer output = { next_out, avail_out, 0 };
+      result = ZSTD_decompressStream (dctx, &output, &input);
+
+      if (! ZSTD_isError (result))
+	{
+	  total_out += output.pos;
+	  next_out += output.pos;
+	  avail_out -= output.pos;
+	  next_in += input.pos;
+	  avail_in -= input.pos;
+	}
+
+      if (result == 0)
+	break;
+    }
+  while (avail_in > 0 && ! ZSTD_isError (result));
+
+  ZSTD_freeDCtx (dctx);
+
+  if (ZSTD_isError (result))
+    return fail (&state, DWFL_E_ZSTD);
+
+  smaller_buffer (&state, total_out);
+
+#elif USE_INFLATE
 
   /* This style actually only works with bzlib and liblzma.
      The stupid zlib interface has nothing to grok the
diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h
index ad6779a..4c6fcb2 100644
--- a/libdwfl/libdwflP.h
+++ b/libdwfl/libdwflP.h
@@ -61,6 +61,7 @@
   DWFL_ERROR (ZLIB, N_("gzip decompression failed"))			      \
   DWFL_ERROR (BZLIB, N_("bzip2 decompression failed"))			      \
   DWFL_ERROR (LZMA, N_("LZMA decompression failed"))			      \
+  DWFL_ERROR (ZSTD, N_("zstd decompression failed"))			      \
   DWFL_ERROR (UNKNOWN_MACHINE, N_("no support library found for machine"))    \
   DWFL_ERROR (NOREL, N_("Callbacks missing for ET_REL file"))		      \
   DWFL_ERROR (BADRELTYPE, N_("Unsupported relocation type"))		      \
@@ -612,6 +613,10 @@
 				  void *mapped, size_t mapped_size,
 				  void **whole, size_t *whole_size)
   internal_function;
+extern Dwfl_Error __libdw_unzstd (int fd, off_t start_offset,
+				  void *mapped, size_t mapped_size,
+				  void **whole, size_t *whole_size)
+  internal_function;
 
 /* Skip the image header before a file image: updates *START_OFFSET.  */
 extern Dwfl_Error __libdw_image_header (int fd, off_t *start_offset,
diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
index 548cb56..6edb27f 100644
--- a/libdwfl/linux-kernel-modules.c
+++ b/libdwfl/linux-kernel-modules.c
@@ -357,6 +357,9 @@
 #if USE_LZMA
   TRY (".ko.xz");
 #endif
+#if USE_ZSTD
+  TRY (".ko.zst");
+#endif
 
   return 0;
 
diff --git a/libdwfl/open.c b/libdwfl/open.c
index 35fc528..77bd2bd 100644
--- a/libdwfl/open.c
+++ b/libdwfl/open.c
@@ -44,6 +44,10 @@
 # define __libdw_unlzma(...)	DWFL_E_BADELF
 #endif
 
+#if !USE_ZSTD
+# define __libdw_unzstd(...)	DWFL_E_BADELF
+#endif
+
 /* Consumes and replaces *ELF only on success.  */
 static Dwfl_Error
 decompress (int fd __attribute__ ((unused)), Elf **elf)
@@ -64,6 +68,8 @@
     error = __libdw_bunzip2 (fd, offset, mapped, mapped_size, &buffer, &size);
   if (error == DWFL_E_BADELF)
     error = __libdw_unlzma (fd, offset, mapped, mapped_size, &buffer, &size);
+  if (error == DWFL_E_BADELF)
+    error = __libdw_unzstd (fd, offset, mapped, mapped_size, &buffer, &size);
 
   if (error == DWFL_E_NOERROR)
     {
diff --git a/libdwfl/zstd.c b/libdwfl/zstd.c
new file mode 100644
index 0000000..dc4d523
--- /dev/null
+++ b/libdwfl/zstd.c
@@ -0,0 +1,4 @@
+/* libzstd is pretty close to zlib and bzlib.  */
+
+#define ZSTD
+#include "gzip.c"
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index aa43b31..863e4d5 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,17 @@
+2020-10-19  Mark Wielaard  <mark@klomp.org>
+
+	* eblopenbackend.c (tilegx_init): Removed.
+	(machines): Set init to NULL for tilegx.
+
+2020-10-19  Mark Wielaard  <mark@klomp.org>
+
+	* Makefile.am (libebl_a_SOURCES): Remove ebl_syscall_abi.c.
+	* ebl-hooks.h (syscall_abi): Remove.
+	* ebl_syscall_abi.c: Delete.
+	* eblopenbackend.c (default_syscall_abi): Remove.
+	(fill_defaults): Remove syscall_abi assignment.
+	* libebl.h (ebl_syscall_abi): Remove.
+
 2020-09-03  Mark Wielaard  <mark@klomp.org>
 
 	* eblobjnote.c (ebl_object_note): For EM_AARCH64 handle BTI and PAC
diff --git a/libebl/Makefile.am b/libebl/Makefile.am
index d0d475b..d84e7ee 100644
--- a/libebl/Makefile.am
+++ b/libebl/Makefile.am
@@ -51,7 +51,7 @@
 		   eblbsspltp.c eblretval.c eblreginfo.c eblnonerelocp.c \
 		   eblrelativerelocp.c eblsysvhashentrysize.c eblauxvinfo.c \
 		   eblcheckobjattr.c ebl_check_special_section.c \
-		   ebl_syscall_abi.c eblabicfi.c eblstother.c eblinitreg.c \
+		   eblabicfi.c eblstother.c eblinitreg.c \
 		   ebldwarftoregno.c eblnormalizepc.c eblunwind.c \
 		   eblresolvesym.c eblcheckreloctargettype.c \
 		   ebl_data_marker_symbol.c
diff --git a/libebl/ebl-hooks.h b/libebl/ebl-hooks.h
index 1e7960b..1214bb8 100644
--- a/libebl/ebl-hooks.h
+++ b/libebl/ebl-hooks.h
@@ -142,10 +142,6 @@
 				const char **prefix, const char **setname,
 				int *bits, int *type);
 
-/* Return system call ABI registers.  */
-int EBLHOOK(syscall_abi) (Ebl *ebl, int *sp, int *pc,
-			  int *callno, int args[6]);
-
 /* Disassembler function.  */
 int EBLHOOK(disasm) (Ebl *ebl, const uint8_t **startp, const uint8_t *end,
 		     GElf_Addr addr, const char *fmt, DisasmOutputCB_t outcb,
diff --git a/libebl/ebl_syscall_abi.c b/libebl/ebl_syscall_abi.c
deleted file mode 100644
index a25369d..0000000
--- a/libebl/ebl_syscall_abi.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Return system call ABI mapped to DWARF register numbers.
-   Copyright (C) 2008 Red Hat, Inc.
-   This file is part of elfutils.
-
-   This file is free software; you can redistribute it and/or modify
-   it under the terms of either
-
-     * the GNU Lesser General Public License as published by the Free
-       Software Foundation; either version 3 of the License, or (at
-       your option) any later version
-
-   or
-
-     * the GNU General Public License as published by the Free
-       Software Foundation; either version 2 of the License, or (at
-       your option) any later version
-
-   or both in parallel, as here.
-
-   elfutils is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received copies of the GNU General Public License and
-   the GNU Lesser General Public License along with this program.  If
-   not, see <http://www.gnu.org/licenses/>.  */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <libeblP.h>
-
-
-int
-ebl_syscall_abi (Ebl *ebl, int *sp, int *pc, int *callno, int *args)
-{
-  return ebl != NULL ? ebl->syscall_abi (ebl, sp, pc, callno, args) : -1;
-}
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
index b3b6fc0..a8af165 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -52,7 +52,6 @@
 Ebl *ppc_init (Elf *, GElf_Half, Ebl *);
 Ebl *ppc64_init (Elf *, GElf_Half, Ebl *);
 Ebl *s390_init (Elf *, GElf_Half, Ebl *);
-Ebl *tilegx_init (Elf *, GElf_Half, Ebl *);
 Ebl *m68k_init (Elf *, GElf_Half, Ebl *);
 Ebl *bpf_init (Elf *, GElf_Half, Ebl *);
 Ebl *riscv_init (Elf *, GElf_Half, Ebl *);
@@ -79,7 +78,6 @@
   { x86_64_init, "elf_x86_64", "x86_64", 6, EM_X86_64, ELFCLASS64, ELFDATA2LSB },
   { ppc_init, "elf_ppc", "ppc", 3, EM_PPC, ELFCLASS32, ELFDATA2MSB },
   { ppc64_init, "elf_ppc64", "ppc64", 5, EM_PPC64, ELFCLASS64, ELFDATA2MSB },
-  { tilegx_init, "elf_tilegx", "tilegx", 6, EM_TILEGX, ELFCLASS64, ELFDATA2LSB },
   // XXX class and machine fields need to be filled in for all archs.
   { sh_init, "elf_sh", "sh", 2, EM_SH, 0, 0 },
   { arm_init, "ebl_arm", "arm", 3, EM_ARM, 0, 0 },
@@ -88,6 +86,7 @@
   { sparc_init, "elf_sparcv8plus", "sparc", 5, EM_SPARC32PLUS, 0, 0 },
   { s390_init, "ebl_s390", "s390", 4, EM_S390, 0, 0 },
 
+  { NULL, "elf_tilegx", "tilegx", 6, EM_TILEGX, ELFCLASS64, ELFDATA2LSB },
   { NULL, "elf_m32", "m32", 3, EM_M32, 0, 0 },
   { m68k_init, "elf_m68k", "m68k", 4, EM_68K, ELFCLASS32, ELFDATA2MSB },
   { NULL, "elf_m88k", "m88k", 4, EM_88K, 0, 0 },
@@ -214,8 +213,6 @@
 				      const char **prefix,
 				      const char **setname,
 				      int *bits, int *type);
-static int default_syscall_abi (Ebl *ebl, int *sp, int *pc,
-				int *callno, int args[6]);
 static bool default_check_object_attribute (Ebl *ebl, const char *vendor,
 					    int tag, uint64_t value,
 					    const char **tag_name,
@@ -259,7 +256,6 @@
   result->bss_plt_p = default_bss_plt_p;
   result->return_value_location = default_return_value_location;
   result->register_info = default_register_info;
-  result->syscall_abi = default_syscall_abi;
   result->check_object_attribute = default_check_object_attribute;
   result->check_reloc_target_type = default_check_reloc_target_type;
   result->disasm = NULL;
@@ -690,20 +686,6 @@
   return snprintf (name, namelen, "reg%d", regno);
 }
 
-static int
-default_syscall_abi (Ebl *ebl __attribute__ ((unused)),
-		     int *sp, int *pc, int *callno, int args[6])
-{
-  *sp = *pc = *callno = -1;
-  args[0] = -1;
-  args[1] = -1;
-  args[2] = -1;
-  args[3] = -1;
-  args[4] = -1;
-  args[5] = -1;
-  return -1;
-}
-
 static bool
 default_check_object_attribute (Ebl *ebl __attribute__ ((unused)),
 				const char *vendor  __attribute__ ((unused)),
diff --git a/libebl/libebl.h b/libebl/libebl.h
index 23c0e95..731001d 100644
--- a/libebl/libebl.h
+++ b/libebl/libebl.h
@@ -241,14 +241,6 @@
 				  const char **prefix, const char **setname,
 				  int *bits, int *type);
 
-/* Fill in the DWARF register numbers for the registers used in system calls.
-   The SP and PC are what kernel reports call the user stack pointer and PC.
-   The CALLNO and ARGS are the system call number and incoming arguments.
-   Each of these is filled with the DWARF register number corresponding,
-   or -1 if there is none.  Returns zero when the information is available.  */
-extern int ebl_syscall_abi (Ebl *ebl, int *sp, int *pc,
-			    int *callno, int args[6]);
-
 /* Supply the ABI-specified state of DWARF CFI before CIE initial programs.
 
    The DWARF 3.0 spec says that the default initial states of all registers
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index a3f1588..b15508f 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,7 @@
+2020-10-28  Mark Wielaard  <mark@klomp.org>
+
+	* elf.h: Update from glibc.
+
 2020-08-28  Mark Wielaard  <mark@klomp.org>
 
 	* elf.h: Update from glibc.
diff --git a/libelf/elf.h b/libelf/elf.h
index ff9f1da..6439c1a 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -19,10 +19,6 @@
 #ifndef _ELF_H
 #define	_ELF_H 1
 
-#include <features.h>
-
-__BEGIN_DECLS
-
 /* Standard ELF types.  */
 
 #include <stdint.h>
@@ -4105,6 +4101,4 @@
 #define R_ARC_TLS_LE_S9		0x4a
 #define R_ARC_TLS_LE_32		0x4b
 
-__END_DECLS
-
 #endif	/* elf.h */
diff --git a/po/ChangeLog b/po/ChangeLog
index 1506f34..af3fe34 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2020-10-31  Mark Wielaard  <mark@klomp.org>
+
+	* *.po: Update for 0.182.
+
 2020-09-08  Mark Wielaard  <mark@klomp.org>
 
 	* *.po: Update for 0.181.
diff --git a/po/de.po b/po/de.po
index 4f6e00b..0669297 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: elfutils VERSION\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-09-08 12:51+0200\n"
+"POT-Creation-Date: 2020-10-31 17:37+0100\n"
 "PO-Revision-Date: 2009-06-29 15:15+0200\n"
 "Last-Translator: Michael Münch <micm@fedoraproject.org>\n"
 "Language-Team: German\n"
@@ -55,7 +55,7 @@
 "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11424 src/unstrip.c:2395 src/unstrip.c:2600
+#: src/readelf.c:11486 src/unstrip.c:316 src/unstrip.c:2401 src/unstrip.c:2606
 #, c-format
 msgid "memory exhausted"
 msgstr "Kein Speicher mehr verfügbar"
@@ -218,7 +218,7 @@
 msgid "invalid directory index"
 msgstr "ungültiger Verzeichnisindex"
 
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:75
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:76
 msgid "address out of range"
 msgstr "Außerhalb des Adressbereiches"
 
@@ -249,7 +249,7 @@
 msgid "invalid address range index"
 msgstr "Ungültiger Adressbereichs Index"
 
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:76
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:77
 msgid "no matching address range"
 msgstr "Kein passender Adressbereich"
 
@@ -298,7 +298,7 @@
 msgid ".debug_addr section missing"
 msgstr ".debug_line Sektion fehlt"
 
-#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2541
+#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2547
 msgid "Input selection options:"
 msgstr "Eingabeauswahloptionen:"
 
@@ -392,136 +392,140 @@
 msgstr ""
 
 #: libdwfl/libdwflP.h:64
-msgid "no support library found for machine"
+msgid "zstd decompression failed"
 msgstr ""
 
 #: libdwfl/libdwflP.h:65
-msgid "Callbacks missing for ET_REL file"
+msgid "no support library found for machine"
 msgstr ""
 
 #: libdwfl/libdwflP.h:66
-msgid "Unsupported relocation type"
+msgid "Callbacks missing for ET_REL file"
 msgstr ""
 
 #: libdwfl/libdwflP.h:67
+msgid "Unsupported relocation type"
+msgstr ""
+
+#: libdwfl/libdwflP.h:68
 msgid "r_offset is bogus"
 msgstr ""
 
-#: libdwfl/libdwflP.h:68 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:69 libelf/elf_error.c:115 libelf/elf_error.c:175
 msgid "offset out of range"
 msgstr "Offset ausserhalb des Bereichs"
 
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
 #, fuzzy
 msgid "relocation refers to undefined symbol"
 msgstr "Zeige Grösse der definierten Symbole"
 
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
 msgid "Callback returned failure"
 msgstr ""
 
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
 #, fuzzy
 msgid "No DWARF information found"
 msgstr "keine DWARF Information"
 
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:73
 msgid "No symbol table found"
 msgstr ""
 
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:74
 #, fuzzy
 msgid "No ELF program headers"
 msgstr "Programm-Köpfe anzeigen"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
 msgid "address range overlaps an existing module"
 msgstr ""
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
 msgid "image truncated"
 msgstr ""
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
 #, fuzzy
 msgid "ELF file opened"
 msgstr "keine ELF Datei"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
 #, fuzzy
 msgid "not a valid ELF file"
 msgstr "Ungültige ELF Datei"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
 #, fuzzy
 msgid "cannot handle DWARF type description"
 msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
 msgid "ELF file does not match build ID"
 msgstr ""
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
 #, fuzzy
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
 msgid "Internal error due to ebl"
 msgstr ""
 
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
 msgid "Missing data in core file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
 #, fuzzy
 msgid "Invalid register"
 msgstr "ungültiger Parameter"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
 msgid "Error reading process memory"
 msgstr ""
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
 msgid "Couldn't find architecture of any ELF"
 msgstr ""
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
 msgid "Error parsing /proc filesystem"
 msgstr ""
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
 #, fuzzy
 msgid "Invalid DWARF"
 msgstr "DWARF ungültig"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
 msgid "Unsupported DWARF"
 msgstr ""
 
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
 msgid "Unable to find more threads"
 msgstr ""
 
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
 msgid "Dwfl already has attached state"
 msgstr ""
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
 msgid "Dwfl has no attached state"
 msgstr ""
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:95
 msgid "Unwinding not supported for this architecture"
 msgstr ""
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:96
 #, fuzzy
 msgid "Invalid argument"
 msgstr "ungültiger Parameter"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:97
 #, fuzzy
 msgid "Not an ET_CORE ELF file"
 msgstr "Ungültige ELF Datei"
@@ -627,7 +631,7 @@
 msgid "invalid size of destination operand"
 msgstr "ungültige Grösse des Ziel-Operanden"
 
-#: libelf/elf_error.c:87 src/readelf.c:6172
+#: libelf/elf_error.c:87 src/readelf.c:6197
 #, c-format
 msgid "invalid encoding"
 msgstr "ungültige Kodierung"
@@ -715,8 +719,8 @@
 msgid "invalid section header"
 msgstr "ungültiger Abschnitts-Header"
 
-#: libelf/elf_error.c:191 src/readelf.c:9935 src/readelf.c:10535
-#: src/readelf.c:10636 src/readelf.c:10818
+#: libelf/elf_error.c:191 src/readelf.c:9997 src/readelf.c:10597
+#: src/readelf.c:10698 src/readelf.c:10880
 #, c-format
 msgid "invalid data"
 msgstr "Ungültige Daten"
@@ -1375,7 +1379,7 @@
 
 #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2191 src/unstrip.c:2220
+#: src/unstrip.c:2197 src/unstrip.c:2226
 #, c-format
 msgid "cannot open '%s'"
 msgstr "'%s' kann nicht geöffnet werden"
@@ -3490,8 +3494,8 @@
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11251 src/readelf.c:12441
-#: src/readelf.c:12652 src/readelf.c:12721 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11313 src/readelf.c:12503
+#: src/readelf.c:12714 src/readelf.c:12783 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3808,11 +3812,11 @@
 msgid "cannot get section: %s"
 msgstr ""
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12672
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:606
-#: src/unstrip.c:627 src/unstrip.c:667 src/unstrip.c:883 src/unstrip.c:1214
-#: src/unstrip.c:1341 src/unstrip.c:1365 src/unstrip.c:1421 src/unstrip.c:1485
-#: src/unstrip.c:1660 src/unstrip.c:1811 src/unstrip.c:1954 src/unstrip.c:2053
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12734
+#: src/unstrip.c:401 src/unstrip.c:432 src/unstrip.c:491 src/unstrip.c:612
+#: src/unstrip.c:633 src/unstrip.c:673 src/unstrip.c:889 src/unstrip.c:1220
+#: src/unstrip.c:1347 src/unstrip.c:1371 src/unstrip.c:1427 src/unstrip.c:1491
+#: src/unstrip.c:1666 src/unstrip.c:1817 src/unstrip.c:1960 src/unstrip.c:2059
 #, c-format
 msgid "cannot get section header: %s"
 msgstr ""
@@ -3822,8 +3826,8 @@
 msgid "cannot get section name"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:670 src/readelf.c:6585 src/readelf.c:10523 src/readelf.c:10625
-#: src/readelf.c:10803
+#: src/readelf.c:670 src/readelf.c:6610 src/readelf.c:10585 src/readelf.c:10687
+#: src/readelf.c:10865
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr ""
@@ -4145,7 +4149,7 @@
 "  Segment Sections..."
 msgstr ""
 
-#: src/readelf.c:1460 src/unstrip.c:2112 src/unstrip.c:2154 src/unstrip.c:2161
+#: src/readelf.c:1460 src/unstrip.c:2118 src/unstrip.c:2160 src/unstrip.c:2167
 #, c-format
 msgid "cannot get program header: %s"
 msgstr ""
@@ -4180,8 +4184,8 @@
 msgid "<INVALID SECTION>"
 msgstr ""
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12543
-#: src/readelf.c:12550 src/readelf.c:12594 src/readelf.c:12601
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12605
+#: src/readelf.c:12612 src/readelf.c:12656 src/readelf.c:12663
 msgid "Couldn't uncompress section"
 msgstr ""
 
@@ -4191,7 +4195,7 @@
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
 #: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5389
 #, fuzzy, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "ungültige .debug_line Sektion"
@@ -4603,7 +4607,7 @@
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:5054
+#: src/readelf.c:5079
 #, c-format
 msgid ""
 "\n"
@@ -4611,79 +4615,79 @@
 " [ Code]\n"
 msgstr ""
 
-#: src/readelf.c:5062
+#: src/readelf.c:5087
 #, c-format
 msgid ""
 "\n"
 "Abbreviation section at offset %<PRIu64>:\n"
 msgstr ""
 
-#: src/readelf.c:5075
+#: src/readelf.c:5100
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr ""
 
-#: src/readelf.c:5091
+#: src/readelf.c:5116
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr ""
 
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6595 src/readelf.c:8332 src/readelf.c:9024 src/readelf.c:9460
-#: src/readelf.c:9711 src/readelf.c:9877 src/readelf.c:10264
-#: src/readelf.c:10324
+#: src/readelf.c:5149 src/readelf.c:5458 src/readelf.c:5625 src/readelf.c:6010
+#: src/readelf.c:6620 src/readelf.c:8357 src/readelf.c:9049 src/readelf.c:9522
+#: src/readelf.c:9773 src/readelf.c:9939 src/readelf.c:10326
+#: src/readelf.c:10386
 #, c-format
 msgid ""
 "\n"
 "DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:5137
+#: src/readelf.c:5162
 #, fuzzy, c-format
 msgid "cannot get .debug_addr section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9069
+#: src/readelf.c:5262 src/readelf.c:5286 src/readelf.c:5670 src/readelf.c:9094
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9082
+#: src/readelf.c:5264 src/readelf.c:5301 src/readelf.c:5683 src/readelf.c:9107
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9091
+#: src/readelf.c:5265 src/readelf.c:5310 src/readelf.c:5692 src/readelf.c:9116
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9101
+#: src/readelf.c:5267 src/readelf.c:5320 src/readelf.c:5702 src/readelf.c:9126
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9086 src/readelf.c:10456
+#: src/readelf.c:5305 src/readelf.c:5687 src/readelf.c:9111 src/readelf.c:10518
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "unbekannte Version"
 
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9096
+#: src/readelf.c:5315 src/readelf.c:5528 src/readelf.c:5697 src/readelf.c:9121
 #, fuzzy, c-format
 msgid "unsupported address size"
 msgstr "Kein Adress-Wert"
 
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9106
+#: src/readelf.c:5326 src/readelf.c:5539 src/readelf.c:5707 src/readelf.c:9131
 #, c-format
 msgid "unsupported segment size"
 msgstr ""
 
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5379 src/readelf.c:5453
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ""
 
-#: src/readelf.c:5369
+#: src/readelf.c:5394
 #, c-format
 msgid ""
 "\n"
@@ -4694,239 +4698,239 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:5400
+#: src/readelf.c:5425
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5402
+#: src/readelf.c:5427
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:5446 src/readelf.c:8359
+#: src/readelf.c:5471 src/readelf.c:8384
 #, c-format
 msgid ""
 "\n"
 "Table at offset %zu:\n"
 msgstr ""
 
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6619 src/readelf.c:8370
-#: src/readelf.c:9050
+#: src/readelf.c:5475 src/readelf.c:5651 src/readelf.c:6644 src/readelf.c:8395
+#: src/readelf.c:9075
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr ""
 
-#: src/readelf.c:5466
+#: src/readelf.c:5491
 #, fuzzy, c-format
 msgid ""
 "\n"
 " Length:        %6<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5478
+#: src/readelf.c:5503
 #, fuzzy, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5482
+#: src/readelf.c:5507
 #, c-format
 msgid "unsupported aranges version"
 msgstr ""
 
-#: src/readelf.c:5493
+#: src/readelf.c:5518
 #, fuzzy, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5499
+#: src/readelf.c:5524
 #, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:5510
+#: src/readelf.c:5535
 #, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:5565
+#: src/readelf.c:5590
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr ""
 
-#: src/readelf.c:5609
+#: src/readelf.c:5634
 #, fuzzy, c-format
 msgid "cannot get .debug_rnglists content: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:5632 src/readelf.c:9056
+#: src/readelf.c:5657 src/readelf.c:9081
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5687 src/readelf.c:9111
+#: src/readelf.c:5712 src/readelf.c:9136
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5703 src/readelf.c:9127
+#: src/readelf.c:5728 src/readelf.c:9152
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5705 src/readelf.c:9129
+#: src/readelf.c:5730 src/readelf.c:9154
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5711 src/readelf.c:9135
+#: src/readelf.c:5736 src/readelf.c:9160
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5722 src/readelf.c:9146
+#: src/readelf.c:5747 src/readelf.c:9171
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5726 src/readelf.c:9150
+#: src/readelf.c:5751 src/readelf.c:9175
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5778
+#: src/readelf.c:5803
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "Ungültige Daten"
 
-#: src/readelf.c:5963 src/readelf.c:9438
+#: src/readelf.c:5988 src/readelf.c:9500
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:5980
+#: src/readelf.c:6005
 #, c-format
 msgid "cannot get .debug_ranges content: %s"
 msgstr ""
 
-#: src/readelf.c:6016 src/readelf.c:9493
+#: src/readelf.c:6041 src/readelf.c:9555
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6018 src/readelf.c:9495
+#: src/readelf.c:6043 src/readelf.c:9557
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6027 src/readelf.c:9521 src/readelf.c:9547
+#: src/readelf.c:6052 src/readelf.c:9583 src/readelf.c:9609
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:6052 src/readelf.c:9631
+#: src/readelf.c:6077 src/readelf.c:9693
 #, fuzzy
 msgid "base address"
 msgstr "Außerhalb des Adressbereiches"
 
-#: src/readelf.c:6062 src/readelf.c:9641
+#: src/readelf.c:6087 src/readelf.c:9703
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:6317
+#: src/readelf.c:6342
 msgid "         <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:6573
+#: src/readelf.c:6598
 #, fuzzy, c-format
 msgid "cannot get ELF: %s"
 msgstr "ELF Kopf konnte nicht ausgelesen werden"
 
-#: src/readelf.c:6591
+#: src/readelf.c:6616
 #, c-format
 msgid ""
 "\n"
 "Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:6641
+#: src/readelf.c:6666
 #, c-format
 msgid ""
 "\n"
 " [%6tx] Zero terminator\n"
 msgstr ""
 
-#: src/readelf.c:6742 src/readelf.c:6896
+#: src/readelf.c:6767 src/readelf.c:6921
 #, fuzzy, c-format
 msgid "invalid augmentation length"
 msgstr "ungültige Abschnittsausrichtung"
 
-#: src/readelf.c:6757
+#: src/readelf.c:6782
 msgid "FDE address encoding: "
 msgstr ""
 
-#: src/readelf.c:6763
+#: src/readelf.c:6788
 msgid "LSDA pointer encoding: "
 msgstr ""
 
-#: src/readelf.c:6873
+#: src/readelf.c:6898
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:6880
+#: src/readelf.c:6905
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:6917
+#: src/readelf.c:6942
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:7002
+#: src/readelf.c:7027
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr ""
 
-#: src/readelf.c:7012
+#: src/readelf.c:7037
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr ""
 
-#: src/readelf.c:7034
+#: src/readelf.c:7059
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr ""
 
-#: src/readelf.c:7364
+#: src/readelf.c:7389
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "Ungültige Datei"
 
-#: src/readelf.c:7368
+#: src/readelf.c:7393
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr "unbekannte Form %<PRIx64>"
 
-#: src/readelf.c:7372
+#: src/readelf.c:7397
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "ELF Kopf konnte nicht ausgelesen werden"
 
-#: src/readelf.c:7685
+#: src/readelf.c:7710
 #, c-format
 msgid ""
 "\n"
@@ -4934,12 +4938,12 @@
 " [Offset]\n"
 msgstr ""
 
-#: src/readelf.c:7735
+#: src/readelf.c:7760
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:7754
+#: src/readelf.c:7779
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -4948,7 +4952,7 @@
 " Type signature: %#<PRIx64>, Type offset: %#<PRIx64> [%<PRIx64>]\n"
 msgstr ""
 
-#: src/readelf.c:7766
+#: src/readelf.c:7791
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -4956,37 +4960,37 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:7776 src/readelf.c:7939
+#: src/readelf.c:7801 src/readelf.c:7964
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:7803
+#: src/readelf.c:7828
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:7832
+#: src/readelf.c:7857
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr ""
 
-#: src/readelf.c:7841
+#: src/readelf.c:7866
 #, fuzzy, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:7879
+#: src/readelf.c:7904
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr ""
 
-#: src/readelf.c:7887
+#: src/readelf.c:7912
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr ""
 
-#: src/readelf.c:7931
+#: src/readelf.c:7956
 #, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -4994,7 +4998,7 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:7983
+#: src/readelf.c:8008
 #, c-format
 msgid ""
 "\n"
@@ -5002,18 +5006,18 @@
 "\n"
 msgstr ""
 
-#: src/readelf.c:8315
+#: src/readelf.c:8340
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "unbekannte Form %<PRIx64>"
 
-#: src/readelf.c:8346
+#: src/readelf.c:8371
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr ""
 
 #. Print what we got so far.
-#: src/readelf.c:8448
+#: src/readelf.c:8473
 #, c-format
 msgid ""
 "\n"
@@ -5032,177 +5036,177 @@
 "Opcodes:\n"
 msgstr ""
 
-#: src/readelf.c:8470
+#: src/readelf.c:8495
 #, fuzzy, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:8478
+#: src/readelf.c:8503
 #, fuzzy, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "Kein Adress-Wert"
 
-#: src/readelf.c:8486
+#: src/readelf.c:8511
 #, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr ""
 
-#: src/readelf.c:8496
+#: src/readelf.c:8521
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr ""
 
-#: src/readelf.c:8511
+#: src/readelf.c:8536
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:8522
+#: src/readelf.c:8547
 msgid ""
 "\n"
 "Directory table:"
 msgstr ""
 
-#: src/readelf.c:8528 src/readelf.c:8605
+#: src/readelf.c:8553 src/readelf.c:8630
 #, fuzzy, c-format
 msgid "      ["
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:8599
+#: src/readelf.c:8624
 msgid ""
 "\n"
 "File name table:"
 msgstr ""
 
-#: src/readelf.c:8660
+#: src/readelf.c:8685
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
 
-#: src/readelf.c:8699
+#: src/readelf.c:8724
 msgid ""
 "\n"
 "No line number statements."
 msgstr ""
 
-#: src/readelf.c:8703
+#: src/readelf.c:8728
 msgid ""
 "\n"
 "Line number statements:"
 msgstr ""
 
-#: src/readelf.c:8726
+#: src/readelf.c:8751
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr ""
 
-#: src/readelf.c:8760
+#: src/readelf.c:8785
 #, c-format
 msgid " special opcode %u: address+%u = "
 msgstr ""
 
-#: src/readelf.c:8764
+#: src/readelf.c:8789
 #, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:8767
+#: src/readelf.c:8792
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:8785
+#: src/readelf.c:8810
 #, c-format
 msgid " extended opcode %u: "
 msgstr ""
 
-#: src/readelf.c:8790
+#: src/readelf.c:8815
 msgid " end of sequence"
 msgstr ""
 
-#: src/readelf.c:8808
+#: src/readelf.c:8833
 #, fuzzy, c-format
 msgid " set address to "
 msgstr "Außerhalb des Adressbereiches"
 
-#: src/readelf.c:8836
+#: src/readelf.c:8861
 #, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 
-#: src/readelf.c:8850
+#: src/readelf.c:8875
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr ""
 
 #. Unknown, ignore it.
-#: src/readelf.c:8855
+#: src/readelf.c:8880
 #, fuzzy
 msgid " unknown opcode"
 msgstr "unbekannter Typ"
 
 #. Takes no argument.
-#: src/readelf.c:8867
+#: src/readelf.c:8892
 msgid " copy"
 msgstr ""
 
-#: src/readelf.c:8878
+#: src/readelf.c:8903
 #, c-format
 msgid " advance address by %u to "
 msgstr ""
 
-#: src/readelf.c:8882 src/readelf.c:8943
+#: src/readelf.c:8907 src/readelf.c:8968
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:8894
+#: src/readelf.c:8919
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:8904
+#: src/readelf.c:8929
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:8915
+#: src/readelf.c:8940
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:8922
+#: src/readelf.c:8947
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr ""
 
 #. Takes no argument.
-#: src/readelf.c:8928
+#: src/readelf.c:8953
 msgid " set basic block flag"
 msgstr ""
 
-#: src/readelf.c:8939
+#: src/readelf.c:8964
 #, c-format
 msgid " advance address by constant %u to "
 msgstr ""
 
-#: src/readelf.c:8959
+#: src/readelf.c:8984
 #, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr ""
 
 #. Takes no argument.
-#: src/readelf.c:8969
+#: src/readelf.c:8994
 msgid " set prologue end flag"
 msgstr ""
 
 #. Takes no argument.
-#: src/readelf.c:8974
+#: src/readelf.c:8999
 msgid " set epilogue begin flag"
 msgstr ""
 
-#: src/readelf.c:8984
+#: src/readelf.c:9009
 #, c-format
 msgid " set isa to %u\n"
 msgstr ""
@@ -5210,103 +5214,108 @@
 #. This is a new opcode the generator but not we know about.
 #. Read the parameters associated with it but then discard
 #. everything.  Read all the parameters for this opcode.
-#: src/readelf.c:8993
+#: src/readelf.c:9018
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:9033
+#: src/readelf.c:9058
 #, fuzzy, c-format
 msgid "cannot get .debug_loclists content: %s"
 msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s"
 
-#: src/readelf.c:9202
+#: src/readelf.c:9224
+#, c-format
+msgid "    <INVALID DATA>\n"
+msgstr ""
+
+#: src/readelf.c:9264
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "Ungültige Daten"
 
-#: src/readelf.c:9455
+#: src/readelf.c:9517
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr ""
 
-#: src/readelf.c:9668 src/readelf.c:10712
+#: src/readelf.c:9730 src/readelf.c:10774
 msgid "   <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:9723 src/readelf.c:9886
+#: src/readelf.c:9785 src/readelf.c:9948
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr ""
 
-#: src/readelf.c:9803
+#: src/readelf.c:9865
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr ""
 
-#: src/readelf.c:9826
+#: src/readelf.c:9888
 #, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr ""
 
-#: src/readelf.c:9927
+#: src/readelf.c:9989
 #, fuzzy, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:9939
+#: src/readelf.c:10001
 #, fuzzy, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:9945 src/readelf.c:10832
+#: src/readelf.c:10007 src/readelf.c:10894
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr ""
 
-#: src/readelf.c:9952
+#: src/readelf.c:10014
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:9981
+#: src/readelf.c:10043
 #, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:9989
+#: src/readelf.c:10051
 #, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:10014
+#: src/readelf.c:10076
 #, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr ""
 
-#: src/readelf.c:10021
+#: src/readelf.c:10083
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr ""
 
-#: src/readelf.c:10033
+#: src/readelf.c:10095
 #, c-format
 msgid " %<PRIu8> arguments:"
 msgstr ""
 
-#: src/readelf.c:10048
+#: src/readelf.c:10110
 #, c-format
 msgid " no arguments."
 msgstr ""
 
-#: src/readelf.c:10249
+#: src/readelf.c:10311
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
 
-#: src/readelf.c:10293
+#: src/readelf.c:10355
 #, c-format
 msgid ""
 "\n"
@@ -5314,72 +5323,72 @@
 " %*s  String\n"
 msgstr ""
 
-#: src/readelf.c:10308
+#: src/readelf.c:10370
 #, c-format
 msgid " *** error, missing string terminator\n"
 msgstr ""
 
-#: src/readelf.c:10337
+#: src/readelf.c:10399
 #, fuzzy, c-format
 msgid "cannot get .debug_str_offsets section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:10436
+#: src/readelf.c:10498
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10438
+#: src/readelf.c:10500
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10452
+#: src/readelf.c:10514
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10461
+#: src/readelf.c:10523
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10515
+#: src/readelf.c:10577
 #, c-format
 msgid ""
 "\n"
 "Call frame search table section [%2zu] '.eh_frame_hdr':\n"
 msgstr ""
 
-#: src/readelf.c:10617
+#: src/readelf.c:10679
 #, c-format
 msgid ""
 "\n"
 "Exception handling table section [%2zu] '.gcc_except_table':\n"
 msgstr ""
 
-#: src/readelf.c:10640
+#: src/readelf.c:10702
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr ""
 
-#: src/readelf.c:10652
+#: src/readelf.c:10714
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr ""
 
-#: src/readelf.c:10667
+#: src/readelf.c:10729
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr ""
 
-#: src/readelf.c:10680
+#: src/readelf.c:10742
 msgid ""
 "\n"
 " Call site table:"
 msgstr ""
 
-#: src/readelf.c:10694
+#: src/readelf.c:10756
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5388,142 +5397,142 @@
 "        Action:            %u\n"
 msgstr ""
 
-#: src/readelf.c:10767
+#: src/readelf.c:10829
 #, c-format
 msgid "invalid TType encoding"
 msgstr ""
 
-#: src/readelf.c:10794
+#: src/readelf.c:10856
 #, c-format
 msgid ""
 "\n"
 "GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
 msgstr ""
 
-#: src/readelf.c:10823
+#: src/readelf.c:10885
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10841
+#: src/readelf.c:10903
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:10848
+#: src/readelf.c:10910
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:10855
+#: src/readelf.c:10917
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:10862
+#: src/readelf.c:10924
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:10869
+#: src/readelf.c:10931
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:10883
+#: src/readelf.c:10945
 #, c-format
 msgid ""
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:10908
+#: src/readelf.c:10970
 #, c-format
 msgid ""
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:10937
+#: src/readelf.c:10999
 #, c-format
 msgid ""
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:10969
+#: src/readelf.c:11031
 #, c-format
 msgid ""
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 msgstr ""
 
-#: src/readelf.c:11107
+#: src/readelf.c:11169
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:11475 src/readelf.c:12097 src/readelf.c:12208
-#: src/readelf.c:12266
+#: src/readelf.c:11537 src/readelf.c:12159 src/readelf.c:12270
+#: src/readelf.c:12328
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr ""
 
-#: src/readelf.c:11838
+#: src/readelf.c:11900
 #, c-format
 msgid ""
 "\n"
 "%*s... <repeats %u more times> ..."
 msgstr ""
 
-#: src/readelf.c:12345
+#: src/readelf.c:12407
 msgid "  Owner          Data size  Type\n"
 msgstr ""
 
-#: src/readelf.c:12374
+#: src/readelf.c:12436
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr ""
 
-#: src/readelf.c:12426
+#: src/readelf.c:12488
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "Konnte Inhalt von %s: %s nicht lesen"
 
-#: src/readelf.c:12460
+#: src/readelf.c:12522
 #, c-format
 msgid ""
 "\n"
 "Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12483
+#: src/readelf.c:12545
 #, c-format
 msgid ""
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12530
+#: src/readelf.c:12592
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Section [%zu] '%s' has no data to dump.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12557 src/readelf.c:12608
+#: src/readelf.c:12619 src/readelf.c:12670
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12562
+#: src/readelf.c:12624
 #, c-format
 msgid ""
 "\n"
 "Hex dump of section [%zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12567
+#: src/readelf.c:12629
 #, c-format
 msgid ""
 "\n"
@@ -5531,21 +5540,21 @@
 "%#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12581
+#: src/readelf.c:12643
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Section [%zu] '%s' has no strings to dump.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12613
+#: src/readelf.c:12675
 #, c-format
 msgid ""
 "\n"
 "String section [%zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12618
+#: src/readelf.c:12680
 #, c-format
 msgid ""
 "\n"
@@ -5553,45 +5562,45 @@
 "offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12667
+#: src/readelf.c:12729
 #, c-format
 msgid ""
 "\n"
 "section [%lu] does not exist"
 msgstr ""
 
-#: src/readelf.c:12697
+#: src/readelf.c:12759
 #, c-format
 msgid ""
 "\n"
 "section '%s' does not exist"
 msgstr ""
 
-#: src/readelf.c:12754
+#: src/readelf.c:12816
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr ""
 
-#: src/readelf.c:12757
+#: src/readelf.c:12819
 #, c-format
 msgid ""
 "\n"
 "Archive '%s' has no symbol index\n"
 msgstr ""
 
-#: src/readelf.c:12761
+#: src/readelf.c:12823
 #, c-format
 msgid ""
 "\n"
 "Index of archive '%s' has %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:12779
+#: src/readelf.c:12841
 #, fuzzy, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:12784
+#: src/readelf.c:12846
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr ""
@@ -6179,7 +6188,7 @@
 msgid "cannot get shdrstrndx:%s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:248 src/unstrip.c:2083
+#: src/unstrip.c:248 src/unstrip.c:2089
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr ""
@@ -6199,12 +6208,12 @@
 msgid "cannot copy ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:269 src/unstrip.c:2101 src/unstrip.c:2144
+#: src/unstrip.c:269 src/unstrip.c:2107 src/unstrip.c:2150
 #, fuzzy, c-format
 msgid "cannot get number of program headers: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/unstrip.c:274 src/unstrip.c:2105
+#: src/unstrip.c:274 src/unstrip.c:2111
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
@@ -6219,275 +6228,275 @@
 msgid "cannot copy section header: %s"
 msgstr ""
 
-#: src/unstrip.c:293 src/unstrip.c:1705
+#: src/unstrip.c:293 src/unstrip.c:1711
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:295 src/unstrip.c:1707
+#: src/unstrip.c:295 src/unstrip.c:1713
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "konnte Abschnittsdaten nicht kopieren: %s"
 
-#: src/unstrip.c:319
+#: src/unstrip.c:323
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "konnte Verzeichnis nicht erstellen: %s"
 
-#: src/unstrip.c:391 src/unstrip.c:653 src/unstrip.c:687 src/unstrip.c:855
-#: src/unstrip.c:1747
+#: src/unstrip.c:397 src/unstrip.c:659 src/unstrip.c:693 src/unstrip.c:861
+#: src/unstrip.c:1753
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "konnte Eintrag aus der Symboltabelle nicht holen: %s"
 
-#: src/unstrip.c:407 src/unstrip.c:656 src/unstrip.c:677 src/unstrip.c:690
-#: src/unstrip.c:1768 src/unstrip.c:1963 src/unstrip.c:1987
+#: src/unstrip.c:413 src/unstrip.c:662 src/unstrip.c:683 src/unstrip.c:696
+#: src/unstrip.c:1774 src/unstrip.c:1969 src/unstrip.c:1993
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "konnte Symboltabelle nicht aktualisieren: %s"
 
-#: src/unstrip.c:417
+#: src/unstrip.c:423
 #, c-format
 msgid "cannot update section header: %s"
 msgstr ""
 
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:469 src/unstrip.c:483
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr ""
 
-#: src/unstrip.c:576
+#: src/unstrip.c:582
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr ""
 
-#: src/unstrip.c:589
+#: src/unstrip.c:595
 #, c-format
 msgid "unexpected section type in [%zu] with sh_link to symtab"
 msgstr ""
 
-#: src/unstrip.c:844
+#: src/unstrip.c:850
 #, fuzzy, c-format
 msgid "cannot get symbol section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:846
+#: src/unstrip.c:852
 #, fuzzy, c-format
 msgid "cannot get string section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:863
+#: src/unstrip.c:869
 #, fuzzy, c-format
 msgid "invalid string offset in symbol [%zu]"
 msgstr "ungültiger Offset %zu für Symbol %s"
 
-#: src/unstrip.c:1021 src/unstrip.c:1425
+#: src/unstrip.c:1027 src/unstrip.c:1431
 #, fuzzy, c-format
 msgid "cannot read section [%zu] name: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:1036
+#: src/unstrip.c:1042
 #, fuzzy, c-format
 msgid "bad sh_link for group section: %s"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/unstrip.c:1042
+#: src/unstrip.c:1048
 #, fuzzy, c-format
 msgid "couldn't get shdr for group section: %s"
 msgstr "konnte Versionierungsabschnitt nicht erstellen: %s"
 
-#: src/unstrip.c:1047
+#: src/unstrip.c:1053
 #, fuzzy, c-format
 msgid "bad data for group symbol section: %s"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/unstrip.c:1053
+#: src/unstrip.c:1059
 #, fuzzy, c-format
 msgid "couldn't get symbol for group section: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/unstrip.c:1058
+#: src/unstrip.c:1064
 #, fuzzy, c-format
 msgid "bad symbol name for group section: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/unstrip.c:1100 src/unstrip.c:1119 src/unstrip.c:1157
+#: src/unstrip.c:1106 src/unstrip.c:1125 src/unstrip.c:1163
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr ""
 
-#: src/unstrip.c:1137
+#: src/unstrip.c:1143
 #, c-format
 msgid "overflow with shnum = %zu in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1148
+#: src/unstrip.c:1154
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1204 src/unstrip.c:1551
+#: src/unstrip.c:1210 src/unstrip.c:1557
 #, fuzzy, c-format
 msgid "cannot find matching section for [%zu] '%s'"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:1329 src/unstrip.c:1345 src/unstrip.c:1631 src/unstrip.c:1922
+#: src/unstrip.c:1335 src/unstrip.c:1351 src/unstrip.c:1637 src/unstrip.c:1928
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1354
+#: src/unstrip.c:1360
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr ""
 
-#: src/unstrip.c:1383 src/unstrip.c:1387
+#: src/unstrip.c:1389 src/unstrip.c:1393
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 
-#: src/unstrip.c:1391 src/unstrip.c:1395 src/unstrip.c:1646
+#: src/unstrip.c:1397 src/unstrip.c:1401 src/unstrip.c:1652
 #, c-format
 msgid "cannot get section count: %s"
 msgstr ""
 
-#: src/unstrip.c:1398
+#: src/unstrip.c:1404
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 
-#: src/unstrip.c:1402
+#: src/unstrip.c:1408
 #, c-format
 msgid "no sections in stripped file"
 msgstr ""
 
-#: src/unstrip.c:1473 src/unstrip.c:1566
+#: src/unstrip.c:1479 src/unstrip.c:1572
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1625
+#: src/unstrip.c:1631
 #, c-format
 msgid "cannot add new section: %s"
 msgstr ""
 
-#: src/unstrip.c:1755
+#: src/unstrip.c:1761
 #, fuzzy, c-format
 msgid "symbol [%zu] has invalid section index"
 msgstr "ungültiger Abschnittsindex"
 
-#: src/unstrip.c:1787
+#: src/unstrip.c:1793
 #, fuzzy, c-format
 msgid "group has invalid section index [%zd]"
 msgstr "ungültiger Abschnittsindex"
 
-#: src/unstrip.c:2062
+#: src/unstrip.c:2068
 #, fuzzy, c-format
 msgid "cannot read section data: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/unstrip.c:2091
+#: src/unstrip.c:2097
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:2115
+#: src/unstrip.c:2121
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "konnte Programm-Kopf nicht aktualisieren: %s"
 
-#: src/unstrip.c:2120 src/unstrip.c:2202
+#: src/unstrip.c:2126 src/unstrip.c:2208
 #, c-format
 msgid "cannot write output file: %s"
 msgstr ""
 
-#: src/unstrip.c:2171
+#: src/unstrip.c:2177
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:2174
+#: src/unstrip.c:2180
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:2193 src/unstrip.c:2244 src/unstrip.c:2256 src/unstrip.c:2342
+#: src/unstrip.c:2199 src/unstrip.c:2250 src/unstrip.c:2262 src/unstrip.c:2348
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr ""
 
-#: src/unstrip.c:2235
+#: src/unstrip.c:2241
 msgid "WARNING: "
 msgstr ""
 
-#: src/unstrip.c:2237
+#: src/unstrip.c:2243
 msgid ", use --force"
 msgstr ""
 
-#: src/unstrip.c:2260
+#: src/unstrip.c:2266
 msgid "ELF header identification (e_ident) different"
 msgstr ""
 
-#: src/unstrip.c:2263
+#: src/unstrip.c:2269
 msgid "ELF header type (e_type) different"
 msgstr ""
 
-#: src/unstrip.c:2266
+#: src/unstrip.c:2272
 msgid "ELF header machine type (e_machine) different"
 msgstr ""
 
-#: src/unstrip.c:2269
+#: src/unstrip.c:2275
 msgid "stripped program header (e_phnum) smaller than unstripped"
 msgstr ""
 
-#: src/unstrip.c:2299
+#: src/unstrip.c:2305
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2303
+#: src/unstrip.c:2309
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2318
+#: src/unstrip.c:2324
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2322
+#: src/unstrip.c:2328
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2335
+#: src/unstrip.c:2341
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr ""
 
-#: src/unstrip.c:2366
+#: src/unstrip.c:2372
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2498
+#: src/unstrip.c:2504
 #, c-format
 msgid "no matching modules found"
 msgstr "kein passendes Modul gefunden"
 
-#: src/unstrip.c:2507
+#: src/unstrip.c:2513
 #, c-format
 msgid "matched more than one module"
 msgstr "mehr als ein passendes Modul"
 
-#: src/unstrip.c:2551
+#: src/unstrip.c:2557
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 msgstr ""
 
-#: src/unstrip.c:2552
+#: src/unstrip.c:2558
 msgid ""
 "Combine stripped files with separate symbols and debug information.\n"
 "\n"
diff --git a/po/es.po b/po/es.po
index c3b5e2c..36c9513 100644
--- a/po/es.po
+++ b/po/es.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: elfutils.master.es\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-09-08 12:51+0200\n"
+"POT-Creation-Date: 2020-10-31 17:37+0100\n"
 "PO-Revision-Date: 2011-01-10 15:17-0300\n"
 "Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz."
 "com.ar>\n"
@@ -58,7 +58,7 @@
 "DETERMINADO.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11424 src/unstrip.c:2395 src/unstrip.c:2600
+#: src/readelf.c:11486 src/unstrip.c:316 src/unstrip.c:2401 src/unstrip.c:2606
 #, c-format
 msgid "memory exhausted"
 msgstr "memoria agotada"
@@ -221,7 +221,7 @@
 msgid "invalid directory index"
 msgstr "Índice de directorio inválido"
 
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:75
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:76
 msgid "address out of range"
 msgstr "dirección fuera de rango"
 
@@ -252,7 +252,7 @@
 msgid "invalid address range index"
 msgstr "Índice de dirección de rango inválido"
 
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:76
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:77
 msgid "no matching address range"
 msgstr "dirección de rango no coincidente"
 
@@ -300,7 +300,7 @@
 msgid ".debug_addr section missing"
 msgstr ".debug_ranges section faltante"
 
-#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2541
+#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2547
 msgid "Input selection options:"
 msgstr "Opciones de selección de entrada:"
 
@@ -396,130 +396,135 @@
 msgstr "falló la descompresión LZMA"
 
 #: libdwfl/libdwflP.h:64
+#, fuzzy
+msgid "zstd decompression failed"
+msgstr "falló la descompresión gzip"
+
+#: libdwfl/libdwflP.h:65
 msgid "no support library found for machine"
 msgstr "no se ha encontrado una biblioteca de soporte para la máquina"
 
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:66
 msgid "Callbacks missing for ET_REL file"
 msgstr "No se encuentran rellamadas para el archivo ET_REL"
 
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
 msgid "Unsupported relocation type"
 msgstr "Tipo de reubicación no soportada"
 
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
 msgid "r_offset is bogus"
 msgstr "r_offset se encuentra inutilizable"
 
-#: libdwfl/libdwflP.h:68 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:69 libelf/elf_error.c:115 libelf/elf_error.c:175
 msgid "offset out of range"
 msgstr "desplazamiento fuera de rango"
 
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
 msgid "relocation refers to undefined symbol"
 msgstr "la reubicación hace referencia a un símbolo no definido"
 
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
 msgid "Callback returned failure"
 msgstr "La rellamada devolvió un fallo"
 
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
 msgid "No DWARF information found"
 msgstr "No se ha encontrado una información DWARF"
 
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:73
 msgid "No symbol table found"
 msgstr "No se ha encontrado una tabla simbólica"
 
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:74
 msgid "No ELF program headers"
 msgstr "No existen encabezados de programa ELF"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
 msgid "address range overlaps an existing module"
 msgstr "el rango de dirección se superpone con un módulo existente"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
 msgid "image truncated"
 msgstr "imagen truncada"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
 msgid "ELF file opened"
 msgstr "Archivo ELF abierto"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
 msgid "not a valid ELF file"
 msgstr "no es un archivo ELF válido"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
 msgid "cannot handle DWARF type description"
 msgstr "no es posible manipular tipo de descripción DWARF"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
 msgid "ELF file does not match build ID"
 msgstr "El archivo ELF no coincide con el ID construido"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
 #, fuzzy
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
 msgid "Internal error due to ebl"
 msgstr ""
 
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
 msgid "Missing data in core file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
 #, fuzzy
 msgid "Invalid register"
 msgstr "Parámetro inválido"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
 msgid "Error reading process memory"
 msgstr ""
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
 msgid "Couldn't find architecture of any ELF"
 msgstr ""
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
 msgid "Error parsing /proc filesystem"
 msgstr ""
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
 #, fuzzy
 msgid "Invalid DWARF"
 msgstr "DWARF inválido"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
 msgid "Unsupported DWARF"
 msgstr ""
 
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
 msgid "Unable to find more threads"
 msgstr ""
 
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
 msgid "Dwfl already has attached state"
 msgstr ""
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
 msgid "Dwfl has no attached state"
 msgstr ""
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:95
 msgid "Unwinding not supported for this architecture"
 msgstr ""
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:96
 #, fuzzy
 msgid "Invalid argument"
 msgstr "Parámetro inválido"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:97
 #, fuzzy
 msgid "Not an ET_CORE ELF file"
 msgstr "no es un archivo ELF válido"
@@ -625,7 +630,7 @@
 msgid "invalid size of destination operand"
 msgstr "tamaño inválido del operando destino"
 
-#: libelf/elf_error.c:87 src/readelf.c:6172
+#: libelf/elf_error.c:87 src/readelf.c:6197
 #, c-format
 msgid "invalid encoding"
 msgstr "codificación inválida"
@@ -711,8 +716,8 @@
 msgid "invalid section header"
 msgstr "encabezamiento de sección inválida"
 
-#: libelf/elf_error.c:191 src/readelf.c:9935 src/readelf.c:10535
-#: src/readelf.c:10636 src/readelf.c:10818
+#: libelf/elf_error.c:191 src/readelf.c:9997 src/readelf.c:10597
+#: src/readelf.c:10698 src/readelf.c:10880
 #, c-format
 msgid "invalid data"
 msgstr "datos inválidos"
@@ -1382,7 +1387,7 @@
 
 #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2191 src/unstrip.c:2220
+#: src/unstrip.c:2197 src/unstrip.c:2226
 #, c-format
 msgid "cannot open '%s'"
 msgstr "Imposible abrir '%s'"
@@ -3792,8 +3797,8 @@
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11251 src/readelf.c:12441
-#: src/readelf.c:12652 src/readelf.c:12721 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11313 src/readelf.c:12503
+#: src/readelf.c:12714 src/readelf.c:12783 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -4121,11 +4126,11 @@
 msgid "cannot get section: %s"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12672
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:606
-#: src/unstrip.c:627 src/unstrip.c:667 src/unstrip.c:883 src/unstrip.c:1214
-#: src/unstrip.c:1341 src/unstrip.c:1365 src/unstrip.c:1421 src/unstrip.c:1485
-#: src/unstrip.c:1660 src/unstrip.c:1811 src/unstrip.c:1954 src/unstrip.c:2053
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12734
+#: src/unstrip.c:401 src/unstrip.c:432 src/unstrip.c:491 src/unstrip.c:612
+#: src/unstrip.c:633 src/unstrip.c:673 src/unstrip.c:889 src/unstrip.c:1220
+#: src/unstrip.c:1347 src/unstrip.c:1371 src/unstrip.c:1427 src/unstrip.c:1491
+#: src/unstrip.c:1666 src/unstrip.c:1817 src/unstrip.c:1960 src/unstrip.c:2059
 #, c-format
 msgid "cannot get section header: %s"
 msgstr "No se puede obtener encabezamiento de sección: %s"
@@ -4135,8 +4140,8 @@
 msgid "cannot get section name"
 msgstr "no se puede obtener encabezamiento de sección\n"
 
-#: src/readelf.c:670 src/readelf.c:6585 src/readelf.c:10523 src/readelf.c:10625
-#: src/readelf.c:10803
+#: src/readelf.c:670 src/readelf.c:6610 src/readelf.c:10585 src/readelf.c:10687
+#: src/readelf.c:10865
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "No se puede obtener el contenido %s: %s"
@@ -4479,7 +4484,7 @@
 " Sección para asignación de segmento:\n"
 "  Secciones de segmento..."
 
-#: src/readelf.c:1460 src/unstrip.c:2112 src/unstrip.c:2154 src/unstrip.c:2161
+#: src/readelf.c:1460 src/unstrip.c:2118 src/unstrip.c:2160 src/unstrip.c:2167
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "no se puede obtener memoria para encabezamiento del programa: %s"
@@ -4522,8 +4527,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<SECCIÓN INVÁLIDA>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12543
-#: src/readelf.c:12550 src/readelf.c:12594 src/readelf.c:12601
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12605
+#: src/readelf.c:12612 src/readelf.c:12656 src/readelf.c:12663
 msgid "Couldn't uncompress section"
 msgstr ""
 
@@ -4533,7 +4538,7 @@
 msgstr "No se puede obtener encabezamiento de sección: %s"
 
 #: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5389
 #, fuzzy, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr ".debug_line section inválida"
@@ -5022,7 +5027,7 @@
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n"
 
-#: src/readelf.c:5054
+#: src/readelf.c:5079
 #, c-format
 msgid ""
 "\n"
@@ -5033,7 +5038,7 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " [ Código]\n"
 
-#: src/readelf.c:5062
+#: src/readelf.c:5087
 #, c-format
 msgid ""
 "\n"
@@ -5042,20 +5047,20 @@
 "\n"
 "Sección de abreviatura en compensación %<PRIu64>:\n"
 
-#: src/readelf.c:5075
+#: src/readelf.c:5100
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** error en lectura de abreviatura: %s\n"
 
-#: src/readelf.c:5091
+#: src/readelf.c:5116
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n"
 
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6595 src/readelf.c:8332 src/readelf.c:9024 src/readelf.c:9460
-#: src/readelf.c:9711 src/readelf.c:9877 src/readelf.c:10264
-#: src/readelf.c:10324
+#: src/readelf.c:5149 src/readelf.c:5458 src/readelf.c:5625 src/readelf.c:6010
+#: src/readelf.c:6620 src/readelf.c:8357 src/readelf.c:9049 src/readelf.c:9522
+#: src/readelf.c:9773 src/readelf.c:9939 src/readelf.c:10326
+#: src/readelf.c:10386
 #, c-format
 msgid ""
 "\n"
@@ -5064,52 +5069,52 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 
-#: src/readelf.c:5137
+#: src/readelf.c:5162
 #, fuzzy, c-format
 msgid "cannot get .debug_addr section data: %s"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9069
+#: src/readelf.c:5262 src/readelf.c:5286 src/readelf.c:5670 src/readelf.c:9094
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9082
+#: src/readelf.c:5264 src/readelf.c:5301 src/readelf.c:5683 src/readelf.c:9107
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9091
+#: src/readelf.c:5265 src/readelf.c:5310 src/readelf.c:5692 src/readelf.c:9116
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9101
+#: src/readelf.c:5267 src/readelf.c:5320 src/readelf.c:5702 src/readelf.c:9126
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9086 src/readelf.c:10456
+#: src/readelf.c:5305 src/readelf.c:5687 src/readelf.c:9111 src/readelf.c:10518
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "versión desconocida"
 
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9096
+#: src/readelf.c:5315 src/readelf.c:5528 src/readelf.c:5697 src/readelf.c:9121
 #, fuzzy, c-format
 msgid "unsupported address size"
 msgstr "no hay valor de dirección"
 
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9106
+#: src/readelf.c:5326 src/readelf.c:5539 src/readelf.c:5707 src/readelf.c:9131
 #, c-format
 msgid "unsupported segment size"
 msgstr ""
 
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5379 src/readelf.c:5453
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "no se ha podido obtener contenido de .debug_aranges: %s"
 
-#: src/readelf.c:5369
+#: src/readelf.c:5394
 #, c-format
 msgid ""
 "\n"
@@ -5124,12 +5129,12 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n"
 
-#: src/readelf.c:5400
+#: src/readelf.c:5425
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5402
+#: src/readelf.c:5427
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5137,7 +5142,7 @@
 " Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:5446 src/readelf.c:8359
+#: src/readelf.c:5471 src/readelf.c:8384
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5146,150 +5151,150 @@
 "\n"
 "Tabla en compensación %Zu:\n"
 
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6619 src/readelf.c:8370
-#: src/readelf.c:9050
+#: src/readelf.c:5475 src/readelf.c:5651 src/readelf.c:6644 src/readelf.c:8395
+#: src/readelf.c:9075
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:5466
+#: src/readelf.c:5491
 #, fuzzy, c-format
 msgid ""
 "\n"
 " Length:        %6<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5478
+#: src/readelf.c:5503
 #, fuzzy, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5482
+#: src/readelf.c:5507
 #, c-format
 msgid "unsupported aranges version"
 msgstr ""
 
-#: src/readelf.c:5493
+#: src/readelf.c:5518
 #, fuzzy, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5499
+#: src/readelf.c:5524
 #, fuzzy, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5510
+#: src/readelf.c:5535
 #, fuzzy, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
 "\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:5565
+#: src/readelf.c:5590
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr ""
 
-#: src/readelf.c:5609
+#: src/readelf.c:5634
 #, fuzzy, c-format
 msgid "cannot get .debug_rnglists content: %s"
 msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
 
-#: src/readelf.c:5632 src/readelf.c:9056
+#: src/readelf.c:5657 src/readelf.c:9081
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5687 src/readelf.c:9111
+#: src/readelf.c:5712 src/readelf.c:9136
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5703 src/readelf.c:9127
+#: src/readelf.c:5728 src/readelf.c:9152
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5705 src/readelf.c:9129
+#: src/readelf.c:5730 src/readelf.c:9154
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5711 src/readelf.c:9135
+#: src/readelf.c:5736 src/readelf.c:9160
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5722 src/readelf.c:9146
+#: src/readelf.c:5747 src/readelf.c:9171
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5726 src/readelf.c:9150
+#: src/readelf.c:5751 src/readelf.c:9175
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  Propietario          Tamaño\n"
 
-#: src/readelf.c:5778
+#: src/readelf.c:5803
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "datos inválidos"
 
-#: src/readelf.c:5963 src/readelf.c:9438
+#: src/readelf.c:5988 src/readelf.c:9500
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:5980
+#: src/readelf.c:6005
 #, c-format
 msgid "cannot get .debug_ranges content: %s"
 msgstr "no se ha podido obtener contenido de .debug_ranges: %s"
 
-#: src/readelf.c:6016 src/readelf.c:9493
+#: src/readelf.c:6041 src/readelf.c:9555
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6018 src/readelf.c:9495
+#: src/readelf.c:6043 src/readelf.c:9557
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6027 src/readelf.c:9521 src/readelf.c:9547
+#: src/readelf.c:6052 src/readelf.c:9583 src/readelf.c:9609
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:6052 src/readelf.c:9631
+#: src/readelf.c:6077 src/readelf.c:9693
 #, fuzzy
 msgid "base address"
 msgstr "Establecer dirección a %s\n"
 
-#: src/readelf.c:6062 src/readelf.c:9641
+#: src/readelf.c:6087 src/readelf.c:9703
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx]  lista vacía\n"
 
-#: src/readelf.c:6317
+#: src/readelf.c:6342
 #, fuzzy
 msgid "         <INVALID DATA>\n"
 msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:6573
+#: src/readelf.c:6598
 #, fuzzy, c-format
 msgid "cannot get ELF: %s"
 msgstr "no se puede leer encabezamiento ELF: %s"
 
-#: src/readelf.c:6591
+#: src/readelf.c:6616
 #, c-format
 msgid ""
 "\n"
@@ -5299,7 +5304,7 @@
 "Sección de información de marco de llamada [%2zu] '%s' en compensación "
 "%#<PRIx64>:\n"
 
-#: src/readelf.c:6641
+#: src/readelf.c:6666
 #, c-format
 msgid ""
 "\n"
@@ -5308,65 +5313,65 @@
 "\n"
 " [%6tx] Terminator cero\n"
 
-#: src/readelf.c:6742 src/readelf.c:6896
+#: src/readelf.c:6767 src/readelf.c:6921
 #, c-format
 msgid "invalid augmentation length"
 msgstr "longitud de aumento inválida"
 
-#: src/readelf.c:6757
+#: src/readelf.c:6782
 msgid "FDE address encoding: "
 msgstr "Codificación de dirección FDE:"
 
-#: src/readelf.c:6763
+#: src/readelf.c:6788
 msgid "LSDA pointer encoding: "
 msgstr "Codificación de puntero LSDA:"
 
-#: src/readelf.c:6873
+#: src/readelf.c:6898
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:6880
+#: src/readelf.c:6905
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:6917
+#: src/readelf.c:6942
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "Puntero   %-26sLSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:7002
+#: src/readelf.c:7027
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "No se puede obtener código de atributo: %s"
 
-#: src/readelf.c:7012
+#: src/readelf.c:7037
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "No se puede obtener forma de atributo: %s"
 
-#: src/readelf.c:7034
+#: src/readelf.c:7059
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "No se puede obtener valor: %s"
 
-#: src/readelf.c:7364
+#: src/readelf.c:7389
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "Archivo inválido"
 
-#: src/readelf.c:7368
+#: src/readelf.c:7393
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:7372
+#: src/readelf.c:7397
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "no se puede leer encabezamiento ELF: %s"
 
-#: src/readelf.c:7685
+#: src/readelf.c:7710
 #, c-format
 msgid ""
 "\n"
@@ -5377,12 +5382,12 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:7735
+#: src/readelf.c:7760
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "No se puede obtener próximo DIE: %s"
 
-#: src/readelf.c:7754
+#: src/readelf.c:7779
 #, fuzzy, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5395,7 +5400,7 @@
 "Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
 " Tipo de firma: %#<PRIx64>, Tipo de compensación: %#<PRIx64>\n"
 
-#: src/readelf.c:7766
+#: src/readelf.c:7791
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5406,39 +5411,39 @@
 " Versión: %<PRIu16>, Compensación de sección de abreviatura: %<PRIu64>,  "
 "Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
 
-#: src/readelf.c:7776 src/readelf.c:7939
+#: src/readelf.c:7801 src/readelf.c:7964
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:7803
+#: src/readelf.c:7828
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:7832
+#: src/readelf.c:7857
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "no se puede obtener DIE en compensación: %s"
 
-#: src/readelf.c:7841
+#: src/readelf.c:7866
 #, fuzzy, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr ""
 "no se ha podido obtener etiqueta de DIE en compensación%<PRIu64> en sección "
 "'%s': %s"
 
-#: src/readelf.c:7879
+#: src/readelf.c:7904
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "No se puede obtener próximo DIE: %s\n"
 
-#: src/readelf.c:7887
+#: src/readelf.c:7912
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "No se puede obtener próximo DIE: %s"
 
-#: src/readelf.c:7931
+#: src/readelf.c:7956
 #, fuzzy, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5449,7 +5454,7 @@
 " Versión: %<PRIu16>, Compensación de sección de abreviatura: %<PRIu64>,  "
 "Tamaño de dirección: %<PRIu8>, Tamaño de compensación: %<PRIu8>\n"
 
-#: src/readelf.c:7983
+#: src/readelf.c:8008
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5459,18 +5464,18 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 
-#: src/readelf.c:8315
+#: src/readelf.c:8340
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "Forma %<PRIx64> desconocida"
 
-#: src/readelf.c:8346
+#: src/readelf.c:8371
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "No se puede obtener sección de datos de línea: %s"
 
 #. Print what we got so far.
-#: src/readelf.c:8448
+#: src/readelf.c:8473
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5501,34 +5506,34 @@
 "\n"
 "Códigos operativos:\n"
 
-#: src/readelf.c:8470
+#: src/readelf.c:8495
 #, fuzzy, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "no se puede obtener versión de símbolo: %s"
 
-#: src/readelf.c:8478
+#: src/readelf.c:8503
 #, fuzzy, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "no hay valor de dirección"
 
-#: src/readelf.c:8486
+#: src/readelf.c:8511
 #, fuzzy, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/readelf.c:8496
+#: src/readelf.c:8521
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "datos inválidos en compensación %tu en sección [%zu] '%s'"
 
-#: src/readelf.c:8511
+#: src/readelf.c:8536
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] "  [%*<PRIuFAST8>]  argumento %hhu \n"
 msgstr[1] "  [%*<PRIuFAST8>]  argumento %hhu\n"
 
-#: src/readelf.c:8522
+#: src/readelf.c:8547
 msgid ""
 "\n"
 "Directory table:"
@@ -5536,12 +5541,12 @@
 "\n"
 "Tabla de Directorio:"
 
-#: src/readelf.c:8528 src/readelf.c:8605
+#: src/readelf.c:8553 src/readelf.c:8630
 #, fuzzy, c-format
 msgid "      ["
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:8599
+#: src/readelf.c:8624
 #, fuzzy
 msgid ""
 "\n"
@@ -5550,7 +5555,7 @@
 "\n"
 " Tabla de sitio de llamada:"
 
-#: src/readelf.c:8660
+#: src/readelf.c:8685
 #, fuzzy
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
@@ -5558,7 +5563,7 @@
 "Tabla de nombre de archivo:\n"
 " Directorio de entrada   Tiempo      Tamaño      Nombre"
 
-#: src/readelf.c:8699
+#: src/readelf.c:8724
 #, fuzzy
 msgid ""
 "\n"
@@ -5567,7 +5572,7 @@
 "\n"
 " Declaraciones de número de Línea:"
 
-#: src/readelf.c:8703
+#: src/readelf.c:8728
 msgid ""
 "\n"
 "Line number statements:"
@@ -5575,121 +5580,121 @@
 "\n"
 " Declaraciones de número de Línea:"
 
-#: src/readelf.c:8726
+#: src/readelf.c:8751
 #, fuzzy, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr "longitud mínima inválida de tamaño de cadena coincidente"
 
-#: src/readelf.c:8760
+#: src/readelf.c:8785
 #, fuzzy, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " opcode especial %u: dirección+%u = %s, línea%+d = %zu\n"
 
-#: src/readelf.c:8764
+#: src/readelf.c:8789
 #, fuzzy, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ""
 " opcode especial %u: dirección+%u = %s,  op_index = %u, línea%+d = %zu\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:8792
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:8785
+#: src/readelf.c:8810
 #, c-format
 msgid " extended opcode %u: "
 msgstr "  Código operativo extendido %u: "
 
-#: src/readelf.c:8790
+#: src/readelf.c:8815
 #, fuzzy
 msgid " end of sequence"
 msgstr "Fin de secuencia"
 
-#: src/readelf.c:8808
+#: src/readelf.c:8833
 #, fuzzy, c-format
 msgid " set address to "
 msgstr "Establecer dirección a %s\n"
 
-#: src/readelf.c:8836
+#: src/readelf.c:8861
 #, fuzzy, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 "definir nuevo archivo: dir=%u, mtime=%<PRIu64>, longitud=%<PRIu64>, nombre="
 "%s\n"
 
-#: src/readelf.c:8850
+#: src/readelf.c:8875
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " establecer discriminador a %u\n"
 
 #. Unknown, ignore it.
-#: src/readelf.c:8855
+#: src/readelf.c:8880
 #, fuzzy
 msgid " unknown opcode"
 msgstr "código operativo desconocido "
 
 #. Takes no argument.
-#: src/readelf.c:8867
+#: src/readelf.c:8892
 msgid " copy"
 msgstr "Copiar"
 
-#: src/readelf.c:8878
+#: src/readelf.c:8903
 #, fuzzy, c-format
 msgid " advance address by %u to "
 msgstr "Dirección de avance por %u a %s\n"
 
-#: src/readelf.c:8882 src/readelf.c:8943
+#: src/readelf.c:8907 src/readelf.c:8968
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:8894
+#: src/readelf.c:8919
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " línea de avance por la constante %d a %<PRId64>\n"
 
-#: src/readelf.c:8904
+#: src/readelf.c:8929
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:8915
+#: src/readelf.c:8940
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr "  Establecer columna a %<PRIu64>\n"
 
-#: src/readelf.c:8922
+#: src/readelf.c:8947
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr "Establecer '%s' a %<PRIuFAST8>\n"
 
 #. Takes no argument.
-#: src/readelf.c:8928
+#: src/readelf.c:8953
 msgid " set basic block flag"
 msgstr "Establecer bandera de bloque básico"
 
-#: src/readelf.c:8939
+#: src/readelf.c:8964
 #, fuzzy, c-format
 msgid " advance address by constant %u to "
 msgstr "Dirección de avance por constante %u a %s\n"
 
-#: src/readelf.c:8959
+#: src/readelf.c:8984
 #, fuzzy, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr "dirección de avance por valor corregido %u a %s\n"
 
 #. Takes no argument.
-#: src/readelf.c:8969
+#: src/readelf.c:8994
 msgid " set prologue end flag"
 msgstr " Establecer bandera prologue_end"
 
 #. Takes no argument.
-#: src/readelf.c:8974
+#: src/readelf.c:8999
 msgid " set epilogue begin flag"
 msgstr " Establecer bandera epilogue_begin"
 
-#: src/readelf.c:8984
+#: src/readelf.c:9009
 #, c-format
 msgid " set isa to %u\n"
 msgstr " establecer isa para %u\n"
@@ -5697,105 +5702,110 @@
 #. This is a new opcode the generator but not we know about.
 #. Read the parameters associated with it but then discard
 #. everything.  Read all the parameters for this opcode.
-#: src/readelf.c:8993
+#: src/readelf.c:9018
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] " opcódigo con parámetro %<PRIu8> desconocido:"
 msgstr[1] " opcódigo con parámetros %<PRIu8> desconocido:"
 
-#: src/readelf.c:9033
+#: src/readelf.c:9058
 #, fuzzy, c-format
 msgid "cannot get .debug_loclists content: %s"
 msgstr "no es posible obtener contenido de .debug_loc: %s"
 
-#: src/readelf.c:9202
+#: src/readelf.c:9224
+#, fuzzy, c-format
+msgid "    <INVALID DATA>\n"
+msgstr "   <DATOS INVÁLIDOS>\n"
+
+#: src/readelf.c:9264
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "datos inválidos"
 
-#: src/readelf.c:9455
+#: src/readelf.c:9517
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "no es posible obtener contenido de .debug_loc: %s"
 
-#: src/readelf.c:9668 src/readelf.c:10712
+#: src/readelf.c:9730 src/readelf.c:10774
 msgid "   <INVALID DATA>\n"
 msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:9723 src/readelf.c:9886
+#: src/readelf.c:9785 src/readelf.c:9948
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "no es posible obtener datos de la sección de macro información: %s"
 
-#: src/readelf.c:9803
+#: src/readelf.c:9865
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** cadena no finalizada al final de la sección"
 
-#: src/readelf.c:9826
+#: src/readelf.c:9888
 #, fuzzy, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr "%*s*** cadena no finalizada al final de la sección"
 
-#: src/readelf.c:9927
+#: src/readelf.c:9989
 #, fuzzy, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr "  Propietario          Tamaño\n"
 
-#: src/readelf.c:9939
+#: src/readelf.c:10001
 #, fuzzy, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:9945 src/readelf.c:10832
+#: src/readelf.c:10007 src/readelf.c:10894
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr ""
 
-#: src/readelf.c:9952
+#: src/readelf.c:10014
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr "  Dirección de punto de entrada:               %#<PRIx64>\n"
 
-#: src/readelf.c:9981
+#: src/readelf.c:10043
 #, fuzzy, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:9989
+#: src/readelf.c:10051
 #, fuzzy, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10014
+#: src/readelf.c:10076
 #, fuzzy, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr " opcódigo con parámetro %<PRIu8> desconocido:"
 
-#: src/readelf.c:10021
+#: src/readelf.c:10083
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr ""
 
-#: src/readelf.c:10033
+#: src/readelf.c:10095
 #, fuzzy, c-format
 msgid " %<PRIu8> arguments:"
 msgstr "  [%*<PRIuFAST8>]  argumento %hhu \n"
 
-#: src/readelf.c:10048
+#: src/readelf.c:10110
 #, c-format
 msgid " no arguments."
 msgstr ""
 
-#: src/readelf.c:10249
+#: src/readelf.c:10311
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
 " Compensación [%5d] DIE: %6<PRId64>, Compensación CU DIE: %6<PRId64>, "
 "nombre: %s\n"
 
-#: src/readelf.c:10293
+#: src/readelf.c:10355
 #, c-format
 msgid ""
 "\n"
@@ -5806,37 +5816,37 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " %*s  String\n"
 
-#: src/readelf.c:10308
+#: src/readelf.c:10370
 #, fuzzy, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** error en lectura de cadenas: %s\n"
 
-#: src/readelf.c:10337
+#: src/readelf.c:10399
 #, fuzzy, c-format
 msgid "cannot get .debug_str_offsets section data: %s"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/readelf.c:10436
+#: src/readelf.c:10498
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10438
+#: src/readelf.c:10500
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10452
+#: src/readelf.c:10514
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10461
+#: src/readelf.c:10523
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10515
+#: src/readelf.c:10577
 #, c-format
 msgid ""
 "\n"
@@ -5845,7 +5855,7 @@
 "\n"
 "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:10617
+#: src/readelf.c:10679
 #, c-format
 msgid ""
 "\n"
@@ -5854,22 +5864,22 @@
 "\n"
 "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:10640
+#: src/readelf.c:10702
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr "Codificación LPStart:    %#x "
 
-#: src/readelf.c:10652
+#: src/readelf.c:10714
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr "Codificación TType:      %#x "
 
-#: src/readelf.c:10667
+#: src/readelf.c:10729
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr "Codificación de sitio de llamada:  %#x "
 
-#: src/readelf.c:10680
+#: src/readelf.c:10742
 msgid ""
 "\n"
 " Call site table:"
@@ -5877,7 +5887,7 @@
 "\n"
 " Tabla de sitio de llamada:"
 
-#: src/readelf.c:10694
+#: src/readelf.c:10756
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5890,12 +5900,12 @@
 "        Landing pad:       %#<PRIx64>\n"
 "        Action:            %u\n"
 
-#: src/readelf.c:10767
+#: src/readelf.c:10829
 #, c-format
 msgid "invalid TType encoding"
 msgstr "Codificación TType inválida"
 
-#: src/readelf.c:10794
+#: src/readelf.c:10856
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5904,37 +5914,37 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:10823
+#: src/readelf.c:10885
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10841
+#: src/readelf.c:10903
 #, fuzzy, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10848
+#: src/readelf.c:10910
 #, fuzzy, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10855
+#: src/readelf.c:10917
 #, fuzzy, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10862
+#: src/readelf.c:10924
 #, fuzzy, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10869
+#: src/readelf.c:10931
 #, fuzzy, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10883
+#: src/readelf.c:10945
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5943,7 +5953,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:10908
+#: src/readelf.c:10970
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5952,7 +5962,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:10937
+#: src/readelf.c:10999
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5961,7 +5971,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:10969
+#: src/readelf.c:11031
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5970,18 +5980,18 @@
 "\n"
 "Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
 
-#: src/readelf.c:11107
+#: src/readelf.c:11169
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "no se puede depurar descriptor de contexto: %s"
 
-#: src/readelf.c:11475 src/readelf.c:12097 src/readelf.c:12208
-#: src/readelf.c:12266
+#: src/readelf.c:11537 src/readelf.c:12159 src/readelf.c:12270
+#: src/readelf.c:12328
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "no es posible convertir datos de la nota principal: %s"
 
-#: src/readelf.c:11838
+#: src/readelf.c:11900
 #, c-format
 msgid ""
 "\n"
@@ -5990,21 +6000,21 @@
 "\n"
 "%*s... <repeats %u more times> ..."
 
-#: src/readelf.c:12345
+#: src/readelf.c:12407
 msgid "  Owner          Data size  Type\n"
 msgstr "  Owner          Data size  Type\n"
 
-#: src/readelf.c:12374
+#: src/readelf.c:12436
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12426
+#: src/readelf.c:12488
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "no se puede obtener el contenido de sección de nota: %s"
 
-#: src/readelf.c:12460
+#: src/readelf.c:12522
 #, c-format
 msgid ""
 "\n"
@@ -6013,7 +6023,7 @@
 "\n"
 "Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:12483
+#: src/readelf.c:12545
 #, c-format
 msgid ""
 "\n"
@@ -6022,7 +6032,7 @@
 "\n"
 "Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:12530
+#: src/readelf.c:12592
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6031,12 +6041,12 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:12557 src/readelf.c:12608
+#: src/readelf.c:12619 src/readelf.c:12670
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "no se pueden obtener datos para sección [%Zu] '%s': %s"
 
-#: src/readelf.c:12562
+#: src/readelf.c:12624
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6046,7 +6056,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12567
+#: src/readelf.c:12629
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6057,7 +6067,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12581
+#: src/readelf.c:12643
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6066,7 +6076,7 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:12613
+#: src/readelf.c:12675
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6076,7 +6086,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12618
+#: src/readelf.c:12680
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6087,7 +6097,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12667
+#: src/readelf.c:12729
 #, c-format
 msgid ""
 "\n"
@@ -6096,7 +6106,7 @@
 "\n"
 "sección [%lu] no existe"
 
-#: src/readelf.c:12697
+#: src/readelf.c:12759
 #, c-format
 msgid ""
 "\n"
@@ -6105,12 +6115,12 @@
 "\n"
 "sección '%s' no existe"
 
-#: src/readelf.c:12754
+#: src/readelf.c:12816
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "no se puede obtener el índice de símbolo de archivo '%s': %s"
 
-#: src/readelf.c:12757
+#: src/readelf.c:12819
 #, c-format
 msgid ""
 "\n"
@@ -6119,7 +6129,7 @@
 "\n"
 "Archivo '%s' no tiene índice de símbolo\n"
 
-#: src/readelf.c:12761
+#: src/readelf.c:12823
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6128,12 +6138,12 @@
 "\n"
 "Índice de archivo '%s' tiene %Zu entradas:\n"
 
-#: src/readelf.c:12779
+#: src/readelf.c:12841
 #, fuzzy, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "no es posible extraer miembro en compensación %Zu en '%s': %s"
 
-#: src/readelf.c:12784
+#: src/readelf.c:12846
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Miembro de archivo contiene '%s':\n"
@@ -6730,7 +6740,7 @@
 msgid "cannot get shdrstrndx:%s"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/unstrip.c:248 src/unstrip.c:2083
+#: src/unstrip.c:248 src/unstrip.c:2089
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "no se puede leer encabezamiento ELF: %s"
@@ -6750,12 +6760,12 @@
 msgid "cannot copy ELF header: %s"
 msgstr "no se puede copiar encabezamiento ELF: %s"
 
-#: src/unstrip.c:269 src/unstrip.c:2101 src/unstrip.c:2144
+#: src/unstrip.c:269 src/unstrip.c:2107 src/unstrip.c:2150
 #, fuzzy, c-format
 msgid "cannot get number of program headers: %s"
 msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
 
-#: src/unstrip.c:274 src/unstrip.c:2105
+#: src/unstrip.c:274 src/unstrip.c:2111
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "No pueden crear encabezamientos de programa: %s"
@@ -6770,202 +6780,202 @@
 msgid "cannot copy section header: %s"
 msgstr "no se puede copiar encabezamiento de sección: %s"
 
-#: src/unstrip.c:293 src/unstrip.c:1705
+#: src/unstrip.c:293 src/unstrip.c:1711
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/unstrip.c:295 src/unstrip.c:1707
+#: src/unstrip.c:295 src/unstrip.c:1713
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "no pueden copiar datos de sección: %s"
 
-#: src/unstrip.c:319
+#: src/unstrip.c:323
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "no se puede crear el directorio '%s'"
 
-#: src/unstrip.c:391 src/unstrip.c:653 src/unstrip.c:687 src/unstrip.c:855
-#: src/unstrip.c:1747
+#: src/unstrip.c:397 src/unstrip.c:659 src/unstrip.c:693 src/unstrip.c:861
+#: src/unstrip.c:1753
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "no se puede obtener entrada de tabla de símbolos: %s"
 
-#: src/unstrip.c:407 src/unstrip.c:656 src/unstrip.c:677 src/unstrip.c:690
-#: src/unstrip.c:1768 src/unstrip.c:1963 src/unstrip.c:1987
+#: src/unstrip.c:413 src/unstrip.c:662 src/unstrip.c:683 src/unstrip.c:696
+#: src/unstrip.c:1774 src/unstrip.c:1969 src/unstrip.c:1993
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "no se puede actualizar tabla de símbolos: %s"
 
-#: src/unstrip.c:417
+#: src/unstrip.c:423
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "no se puede actualizar encabezamiento de sección: %s"
 
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:469 src/unstrip.c:483
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "no se puede actualizar reubicación: %s"
 
-#: src/unstrip.c:576
+#: src/unstrip.c:582
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "no se puede obtener versión de símbolo: %s"
 
-#: src/unstrip.c:589
+#: src/unstrip.c:595
 #, fuzzy, c-format
 msgid "unexpected section type in [%zu] with sh_link to symtab"
 msgstr "tipo de sección inesperado en [%Zu] con sh_link para symtab"
 
-#: src/unstrip.c:844
+#: src/unstrip.c:850
 #, fuzzy, c-format
 msgid "cannot get symbol section data: %s"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/unstrip.c:846
+#: src/unstrip.c:852
 #, fuzzy, c-format
 msgid "cannot get string section data: %s"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/unstrip.c:863
+#: src/unstrip.c:869
 #, fuzzy, c-format
 msgid "invalid string offset in symbol [%zu]"
 msgstr "compensación de cadena inválida en símbolo [%Zu]"
 
-#: src/unstrip.c:1021 src/unstrip.c:1425
+#: src/unstrip.c:1027 src/unstrip.c:1431
 #, fuzzy, c-format
 msgid "cannot read section [%zu] name: %s"
 msgstr "no se puede leer nombre [%Zu]: %s"
 
-#: src/unstrip.c:1036
+#: src/unstrip.c:1042
 #, fuzzy, c-format
 msgid "bad sh_link for group section: %s"
 msgstr ".debug_line section inválida"
 
-#: src/unstrip.c:1042
+#: src/unstrip.c:1048
 #, fuzzy, c-format
 msgid "couldn't get shdr for group section: %s"
 msgstr "No se puede obtener encabezamiento de sección 0th: %s"
 
-#: src/unstrip.c:1047
+#: src/unstrip.c:1053
 #, fuzzy, c-format
 msgid "bad data for group symbol section: %s"
 msgstr "no se puede obtener sección para símbolos\n"
 
-#: src/unstrip.c:1053
+#: src/unstrip.c:1059
 #, fuzzy, c-format
 msgid "couldn't get symbol for group section: %s"
 msgstr "no se puede obtener versión de símbolo: %s"
 
-#: src/unstrip.c:1058
+#: src/unstrip.c:1064
 #, fuzzy, c-format
 msgid "bad symbol name for group section: %s"
 msgstr "No se puede obtener el encabezamiento de sección %zu: %s"
 
-#: src/unstrip.c:1100 src/unstrip.c:1119 src/unstrip.c:1157
+#: src/unstrip.c:1106 src/unstrip.c:1125 src/unstrip.c:1163
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "no se puede leer sección '.gnu.prelink_undo': %s"
 
-#: src/unstrip.c:1137
+#: src/unstrip.c:1143
 #, c-format
 msgid "overflow with shnum = %zu in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1148
+#: src/unstrip.c:1154
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "contenido inválido en sección '%s'"
 
-#: src/unstrip.c:1204 src/unstrip.c:1551
+#: src/unstrip.c:1210 src/unstrip.c:1557
 #, fuzzy, c-format
 msgid "cannot find matching section for [%zu] '%s'"
 msgstr "no se puede hallar sección coincidente para [%Zu] '%s'"
 
-#: src/unstrip.c:1329 src/unstrip.c:1345 src/unstrip.c:1631 src/unstrip.c:1922
+#: src/unstrip.c:1335 src/unstrip.c:1351 src/unstrip.c:1637 src/unstrip.c:1928
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr "no se puede añadir nombre de sección a tabla de cadenas: %s"
 
-#: src/unstrip.c:1354
+#: src/unstrip.c:1360
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr ""
 "no se pueden actualizar datos de tabla de cadenas de encabezamiento de "
 "sección: %s"
 
-#: src/unstrip.c:1383 src/unstrip.c:1387
+#: src/unstrip.c:1389 src/unstrip.c:1393
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 "no se puede obtener índice de sección de tabla de cadenas de encabezamiento "
 "de sección: %s"
 
-#: src/unstrip.c:1391 src/unstrip.c:1395 src/unstrip.c:1646
+#: src/unstrip.c:1397 src/unstrip.c:1401 src/unstrip.c:1652
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "No se puede obtener cuenta de sección: %s"
 
-#: src/unstrip.c:1398
+#: src/unstrip.c:1404
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 "más secciones en el archivo despojado que en el archivo de depuración -- "
 "¿argumentos invertidos?"
 
-#: src/unstrip.c:1402
+#: src/unstrip.c:1408
 #, c-format
 msgid "no sections in stripped file"
 msgstr ""
 
-#: src/unstrip.c:1473 src/unstrip.c:1566
+#: src/unstrip.c:1479 src/unstrip.c:1572
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr "no se puede obtener tabla de cadenas de encabezamiento de sección: %s"
 
-#: src/unstrip.c:1625
+#: src/unstrip.c:1631
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "No se puede añadir nueva sección: %s"
 
-#: src/unstrip.c:1755
+#: src/unstrip.c:1761
 #, fuzzy, c-format
 msgid "symbol [%zu] has invalid section index"
 msgstr "símbolo [%Zu] tiene índice de sección inválido"
 
-#: src/unstrip.c:1787
+#: src/unstrip.c:1793
 #, fuzzy, c-format
 msgid "group has invalid section index [%zd]"
 msgstr "símbolo [%Zu] tiene índice de sección inválido"
 
-#: src/unstrip.c:2062
+#: src/unstrip.c:2068
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "no se puede leer la sección de datos: %s"
 
-#: src/unstrip.c:2091
+#: src/unstrip.c:2097
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "No se puede actualizar encabezamiento ELF: %s"
 
-#: src/unstrip.c:2115
+#: src/unstrip.c:2121
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "no se puede actualizar encabezamiento de programa: %s"
 
-#: src/unstrip.c:2120 src/unstrip.c:2202
+#: src/unstrip.c:2126 src/unstrip.c:2208
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "no se puede escribir al archivo de salida: %s"
 
-#: src/unstrip.c:2171
+#: src/unstrip.c:2177
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 "datos DWARF no se ajustan para polarización de pre-enlace; considere prelink "
 "-u"
 
-#: src/unstrip.c:2174
+#: src/unstrip.c:2180
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6973,77 +6983,77 @@
 "Datos DWARF en '%s' no se ajustan a polarización de pre-enlace; considere "
 "prelink -u"
 
-#: src/unstrip.c:2193 src/unstrip.c:2244 src/unstrip.c:2256 src/unstrip.c:2342
+#: src/unstrip.c:2199 src/unstrip.c:2250 src/unstrip.c:2262 src/unstrip.c:2348
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "no se puede crear un descriptor ELF: %s"
 
-#: src/unstrip.c:2235
+#: src/unstrip.c:2241
 msgid "WARNING: "
 msgstr ""
 
-#: src/unstrip.c:2237
+#: src/unstrip.c:2243
 msgid ", use --force"
 msgstr ""
 
-#: src/unstrip.c:2260
+#: src/unstrip.c:2266
 msgid "ELF header identification (e_ident) different"
 msgstr ""
 
-#: src/unstrip.c:2263
+#: src/unstrip.c:2269
 msgid "ELF header type (e_type) different"
 msgstr ""
 
-#: src/unstrip.c:2266
+#: src/unstrip.c:2272
 msgid "ELF header machine type (e_machine) different"
 msgstr ""
 
-#: src/unstrip.c:2269
+#: src/unstrip.c:2275
 msgid "stripped program header (e_phnum) smaller than unstripped"
 msgstr ""
 
-#: src/unstrip.c:2299
+#: src/unstrip.c:2305
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr "no se puede hallar archivo obtenido para módulo '%s': %s "
 
-#: src/unstrip.c:2303
+#: src/unstrip.c:2309
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr "No se puede abrir el archivo '%s' obtenido para módulo '%s': %s"
 
-#: src/unstrip.c:2318
+#: src/unstrip.c:2324
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr "no puede hallar archivo de depuración para módulo '%s': %su"
 
-#: src/unstrip.c:2322
+#: src/unstrip.c:2328
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr "No puede abrir archivo de depuración '%s' para módulo '%s': %s"
 
-#: src/unstrip.c:2335
+#: src/unstrip.c:2341
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "No se obtuvo el archivo '%s' de módulo '%s' "
 
-#: src/unstrip.c:2366
+#: src/unstrip.c:2372
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 "No puede almacenar en cache direcciones de sección para módulo '%s': %s"
 
-#: src/unstrip.c:2498
+#: src/unstrip.c:2504
 #, c-format
 msgid "no matching modules found"
 msgstr "No se encontraron módulos coincidentes"
 
-#: src/unstrip.c:2507
+#: src/unstrip.c:2513
 #, c-format
 msgid "matched more than one module"
 msgstr "coincidió con más de un módulo"
 
-#: src/unstrip.c:2551
+#: src/unstrip.c:2557
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -7051,7 +7061,7 @@
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 
-#: src/unstrip.c:2552
+#: src/unstrip.c:2558
 #, fuzzy
 msgid ""
 "Combine stripped files with separate symbols and debug information.\n"
diff --git a/po/ja.po b/po/ja.po
index d1f05ca..3c22d37 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: ja\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-09-08 12:51+0200\n"
+"POT-Creation-Date: 2020-10-31 17:37+0100\n"
 "PO-Revision-Date: 2009-09-20 15:32+0900\n"
 "Last-Translator: Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>\n"
 "Language-Team: Japanese <jp@li.org>\n"
@@ -51,7 +51,7 @@
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11424 src/unstrip.c:2395 src/unstrip.c:2600
+#: src/readelf.c:11486 src/unstrip.c:316 src/unstrip.c:2401 src/unstrip.c:2606
 #, c-format
 msgid "memory exhausted"
 msgstr "メモリー消費済み"
@@ -214,7 +214,7 @@
 msgid "invalid directory index"
 msgstr "不当なディレクトリー索引"
 
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:75
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:76
 msgid "address out of range"
 msgstr "アドレスが範囲外です"
 
@@ -245,7 +245,7 @@
 msgid "invalid address range index"
 msgstr "不当なアドレス範囲索引"
 
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:76
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:77
 msgid "no matching address range"
 msgstr "アドレス範囲に対応しません"
 
@@ -293,7 +293,7 @@
 msgid ".debug_addr section missing"
 msgstr ".debug_ranges セクションがありません"
 
-#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2541
+#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2547
 msgid "Input selection options:"
 msgstr "選択オプションを入力してください:"
 
@@ -389,136 +389,140 @@
 msgstr ""
 
 #: libdwfl/libdwflP.h:64
-msgid "no support library found for machine"
+msgid "zstd decompression failed"
 msgstr ""
 
 #: libdwfl/libdwflP.h:65
-msgid "Callbacks missing for ET_REL file"
+msgid "no support library found for machine"
 msgstr ""
 
 #: libdwfl/libdwflP.h:66
-msgid "Unsupported relocation type"
+msgid "Callbacks missing for ET_REL file"
 msgstr ""
 
 #: libdwfl/libdwflP.h:67
+msgid "Unsupported relocation type"
+msgstr ""
+
+#: libdwfl/libdwflP.h:68
 msgid "r_offset is bogus"
 msgstr ""
 
-#: libdwfl/libdwflP.h:68 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:69 libelf/elf_error.c:115 libelf/elf_error.c:175
 msgid "offset out of range"
 msgstr "オフセットが範囲を越えている"
 
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
 #, fuzzy
 msgid "relocation refers to undefined symbol"
 msgstr "定義されたシンボルの印刷サイズ"
 
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
 msgid "Callback returned failure"
 msgstr ""
 
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
 #, fuzzy
 msgid "No DWARF information found"
 msgstr "DWARF 情報がありません"
 
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:73
 msgid "No symbol table found"
 msgstr ""
 
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:74
 #, fuzzy
 msgid "No ELF program headers"
 msgstr "プログラムヘッダーを得られません: %s"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
 msgid "address range overlaps an existing module"
 msgstr ""
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
 msgid "image truncated"
 msgstr ""
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
 #, fuzzy
 msgid "ELF file opened"
 msgstr "ファイルのオープンを追跡します。"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
 #, fuzzy
 msgid "not a valid ELF file"
 msgstr "不当な ELF ファイル"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
 #, fuzzy
 msgid "cannot handle DWARF type description"
 msgstr "Elf 記述子を生成できません: %s"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
 msgid "ELF file does not match build ID"
 msgstr ""
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
 #, fuzzy
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "ラインデータセクションデータを得られません: %s"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
 msgid "Internal error due to ebl"
 msgstr ""
 
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
 msgid "Missing data in core file"
 msgstr ""
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
 #, fuzzy
 msgid "Invalid register"
 msgstr "不当なパラメーター"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
 msgid "Error reading process memory"
 msgstr ""
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
 msgid "Couldn't find architecture of any ELF"
 msgstr ""
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
 msgid "Error parsing /proc filesystem"
 msgstr ""
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
 #, fuzzy
 msgid "Invalid DWARF"
 msgstr "不当な DWARF"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
 msgid "Unsupported DWARF"
 msgstr ""
 
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
 msgid "Unable to find more threads"
 msgstr ""
 
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
 msgid "Dwfl already has attached state"
 msgstr ""
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
 msgid "Dwfl has no attached state"
 msgstr ""
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:95
 msgid "Unwinding not supported for this architecture"
 msgstr ""
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:96
 #, fuzzy
 msgid "Invalid argument"
 msgstr "不当なパラメーター"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:97
 #, fuzzy
 msgid "Not an ET_CORE ELF file"
 msgstr "不当な ELF ファイル"
@@ -624,7 +628,7 @@
 msgid "invalid size of destination operand"
 msgstr "宛先演算子の大きさが無効"
 
-#: libelf/elf_error.c:87 src/readelf.c:6172
+#: libelf/elf_error.c:87 src/readelf.c:6197
 #, c-format
 msgid "invalid encoding"
 msgstr "無効なエンコード"
@@ -711,8 +715,8 @@
 msgid "invalid section header"
 msgstr "不当なセクションヘッダー"
 
-#: libelf/elf_error.c:191 src/readelf.c:9935 src/readelf.c:10535
-#: src/readelf.c:10636 src/readelf.c:10818
+#: libelf/elf_error.c:191 src/readelf.c:9997 src/readelf.c:10597
+#: src/readelf.c:10698 src/readelf.c:10880
 #, c-format
 msgid "invalid data"
 msgstr "不当なデータ"
@@ -1374,7 +1378,7 @@
 
 #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2191 src/unstrip.c:2220
+#: src/unstrip.c:2197 src/unstrip.c:2226
 #, c-format
 msgid "cannot open '%s'"
 msgstr "'%s' を開けません"
@@ -3569,8 +3573,8 @@
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11251 src/readelf.c:12441
-#: src/readelf.c:12652 src/readelf.c:12721 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11313 src/readelf.c:12503
+#: src/readelf.c:12714 src/readelf.c:12783 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3893,11 +3897,11 @@
 msgid "cannot get section: %s"
 msgstr "セクションを得られません: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12672
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:606
-#: src/unstrip.c:627 src/unstrip.c:667 src/unstrip.c:883 src/unstrip.c:1214
-#: src/unstrip.c:1341 src/unstrip.c:1365 src/unstrip.c:1421 src/unstrip.c:1485
-#: src/unstrip.c:1660 src/unstrip.c:1811 src/unstrip.c:1954 src/unstrip.c:2053
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12734
+#: src/unstrip.c:401 src/unstrip.c:432 src/unstrip.c:491 src/unstrip.c:612
+#: src/unstrip.c:633 src/unstrip.c:673 src/unstrip.c:889 src/unstrip.c:1220
+#: src/unstrip.c:1347 src/unstrip.c:1371 src/unstrip.c:1427 src/unstrip.c:1491
+#: src/unstrip.c:1666 src/unstrip.c:1817 src/unstrip.c:1960 src/unstrip.c:2059
 #, c-format
 msgid "cannot get section header: %s"
 msgstr "セクションヘッダーを得られません: %s"
@@ -3907,8 +3911,8 @@
 msgid "cannot get section name"
 msgstr "セクションを得られません: %s"
 
-#: src/readelf.c:670 src/readelf.c:6585 src/readelf.c:10523 src/readelf.c:10625
-#: src/readelf.c:10803
+#: src/readelf.c:670 src/readelf.c:6610 src/readelf.c:10585 src/readelf.c:10687
+#: src/readelf.c:10865
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "%s の内容を得られません: %s"
@@ -4250,7 +4254,7 @@
 " セクションからセグメントへのマッビング:\n"
 "  セグメント セクション..."
 
-#: src/readelf.c:1460 src/unstrip.c:2112 src/unstrip.c:2154 src/unstrip.c:2161
+#: src/readelf.c:1460 src/unstrip.c:2118 src/unstrip.c:2160 src/unstrip.c:2167
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "プログラムヘッダーを得られません: %s"
@@ -4289,8 +4293,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<不当なセクション>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12543
-#: src/readelf.c:12550 src/readelf.c:12594 src/readelf.c:12601
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12605
+#: src/readelf.c:12612 src/readelf.c:12656 src/readelf.c:12663
 msgid "Couldn't uncompress section"
 msgstr ""
 
@@ -4300,7 +4304,7 @@
 msgstr "セクションヘッダーを得られません: %s"
 
 #: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5389
 #, fuzzy, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "不当な .debug_line セクション"
@@ -4745,7 +4749,7 @@
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:5054
+#: src/readelf.c:5079
 #, c-format
 msgid ""
 "\n"
@@ -4756,7 +4760,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " [ コード]\n"
 
-#: src/readelf.c:5062
+#: src/readelf.c:5087
 #, c-format
 msgid ""
 "\n"
@@ -4765,20 +4769,20 @@
 "\n"
 "オフセット %<PRIu64> の略語セクション:\n"
 
-#: src/readelf.c:5075
+#: src/readelf.c:5100
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** 略語を読んでいる間にエラー: %s\n"
 
-#: src/readelf.c:5091
+#: src/readelf.c:5116
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] オフセット: %<PRId64>、子: %s、タグ: %s\n"
 
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6595 src/readelf.c:8332 src/readelf.c:9024 src/readelf.c:9460
-#: src/readelf.c:9711 src/readelf.c:9877 src/readelf.c:10264
-#: src/readelf.c:10324
+#: src/readelf.c:5149 src/readelf.c:5458 src/readelf.c:5625 src/readelf.c:6010
+#: src/readelf.c:6620 src/readelf.c:8357 src/readelf.c:9049 src/readelf.c:9522
+#: src/readelf.c:9773 src/readelf.c:9939 src/readelf.c:10326
+#: src/readelf.c:10386
 #, c-format
 msgid ""
 "\n"
@@ -4787,52 +4791,52 @@
 "\n"
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:5137
+#: src/readelf.c:5162
 #, fuzzy, c-format
 msgid "cannot get .debug_addr section data: %s"
 msgstr "セクションデータを割り当てられません: %s"
 
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9069
+#: src/readelf.c:5262 src/readelf.c:5286 src/readelf.c:5670 src/readelf.c:9094
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9082
+#: src/readelf.c:5264 src/readelf.c:5301 src/readelf.c:5683 src/readelf.c:9107
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9091
+#: src/readelf.c:5265 src/readelf.c:5310 src/readelf.c:5692 src/readelf.c:9116
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9101
+#: src/readelf.c:5267 src/readelf.c:5320 src/readelf.c:5702 src/readelf.c:9126
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9086 src/readelf.c:10456
+#: src/readelf.c:5305 src/readelf.c:5687 src/readelf.c:9111 src/readelf.c:10518
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "不明なバージョン"
 
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9096
+#: src/readelf.c:5315 src/readelf.c:5528 src/readelf.c:5697 src/readelf.c:9121
 #, fuzzy, c-format
 msgid "unsupported address size"
 msgstr "アドレス値ではありません"
 
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9106
+#: src/readelf.c:5326 src/readelf.c:5539 src/readelf.c:5707 src/readelf.c:9131
 #, c-format
 msgid "unsupported segment size"
 msgstr ""
 
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5379 src/readelf.c:5453
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ".debug_aragnes の内容を得られません: %s"
 
-#: src/readelf.c:5369
+#: src/readelf.c:5394
 #, c-format
 msgid ""
 "\n"
@@ -4845,19 +4849,19 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:5400
+#: src/readelf.c:5425
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5402
+#: src/readelf.c:5427
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
 msgstr ""
 " [%*zu] 開始: %0#*<PRIx64>、長さ: %5<PRIu64>、CU DIE オフセット: %6<PRId64>\n"
 
-#: src/readelf.c:5446 src/readelf.c:8359
+#: src/readelf.c:5471 src/readelf.c:8384
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -4866,152 +4870,152 @@
 "\n"
 "オフセット %Zu のテーブル:\n"
 
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6619 src/readelf.c:8370
-#: src/readelf.c:9050
+#: src/readelf.c:5475 src/readelf.c:5651 src/readelf.c:6644 src/readelf.c:8395
+#: src/readelf.c:9075
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:5466
+#: src/readelf.c:5491
 #, fuzzy, c-format
 msgid ""
 "\n"
 " Length:        %6<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5478
+#: src/readelf.c:5503
 #, fuzzy, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5482
+#: src/readelf.c:5507
 #, c-format
 msgid "unsupported aranges version"
 msgstr ""
 
-#: src/readelf.c:5493
+#: src/readelf.c:5518
 #, fuzzy, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5499
+#: src/readelf.c:5524
 #, fuzzy, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5510
+#: src/readelf.c:5535
 #, fuzzy, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
 "\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:5565
+#: src/readelf.c:5590
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr ""
 
-#: src/readelf.c:5609
+#: src/readelf.c:5634
 #, fuzzy, c-format
 msgid "cannot get .debug_rnglists content: %s"
 msgstr ".degub_ranges の内容を得られません: %s"
 
-#: src/readelf.c:5632 src/readelf.c:9056
+#: src/readelf.c:5657 src/readelf.c:9081
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5687 src/readelf.c:9111
+#: src/readelf.c:5712 src/readelf.c:9136
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5703 src/readelf.c:9127
+#: src/readelf.c:5728 src/readelf.c:9152
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5705 src/readelf.c:9129
+#: src/readelf.c:5730 src/readelf.c:9154
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5711 src/readelf.c:9135
+#: src/readelf.c:5736 src/readelf.c:9160
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5722 src/readelf.c:9146
+#: src/readelf.c:5747 src/readelf.c:9171
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5726 src/readelf.c:9150
+#: src/readelf.c:5751 src/readelf.c:9175
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  所有者         大きさ\n"
 
-#: src/readelf.c:5778
+#: src/readelf.c:5803
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "不当なデータ"
 
-#: src/readelf.c:5963 src/readelf.c:9438
+#: src/readelf.c:5988 src/readelf.c:9500
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:5980
+#: src/readelf.c:6005
 #, c-format
 msgid "cannot get .debug_ranges content: %s"
 msgstr ".degub_ranges の内容を得られません: %s"
 
-#: src/readelf.c:6016 src/readelf.c:9493
+#: src/readelf.c:6041 src/readelf.c:9555
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6018 src/readelf.c:9495
+#: src/readelf.c:6043 src/readelf.c:9557
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6027 src/readelf.c:9521 src/readelf.c:9547
+#: src/readelf.c:6052 src/readelf.c:9583 src/readelf.c:9609
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:6052 src/readelf.c:9631
+#: src/readelf.c:6077 src/readelf.c:9693
 #, fuzzy
 msgid "base address"
 msgstr "アドレスを %s に設定する\n"
 
-#: src/readelf.c:6062 src/readelf.c:9641
+#: src/readelf.c:6087 src/readelf.c:9703
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr ""
 "\n"
 " [%6tx] ゼロ終端\n"
 
-#: src/readelf.c:6317
+#: src/readelf.c:6342
 #, fuzzy
 msgid "         <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:6573
+#: src/readelf.c:6598
 #, fuzzy, c-format
 msgid "cannot get ELF: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:6591
+#: src/readelf.c:6616
 #, c-format
 msgid ""
 "\n"
@@ -5020,7 +5024,7 @@
 "\n"
 "オフセット %3$#<PRIx64> の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:6641
+#: src/readelf.c:6666
 #, c-format
 msgid ""
 "\n"
@@ -5029,65 +5033,65 @@
 "\n"
 " [%6tx] ゼロ終端\n"
 
-#: src/readelf.c:6742 src/readelf.c:6896
+#: src/readelf.c:6767 src/readelf.c:6921
 #, fuzzy, c-format
 msgid "invalid augmentation length"
 msgstr "不当な拡大エンコード"
 
-#: src/readelf.c:6757
+#: src/readelf.c:6782
 msgid "FDE address encoding: "
 msgstr "FDE アドレスエンコード"
 
-#: src/readelf.c:6763
+#: src/readelf.c:6788
 msgid "LSDA pointer encoding: "
 msgstr "LSDA ポインターエンコード:"
 
-#: src/readelf.c:6873
+#: src/readelf.c:6898
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:6880
+#: src/readelf.c:6905
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:6917
+#: src/readelf.c:6942
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sLSDA ポインター: %#<PRIx64>\n"
 
-#: src/readelf.c:7002
+#: src/readelf.c:7027
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "属性コードを得られません: %s"
 
-#: src/readelf.c:7012
+#: src/readelf.c:7037
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "属性様式を得られません: %s"
 
-#: src/readelf.c:7034
+#: src/readelf.c:7059
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "属性値を得られません: %s"
 
-#: src/readelf.c:7364
+#: src/readelf.c:7389
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "不当なファイル"
 
-#: src/readelf.c:7368
+#: src/readelf.c:7393
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:7372
+#: src/readelf.c:7397
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:7685
+#: src/readelf.c:7710
 #, c-format
 msgid ""
 "\n"
@@ -5098,12 +5102,12 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " [オフセット]\n"
 
-#: src/readelf.c:7735
+#: src/readelf.c:7760
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:7754
+#: src/readelf.c:7779
 #, fuzzy, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5115,7 +5119,7 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:7766
+#: src/readelf.c:7791
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5126,39 +5130,39 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:7776 src/readelf.c:7939
+#: src/readelf.c:7801 src/readelf.c:7964
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:7803
+#: src/readelf.c:7828
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:7832
+#: src/readelf.c:7857
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "DIE オフセットを得られません: %s"
 
-#: src/readelf.c:7841
+#: src/readelf.c:7866
 #, fuzzy, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr ""
 "セクション '%2$s' 中のオフセット %1$<PRIu64> の DIE のタグを得られません: "
 "%3$s"
 
-#: src/readelf.c:7879
+#: src/readelf.c:7904
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "次の DIE を得られません: %s\n"
 
-#: src/readelf.c:7887
+#: src/readelf.c:7912
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:7931
+#: src/readelf.c:7956
 #, fuzzy, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5169,7 +5173,7 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:7983
+#: src/readelf.c:8008
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5179,18 +5183,18 @@
 "\n"
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:8315
+#: src/readelf.c:8340
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "不明な様式 %<PRIx64>"
 
-#: src/readelf.c:8346
+#: src/readelf.c:8371
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "ラインデータセクションデータを得られません: %s"
 
 #. Print what we got so far.
-#: src/readelf.c:8448
+#: src/readelf.c:8473
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5220,33 +5224,33 @@
 "\n"
 "命令コード:\n"
 
-#: src/readelf.c:8470
+#: src/readelf.c:8495
 #, fuzzy, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr ".degub_ranges の内容を得られません: %s"
 
-#: src/readelf.c:8478
+#: src/readelf.c:8503
 #, fuzzy, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "アドレス値ではありません"
 
-#: src/readelf.c:8486
+#: src/readelf.c:8511
 #, fuzzy, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "セクションを得られません: %s"
 
-#: src/readelf.c:8496
+#: src/readelf.c:8521
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ"
 
-#: src/readelf.c:8511
+#: src/readelf.c:8536
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] "  [%*<PRIuFAST8>]  %hhu パラメーター\n"
 
-#: src/readelf.c:8522
+#: src/readelf.c:8547
 msgid ""
 "\n"
 "Directory table:"
@@ -5254,12 +5258,12 @@
 "\n"
 "ディレクトリーテーブル:"
 
-#: src/readelf.c:8528 src/readelf.c:8605
+#: src/readelf.c:8553 src/readelf.c:8630
 #, fuzzy, c-format
 msgid "      ["
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:8599
+#: src/readelf.c:8624
 #, fuzzy
 msgid ""
 "\n"
@@ -5268,7 +5272,7 @@
 "\n"
 " 呼出しサイトテーブル:"
 
-#: src/readelf.c:8660
+#: src/readelf.c:8685
 #, fuzzy
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
@@ -5276,7 +5280,7 @@
 "ファイル名テーブル:\n"
 " Entry Dir   時刻     大きさ    名前"
 
-#: src/readelf.c:8699
+#: src/readelf.c:8724
 #, fuzzy
 msgid ""
 "\n"
@@ -5285,7 +5289,7 @@
 "\n"
 "行   番号   文:"
 
-#: src/readelf.c:8703
+#: src/readelf.c:8728
 msgid ""
 "\n"
 "Line number statements:"
@@ -5293,119 +5297,119 @@
 "\n"
 "行   番号   文:"
 
-#: src/readelf.c:8726
+#: src/readelf.c:8751
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr ""
 
-#: src/readelf.c:8760
+#: src/readelf.c:8785
 #, fuzzy, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
 
-#: src/readelf.c:8764
+#: src/readelf.c:8789
 #, fuzzy, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:8792
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:8785
+#: src/readelf.c:8810
 #, c-format
 msgid " extended opcode %u: "
 msgstr " 拡張命令コード %u: "
 
-#: src/readelf.c:8790
+#: src/readelf.c:8815
 #, fuzzy
 msgid " end of sequence"
 msgstr "列の終わり"
 
-#: src/readelf.c:8808
+#: src/readelf.c:8833
 #, fuzzy, c-format
 msgid " set address to "
 msgstr "アドレスを %s に設定する\n"
 
-#: src/readelf.c:8836
+#: src/readelf.c:8861
 #, fuzzy, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 "新ファイルを定義する: dir=%u、mtime=%<PRIu64>、長さh=%<PRIu64>、名前=%s\n"
 
-#: src/readelf.c:8850
+#: src/readelf.c:8875
 #, fuzzy, c-format
 msgid " set discriminator to %u\n"
 msgstr "カラムを %<PRIu64> に設定する\n"
 
 #. Unknown, ignore it.
-#: src/readelf.c:8855
+#: src/readelf.c:8880
 #, fuzzy
 msgid " unknown opcode"
 msgstr "不明な命令コード"
 
 #. Takes no argument.
-#: src/readelf.c:8867
+#: src/readelf.c:8892
 msgid " copy"
 msgstr "複写"
 
-#: src/readelf.c:8878
+#: src/readelf.c:8903
 #, fuzzy, c-format
 msgid " advance address by %u to "
 msgstr "アドレスを %u だけ進めて %s にする\n"
 
-#: src/readelf.c:8882 src/readelf.c:8943
+#: src/readelf.c:8907 src/readelf.c:8968
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:8894
+#: src/readelf.c:8919
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr "行を定数 %d だけ進めて %<PRId64> にする\n"
 
-#: src/readelf.c:8904
+#: src/readelf.c:8929
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:8915
+#: src/readelf.c:8940
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr "カラムを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:8922
+#: src/readelf.c:8947
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " '%s' を %<PRIuFAST8> に設定する\n"
 
 #. Takes no argument.
-#: src/readelf.c:8928
+#: src/readelf.c:8953
 msgid " set basic block flag"
 msgstr "基本ブロックフラグを設定する"
 
-#: src/readelf.c:8939
+#: src/readelf.c:8964
 #, fuzzy, c-format
 msgid " advance address by constant %u to "
 msgstr "アドレスを定数 %u だけ済めて %s にする\n"
 
-#: src/readelf.c:8959
+#: src/readelf.c:8984
 #, fuzzy, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr "アドレスを固定値 %u だけ進めて %s にする\n"
 
 #. Takes no argument.
-#: src/readelf.c:8969
+#: src/readelf.c:8994
 msgid " set prologue end flag"
 msgstr "プロローグ終了フラグを設定する"
 
 #. Takes no argument.
-#: src/readelf.c:8974
+#: src/readelf.c:8999
 msgid " set epilogue begin flag"
 msgstr "エピローグ開始フラグを設定する"
 
-#: src/readelf.c:8984
+#: src/readelf.c:9009
 #, fuzzy, c-format
 msgid " set isa to %u\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
@@ -5413,98 +5417,103 @@
 #. This is a new opcode the generator but not we know about.
 #. Read the parameters associated with it but then discard
 #. everything.  Read all the parameters for this opcode.
-#: src/readelf.c:8993
+#: src/readelf.c:9018
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] " %<PRIu8> 個のパラメーターのある不明な命令コード:"
 
-#: src/readelf.c:9033
+#: src/readelf.c:9058
 #, fuzzy, c-format
 msgid "cannot get .debug_loclists content: %s"
 msgstr ".debug_loc の内容を得られません: %s"
 
-#: src/readelf.c:9202
+#: src/readelf.c:9224
+#, fuzzy, c-format
+msgid "    <INVALID DATA>\n"
+msgstr " [%6tx]  <不当なデータ>\n"
+
+#: src/readelf.c:9264
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "不当なデータ"
 
-#: src/readelf.c:9455
+#: src/readelf.c:9517
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr ".debug_loc の内容を得られません: %s"
 
-#: src/readelf.c:9668 src/readelf.c:10712
+#: src/readelf.c:9730 src/readelf.c:10774
 #, fuzzy
 msgid "   <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:9723 src/readelf.c:9886
+#: src/readelf.c:9785 src/readelf.c:9948
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "マクロ情報セクションのデータを得られません: %s"
 
-#: src/readelf.c:9803
+#: src/readelf.c:9865
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** 最後のセクションの終端していない文字列"
 
-#: src/readelf.c:9826
+#: src/readelf.c:9888
 #, fuzzy, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr "%*s*** 最後のセクションの終端していない文字列"
 
-#: src/readelf.c:9927
+#: src/readelf.c:9989
 #, fuzzy, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr "  所有者         大きさ\n"
 
-#: src/readelf.c:9939
+#: src/readelf.c:10001
 #, fuzzy, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:9945 src/readelf.c:10832
+#: src/readelf.c:10007 src/readelf.c:10894
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr ""
 
-#: src/readelf.c:9952
+#: src/readelf.c:10014
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr "  入口点アドレス     :               %#<PRIx64>\n"
 
-#: src/readelf.c:9981
+#: src/readelf.c:10043
 #, fuzzy, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:9989
+#: src/readelf.c:10051
 #, fuzzy, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10014
+#: src/readelf.c:10076
 #, fuzzy, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr " %<PRIu8> 個のパラメーターのある不明な命令コード:"
 
-#: src/readelf.c:10021
+#: src/readelf.c:10083
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr ""
 
-#: src/readelf.c:10033
+#: src/readelf.c:10095
 #, fuzzy, c-format
 msgid " %<PRIu8> arguments:"
 msgstr "  [%*<PRIuFAST8>]  %hhu パラメーター\n"
 
-#: src/readelf.c:10048
+#: src/readelf.c:10110
 #, c-format
 msgid " no arguments."
 msgstr ""
 
-#: src/readelf.c:10249
+#: src/readelf.c:10311
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
@@ -5512,7 +5521,7 @@
 
 # # "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 # # " %4$*s  文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い
-#: src/readelf.c:10293
+#: src/readelf.c:10355
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5523,37 +5532,37 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " %4$*s  文字列\n"
 
-#: src/readelf.c:10308
+#: src/readelf.c:10370
 #, fuzzy, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** 文字列の読込み中にエラー: %s\n"
 
-#: src/readelf.c:10337
+#: src/readelf.c:10399
 #, fuzzy, c-format
 msgid "cannot get .debug_str_offsets section data: %s"
 msgstr ".degub_ranges の内容を得られません: %s"
 
-#: src/readelf.c:10436
+#: src/readelf.c:10498
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10438
+#: src/readelf.c:10500
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10452
+#: src/readelf.c:10514
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10461
+#: src/readelf.c:10523
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10515
+#: src/readelf.c:10577
 #, c-format
 msgid ""
 "\n"
@@ -5562,7 +5571,7 @@
 "\n"
 "呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:10617
+#: src/readelf.c:10679
 #, c-format
 msgid ""
 "\n"
@@ -5571,22 +5580,22 @@
 "\n"
 "例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:10640
+#: src/readelf.c:10702
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " LPStart コード化:    %#x "
 
-#: src/readelf.c:10652
+#: src/readelf.c:10714
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr "TType コード化:       %#x "
 
-#: src/readelf.c:10667
+#: src/readelf.c:10729
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr "呼出しサイトコード化: %#x "
 
-#: src/readelf.c:10680
+#: src/readelf.c:10742
 msgid ""
 "\n"
 " Call site table:"
@@ -5594,7 +5603,7 @@
 "\n"
 " 呼出しサイトテーブル:"
 
-#: src/readelf.c:10694
+#: src/readelf.c:10756
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5607,12 +5616,12 @@
 "        離着陸場:           %#<PRIx64>\n"
 "        行動:               %u\n"
 
-#: src/readelf.c:10767
+#: src/readelf.c:10829
 #, c-format
 msgid "invalid TType encoding"
 msgstr "不当な TType コード化"
 
-#: src/readelf.c:10794
+#: src/readelf.c:10856
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5622,37 +5631,37 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:10823
+#: src/readelf.c:10885
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10841
+#: src/readelf.c:10903
 #, fuzzy, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10848
+#: src/readelf.c:10910
 #, fuzzy, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10855
+#: src/readelf.c:10917
 #, fuzzy, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10862
+#: src/readelf.c:10924
 #, fuzzy, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10869
+#: src/readelf.c:10931
 #, fuzzy, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10883
+#: src/readelf.c:10945
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5662,7 +5671,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:10908
+#: src/readelf.c:10970
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5672,7 +5681,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:10937
+#: src/readelf.c:10999
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5682,7 +5691,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:10969
+#: src/readelf.c:11031
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5691,18 +5700,18 @@
 "\n"
 "オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
 
-#: src/readelf.c:11107
+#: src/readelf.c:11169
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "デバッグ内容記述子を得られません: %s"
 
-#: src/readelf.c:11475 src/readelf.c:12097 src/readelf.c:12208
-#: src/readelf.c:12266
+#: src/readelf.c:11537 src/readelf.c:12159 src/readelf.c:12270
+#: src/readelf.c:12328
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "コアノートデータの変換ができません: %s"
 
-#: src/readelf.c:11838
+#: src/readelf.c:11900
 #, c-format
 msgid ""
 "\n"
@@ -5711,21 +5720,21 @@
 "\n"
 "%*s... < %u 回の繰返し> ..."
 
-#: src/readelf.c:12345
+#: src/readelf.c:12407
 msgid "  Owner          Data size  Type\n"
 msgstr "  所有者         データ大きさタイプ\n"
 
-#: src/readelf.c:12374
+#: src/readelf.c:12436
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12426
+#: src/readelf.c:12488
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "ノートセクションの内容を得られません: %s"
 
-#: src/readelf.c:12460
+#: src/readelf.c:12522
 #, c-format
 msgid ""
 "\n"
@@ -5735,7 +5744,7 @@
 "オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのノートセクション [%1$2zu] "
 "'%2$s':\n"
 
-#: src/readelf.c:12483
+#: src/readelf.c:12545
 #, c-format
 msgid ""
 "\n"
@@ -5744,7 +5753,7 @@
 "\n"
 "オフセット %2$#0<PRIx64> の %1$<PRIu64> バイトのノートセグメント:\n"
 
-#: src/readelf.c:12530
+#: src/readelf.c:12592
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5753,12 +5762,12 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:12557 src/readelf.c:12608
+#: src/readelf.c:12619 src/readelf.c:12670
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
 
-#: src/readelf.c:12562
+#: src/readelf.c:12624
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5768,7 +5777,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:12567
+#: src/readelf.c:12629
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5779,7 +5788,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:12581
+#: src/readelf.c:12643
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5788,7 +5797,7 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:12613
+#: src/readelf.c:12675
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5798,7 +5807,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:12618
+#: src/readelf.c:12680
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5809,7 +5818,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:12667
+#: src/readelf.c:12729
 #, c-format
 msgid ""
 "\n"
@@ -5818,7 +5827,7 @@
 "\n"
 "セクション [%lu] がありません"
 
-#: src/readelf.c:12697
+#: src/readelf.c:12759
 #, c-format
 msgid ""
 "\n"
@@ -5827,12 +5836,12 @@
 "\n"
 "セクション '%s' がありません"
 
-#: src/readelf.c:12754
+#: src/readelf.c:12816
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "アーカイブのシンボル索引 '%s' を得られません: %s"
 
-#: src/readelf.c:12757
+#: src/readelf.c:12819
 #, c-format
 msgid ""
 "\n"
@@ -5841,7 +5850,7 @@
 "\n"
 "アーカイブ '%s' にはシンボル索引がありません\n"
 
-#: src/readelf.c:12761
+#: src/readelf.c:12823
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5850,12 +5859,12 @@
 "\n"
 "アーカイブ '%s' の索引には %Zu 項目あります:\n"
 
-#: src/readelf.c:12779
+#: src/readelf.c:12841
 #, fuzzy, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "'%2$s' の オフセット %1$Zu のメンバーを抽出できません: %3$s"
 
-#: src/readelf.c:12784
+#: src/readelf.c:12846
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "アーカイブメンバー '%s' には以下があります:\n"
@@ -6447,7 +6456,7 @@
 msgid "cannot get shdrstrndx:%s"
 msgstr "セクションを得られません: %s"
 
-#: src/unstrip.c:248 src/unstrip.c:2083
+#: src/unstrip.c:248 src/unstrip.c:2089
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr ""
@@ -6467,12 +6476,12 @@
 msgid "cannot copy ELF header: %s"
 msgstr ""
 
-#: src/unstrip.c:269 src/unstrip.c:2101 src/unstrip.c:2144
+#: src/unstrip.c:269 src/unstrip.c:2107 src/unstrip.c:2150
 #, fuzzy, c-format
 msgid "cannot get number of program headers: %s"
 msgstr "セクション数を決定できません: %s"
 
-#: src/unstrip.c:274 src/unstrip.c:2105
+#: src/unstrip.c:274 src/unstrip.c:2111
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr ""
@@ -6487,275 +6496,275 @@
 msgid "cannot copy section header: %s"
 msgstr ""
 
-#: src/unstrip.c:293 src/unstrip.c:1705
+#: src/unstrip.c:293 src/unstrip.c:1711
 #, c-format
 msgid "cannot get section data: %s"
 msgstr ""
 
-#: src/unstrip.c:295 src/unstrip.c:1707
+#: src/unstrip.c:295 src/unstrip.c:1713
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr ""
 
-#: src/unstrip.c:319
+#: src/unstrip.c:323
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr ""
 
-#: src/unstrip.c:391 src/unstrip.c:653 src/unstrip.c:687 src/unstrip.c:855
-#: src/unstrip.c:1747
+#: src/unstrip.c:397 src/unstrip.c:659 src/unstrip.c:693 src/unstrip.c:861
+#: src/unstrip.c:1753
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr ""
 
-#: src/unstrip.c:407 src/unstrip.c:656 src/unstrip.c:677 src/unstrip.c:690
-#: src/unstrip.c:1768 src/unstrip.c:1963 src/unstrip.c:1987
+#: src/unstrip.c:413 src/unstrip.c:662 src/unstrip.c:683 src/unstrip.c:696
+#: src/unstrip.c:1774 src/unstrip.c:1969 src/unstrip.c:1993
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr ""
 
-#: src/unstrip.c:417
+#: src/unstrip.c:423
 #, c-format
 msgid "cannot update section header: %s"
 msgstr ""
 
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:469 src/unstrip.c:483
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr ""
 
-#: src/unstrip.c:576
+#: src/unstrip.c:582
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr ""
 
-#: src/unstrip.c:589
+#: src/unstrip.c:595
 #, c-format
 msgid "unexpected section type in [%zu] with sh_link to symtab"
 msgstr ""
 
-#: src/unstrip.c:844
+#: src/unstrip.c:850
 #, fuzzy, c-format
 msgid "cannot get symbol section data: %s"
 msgstr "ラインデータセクションデータを得られません: %s"
 
-#: src/unstrip.c:846
+#: src/unstrip.c:852
 #, fuzzy, c-format
 msgid "cannot get string section data: %s"
 msgstr "ラインデータセクションデータを得られません: %s"
 
-#: src/unstrip.c:863
+#: src/unstrip.c:869
 #, fuzzy, c-format
 msgid "invalid string offset in symbol [%zu]"
 msgstr "シンボル %2$sの不正なオフセット %1$zu "
 
-#: src/unstrip.c:1021 src/unstrip.c:1425
+#: src/unstrip.c:1027 src/unstrip.c:1431
 #, fuzzy, c-format
 msgid "cannot read section [%zu] name: %s"
 msgstr "セクションデータを割り当てられません: %s"
 
-#: src/unstrip.c:1036
+#: src/unstrip.c:1042
 #, fuzzy, c-format
 msgid "bad sh_link for group section: %s"
 msgstr "不当な .debug_line セクション"
 
-#: src/unstrip.c:1042
+#: src/unstrip.c:1048
 #, fuzzy, c-format
 msgid "couldn't get shdr for group section: %s"
 msgstr "セクションからデータを得られません %d: %s"
 
-#: src/unstrip.c:1047
+#: src/unstrip.c:1053
 #, fuzzy, c-format
 msgid "bad data for group symbol section: %s"
 msgstr "セクションからデータを得られません %d: %s"
 
-#: src/unstrip.c:1053
+#: src/unstrip.c:1059
 #, fuzzy, c-format
 msgid "couldn't get symbol for group section: %s"
 msgstr "セクション数を決定できません: %s"
 
-#: src/unstrip.c:1058
+#: src/unstrip.c:1064
 #, fuzzy, c-format
 msgid "bad symbol name for group section: %s"
 msgstr "セクションヘッダー文字列セクションを生成できません: %s"
 
-#: src/unstrip.c:1100 src/unstrip.c:1119 src/unstrip.c:1157
+#: src/unstrip.c:1106 src/unstrip.c:1125 src/unstrip.c:1163
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr ""
 
-#: src/unstrip.c:1137
+#: src/unstrip.c:1143
 #, c-format
 msgid "overflow with shnum = %zu in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1148
+#: src/unstrip.c:1154
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr ""
 
-#: src/unstrip.c:1204 src/unstrip.c:1551
+#: src/unstrip.c:1210 src/unstrip.c:1557
 #, fuzzy, c-format
 msgid "cannot find matching section for [%zu] '%s'"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/unstrip.c:1329 src/unstrip.c:1345 src/unstrip.c:1631 src/unstrip.c:1922
+#: src/unstrip.c:1335 src/unstrip.c:1351 src/unstrip.c:1637 src/unstrip.c:1928
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1354
+#: src/unstrip.c:1360
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr ""
 
-#: src/unstrip.c:1383 src/unstrip.c:1387
+#: src/unstrip.c:1389 src/unstrip.c:1393
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 
-#: src/unstrip.c:1391 src/unstrip.c:1395 src/unstrip.c:1646
+#: src/unstrip.c:1397 src/unstrip.c:1401 src/unstrip.c:1652
 #, c-format
 msgid "cannot get section count: %s"
 msgstr ""
 
-#: src/unstrip.c:1398
+#: src/unstrip.c:1404
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 
-#: src/unstrip.c:1402
+#: src/unstrip.c:1408
 #, c-format
 msgid "no sections in stripped file"
 msgstr ""
 
-#: src/unstrip.c:1473 src/unstrip.c:1566
+#: src/unstrip.c:1479 src/unstrip.c:1572
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr ""
 
-#: src/unstrip.c:1625
+#: src/unstrip.c:1631
 #, c-format
 msgid "cannot add new section: %s"
 msgstr ""
 
-#: src/unstrip.c:1755
+#: src/unstrip.c:1761
 #, fuzzy, c-format
 msgid "symbol [%zu] has invalid section index"
 msgstr "不当なセクション索引"
 
-#: src/unstrip.c:1787
+#: src/unstrip.c:1793
 #, fuzzy, c-format
 msgid "group has invalid section index [%zd]"
 msgstr "不当なセクション索引"
 
-#: src/unstrip.c:2062
+#: src/unstrip.c:2068
 #, fuzzy, c-format
 msgid "cannot read section data: %s"
 msgstr "セクションデータを割り当てられません: %s"
 
-#: src/unstrip.c:2091
+#: src/unstrip.c:2097
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "ELF ヘッダーを更新できません: %s"
 
-#: src/unstrip.c:2115
+#: src/unstrip.c:2121
 #, c-format
 msgid "cannot update program header: %s"
 msgstr ""
 
-#: src/unstrip.c:2120 src/unstrip.c:2202
+#: src/unstrip.c:2126 src/unstrip.c:2208
 #, c-format
 msgid "cannot write output file: %s"
 msgstr ""
 
-#: src/unstrip.c:2171
+#: src/unstrip.c:2177
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:2174
+#: src/unstrip.c:2180
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 
-#: src/unstrip.c:2193 src/unstrip.c:2244 src/unstrip.c:2256 src/unstrip.c:2342
+#: src/unstrip.c:2199 src/unstrip.c:2250 src/unstrip.c:2262 src/unstrip.c:2348
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr ""
 
-#: src/unstrip.c:2235
+#: src/unstrip.c:2241
 msgid "WARNING: "
 msgstr ""
 
-#: src/unstrip.c:2237
+#: src/unstrip.c:2243
 msgid ", use --force"
 msgstr ""
 
-#: src/unstrip.c:2260
+#: src/unstrip.c:2266
 msgid "ELF header identification (e_ident) different"
 msgstr ""
 
-#: src/unstrip.c:2263
+#: src/unstrip.c:2269
 msgid "ELF header type (e_type) different"
 msgstr ""
 
-#: src/unstrip.c:2266
+#: src/unstrip.c:2272
 msgid "ELF header machine type (e_machine) different"
 msgstr ""
 
-#: src/unstrip.c:2269
+#: src/unstrip.c:2275
 msgid "stripped program header (e_phnum) smaller than unstripped"
 msgstr ""
 
-#: src/unstrip.c:2299
+#: src/unstrip.c:2305
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2303
+#: src/unstrip.c:2309
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2318
+#: src/unstrip.c:2324
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2322
+#: src/unstrip.c:2328
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2335
+#: src/unstrip.c:2341
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr ""
 
-#: src/unstrip.c:2366
+#: src/unstrip.c:2372
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 
-#: src/unstrip.c:2498
+#: src/unstrip.c:2504
 #, c-format
 msgid "no matching modules found"
 msgstr ""
 
-#: src/unstrip.c:2507
+#: src/unstrip.c:2513
 #, c-format
 msgid "matched more than one module"
 msgstr ""
 
-#: src/unstrip.c:2551
+#: src/unstrip.c:2557
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
 msgstr ""
 
-#: src/unstrip.c:2552
+#: src/unstrip.c:2558
 msgid ""
 "Combine stripped files with separate symbols and debug information.\n"
 "\n"
diff --git a/po/pl.po b/po/pl.po
index 2206e84..2cdc58e 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: elfutils\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-09-08 12:51+0200\n"
+"POT-Creation-Date: 2020-10-31 17:37+0100\n"
 "PO-Revision-Date: 2016-12-29 17:48+0100\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
@@ -60,7 +60,7 @@
 "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11424 src/unstrip.c:2395 src/unstrip.c:2600
+#: src/readelf.c:11486 src/unstrip.c:316 src/unstrip.c:2401 src/unstrip.c:2606
 #, c-format
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
@@ -223,7 +223,7 @@
 msgid "invalid directory index"
 msgstr "nieprawidłowy indeks katalogu"
 
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:75
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:76
 msgid "address out of range"
 msgstr "adres jest spoza zakresu"
 
@@ -254,7 +254,7 @@
 msgid "invalid address range index"
 msgstr "nieprawidłowy indeks zakresu adresów"
 
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:76
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:77
 msgid "no matching address range"
 msgstr "brak pasującego zakresu adresów"
 
@@ -301,7 +301,7 @@
 msgid ".debug_addr section missing"
 msgstr "brak sekcji .debug_ranges"
 
-#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2541
+#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2547
 msgid "Input selection options:"
 msgstr "Opcje wyboru wejścia:"
 
@@ -396,126 +396,131 @@
 msgstr "dekompresja LZMA się nie powiodła"
 
 #: libdwfl/libdwflP.h:64
+#, fuzzy
+msgid "zstd decompression failed"
+msgstr "dekompresja gzip się nie powiodła"
+
+#: libdwfl/libdwflP.h:65
 msgid "no support library found for machine"
 msgstr "nie odnaleziono biblioteki obsługi dla komputera"
 
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:66
 msgid "Callbacks missing for ET_REL file"
 msgstr "Brak wywołań zwrotnych dla pliku ET_REL"
 
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
 msgid "Unsupported relocation type"
 msgstr "Nieobsługiwany typ relokacji"
 
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
 msgid "r_offset is bogus"
 msgstr "r_offset jest fałszywe"
 
-#: libdwfl/libdwflP.h:68 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:69 libelf/elf_error.c:115 libelf/elf_error.c:175
 msgid "offset out of range"
 msgstr "offset spoza zakresu"
 
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
 msgid "relocation refers to undefined symbol"
 msgstr "relokacja odnosi się do nieokreślonego symbolu"
 
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
 msgid "Callback returned failure"
 msgstr "Wywołanie zwrotne zwróciło niepowodzenie"
 
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
 msgid "No DWARF information found"
 msgstr "Nie odnaleziono informacji DWARF"
 
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:73
 msgid "No symbol table found"
 msgstr "Nie odnaleziono tabeli symboli"
 
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:74
 msgid "No ELF program headers"
 msgstr "Brak nagłówków programu ELF"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
 msgid "address range overlaps an existing module"
 msgstr "zakres adresów pokrywa się z istniejącym modułem"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
 msgid "image truncated"
 msgstr "skrócono obraz"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
 msgid "ELF file opened"
 msgstr "otwarto plik ELF"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
 msgid "not a valid ELF file"
 msgstr "nie jest prawidłowym plikiem ELF"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
 msgid "cannot handle DWARF type description"
 msgstr "nie można obsłużyć opisu typu DWARF"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
 msgid "ELF file does not match build ID"
 msgstr "plik ELF nie ma pasującego identyfikatora kopii"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "uszkodzone dane sekcji .gnu.prelink_undo"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
 msgid "Internal error due to ebl"
 msgstr "Wewnętrzny błąd z powodu ebl"
 
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
 msgid "Missing data in core file"
 msgstr "Brak danych w pliku core"
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
 msgid "Invalid register"
 msgstr "Nieprawidłowy rejestr"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
 msgid "Error reading process memory"
 msgstr "Błąd podczas odczytywania pamięci procesu"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
 msgid "Couldn't find architecture of any ELF"
 msgstr "Nie można odnaleźć architektury żadnego ELF"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
 msgid "Error parsing /proc filesystem"
 msgstr "Błąd podczas przetwarzania systemu plików /proc"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
 msgid "Invalid DWARF"
 msgstr "Nieprawidłowy DWARF"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
 msgid "Unsupported DWARF"
 msgstr "Nieobsługiwany DWARF"
 
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
 msgid "Unable to find more threads"
 msgstr "Nie można odnaleźć więcej wątków"
 
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
 msgid "Dwfl already has attached state"
 msgstr "Dwfl już ma załączony stan"
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
 msgid "Dwfl has no attached state"
 msgstr "Dwfl nie ma załączonego stanu"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:95
 msgid "Unwinding not supported for this architecture"
 msgstr "Odwijanie nie jest obsługiwane dla tej architektury"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:96
 msgid "Invalid argument"
 msgstr "Nieprawidłowy parametr"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:97
 msgid "Not an ET_CORE ELF file"
 msgstr "Nie jest plikiem ELF ET_CORE"
 
@@ -620,7 +625,7 @@
 msgid "invalid size of destination operand"
 msgstr "nieprawidłowy rozmiar operanda docelowego"
 
-#: libelf/elf_error.c:87 src/readelf.c:6172
+#: libelf/elf_error.c:87 src/readelf.c:6197
 #, c-format
 msgid "invalid encoding"
 msgstr "nieprawidłowe kodowanie"
@@ -706,8 +711,8 @@
 msgid "invalid section header"
 msgstr "nieprawidłowy nagłówek sekcji"
 
-#: libelf/elf_error.c:191 src/readelf.c:9935 src/readelf.c:10535
-#: src/readelf.c:10636 src/readelf.c:10818
+#: libelf/elf_error.c:191 src/readelf.c:9997 src/readelf.c:10597
+#: src/readelf.c:10698 src/readelf.c:10880
 #, c-format
 msgid "invalid data"
 msgstr "nieprawidłowe dane"
@@ -1366,7 +1371,7 @@
 
 #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2191 src/unstrip.c:2220
+#: src/unstrip.c:2197 src/unstrip.c:2226
 #, c-format
 msgid "cannot open '%s'"
 msgstr "nie można otworzyć „%s”"
@@ -3708,8 +3713,8 @@
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11251 src/readelf.c:12441
-#: src/readelf.c:12652 src/readelf.c:12721 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11313 src/readelf.c:12503
+#: src/readelf.c:12714 src/readelf.c:12783 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -4034,11 +4039,11 @@
 msgid "cannot get section: %s"
 msgstr "nie można uzyskać sekcji: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12672
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:606
-#: src/unstrip.c:627 src/unstrip.c:667 src/unstrip.c:883 src/unstrip.c:1214
-#: src/unstrip.c:1341 src/unstrip.c:1365 src/unstrip.c:1421 src/unstrip.c:1485
-#: src/unstrip.c:1660 src/unstrip.c:1811 src/unstrip.c:1954 src/unstrip.c:2053
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12734
+#: src/unstrip.c:401 src/unstrip.c:432 src/unstrip.c:491 src/unstrip.c:612
+#: src/unstrip.c:633 src/unstrip.c:673 src/unstrip.c:889 src/unstrip.c:1220
+#: src/unstrip.c:1347 src/unstrip.c:1371 src/unstrip.c:1427 src/unstrip.c:1491
+#: src/unstrip.c:1666 src/unstrip.c:1817 src/unstrip.c:1960 src/unstrip.c:2059
 #, c-format
 msgid "cannot get section header: %s"
 msgstr "nie można uzyskać nagłówka sekcji: %s"
@@ -4048,8 +4053,8 @@
 msgid "cannot get section name"
 msgstr "nie można uzyskać nazwy sekcji"
 
-#: src/readelf.c:670 src/readelf.c:6585 src/readelf.c:10523 src/readelf.c:10625
-#: src/readelf.c:10803
+#: src/readelf.c:670 src/readelf.c:6610 src/readelf.c:10585 src/readelf.c:10687
+#: src/readelf.c:10865
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "nie można uzyskać zwartości %s: %s"
@@ -4392,7 +4397,7 @@
 " Mapowanie sekcji do segmentów:\n"
 "  Segment sekcji…"
 
-#: src/readelf.c:1460 src/unstrip.c:2112 src/unstrip.c:2154 src/unstrip.c:2161
+#: src/readelf.c:1460 src/unstrip.c:2118 src/unstrip.c:2160 src/unstrip.c:2167
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "nie można uzyskać nagłówka programu: %s"
@@ -4441,8 +4446,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<NIEPRAWIDŁOWY SEKCJA>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12543
-#: src/readelf.c:12550 src/readelf.c:12594 src/readelf.c:12601
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12605
+#: src/readelf.c:12612 src/readelf.c:12656 src/readelf.c:12663
 msgid "Couldn't uncompress section"
 msgstr "Nie można dekompresować sekcji"
 
@@ -4452,7 +4457,7 @@
 msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s"
 
 #: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5389
 #, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "nieprawidłowa wartość sh_link w sekcji %zu"
@@ -4978,7 +4983,7 @@
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <NIEUŻYWANE ŚMIECIE>… %<PRIu64> bajtów…\n"
 
-#: src/readelf.c:5054
+#: src/readelf.c:5079
 #, c-format
 msgid ""
 "\n"
@@ -4989,7 +4994,7 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 " [ Kod]\n"
 
-#: src/readelf.c:5062
+#: src/readelf.c:5087
 #, c-format
 msgid ""
 "\n"
@@ -4998,20 +5003,20 @@
 "\n"
 "Sekcja skrótów pod offsetem %<PRIu64>:\n"
 
-#: src/readelf.c:5075
+#: src/readelf.c:5100
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** błąd podczas odczytywania skrótu: %s\n"
 
-#: src/readelf.c:5091
+#: src/readelf.c:5116
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n"
 
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6595 src/readelf.c:8332 src/readelf.c:9024 src/readelf.c:9460
-#: src/readelf.c:9711 src/readelf.c:9877 src/readelf.c:10264
-#: src/readelf.c:10324
+#: src/readelf.c:5149 src/readelf.c:5458 src/readelf.c:5625 src/readelf.c:6010
+#: src/readelf.c:6620 src/readelf.c:8357 src/readelf.c:9049 src/readelf.c:9522
+#: src/readelf.c:9773 src/readelf.c:9939 src/readelf.c:10326
+#: src/readelf.c:10386
 #, c-format
 msgid ""
 "\n"
@@ -5020,56 +5025,56 @@
 "\n"
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 
-#: src/readelf.c:5137
+#: src/readelf.c:5162
 #, fuzzy, c-format
 msgid "cannot get .debug_addr section data: %s"
 msgstr "nie można uzyskać danych sekcji: %s"
 
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9069
+#: src/readelf.c:5262 src/readelf.c:5286 src/readelf.c:5670 src/readelf.c:9094
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr ""
 "\n"
 " Długość:        %6<PRIu64>\n"
 
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9082
+#: src/readelf.c:5264 src/readelf.c:5301 src/readelf.c:5683 src/readelf.c:9107
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
 
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9091
+#: src/readelf.c:5265 src/readelf.c:5310 src/readelf.c:5692 src/readelf.c:9116
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " Offset adresu:  %6<PRIu64>\n"
 
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9101
+#: src/readelf.c:5267 src/readelf.c:5320 src/readelf.c:5702 src/readelf.c:9126
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr ""
 " Rozmiar segmentu:  %6<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9086 src/readelf.c:10456
+#: src/readelf.c:5305 src/readelf.c:5687 src/readelf.c:9111 src/readelf.c:10518
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "nieznana wersja"
 
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9096
+#: src/readelf.c:5315 src/readelf.c:5528 src/readelf.c:5697 src/readelf.c:9121
 #, c-format
 msgid "unsupported address size"
 msgstr "nieobsługiwany rozmiar adresu"
 
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9106
+#: src/readelf.c:5326 src/readelf.c:5539 src/readelf.c:5707 src/readelf.c:9131
 #, c-format
 msgid "unsupported segment size"
 msgstr "nieobsługiwany rozmiar segmentu"
 
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5379 src/readelf.c:5453
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "nie można uzyskać zawartości .debug_aranges: %s"
 
-#: src/readelf.c:5369
+#: src/readelf.c:5394
 #, c-format
 msgid ""
 "\n"
@@ -5087,12 +5092,12 @@
 "\n"
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:5400
+#: src/readelf.c:5425
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5402
+#: src/readelf.c:5427
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5100,7 +5105,7 @@
 " [%*zu] początek: %0#*<PRIx64>, długość: %5<PRIu64>, offset CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:5446 src/readelf.c:8359
+#: src/readelf.c:5471 src/readelf.c:8384
 #, c-format
 msgid ""
 "\n"
@@ -5109,13 +5114,13 @@
 "\n"
 "Tabela pod offsetem %zu:\n"
 
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6619 src/readelf.c:8370
-#: src/readelf.c:9050
+#: src/readelf.c:5475 src/readelf.c:5651 src/readelf.c:6644 src/readelf.c:8395
+#: src/readelf.c:9075
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "nieprawidłowe dane w sekcji [%zu] „%s”"
 
-#: src/readelf.c:5466
+#: src/readelf.c:5491
 #, c-format
 msgid ""
 "\n"
@@ -5124,27 +5129,27 @@
 "\n"
 " Długość:        %6<PRIu64>\n"
 
-#: src/readelf.c:5478
+#: src/readelf.c:5503
 #, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
 
-#: src/readelf.c:5482
+#: src/readelf.c:5507
 #, c-format
 msgid "unsupported aranges version"
 msgstr "nieobsługiwana wersja aranges"
 
-#: src/readelf.c:5493
+#: src/readelf.c:5518
 #, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " Offset CU:     %6<PRIx64>\n"
 
-#: src/readelf.c:5499
+#: src/readelf.c:5524
 #, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " Offset adresu:  %6<PRIu64>\n"
 
-#: src/readelf.c:5510
+#: src/readelf.c:5535
 #, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
@@ -5153,109 +5158,109 @@
 " Rozmiar segmentu:  %6<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5565
+#: src/readelf.c:5590
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr "   bajty wypełnienia: %zu\n"
 
-#: src/readelf.c:5609
+#: src/readelf.c:5634
 #, fuzzy, c-format
 msgid "cannot get .debug_rnglists content: %s"
 msgstr "nie można uzyskać zawartości .debug_ranges: %s"
 
-#: src/readelf.c:5632 src/readelf.c:9056
+#: src/readelf.c:5657 src/readelf.c:9081
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr " Offset .debug_line: 0x%<PRIx64>\n"
 
-#: src/readelf.c:5687 src/readelf.c:9111
+#: src/readelf.c:5712 src/readelf.c:9136
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " Długość offsetu:    %<PRIu8>\n"
 
-#: src/readelf.c:5703 src/readelf.c:9127
+#: src/readelf.c:5728 src/readelf.c:9152
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5705 src/readelf.c:9129
+#: src/readelf.c:5730 src/readelf.c:9154
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5711 src/readelf.c:9135
+#: src/readelf.c:5736 src/readelf.c:9160
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5722 src/readelf.c:9146
+#: src/readelf.c:5747 src/readelf.c:9171
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5726 src/readelf.c:9150
+#: src/readelf.c:5751 src/readelf.c:9175
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr " Offset:             0x%<PRIx64>\n"
 
-#: src/readelf.c:5778
+#: src/readelf.c:5803
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "nieprawidłowe dane"
 
-#: src/readelf.c:5963 src/readelf.c:9438
+#: src/readelf.c:5988 src/readelf.c:9500
 #, fuzzy, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr "   bajty wypełnienia: %zu\n"
 
-#: src/readelf.c:5980
+#: src/readelf.c:6005
 #, c-format
 msgid "cannot get .debug_ranges content: %s"
 msgstr "nie można uzyskać zawartości .debug_ranges: %s"
 
-#: src/readelf.c:6016 src/readelf.c:9493
+#: src/readelf.c:6041 src/readelf.c:9555
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6018 src/readelf.c:9495
+#: src/readelf.c:6043 src/readelf.c:9557
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6027 src/readelf.c:9521 src/readelf.c:9547
+#: src/readelf.c:6052 src/readelf.c:9583 src/readelf.c:9609
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:6052 src/readelf.c:9631
+#: src/readelf.c:6077 src/readelf.c:9693
 #, fuzzy
 msgid "base address"
 msgstr " ustawienie adresu na %s\n"
 
-#: src/readelf.c:6062 src/readelf.c:9641
+#: src/readelf.c:6087 src/readelf.c:9703
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx]  pusta lista\n"
 
-#: src/readelf.c:6317
+#: src/readelf.c:6342
 msgid "         <INVALID DATA>\n"
 msgstr "         <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:6573
+#: src/readelf.c:6598
 #, c-format
 msgid "cannot get ELF: %s"
 msgstr "nie można uzyskać ELF: %s"
 
-#: src/readelf.c:6591
+#: src/readelf.c:6616
 #, c-format
 msgid ""
 "\n"
@@ -5264,7 +5269,7 @@
 "\n"
 "Sekcja informacji o ramce wywołania [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 
-#: src/readelf.c:6641
+#: src/readelf.c:6666
 #, c-format
 msgid ""
 "\n"
@@ -5273,65 +5278,65 @@
 "\n"
 " [%6tx] Zerowy koniec\n"
 
-#: src/readelf.c:6742 src/readelf.c:6896
+#: src/readelf.c:6767 src/readelf.c:6921
 #, c-format
 msgid "invalid augmentation length"
 msgstr "nieprawidłowa długość powiększenia"
 
-#: src/readelf.c:6757
+#: src/readelf.c:6782
 msgid "FDE address encoding: "
 msgstr "Kodowanie adresu FDE: "
 
-#: src/readelf.c:6763
+#: src/readelf.c:6788
 msgid "LSDA pointer encoding: "
 msgstr "Kodowanie wskaźnika LSDA: "
 
-#: src/readelf.c:6873
+#: src/readelf.c:6898
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (offset: %#<PRIx64>)"
 
-#: src/readelf.c:6880
+#: src/readelf.c:6905
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (kończący offset: %#<PRIx64>)"
 
-#: src/readelf.c:6917
+#: src/readelf.c:6942
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sWskaźnik LSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:7002
+#: src/readelf.c:7027
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "nie można uzyskać kodu atrybutu: %s"
 
-#: src/readelf.c:7012
+#: src/readelf.c:7037
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "nie można uzyskać formy atrybutu: %s"
 
-#: src/readelf.c:7034
+#: src/readelf.c:7059
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "nie można uzyskać wartości atrybutu: %s"
 
-#: src/readelf.c:7364
+#: src/readelf.c:7389
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "nieprawidłowy plik"
 
-#: src/readelf.c:7368
+#: src/readelf.c:7393
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr " ustawienie pliku na %<PRIu64>\n"
 
-#: src/readelf.c:7372
+#: src/readelf.c:7397
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "nie można uzyskać ELF: %s"
 
-#: src/readelf.c:7685
+#: src/readelf.c:7710
 #, c-format
 msgid ""
 "\n"
@@ -5342,12 +5347,12 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:7735
+#: src/readelf.c:7760
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "nie można uzyskać następnego DIE: %s"
 
-#: src/readelf.c:7754
+#: src/readelf.c:7779
 #, fuzzy, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5360,7 +5365,7 @@
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 " Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64>\n"
 
-#: src/readelf.c:7766
+#: src/readelf.c:7791
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5371,38 +5376,38 @@
 " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 
-#: src/readelf.c:7776 src/readelf.c:7939
+#: src/readelf.c:7801 src/readelf.c:7964
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:7803
+#: src/readelf.c:7828
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:7832
+#: src/readelf.c:7857
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "nie można uzyskać offsetu DIE: %s"
 
-#: src/readelf.c:7841
+#: src/readelf.c:7866
 #, fuzzy, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr ""
 "nie można uzyskać znacznika DIE pod offsetem %<PRIu64> w sekcji „%s”: %s"
 
-#: src/readelf.c:7879
+#: src/readelf.c:7904
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "nie można uzyskać następnego DIE: %s\n"
 
-#: src/readelf.c:7887
+#: src/readelf.c:7912
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "nie można uzyskać następnego DIE: %s"
 
-#: src/readelf.c:7931
+#: src/readelf.c:7956
 #, fuzzy, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5413,7 +5418,7 @@
 " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 
-#: src/readelf.c:7983
+#: src/readelf.c:8008
 #, c-format
 msgid ""
 "\n"
@@ -5424,18 +5429,18 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:8315
+#: src/readelf.c:8340
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "nieznany błąd"
 
-#: src/readelf.c:8346
+#: src/readelf.c:8371
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "nie można uzyskać danych sekcji danych wiersza: %s"
 
 #. Print what we got so far.
-#: src/readelf.c:8448
+#: src/readelf.c:8473
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5466,27 +5471,27 @@
 "\n"
 "Instrukcje:\n"
 
-#: src/readelf.c:8470
+#: src/readelf.c:8495
 #, fuzzy, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "nie można uzyskać wersji symbolu: %s"
 
-#: src/readelf.c:8478
+#: src/readelf.c:8503
 #, fuzzy, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "nieobsługiwany rozmiar adresu"
 
-#: src/readelf.c:8486
+#: src/readelf.c:8511
 #, fuzzy, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "nie można uzyskać sekcji: %s"
 
-#: src/readelf.c:8496
+#: src/readelf.c:8521
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "nieprawidłowe dane pod offsetem %tu w sekcji [%zu] „%s”"
 
-#: src/readelf.c:8511
+#: src/readelf.c:8536
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
@@ -5494,7 +5499,7 @@
 msgstr[1] "  [%*<PRIuFAST8>]  %hhu parametry\n"
 msgstr[2] "  [%*<PRIuFAST8>]  %hhu parametrów\n"
 
-#: src/readelf.c:8522
+#: src/readelf.c:8547
 msgid ""
 "\n"
 "Directory table:"
@@ -5502,12 +5507,12 @@
 "\n"
 "Tabela katalogu:"
 
-#: src/readelf.c:8528 src/readelf.c:8605
+#: src/readelf.c:8553 src/readelf.c:8630
 #, fuzzy, c-format
 msgid "      ["
 msgstr "    PC: "
 
-#: src/readelf.c:8599
+#: src/readelf.c:8624
 #, fuzzy
 msgid ""
 "\n"
@@ -5516,7 +5521,7 @@
 "\n"
 " Tabela strony wywołania:"
 
-#: src/readelf.c:8660
+#: src/readelf.c:8685
 #, fuzzy
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
@@ -5524,7 +5529,7 @@
 "Tabela nazw plików:\n"
 " Wpis Kat    Czas      Rozmiar   Nazwa"
 
-#: src/readelf.c:8699
+#: src/readelf.c:8724
 #, fuzzy
 msgid ""
 "\n"
@@ -5533,7 +5538,7 @@
 "\n"
 "Instrukcje numerów wierszy:"
 
-#: src/readelf.c:8703
+#: src/readelf.c:8728
 msgid ""
 "\n"
 "Line number statements:"
@@ -5541,119 +5546,119 @@
 "\n"
 "Instrukcje numerów wierszy:"
 
-#: src/readelf.c:8726
+#: src/readelf.c:8751
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero"
 
-#: src/readelf.c:8760
+#: src/readelf.c:8785
 #, fuzzy, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " instrukcja specjalna %u: adres+%u = %s, wiersz%+d = %zu\n"
 
-#: src/readelf.c:8764
+#: src/readelf.c:8789
 #, fuzzy, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ""
 " instrukcja specjalna %u: adres+%u = %s, op_index = %u, wiersz%+d = %zu\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:8792
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:8785
+#: src/readelf.c:8810
 #, c-format
 msgid " extended opcode %u: "
 msgstr " instrukcja rozszerzona %u: "
 
-#: src/readelf.c:8790
+#: src/readelf.c:8815
 msgid " end of sequence"
 msgstr " koniec sekwencji"
 
-#: src/readelf.c:8808
+#: src/readelf.c:8833
 #, fuzzy, c-format
 msgid " set address to "
 msgstr " ustawienie adresu na %s\n"
 
-#: src/readelf.c:8836
+#: src/readelf.c:8861
 #, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 " definicja nowego pliku: dir=%u, mtime=%<PRIu64>, długość=%<PRIu64>, nazwa="
 "%s\n"
 
-#: src/readelf.c:8850
+#: src/readelf.c:8875
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " ustawienie dyskryminatora na %u\n"
 
 #. Unknown, ignore it.
-#: src/readelf.c:8855
+#: src/readelf.c:8880
 msgid " unknown opcode"
 msgstr " nieznana instrukcja"
 
 #. Takes no argument.
-#: src/readelf.c:8867
+#: src/readelf.c:8892
 msgid " copy"
 msgstr " kopiowanie"
 
-#: src/readelf.c:8878
+#: src/readelf.c:8903
 #, fuzzy, c-format
 msgid " advance address by %u to "
 msgstr " zwiększenie adresu o %u do %s\n"
 
-#: src/readelf.c:8882 src/readelf.c:8943
+#: src/readelf.c:8907 src/readelf.c:8968
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:8894
+#: src/readelf.c:8919
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " zwiększenie wiersza o stałą %d do %<PRId64>\n"
 
-#: src/readelf.c:8904
+#: src/readelf.c:8929
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " ustawienie pliku na %<PRIu64>\n"
 
-#: src/readelf.c:8915
+#: src/readelf.c:8940
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " ustawienie kolumny na %<PRIu64>\n"
 
-#: src/readelf.c:8922
+#: src/readelf.c:8947
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " ustawienie „%s” na %<PRIuFAST8>\n"
 
 #. Takes no argument.
-#: src/readelf.c:8928
+#: src/readelf.c:8953
 msgid " set basic block flag"
 msgstr " ustawienie podstawowej flagi bloku"
 
-#: src/readelf.c:8939
+#: src/readelf.c:8964
 #, fuzzy, c-format
 msgid " advance address by constant %u to "
 msgstr " zwiększenie adresu o stałą %u do %s\n"
 
-#: src/readelf.c:8959
+#: src/readelf.c:8984
 #, fuzzy, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr " zwiększenie adresu o stałą wartość %u do %s\n"
 
 #. Takes no argument.
-#: src/readelf.c:8969
+#: src/readelf.c:8994
 msgid " set prologue end flag"
 msgstr " ustawienie flagi końca prologu"
 
 #. Takes no argument.
-#: src/readelf.c:8974
+#: src/readelf.c:8999
 msgid " set epilogue begin flag"
 msgstr " ustawienie flagi początku epilogu"
 
-#: src/readelf.c:8984
+#: src/readelf.c:9009
 #, c-format
 msgid " set isa to %u\n"
 msgstr " ustawienie isa na %u\n"
@@ -5661,7 +5666,7 @@
 #. This is a new opcode the generator but not we know about.
 #. Read the parameters associated with it but then discard
 #. everything.  Read all the parameters for this opcode.
-#: src/readelf.c:8993
+#: src/readelf.c:9018
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5669,96 +5674,101 @@
 msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:"
 msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:"
 
-#: src/readelf.c:9033
+#: src/readelf.c:9058
 #, fuzzy, c-format
 msgid "cannot get .debug_loclists content: %s"
 msgstr "nie można uzyskać zawartości .debug_log: %s"
 
-#: src/readelf.c:9202
+#: src/readelf.c:9224
+#, fuzzy, c-format
+msgid "    <INVALID DATA>\n"
+msgstr "   <NIEPRAWIDŁOWE DANE>\n"
+
+#: src/readelf.c:9264
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "nieprawidłowe dane"
 
-#: src/readelf.c:9455
+#: src/readelf.c:9517
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "nie można uzyskać zawartości .debug_log: %s"
 
-#: src/readelf.c:9668 src/readelf.c:10712
+#: src/readelf.c:9730 src/readelf.c:10774
 msgid "   <INVALID DATA>\n"
 msgstr "   <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:9723 src/readelf.c:9886
+#: src/readelf.c:9785 src/readelf.c:9948
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "nie można uzyskać danych sekcji informacji o makrach: %s"
 
-#: src/readelf.c:9803
+#: src/readelf.c:9865
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** niezakończony ciąg na końcu sekcji"
 
-#: src/readelf.c:9826
+#: src/readelf.c:9888
 #, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr "%*s*** brak parametru DW_MACINFO_start_file na końcu sekcji"
 
-#: src/readelf.c:9927
+#: src/readelf.c:9989
 #, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr " Offset:             0x%<PRIx64>\n"
 
-#: src/readelf.c:9939
+#: src/readelf.c:10001
 #, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr " Wersja:             %<PRIu16>\n"
 
-#: src/readelf.c:9945 src/readelf.c:10832
+#: src/readelf.c:10007 src/readelf.c:10894
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr "  nieznana wersja, nie można przetworzyć sekcji\n"
 
-#: src/readelf.c:9952
+#: src/readelf.c:10014
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr " Flaga:              0x%<PRIx8>\n"
 
-#: src/readelf.c:9981
+#: src/readelf.c:10043
 #, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " Długość offsetu:    %<PRIu8>\n"
 
-#: src/readelf.c:9989
+#: src/readelf.c:10051
 #, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " Offset .debug_line: 0x%<PRIx64>\n"
 
-#: src/readelf.c:10014
+#: src/readelf.c:10076
 #, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr "  tabela instrukcji rozszerzenia, %<PRIu8> elementów:\n"
 
-#: src/readelf.c:10021
+#: src/readelf.c:10083
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr "    [%<PRIx8>]"
 
-#: src/readelf.c:10033
+#: src/readelf.c:10095
 #, c-format
 msgid " %<PRIu8> arguments:"
 msgstr " Parametry %<PRIu8>:"
 
-#: src/readelf.c:10048
+#: src/readelf.c:10110
 #, c-format
 msgid " no arguments."
 msgstr " brak parametrów."
 
-#: src/readelf.c:10249
+#: src/readelf.c:10311
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr " [%5d] offset DIE: %6<PRId64>, offset CU DIE: %6<PRId64>, nazwa: %s\n"
 
-#: src/readelf.c:10293
+#: src/readelf.c:10355
 #, c-format
 msgid ""
 "\n"
@@ -5769,41 +5779,41 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 " %*s  Ciąg\n"
 
-#: src/readelf.c:10308
+#: src/readelf.c:10370
 #, fuzzy, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** błąd podczas odczytywania ciągów: %s\n"
 
-#: src/readelf.c:10337
+#: src/readelf.c:10399
 #, fuzzy, c-format
 msgid "cannot get .debug_str_offsets section data: %s"
 msgstr "nie można uzyskać danych sekcji: %s"
 
-#: src/readelf.c:10436
+#: src/readelf.c:10498
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr ""
 "\n"
 " Długość:        %6<PRIu64>\n"
 
-#: src/readelf.c:10438
+#: src/readelf.c:10500
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " Długość offsetu:    %<PRIu8>\n"
 
-#: src/readelf.c:10452
+#: src/readelf.c:10514
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
 
-#: src/readelf.c:10461
+#: src/readelf.c:10523
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr ""
 "\n"
 " Długość:        %6<PRIu64>\n"
 
-#: src/readelf.c:10515
+#: src/readelf.c:10577
 #, c-format
 msgid ""
 "\n"
@@ -5812,7 +5822,7 @@
 "\n"
 "Sekcja tabeli wyszukiwania ramki wywołania [%2zu] „.eh_frame_hdr”:\n"
 
-#: src/readelf.c:10617
+#: src/readelf.c:10679
 #, c-format
 msgid ""
 "\n"
@@ -5821,22 +5831,22 @@
 "\n"
 "Sekcja tabeli obsługiwania wyjątków [%2zu] „.gcc_except_table”:\n"
 
-#: src/readelf.c:10640
+#: src/readelf.c:10702
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " Kodowanie LPStart:    %#x "
 
-#: src/readelf.c:10652
+#: src/readelf.c:10714
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " Kodowanie TType:      %#x "
 
-#: src/readelf.c:10667
+#: src/readelf.c:10729
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Kodowanie strony wywołania:  %#x "
 
-#: src/readelf.c:10680
+#: src/readelf.c:10742
 msgid ""
 "\n"
 " Call site table:"
@@ -5844,7 +5854,7 @@
 "\n"
 " Tabela strony wywołania:"
 
-#: src/readelf.c:10694
+#: src/readelf.c:10756
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5857,12 +5867,12 @@
 "        Lądowisko:                 %#<PRIx64>\n"
 "        Działanie:                 %u\n"
 
-#: src/readelf.c:10767
+#: src/readelf.c:10829
 #, c-format
 msgid "invalid TType encoding"
 msgstr "nieprawidłowe kodowanie TType"
 
-#: src/readelf.c:10794
+#: src/readelf.c:10856
 #, c-format
 msgid ""
 "\n"
@@ -5871,37 +5881,37 @@
 "\n"
 "Sekcja GDB [%2zu] „%s” pod offsetem %#<PRIx64> zawiera %<PRId64> bajtów:\n"
 
-#: src/readelf.c:10823
+#: src/readelf.c:10885
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr " Wersja:         %<PRId32>\n"
 
-#: src/readelf.c:10841
+#: src/readelf.c:10903
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " offset CU:       %#<PRIx32>\n"
 
-#: src/readelf.c:10848
+#: src/readelf.c:10910
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " offset TU:       %#<PRIx32>\n"
 
-#: src/readelf.c:10855
+#: src/readelf.c:10917
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " offset adresu:  %#<PRIx32>\n"
 
-#: src/readelf.c:10862
+#: src/readelf.c:10924
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " offset symbolu:   %#<PRIx32>\n"
 
-#: src/readelf.c:10869
+#: src/readelf.c:10931
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " offset stałej: %#<PRIx32>\n"
 
-#: src/readelf.c:10883
+#: src/readelf.c:10945
 #, c-format
 msgid ""
 "\n"
@@ -5910,7 +5920,7 @@
 "\n"
 " Lista CU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:10908
+#: src/readelf.c:10970
 #, c-format
 msgid ""
 "\n"
@@ -5919,7 +5929,7 @@
 "\n"
 " Lista TU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:10937
+#: src/readelf.c:10999
 #, c-format
 msgid ""
 "\n"
@@ -5928,7 +5938,7 @@
 "\n"
 " Lista adresów pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:10969
+#: src/readelf.c:11031
 #, c-format
 msgid ""
 "\n"
@@ -5937,18 +5947,18 @@
 "\n"
 " Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n"
 
-#: src/readelf.c:11107
+#: src/readelf.c:11169
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
 
-#: src/readelf.c:11475 src/readelf.c:12097 src/readelf.c:12208
-#: src/readelf.c:12266
+#: src/readelf.c:11537 src/readelf.c:12159 src/readelf.c:12270
+#: src/readelf.c:12328
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "nie można konwertować danych notatki core: %s"
 
-#: src/readelf.c:11838
+#: src/readelf.c:11900
 #, c-format
 msgid ""
 "\n"
@@ -5957,21 +5967,21 @@
 "\n"
 "%*s… <powtarza się jeszcze %u razy>…"
 
-#: src/readelf.c:12345
+#: src/readelf.c:12407
 msgid "  Owner          Data size  Type\n"
 msgstr "  Właściciel     Rozmiar danych  Typ\n"
 
-#: src/readelf.c:12374
+#: src/readelf.c:12436
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12426
+#: src/readelf.c:12488
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "nie można uzyskać zawartości sekcji notatki: %s"
 
-#: src/readelf.c:12460
+#: src/readelf.c:12522
 #, c-format
 msgid ""
 "\n"
@@ -5981,7 +5991,7 @@
 "Segment notatki [%2zu] „%s” o długości %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12483
+#: src/readelf.c:12545
 #, c-format
 msgid ""
 "\n"
@@ -5990,7 +6000,7 @@
 "\n"
 "Segment notatki o długości %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12530
+#: src/readelf.c:12592
 #, c-format
 msgid ""
 "\n"
@@ -5999,12 +6009,12 @@
 "\n"
 "Sekcja [%zu] „%s” nie ma danych do zrzucenia.\n"
 
-#: src/readelf.c:12557 src/readelf.c:12608
+#: src/readelf.c:12619 src/readelf.c:12670
 #, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "nie można uzyskać danych dla sekcji [%zu] „%s”: %s"
 
-#: src/readelf.c:12562
+#: src/readelf.c:12624
 #, c-format
 msgid ""
 "\n"
@@ -6014,7 +6024,7 @@
 "Segment zrzutu szesnastkowego [%zu] „%s”, %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12567
+#: src/readelf.c:12629
 #, c-format
 msgid ""
 "\n"
@@ -6025,7 +6035,7 @@
 "Zrzut szesnastkowy sekcji [%zu] „%s”, %<PRIu64> bajtów (%zd "
 "nieskompresowanych) pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12581
+#: src/readelf.c:12643
 #, c-format
 msgid ""
 "\n"
@@ -6034,7 +6044,7 @@
 "\n"
 "Sekcja [%zu] „%s” nie ma ciągów do zrzucenia.\n"
 
-#: src/readelf.c:12613
+#: src/readelf.c:12675
 #, c-format
 msgid ""
 "\n"
@@ -6043,7 +6053,7 @@
 "\n"
 "Sekcja ciągów [%zu] „%s” zawiera %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12618
+#: src/readelf.c:12680
 #, c-format
 msgid ""
 "\n"
@@ -6054,7 +6064,7 @@
 "Sekcja ciągów [%zu] „%s” zawiera %<PRIu64> bajtów (%zd nieskompresowanych) "
 "pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12667
+#: src/readelf.c:12729
 #, c-format
 msgid ""
 "\n"
@@ -6063,7 +6073,7 @@
 "\n"
 "sekcja [%lu] nie istnieje"
 
-#: src/readelf.c:12697
+#: src/readelf.c:12759
 #, c-format
 msgid ""
 "\n"
@@ -6072,12 +6082,12 @@
 "\n"
 "sekcja „%s” nie istnieje"
 
-#: src/readelf.c:12754
+#: src/readelf.c:12816
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "nie można uzyskać indeksu symboli archiwum „%s”: %s"
 
-#: src/readelf.c:12757
+#: src/readelf.c:12819
 #, c-format
 msgid ""
 "\n"
@@ -6086,7 +6096,7 @@
 "\n"
 "Archiwum „%s” nie ma indeksu symboli\n"
 
-#: src/readelf.c:12761
+#: src/readelf.c:12823
 #, c-format
 msgid ""
 "\n"
@@ -6095,12 +6105,12 @@
 "\n"
 "Indeks archiwum „%s” ma %zu wpisów:\n"
 
-#: src/readelf.c:12779
+#: src/readelf.c:12841
 #, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "nie można wydobyć elementów pod offsetem %zu w „%s”: %s"
 
-#: src/readelf.c:12784
+#: src/readelf.c:12846
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Element archiwum „%s” zawiera:\n"
@@ -6715,7 +6725,7 @@
 msgid "cannot get shdrstrndx:%s"
 msgstr "nie można uzyskać sekcji: %s"
 
-#: src/unstrip.c:248 src/unstrip.c:2083
+#: src/unstrip.c:248 src/unstrip.c:2089
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "nie można uzyskać nagłówka ELF: %s"
@@ -6735,12 +6745,12 @@
 msgid "cannot copy ELF header: %s"
 msgstr "nie można skopiować nagłówka ELF: %s"
 
-#: src/unstrip.c:269 src/unstrip.c:2101 src/unstrip.c:2144
+#: src/unstrip.c:269 src/unstrip.c:2107 src/unstrip.c:2150
 #, c-format
 msgid "cannot get number of program headers: %s"
 msgstr "nie można uzyskać liczby nagłówków programu: %s"
 
-#: src/unstrip.c:274 src/unstrip.c:2105
+#: src/unstrip.c:274 src/unstrip.c:2111
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "nie można utworzyć nagłówków programu: %s"
@@ -6755,198 +6765,198 @@
 msgid "cannot copy section header: %s"
 msgstr "nie można skopiować nagłówka sekcji: %s"
 
-#: src/unstrip.c:293 src/unstrip.c:1705
+#: src/unstrip.c:293 src/unstrip.c:1711
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "nie można uzyskać danych sekcji: %s"
 
-#: src/unstrip.c:295 src/unstrip.c:1707
+#: src/unstrip.c:295 src/unstrip.c:1713
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "nie można skopiować danych sekcji: %s"
 
-#: src/unstrip.c:319
+#: src/unstrip.c:323
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "nie można utworzyć katalogu „%s”"
 
-#: src/unstrip.c:391 src/unstrip.c:653 src/unstrip.c:687 src/unstrip.c:855
-#: src/unstrip.c:1747
+#: src/unstrip.c:397 src/unstrip.c:659 src/unstrip.c:693 src/unstrip.c:861
+#: src/unstrip.c:1753
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "nie można uzyskać wpisu tabeli symboli: %s"
 
-#: src/unstrip.c:407 src/unstrip.c:656 src/unstrip.c:677 src/unstrip.c:690
-#: src/unstrip.c:1768 src/unstrip.c:1963 src/unstrip.c:1987
+#: src/unstrip.c:413 src/unstrip.c:662 src/unstrip.c:683 src/unstrip.c:696
+#: src/unstrip.c:1774 src/unstrip.c:1969 src/unstrip.c:1993
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "nie można zaktualizować tabeli symboli: %s"
 
-#: src/unstrip.c:417
+#: src/unstrip.c:423
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "nie można zaktualizować nagłówka sekcji: %s"
 
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:469 src/unstrip.c:483
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "nie można zaktualizować relokacji: %s"
 
-#: src/unstrip.c:576
+#: src/unstrip.c:582
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "nie można uzyskać wersji symbolu: %s"
 
-#: src/unstrip.c:589
+#: src/unstrip.c:595
 #, c-format
 msgid "unexpected section type in [%zu] with sh_link to symtab"
 msgstr "nieoczekiwany typ sekcji w [%zu] z sh_link do tabeli symboli"
 
-#: src/unstrip.c:844
+#: src/unstrip.c:850
 #, fuzzy, c-format
 msgid "cannot get symbol section data: %s"
 msgstr "nie można uzyskać danych sekcji: %s"
 
-#: src/unstrip.c:846
+#: src/unstrip.c:852
 #, fuzzy, c-format
 msgid "cannot get string section data: %s"
 msgstr "nie można uzyskać danych sekcji: %s"
 
-#: src/unstrip.c:863
+#: src/unstrip.c:869
 #, c-format
 msgid "invalid string offset in symbol [%zu]"
 msgstr "nieprawidłowy offset ciągu w symbolu [%zu]"
 
-#: src/unstrip.c:1021 src/unstrip.c:1425
+#: src/unstrip.c:1027 src/unstrip.c:1431
 #, c-format
 msgid "cannot read section [%zu] name: %s"
 msgstr "nie można odczytać nazwy sekcji [%zu]: %s"
 
-#: src/unstrip.c:1036
+#: src/unstrip.c:1042
 #, fuzzy, c-format
 msgid "bad sh_link for group section: %s"
 msgstr "nieprawidłowa wartość sh_link w sekcji %zu"
 
-#: src/unstrip.c:1042
+#: src/unstrip.c:1048
 #, fuzzy, c-format
 msgid "couldn't get shdr for group section: %s"
 msgstr "nie można uzyskać danych dla sekcji %d: %s"
 
-#: src/unstrip.c:1047
+#: src/unstrip.c:1053
 #, fuzzy, c-format
 msgid "bad data for group symbol section: %s"
 msgstr "nie można uzyskać danych dla sekcji symboli\n"
 
-#: src/unstrip.c:1053
+#: src/unstrip.c:1059
 #, fuzzy, c-format
 msgid "couldn't get symbol for group section: %s"
 msgstr "nie można uzyskać wersji symbolu: %s"
 
-#: src/unstrip.c:1058
+#: src/unstrip.c:1064
 #, fuzzy, c-format
 msgid "bad symbol name for group section: %s"
 msgstr "błędny nagłówek kompresji dla sekcji %zd: %s"
 
-#: src/unstrip.c:1100 src/unstrip.c:1119 src/unstrip.c:1157
+#: src/unstrip.c:1106 src/unstrip.c:1125 src/unstrip.c:1163
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "nie można odczytać sekcji „.gnu.prelink_undo”: %s"
 
-#: src/unstrip.c:1137
+#: src/unstrip.c:1143
 #, c-format
 msgid "overflow with shnum = %zu in '%s' section"
 msgstr "przepełnienie z shnum = %zu w sekcji „%s”"
 
-#: src/unstrip.c:1148
+#: src/unstrip.c:1154
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "nieprawidłowa zawartość w sekcji „%s”"
 
-#: src/unstrip.c:1204 src/unstrip.c:1551
+#: src/unstrip.c:1210 src/unstrip.c:1557
 #, c-format
 msgid "cannot find matching section for [%zu] '%s'"
 msgstr "nie można odnaleźć pasującej sekcji dla [%zu] „%s”"
 
-#: src/unstrip.c:1329 src/unstrip.c:1345 src/unstrip.c:1631 src/unstrip.c:1922
+#: src/unstrip.c:1335 src/unstrip.c:1351 src/unstrip.c:1637 src/unstrip.c:1928
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr "nie można nazwy sekcji do tabeli ciągów: %s"
 
-#: src/unstrip.c:1354
+#: src/unstrip.c:1360
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr "nie można zaktualizować danych tabeli ciągów nagłówków sekcji: %s"
 
-#: src/unstrip.c:1383 src/unstrip.c:1387
+#: src/unstrip.c:1389 src/unstrip.c:1393
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr "nie można uzyskać indeksu sekcji tabeli ciągów nagłówków sekcji: %s"
 
-#: src/unstrip.c:1391 src/unstrip.c:1395 src/unstrip.c:1646
+#: src/unstrip.c:1397 src/unstrip.c:1401 src/unstrip.c:1652
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "nie można uzyskać licznika sekcji: %s"
 
-#: src/unstrip.c:1398
+#: src/unstrip.c:1404
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 "więcej sekcji w okrojonym pliku niż w pliku debugowania — odwrócono "
 "parametry?"
 
-#: src/unstrip.c:1402
+#: src/unstrip.c:1408
 #, c-format
 msgid "no sections in stripped file"
 msgstr ""
 
-#: src/unstrip.c:1473 src/unstrip.c:1566
+#: src/unstrip.c:1479 src/unstrip.c:1572
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr "nie można odczytać tabeli ciągów nagłówków sekcji: %s"
 
-#: src/unstrip.c:1625
+#: src/unstrip.c:1631
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "nie można dodać nowej sekcji: %s"
 
-#: src/unstrip.c:1755
+#: src/unstrip.c:1761
 #, c-format
 msgid "symbol [%zu] has invalid section index"
 msgstr "symbol [%zu] ma nieprawidłowy indeks sekcji"
 
-#: src/unstrip.c:1787
+#: src/unstrip.c:1793
 #, fuzzy, c-format
 msgid "group has invalid section index [%zd]"
 msgstr "symbol [%zu] ma nieprawidłowy indeks sekcji"
 
-#: src/unstrip.c:2062
+#: src/unstrip.c:2068
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "nie można odczytać danych sekcji: %s"
 
-#: src/unstrip.c:2091
+#: src/unstrip.c:2097
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "nie można zaktualizować nagłówka ELF: %s"
 
-#: src/unstrip.c:2115
+#: src/unstrip.c:2121
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "nie można zaktualizować nagłówka programu: %s"
 
-#: src/unstrip.c:2120 src/unstrip.c:2202
+#: src/unstrip.c:2126 src/unstrip.c:2208
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "nie można zapisać pliku wyjściowego: %s"
 
-#: src/unstrip.c:2171
+#: src/unstrip.c:2177
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 "Dane DWARF nie zostały dostosowane do przesunięcia wczesnego konsolidowania; "
 "proszę rozważyć polecenie prelink -u"
 
-#: src/unstrip.c:2174
+#: src/unstrip.c:2180
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -6954,77 +6964,77 @@
 "Dane DWARF w „%s” nie zostały dostosowane do przesunięcia wczesnego "
 "konsolidowania; proszę rozważyć polecenie prelink -u"
 
-#: src/unstrip.c:2193 src/unstrip.c:2244 src/unstrip.c:2256 src/unstrip.c:2342
+#: src/unstrip.c:2199 src/unstrip.c:2250 src/unstrip.c:2262 src/unstrip.c:2348
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "nie można utworzyć deskryptora ELF: %s"
 
-#: src/unstrip.c:2235
+#: src/unstrip.c:2241
 msgid "WARNING: "
 msgstr "OSTRZEŻENIE: "
 
-#: src/unstrip.c:2237
+#: src/unstrip.c:2243
 msgid ", use --force"
 msgstr ", należy użyć opcji --force"
 
-#: src/unstrip.c:2260
+#: src/unstrip.c:2266
 msgid "ELF header identification (e_ident) different"
 msgstr "Różna identyfikacja nagłówka ELF (e_ident)"
 
-#: src/unstrip.c:2263
+#: src/unstrip.c:2269
 msgid "ELF header type (e_type) different"
 msgstr "Różne typy nagłówka ELF (e_type)"
 
-#: src/unstrip.c:2266
+#: src/unstrip.c:2272
 msgid "ELF header machine type (e_machine) different"
 msgstr "Różne typy maszyny nagłówka ELF (e_machine)"
 
-#: src/unstrip.c:2269
+#: src/unstrip.c:2275
 msgid "stripped program header (e_phnum) smaller than unstripped"
 msgstr "okrojony nagłówek programu (e_phnum) jest mniejszy niż nieokrojony"
 
-#: src/unstrip.c:2299
+#: src/unstrip.c:2305
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr "nie można odnaleźć okrojonego pliku dla modułu „%s”: %s"
 
-#: src/unstrip.c:2303
+#: src/unstrip.c:2309
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr "nie można otworzyć okrojonego pliku „%s” dla modułu „%s”: %s"
 
-#: src/unstrip.c:2318
+#: src/unstrip.c:2324
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr "nie można odnaleźć pliku debugowania dla modułu „%s”: %s"
 
-#: src/unstrip.c:2322
+#: src/unstrip.c:2328
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr "nie można otworzyć pliku debugowania „%s” dla modułu „%s”: %s"
 
-#: src/unstrip.c:2335
+#: src/unstrip.c:2341
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "moduł „%s” pliku „%s” nie został okrojony"
 
-#: src/unstrip.c:2366
+#: src/unstrip.c:2372
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr ""
 "nie można utworzyć pamięci podręcznej adresów sekcji dla modułu „%s”: %s"
 
-#: src/unstrip.c:2498
+#: src/unstrip.c:2504
 #, c-format
 msgid "no matching modules found"
 msgstr "nie odnaleziono pasujących modułów"
 
-#: src/unstrip.c:2507
+#: src/unstrip.c:2513
 #, c-format
 msgid "matched more than one module"
 msgstr "pasuje więcej niż jeden moduł"
 
-#: src/unstrip.c:2551
+#: src/unstrip.c:2557
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -7032,7 +7042,7 @@
 "OKROJONY-PLIK PLIK-DEBUGOWANIA\n"
 "[MODUŁ…]"
 
-#: src/unstrip.c:2552
+#: src/unstrip.c:2558
 #, fuzzy
 msgid ""
 "Combine stripped files with separate symbols and debug information.\n"
diff --git a/po/uk.po b/po/uk.po
index ce3f60f..1f183a0 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-09-08 12:51+0200\n"
+"POT-Creation-Date: 2020-10-31 17:37+0100\n"
 "PO-Revision-Date: 2020-03-28 14:59+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
@@ -59,7 +59,7 @@
 "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11424 src/unstrip.c:2395 src/unstrip.c:2600
+#: src/readelf.c:11486 src/unstrip.c:316 src/unstrip.c:2401 src/unstrip.c:2606
 #, c-format
 msgid "memory exhausted"
 msgstr "пам’ять вичерпано"
@@ -219,7 +219,7 @@
 msgid "invalid directory index"
 msgstr "некоректний покажчик каталогу"
 
-#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:75
+#: libdw/dwarf_error.c:87 libdwfl/libdwflP.h:76
 msgid "address out of range"
 msgstr "некоректна адреса"
 
@@ -247,7 +247,7 @@
 msgid "invalid address range index"
 msgstr "некоректний індекс діапазону адрес"
 
-#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:76
+#: libdw/dwarf_error.c:94 libdwfl/libdwflP.h:77
 msgid "no matching address range"
 msgstr "не виявлено відповідного діапазону адрес"
 
@@ -291,7 +291,7 @@
 msgid ".debug_addr section missing"
 msgstr "пропущено розділ .debug_addr"
 
-#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2541
+#: libdwfl/argp-std.c:50 src/stack.c:643 src/unstrip.c:2547
 msgid "Input selection options:"
 msgstr "Вибір параметрів виведення даних:"
 
@@ -387,126 +387,131 @@
 msgstr "Помилка під час спроби видобування з LZMA"
 
 #: libdwfl/libdwflP.h:64
+#, fuzzy
+msgid "zstd decompression failed"
+msgstr "Помилка під час спроби видобування з gzip"
+
+#: libdwfl/libdwflP.h:65
 msgid "no support library found for machine"
 msgstr "у системі не виявлено бібліотеки підтримки"
 
-#: libdwfl/libdwflP.h:65
+#: libdwfl/libdwflP.h:66
 msgid "Callbacks missing for ET_REL file"
 msgstr "Немає зворотних викликів для файла ET_REL"
 
-#: libdwfl/libdwflP.h:66
+#: libdwfl/libdwflP.h:67
 msgid "Unsupported relocation type"
 msgstr "Непідтримуваний тип пересування"
 
-#: libdwfl/libdwflP.h:67
+#: libdwfl/libdwflP.h:68
 msgid "r_offset is bogus"
 msgstr "r_offset є фіктивним"
 
-#: libdwfl/libdwflP.h:68 libelf/elf_error.c:115 libelf/elf_error.c:175
+#: libdwfl/libdwflP.h:69 libelf/elf_error.c:115 libelf/elf_error.c:175
 msgid "offset out of range"
 msgstr "перевищення можливого зміщення"
 
-#: libdwfl/libdwflP.h:69
+#: libdwfl/libdwflP.h:70
 msgid "relocation refers to undefined symbol"
 msgstr "пересування посилається на невизначений символ."
 
-#: libdwfl/libdwflP.h:70
+#: libdwfl/libdwflP.h:71
 msgid "Callback returned failure"
 msgstr "Зворотним викликом повернуто помилку"
 
-#: libdwfl/libdwflP.h:71
+#: libdwfl/libdwflP.h:72
 msgid "No DWARF information found"
 msgstr "Не виявлено відомостей DWARF"
 
-#: libdwfl/libdwflP.h:72
+#: libdwfl/libdwflP.h:73
 msgid "No symbol table found"
 msgstr "Не виявлено таблиці символів"
 
-#: libdwfl/libdwflP.h:73
+#: libdwfl/libdwflP.h:74
 msgid "No ELF program headers"
 msgstr "Немає заголовків програми ELF"
 
-#: libdwfl/libdwflP.h:74
+#: libdwfl/libdwflP.h:75
 msgid "address range overlaps an existing module"
 msgstr "діапазон адрес перекриває існуючий модуль"
 
-#: libdwfl/libdwflP.h:77
+#: libdwfl/libdwflP.h:78
 msgid "image truncated"
 msgstr "образ обрізано"
 
-#: libdwfl/libdwflP.h:78
+#: libdwfl/libdwflP.h:79
 msgid "ELF file opened"
 msgstr "Відкритий файл ELF"
 
-#: libdwfl/libdwflP.h:79
+#: libdwfl/libdwflP.h:80
 msgid "not a valid ELF file"
 msgstr "не є коректним файлом ELF"
 
-#: libdwfl/libdwflP.h:80
+#: libdwfl/libdwflP.h:81
 msgid "cannot handle DWARF type description"
 msgstr "не вдалося обробити опис типу DWARF"
 
-#: libdwfl/libdwflP.h:81
+#: libdwfl/libdwflP.h:82
 msgid "ELF file does not match build ID"
 msgstr "Файл ELF не відповідає ідентифікатору збирання"
 
-#: libdwfl/libdwflP.h:82
+#: libdwfl/libdwflP.h:83
 msgid "corrupt .gnu.prelink_undo section data"
 msgstr "дані розділу «.gnu.prelink_undo» пошкоджено"
 
-#: libdwfl/libdwflP.h:83
+#: libdwfl/libdwflP.h:84
 msgid "Internal error due to ebl"
 msgstr "Внутрішня помилка через ebl"
 
-#: libdwfl/libdwflP.h:84
+#: libdwfl/libdwflP.h:85
 msgid "Missing data in core file"
 msgstr "У файлі ядра не вистачає даних"
 
-#: libdwfl/libdwflP.h:85
+#: libdwfl/libdwflP.h:86
 msgid "Invalid register"
 msgstr "Некоректний регістр"
 
-#: libdwfl/libdwflP.h:86
+#: libdwfl/libdwflP.h:87
 msgid "Error reading process memory"
 msgstr "Помилка під час спроби читання пам’яті процесу"
 
-#: libdwfl/libdwflP.h:87
+#: libdwfl/libdwflP.h:88
 msgid "Couldn't find architecture of any ELF"
 msgstr "Не вдалося знайти хоч якусь архітектуру ELF"
 
-#: libdwfl/libdwflP.h:88
+#: libdwfl/libdwflP.h:89
 msgid "Error parsing /proc filesystem"
 msgstr "Помилка під час спроби обробки файлової системи /proc"
 
-#: libdwfl/libdwflP.h:89
+#: libdwfl/libdwflP.h:90
 msgid "Invalid DWARF"
 msgstr "Некоректний запис DWARF"
 
-#: libdwfl/libdwflP.h:90
+#: libdwfl/libdwflP.h:91
 msgid "Unsupported DWARF"
 msgstr "Непідтримуваний запис DWARF"
 
-#: libdwfl/libdwflP.h:91
+#: libdwfl/libdwflP.h:92
 msgid "Unable to find more threads"
 msgstr "Не вдалося знайти додаткові потоки"
 
-#: libdwfl/libdwflP.h:92
+#: libdwfl/libdwflP.h:93
 msgid "Dwfl already has attached state"
 msgstr "Dwfl уже перебуває у стані долучення до процесу"
 
-#: libdwfl/libdwflP.h:93
+#: libdwfl/libdwflP.h:94
 msgid "Dwfl has no attached state"
 msgstr "Dwfl не перебуває у стані долучення до процесу"
 
-#: libdwfl/libdwflP.h:94
+#: libdwfl/libdwflP.h:95
 msgid "Unwinding not supported for this architecture"
 msgstr "Для цієї архітектури розгортання не передбачено"
 
-#: libdwfl/libdwflP.h:95
+#: libdwfl/libdwflP.h:96
 msgid "Invalid argument"
 msgstr "Некоректний аргумент"
 
-#: libdwfl/libdwflP.h:96
+#: libdwfl/libdwflP.h:97
 msgid "Not an ET_CORE ELF file"
 msgstr "Не є файлом ET_CORE ELF"
 
@@ -611,7 +616,7 @@
 msgid "invalid size of destination operand"
 msgstr "некоректна розмірність вихідного параметра"
 
-#: libelf/elf_error.c:87 src/readelf.c:6172
+#: libelf/elf_error.c:87 src/readelf.c:6197
 #, c-format
 msgid "invalid encoding"
 msgstr "некоректне кодування"
@@ -696,8 +701,8 @@
 msgid "invalid section header"
 msgstr "некоректний заголовок розділу"
 
-#: libelf/elf_error.c:191 src/readelf.c:9935 src/readelf.c:10535
-#: src/readelf.c:10636 src/readelf.c:10818
+#: libelf/elf_error.c:191 src/readelf.c:9997 src/readelf.c:10597
+#: src/readelf.c:10698 src/readelf.c:10880
 #, c-format
 msgid "invalid data"
 msgstr "некоректні дані"
@@ -1359,7 +1364,7 @@
 
 #: src/elfcmp.c:734 src/findtextrel.c:205 src/nm.c:364 src/ranlib.c:141
 #: src/size.c:272 src/strings.c:185 src/strip.c:984 src/strip.c:1021
-#: src/unstrip.c:2191 src/unstrip.c:2220
+#: src/unstrip.c:2197 src/unstrip.c:2226
 #, c-format
 msgid "cannot open '%s'"
 msgstr "не вдалося відкрити «%s»"
@@ -3757,8 +3762,8 @@
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11251 src/readelf.c:12441
-#: src/readelf.c:12652 src/readelf.c:12721 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11313 src/readelf.c:12503
+#: src/readelf.c:12714 src/readelf.c:12783 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -4081,11 +4086,11 @@
 msgid "cannot get section: %s"
 msgstr "не вдалося отримати розділ: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12672
-#: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:606
-#: src/unstrip.c:627 src/unstrip.c:667 src/unstrip.c:883 src/unstrip.c:1214
-#: src/unstrip.c:1341 src/unstrip.c:1365 src/unstrip.c:1421 src/unstrip.c:1485
-#: src/unstrip.c:1660 src/unstrip.c:1811 src/unstrip.c:1954 src/unstrip.c:2053
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12734
+#: src/unstrip.c:401 src/unstrip.c:432 src/unstrip.c:491 src/unstrip.c:612
+#: src/unstrip.c:633 src/unstrip.c:673 src/unstrip.c:889 src/unstrip.c:1220
+#: src/unstrip.c:1347 src/unstrip.c:1371 src/unstrip.c:1427 src/unstrip.c:1491
+#: src/unstrip.c:1666 src/unstrip.c:1817 src/unstrip.c:1960 src/unstrip.c:2059
 #, c-format
 msgid "cannot get section header: %s"
 msgstr "не вдалося отримати заголовок розділу: %s"
@@ -4095,8 +4100,8 @@
 msgid "cannot get section name"
 msgstr "не вдалося отримати назву розділу"
 
-#: src/readelf.c:670 src/readelf.c:6585 src/readelf.c:10523 src/readelf.c:10625
-#: src/readelf.c:10803
+#: src/readelf.c:670 src/readelf.c:6610 src/readelf.c:10585 src/readelf.c:10687
+#: src/readelf.c:10865
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "не вдалося отримати дані %s: %s"
@@ -4438,7 +4443,7 @@
 " Відображення розділів на сегмент:\n"
 "  Розділи сегмента..."
 
-#: src/readelf.c:1460 src/unstrip.c:2112 src/unstrip.c:2154 src/unstrip.c:2161
+#: src/readelf.c:1460 src/unstrip.c:2118 src/unstrip.c:2160 src/unstrip.c:2167
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "не вдалося отримати заголовок програми: %s"
@@ -4487,8 +4492,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12543
-#: src/readelf.c:12550 src/readelf.c:12594 src/readelf.c:12601
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12605
+#: src/readelf.c:12612 src/readelf.c:12656 src/readelf.c:12663
 msgid "Couldn't uncompress section"
 msgstr "Не вдалося розпакувати розділ"
 
@@ -4498,7 +4503,7 @@
 msgstr "не вдалося отримати заголовок розділу [%zd]: %s"
 
 #: src/readelf.c:1805 src/readelf.c:2455 src/readelf.c:2713 src/readelf.c:2789
-#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5364
+#: src/readelf.c:3093 src/readelf.c:3167 src/readelf.c:5389
 #, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "некоректне значення sh_link у розділі %zu"
@@ -5011,7 +5016,7 @@
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <НЕВИКОРИСТОВУВАНІ ДАНІ> ... %<PRIu64> байтів ...\n"
 
-#: src/readelf.c:5054
+#: src/readelf.c:5079
 #, c-format
 msgid ""
 "\n"
@@ -5022,7 +5027,7 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 " [ Код]\n"
 
-#: src/readelf.c:5062
+#: src/readelf.c:5087
 #, c-format
 msgid ""
 "\n"
@@ -5031,20 +5036,20 @@
 "\n"
 "Розділ скорочень за зміщенням %<PRIu64>:\n"
 
-#: src/readelf.c:5075
+#: src/readelf.c:5100
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** помилка під час читання скорочення: %s\n"
 
-#: src/readelf.c:5091
+#: src/readelf.c:5116
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] зміщення: %<PRId64>, дочірній: %s, мітка: %s\n"
 
-#: src/readelf.c:5124 src/readelf.c:5433 src/readelf.c:5600 src/readelf.c:5985
-#: src/readelf.c:6595 src/readelf.c:8332 src/readelf.c:9024 src/readelf.c:9460
-#: src/readelf.c:9711 src/readelf.c:9877 src/readelf.c:10264
-#: src/readelf.c:10324
+#: src/readelf.c:5149 src/readelf.c:5458 src/readelf.c:5625 src/readelf.c:6010
+#: src/readelf.c:6620 src/readelf.c:8357 src/readelf.c:9049 src/readelf.c:9522
+#: src/readelf.c:9773 src/readelf.c:9939 src/readelf.c:10326
+#: src/readelf.c:10386
 #, c-format
 msgid ""
 "\n"
@@ -5053,54 +5058,54 @@
 "\n"
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 
-#: src/readelf.c:5137
+#: src/readelf.c:5162
 #, c-format
 msgid "cannot get .debug_addr section data: %s"
 msgstr "не вдалося отримати дані розділу .debug_addr: %s"
 
-#: src/readelf.c:5237 src/readelf.c:5261 src/readelf.c:5645 src/readelf.c:9069
+#: src/readelf.c:5262 src/readelf.c:5286 src/readelf.c:5670 src/readelf.c:9094
 #, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " Довжина:        %8<PRIu64>\n"
 
-#: src/readelf.c:5239 src/readelf.c:5276 src/readelf.c:5658 src/readelf.c:9082
+#: src/readelf.c:5264 src/readelf.c:5301 src/readelf.c:5683 src/readelf.c:9107
 #, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr " версія DWARF:   %8<PRIu16>\n"
 
-#: src/readelf.c:5240 src/readelf.c:5285 src/readelf.c:5667 src/readelf.c:9091
+#: src/readelf.c:5265 src/readelf.c:5310 src/readelf.c:5692 src/readelf.c:9116
 #, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " Розмір адреси:  %8<PRIu64>\n"
 
-#: src/readelf.c:5242 src/readelf.c:5295 src/readelf.c:5677 src/readelf.c:9101
+#: src/readelf.c:5267 src/readelf.c:5320 src/readelf.c:5702 src/readelf.c:9126
 #, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr ""
 " Розмір сегмента: %8<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5280 src/readelf.c:5662 src/readelf.c:9086 src/readelf.c:10456
+#: src/readelf.c:5305 src/readelf.c:5687 src/readelf.c:9111 src/readelf.c:10518
 #, c-format
 msgid "Unknown version"
 msgstr "Невідома версія"
 
-#: src/readelf.c:5290 src/readelf.c:5503 src/readelf.c:5672 src/readelf.c:9096
+#: src/readelf.c:5315 src/readelf.c:5528 src/readelf.c:5697 src/readelf.c:9121
 #, c-format
 msgid "unsupported address size"
 msgstr "непідтримуваний розмір адреси"
 
-#: src/readelf.c:5301 src/readelf.c:5514 src/readelf.c:5682 src/readelf.c:9106
+#: src/readelf.c:5326 src/readelf.c:5539 src/readelf.c:5707 src/readelf.c:9131
 #, c-format
 msgid "unsupported segment size"
 msgstr "непідтримуваний розмір сегмента"
 
-#: src/readelf.c:5354 src/readelf.c:5428
+#: src/readelf.c:5379 src/readelf.c:5453
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "не вдалося отримати дані get .debug_aranges: %s"
 
-#: src/readelf.c:5369
+#: src/readelf.c:5394
 #, c-format
 msgid ""
 "\n"
@@ -5118,12 +5123,12 @@
 "\n"
 "Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu записів:\n"
 
-#: src/readelf.c:5400
+#: src/readelf.c:5425
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5402
+#: src/readelf.c:5427
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5131,7 +5136,7 @@
 " [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, зміщення CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:5446 src/readelf.c:8359
+#: src/readelf.c:5471 src/readelf.c:8384
 #, c-format
 msgid ""
 "\n"
@@ -5140,13 +5145,13 @@
 "\n"
 "Таблиця за зміщенням %zu:\n"
 
-#: src/readelf.c:5450 src/readelf.c:5626 src/readelf.c:6619 src/readelf.c:8370
-#: src/readelf.c:9050
+#: src/readelf.c:5475 src/readelf.c:5651 src/readelf.c:6644 src/readelf.c:8395
+#: src/readelf.c:9075
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "некоректні дані у розділі [%zu] «%s»"
 
-#: src/readelf.c:5466
+#: src/readelf.c:5491
 #, c-format
 msgid ""
 "\n"
@@ -5155,27 +5160,27 @@
 "\n"
 " Довжина:       %6<PRIu64>\n"
 
-#: src/readelf.c:5478
+#: src/readelf.c:5503
 #, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr " версія DWARF:  %6<PRIuFAST16>\n"
 
-#: src/readelf.c:5482
+#: src/readelf.c:5507
 #, c-format
 msgid "unsupported aranges version"
 msgstr "непідтримувана версія aranges"
 
-#: src/readelf.c:5493
+#: src/readelf.c:5518
 #, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " зміщення CU:     %6<PRIx64>\n"
 
-#: src/readelf.c:5499
+#: src/readelf.c:5524
 #, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " Розмір адреси:  %6<PRIu64>\n"
 
-#: src/readelf.c:5510
+#: src/readelf.c:5535
 #, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
@@ -5184,17 +5189,17 @@
 " Розмір сегмента:  %6<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5565
+#: src/readelf.c:5590
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr "   %zu байтів доповнення\n"
 
-#: src/readelf.c:5609
+#: src/readelf.c:5634
 #, c-format
 msgid "cannot get .debug_rnglists content: %s"
 msgstr "не вдалося отримати вміст .debug_rnglists: %s"
 
-#: src/readelf.c:5632 src/readelf.c:9056
+#: src/readelf.c:5657 src/readelf.c:9081
 #, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
@@ -5203,42 +5208,42 @@
 "Таблиця за зміщенням 0x%<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:5687 src/readelf.c:9111
+#: src/readelf.c:5712 src/readelf.c:9136
 #, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " Записи зміщення: %8<PRIu64>\n"
 
-#: src/readelf.c:5703 src/readelf.c:9127
+#: src/readelf.c:5728 src/readelf.c:9152
 #, c-format
 msgid " Unknown CU base: "
 msgstr " Невідома основа CU: "
 
-#: src/readelf.c:5705 src/readelf.c:9129
+#: src/readelf.c:5730 src/readelf.c:9154
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr " Основа CU [%6<PRIx64>]: "
 
-#: src/readelf.c:5711 src/readelf.c:9135
+#: src/readelf.c:5736 src/readelf.c:9160
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr " Не пов'язано із CU.\n"
 
-#: src/readelf.c:5722 src/readelf.c:9146
+#: src/readelf.c:5747 src/readelf.c:9171
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr "забагато записів зсуву для довжини модуля"
 
-#: src/readelf.c:5726 src/readelf.c:9150
+#: src/readelf.c:5751 src/readelf.c:9175
 #, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  Зміщення, що починаються з 0x%<PRIx64>:\n"
 
-#: src/readelf.c:5778
+#: src/readelf.c:5803
 #, c-format
 msgid "invalid range list data"
 msgstr "некоректні дані списку діапазонів"
 
-#: src/readelf.c:5963 src/readelf.c:9438
+#: src/readelf.c:5988 src/readelf.c:9500
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
@@ -5247,12 +5252,12 @@
 "   %zu байтів доповнення\n"
 "\n"
 
-#: src/readelf.c:5980
+#: src/readelf.c:6005
 #, c-format
 msgid "cannot get .debug_ranges content: %s"
 msgstr "не вдалося отримати дані .debug_ranges: %s"
 
-#: src/readelf.c:6016 src/readelf.c:9493
+#: src/readelf.c:6041 src/readelf.c:9555
 #, c-format
 msgid ""
 "\n"
@@ -5261,7 +5266,7 @@
 "\n"
 " Невідома основа CU: "
 
-#: src/readelf.c:6018 src/readelf.c:9495
+#: src/readelf.c:6043 src/readelf.c:9557
 #, c-format
 msgid ""
 "\n"
@@ -5270,31 +5275,31 @@
 "\n"
 " Основа CU [%6<PRIx64>]: "
 
-#: src/readelf.c:6027 src/readelf.c:9521 src/readelf.c:9547
+#: src/readelf.c:6052 src/readelf.c:9583 src/readelf.c:9609
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:6052 src/readelf.c:9631
+#: src/readelf.c:6077 src/readelf.c:9693
 #, fuzzy
 msgid "base address"
 msgstr " встановити адресу у значення "
 
-#: src/readelf.c:6062 src/readelf.c:9641
+#: src/readelf.c:6087 src/readelf.c:9703
 #, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx] порожній список\n"
 
-#: src/readelf.c:6317
+#: src/readelf.c:6342
 msgid "         <INVALID DATA>\n"
 msgstr "         <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:6573
+#: src/readelf.c:6598
 #, c-format
 msgid "cannot get ELF: %s"
 msgstr "не вдалося отримати ELF: %s"
 
-#: src/readelf.c:6591
+#: src/readelf.c:6616
 #, c-format
 msgid ""
 "\n"
@@ -5303,7 +5308,7 @@
 "\n"
 "Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
 
-#: src/readelf.c:6641
+#: src/readelf.c:6666
 #, c-format
 msgid ""
 "\n"
@@ -5312,65 +5317,65 @@
 "\n"
 " [%6tx] нульовий переривач\n"
 
-#: src/readelf.c:6742 src/readelf.c:6896
+#: src/readelf.c:6767 src/readelf.c:6921
 #, c-format
 msgid "invalid augmentation length"
 msgstr "некоректна довжина збільшення"
 
-#: src/readelf.c:6757
+#: src/readelf.c:6782
 msgid "FDE address encoding: "
 msgstr "Кодування адреси FDE: "
 
-#: src/readelf.c:6763
+#: src/readelf.c:6788
 msgid "LSDA pointer encoding: "
 msgstr "Кодування вказівника LSDA: "
 
-#: src/readelf.c:6873
+#: src/readelf.c:6898
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (зміщення: %#<PRIx64>)"
 
-#: src/readelf.c:6880
+#: src/readelf.c:6905
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (зміщення від кінця: %#<PRIx64>)"
 
-#: src/readelf.c:6917
+#: src/readelf.c:6942
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sвказівник LSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:7002
+#: src/readelf.c:7027
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "DIE [%<PRIx64>] не вдалося отримати код атрибута: %s"
 
-#: src/readelf.c:7012
+#: src/readelf.c:7037
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "DIE [%<PRIx64>] не вдалося отримати форму атрибута: %s"
 
-#: src/readelf.c:7034
+#: src/readelf.c:7059
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "DIE [%<PRIx64>] не вдалося отримати значення атрибута «%s» (%s): %s"
 
-#: src/readelf.c:7364
+#: src/readelf.c:7389
 #, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "некоректний файл (%<PRId64>): %s"
 
-#: src/readelf.c:7368
+#: src/readelf.c:7393
 #, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr "немає srcfiles для CU [%<PRIx64>]"
 
-#: src/readelf.c:7372
+#: src/readelf.c:7397
 #, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "не вдалося отримати CU DWARF: %s"
 
-#: src/readelf.c:7685
+#: src/readelf.c:7710
 #, c-format
 msgid ""
 "\n"
@@ -5381,12 +5386,12 @@
 "Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
 " [Зміщення]\n"
 
-#: src/readelf.c:7735
+#: src/readelf.c:7760
 #, c-format
 msgid "cannot get next unit: %s"
 msgstr "не вдалося отримати наступний модуль: %s"
 
-#: src/readelf.c:7754
+#: src/readelf.c:7779
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5399,7 +5404,7 @@
 "%<PRIu8>, Розмір зміщення: %<PRIu8>\n"
 " Підпис типу: %#<PRIx64>, Зміщення типу: %#<PRIx64> [%<PRIx64>]\n"
 
-#: src/readelf.c:7766
+#: src/readelf.c:7791
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5410,38 +5415,38 @@
 " Версія: %<PRIu16>, Зміщення розділу скорочень: %<PRIu64>, Адреса: %<PRIu8>, "
 "Зміщення: %<PRIu8>\n"
 
-#: src/readelf.c:7776 src/readelf.c:7939
+#: src/readelf.c:7801 src/readelf.c:7964
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr " Тип модуля: %s (%<PRIu8>)"
 
-#: src/readelf.c:7803
+#: src/readelf.c:7828
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr "невідома версія (%d) або тип модуля (%d)"
 
-#: src/readelf.c:7832
+#: src/readelf.c:7857
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "не вдалося отримати зміщення DIE: %s"
 
-#: src/readelf.c:7841
+#: src/readelf.c:7866
 #, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr ""
 "не вдалося отримати мітку DIE за зміщенням [%<PRIu64>] у розділі «%s»: %s"
 
-#: src/readelf.c:7879
+#: src/readelf.c:7904
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "не вдалося визначити наступний DIE: %s\n"
 
-#: src/readelf.c:7887
+#: src/readelf.c:7912
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "не вдалося визначити наступний DIE: %s"
 
-#: src/readelf.c:7931
+#: src/readelf.c:7956
 #, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5452,7 +5457,7 @@
 " Версія: %<PRIu16>, Зміщення розділу скорочень: %<PRIu64>, Адреса: %<PRIu8>, "
 "Зміщення: %<PRIu8>\n"
 
-#: src/readelf.c:7983
+#: src/readelf.c:8008
 #, c-format
 msgid ""
 "\n"
@@ -5463,18 +5468,18 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:8315
+#: src/readelf.c:8340
 #, c-format
 msgid "unknown form: %s"
 msgstr "невідома форма: %s"
 
-#: src/readelf.c:8346
+#: src/readelf.c:8371
 #, c-format
 msgid "cannot get line data section data: %s"
 msgstr "не вдалося отримати дані розділу лінійних даних: %s"
 
 #. Print what we got so far.
-#: src/readelf.c:8448
+#: src/readelf.c:8473
 #, c-format
 msgid ""
 "\n"
@@ -5507,27 +5512,27 @@
 "\n"
 "Коди операцій:\n"
 
-#: src/readelf.c:8470
+#: src/readelf.c:8495
 #, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "не вдалося обробити версію .debug_line: %u\n"
 
-#: src/readelf.c:8478
+#: src/readelf.c:8503
 #, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "не вдалося обробити розмір адреси: %u\n"
 
-#: src/readelf.c:8486
+#: src/readelf.c:8511
 #, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "не вдалося обробити розмір селектора сегментів: %u\n"
 
-#: src/readelf.c:8496
+#: src/readelf.c:8521
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»"
 
-#: src/readelf.c:8511
+#: src/readelf.c:8536
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
@@ -5535,7 +5540,7 @@
 msgstr[1] "  [%*<PRIuFAST8>]  %hhu аргументи\n"
 msgstr[2] "  [%*<PRIuFAST8>]  %hhu аргументів\n"
 
-#: src/readelf.c:8522
+#: src/readelf.c:8547
 msgid ""
 "\n"
 "Directory table:"
@@ -5543,12 +5548,12 @@
 "\n"
 "Таблиця каталогу:"
 
-#: src/readelf.c:8528 src/readelf.c:8605
+#: src/readelf.c:8553 src/readelf.c:8630
 #, c-format
 msgid "      ["
 msgstr "      ["
 
-#: src/readelf.c:8599
+#: src/readelf.c:8624
 msgid ""
 "\n"
 "File name table:"
@@ -5556,11 +5561,11 @@
 "\n"
 " Таблиця назв файлів:"
 
-#: src/readelf.c:8660
+#: src/readelf.c:8685
 msgid " Entry Dir   Time      Size      Name"
 msgstr " Запис Кат   Час       Розмір    Назва"
 
-#: src/readelf.c:8699
+#: src/readelf.c:8724
 #, fuzzy
 msgid ""
 "\n"
@@ -5569,7 +5574,7 @@
 "\n"
 "Оператори номерів рядків:"
 
-#: src/readelf.c:8703
+#: src/readelf.c:8728
 msgid ""
 "\n"
 "Line number statements:"
@@ -5577,118 +5582,118 @@
 "\n"
 "Оператори номерів рядків:"
 
-#: src/readelf.c:8726
+#: src/readelf.c:8751
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr "некоректну кількість операцій на інструкцію прирівняно до нуля"
 
-#: src/readelf.c:8760
+#: src/readelf.c:8785
 #, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " спеціальний код операції %u: адреса+%u = "
 
-#: src/readelf.c:8764
+#: src/readelf.c:8789
 #, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ", індекс_оп = %u, рядок%+d = %zu\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:8792
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ", рядок%+d = %zu\n"
 
-#: src/readelf.c:8785
+#: src/readelf.c:8810
 #, c-format
 msgid " extended opcode %u: "
 msgstr " розширений код операції %u: "
 
-#: src/readelf.c:8790
+#: src/readelf.c:8815
 msgid " end of sequence"
 msgstr " кінець послідовності"
 
-#: src/readelf.c:8808
+#: src/readelf.c:8833
 #, c-format
 msgid " set address to "
 msgstr " встановити адресу у значення "
 
-#: src/readelf.c:8836
+#: src/readelf.c:8861
 #, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 " визначення нового файла: dir=%u, mtime=%<PRIu64>, довжина=%<PRIu64>, назва="
 "%s\n"
 
-#: src/readelf.c:8850
+#: src/readelf.c:8875
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " встановити розрізнення для %u\n"
 
 #. Unknown, ignore it.
-#: src/readelf.c:8855
+#: src/readelf.c:8880
 msgid " unknown opcode"
 msgstr " невідомий код операції"
 
 #. Takes no argument.
-#: src/readelf.c:8867
+#: src/readelf.c:8892
 msgid " copy"
 msgstr " копія"
 
-#: src/readelf.c:8878
+#: src/readelf.c:8903
 #, c-format
 msgid " advance address by %u to "
 msgstr " збільшення адреси на %u до "
 
-#: src/readelf.c:8882 src/readelf.c:8943
+#: src/readelf.c:8907 src/readelf.c:8968
 #, c-format
 msgid ", op_index to %u"
 msgstr ", op_index до %u"
 
-#: src/readelf.c:8894
+#: src/readelf.c:8919
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " просувати рядок на сталу %d до %<PRId64>\n"
 
-#: src/readelf.c:8904
+#: src/readelf.c:8929
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " встановити файл у %<PRIu64>\n"
 
-#: src/readelf.c:8915
+#: src/readelf.c:8940
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " встановити значення стовпчика %<PRIu64>\n"
 
-#: src/readelf.c:8922
+#: src/readelf.c:8947
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " встановити «%s» у %<PRIuFAST8>\n"
 
 #. Takes no argument.
-#: src/readelf.c:8928
+#: src/readelf.c:8953
 msgid " set basic block flag"
 msgstr " встановити прапорець базового блоку"
 
-#: src/readelf.c:8939
+#: src/readelf.c:8964
 #, c-format
 msgid " advance address by constant %u to "
 msgstr " збільшити адресу на сталу величину %u до "
 
-#: src/readelf.c:8959
+#: src/readelf.c:8984
 #, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr " збільшити адресу на фіксовану величину %u до \n"
 
 #. Takes no argument.
-#: src/readelf.c:8969
+#: src/readelf.c:8994
 msgid " set prologue end flag"
 msgstr " встановити прапорець кінця вступу"
 
 #. Takes no argument.
-#: src/readelf.c:8974
+#: src/readelf.c:8999
 msgid " set epilogue begin flag"
 msgstr " встановити прапорець початку епілогу"
 
-#: src/readelf.c:8984
+#: src/readelf.c:9009
 #, c-format
 msgid " set isa to %u\n"
 msgstr " встановити isa у %u\n"
@@ -5696,7 +5701,7 @@
 #. This is a new opcode the generator but not we know about.
 #. Read the parameters associated with it but then discard
 #. everything.  Read all the parameters for this opcode.
-#: src/readelf.c:8993
+#: src/readelf.c:9018
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -5704,97 +5709,102 @@
 msgstr[1] " невідомий код операції з %<PRIu8> параметрами:"
 msgstr[2] " невідомий код операції з %<PRIu8> параметрами:"
 
-#: src/readelf.c:9033
+#: src/readelf.c:9058
 #, c-format
 msgid "cannot get .debug_loclists content: %s"
 msgstr "не вдалося отримати вміст .debug_loclists: %s"
 
-#: src/readelf.c:9202
+#: src/readelf.c:9224
+#, fuzzy, c-format
+msgid "    <INVALID DATA>\n"
+msgstr "   <НЕКОРЕКТНІ ДАНІ>\n"
+
+#: src/readelf.c:9264
 #, c-format
 msgid "invalid loclists data"
 msgstr "некоректні дані loclists"
 
-#: src/readelf.c:9455
+#: src/readelf.c:9517
 #, c-format
 msgid "cannot get .debug_loc content: %s"
 msgstr "не вдалося отримати вміст .debug_loc: %s"
 
-#: src/readelf.c:9668 src/readelf.c:10712
+#: src/readelf.c:9730 src/readelf.c:10774
 msgid "   <INVALID DATA>\n"
 msgstr "   <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:9723 src/readelf.c:9886
+#: src/readelf.c:9785 src/readelf.c:9948
 #, c-format
 msgid "cannot get macro information section data: %s"
 msgstr "не вдалося отримати дані розділу відомостей щодо макросів: %s"
 
-#: src/readelf.c:9803
+#: src/readelf.c:9865
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** незавершений рядок наприкінці розділу"
 
-#: src/readelf.c:9826
+#: src/readelf.c:9888
 #, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу"
 
-#: src/readelf.c:9927
+#: src/readelf.c:9989
 #, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr " Зміщення:           0x%<PRIx64>\n"
 
-#: src/readelf.c:9939
+#: src/readelf.c:10001
 #, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr " Версія:             %<PRIu16>\n"
 
-#: src/readelf.c:9945 src/readelf.c:10832
+#: src/readelf.c:10007 src/readelf.c:10894
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr "  невідома версія, не вдалося обробити розділ\n"
 
-#: src/readelf.c:9952
+#: src/readelf.c:10014
 #, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr " Прапорець:          0x%<PRIx8>"
 
-#: src/readelf.c:9981
+#: src/readelf.c:10043
 #, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " Довжина зміщення:   %<PRIu8>\n"
 
-#: src/readelf.c:9989
+#: src/readelf.c:10051
 #, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " зміщення .debug_line: 0x%<PRIx64>\n"
 
-#: src/readelf.c:10014
+#: src/readelf.c:10076
 #, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr "  таблиця кодів операцій розширень, записів — %<PRIu8>:\n"
 
-#: src/readelf.c:10021
+#: src/readelf.c:10083
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr "    [%<PRIx8>]"
 
-#: src/readelf.c:10033
+#: src/readelf.c:10095
 #, c-format
 msgid " %<PRIu8> arguments:"
 msgstr " %<PRIu8> аргументів:"
 
-#: src/readelf.c:10048
+#: src/readelf.c:10110
 #, c-format
 msgid " no arguments."
 msgstr " немає аргументів."
 
-#: src/readelf.c:10249
+#: src/readelf.c:10311
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
 " [%5d] зміщення DIE: %6<PRId64>, зміщення CU DIE: %6<PRId64>, назва: %s\n"
 
-#: src/readelf.c:10293
+#: src/readelf.c:10355
 #, c-format
 msgid ""
 "\n"
@@ -5805,37 +5815,37 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 " %*s  Рядок\n"
 
-#: src/readelf.c:10308
+#: src/readelf.c:10370
 #, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** помилка, пропущено роздільник рядків\n"
 
-#: src/readelf.c:10337
+#: src/readelf.c:10399
 #, c-format
 msgid "cannot get .debug_str_offsets section data: %s"
 msgstr "не вдалося отримати дані розділу .debug_str_offsets: %s"
 
-#: src/readelf.c:10436
+#: src/readelf.c:10498
 #, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " Довжина:       %8<PRIu64>\n"
 
-#: src/readelf.c:10438
+#: src/readelf.c:10500
 #, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " Розмір зсуву:   %8<PRIu8>\n"
 
-#: src/readelf.c:10452
+#: src/readelf.c:10514
 #, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr " версія DWARF:  %8<PRIu16>\n"
 
-#: src/readelf.c:10461
+#: src/readelf.c:10523
 #, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " Заповнення:     %8<PRIx16>\n"
 
-#: src/readelf.c:10515
+#: src/readelf.c:10577
 #, c-format
 msgid ""
 "\n"
@@ -5844,7 +5854,7 @@
 "\n"
 "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:10617
+#: src/readelf.c:10679
 #, c-format
 msgid ""
 "\n"
@@ -5853,22 +5863,22 @@
 "\n"
 "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:10640
+#: src/readelf.c:10702
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " Кодування LPStart:   %#x "
 
-#: src/readelf.c:10652
+#: src/readelf.c:10714
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " Кодування TType:     %#x "
 
-#: src/readelf.c:10667
+#: src/readelf.c:10729
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Кодування місця виклику:%#x "
 
-#: src/readelf.c:10680
+#: src/readelf.c:10742
 msgid ""
 "\n"
 " Call site table:"
@@ -5876,7 +5886,7 @@
 "\n"
 " Таблиця місця виклику:"
 
-#: src/readelf.c:10694
+#: src/readelf.c:10756
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5889,12 +5899,12 @@
 "        Місце застосування:   %#<PRIx64>\n"
 "        Дія:                  %u\n"
 
-#: src/readelf.c:10767
+#: src/readelf.c:10829
 #, c-format
 msgid "invalid TType encoding"
 msgstr "некоректне кодування TType"
 
-#: src/readelf.c:10794
+#: src/readelf.c:10856
 #, c-format
 msgid ""
 "\n"
@@ -5903,37 +5913,37 @@
 "\n"
 "Розділ GDB [%2zu] «%s» за зміщенням %#<PRIx64> містить %<PRId64> байтів:\n"
 
-#: src/readelf.c:10823
+#: src/readelf.c:10885
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr " Версія:          %<PRId32>\n"
 
-#: src/readelf.c:10841
+#: src/readelf.c:10903
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " зміщення CU:     %#<PRIx32>\n"
 
-#: src/readelf.c:10848
+#: src/readelf.c:10910
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " зміщення TU:      %#<PRIx32>\n"
 
-#: src/readelf.c:10855
+#: src/readelf.c:10917
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " зміщення адреси: %#<PRIx32>\n"
 
-#: src/readelf.c:10862
+#: src/readelf.c:10924
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " зміщення символу: %#<PRIx32>\n"
 
-#: src/readelf.c:10869
+#: src/readelf.c:10931
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " стале зміщення:  %#<PRIx32>\n"
 
-#: src/readelf.c:10883
+#: src/readelf.c:10945
 #, c-format
 msgid ""
 "\n"
@@ -5942,7 +5952,7 @@
 "\n"
 " Список CU зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:10908
+#: src/readelf.c:10970
 #, c-format
 msgid ""
 "\n"
@@ -5951,7 +5961,7 @@
 "\n"
 " Список TU зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:10937
+#: src/readelf.c:10999
 #, c-format
 msgid ""
 "\n"
@@ -5960,7 +5970,7 @@
 "\n"
 " Список адрес зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:10969
+#: src/readelf.c:11031
 #, c-format
 msgid ""
 "\n"
@@ -5969,18 +5979,18 @@
 "\n"
 " Таблиця символів за зміщенням %#<PRIx32> містить %zu позицій:\n"
 
-#: src/readelf.c:11107
+#: src/readelf.c:11169
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "не вдалося отримати дескриптор контексту зневаджування: %s"
 
-#: src/readelf.c:11475 src/readelf.c:12097 src/readelf.c:12208
-#: src/readelf.c:12266
+#: src/readelf.c:11537 src/readelf.c:12159 src/readelf.c:12270
+#: src/readelf.c:12328
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "не вдалося перетворити дані запису ядра: %s"
 
-#: src/readelf.c:11838
+#: src/readelf.c:11900
 #, c-format
 msgid ""
 "\n"
@@ -5989,21 +5999,21 @@
 "\n"
 "%*s... <повторюється %u разів> ..."
 
-#: src/readelf.c:12345
+#: src/readelf.c:12407
 msgid "  Owner          Data size  Type\n"
 msgstr "  Власник        Розм. даних Тип\n"
 
-#: src/readelf.c:12374
+#: src/readelf.c:12436
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12426
+#: src/readelf.c:12488
 #, c-format
 msgid "cannot get content of note: %s"
 msgstr "не вдалося отримати вміст нотатки: %s"
 
-#: src/readelf.c:12460
+#: src/readelf.c:12522
 #, c-format
 msgid ""
 "\n"
@@ -6013,7 +6023,7 @@
 "Розділ записів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12483
+#: src/readelf.c:12545
 #, c-format
 msgid ""
 "\n"
@@ -6022,7 +6032,7 @@
 "\n"
 "Сегмент записів з %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12530
+#: src/readelf.c:12592
 #, c-format
 msgid ""
 "\n"
@@ -6031,12 +6041,12 @@
 "\n"
 "У розділі [%zu] «%s» не міститься даних для створення дампу.\n"
 
-#: src/readelf.c:12557 src/readelf.c:12608
+#: src/readelf.c:12619 src/readelf.c:12670
 #, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "не вдалося отримати дані для розділу [%zu] «%s»: %s"
 
-#: src/readelf.c:12562
+#: src/readelf.c:12624
 #, c-format
 msgid ""
 "\n"
@@ -6045,7 +6055,7 @@
 "\n"
 "Шіст. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12567
+#: src/readelf.c:12629
 #, c-format
 msgid ""
 "\n"
@@ -6056,7 +6066,7 @@
 "Шіст. дамп розділу [%zu] «%s», %<PRIu64> байтів (%zd нестиснено) за "
 "зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12581
+#: src/readelf.c:12643
 #, c-format
 msgid ""
 "\n"
@@ -6065,7 +6075,7 @@
 "\n"
 "У розділі [%zu] «%s» не міститься рядків для створення дампу.\n"
 
-#: src/readelf.c:12613
+#: src/readelf.c:12675
 #, c-format
 msgid ""
 "\n"
@@ -6074,7 +6084,7 @@
 "\n"
 "Розділ рядків [%zu] «%s» містить %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12618
+#: src/readelf.c:12680
 #, c-format
 msgid ""
 "\n"
@@ -6085,7 +6095,7 @@
 "Рядок розділу [%zu] «%s» містить %<PRIu64> байти (%zd нестиснено) на "
 "зміщенні %#0<PRIx64>:\n"
 
-#: src/readelf.c:12667
+#: src/readelf.c:12729
 #, c-format
 msgid ""
 "\n"
@@ -6094,7 +6104,7 @@
 "\n"
 "розділу [%lu] не існує"
 
-#: src/readelf.c:12697
+#: src/readelf.c:12759
 #, c-format
 msgid ""
 "\n"
@@ -6103,12 +6113,12 @@
 "\n"
 "розділу «%s» не існує"
 
-#: src/readelf.c:12754
+#: src/readelf.c:12816
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "не вдалося отримати покажчик символів архіву «%s»: %s"
 
-#: src/readelf.c:12757
+#: src/readelf.c:12819
 #, c-format
 msgid ""
 "\n"
@@ -6117,7 +6127,7 @@
 "\n"
 "У архіві «%s» немає покажчика символів\n"
 
-#: src/readelf.c:12761
+#: src/readelf.c:12823
 #, c-format
 msgid ""
 "\n"
@@ -6126,12 +6136,12 @@
 "\n"
 "Покажчик архіву «%s» містить %zu записів:\n"
 
-#: src/readelf.c:12779
+#: src/readelf.c:12841
 #, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "не вдалося видобути елемент за зміщенням %zu у «%s»: %s"
 
-#: src/readelf.c:12784
+#: src/readelf.c:12846
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Елемент архіву «%s» містить:\n"
@@ -6770,7 +6780,7 @@
 msgid "cannot get shdrstrndx:%s"
 msgstr "не вдалося отримати shdrstrndx:%s"
 
-#: src/unstrip.c:248 src/unstrip.c:2083
+#: src/unstrip.c:248 src/unstrip.c:2089
 #, c-format
 msgid "cannot get ELF header: %s"
 msgstr "не вдалося отримати заголовок ELF: %s"
@@ -6790,12 +6800,12 @@
 msgid "cannot copy ELF header: %s"
 msgstr "не вдалося скопіювати заголовок ELF: %s"
 
-#: src/unstrip.c:269 src/unstrip.c:2101 src/unstrip.c:2144
+#: src/unstrip.c:269 src/unstrip.c:2107 src/unstrip.c:2150
 #, c-format
 msgid "cannot get number of program headers: %s"
 msgstr "не вдалося отримати кількість заголовків програми: %s"
 
-#: src/unstrip.c:274 src/unstrip.c:2105
+#: src/unstrip.c:274 src/unstrip.c:2111
 #, c-format
 msgid "cannot create program headers: %s"
 msgstr "не вдалося створити заголовки програми: %s"
@@ -6810,199 +6820,199 @@
 msgid "cannot copy section header: %s"
 msgstr "не вдалося скопіювати заголовок розділу: %s"
 
-#: src/unstrip.c:293 src/unstrip.c:1705
+#: src/unstrip.c:293 src/unstrip.c:1711
 #, c-format
 msgid "cannot get section data: %s"
 msgstr "не вдалося отримати дані розділу: %s"
 
-#: src/unstrip.c:295 src/unstrip.c:1707
+#: src/unstrip.c:295 src/unstrip.c:1713
 #, c-format
 msgid "cannot copy section data: %s"
 msgstr "не вдалося скопіювати дані розділу: %s"
 
-#: src/unstrip.c:319
+#: src/unstrip.c:323
 #, c-format
 msgid "cannot create directory '%s'"
 msgstr "не вдалося створити каталог «%s»"
 
-#: src/unstrip.c:391 src/unstrip.c:653 src/unstrip.c:687 src/unstrip.c:855
-#: src/unstrip.c:1747
+#: src/unstrip.c:397 src/unstrip.c:659 src/unstrip.c:693 src/unstrip.c:861
+#: src/unstrip.c:1753
 #, c-format
 msgid "cannot get symbol table entry: %s"
 msgstr "не вдалося отримати запис таблиці символів: %s"
 
-#: src/unstrip.c:407 src/unstrip.c:656 src/unstrip.c:677 src/unstrip.c:690
-#: src/unstrip.c:1768 src/unstrip.c:1963 src/unstrip.c:1987
+#: src/unstrip.c:413 src/unstrip.c:662 src/unstrip.c:683 src/unstrip.c:696
+#: src/unstrip.c:1774 src/unstrip.c:1969 src/unstrip.c:1993
 #, c-format
 msgid "cannot update symbol table: %s"
 msgstr "не вдалося оновити таблицю символів: %s"
 
-#: src/unstrip.c:417
+#: src/unstrip.c:423
 #, c-format
 msgid "cannot update section header: %s"
 msgstr "не вдалося оновити заголовок розділу: %s"
 
-#: src/unstrip.c:463 src/unstrip.c:477
+#: src/unstrip.c:469 src/unstrip.c:483
 #, c-format
 msgid "cannot update relocation: %s"
 msgstr "не вдалося оновити пересування: %s"
 
-#: src/unstrip.c:576
+#: src/unstrip.c:582
 #, c-format
 msgid "cannot get symbol version: %s"
 msgstr "не вдалося отримати версію символу: %s"
 
-#: src/unstrip.c:589
+#: src/unstrip.c:595
 #, c-format
 msgid "unexpected section type in [%zu] with sh_link to symtab"
 msgstr "неочікуваний тип розділу у [%zu] з посиланням sh_link на symtab"
 
-#: src/unstrip.c:844
+#: src/unstrip.c:850
 #, c-format
 msgid "cannot get symbol section data: %s"
 msgstr "не вдалося отримати дані розділу символів: %s"
 
-#: src/unstrip.c:846
+#: src/unstrip.c:852
 #, c-format
 msgid "cannot get string section data: %s"
 msgstr "не вдалося отримати дані розділу рядків: %s"
 
-#: src/unstrip.c:863
+#: src/unstrip.c:869
 #, c-format
 msgid "invalid string offset in symbol [%zu]"
 msgstr "некоректне зміщення рядка у символі [%zu]"
 
-#: src/unstrip.c:1021 src/unstrip.c:1425
+#: src/unstrip.c:1027 src/unstrip.c:1431
 #, c-format
 msgid "cannot read section [%zu] name: %s"
 msgstr "не вдалося прочитати назву розділу [%zu]: %s"
 
-#: src/unstrip.c:1036
+#: src/unstrip.c:1042
 #, c-format
 msgid "bad sh_link for group section: %s"
 msgstr "помилкове значення sh_link для розділу груп: %s"
 
-#: src/unstrip.c:1042
+#: src/unstrip.c:1048
 #, c-format
 msgid "couldn't get shdr for group section: %s"
 msgstr "не вдалося отримати shdr для розділу груп: %s"
 
-#: src/unstrip.c:1047
+#: src/unstrip.c:1053
 #, c-format
 msgid "bad data for group symbol section: %s"
 msgstr "помилкові дані для розділу символів груп: %s"
 
-#: src/unstrip.c:1053
+#: src/unstrip.c:1059
 #, c-format
 msgid "couldn't get symbol for group section: %s"
 msgstr "не вдалося отримати символ для розділу груп: %s"
 
-#: src/unstrip.c:1058
+#: src/unstrip.c:1064
 #, c-format
 msgid "bad symbol name for group section: %s"
 msgstr "помилкова назва символу для розділу груп: %s"
 
-#: src/unstrip.c:1100 src/unstrip.c:1119 src/unstrip.c:1157
+#: src/unstrip.c:1106 src/unstrip.c:1125 src/unstrip.c:1163
 #, c-format
 msgid "cannot read '.gnu.prelink_undo' section: %s"
 msgstr "не вдалося прочитати розділ «.gnu.prelink_undo»: %s"
 
-#: src/unstrip.c:1137
+#: src/unstrip.c:1143
 #, c-format
 msgid "overflow with shnum = %zu in '%s' section"
 msgstr "переповнення з shnum = %zu у розділі «%s»"
 
-#: src/unstrip.c:1148
+#: src/unstrip.c:1154
 #, c-format
 msgid "invalid contents in '%s' section"
 msgstr "некоректний вміст розділу «%s»"
 
-#: src/unstrip.c:1204 src/unstrip.c:1551
+#: src/unstrip.c:1210 src/unstrip.c:1557
 #, c-format
 msgid "cannot find matching section for [%zu] '%s'"
 msgstr "не вдалося знайти відповідний розділ для [%zu] «%s»"
 
-#: src/unstrip.c:1329 src/unstrip.c:1345 src/unstrip.c:1631 src/unstrip.c:1922
+#: src/unstrip.c:1335 src/unstrip.c:1351 src/unstrip.c:1637 src/unstrip.c:1928
 #, c-format
 msgid "cannot add section name to string table: %s"
 msgstr "не вдалося додати назву розділу до таблиці рядків: %s"
 
-#: src/unstrip.c:1354
+#: src/unstrip.c:1360
 #, c-format
 msgid "cannot update section header string table data: %s"
 msgstr "не вдалося оновити дані заголовка розділу у таблиці рядків: %s"
 
-#: src/unstrip.c:1383 src/unstrip.c:1387
+#: src/unstrip.c:1389 src/unstrip.c:1393
 #, c-format
 msgid "cannot get section header string table section index: %s"
 msgstr ""
 "не вдалося визначити індекс розділу заголовка розділу у таблиці рядків: %s"
 
-#: src/unstrip.c:1391 src/unstrip.c:1395 src/unstrip.c:1646
+#: src/unstrip.c:1397 src/unstrip.c:1401 src/unstrip.c:1652
 #, c-format
 msgid "cannot get section count: %s"
 msgstr "не вдалося отримати кількість розділів: %s"
 
-#: src/unstrip.c:1398
+#: src/unstrip.c:1404
 #, c-format
 msgid "more sections in stripped file than debug file -- arguments reversed?"
 msgstr ""
 "у очищеному файлі більше розділів ніж у файлі з даними для зневаджування — "
 "помилковий порядок параметрів?"
 
-#: src/unstrip.c:1402
+#: src/unstrip.c:1408
 #, c-format
 msgid "no sections in stripped file"
 msgstr "у очищеному файлі немає розділів"
 
-#: src/unstrip.c:1473 src/unstrip.c:1566
+#: src/unstrip.c:1479 src/unstrip.c:1572
 #, c-format
 msgid "cannot read section header string table: %s"
 msgstr "не вдалося прочитати таблицю рядків заголовка розділу: %s"
 
-#: src/unstrip.c:1625
+#: src/unstrip.c:1631
 #, c-format
 msgid "cannot add new section: %s"
 msgstr "не вдалося додати новий розділ: %s"
 
-#: src/unstrip.c:1755
+#: src/unstrip.c:1761
 #, c-format
 msgid "symbol [%zu] has invalid section index"
 msgstr "символ [%zu] має некоректний індекс розділу"
 
-#: src/unstrip.c:1787
+#: src/unstrip.c:1793
 #, c-format
 msgid "group has invalid section index [%zd]"
 msgstr "група містить некоректний індекс розділу [%zd]"
 
-#: src/unstrip.c:2062
+#: src/unstrip.c:2068
 #, c-format
 msgid "cannot read section data: %s"
 msgstr "не вдалося прочитати дані розділу: %s"
 
-#: src/unstrip.c:2091
+#: src/unstrip.c:2097
 #, c-format
 msgid "cannot update ELF header: %s"
 msgstr "не вдалося оновити заголовок ELF: %s"
 
-#: src/unstrip.c:2115
+#: src/unstrip.c:2121
 #, c-format
 msgid "cannot update program header: %s"
 msgstr "не вдалося оновити заголовок програми: %s"
 
-#: src/unstrip.c:2120 src/unstrip.c:2202
+#: src/unstrip.c:2126 src/unstrip.c:2208
 #, c-format
 msgid "cannot write output file: %s"
 msgstr "не вдалося записати файл виведених даних: %s"
 
-#: src/unstrip.c:2171
+#: src/unstrip.c:2177
 #, c-format
 msgid "DWARF data not adjusted for prelinking bias; consider prelink -u"
 msgstr ""
 "Дані DWARF не скориговано відповідно до відхилення перед компонуванням; "
 "спробуйте виправити це командою prelink -u"
 
-#: src/unstrip.c:2174
+#: src/unstrip.c:2180
 #, c-format
 msgid ""
 "DWARF data in '%s' not adjusted for prelinking bias; consider prelink -u"
@@ -7010,76 +7020,76 @@
 "Дані DWARF у «%s» не скориговано відповідно до відхилення перед "
 "компонуванням; спробуйте виправити це командою prelink -u"
 
-#: src/unstrip.c:2193 src/unstrip.c:2244 src/unstrip.c:2256 src/unstrip.c:2342
+#: src/unstrip.c:2199 src/unstrip.c:2250 src/unstrip.c:2262 src/unstrip.c:2348
 #, c-format
 msgid "cannot create ELF descriptor: %s"
 msgstr "не вдалося створити дескриптор ELF: %s"
 
-#: src/unstrip.c:2235
+#: src/unstrip.c:2241
 msgid "WARNING: "
 msgstr "УВАГА: "
 
-#: src/unstrip.c:2237
+#: src/unstrip.c:2243
 msgid ", use --force"
 msgstr ", скористайтеся --force"
 
-#: src/unstrip.c:2260
+#: src/unstrip.c:2266
 msgid "ELF header identification (e_ident) different"
 msgstr "Різні ідентифікатори заголовків ELF (e_ident)"
 
-#: src/unstrip.c:2263
+#: src/unstrip.c:2269
 msgid "ELF header type (e_type) different"
 msgstr "Різні типи заголовків ELF (e_type)"
 
-#: src/unstrip.c:2266
+#: src/unstrip.c:2272
 msgid "ELF header machine type (e_machine) different"
 msgstr "Різні типи архітектур заголовків ELF (e_machine)"
 
-#: src/unstrip.c:2269
+#: src/unstrip.c:2275
 msgid "stripped program header (e_phnum) smaller than unstripped"
 msgstr "очищений заголовок програми (e_phnum) є меншим за неочищений"
 
-#: src/unstrip.c:2299
+#: src/unstrip.c:2305
 #, c-format
 msgid "cannot find stripped file for module '%s': %s"
 msgstr "не вдалося знайти очищений файл для модуля «%s»: %s"
 
-#: src/unstrip.c:2303
+#: src/unstrip.c:2309
 #, c-format
 msgid "cannot open stripped file '%s' for module '%s': %s"
 msgstr "не вдалося відкрити очищений файл «%s» для модуля «%s»: %s"
 
-#: src/unstrip.c:2318
+#: src/unstrip.c:2324
 #, c-format
 msgid "cannot find debug file for module '%s': %s"
 msgstr "не вдалося знайти файл діагностичних даних для модуля «%s»: %s"
 
-#: src/unstrip.c:2322
+#: src/unstrip.c:2328
 #, c-format
 msgid "cannot open debug file '%s' for module '%s': %s"
 msgstr "не вдалося відкрити файл діагностичних даних «%s» для модуля «%s»: %s"
 
-#: src/unstrip.c:2335
+#: src/unstrip.c:2341
 #, c-format
 msgid "module '%s' file '%s' is not stripped"
 msgstr "у модулі «%s» файл «%s» не очищено strip"
 
-#: src/unstrip.c:2366
+#: src/unstrip.c:2372
 #, c-format
 msgid "cannot cache section addresses for module '%s': %s"
 msgstr "не вдалося кешувати адреси розділів для модуля «%s»: %s"
 
-#: src/unstrip.c:2498
+#: src/unstrip.c:2504
 #, c-format
 msgid "no matching modules found"
 msgstr "відповідних модулів не виявлено"
 
-#: src/unstrip.c:2507
+#: src/unstrip.c:2513
 #, c-format
 msgid "matched more than one module"
 msgstr "встановлено відповідність декількох модулів"
 
-#: src/unstrip.c:2551
+#: src/unstrip.c:2557
 msgid ""
 "STRIPPED-FILE DEBUG-FILE\n"
 "[MODULE...]"
@@ -7087,7 +7097,7 @@
 "ОЧИЩЕНИЙ-ФАЙЛ ФАЙЛ-DEBUG\n"
 "[МОДУЛЬ...]"
 
-#: src/unstrip.c:2552
+#: src/unstrip.c:2558
 msgid ""
 "Combine stripped files with separate symbols and debug information.\n"
 "\n"
diff --git a/src/ChangeLog b/src/ChangeLog
index 0313d2a..7f923c5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,16 @@
+2020-10-27  Érico N. Rolim  <erico.erc@gmail.com>
+
+	* unstrip.c (make_directories): Use strndup, not strndupa.
+
+2020-09-28  Mark Wielaard  <mark@klomp.org>
+
+	* readelf.c (next_listptr_offset): Take idx as pointer, to be updated
+	and use new Dwarf_Off as offset to match.
+	(listptr_attr): New function.
+	(print_debug_loclists_section): Check for DW_AT_GNU_locviews to show
+	view pairs.
+	(print_debug_loc_section): Adjust next_listptr_offset call.
+
 2020-09-03  Mark Wielaard  <mark@klomp.org>
 
 	* readelf.c (print_cfa_program): Take ehdr as argument. Use it to
diff --git a/src/readelf.c b/src/readelf.c
index 64067a5..f6d13af 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -4993,17 +4993,19 @@
 }
 
 static Dwarf_Off
-next_listptr_offset (struct listptr_table *table, size_t idx)
+next_listptr_offset (struct listptr_table *table, size_t *idxp, Dwarf_Off off)
 {
   /* Note that multiple attributes could in theory point to the same loclist
      offset, so make sure we pick one that is bigger than the current one.
      The table is sorted on offset.  */
-  Dwarf_Off offset = table->table[idx].offset;
-  while (++idx < table->n)
+  if (*idxp < table->n)
     {
-      Dwarf_Off next = table->table[idx].offset;
-      if (next > offset)
-	return next;
+      while (++*idxp < table->n)
+	{
+	  Dwarf_Off next = table->table[*idxp].offset;
+	  if (next > off)
+	    return next;
+	}
     }
   return 0;
 }
@@ -5036,13 +5038,36 @@
       struct listptr *p = &table->table[*idxp];
       *base = listptr_base (p);
       *cu = p->cu;
-      ++*idxp;
       return true;
     }
 
   return false;
 }
 
+/* Returns the next index with the current CU for the given attribute.
+   If there is none false is returned, otherwise true.  Assumes the
+   table has been sorted.  */
+static bool
+listptr_attr (struct listptr_table *table, size_t idxp,
+	      Dwarf_Off offset, unsigned int attr)
+{
+  struct listptr *listptr;
+  do
+    {
+      listptr = get_listptr (table, idxp);
+      if (listptr == NULL)
+	return false;
+
+      if (listptr->offset == offset && listptr->attr == attr)
+	return true;
+
+      idxp++;
+    }
+  while (listptr->offset <= offset);
+
+  return false;
+}
+
 static void
 print_debug_abbrev_section (Dwfl_Module *dwflmod __attribute__ ((unused)),
 			    Ebl *ebl, GElf_Ehdr *ehdr __attribute__ ((unused)),
@@ -9171,6 +9196,43 @@
       bool start_of_list = true;
       while (readp < nexthdr)
 	{
+	  Dwarf_Off off = (Dwarf_Off) (readp - (unsigned char *) data->d_buf);
+	  if (listptr_attr (&known_loclistsptr, listptr_idx, off,
+			    DW_AT_GNU_locviews))
+	    {
+	      Dwarf_Off next_off = next_listptr_offset (&known_loclistsptr,
+							&listptr_idx, off);
+	      const unsigned char *locp = readp;
+	      const unsigned char *locendp;
+	      if (next_off == 0
+		  || next_off > (size_t) (nexthdr - ((const unsigned char *)
+						     data->d_buf)))
+		locendp = nexthdr;
+	      else
+		locendp = (const unsigned char *) data->d_buf + next_off;
+
+	      printf ("  Offset: %" PRIx64 ", Index: %" PRIx64 "\n",
+		      (uint64_t) (readp - (unsigned char *) data->d_buf),
+		      (uint64_t) (readp - offset_array_start));
+
+	      while (locp < locendp)
+		{
+		  uint64_t v1, v2;
+		  get_uleb128 (v1, locp, locendp);
+		  if (locp >= locendp)
+		    {
+		      printf (gettext ("    <INVALID DATA>\n"));
+		      break;
+		    }
+		  get_uleb128 (v2, locp, locendp);
+		  printf ("    view pair %" PRId64 ", %" PRId64 "\n", v1, v2);
+		}
+
+	      printf ("\n");
+	      readp = (unsigned char *) locendp;
+	      continue;
+	    }
+
 	  uint8_t kind = *readp++;
 	  uint64_t op1, op2, len;
 
@@ -9502,7 +9564,7 @@
       if (attr == DW_AT_GNU_locviews)
 	{
 	  Dwarf_Off next_off = next_listptr_offset (&known_locsptr,
-						    listptr_idx);
+						    &listptr_idx, offset);
 	  const unsigned char *locp = readp;
 	  const unsigned char *locendp;
 	  if (next_off == 0
diff --git a/src/unstrip.c b/src/unstrip.c
index a855038..0257d9c 100644
--- a/src/unstrip.c
+++ b/src/unstrip.c
@@ -311,12 +311,18 @@
   if (lastslash == path)
     return;
 
-  char *dir = strndupa (path, lastslash - path);
+  char *dir = strndup (path, lastslash - path);
+  if (dir == NULL)
+    error(EXIT_FAILURE, errno, _("memory exhausted"));
+
   while (mkdir (dir, 0777) < 0 && errno != EEXIST)
-    if (errno == ENOENT)
-      make_directories (dir);
-    else
-      error (EXIT_FAILURE, errno, _("cannot create directory '%s'"), dir);
+    {
+      if (errno == ENOENT)
+        make_directories (dir);
+      else
+        error (EXIT_FAILURE, errno, _("cannot create directory '%s'"), dir);
+    }
+  free (dir);
 }
 
 /* Keep track of new section data we are creating, so we can free it
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 5f2b144..57fc4c8 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,77 @@
+2020-10-31  Mark Wielaard  <mark@klomp.org>
+
+	* dwfl-proc-attach.c (dlopen): New external function override.
+
+2020-10-31  Mark Wielaard  <mark@klomp.org>
+
+	* test-wrapper.sh: Use =, not == for string compare.
+
+2020-10-29  Mark Wielaard  <mark@klomp.org>
+
+	* test-wrapper.sh: Determine whether the test is a script or not
+	and run binaries directly under valgrind.
+	* dwfl-bug-fd-leak.c (main): Call getrlimit before calling setrlimit.
+	* dwfl-proc-attach.c (main): Call dwfl_end, pthread_cancel and
+	pthread_join.
+	* vdsosyms.c (main): Call dwfl_end.
+
+2020-10-31  Frank Ch. Eigler  <fche@redhat.com>
+
+	* run-debuginfod-find.sh: Modify for tweaked/new metrics.
+
+2020-10-30  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26775
+	* run-debuginfod-find.sh: Modify test for restored
+	thread_work_total semantics for grooming.
+
+2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26775
+	* run-debuginfod-find.sh: Modify test for different
+	thread_work_total semantics for grooming.
+
+2020-10-29  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26810
+	* run-debuginfod-find.sh: Add tests for successful archive fetches across
+	renamed RPMs, even without grooming.
+
+2020-10-25  Mark Wielaard  <mark@klomp.org>
+
+	* read_unaligned.c: New test.
+	* Makefile.am (check_PROGRAMS, TESTS): Add read_unaligned.
+	(read_unaligned_LDADD): New variable.
+
+2020-10-28  Tom Tromey  <tom@tromey.com>
+
+	PR26773
+	* Makefile.am (check_PROGRAMS, TESTS): Add leb128.
+	(leb128_LDADD): New variable.
+	* leb128.c: New file.
+
+2020-10-19  Mark Wielaard  <mark@klomp.org>
+
+	* addrcfi.c (print_register): Make ops_mem 3 elements.
+
+2020-10-19  Mark Wielaard  <mark@klomp.org>
+
+	* testfile60.bz2: Removed.
+	* Makefile.am (EXTRA_DIST): Remove testfile60.bz2.
+	* run-allregs.sh: Remove tilegx testfile60 testcase.
+
+2020-10-20  Frank Ch. Eigler  <fche@redhat.com>
+
+	PR26756: more prometheus metrics
+	* run-debuginfod-find.sh: Trigger some errors with dummy "nothing.rpm"
+	and check for new metrics.
+
+2020-09-18  Mark Wielaard  <mark@klomp.org>
+
+	* run-readelf-compressed-zstd.sh: New test.
+	* Makefile.am (EXTRA_DISTS): Add run-readelf-compressed-zstd.sh.
+	(TESTS): Add run-readelf-compressed-zstd.sh if HAVE_ZSTD.
+
 2020-09-03  Mark Wielaard  <mark@klomp.org>
 
 	* run-readelf-frames.sh: New test.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 4629ce6..84f6e88 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -63,7 +63,7 @@
 		  all-dwarf-ranges unit-info next_cfi \
 		  elfcopy addsections xlate_notes elfrdwrnop \
 		  dwelf_elf_e_machine_string \
-		  getphdrnum
+		  getphdrnum leb128 read_unaligned
 
 asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
 	    asm-tst6 asm-tst7 asm-tst8 asm-tst9
@@ -185,7 +185,8 @@
 	run-elfclassify.sh run-elfclassify-self.sh \
 	run-disasm-riscv64.sh \
 	run-pt_gnu_prop-tests.sh \
-	run-getphdrnum.sh run-test-includes.sh
+	run-getphdrnum.sh run-test-includes.sh \
+	leb128 read_unaligned
 
 if !BIARCH
 export ELFUTILS_DISABLE_BIARCH = 1
@@ -204,6 +205,10 @@
 TESTS += run-readelf-s.sh run-dwflsyms.sh
 endif
 
+if HAVE_ZSTD
+TESTS += run-readelf-compressed-zstd.sh
+endif
+
 if HAVE_LIBASM
 check_PROGRAMS += $(asm_TESTS)
 TESTS += $(asm_TESTS) run-disasm-bpf.sh
@@ -256,6 +261,7 @@
 	     run-nm-syms.sh testfilesyms32.bz2 testfilesyms64.bz2 \
 	     run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
 	     run-readelf-compressed.sh \
+	     run-readelf-compressed-zstd.sh \
 	     run-readelf-const-values.sh testfile-const-values.debug.bz2 \
 	     run-addrcfi.sh run-dwarfcfi.sh \
 	     testfile11-debugframe.bz2 testfile12-debugframe.bz2 \
@@ -362,7 +368,7 @@
 	     run-macro-test.sh testfile-macinfo.bz2 testfile-macros.bz2 \
 	     run-elf_cntl_gelf_getshdr.sh \
 	     run-test-archive64.sh testarchive64.a.bz2 \
-	     testfile60.bz2 testfile61.bz2 \
+	     testfile61.bz2 \
 	     run-readelf-vmcoreinfo.sh testfile62.bz2 \
 	     run-readelf-mixed-corenote.sh testfile63.bz2 testfile64.bz2 \
 	     testfile65.bz2 testfile67.bz2 testfile68.bz2 \
@@ -689,6 +695,8 @@
 elfrdwrnop_LDADD = $(libelf)
 dwelf_elf_e_machine_string_LDADD = $(libelf) $(libdw)
 getphdrnum_LDADD = $(libelf) $(libdw)
+leb128_LDADD = $(libelf) $(libdw)
+read_unaligned_LDADD = $(libelf) $(libdw)
 
 # We want to test the libelf header against the system elf.h header.
 # Don't include any -I CPPFLAGS. Except when we install our own elf.h.
diff --git a/tests/addrcfi.c b/tests/addrcfi.c
index 589b851..2b7d7bd 100644
--- a/tests/addrcfi.c
+++ b/tests/addrcfi.c
@@ -92,7 +92,7 @@
 
   printf ("\t%s reg%u (%s%s): ", setname, regno, prefix, regname);
 
-  Dwarf_Op ops_mem[2];
+  Dwarf_Op ops_mem[3];
   Dwarf_Op *ops;
   size_t nops;
   int result = dwarf_frame_register (stuff->frame, regno, ops_mem, &ops, &nops);
diff --git a/tests/dwfl-bug-fd-leak.c b/tests/dwfl-bug-fd-leak.c
index ee3a916..b091336 100644
--- a/tests/dwfl-bug-fd-leak.c
+++ b/tests/dwfl-bug-fd-leak.c
@@ -101,7 +101,14 @@
   /* Set locale.  */
   (void) setlocale (LC_ALL, "");
 
-  struct rlimit fd_limit = { .rlim_cur = 32, .rlim_max = 32 };
+  /* Get both the soft and hard limits first. The soft limit is what
+     will be enforced against the process.  The hard limit is the max
+     that can be set for the soft limit.  We don't want to lower it
+     because we might not be able to (under valgrind).  */
+  struct rlimit fd_limit;
+  if (getrlimit (RLIMIT_NOFILE, &fd_limit) < 0)
+    error (2, errno, "getrlimit");
+  fd_limit.rlim_cur = 32;
   if (setrlimit (RLIMIT_NOFILE, &fd_limit) < 0)
     error (2, errno, "setrlimit");
 
diff --git a/tests/dwfl-proc-attach.c b/tests/dwfl-proc-attach.c
index 102ba18..d02e9fc 100644
--- a/tests/dwfl-proc-attach.c
+++ b/tests/dwfl-proc-attach.c
@@ -97,7 +97,26 @@
   if (dwfl_getthreads (dwfl, thread_callback, &threads) != DWARF_CB_OK)
     error (-1, 0, "dwfl_getthreads failed: %s", dwfl_errmsg (-1));
 
+  dwfl_end (dwfl);
+
+  pthread_cancel (thread1);
+  pthread_cancel (thread2);
+  pthread_join (thread1, NULL);
+  pthread_join (thread2, NULL);
+
   return (threads == 3) ? 0 : -1;
 }
 
+/* HACK. This is a simple workaround for a combination of old glibc
+   and valgrind. libdw will try to dlopen libdebuginfod this causes
+   some unsuppressable memory leak warnings when the process is
+   multi-threaded under valgrind because of some bad backtraces.
+   So simply override dlopen and always return NULL so libdebuginfod
+   (and libcurl) are never loaded.  This test doesn't rely on
+   libdebuginfod anyway.  */
+void *dlopen (void)
+{
+  return NULL;
+}
+
 #endif /* __linux__ */
diff --git a/tests/leb128.c b/tests/leb128.c
new file mode 100644
index 0000000..47b57c0
--- /dev/null
+++ b/tests/leb128.c
@@ -0,0 +1,173 @@
+/* Test program for leb128
+   Copyright (C) 2020 Tom Tromey
+   This file is part of elfutils.
+
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   elfutils is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <config.h>
+#include <stddef.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <libdw.h>
+#include "../libdw/libdwP.h"
+#include "../libdw/memory-access.h"
+
+#define OK 0
+#define FAIL 1
+
+static const unsigned char v0[] = { 0x0 };
+static const unsigned char v1[] = { 0x1 };
+static const unsigned char v23[] = { 23 };
+static const unsigned char vm_1[] = { 0x7f };
+static const unsigned char vm_2[] = { 0x7e };
+static const unsigned char s127[] = { 0xff, 0x00 };
+static const unsigned char v128[] = { 0x80, 0x01 };
+static const unsigned char v129[] = { 0x81, 0x01 };
+static const unsigned char vm_127[] = { 0x81, 0x7f };
+static const unsigned char vm_128[] = { 0x80, 0x7f };
+static const unsigned char vm_129[] = { 0xff, 0x7e };
+static const unsigned char vhuge[] =
+  {
+    0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x0
+  };
+static const unsigned char most_positive[] =
+  {
+    0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0x3f
+  };
+static const unsigned char most_negative[] =
+  {
+    0x80, 0x80, 0x80, 0x80, 0x80,
+    0x80, 0x80, 0x80, 0x40
+  };
+static const unsigned char minus_one[] =
+  {
+    0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0x7f
+  };
+static const unsigned char int64_max_m1[] =
+  {
+    0xfe, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0x00
+  };
+static const unsigned char int64_min_p1[] =
+  {
+    0x81, 0x80, 0x80, 0x80, 0x80,
+    0x80, 0x80, 0x80, 0x80, 0x7f
+  };
+
+static int
+test_one_sleb (const unsigned char *data, size_t len, int64_t expect)
+{
+  int64_t value;
+  const unsigned char *p;
+
+  p = data;
+  get_sleb128 (value, p, p + len);
+  if (value != expect || p != data + len)
+    return FAIL;
+
+  p = data;
+  get_sleb128_unchecked (value, p);
+  if (value != expect || p != data + len)
+    return FAIL;
+
+  return OK;
+}
+
+static int
+test_sleb (void)
+{
+#define TEST(ARRAY, V)				      \
+  if (test_one_sleb (ARRAY, sizeof (ARRAY), V) != OK) \
+    return FAIL;
+
+  TEST (v0, 0);
+  TEST (v1, 1);
+  TEST (v23, 23);
+  TEST (vm_1, -1);
+  TEST (vm_2, -2);
+  TEST (s127, 127);
+  TEST (v128, 128);
+  TEST (v129, 129);
+  TEST (vm_127, -127);
+  TEST (vm_128, -128);
+  TEST (vm_129, -129);
+  TEST (vhuge, 9223372036854775807ll);
+  TEST (most_positive, 4611686018427387903ll);
+  TEST (most_negative, -4611686018427387904ll);
+  TEST (minus_one, -1);
+  TEST (int64_max_m1, INT64_MAX - 1);
+  TEST (int64_min_p1, INT64_MIN + 1);
+
+#undef TEST
+
+  return OK;
+}
+
+static int
+test_one_uleb (const unsigned char *data, size_t len, uint64_t expect)
+{
+  uint64_t value;
+  const unsigned char *p;
+
+  p = data;
+  get_uleb128 (value, p, p + len);
+  if (value != expect || p != data + len)
+    return FAIL;
+
+  p = data;
+  get_uleb128_unchecked (value, p);
+  if (value != expect || p != data + len)
+    return FAIL;
+
+  return OK;
+}
+
+static int
+test_uleb (void)
+{
+#define TEST(ARRAY, V)				      \
+  if (test_one_uleb (ARRAY, sizeof (ARRAY), V) != OK) \
+    return FAIL;
+
+  TEST (v0, 0);
+  TEST (v1, 1);
+  TEST (v23, 23);
+  TEST (vm_1, 127);
+  TEST (vm_2, 126);
+  TEST (s127, 127);
+  TEST (v128, 128);
+  TEST (v129, 129);
+  TEST (vm_127, 16257);
+  TEST (vm_128, 16256);
+  TEST (vm_129, 16255);
+  TEST (vhuge, 9223372036854775807ull);
+  TEST (most_positive, 4611686018427387903ull);
+  TEST (most_negative, 4611686018427387904ull);
+  TEST (minus_one, 9223372036854775807ull);
+  TEST (int64_max_m1, INT64_MAX - 1);
+  TEST (int64_min_p1, INT64_MIN + 1);
+
+#undef TEST
+
+  return OK;
+}
+
+int
+main (void)
+{
+  return test_sleb () || test_uleb ();
+}
diff --git a/tests/read_unaligned.c b/tests/read_unaligned.c
new file mode 100644
index 0000000..15e0c00
--- /dev/null
+++ b/tests/read_unaligned.c
@@ -0,0 +1,564 @@
+/* Test program for read_[type]_unaligned.
+   Copyright (C) 2020, Red Hat Inc.
+   This file is part of elfutils.
+
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   elfutils is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include <assert.h>
+#include <endian.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+
+#include "../libdw/libdwP.h"
+#include "../libdw/memory-access.h"
+
+union u8
+{
+  uint8_t v;
+  unsigned char c[1];
+};
+
+union s8
+{
+  int8_t v;
+  unsigned char c[1];
+};
+
+union u16
+{
+  uint16_t v;
+  unsigned char c[2];
+};
+
+union s16
+{
+  int16_t v;
+  unsigned char c[2];
+};
+
+union u24
+{
+  uint32_t v:24;
+  unsigned char c[3];
+} __attribute__((packed));
+
+union u32
+{
+  uint32_t v;
+  unsigned char c[4];
+};
+
+union s32
+{
+  int32_t v;
+  unsigned char c[4];
+};
+
+union u64
+{
+  uint64_t v;
+  unsigned char c[8];
+};
+
+union s64
+{
+  uint64_t v;
+  unsigned char c[8];
+};
+
+uint8_t u8_nums[] =
+  {
+   0,
+   1,
+   UINT8_MAX / 2 - 1,
+   UINT8_MAX / 2,
+   UINT8_MAX / 2 + 1,
+   UINT8_MAX,
+   UINT8_MAX -1
+  };
+
+int8_t s8_nums[] =
+  {
+   INT8_MIN,
+   INT8_MIN + 1,
+   -1,
+   0,
+   1,
+   INT8_MAX,
+   INT8_MAX - 1
+  };
+
+uint16_t u16_nums[] =
+  {
+   0,
+   1,
+   UINT16_MAX / 2 - 1,
+   UINT16_MAX / 2,
+   UINT16_MAX / 2 + 1,
+   UINT16_MAX,
+   UINT16_MAX -1
+  };
+
+int16_t s16_nums[] =
+  {
+   INT16_MIN,
+   INT16_MIN + 1,
+   -1,
+   0,
+   1,
+   INT16_MAX,
+   INT16_MAX - 1
+  };
+
+#define UINT24_MAX 0xffffff
+
+uint32_t u24_nums[] =
+  {
+   0,
+   1,
+   UINT24_MAX / 2 - 1,
+   UINT24_MAX / 2,
+   UINT24_MAX / 2 + 1,
+   UINT24_MAX,
+   UINT24_MAX -1
+  };
+
+uint32_t u32_nums[] =
+  {
+   0,
+   1,
+   UINT32_MAX / 2 - 1,
+   UINT32_MAX / 2,
+   UINT32_MAX / 2 + 1,
+   UINT32_MAX,
+   UINT32_MAX -1
+  };
+
+int32_t s32_nums[] =
+  {
+   INT32_MIN,
+   INT32_MIN + 1,
+   -1,
+   0,
+   1,
+   INT32_MAX,
+   INT32_MAX - 1
+  };
+
+uint64_t u64_nums[] =
+  {
+   0,
+   1,
+   UINT64_MAX / 2 - 1,
+   UINT64_MAX / 2,
+   UINT64_MAX / 2 + 1,
+   UINT64_MAX,
+   UINT64_MAX -1
+  };
+
+int64_t s64_nums[] =
+  {
+   INT64_MIN,
+   INT64_MIN + 1,
+   -1,
+   0,
+   1,
+   INT64_MAX,
+   INT64_MAX - 1
+  };
+
+static unsigned char le_mem[] =
+  {
+    /* u8 */
+    0x00,
+    0x01,
+    0x7e,
+    0x7f,
+    0x80,
+    0xff,
+    0xfe,
+    /* s8 */
+    0x80,
+    0x81,
+    0xff,
+    0x00,
+    0x01,
+    0x7f,
+    0x7e,
+    /* u16 */
+    0x00, 0x00,
+    0x01, 0x00,
+    0xfe, 0x7f,
+    0xff, 0x7f,
+    0x00, 0x80,
+    0xff, 0xff,
+    0xfe, 0xff,
+    /* s16 */
+    0x00, 0x80,
+    0x01, 0x80,
+    0xff, 0xff,
+    0x00, 0x00,
+    0x01, 0x00,
+    0xff, 0x7f,
+    0xfe, 0x7f,
+    /* u24 */
+    0x00, 0x00, 0x00,
+    0x01, 0x00, 0x00,
+    0xfe, 0xff, 0x7f,
+    0xff, 0xff, 0x7f,
+    0x00, 0x00, 0x80,
+    0xff, 0xff, 0xff,
+    0xfe, 0xff, 0xff,
+    /* u32 */
+    0x00, 0x00, 0x00, 0x00,
+    0x01, 0x00, 0x00, 0x00,
+    0xfe, 0xff, 0xff, 0x7f,
+    0xff, 0xff, 0xff, 0x7f,
+    0x00, 0x00, 0x00, 0x80,
+    0xff, 0xff, 0xff, 0xff,
+    0xfe, 0xff, 0xff, 0xff,
+    /* s32 */
+    0x00, 0x00, 0x00, 0x80,
+    0x01, 0x00, 0x00, 0x80,
+    0xff, 0xff, 0xff, 0xff,
+    0x00, 0x00, 0x00, 0x00,
+    0x01, 0x00, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0x7f,
+    0xfe, 0xff, 0xff, 0x7f,
+    /* u64 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    /* s64 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+    0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
+  };
+
+static unsigned char be_mem[] =
+  {
+    /* u8 */
+    0x00,
+    0x01,
+    0x7e,
+    0x7f,
+    0x80,
+    0xff,
+    0xfe,
+    /* s8 */
+    0x80,
+    0x81,
+    0xff,
+    0x00,
+    0x01,
+    0x7f,
+    0x7e,
+    /* u16 */
+    0x00, 0x00,
+    0x00, 0x01,
+    0x7f, 0xfe,
+    0x7f, 0xff,
+    0x80, 0x00,
+    0xff, 0xff,
+    0xff, 0xfe,
+    /* s16 */
+    0x80, 0x00,
+    0x80, 0x01,
+    0xff, 0xff,
+    0x00, 0x00,
+    0x00, 0x01,
+    0x7f, 0xff,
+    0x7f, 0xfe,
+    /* u24 */
+    0x00, 0x00, 0x00,
+    0x00, 0x00, 0x01,
+    0x7f, 0xff, 0xfe,
+    0x7f, 0xff, 0xff,
+    0x80, 0x00, 0x00,
+    0xff, 0xff, 0xff,
+    0xff, 0xff, 0xfe,
+    /* u32 */
+    0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x01,
+    0x7f, 0xff, 0xff, 0xfe,
+    0x7f, 0xff, 0xff, 0xff,
+    0x80, 0x00, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xfe,
+    /* s32 */
+    0x80, 0x00, 0x00, 0x00,
+    0x80, 0x00, 0x00, 0x01,
+    0xff, 0xff, 0xff, 0xff,
+    0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x01,
+    0x7f, 0xff, 0xff, 0xff,
+    0x7f, 0xff, 0xff, 0xfe,
+    /* u64 */
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+    /* s64 */
+    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
+    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+    0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
+  };
+
+int
+main (int argc, char **argv __attribute__((unused)))
+{
+  /* No arguments means check, otherwise Write out the memory array.  */
+  bool write = false;
+  if (argc > 1)
+    write = true;
+
+  bool is_le = (BYTE_ORDER == LITTLE_ENDIAN);
+
+  if (write)
+    {
+      if (is_le)
+	printf ("static unsigned char le_mem[] =\n");
+      else
+	printf ("static unsigned char be_mem[] =\n");
+      printf ("  {\n");
+    }
+
+  Dwarf dbg_le = { .other_byte_order = !is_le };
+  Dwarf dbg_be = { .other_byte_order = is_le };
+
+  unsigned char *p_le = le_mem;
+  unsigned char *p_be = be_mem;
+
+  union u8 u8;
+  if (write)
+    printf ("    /* u8 */\n");
+  for (size_t i = 0; i < sizeof (u8_nums) / sizeof (u8); i++)
+    {
+      if (write)
+	{
+	  u8.v = u8_nums[i];
+	  printf ("    0x%02" PRIx8 ",\n", u8.c[0]);
+	}
+      else
+	{
+	  uint8_t v = *p_le++;
+	  assert (v == u8_nums[i]);
+	  v = *p_be++;
+	  assert (v == u8_nums[i]);
+	}
+    }
+
+  union s8 s8;
+  if (write)
+    printf ("    /* s8 */\n");
+  for (size_t i = 0; i < sizeof (s8_nums) / sizeof (s8); i++)
+    {
+      if (write)
+	{
+	  s8.v = s8_nums[i];
+	  printf ("    0x%02" PRIx8 ",\n", s8.c[0]);
+	}
+      else
+	{
+	  int8_t v = *p_le++;
+	  assert (v == s8_nums[i]);
+	  v = *p_be++;
+	  assert (v == s8_nums[i]);
+	}
+    }
+
+  union u16 u16;
+  if (write)
+    printf ("    /* u16 */\n");
+  for (size_t i = 0; i < sizeof (u16_nums) / sizeof (u16); i++)
+    {
+      if (write)
+	{
+	  u16.v = u16_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", u16.c[0]);
+	  printf ("0x%02" PRIx8 ",\n", u16.c[1]);
+	}
+      else
+	{
+	  uint16_t v = read_2ubyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == u16_nums[i]);
+	  v = read_2ubyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == u16_nums[i]);
+	}
+    }
+
+  union s16 s16;
+  if (write)
+    printf ("    /* s16 */\n");
+  for (size_t i = 0; i < sizeof (s16_nums) / sizeof (s16); i++)
+    {
+      if (write)
+	{
+	  s16.v = s16_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", s16.c[0]);
+	  printf ("0x%02" PRIx8 ",\n", s16.c[1]);
+	}
+      else
+	{
+	  int16_t v = read_2sbyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == s16_nums[i]);
+	  v = read_2sbyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == s16_nums[i]);
+	}
+    }
+
+  union u24 u24;
+  if (write)
+    printf ("    /* u24 */\n");
+  for (size_t i = 0; i < sizeof (u24_nums) / sizeof (uint32_t); i++)
+    {
+      if (write)
+	{
+	  u24.v = u24_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", u24.c[0]);
+	  printf ("0x%02" PRIx8 ", ", u24.c[1]);
+	  printf ("0x%02" PRIx8 ",\n", u24.c[2]);
+	}
+      else
+	{
+	  uint32_t v = read_3ubyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == u24_nums[i]);
+	  v = read_3ubyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == u24_nums[i]);
+	}
+    }
+
+  union u32 u32;
+  if (write)
+    printf ("    /* u32 */\n");
+  for (size_t i = 0; i < sizeof (u32_nums) / sizeof (u32); i++)
+    {
+      if (write)
+	{
+	  u32.v = u32_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", u32.c[0]);
+	  printf ("0x%02" PRIx8 ", ", u32.c[1]);
+	  printf ("0x%02" PRIx8 ", ", u32.c[2]);
+	  printf ("0x%02" PRIx8 ",\n", u32.c[3]);
+	}
+      else
+	{
+	  uint32_t v = read_4ubyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == u32_nums[i]);
+	  v = read_4ubyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == u32_nums[i]);
+	}
+    }
+
+  union s32 s32;
+  if (write)
+    printf ("    /* s32 */\n");
+  for (size_t i = 0; i < sizeof (s32_nums) / sizeof (s32); i++)
+    {
+      if (write)
+	{
+	  s32.v = s32_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", s32.c[0]);
+	  printf ("0x%02" PRIx8 ", ", s32.c[1]);
+	  printf ("0x%02" PRIx8 ", ", s32.c[2]);
+	  printf ("0x%02" PRIx8 ",\n", s32.c[3]);
+	}
+      else
+	{
+	  int32_t v = read_4sbyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == s32_nums[i]);
+	  v = read_4sbyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == s32_nums[i]);
+	}
+    }
+
+  union u64 u64;
+  if (write)
+    printf ("    /* u64 */\n");
+  for (size_t i = 0; i < sizeof (u64_nums) / sizeof (u64); i++)
+    {
+      if (write)
+	{
+	  u64.v = u64_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", u64.c[0]);
+	  printf ("0x%02" PRIx8 ", ", u64.c[1]);
+	  printf ("0x%02" PRIx8 ", ", u64.c[2]);
+	  printf ("0x%02" PRIx8 ", ", u64.c[3]);
+	  printf ("0x%02" PRIx8 ", ", u64.c[4]);
+	  printf ("0x%02" PRIx8 ", ", u64.c[5]);
+	  printf ("0x%02" PRIx8 ", ", u64.c[6]);
+	  printf ("0x%02" PRIx8 ",\n", u64.c[7]);
+	}
+      else
+	{
+	  uint64_t v = read_8ubyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == u64_nums[i]);
+	  v = read_8ubyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == u64_nums[i]);
+	}
+    }
+
+  union s64 s64;
+  if (write)
+    printf ("    /* s64 */\n");
+  for (size_t i = 0; i < sizeof (s64_nums) / sizeof (s64); i++)
+    {
+      if (write)
+	{
+	  s64.v = s64_nums[i];
+	  printf ("    0x%02" PRIx8 ", ", s64.c[0]);
+	  printf ("0x%02" PRIx8 ", ", s64.c[1]);
+	  printf ("0x%02" PRIx8 ", ", s64.c[2]);
+	  printf ("0x%02" PRIx8 ", ", s64.c[3]);
+	  printf ("0x%02" PRIx8 ", ", s64.c[4]);
+	  printf ("0x%02" PRIx8 ", ", s64.c[5]);
+	  printf ("0x%02" PRIx8 ", ", s64.c[6]);
+	  printf ("0x%02" PRIx8 ",\n", s64.c[7]);
+	}
+      else
+	{
+	  int64_t v = read_8sbyte_unaligned_inc (&dbg_le, p_le);
+	  assert (v == s64_nums[i]);
+	  v = read_8sbyte_unaligned_inc (&dbg_be, p_be);
+	  assert (v == s64_nums[i]);
+	}
+    }
+
+  if (write)
+    printf ("  };\n");
+  else
+    {
+      assert (p_le == le_mem + sizeof (le_mem));
+      assert (p_be == be_mem + sizeof (be_mem));
+    }
+
+  return 0;
+}
diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh
index 1422bd6..87b16c9 100755
--- a/tests/run-allregs.sh
+++ b/tests/run-allregs.sh
@@ -2585,75 +2585,6 @@
 	 63: $fpcr (fpcr), unsigned 64 bits
 EOF
 
-regs_test testfile60 <<\EOF
-integer registers:
-	  0: r0 (r0), signed 64 bits
-	  1: r1 (r1), signed 64 bits
-	  2: r2 (r2), signed 64 bits
-	  3: r3 (r3), signed 64 bits
-	  4: r4 (r4), signed 64 bits
-	  5: r5 (r5), signed 64 bits
-	  6: r6 (r6), signed 64 bits
-	  7: r7 (r7), signed 64 bits
-	  8: r8 (r8), signed 64 bits
-	  9: r9 (r9), signed 64 bits
-	 10: r10 (r10), signed 64 bits
-	 11: r11 (r11), signed 64 bits
-	 12: r12 (r12), signed 64 bits
-	 13: r13 (r13), signed 64 bits
-	 14: r14 (r14), signed 64 bits
-	 15: r15 (r15), signed 64 bits
-	 16: r16 (r16), signed 64 bits
-	 17: r17 (r17), signed 64 bits
-	 18: r18 (r18), signed 64 bits
-	 19: r19 (r19), signed 64 bits
-	 20: r20 (r20), signed 64 bits
-	 21: r21 (r21), signed 64 bits
-	 22: r22 (r22), signed 64 bits
-	 23: r23 (r23), signed 64 bits
-	 24: r24 (r24), signed 64 bits
-	 25: r25 (r25), signed 64 bits
-	 26: r26 (r26), signed 64 bits
-	 27: r27 (r27), signed 64 bits
-	 28: r28 (r28), signed 64 bits
-	 29: r29 (r29), signed 64 bits
-	 30: r30 (r30), signed 64 bits
-	 31: r31 (r31), signed 64 bits
-	 32: r32 (r32), signed 64 bits
-	 33: r33 (r33), signed 64 bits
-	 34: r34 (r34), signed 64 bits
-	 35: r35 (r35), signed 64 bits
-	 36: r36 (r36), signed 64 bits
-	 37: r37 (r37), signed 64 bits
-	 38: r38 (r38), signed 64 bits
-	 39: r39 (r39), signed 64 bits
-	 40: r40 (r40), signed 64 bits
-	 41: r41 (r41), signed 64 bits
-	 42: r42 (r42), signed 64 bits
-	 43: r43 (r43), signed 64 bits
-	 44: r44 (r44), signed 64 bits
-	 45: r45 (r45), signed 64 bits
-	 46: r46 (r46), signed 64 bits
-	 47: r47 (r47), signed 64 bits
-	 48: r48 (r48), signed 64 bits
-	 49: r49 (r49), signed 64 bits
-	 50: r50 (r50), signed 64 bits
-	 51: r51 (r51), signed 64 bits
-	 52: r52 (r52), signed 64 bits
-	 53: tp (tp), address 64 bits
-	 54: sp (sp), address 64 bits
-	 55: lr (lr), address 64 bits
-	 56: sn (sn), unsigned 64 bits
-	 57: idn0 (idn0), unsigned 64 bits
-	 58: idn1 (idn1), unsigned 64 bits
-	 59: udn0 (udn0), unsigned 64 bits
-	 60: udn1 (udn1), unsigned 64 bits
-	 61: udn2 (udn2), unsigned 64 bits
-	 62: udn3 (udn3), unsigned 64 bits
-	 63: zero (zero), unsigned 64 bits
-	 64: pc (pc), address 64 bits
-EOF
-
 regs_test testfile61 <<\EOF
 integer registers:
 	  0: r0 (r0), signed 32 bits
diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
index 730bb0e..48dbc7d 100755
--- a/tests/run-debuginfod-find.sh
+++ b/tests/run-debuginfod-find.sh
@@ -95,6 +95,10 @@
   fi
 }
 
+# create a 000 empty .rpm file to evoke a metric-visible error
+touch R/nothing.rpm
+chmod 000 R/nothing.rpm
+
 env LD_LIBRARY_PATH=$ldpath DEBUGINFOD_URLS= ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -F -R -d $DB -p $PORT1 -t0 -g0 --fdcache-fds 1 --fdcache-mbs 2 -Z .tar.xz -Z .tar.bz2=bzcat -v R F Z L > vlog4 2>&1 &
 PID1=$!
 tempfiles vlog4
@@ -240,13 +244,13 @@
 
 cp -rvp ${abs_srcdir}/debuginfod-tars Z
 kill -USR1 $PID1
-# All rpms need to be in the index
-rpms=$(find R -name \*rpm | wc -l)
-wait_ready $PORT1 'scanned_total{source=".rpm archive"}' $rpms
+# All rpms need to be in the index, except the dummy permission-000 one
+rpms=$(find R -name \*rpm | grep -v nothing | wc -l)
+wait_ready $PORT1 'scanned_files_total{source=".rpm archive"}' $rpms
 txz=$(find Z -name \*tar.xz | wc -l)
-wait_ready $PORT1 'scanned_total{source=".tar.xz archive"}' $txz
+wait_ready $PORT1 'scanned_files_total{source=".tar.xz archive"}' $txz
 tb2=$(find Z -name \*tar.bz2 | wc -l)
-wait_ready $PORT1 'scanned_total{source=".tar.bz2 archive"}' $tb2
+wait_ready $PORT1 'scanned_files_total{source=".tar.bz2 archive"}' $tb2
 
 kill -USR1 $PID1  # two hits of SIGUSR1 may be needed to resolve .debug->dwz->srefs
 # Expect all source files found in the rpms (they are all called hello.c :)
@@ -255,7 +259,7 @@
 mkdir extracted
 cd extracted
 subdir=0;
-newrpms=$(find ../R -name \*\.rpm)
+newrpms=$(find ../R -name \*\.rpm | grep -v nothing)
 for i in $newrpms; do
     subdir=$[$subdir+1];
     mkdir $subdir;
@@ -341,7 +345,7 @@
 rm -r R/debuginfod-rpms/rhel6/*
 kill -USR2 $PID1  # groom cycle
 # Expect 3 rpms to be deleted by the groom
-# 1 groom already took place at/soon-after startup, so -USR2 makes 2
+# 1 groom cycle already took place at/soon-after startup, so -USR2 makes 2
 wait_ready $PORT1 'thread_work_total{role="groom"}' 2
 wait_ready $PORT1 'groom{statistic="file d/e"}' 3
 
@@ -353,6 +357,38 @@
 
 ########################################################################
 
+# PR26810: Now rename some files in the R directory, then rescan, so
+# there are two copies of the same buildid in the index, one for the
+# no-longer-existing file name, and one under the new name.
+
+# run a groom cycle to force server to drop its fdcache
+kill -USR2 $PID1  # groom cycle
+wait_ready $PORT1 'thread_work_total{role="groom"}' 3
+# move it around a couple of times to make it likely to hit a nonexistent entry during iteration
+mv R/debuginfod-rpms/rhel7 R/debuginfod-rpms/rhel7renamed
+kill -USR1 $PID1  # scan cycle
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 6
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+mv R/debuginfod-rpms/rhel7renamed R/debuginfod-rpms/rhel7renamed2
+kill -USR1 $PID1  # scan cycle
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 7
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+mv R/debuginfod-rpms/rhel7renamed2 R/debuginfod-rpms/rhel7renamed3
+kill -USR1 $PID1  # scan cycle
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 8
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+
+# retest rhel7
+archive_test bc1febfd03ca05e030f0d205f7659db29f8a4b30 /usr/src/debug/hello-1.0/hello.c $SHA
+archive_test f0aa15b8aba4f3c28cac3c2a73801fefa644a9f2 /usr/src/debug/hello-1.0/hello.c $SHA
+
+egrep '(libc.error.*rhel7)|(bc1febfd03ca)|(f0aa15b8aba)' vlog4
+
+########################################################################
+
 # Federation mode
 
 # find another unused port
@@ -383,9 +419,9 @@
     kill -USR1 $PID2
     # All debs need to be in the index
     debs=$(find D -name \*.deb | wc -l)
-    wait_ready $PORT2 'scanned_total{source=".deb archive"}' `expr $debs`
+    wait_ready $PORT2 'scanned_files_total{source=".deb archive"}' `expr $debs`
     ddebs=$(find D -name \*.ddeb | wc -l)
-    wait_ready $PORT2 'scanned_total{source=".ddeb archive"}' `expr $ddebs`
+    wait_ready $PORT2 'scanned_files_total{source=".ddeb archive"}' `expr $ddebs`
 
     # ubuntu
     archive_test f17a29b5a25bd4960531d82aa6b07c8abe84fa66 "" ""
@@ -440,6 +476,10 @@
 curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_duration_milliseconds_sum'
 curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count'
 curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_sum'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'fdcache_'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'error_count'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'traversed_total'
+curl -s http://127.0.0.1:$PORT1/metrics | grep 'scanned_bytes_total'
 
 # And generate a few errors into the second debuginfod's logs, for analysis just below
 curl -s http://127.0.0.1:$PORT2/badapi > /dev/null || true
diff --git a/tests/run-readelf-compressed-zstd.sh b/tests/run-readelf-compressed-zstd.sh
new file mode 100755
index 0000000..9620809
--- /dev/null
+++ b/tests/run-readelf-compressed-zstd.sh
@@ -0,0 +1,39 @@
+#! /bin/sh
+# Copyright (C) 2018 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+if ! grep -q -F '#define USE_ZSTD' ${abs_top_builddir}/config.h; then
+  echo "elfutils built without zstd support"
+  exit 77
+fi
+
+# See run-strip-reloc.sh
+testfiles hello_i386.ko
+
+tempfiles hello_i386.ko.zst readelf.out.1 readelf.out.2
+
+testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko > readelf.out.1
+zstd hello_i386.ko
+testrun ${abs_top_builddir}/src/readelf -a hello_i386.ko.zst > readelf.out.2
+
+diff -u readelf.out.1 readelf.out.2
+if [ $? != 0 ]; then
+  exit 1;
+fi
+
+exit 0
diff --git a/tests/test-wrapper.sh b/tests/test-wrapper.sh
index 09b4d49..c5d3f15 100755
--- a/tests/test-wrapper.sh
+++ b/tests/test-wrapper.sh
@@ -44,6 +44,7 @@
 *.sh)
   export built_library_path program_transform_name elfutils_testrun
   export elfutils_tests_rpath
+  is_shell_script="yes"
   ;;
 *)
   if [ $elfutils_testrun = built ]; then
@@ -55,6 +56,7 @@
     LD_LIBRARY_PATH="${libdir}:${libdir}/elfutils$old_path"
   fi
   export LD_LIBRARY_PATH
+  is_shell_script="no"
   ;;
 esac
 
@@ -62,4 +64,10 @@
   export VALGRIND_CMD
 fi
 
-exec "$@"
+# When it is a run-*.sh script the VALGRIND_CMD will be passed on
+# otherwise we'll need to run the binary explicitly under valgrind.
+if [ "x$is_shell_script" = xyes ]; then
+  exec "$@"
+else
+  exec $VALGRIND_CMD "$@"
+fi
diff --git a/tests/testfile60.bz2 b/tests/testfile60.bz2
deleted file mode 100755
index 6a0cd7b..0000000
--- a/tests/testfile60.bz2
+++ /dev/null
Binary files differ
diff --git a/tests/vdsosyms.c b/tests/vdsosyms.c
index 7bfa738..83ab034 100644
--- a/tests/vdsosyms.c
+++ b/tests/vdsosyms.c
@@ -103,6 +103,8 @@
   if (dwfl_getmodules (dwfl, module_callback, NULL, 0) != 0)
     error (1, 0, "dwfl_getmodules: %s", dwfl_errmsg (-1));
 
+  dwfl_end (dwfl);
+
   /* No symbols is ok, then we haven't seen the vdso at all on this arch.  */
   return vdso_syms >= 0 ? 0 : -1;
 }