Merge tag 'elfutils-0.190' into main

elfutils 0.190 release

* tag 'elfutils-0.190':
  Prepare for 0.190
  The default branch is now 'main'
  libelf/elf_newscn.c: fix build failure against gcc-14 (-Walloc-size)
  tests: Optionally dump all units in dwarf-getmacros
  tests: Handle DW_MACRO_{define,undef}_{strx,sup} in dwarf-getmacros
  readelf: Support .gdb_index version 9
  libdw, libdwfl: Save original path of ELF file
  debuginfod-client.c: Don't print empty line in header_callback
  dwfl_offline_section_address: replace asserts with early return
  libdw: Recognize .debug_[ct]u_index sections in dwarf_elf_begin
  libdw: ignore really large discriminator
  CONTRIBUTING: Update ChangeLog policy, mention patchwork and try bots
  PR 30000: debuginfod-find should have a source-list verb
  CONTRIBUTING: Switch from real name policy to know identity policy
  libelf: Make elf32_getchdr and elf64_getchdr thread-safe
  libelf: Fix elf_end deadlock
  libelf: Make elf_version thread-safe
  lib: Add new once_define and once macros to eu-config.h
  libelf: Sync elf.h from glibc
  PR30962: debuginfod: full paths for X-DEBUGINFOD-FILE/ARCHIVE response headers
  libdw: Skip zero entries in aranges
  strip: Clean up a bit more after errors
  libdw: Handle split DWARF in dwarf_macro_getsrcfiles
  libdw: Fix dwarf_macro_getsrcfiles for DWARF 5
  libdw: Handle other string forms in dwarf_macro_param2
  libdw: Handle DW_AT_ranges in split DWARF 5 skeleton in dwarf_ranges
  libdw: Handle split DWARF in dwarf_entrypc
  libdw: Make try_split_file static
  PR30879: intermittent debuginfod crash with unhandled exception
  libelf: tdelete dummy key if anything goes wrong setting up rawchunk
  libelf: fix typos in comment
  tests: Fix system_elf_gelf_test build without system libelf.h
  PR30809: improve debuginfod client progress-callback parameters
  backends: Update list of LoongArch relocations
  libelf: Sync elf.h from Glibc
  libelf, readelf, elflint: Add RELR support
  libelf: Remove elf_scncnt from libelf.map
  libelf: Free and clear rawdata_base and zdata_base consistently
  tests: run-lfs-symbols.sh needs gawk
  SECURITY: new file
  libelf: Replace list of elf_getdata_rawchunk results with a tree
  backends: Update list of RISC-V relocations
  libelf: Sync elf.h from glibc
  debuginfod: Fix formatting in debuginfod_config_cache
  tests: Use -N for run-readelf-self.sh.
  tests: Split up run-strip-reloc.sh test in three subtests
  tests: Really split run-copymany-sections.sh into separate tests
  tests: Split run-copymany-sections.sh into separate tests
  tests: Use readelf -N -w in run-strip-reloc.sh
  tests: Add a bit less and slightly smaller sections for addsections
  debuginfod: PR29696: enlarge run-debuginfod-federation-metrics.sh workload again
  debuginfod: PR29696: Removed secondary fd close in cache config causing a race condition
  report_r_debug: handle `-z separate-code' and find more modules
  PR30316: debuginfod wal checkpointing
  debuginfod: PR30378: better compression for _files table
  backends: Add set_initial_registers_tid callback for LoongArch
  backends: Add core_note callback for LoongArch
  backends: Add frame pointer unwinding for LoongArch
  backends: Add initial return value location support for LoongArch
  backends: Add abi_cfi and register_info callbacks for LoongArch
  elfcompress: Don't compress if section already compressed unless forced
  libdwfl: Fix memory leak in unzip()
  PR30377: fix debuginfod -r -X combination
  testsuite: Avoid C99 compatibility issues in run-native-test.sh
  readelf: display dynamic symtab without section headers
  tests: Limit the number of concurrent requests in debuginfod-federation
  readelf: Handle NULL shdr in section_name
  backends: Check results for NULL early in dwarf_peeled_die_type
  PR30348: debuginfod: retry partial archive scans
  backends: add checks for _GLOBAL_OFFSET_TABLE_ on loongarch
  backends: Add new relocation type handling for LoongArch
  libelf: Sync elf.h from glibc.
  debuginfod: When retrieving files from cache, update atime manually
  debuginfod: Don't touch access time of new files
  debuginfod-client.c: Avoid sscanf on mixed-case component of string
  nuke a top-level ChangeLog blurb that duplicated the debuginfod/ChangeLog
  debuginfod: Replace futimes with futimens
  debuginfod-client.c: Fix download size not correctly fallbacks to x-debuginfod-size header
  LoongArch: implemented a basic machine flag check
  debuginfod-client.c: Skip empty file creation for cancelled queries
  tests: skip '(null)' symname frames in backtrace tests
  configure.ac contains Bashisms
  Fix static build when zstd is enabled for libelf

Change-Id: Ic46cacc727d5f6f26023419995cc5b4fb9102001
Signed-off-by: Matthias Maennich <maennich@google.com>
diff --git a/CONTRIBUTING b/CONTRIBUTING
index bb48975..5614728 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -45,13 +45,28 @@
 
 Signed-off-by: Random J Developer <random@developer.example.org>
 
-using your real name (sorry, no pseudonyms or anonymous contributions.)
+using a known identity (sorry, no anonymous contributions.)
+The name you use as your identity should not be an anonymous id
+or false name that misrepresents who you are.
 
 git commit --signoff will add such a Signed-off-by line at the end of
 the commit log message for you.
 
-The ideal patch contains a ChangeLog entry and a test case for the
-bug fixed or feature added.
+The ideal patch contains a ChangeLog entry for the commit message and
+a test case for the bug fixed or feature added.
+
+The commit message is expected to start with a one line summary of
+what the patch does, prefixed with the main subdir the patch applies
+to. e.g libelf: Rewind the elf_frob function bar definitions.
+
+Finally please include an ChangeLog entry explicitly listing the files
+and what changed in each of them in the commit message. This will help
+a reviewer understand which changes are expected (and which might be
+accidential). Try to follow the GNU Change Log style:
+https://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html
+Note that elfutils previously maintained separate ChangeLog
+files. These are no longer used. All changes should be documented in
+the git commit message.
 
 The testsuite (make check) is expected to have zero failing tests.
 Do not knowingly add tests that FAIL. If there are architectures or
@@ -69,6 +84,22 @@
 to the project will review it, give feedback, and if perfect they
 will commit it for you.
 
+All patches sent to the mailing list are tracked at
+https://patchwork.sourceware.org/project/elfutils/list/
+
+To use this from the command line you can use git-pw
+https://patchwork.readthedocs.io/projects/git-pw/en/latest/
+
+For using it with git-pw use these .git/config settings:
+  [pw]
+    server = https://patchwork.sourceware.org/api/1.2/
+    project = elfutils
+    token = <hex-token>
+    states = committed,accepted,superseded,deferred,rejected,under-review
+
+If you would like to help maintain the pending patch list your
+patchwork account can be added as maintainer for the elfutils project.
+
 You can become a maintainer/committer yourself after you have provided
 at least a handful of accepted patches and agree to the guidelines in
 this document for creating, reviewing, accepting and committing patches.
@@ -96,10 +127,15 @@
 committers may also create git branches starting with <nickname>/...
 patches on these branches are works in progress, so might not be perfect
 yet, but should follow the above guidelines as much as possible and should
-be aimed at integration into master. For merging a branch into master
+be aimed at integration into main. For merging a branch into main
 the same process as above should be followed by posting the patches
 to the list first.
 
+Note that a branch starting with <nickname>/try... will be picked up
+by the Sourceware buildbot and can be used to test your patches before
+merging into the main branch:
+https://builder.sourceware.org/buildbot/#/builders?tags=elfutils-try
+
 committers/maintainers who repeatedly ignore the above guidelines,
 are hostile or offensive towards other committers or contributors,
 and don't correct their behavior after being asked by other committers
diff --git a/ChangeLog b/ChangeLog
index 10c2300..6aed95b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2023-03-27  Di Chen  <dichen@redhat.com>
+
+	* NEWS: Support readelf -Ds for using dynamic segment to
+	print symbol table.
+
 2023-03-03  Mark Wielaard  <mark@klomp.org>
 
 	* NEWS: Add ELFCOMPRESS_ZSTD support for libelf and elfcompress.
diff --git a/METADATA b/METADATA
index 61a4ee4..7fd2f2d 100644
--- a/METADATA
+++ b/METADATA
@@ -12,12 +12,12 @@
     type: GIT
     value: "git://sourceware.org/git/elfutils.git"
   }
-  version: "elfutils-0.189"
+  version: "elfutils-0.190"
   license_type: BY_EXCEPTION_ONLY
   license_note: "Would be RESTRICTED save for doc/COPYING-GFDL"
   last_upgrade_date {
-    year: 2023
-    month: 11
-    day: 2
+    year: 2024
+    month: 01
+    day: 24
   }
 }
diff --git a/Makefile.am b/Makefile.am
index e92e05c..41badfd 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -29,7 +29,7 @@
 SUBDIRS = config lib libelf libcpu backends libebl libdwelf libdwfl libdw \
 	  libasm debuginfod src po doc tests
 
-EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING \
+EXTRA_DIST = elfutils.spec GPG-KEY NOTES CONTRIBUTING SECURITY \
 	     COPYING COPYING-GPLV2 COPYING-LGPLV3
 
 # Make sure the test install uses lib64 when $LIB will yield lib64.
diff --git a/NEWS b/NEWS
index 16e37ec..0420d3b 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,28 @@
+Version 0.190 "Woke!"
+
+CONTRIBUTING: Switch from real name policy to known identity policy.
+              Updated ChangeLog policy (no more separate ChangeLog files).
+              There is a SECURITY bug policy now.
+              The default branch is now 'main'.
+
+libelf: Add RELR support.
+
+libdw: Recognize .debug_[ct]u_index sections
+
+readelf: Support readelf -Ds, --use-dynamic --symbol.
+         Support .gdb_index version 9
+
+scrlines: New tool that compiles a list of source files associated
+          with a specified dwarf/elf file.
+
+debuginfod: Schema change (reindexing required, sorry!) for a 60%
+            compression in filename representation, which was a large
+            part of the sqlite index; also, more deliberate sqlite
+            -wal management during scanning using the
+            --scan-checkpoint option.
+
+backends: Various LoongArch updates.
+
 Version 0.189 "Don't deflate!"
 
 configure: eu-nm, eu-addr2line and eu-stack can provide demangled symbols
diff --git a/README b/README
index 06a9fcd..690febd 100644
--- a/README
+++ b/README
@@ -29,3 +29,5 @@
 See the CONTRIBUTING file for how to propose patches to the code.
 
 See the NOTES files for some design decisions and notes.
+
+See the SECURITY file for defining and handling security-sensitive bugs.
diff --git a/SECURITY b/SECURITY
new file mode 100644
index 0000000..677802c
--- /dev/null
+++ b/SECURITY
@@ -0,0 +1,56 @@
+
+The elfutils library and utilities aim to be generally robust and
+reliable.  However, elfutils routinely processes complex binary
+structured data.  This makes the code intricate and sometimes brittle.
+While elfutils developers use a variety of static and dynamic checker
+software (valgrind, sanitizers) in testing, bugs may remain.  Some of
+these bugs may have security-related implications.
+
+
+While many errors are cleanly detected at runtime, it is possible that
+vulnerabilities exist that could be exploitable.  These may arise from
+crafted / fuzzed / erroneous inputs, or perhaps even from valid inputs
+with unforseen characteristics.  Therefore, to minimize risks, users
+of elfutils tools and libraries should consider measures such as:
+
+- avoiding running complex elfutils analysis on untrustworthy inputs
+- avoiding running elfutils tools as privileged processes
+- applying common platform level protection mechanisms such as
+  selinux, syscall filtering, hardened compilation, etc.
+
+Since most elfutils tools are run in short-lived, local, interactive,
+development context rather than remotely "in production", we generally
+treat malfunctions as ordinary bugs rather than security vulnerabilities.
+
+
+Elfutils includes one network client/server: debuginfod.  The
+debuginfod man page contains a SECURITY section outlining the general
+risks.  tl;dr: many classes of server problems are delegated to
+front-end proxies and curated elf/dwarf archives of the operator;
+others to careful configuration of the debuginfod client.  These are
+not generally reportable as security vulnerabilities.  However, we are
+likely to accept security vulnerability reports related to:
+
+- availability: e.g., remotely exploitable server crash, but not
+  routine resource exhaustion or overload; client crash due to
+    unexpected valid traffic from trusted server
+
+- confidentiality: e.g., allowing the server to expose one client's
+  traffic to another client
+
+- integrity: e.g., causing the server to send erroneous
+  elf/dwarf/source data across the webapi; causing the client to
+    corrupt its cache to lose file integrity
+
+We welcome reports that are tangential to any of these subjects.
+
+Please report bugs via any of:
+- email to <elfutils-devel@sourceware.org>
+- https://sourceware.org/bugzilla/enter_bug.cgi?product=elfutils
+
+After considering the above exclusions, please report suspected
+security vulnerabilities confidentially via any of:
+
+- email to <mark@klomp.org>
+- email to <fche@elastic.org>
+- email to <secalert@redhat.com>
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 81f0831..ddb4e0a 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,43 @@
+2023-05-09  Youling Tang  <tangyouling@loongson.cn>
+
+	* Makefile.am (loongarch_SRCS): Add loongarch_initreg.c.
+	* loongarch_initreg.c: New file.
+	* loongarch_init.c (loongarch_init): Hook set_initial_registers_tid.
+
+2023-04-07  Youling Tang  <tangyouling@loongson.cn>
+
+	* Makefile.am (loongarch_SRCS): Add loongarch_corenote.c.
+	* loongarch_init.c (loongarch_init): Hook core_note.
+	* loongarch_corenote.c: New file.
+
+2023-04-07  Youling Tang  <tangyouling@loongson.cn>
+
+	* Makefile.am (loongarch_SRCS): Add loongarch_unwind.c.
+	* loongarch_init.c (loongarch_init): Hook unwind.
+	* loongarch_unwind.c: New file.
+
+2023-04-07  Youling Tang  <tangyouling@loongson.cn>
+
+	* Makefile.am (loongarch_SRCS): Add loongarch_retval.c.
+	* loongarch_init.c (loongarch_init): Hook return_value_location.
+	* loongarch_retval.c: New file.
+
+2023-04-07  Youling Tang  <tangyouling@loongson.cn>
+
+	* Makefile.am (loongarch_SRCS): Add loongarch_cfi.c and loongarch_regs.c.
+	* loongarch_cfi.c: New file.
+	* loongarch_regs.c: Likewise.
+	* loongarch_init.c (loongarch_init): Hook register_info and abi_cfi.
+
+2023-04-01  Youling Tang  <tangyouling@loongson.cn>
+
+	* loongarch_init.c (loongarch_init): Hook check_special_symbol.
+	* loongarch_symbol.c (loongarch_check_special_symbol): New function.
+
+2023-04-01  Youling Tang  <tangyouling@loongson.cn>
+
+	* loongarch_reloc.def: Add RELOC_TYPE B16 to RELAX.
+
 2023-02-07  Mark Wielaard  <mark@klomp.org>
 
 	* libebl_CPU.h (dwarf_peeled_die_type): Explicitly handle
diff --git a/backends/Makefile.am b/backends/Makefile.am
index f373e5f..bbb2aac 100644
--- a/backends/Makefile.am
+++ b/backends/Makefile.am
@@ -96,7 +96,9 @@
 csky_SRCS = csky_attrs.c csky_init.c csky_symbol.c csky_cfi.c \
 	    csky_regs.c csky_initreg.c csky_corenote.c
 
-loongarch_SRCS = loongarch_init.c loongarch_symbol.c
+loongarch_SRCS = loongarch_init.c loongarch_symbol.c loongarch_cfi.c \
+	    loongarch_regs.c loongarch_retval.c loongarch_initreg.c \
+	    loongarch_unwind.c loongarch_corenote.c
 
 arc_SRCS = arc_init.c arc_symbol.c
 
diff --git a/backends/libebl_CPU.h b/backends/libebl_CPU.h
index 3b2cc3e..d138f5f 100644
--- a/backends/libebl_CPU.h
+++ b/backends/libebl_CPU.h
@@ -66,15 +66,15 @@
     /* The function has no return value, like a `void' function in C.  */
     return 0;
 
+  if (result == NULL)
+    return -1;
+
   if (dwarf_formref_die (attr, result) == NULL)
     return -1;
 
   if (dwarf_peel_type (result, result) != 0)
     return -1;
 
-  if (result == NULL)
-    return -1;
-
   int tag = dwarf_tag (result);
   if (tag == DW_TAG_unspecified_type)
     return 0; /* Treat an unspecified type as if there was no type.  */
diff --git a/backends/loongarch_cfi.c b/backends/loongarch_cfi.c
new file mode 100644
index 0000000..5f3cd2c
--- /dev/null
+++ b/backends/loongarch_cfi.c
@@ -0,0 +1,83 @@
+/* LoongArch ABI-specified defaults for DWARF CFI.
+   Copyright (C) 2023 OpenAnolis community LoongArch SIG.
+   Copyright (C) 2023 Loongson Technology Corporation Limted.
+   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 <dwarf.h>
+
+#define BACKEND loongarch_
+#include "libebl_CPU.h"
+
+/* LoongArch ELF ABI specification:
+https://loongson.github.io/LoongArch-Documentation/LoongArch-ELF-ABI-EN.html#_register_convention
+*/
+int
+loongarch_abi_cfi (Ebl *ebl __attribute__ ((unused)), Dwarf_CIE *abi_info)
+{
+  static const uint8_t abi_cfi[] =
+    {
+      /* The initial Canonical Frame Address is the value of the
+         Stack Pointer ($r3) as setup in the previous frame. */
+      DW_CFA_def_cfa, ULEB128_7 (3), ULEB128_7 (0),
+
+      /* The Stack Pointer ($r3) is restored from CFA address by default.  */
+      DW_CFA_val_offset, ULEB128_7 (3), ULEB128_7 (0),
+
+#define SV(n) DW_CFA_same_value, ULEB128_7 (n)
+      /* The return address register contains the return address setup by
+	 caller.  */
+      SV (1),
+
+      /* Callee-saved registers $s0-$s7.  */
+      SV (23), SV (24), SV (25), SV (26), SV (27), SV (28),
+      SV (29), SV (30), SV (31),
+
+      /* The Frame Pointer ($fp, $r22) */
+      SV(22),
+
+      /* Callee-saved registers $fs0-$fs7.  */
+      SV (56), SV (57), SV (58), SV (59), SV (60), SV (61),
+      SV (62), SV (63),
+#undef SV
+
+      /* XXX Note: registers intentionally unused by the program,
+	 for example as a consequence of the procedure call standard
+	 should be initialized as if by DW_CFA_same_value.  */
+    };
+
+  abi_info->initial_instructions = abi_cfi;
+  abi_info->initial_instructions_end = &abi_cfi[sizeof abi_cfi];
+  abi_info->data_alignment_factor = -4;
+
+  abi_info->return_address_register = 1; /* ra.  */
+
+  return 0;
+}
diff --git a/backends/loongarch_corenote.c b/backends/loongarch_corenote.c
new file mode 100644
index 0000000..b549edc
--- /dev/null
+++ b/backends/loongarch_corenote.c
@@ -0,0 +1,114 @@
+/* LoongArch specific core note handling.
+   Copyright (C) 2023 Loongson Technology Corporation Limited.
+   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 loongarch_
+#include "libebl_CPU.h"
+
+#define	ULONG			uint64_t
+#define PID_T			int32_t
+#define	UID_T			uint32_t
+#define	GID_T			uint32_t
+#define ALIGN_ULONG		8
+#define ALIGN_PID_T		4
+#define ALIGN_UID_T		4
+#define ALIGN_GID_T		4
+#define TYPE_ULONG		ELF_T_XWORD
+#define TYPE_PID_T		ELF_T_SWORD
+#define TYPE_UID_T		ELF_T_WORD
+#define TYPE_GID_T		ELF_T_WORD
+
+#define PRSTATUS_REGS_SIZE	(45 * 8)
+
+static const Ebl_Register_Location prstatus_regs[] =
+  {
+    { .offset = 0, .regno = 0, .count = 32, .bits = 64 }, /* r0..r31 */
+  };
+
+#define PRSTATUS_REGSET_ITEMS						\
+  {									\
+    .name = "orig_a0", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 32 * 8),						\
+    .group = "register"							\
+  },									\
+  {									\
+    .name = "csr_era", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 33 * 8),						\
+    .group = "register",						\
+    .pc_register = true							\
+  },									\
+  {									\
+    .name = "csr_badvaddr", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 34 * 8),						\
+    .group = "register"							\
+  },									\
+  {									\
+    .name = "csr_crmd", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 35 * 8),						\
+    .group = "register"							\
+  },									\
+  {									\
+    .name = "csr_prmd", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 36 * 8),						\
+    .group = "register"							\
+  },									\
+  {									\
+    .name = "csr_euen", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 37 * 8),						\
+    .group = "register"							\
+  },									\
+  {									\
+    .name = "csr_ecfg", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 38 * 8),						\
+    .group = "register"							\
+  },									\
+  {									\
+    .name = "csr_estat", .type = ELF_T_XWORD, .format = 'x',		\
+    .offset = (offsetof (struct EBLHOOK(prstatus), pr_reg)		\
+	       + 39 * 8),						\
+    .group = "register"							\
+  }
+  /* 40 ~ 44 reserved */
+
+#include "linux-core-note.c"
diff --git a/backends/loongarch_init.c b/backends/loongarch_init.c
index a8ed9e8..2f0d46c 100644
--- a/backends/loongarch_init.c
+++ b/backends/loongarch_init.c
@@ -1,5 +1,7 @@
 /* Initialization of LoongArch specific backend library.
    Copyright (C) 2022 Hengqi Chen
+   Copyright (C) 2023 OpenAnolis community LoongArch SIG.
+   Copyright (C) 2023 Loongson Technology Corporation Limted.
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -45,6 +47,16 @@
 {
   loongarch_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
+  HOOK (eh, machine_flag_check);
+  HOOK (eh, register_info);
+  HOOK (eh, core_note);
+  HOOK (eh, abi_cfi);
+  /* gcc/config/ #define DWARF_FRAME_REGISTERS.  */
+  eh->frame_nregs = 74;
+  HOOK (eh, check_special_symbol);
+  HOOK (eh, set_initial_registers_tid);
+  HOOK (eh, return_value_location);
+  HOOK (eh, unwind);
 
   return eh;
 }
diff --git a/backends/loongarch_initreg.c b/backends/loongarch_initreg.c
new file mode 100644
index 0000000..74cb62f
--- /dev/null
+++ b/backends/loongarch_initreg.c
@@ -0,0 +1,88 @@
+/* Fetch live process registers from TID.
+   Copyright (C) 2023 OpenAnolis community LoongArch SIG.
+   Copyright (C) 2023 Loongson Technology Corporation Limted.
+   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 "system.h"
+#include <assert.h>
+#if defined __loongarch__ && defined __linux__
+# include <sys/uio.h>
+# include <sys/procfs.h>
+# include <sys/ptrace.h>
+#endif
+
+#define BACKEND loongarch_
+#include "libebl_CPU.h"
+
+bool
+loongarch_set_initial_registers_tid (pid_t tid __attribute__ ((unused)),
+				 ebl_tid_registers_t *setfunc __attribute__ ((unused)),
+				 void *arg __attribute__ ((unused)))
+{
+#if !defined __loongarch__ || !defined __linux__
+  return false;
+#else /* __loongarch__ */
+
+  /* General registers.  */
+  struct user_regs_struct gregs;
+  struct iovec iovec;
+  iovec.iov_base = &gregs;
+  iovec.iov_len = sizeof (gregs);
+  if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec) != 0)
+    return false;
+
+  /* $r0 is constant 0.  */
+  Dwarf_Word zero = 0;
+  if (! setfunc (0, 1, &zero, arg))
+    return false;
+
+  /* $r1-$r31.  */
+  if (! setfunc (1, 32, (Dwarf_Word *) &gregs.regs[1], arg))
+    return false;
+
+  /* PC.  */
+  if (! setfunc (-1, 1, (Dwarf_Word *) &gregs.csr_era, arg))
+    return false;
+
+  /* Floating-point registers (only 64bits are used).  */
+  struct user_fp_struct fregs;
+  iovec.iov_base = &fregs;
+  iovec.iov_len = sizeof (fregs);
+  if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0)
+    return false;
+
+  /* $f0-$f31 */
+  if (! setfunc (32, 32, (Dwarf_Word *) &fregs.fpr[0], arg))
+    return false;
+
+  return true;
+#endif /* __loongarch__ */
+}
diff --git a/backends/loongarch_regs.c b/backends/loongarch_regs.c
new file mode 100644
index 0000000..4a4b205
--- /dev/null
+++ b/backends/loongarch_regs.c
@@ -0,0 +1,141 @@
+/* Register names and numbers for LoongArch DWARF.
+   Copyright (C) 2023 OpenAnolis community LoongArch SIG.
+   Copyright (C) 2023 Loongson Technology Corporation Limted.
+   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 <string.h>
+#include <dwarf.h>
+
+#define BACKEND loongarch_
+#include "libebl_CPU.h"
+
+ssize_t
+loongarch_register_info (Ebl *ebl, int regno, char *name, size_t namelen,
+		     const char **prefix, const char **setname,
+		     int *bits, int *type)
+{
+  if (name == NULL)
+    return 64;
+
+  *prefix = "";
+
+  if (regno < 32)
+    {
+      *setname = "integer";
+      *type = DW_ATE_signed;
+      *bits = ebl->class == ELFCLASS64 ? 64 : 32;
+    }
+  else
+    {
+      *setname = "FPU";
+      *type = DW_ATE_float;
+      *bits = 64;
+    }
+
+  switch (regno)
+    {
+    case 0:
+      return stpcpy (name, "zero") + 1 - name;
+
+    case 1:
+      *type = DW_ATE_address;
+      return stpcpy (name, "ra") + 1 - name;
+
+    case 2:
+      *type = DW_ATE_address;
+      return stpcpy (name, "tp") + 1 - name;
+
+    case 3:
+      *type = DW_ATE_address;
+      return stpcpy (name, "sp") + 1 - name;
+
+    case 4 ... 11:
+      name[0] = 'a';
+      name[1] = regno - 4 + '0';
+      namelen = 2;
+      break;
+
+    case 12 ... 20:
+      name[0] = 't';
+      name[1] = regno - 12 + '0';
+      namelen = 2;
+      break;
+
+    case 21:
+      return stpcpy (name, "u0") + 1 - name;
+
+    case 22:
+      *type = DW_ATE_address;
+      return stpcpy (name, "fp") + 1 - name;
+
+    case 23 ... 31:
+      name[0] = 's';
+      name[1] = regno - 23 + '0';
+      namelen = 2;
+      break;
+
+    case 32 ... 39:
+      name[0] = 'f';
+      name[1] = 'a';
+      name[2] = regno - 32 + '0';
+      namelen = 3;
+      break;
+
+    case 40 ... 49:
+      name[0] = 'f';
+      name[1] = 't';
+      name[2] = regno - 40 + '0';
+      namelen = 3;
+      break;
+
+    case 50 ... 55:
+      name[0] = 'f';
+      name[1] = 't';
+      name[2] = '1';
+      name[3] = regno - 50 + '0';
+      namelen = 4;
+      break;
+
+    case 56 ... 63:
+      name[0] = 'f';
+      name[1] = 's';
+      name[2] = regno - 56 + '0';
+      namelen = 3;
+      break;
+
+    default:
+      *setname = NULL;
+      return 0;
+    }
+
+  name[namelen++] = '\0';
+  return namelen;
+}
diff --git a/backends/loongarch_reloc.def b/backends/loongarch_reloc.def
index dd4a6b6..a39eefd 100644
--- a/backends/loongarch_reloc.def
+++ b/backends/loongarch_reloc.def
@@ -79,3 +79,52 @@
 RELOC_TYPE (SUB64,			REL)
 RELOC_TYPE (GNU_VTINHERIT,		REL)
 RELOC_TYPE (GNU_VTENTRY,		REL)
+
+/* reserved 59-63 */
+
+RELOC_TYPE (B16,			REL)
+RELOC_TYPE (B21,			REL)
+RELOC_TYPE (B26,			REL)
+RELOC_TYPE (ABS_HI20,			REL)
+RELOC_TYPE (ABS_LO12,			REL)
+RELOC_TYPE (ABS64_LO20,			REL)
+RELOC_TYPE (ABS64_HI12,			REL)
+RELOC_TYPE (PCALA_HI20,			REL)
+RELOC_TYPE (PCALA_LO12,			REL)
+RELOC_TYPE (PCALA64_LO20,		REL)
+RELOC_TYPE (PCALA64_HI12,		REL)
+RELOC_TYPE (GOT_PC_HI20,		REL)
+RELOC_TYPE (GOT_PC_LO12,		REL)
+RELOC_TYPE (GOT64_PC_LO20,		REL)
+RELOC_TYPE (GOT64_PC_HI12,		REL)
+RELOC_TYPE (GOT_HI20,			REL)
+RELOC_TYPE (GOT_LO12,			REL)
+RELOC_TYPE (GOT64_LO20,			REL)
+RELOC_TYPE (GOT64_HI12,			REL)
+RELOC_TYPE (TLS_LE_HI20,		REL)
+RELOC_TYPE (TLS_LE_LO12,		REL)
+RELOC_TYPE (TLS_LE64_LO20,		REL)
+RELOC_TYPE (TLS_LE64_HI12,		REL)
+RELOC_TYPE (TLS_IE_PC_HI20,		REL)
+RELOC_TYPE (TLS_IE_PC_LO12,		REL)
+RELOC_TYPE (TLS_IE64_PC_LO20,		REL)
+RELOC_TYPE (TLS_IE64_PC_HI12,		REL)
+RELOC_TYPE (TLS_IE_HI20,		REL)
+RELOC_TYPE (TLS_IE_LO12,		REL)
+RELOC_TYPE (TLS_IE64_LO20,		REL)
+RELOC_TYPE (TLS_IE64_HI12,		REL)
+RELOC_TYPE (TLS_LD_PC_HI20,		REL)
+RELOC_TYPE (TLS_LD_HI20,		REL)
+RELOC_TYPE (TLS_GD_PC_HI20,		REL)
+RELOC_TYPE (TLS_GD_HI20,		REL)
+RELOC_TYPE (32_PCREL,			REL)
+RELOC_TYPE (RELAX,			REL)
+RELOC_TYPE (DELETE,			REL)
+RELOC_TYPE (ALIGN,			REL)
+RELOC_TYPE (PCREL20_S2,			REL)
+RELOC_TYPE (CFA,			REL)
+RELOC_TYPE (ADD6,			REL)
+RELOC_TYPE (SUB6,			REL)
+RELOC_TYPE (ADD_ULEB128,		REL)
+RELOC_TYPE (SUB_ULEB128,		REL)
+RELOC_TYPE (64_PCREL,			REL)
diff --git a/backends/loongarch_retval.c b/backends/loongarch_retval.c
new file mode 100644
index 0000000..23b33ed
--- /dev/null
+++ b/backends/loongarch_retval.c
@@ -0,0 +1,202 @@
+/* Function return value location for Linux/LoongArch ABI.
+   Copyright (C) 2013 Red Hat, Inc.
+   Copyright (C) 2023 OpenAnolis community LoongArch SIG.
+   Copyright (C) 2023 Loongson Technology Corporation Limited.
+
+   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 <inttypes.h>
+
+#include <assert.h>
+#include <dwarf.h>
+
+#define BACKEND loongarch_
+#include "libebl_CPU.h"
+
+static int
+dwarf_bytesize_aux (Dwarf_Die *die, Dwarf_Word *sizep)
+{
+  int bits;
+  if (((bits = 8 * dwarf_bytesize (die)) < 0
+       && (bits = dwarf_bitsize (die)) < 0)
+      || bits % 8 != 0)
+    return -1;
+
+  *sizep = bits / 8;
+  return 0;
+}
+
+static int
+pass_in_gpr (const Dwarf_Op **locp, Dwarf_Word size)
+{
+  static const Dwarf_Op loc[] =
+    {
+      { .atom = DW_OP_reg4 }, { .atom = DW_OP_piece, .number = 8 },
+      { .atom = DW_OP_reg5 }, { .atom = DW_OP_piece, .number = 8 }
+    };
+
+  *locp = loc;
+  return size <= 8 ? 1 : 4;
+}
+
+static int
+pass_by_ref (const Dwarf_Op **locp)
+{
+  static const Dwarf_Op loc[] = { { .atom = DW_OP_breg4 } };
+
+  *locp = loc;
+  return 1;
+}
+
+static int
+pass_in_fpr (const Dwarf_Op **locp, Dwarf_Word size)
+{
+  static const Dwarf_Op loc[] =
+    {
+      { .atom = DW_OP_regx, .number = 32 },
+      { .atom = DW_OP_piece, .number = 8 },
+      { .atom = DW_OP_regx, .number = 33 },
+      { .atom = DW_OP_piece, .number = 8 }
+    };
+
+  *locp = loc;
+  return size <= 8 ? 1 : 4;
+}
+
+int
+loongarch_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 typedie;
+  int tag = dwarf_peeled_die_type (functypedie, &typedie);
+  if (tag <= 0)
+    return tag;
+
+  Dwarf_Word size = (Dwarf_Word)-1;
+
+  /* If the argument type is a Composite Type that is larger than 16
+     bytes, then the argument is copied to memory allocated by the
+     caller and the argument is replaced by a pointer to the copy.  */
+  if (tag == DW_TAG_structure_type || tag == DW_TAG_union_type
+      || tag == DW_TAG_class_type || tag == DW_TAG_array_type)
+    {
+      if (dwarf_aggregate_size (&typedie, &size) < 0)
+	return -1;
+
+      /* Aggregates larger than 2*GRLEN bits are passed by reference.  */
+      if (size > 16)
+	return pass_by_ref (locp);
+      /* Aggregates whose total size is no more than GRLEN bits are passed in
+	 a register.  Aggregates whose total size is no more than 2*GRLEN bits
+	 are passed in a pair of registers.  */
+      else
+	return pass_in_gpr (locp, size);
+    }
+
+  if (tag == DW_TAG_base_type || dwarf_is_pointer (tag))
+    {
+      if (dwarf_bytesize_aux (&typedie, &size) < 0)
+	{
+	  if (dwarf_is_pointer (tag))
+	    size = 8;
+	  else
+	    return -1;
+	}
+
+      Dwarf_Attribute attr_mem;
+      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;
+
+	  switch (encoding)
+	    {
+	    case DW_ATE_boolean:
+	    case DW_ATE_signed:
+	    case DW_ATE_unsigned:
+	    case DW_ATE_unsigned_char:
+	    case DW_ATE_signed_char:
+	      /* Scalars that are at most GRLEN bits wide are passed in a single
+		 argument register.  Scalars that are 2*GRLEN bits wide are
+		 passed in a pair of argument registers.  Scalars wider than
+		 2*GRLEN are passed by reference.  */
+	      return pass_in_gpr (locp, size);
+
+	    case DW_ATE_float:
+	      /* A real floating-point argument is passed in a floating-point
+		 argument register if it is no more than FLEN bits wide,
+		 otherwise it is passed according to the integer calling
+		 convention.  */
+	      switch (size)
+		{
+		case 4: /* single */
+                case 8: /* double */
+                  return pass_in_fpr (locp, size);
+
+                case 16: /* quad */
+	          return pass_in_gpr (locp, size);
+
+		default:
+		  return -2;
+		}
+
+	    case DW_ATE_complex_float:
+	      /* A complex floating-point number is passed as though it were a
+		 struct containing two floating-point reals.  */
+	      switch (size)
+		{
+		case 8: /* float _Complex */
+                case 16: /* double _Complex */
+                  return pass_in_fpr (locp, size);
+
+                case 32: /* long double _Complex */
+		  return pass_by_ref (locp);
+
+		default:
+		  return -2;
+		}
+	    }
+
+	  return -2;
+	}
+      else
+	return pass_in_gpr (locp, size);
+    }
+
+  *locp = NULL;
+  return 0;
+}
diff --git a/backends/loongarch_symbol.c b/backends/loongarch_symbol.c
index 8ba66a0..5ce55ba 100644
--- a/backends/loongarch_symbol.c
+++ b/backends/loongarch_symbol.c
@@ -72,3 +72,45 @@
       return ELF_T_NUM;
     }
 }
+
+bool
+loongarch_machine_flag_check (GElf_Word flags)
+{
+  return ((flags &~ (EF_LARCH_ABI_MODIFIER_MASK
+		     | EF_LARCH_OBJABI_V1)) == 0);
+}
+
+/* Check whether given symbol's st_value and st_size are OK despite failing
+   normal checks.  */
+bool
+loongarch_check_special_symbol (Elf *elf, const GElf_Sym *sym,
+			    const char *name, const GElf_Shdr *destshdr)
+{
+  if (name != NULL
+      && strcmp (name, "_GLOBAL_OFFSET_TABLE_") == 0)
+    {
+      size_t shstrndx;
+      if (elf_getshdrstrndx (elf, &shstrndx) != 0)
+	return false;
+      const char *sname = elf_strptr (elf, shstrndx, destshdr->sh_name);
+      if (sname != NULL
+	  && (strcmp (sname, ".got") == 0 || strcmp (sname, ".got.plt") == 0))
+	{
+	  Elf_Scn *scn = NULL;
+	  while ((scn = elf_nextscn (elf, scn)) != NULL)
+	    {
+	      GElf_Shdr shdr_mem;
+	      GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
+	      if (shdr != NULL)
+		{
+		  sname = elf_strptr (elf, shstrndx, shdr->sh_name);
+		  if (sname != NULL && strcmp (sname, ".got") == 0)
+		    return (sym->st_value >= shdr->sh_addr
+			    && sym->st_value < shdr->sh_addr + shdr->sh_size);
+		}
+	    }
+	}
+    }
+
+  return false;
+}
diff --git a/backends/loongarch_unwind.c b/backends/loongarch_unwind.c
new file mode 100644
index 0000000..fb74808
--- /dev/null
+++ b/backends/loongarch_unwind.c
@@ -0,0 +1,84 @@
+/* Get previous frame state for an existing frame state.
+   Copyright (C) 2023 OpenAnolis community LoongArch SIG.
+   Copyright (C) 2023 Loongson Technology Corporation Limited.
+   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 loongarch_
+#define RA_REG 1
+#define SP_REG 3
+#define FP_REG 22
+
+#define RA_OFFSET 8
+#define FP_OFFSET 16
+
+#include "libebl_CPU.h"
+
+/* There was no CFI. Maybe we happen to have a frame pointer and can unwind from that?  */
+
+bool
+EBLHOOK(unwind) (Ebl *ebl __attribute__ ((unused)), Dwarf_Addr pc __attribute__ ((unused)),
+                 ebl_tid_registers_t *setfunc, ebl_tid_registers_get_t *getfunc,
+                 ebl_pid_memory_read_t *readfunc, void *arg,
+                 bool *signal_framep __attribute__ ((unused)))
+{
+  Dwarf_Word fp, ra, sp;
+
+  if (!getfunc(RA_REG, 1, &ra, arg))
+    return false;
+
+  if (ra == 0 || !setfunc(-1, 1, &ra, arg))
+    return false;
+
+  if (!getfunc(FP_REG, 1, &fp, arg))
+    fp = 0;
+
+  if (!getfunc(SP_REG, 1, &sp, arg))
+    sp = 0;
+
+  Dwarf_Word newRa, newFp, newSp;
+
+  if (!readfunc(fp - RA_OFFSET, &newRa, arg))
+    newRa = 0;
+
+  if (!readfunc(fp - FP_OFFSET, &newFp, arg))
+    newFp = 0;
+
+  newSp = fp;
+
+  // These are not fatal if they don't work. They will just prevent unwinding at the next frame.
+  setfunc(RA_REG, 1, &newRa, arg);
+  setfunc(FP_REG, 1, &newFp, arg);
+  setfunc(SP_REG, 1, &newSp, arg);
+
+  // If the fp is invalid, we might still have a valid ra.
+  // But if the fp is valid, then the stack should be moving in the right direction.
+  return fp == 0 || newSp > sp;
+}
diff --git a/backends/riscv_reloc.def b/backends/riscv_reloc.def
index 2bd3513..f52f648 100644
--- a/backends/riscv_reloc.def
+++ b/backends/riscv_reloc.def
@@ -81,3 +81,7 @@
 RELOC_TYPE (SET16,		REL)
 RELOC_TYPE (SET32,		REL)
 RELOC_TYPE (32_PCREL,		REL)
+RELOC_TYPE (IRELATIVE,		EXEC|DYN)
+RELOC_TYPE (PLT32,		REL)
+RELOC_TYPE (SET_ULEB128,	REL)
+RELOC_TYPE (SUB_ULEB128,	REL)
diff --git a/config.h b/config.h
index fb46250..364ce05 100644
--- a/config.h
+++ b/config.h
@@ -67,6 +67,9 @@
 /* Define to 1 if you have the <err.h> header file. */
 #define HAVE_ERR_H 1
 
+/* Define to 1 if you have the <execinfo.h> header file. */
+#define HAVE_EXECINFO_H 1
+
 /* Defined if __attribute__((fallthrough)) is supported */
 #define HAVE_FALLTHROUGH 1
 
@@ -149,7 +152,7 @@
 #define PACKAGE_NAME "elfutils"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "elfutils 0.189"
+#define PACKAGE_STRING "elfutils 0.190"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "elfutils"
@@ -158,7 +161,7 @@
 #define PACKAGE_URL "http://elfutils.org/"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.189"
+#define PACKAGE_VERSION "0.190"
 
 /* The size of `long', as computed by sizeof. */
 #define SIZEOF_LONG 8
@@ -195,7 +198,7 @@
 #define USE_ZSTD_COMPRESS 1
 
 /* Version number of package */
-#define VERSION "0.189"
+#define VERSION "0.190"
 
 /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
    `char[]'. */
diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
index c82a40c..67e88cb 100644
--- a/config/elfutils.spec.in
+++ b/config/elfutils.spec.in
@@ -233,7 +233,7 @@
 
 %files
 %license COPYING COPYING-GPLV2 COPYING-LGPLV3 doc/COPYING-GFDL
-%doc README TODO CONTRIBUTING
+%doc README TODO CONTRIBUTING SECURITY
 %{_bindir}/eu-addr2line
 %{_bindir}/eu-ar
 %{_bindir}/eu-elfclassify
@@ -341,6 +341,22 @@
 %systemd_postun_with_restart debuginfod.service
 
 %changelog
+* Fri Nov  3 2023 Mark Wielaard <mark@klomp.org> 0.190-1
+- CONTRIBUTING: Switch from real name policy to known identity policy.
+  Updated ChangeLog policy (no more separate ChangeLog files).
+  There is a SECURITY bug policy now. The default branch is now 'main'.
+- libelf: Add RELR support.
+- libdw: Recognize .debug_[ct]u_index sections.
+- readelf: Support readelf -Ds, --use-dynamic --symbol.
+  Support .gdb_index version 9
+- scrlines: New tool that compiles a list of source files associated
+  with a specified dwarf/elf file.
+- debuginfod: Schema change (reindexing required, sorry!) for a 60%
+  compression in filename representation, which was a large
+  part of the sqlite index; also, more deliberate sqlite
+  -wal management during scanning using the --scan-checkpoint option.
+- backends: Various LoongArch updates.
+
 * Fri Mar  3 2023 Mark Wielaard <mark@klomp.org> 0.189-1
 - configure: eu-nm, eu-addr2line and eu-stack can provide demangled
   symbols when linked with libstdc++. Use --disable-demangler to disable.
diff --git a/configure.ac b/configure.ac
index 6e881fa..af5b6bf 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,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.189],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
+AC_INIT([elfutils],[0.190],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
 
 dnl Workaround for older autoconf < 2.64
 m4_ifndef([AC_PACKAGE_URL],
@@ -169,7 +169,7 @@
   CXXFLAGS="$CXXFLAGS -fsanitize=memory -fsanitize-memory-track-origins -D_FORTIFY_SOURCE=0"
   LDFLAGS="-shared"
   AC_LINK_IFELSE([AC_LANG_SOURCE([int main (int argc, char **argv) { return 0; }])], use_msan=yes, use_msan=no)
-  AS_IF([test "x$use_msan" == xyes],
+  AS_IF([test "x$use_msan" = xyes],
         ac_cv_zdefs=no NO_UNDEFINED=,
         AC_MSG_WARN([clang memory sanitizer not available])
         CFLAGS="$old_CFLAGS" CXXFLAGS="$old_CXXFLAGS")
@@ -493,7 +493,7 @@
 AS_HELP_STRING([--disable-demangler],
 	       [Disable libstdc++ demangle support]),
 	       [], [enable_demangler=yes])
-AS_IF([test "x$enable_demangler" == xyes],
+AS_IF([test "x$enable_demangler" = xyes],
 AC_CHECK_LIB([stdc++], [__cxa_demangle], [dnl
 AC_DEFINE([USE_DEMANGLE], [1], [Defined if demangling is enabled])])
 AM_CONDITIONAL(DEMANGLE, test "x$ac_cv_lib_stdcpp___cxa_demangle" = "xyes")
@@ -839,6 +839,7 @@
       [AC_DEFINE([DUMMY_LIBDEBUGINFOD], [1], [Build dummy libdebuginfod])])
 AM_CONDITIONAL([LIBDEBUGINFOD],[test "x$enable_libdebuginfod" = "xyes" || test "x$enable_libdebuginfod" = "xdummy"])
 AM_CONDITIONAL([DUMMY_LIBDEBUGINFOD],[test "x$enable_libdebuginfod" = "xdummy"])
+AC_CHECK_HEADERS([execinfo.h])
 
 # Look for libmicrohttpd, libarchive, sqlite for debuginfo server
 # minimum versions as per rhel7.
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index f861eb7..0e4810b 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,44 @@
+2023-04-21  Frank Ch. Eigler <fche@redhat.com>
+
+	* debuginfod.cxx (groom): Fix -r / -X logic.
+
+2023-04-13  Frank Ch. Eigler <fche@redhat.com>
+
+	* debuginfod.cxx (archive_classify, scan_archive_file): Catch and
+	propagate exceptions during archive scans.
+
+2023-03-30  Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+
+	* debuginfod-client.c (update_atime): New function.
+	(extract_section, debuginfod_query_server): Call it.
+
+2023-03-30  Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+
+	* debuginfod-client.c (debuginfod_query_server): Don't modify
+	atime unintentionally.
+	* debuginfod.cxx (extract_section, handle_buildid_r_match): Ditto.
+
+2023-03-30  Aaron Merey  <amerey@redhat.com>
+
+	* debuginfod-client.c (debuginfod_query_server): Avoid sscanf on
+	mixed-case component of string.
+
+2023-03-29  Jan Alexander Steffens (heftig) <heftig@archlinux.org>
+
+	* debuginfod-client.c (debuginfod_query_server): s/futimes/futimens/
+	* debuginfod.cxx (extract_section, handle_buildid_r_match): Ditto.
+
+2023-03-29  lilydjwg  <lilydjwg@gmail.com>
+
+	* debuginfod-client.c (debuginfod_query_server): Handle dl_size in
+	progress to account for possible curl 8.0.1 changes to
+	CURLINFO_CONTENT_LENGTH_DOWNLOAD*.
+
+2023-03-17  Aaron Merey  <amerey@redhat.com>
+
+	* debuginfod-client.c (debuginfod_query_server): Do not create an
+	empty file in the cache if the query was cancelled by the progressfn.
+
 2023-02-07  Aaron Merey  <amerey@redhat.com>
 
 	* debuginfod-client.c (cache_find_section): Avoid returning -ENOENT
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index ef4d47e..dcf0503 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -248,7 +248,7 @@
 
 /* handle config file read and write */
 static int
-debuginfod_config_cache(char *config_path,
+debuginfod_config_cache(debuginfod_client *c, char *config_path,
 			long cache_config_default_s,
 			struct stat *st)
 {
@@ -277,17 +277,27 @@
     }
 
   long cache_config;
+  /* PR29696 - NB: When using fdopen, the file descriptor is NOT
+     dup'ed and will be closed when the stream is closed. Manually
+     closing fd after fclose is called will lead to a race condition
+     where, if reused, the file descriptor will compete for its
+     regular use before being incorrectly closed here.  */
   FILE *config_file = fdopen(fd, "r");
   if (config_file)
     {
       if (fscanf(config_file, "%ld", &cache_config) != 1)
-        cache_config = cache_config_default_s;
-      fclose(config_file);
+	cache_config = cache_config_default_s;
+      if (0 != fclose (config_file) && c->verbose_fd >= 0)
+	dprintf (c->verbose_fd, "fclose failed with %s (err=%d)\n",
+		 strerror (errno), errno);
     }
   else
-    cache_config = cache_config_default_s;
-
-  close (fd);
+    {
+      cache_config = cache_config_default_s;
+      if (0 != close (fd) && c->verbose_fd >= 0)
+	dprintf (c->verbose_fd, "close failed with %s (err=%d)\n",
+		 strerror (errno), errno);
+    }
   return cache_config;
 }
 
@@ -303,7 +313,7 @@
   struct stat st;
 
   /* Create new interval file.  */
-  rc = debuginfod_config_cache(interval_path,
+  rc = debuginfod_config_cache(c, interval_path,
 			       cache_clean_default_interval_s, &st);
   if (rc < 0)
     return rc;
@@ -320,7 +330,7 @@
   utime (interval_path, NULL);
 
   /* Read max unused age value from config file.  */
-  rc = debuginfod_config_cache(max_unused_path,
+  rc = debuginfod_config_cache(c, max_unused_path,
 			       cache_default_max_unused_age_s, &st);
   if (rc < 0)
     return rc;
@@ -558,7 +568,9 @@
   struct handle_data *data = (struct handle_data *) userdata;
   if (size != 1)
     return 0;
-  if (data->client && data->client->verbose_fd >= 0)
+  if (data->client
+      && data->client->verbose_fd >= 0
+      && numitems > 2)
     dprintf (data->client->verbose_fd, "header %.*s", (int)numitems, buffer);
   // Some basic checks to ensure the headers received are of the expected format
   if (strncasecmp(buffer, "X-DEBUGINFOD", 11)
@@ -618,6 +630,19 @@
   dest[q] = '\0';
 }
 
+/* Attempt to update the atime */
+static void
+update_atime (int fd)
+{
+  struct timespec tvs[2];
+
+  tvs[0].tv_sec = tvs[1].tv_sec = 0;
+  tvs[0].tv_nsec = UTIME_NOW;
+  tvs[1].tv_nsec = UTIME_OMIT;
+
+  (void) futimens (fd, tvs);  /* best effort */
+}
+
 /* Attempt to read an ELF/DWARF section with name SECTION from FD and write
    it to a separate file in the debuginfod cache.  If successful the absolute
    path of the separate file containing SECTION will be stored in USR_PATH.
@@ -761,6 +786,7 @@
 	    *usr_path = sec_path;
 	  else
 	    free (sec_path);
+	  update_atime(fd);
 	  rc = sec_fd;
 	  goto out2;
 	}
@@ -1098,6 +1124,7 @@
                 }
             }
           /* Success!!!! */
+          update_atime(fd);
           rc = fd;
           goto out;
         }
@@ -1110,7 +1137,7 @@
 
           close(fd); /* no need to hold onto the negative-hit file descriptor */
           
-          rc = debuginfod_config_cache(cache_miss_path,
+          rc = debuginfod_config_cache(c, cache_miss_path,
                                        cache_miss_default_s, &st);
           if (rc < 0)
             goto out;
@@ -1467,7 +1494,7 @@
           goto out2;
         }
 
-      long dl_size = 0;
+      long dl_size = -1;
       if (target_handle && (c->progressfn || maxsize > 0))
         {
           /* Get size of file being downloaded. NB: If going through
@@ -1486,7 +1513,7 @@
           curl_res = curl_easy_getinfo(target_handle,
                                        CURLINFO_CONTENT_LENGTH_DOWNLOAD,
                                        &cl);
-          if (curl_res == CURLE_OK)
+          if (curl_res == CURLE_OK && cl >= 0)
             dl_size = (cl >= (double)(LONG_MAX+1UL) ? LONG_MAX : (long)cl);
 #endif
           /* If Content-Length is -1, try to get the size from
@@ -1495,9 +1522,9 @@
             {
               long xdl;
               char *hdr = strcasestr(c->winning_headers, "x-debuginfod-size");
+              size_t off = strlen("x-debuginfod-size:");
 
-              if (hdr != NULL
-                  && sscanf(hdr, "x-debuginfod-size: %ld", &xdl) == 1)
+              if (hdr != NULL && sscanf(hdr + off, "%ld", &xdl) == 1)
                 dl_size = xdl;
             }
         }
@@ -1508,26 +1535,40 @@
           long pa = loops; /* default param for progress callback */
           if (target_handle) /* we've committed to a server; report its download progress */
             {
-              CURLcode curl_res;
+              /* PR30809: Check actual size of cached file.  This same
+                 fd is shared by all the multi-curl handles (but only
+                 one will end up writing to it).  Another way could be
+                 to tabulate totals in debuginfod_write_callback(). */
+              struct stat cached;
+              int statrc = fstat(fd, &cached);
+              if (statrc == 0)
+                pa = (long) cached.st_size;
+              else
+                {
+                  /* Otherwise, query libcurl for its tabulated total.
+                     However, that counts http body length, not
+                     decoded/decompressed content length, so does not
+                     measure quite the same thing as dl. */
+                  CURLcode curl_res;
 #if CURL_AT_LEAST_VERSION(7, 55, 0)
-              curl_off_t dl;
-              curl_res = curl_easy_getinfo(target_handle,
-                                           CURLINFO_SIZE_DOWNLOAD_T,
-                                           &dl);
-              if (curl_res == 0 && dl >= 0)
-                pa = (dl > LONG_MAX ? LONG_MAX : (long)dl);
+                  curl_off_t dl;
+                  curl_res = curl_easy_getinfo(target_handle,
+                                               CURLINFO_SIZE_DOWNLOAD_T,
+                                               &dl);
+                  if (curl_res == 0 && dl >= 0)
+                    pa = (dl > LONG_MAX ? LONG_MAX : (long)dl);
 #else
-              double dl;
-              curl_res = curl_easy_getinfo(target_handle,
-                                           CURLINFO_SIZE_DOWNLOAD,
-                                           &dl);
-              if (curl_res == 0)
-                pa = (dl >= (double)(LONG_MAX+1UL) ? LONG_MAX : (long)dl);
+                  double dl;
+                  curl_res = curl_easy_getinfo(target_handle,
+                                               CURLINFO_SIZE_DOWNLOAD,
+                                               &dl);
+                  if (curl_res == 0)
+                    pa = (dl >= (double)(LONG_MAX+1UL) ? LONG_MAX : (long)dl);
 #endif
-
+                }
             }
 
-          if ((*c->progressfn) (c, pa, dl_size))
+          if ((*c->progressfn) (c, pa, dl_size == -1 ? 0 : dl_size))
 	    {
 	      c->progressfn_cancel = true;
               break;
@@ -1667,9 +1708,9 @@
         }
     } while (num_msg > 0);
 
-  /* Create an empty file named as $HOME/.cache if the query fails
-     with ENOENT.*/
-  if (rc == -ENOENT)
+  /* Create an empty file in the cache if the query fails with ENOENT and
+     it wasn't cancelled early.  */
+  if (rc == -ENOENT && !c->progressfn_cancel)
     {
       int efd = open (target_cache_path, O_CREAT|O_EXCL, DEFFILEMODE);
       if (efd >= 0)
@@ -1718,13 +1759,15 @@
 #else
   CURLcode curl_res = curl_easy_getinfo(verified_handle, CURLINFO_FILETIME, (void*) &mtime);
 #endif
-  if (curl_res != CURLE_OK)
-    mtime = time(NULL); /* fall back to current time */
-
-  struct timeval tvs[2];
-  tvs[0].tv_sec = tvs[1].tv_sec = mtime;
-  tvs[0].tv_usec = tvs[1].tv_usec = 0;
-  (void) futimes (fd, tvs);  /* best effort */
+  if (curl_res == CURLE_OK)
+    {
+      struct timespec tvs[2];
+      tvs[0].tv_sec = 0;
+      tvs[0].tv_nsec = UTIME_OMIT;
+      tvs[1].tv_sec = mtime;
+      tvs[1].tv_nsec = 0;
+      (void) futimens (fd, tvs);  /* best effort */
+    }
 
   /* PR27571: make cache files casually unwriteable; dirs are already 0700 */
   (void) fchmod(fd, 0400);
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index 99b1f2b..c11aeda 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -44,6 +44,12 @@
 }
 #endif
 
+#ifdef HAVE_EXECINFO_H
+extern "C" {
+#include <execinfo.h>
+}
+#endif
+
 extern "C" {
 #include "printversion.h"
 #include "system.h"
@@ -85,6 +91,7 @@
 #include <cstring>
 #include <vector>
 #include <set>
+#include <unordered_set>
 #include <map>
 #include <string>
 #include <iostream>
@@ -94,6 +101,7 @@
 #include <mutex>
 #include <deque>
 #include <condition_variable>
+#include <exception>
 #include <thread>
 // #include <regex> // on rhel7 gcc 4.8, not competent
 #include <regex.h>
@@ -138,7 +146,7 @@
 
 
 // Roll this identifier for every sqlite schema incompatibility.
-#define BUILDIDS "buildids9"
+#define BUILDIDS "buildids10"
 
 #if SQLITE_VERSION_NUMBER >= 3008000
 #define WITHOUT_ROWID "without rowid"
@@ -157,10 +165,23 @@
   // NB: all these are overridable with -D option
 
   // Normalization table for interning file names
-  "create table if not exists " BUILDIDS "_files (\n"
+  "create table if not exists " BUILDIDS "_fileparts (\n"
   "        id integer primary key not null,\n"
   "        name text unique not null\n"
   "        );\n"
+  "create table if not exists " BUILDIDS "_files (\n"
+  "        id integer primary key not null,\n"
+  "        dirname integer not null,\n"
+  "        basename integer not null,\n"
+  "        unique (dirname, basename),\n"
+  "        foreign key (dirname) references " BUILDIDS "_fileparts(id) on delete cascade,\n"
+  "        foreign key (basename) references " BUILDIDS "_fileparts(id) on delete cascade\n"
+  "        );\n"
+  "create view if not exists " BUILDIDS "_files_v as\n" // a 
+  "        select f.id, n1.name || '/' || n2.name as name\n"
+  "        from " BUILDIDS "_files f, " BUILDIDS "_fileparts n1, " BUILDIDS "_fileparts n2\n"
+  "        where f.dirname = n1.id and f.basename = n2.id;\n"
+  
   // Normalization table for interning buildids
   "create table if not exists " BUILDIDS "_buildids (\n"
   "        id integer primary key not null,\n"
@@ -230,33 +251,33 @@
   "create view if not exists " BUILDIDS "_query_d as \n"
   "select\n"
   "        b.hex as buildid, n.mtime, 'F' as sourcetype, f0.name as source0, n.mtime as mtime, null as source1\n"
-  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_f_de n\n"
+  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_f_de n\n"
   "        where b.id = n.buildid and f0.id = n.file and n.debuginfo_p = 1\n"
   "union all select\n"
   "        b.hex as buildid, n.mtime, 'R' as sourcetype, f0.name as source0, n.mtime as mtime, f1.name as source1\n"
-  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files f1, " BUILDIDS "_r_de n\n"
+  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v f1, " BUILDIDS "_r_de n\n"
   "        where b.id = n.buildid and f0.id = n.file and f1.id = n.content and n.debuginfo_p = 1\n"
   ";"
   // ... and for E queries
   "create view if not exists " BUILDIDS "_query_e as \n"
   "select\n"
   "        b.hex as buildid, n.mtime, 'F' as sourcetype, f0.name as source0, n.mtime as mtime, null as source1\n"
-  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_f_de n\n"
+  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_f_de n\n"
   "        where b.id = n.buildid and f0.id = n.file and n.executable_p = 1\n"
   "union all select\n"
   "        b.hex as buildid, n.mtime, 'R' as sourcetype, f0.name as source0, n.mtime as mtime, f1.name as source1\n"
-  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files f1, " BUILDIDS "_r_de n\n"
+  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v f1, " BUILDIDS "_r_de n\n"
   "        where b.id = n.buildid and f0.id = n.file and f1.id = n.content and n.executable_p = 1\n"
   ";"
   // ... and for S queries
   "create view if not exists " BUILDIDS "_query_s as \n"
   "select\n"
   "        b.hex as buildid, fs.name as artifactsrc, 'F' as sourcetype, f0.name as source0, n.mtime as mtime, null as source1, null as source0ref\n"
-  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files fs, " BUILDIDS "_f_s n\n"
+  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v fs, " BUILDIDS "_f_s n\n"
   "        where b.id = n.buildid and f0.id = n.file and fs.id = n.artifactsrc\n"
   "union all select\n"
   "        b.hex as buildid, f1.name as artifactsrc, 'R' as sourcetype, f0.name as source0, sd.mtime as mtime, f1.name as source1, fsref.name as source0ref\n"
-  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files f0, " BUILDIDS "_files f1, " BUILDIDS "_files fsref, "
+  "        from " BUILDIDS "_buildids b, " BUILDIDS "_files_v f0, " BUILDIDS "_files_v f1, " BUILDIDS "_files_v fsref, "
   "        " BUILDIDS "_r_sdef sd, " BUILDIDS "_r_sref sr, " BUILDIDS "_r_de sde\n"
   "        where b.id = sr.buildid and f0.id = sd.file and fsref.id = sde.file and f1.id = sd.content\n"
   "        and sr.artifactsrc = sd.content and sde.buildid = sr.buildid\n"
@@ -271,6 +292,7 @@
   "union all select 'archive sdef',count(*) from " BUILDIDS "_r_sdef\n"
   "union all select 'buildids',count(*) from " BUILDIDS "_buildids\n"
   "union all select 'filenames',count(*) from " BUILDIDS "_files\n"
+  "union all select 'fileparts',count(*) from " BUILDIDS "_fileparts\n"  
   "union all select 'files scanned (#)',count(*) from " BUILDIDS "_file_mtime_scanned\n"
   "union all select 'files scanned (mb)',coalesce(sum(size)/1024/1024,0) from " BUILDIDS "_file_mtime_scanned\n"
 #if SQLITE_VERSION_NUMBER >= 3016000
@@ -281,10 +303,26 @@
 // schema change history & garbage collection
 //
 // XXX: we could have migration queries here to bring prior-schema
-// data over instead of just dropping it.
+// data over instead of just dropping it.  But that could incur
+// doubled storage costs.
 //
-// buildids9: widen the mtime_scanned table
+// buildids10: split the _files table into _parts
   "" // <<< we are here
+// buildids9: widen the mtime_scanned table
+  "DROP VIEW IF EXISTS buildids9_stats;\n"
+  "DROP INDEX IF EXISTS buildids9_r_de_idx;\n"
+  "DROP INDEX IF EXISTS buildids9_f_de_idx;\n"
+  "DROP VIEW IF EXISTS buildids9_query_s;\n"
+  "DROP VIEW IF EXISTS buildids9_query_e;\n"
+  "DROP VIEW IF EXISTS buildids9_query_d;\n"
+  "DROP TABLE IF EXISTS buildids9_r_sdef;\n"
+  "DROP TABLE IF EXISTS buildids9_r_sref;\n"
+  "DROP TABLE IF EXISTS buildids9_r_de;\n"
+  "DROP TABLE IF EXISTS buildids9_f_s;\n"
+  "DROP TABLE IF EXISTS buildids9_f_de;\n"
+  "DROP TABLE IF EXISTS buildids9_file_mtime_scanned;\n"
+  "DROP TABLE IF EXISTS buildids9_buildids;\n"
+  "DROP TABLE IF EXISTS buildids9_files;\n"
 // buildids8: slim the sref table
   "drop table if exists buildids8_f_de;\n"
   "drop table if exists buildids8_f_s;\n"
@@ -398,6 +436,8 @@
    { "passive", ARGP_KEY_PASSIVE, NULL, 0, "Do not scan or groom, read-only database.", 0 },
 #define ARGP_KEY_DISABLE_SOURCE_SCAN 0x1009
    { "disable-source-scan", ARGP_KEY_DISABLE_SOURCE_SCAN, NULL, 0, "Do not scan dwarf source info.", 0 },
+#define ARGP_SCAN_CHECKPOINT 0x100A
+   { "scan-checkpoint", ARGP_SCAN_CHECKPOINT, "NUM", 0, "Number of files scanned before a WAL checkpoint.", 0 },
    { NULL, 0, NULL, 0, NULL, 0 },
   };
 
@@ -452,6 +492,7 @@
 static bool scan_source_info = true;
 static string tmpdir;
 static bool passive_p = false;
+static long scan_checkpoint = 256;
 
 static void set_metric(const string& key, double value);
 // static void inc_metric(const string& key);
@@ -653,6 +694,11 @@
     case ARGP_KEY_DISABLE_SOURCE_SCAN:
       scan_source_info = false;
       break;
+    case ARGP_SCAN_CHECKPOINT:
+      scan_checkpoint = atol (arg);
+      if (scan_checkpoint < 0)
+        argp_failure(state, 1, EINVAL, "scan checkpoint");        
+      break;
       // case 'h': argp_state_help (state, stderr, ARGP_HELP_LONG|ARGP_HELP_EXIT_OK);
     default: return ARGP_ERR_UNKNOWN;
     }
@@ -736,7 +782,7 @@
 template <typename Payload>
 class workq
 {
-  set<Payload> q; // eliminate duplicates
+  unordered_set<Payload> q; // eliminate duplicates
   mutex mtx;
   condition_variable cv;
   bool dead;
@@ -825,6 +871,24 @@
 {
   return a.first < b.first; // don't bother compare the stat fields
 }
+
+namespace std { // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56480
+  template<> struct hash<::scan_payload>
+  {
+    std::size_t operator() (const ::scan_payload& p) const noexcept
+    {
+      return hash<string>()(p.first);
+    }
+  };
+  template<> struct equal_to<::scan_payload>
+  {
+    std::size_t operator() (const ::scan_payload& a, const ::scan_payload& b) const noexcept
+    {
+      return a.first == b.first;
+    }
+  };
+}
+
 static workq<scan_payload> scanq; // just a single one
 // producer & idler: thread_main_fts_source_paths()
 // consumer: thread_main_scanner()
@@ -882,6 +946,72 @@
 
 ////////////////////////////////////////////////////////////////////////
 
+// periodic_barrier is a concurrency control object that lets N threads
+// periodically (based on counter value) agree to wait at a barrier,
+// let one of them carry out some work, then be set free
+
+class periodic_barrier
+{
+private:
+  unsigned period; // number of count() reports to trigger barrier activation
+  unsigned threads; // number of threads participating
+  mutex mtx; // protects all the following fields
+  unsigned counter; // count of count() reports in the current generation
+  unsigned generation; // barrier activation generation
+  unsigned waiting; // number of threads waiting for barrier
+  bool dead; // bring out your
+  condition_variable cv;
+public:
+  periodic_barrier(unsigned t, unsigned p):
+    period(p), threads(t), counter(0), generation(0), waiting(0), dead(false) { }
+  virtual ~periodic_barrier() {}
+
+  virtual void periodic_barrier_work() noexcept = 0;
+  void nuke() {
+    unique_lock<mutex> lock(mtx);
+    dead = true;
+    cv.notify_all();
+  }
+  
+  void count()
+  {
+    unique_lock<mutex> lock(mtx);
+    unsigned prev_generation = this->generation;
+    if (counter < period-1) // normal case: counter just freely running
+      {
+        counter ++;
+        return;
+      }
+    else if (counter == period-1) // we're the doer
+      {
+        counter = period; // entering barrier holding phase
+        cv.notify_all();
+        while (waiting < threads-1 && !dead)
+          cv.wait(lock);
+        // all other threads are now stuck in the barrier
+        this->periodic_barrier_work(); // NB: we're holding the mutex the whole time
+        // reset for next barrier, releasing other waiters
+        counter = 0;
+        generation ++;
+        cv.notify_all();
+        return;
+      }
+    else if (counter == period) // we're a waiter, in holding phase
+      {
+        waiting ++;
+        cv.notify_all();
+        while (counter == period && generation == prev_generation && !dead)
+          cv.wait(lock);
+        waiting --;
+        return;
+      }
+  }
+};
+
+
+
+////////////////////////////////////////////////////////////////////////
+
 
 // Print a standard timestamp.
 static ostream&
@@ -1026,6 +1156,24 @@
 
 ////////////////////////////////////////////////////////////////////////
 
+
+struct sqlite_checkpoint_pb: public periodic_barrier
+{
+  // NB: don't use sqlite_ps since it can throw exceptions during ctor etc.
+  sqlite_checkpoint_pb(unsigned t, unsigned p):
+    periodic_barrier(t, p) { }
+  
+  void periodic_barrier_work() noexcept
+  {
+    (void) sqlite3_exec (db, "pragma wal_checkpoint(truncate);", NULL, NULL, NULL);
+  }
+};
+  
+static periodic_barrier* scan_barrier = 0; // initialized in main()
+
+
+////////////////////////////////////////////////////////////////////////
+
 // RAII style templated autocloser
 
 template <class Payload, class Ignore>
@@ -1635,13 +1783,14 @@
 		throw libc_exception (errno, "cannot write to temporary file");
 
 	      /* Set mtime to be the same as the parent file's mtime.  */
-	      struct timeval tvs[2];
+	      struct timespec tvs[2];
 	      if (fstat (elf_fd, &fs) != 0)
 		throw libc_exception (errno, "cannot fstat file");
 
-	      tvs[0].tv_sec = tvs[1].tv_sec = fs.st_mtime;
-	      tvs[0].tv_usec = tvs[1].tv_usec = 0;
-	      (void) futimes (fd, tvs);
+	      tvs[0].tv_sec = 0;
+	      tvs[0].tv_nsec = UTIME_OMIT;
+	      tvs[1] = fs.st_mtim;
+	      (void) futimens (fd, tvs);
 
 	      /* Add to fdcache.  */
 	      fdcache.intern (b_source, section, tmppath, data->d_size, true);
@@ -1727,11 +1876,10 @@
     }
   else
     {
-      std::string file = b_source0.substr(b_source0.find_last_of("/")+1, b_source0.length());
       add_mhd_response_header (r, "Content-Type", "application/octet-stream");
       add_mhd_response_header (r, "X-DEBUGINFOD-SIZE",
 			       to_string(s.st_size).c_str());
-      add_mhd_response_header (r, "X-DEBUGINFOD-FILE", file.c_str());
+      add_mhd_response_header (r, "X-DEBUGINFOD-FILE", b_source0.c_str());
       add_mhd_last_modified (r, s.st_mtime);
       if (verbose > 1)
 	obatched(clog) << "serving file " << b_source0 << " section=" << section << endl;
@@ -1951,10 +2099,12 @@
 
       // Set the mtime so the fdcache file mtimes, even prefetched ones,
       // propagate to future webapi clients.
-      struct timeval tvs[2];
-      tvs[0].tv_sec = tvs[1].tv_sec = archive_entry_mtime(e);
-      tvs[0].tv_usec = tvs[1].tv_usec = 0;
-      (void) futimes (fd, tvs);  /* best effort */
+      struct timespec tvs[2];
+      tvs[0].tv_sec = 0;
+      tvs[0].tv_nsec = UTIME_OMIT;
+      tvs[1].tv_sec = archive_entry_mtime(e);
+      tvs[1].tv_nsec = archive_entry_mtime_nsec(e);
+      (void) futimens (fd, tvs);  /* best effort */
 
       if (r != 0) // stage 3
         {
@@ -2013,14 +2163,12 @@
         }
       else
         {
-          std::string file = b_source1.substr(b_source1.find_last_of("/")+1, b_source1.length());
           add_mhd_response_header (r, "Content-Type",
                                    "application/octet-stream");
           add_mhd_response_header (r, "X-DEBUGINFOD-SIZE",
                                    to_string(archive_entry_size(e)).c_str());
-          add_mhd_response_header (r, "X-DEBUGINFOD-ARCHIVE",
-                                   b_source0.c_str());
-          add_mhd_response_header (r, "X-DEBUGINFOD-FILE", file.c_str());
+          add_mhd_response_header (r, "X-DEBUGINFOD-ARCHIVE", b_source0.c_str());
+          add_mhd_response_header (r, "X-DEBUGINFOD-FILE", b_source1.c_str());
           add_mhd_last_modified (r, archive_entry_mtime(e));
           if (verbose > 1)
 	    obatched(clog) << "serving archive " << b_source0
@@ -3037,10 +3185,65 @@
 }
 
 
+// Intern the given file name in two parts (dirname & basename) and
+// return the resulting file's id.
+static int64_t
+register_file_name(sqlite_ps& ps_upsert_fileparts,
+                   sqlite_ps& ps_upsert_file,
+                   sqlite_ps& ps_lookup_file,
+                   const string& name)
+{
+  std::size_t slash = name.rfind('/');
+  string dirname, basename;
+  if (slash == std::string::npos)
+    {
+      dirname = "";
+      basename = name;
+    }
+  else
+    {
+      dirname = name.substr(0, slash);
+      basename = name.substr(slash+1);
+    }
+
+  // intern the two substrings
+  ps_upsert_fileparts
+    .reset()
+    .bind(1, dirname)
+    .step_ok_done();
+  ps_upsert_fileparts
+    .reset()
+    .bind(1, basename)
+    .step_ok_done();
+
+  // intern the tuple
+  ps_upsert_file
+    .reset()
+    .bind(1, dirname)
+    .bind(2, basename)
+    .step_ok_done();
+
+  // look up the tuple's id
+  ps_lookup_file
+    .reset()
+    .bind(1, dirname)
+    .bind(2, basename);
+  int rc = ps_lookup_file.step();
+  if (rc != SQLITE_ROW) throw sqlite_exception(rc, "step");
+  
+  int64_t id = sqlite3_column_int64 (ps_lookup_file, 0);
+  ps_lookup_file.reset();
+  return id;
+}
+
+
+
 static void
 scan_source_file (const string& rps, const stat_t& st,
                   sqlite_ps& ps_upsert_buildids,
-                  sqlite_ps& ps_upsert_files,
+                  sqlite_ps& ps_upsert_fileparts,
+                  sqlite_ps& ps_upsert_file,
+                  sqlite_ps& ps_lookup_file,
                   sqlite_ps& ps_upsert_de,
                   sqlite_ps& ps_upsert_s,
                   sqlite_ps& ps_query,
@@ -3050,10 +3253,12 @@
                   unsigned& fts_debuginfo,
                   unsigned& fts_sourcefiles)
 {
+  int64_t fileid = register_file_name(ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, rps);
+
   /* See if we know of it already. */
   int rc = ps_query
     .reset()
-    .bind(1, rps)
+    .bind(1, fileid)
     .bind(2, st.st_mtime)
     .step();
   ps_query.reset();
@@ -3093,12 +3298,6 @@
   if (fd >= 0)
     close (fd);
 
-  // register this file name in the interning table
-  ps_upsert_files
-    .reset()
-    .bind(1, rps)
-    .step_ok_done();
-
   if (buildid == "")
     {
       // no point storing an elf file without buildid
@@ -3125,7 +3324,7 @@
         .bind(1, buildid)
         .bind(2, debuginfo_p ? 1 : 0)
         .bind(3, executable_p ? 1 : 0)
-        .bind(4, rps)
+        .bind(4, fileid)
         .bind(5, st.st_mtime)
         .step_ok_done();
     }
@@ -3157,11 +3356,6 @@
                            << " mtime=" << sfs.st_mtime
                            << " as source " << dwarfsrc << endl;
 
-          ps_upsert_files
-            .reset()
-            .bind(1, srps)
-            .step_ok_done();
-
           // PR25548: store canonicalized dwarfsrc path
           string dwarfsrc_canon = canon_pathname (dwarfsrc);
           if (dwarfsrc_canon != dwarfsrc)
@@ -3170,16 +3364,14 @@
                 obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl;
             }
 
-          ps_upsert_files
-            .reset()
-            .bind(1, dwarfsrc_canon)
-            .step_ok_done();
+          int64_t fileid1 = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, dwarfsrc_canon);
+          int64_t fileid2 = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, srps);
 
           ps_upsert_s
             .reset()
             .bind(1, buildid)
-            .bind(2, dwarfsrc_canon)
-            .bind(3, srps)
+            .bind(2, fileid1)
+            .bind(3, fileid2)
             .bind(4, sfs.st_mtime)
             .step_ok_done();
 
@@ -3189,7 +3381,7 @@
 
   ps_scan_done
     .reset()
-    .bind(1, rps)
+    .bind(1, fileid)
     .bind(2, st.st_mtime)
     .bind(3, st.st_size)
     .step_ok_done();
@@ -3208,8 +3400,9 @@
 // Analyze given archive file of given age; record buildids / exec/debuginfo-ness of its
 // constituent files with given upsert statements.
 static void
-archive_classify (const string& rps, string& archive_extension,
-                  sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_upsert_files,
+archive_classify (const string& rps, string& archive_extension, int64_t archiveid,
+                  sqlite_ps& ps_upsert_buildids, sqlite_ps& ps_upsert_fileparts, sqlite_ps& ps_upsert_file,
+                  sqlite_ps& ps_lookup_file,
                   sqlite_ps& ps_upsert_de, sqlite_ps& ps_upsert_sref, sqlite_ps& ps_upsert_sdef,
                   time_t mtime,
                   unsigned& fts_executable, unsigned& fts_debuginfo, unsigned& fts_sref, unsigned& fts_sdef,
@@ -3263,8 +3456,9 @@
     }
 
   if (verbose > 3)
-    obatched(clog) << "libarchive scanning " << rps << endl;
+    obatched(clog) << "libarchive scanning " << rps << " id " << archiveid << endl;
 
+  bool any_exceptions = false;
   while(1) // parse archive entries
     {
     if (interrupted)
@@ -3316,10 +3510,7 @@
                 .step_ok_done();
             }
 
-          ps_upsert_files // register this rpm constituent file name in interning table
-            .reset()
-            .bind(1, fn)
-            .step_ok_done();
+          int64_t fileid = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, fn);
 
           if (sourcefiles.size() > 0) // sref records needed
             {
@@ -3348,15 +3539,13 @@
                         obatched(clog) << "canonicalized src=" << dwarfsrc << " alias=" << dwarfsrc_canon << endl;
                     }
 
-                  ps_upsert_files
-                    .reset()
-                    .bind(1, dwarfsrc_canon)
-                    .step_ok_done();
-
+                  int64_t srcfileid = register_file_name(ps_upsert_fileparts, ps_upsert_file, ps_lookup_file,
+                                                         dwarfsrc_canon);
+                
                   ps_upsert_sref
                     .reset()
                     .bind(1, buildid)
-                    .bind(2, dwarfsrc_canon)
+                    .bind(2, srcfileid)
                     .step_ok_done();
 
                   fts_sref ++;
@@ -3375,9 +3564,9 @@
                 .bind(1, buildid)
                 .bind(2, debuginfo_p ? 1 : 0)
                 .bind(3, executable_p ? 1 : 0)
-                .bind(4, rps)
+                .bind(4, archiveid)
                 .bind(5, mtime)
-                .bind(6, fn)
+                .bind(6, fileid)
                 .step_ok_done();
             }
           else // potential source - sdef record
@@ -3385,9 +3574,9 @@
               fts_sdef ++;
               ps_upsert_sdef
                 .reset()
-                .bind(1, rps)
+                .bind(1, archiveid)
                 .bind(2, mtime)
-                .bind(3, fn)
+                .bind(3, fileid)
                 .step_ok_done();
             }
 
@@ -3402,8 +3591,17 @@
       catch (const reportable_exception& e)
         {
           e.report(clog);
+          any_exceptions = true;
+          // NB: but we allow the libarchive iteration to continue, in
+          // case we can still gather some useful information.  That
+          // would allow some webapi queries to work, until later when
+          // this archive is rescanned.  (Its vitals won't go into the
+          // _file_mtime_scanned table until after a successful scan.)
         }
     }
+
+  if (any_exceptions)
+    throw reportable_exception("exceptions encountered during archive scan");
 }
 
 
@@ -3412,7 +3610,9 @@
 static void
 scan_archive_file (const string& rps, const stat_t& st,
                    sqlite_ps& ps_upsert_buildids,
-                   sqlite_ps& ps_upsert_files,
+                   sqlite_ps& ps_upsert_fileparts,
+                   sqlite_ps& ps_upsert_file,
+                   sqlite_ps& ps_lookup_file,
                    sqlite_ps& ps_upsert_de,
                    sqlite_ps& ps_upsert_sref,
                    sqlite_ps& ps_upsert_sdef,
@@ -3424,10 +3624,13 @@
                    unsigned& fts_sref,
                    unsigned& fts_sdef)
 {
+  // intern the archive file name
+  int64_t archiveid = register_file_name (ps_upsert_fileparts, ps_upsert_file, ps_lookup_file, rps);
+
   /* See if we know of it already. */
   int rc = ps_query
     .reset()
-    .bind(1, rps)
+    .bind(1, archiveid)
     .bind(2, st.st_mtime)
     .step();
   ps_query.reset();
@@ -3441,20 +3644,15 @@
       return;
     }
 
-  // intern the archive file name
-  ps_upsert_files
-    .reset()
-    .bind(1, rps)
-    .step_ok_done();
-
   // extract the archive contents
   unsigned my_fts_executable = 0, my_fts_debuginfo = 0, my_fts_sref = 0, my_fts_sdef = 0;
   bool my_fts_sref_complete_p = true;
+  bool any_exceptions = false;
   try
     {
       string archive_extension;
-      archive_classify (rps, archive_extension,
-                        ps_upsert_buildids, ps_upsert_files,
+      archive_classify (rps, archive_extension, archiveid,
+                        ps_upsert_buildids, ps_upsert_fileparts, ps_upsert_file, ps_lookup_file,
                         ps_upsert_de, ps_upsert_sref, ps_upsert_sdef, // dalt
                         st.st_mtime,
                         my_fts_executable, my_fts_debuginfo, my_fts_sref, my_fts_sdef,
@@ -3472,6 +3670,7 @@
   catch (const reportable_exception& e)
     {
       e.report(clog);
+      any_exceptions = true;
     }
 
   if (verbose > 2)
@@ -3481,6 +3680,7 @@
                    << " debuginfos=" << my_fts_debuginfo
                    << " srefs=" << my_fts_sref
                    << " sdefs=" << my_fts_sdef
+                   << " exceptions=" << any_exceptions
                    << endl;
 
   fts_executable += my_fts_executable;
@@ -3488,10 +3688,13 @@
   fts_sref += my_fts_sref;
   fts_sdef += my_fts_sdef;
 
+  if (any_exceptions)
+    throw reportable_exception("exceptions encountered during archive scan");
+
   if (my_fts_sref_complete_p) // leave incomplete?
     ps_scan_done
       .reset()
-      .bind(1, rps)
+      .bind(1, archiveid)
       .bind(2, st.st_mtime)
       .bind(3, st.st_size)
       .step_ok_done();
@@ -3506,57 +3709,63 @@
 // The thread that consumes file names off of the scanq.  We hold
 // the persistent sqlite_ps's at this level and delegate file/archive
 // scanning to other functions.
-static void*
-thread_main_scanner (void* arg)
+static void
+scan ()
 {
-  (void) arg;
-
   // all the prepared statements fit to use, the _f_ set:
   sqlite_ps ps_f_upsert_buildids (db, "file-buildids-intern", "insert or ignore into " BUILDIDS "_buildids VALUES (NULL, ?);");
-  sqlite_ps ps_f_upsert_files (db, "file-files-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, ?);");
+  sqlite_ps ps_f_upsert_fileparts (db, "file-fileparts-intern", "insert or ignore into " BUILDIDS "_fileparts VALUES (NULL, ?);");
+  sqlite_ps ps_f_upsert_file (db, "file-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, \n"
+                              "(select id from " BUILDIDS "_fileparts where name = ?),\n"
+                              "(select id from " BUILDIDS "_fileparts where name = ?));");
+  sqlite_ps ps_f_lookup_file (db, "file-file-lookup",
+                              "select f.id\n"
+                              " from " BUILDIDS "_files f, " BUILDIDS "_fileparts p1, " BUILDIDS "_fileparts p2 \n"
+                              " where f.dirname = p1.id and f.basename = p2.id and p1.name = ? and p2.name = ?;\n");
   sqlite_ps ps_f_upsert_de (db, "file-de-upsert",
                           "insert or ignore into " BUILDIDS "_f_de "
                           "(buildid, debuginfo_p, executable_p, file, mtime) "
                           "values ((select id from " BUILDIDS "_buildids where hex = ?),"
-                          "        ?,?,"
-                          "        (select id from " BUILDIDS "_files where name = ?), ?);");
+                            "        ?,?,?,?);");
   sqlite_ps ps_f_upsert_s (db, "file-s-upsert",
                          "insert or ignore into " BUILDIDS "_f_s "
                          "(buildid, artifactsrc, file, mtime) "
                          "values ((select id from " BUILDIDS "_buildids where hex = ?),"
-                         "        (select id from " BUILDIDS "_files where name = ?),"
-                         "        (select id from " BUILDIDS "_files where name = ?),"
-                         "        ?);");
+                         "      ?,?,?);");
   sqlite_ps ps_f_query (db, "file-negativehit-find",
                         "select 1 from " BUILDIDS "_file_mtime_scanned where sourcetype = 'F' "
-                        "and file = (select id from " BUILDIDS "_files where name = ?) and mtime = ?;");
+                        "and file = ? and mtime = ?;");
   sqlite_ps ps_f_scan_done (db, "file-scanned",
                           "insert or ignore into " BUILDIDS "_file_mtime_scanned (sourcetype, file, mtime, size)"
-                          "values ('F', (select id from " BUILDIDS "_files where name = ?), ?, ?);");
+                          "values ('F', ?,?,?);");
 
   // and now for the _r_ set
   sqlite_ps ps_r_upsert_buildids (db, "rpm-buildid-intern", "insert or ignore into " BUILDIDS "_buildids VALUES (NULL, ?);");
-  sqlite_ps ps_r_upsert_files (db, "rpm-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, ?);");
+  sqlite_ps ps_r_upsert_fileparts (db, "rpm-fileparts-intern", "insert or ignore into " BUILDIDS "_fileparts VALUES (NULL, ?);");
+  sqlite_ps ps_r_upsert_file (db, "rpm-file-intern", "insert or ignore into " BUILDIDS "_files VALUES (NULL, \n"
+                              "(select id from " BUILDIDS "_fileparts where name = ?),\n"
+                              "(select id from " BUILDIDS "_fileparts where name = ?));");
+  sqlite_ps ps_r_lookup_file (db, "rpm-file-lookup",
+                              "select f.id\n"
+                              " from " BUILDIDS "_files f, " BUILDIDS "_fileparts p1, " BUILDIDS "_fileparts p2 \n"
+                              " where f.dirname = p1.id and f.basename = p2.id and p1.name = ? and p2.name = ?;\n");
   sqlite_ps ps_r_upsert_de (db, "rpm-de-insert",
                           "insert or ignore into " BUILDIDS "_r_de (buildid, debuginfo_p, executable_p, file, mtime, content) values ("
-                          "(select id from " BUILDIDS "_buildids where hex = ?), ?, ?, "
-                          "(select id from " BUILDIDS "_files where name = ?), ?, "
-                          "(select id from " BUILDIDS "_files where name = ?));");
+                          "(select id from " BUILDIDS "_buildids where hex = ?), ?, ?, ?, ?, ?);");
   sqlite_ps ps_r_upsert_sref (db, "rpm-sref-insert",
                             "insert or ignore into " BUILDIDS "_r_sref (buildid, artifactsrc) values ("
                             "(select id from " BUILDIDS "_buildids where hex = ?), "
-                            "(select id from " BUILDIDS "_files where name = ?));");
+                            "?);");
   sqlite_ps ps_r_upsert_sdef (db, "rpm-sdef-insert",
                             "insert or ignore into " BUILDIDS "_r_sdef (file, mtime, content) values ("
-                            "(select id from " BUILDIDS "_files where name = ?), ?,"
-                            "(select id from " BUILDIDS "_files where name = ?));");
+                            "?, ?, ?);");
   sqlite_ps ps_r_query (db, "rpm-negativehit-query",
                       "select 1 from " BUILDIDS "_file_mtime_scanned where "
-                      "sourcetype = 'R' and file = (select id from " BUILDIDS "_files where name = ?) and mtime = ?;");
+                      "sourcetype = 'R' and file = ? and mtime = ?;");
   sqlite_ps ps_r_scan_done (db, "rpm-scanned",
                           "insert or ignore into " BUILDIDS "_file_mtime_scanned (sourcetype, file, mtime, size)"
-                          "values ('R', (select id from " BUILDIDS "_files where name = ?), ?, ?);");
-
+                          "values ('R', ?, ?, ?);");
+  
 
   unsigned fts_cached = 0, fts_executable = 0, fts_debuginfo = 0, fts_sourcefiles = 0;
   unsigned fts_sref = 0, fts_sdef = 0;
@@ -3568,6 +3777,9 @@
       scan_payload p;
 
       add_metric("thread_busy", "role", "scan", -1);
+      // NB: threads may be blocked within either of these two waiting
+      // states, if the work queue happens to run dry.  That's OK.
+      if (scan_barrier) scan_barrier->count();
       bool gotone = scanq.wait_front(p);
       add_metric("thread_busy", "role", "scan", 1);
 
@@ -3583,7 +3795,9 @@
           if (scan_archive)
             scan_archive_file (p.first, p.second,
                                ps_r_upsert_buildids,
-                               ps_r_upsert_files,
+                               ps_r_upsert_fileparts,
+                               ps_r_upsert_file,
+                               ps_r_lookup_file,
                                ps_r_upsert_de,
                                ps_r_upsert_sref,
                                ps_r_upsert_sdef,
@@ -3598,7 +3812,9 @@
           if (scan_files) // NB: maybe "else if" ?
             scan_source_file (p.first, p.second,
                               ps_f_upsert_buildids,
-                              ps_f_upsert_files,
+                              ps_f_upsert_fileparts,
+                              ps_f_upsert_file,
+                              ps_f_lookup_file,
                               ps_f_upsert_de,
                               ps_f_upsert_s,
                               ps_f_query,
@@ -3622,8 +3838,25 @@
       inc_metric("thread_work_total","role","scan");
     }
 
-
   add_metric("thread_busy", "role", "scan", -1);
+}
+
+
+// Use this function as the thread entry point, so it can catch our
+// fleet of exceptions (incl. the sqlite_ps ctors) and report.
+static void*
+thread_main_scanner (void* arg)
+{
+  (void) arg;
+  while (! interrupted)
+    try
+      {
+        scan();
+      }
+    catch (const reportable_exception& e)
+      {
+        e.report(cerr);
+      }
   return 0;
 }
 
@@ -3836,7 +4069,7 @@
   // scan for files that have disappeared
   sqlite_ps files (db, "check old files",
                    "select distinct s.mtime, s.file, f.name from "
-                   BUILDIDS "_file_mtime_scanned s, " BUILDIDS "_files f "
+                   BUILDIDS "_file_mtime_scanned s, " BUILDIDS "_files_v f "
                    "where f.id = s.file");
   // NB: Because _ftime_mtime_scanned can contain both F and
   // R records for the same file, this query would return duplicates if the
@@ -3874,7 +4107,7 @@
         {
           bool reg_include = !regexec (&file_include_regex, filename, 0, 0, 0);
           bool reg_exclude = !regexec (&file_exclude_regex, filename, 0, 0, 0);
-          regex_file_drop = reg_exclude && !reg_include;
+          regex_file_drop = !reg_include || reg_exclude; // match logic of scan_source_paths  
         }
 
       rc = stat(filename, &s);
@@ -4136,6 +4369,20 @@
 }
 
 
+// 30879: Something to help out in case of an uncaught exception.
+void my_terminate_handler()
+{
+#if defined(__GLIBC__)
+  void *array[40];
+  int size = backtrace (array, 40);
+  backtrace_symbols_fd (array, size, STDERR_FILENO);
+#endif
+#if defined(__GLIBCXX__) || defined(__GLIBCPP__)
+  __gnu_cxx::__verbose_terminate_handler();
+#endif
+  abort();
+}
+
 
 int
 main (int argc, char *argv[])
@@ -4144,6 +4391,8 @@
   (void) bindtextdomain (PACKAGE_TARNAME, LOCALEDIR);
   (void) textdomain (PACKAGE_TARNAME);
 
+  std::set_terminate(& my_terminate_handler);
+
   /* Tell the library which version we are expecting.  */
   elf_version (EV_CURRENT);
 
@@ -4364,8 +4613,10 @@
     obatched(clog) << "search concurrency " << concurrency << endl;
   obatched(clog) << "webapi connection pool " << connection_pool
                  << (connection_pool ? "" : " (unlimited)") << endl;
-  if (! passive_p)
+  if (! passive_p) {
     obatched(clog) << "rescan time " << rescan_s << endl;
+    obatched(clog) << "scan checkpoint " << scan_checkpoint << endl;
+  }
   obatched(clog) << "fdcache fds " << fdcache_fds << endl;
   obatched(clog) << "fdcache mbs " << fdcache_mbs << endl;
   obatched(clog) << "fdcache prefetch " << fdcache_prefetch << endl;
@@ -4407,6 +4658,9 @@
 
       if (scan_files || scan_archives.size() > 0)
         {
+          if (scan_checkpoint > 0)
+            scan_barrier = new sqlite_checkpoint_pb(concurrency, (unsigned) scan_checkpoint);
+
           rc = pthread_create (& pt, NULL, thread_main_fts_source_paths, NULL);
           if (rc)
             error (EXIT_FAILURE, rc, "cannot spawn thread to traverse source paths\n");
@@ -4433,6 +4687,7 @@
   while (! interrupted)
     pause ();
   scanq.nuke(); // wake up any remaining scanq-related threads, let them die
+  if (scan_barrier) scan_barrier->nuke(); // ... in case they're stuck in a barrier
   set_metric("ready", 0);
 
   if (verbose)
@@ -4458,6 +4713,7 @@
     }
 
   debuginfod_pool_groom ();
+  delete scan_barrier;
 
   // NB: no problem with unconditional free here - an earlier failed regcomp would exit program
   (void) regfree (& file_include_regex);
diff --git a/doc/Makefile.am b/doc/Makefile.am
index db5a842..87de4f0 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -17,7 +17,7 @@
 ## You should have received a copy of the GNU General Public License
 ## along with this program.  If not, see <http://www.gnu.org/licenses/>.
 EXTRA_DIST = COPYING-GFDL README
-dist_man1_MANS=readelf.1 elfclassify.1
+dist_man1_MANS=readelf.1 elfclassify.1 srcfiles.1
 notrans_dist_man3_MANS=elf_update.3 elf_getdata.3 elf_clone.3 elf_begin.3
 notrans_dist_man7_MANS=
 notrans_dist_man8_MANS=
diff --git a/doc/debuginfod.8 b/doc/debuginfod.8
index 07cb01a..4f1f04b 100644
--- a/doc/debuginfod.8
+++ b/doc/debuginfod.8
@@ -172,7 +172,10 @@
 
 .TP
 .B "\-r"
-Apply the -I and -X during groom cycles, so that files excluded by the regexes are removed from the index. These parameters are in addition to what normally qualifies a file for grooming, not a replacement.
+Apply the -I and -X during groom cycles, so that most content related
+to files excluded by the regexes are removed from the index.  Not all
+content can be practically removed, so eventually a "\-G"
+"maximal-groom" operation may be needed.
 
 .TP
 .B "\-g SECONDS" "\-\-groom\-time=SECONDS"
@@ -280,6 +283,13 @@
 required.
 
 .TP
+.B "\-\-scan\-checkpoint=NUM"
+Run a synchronized SQLITE WAL checkpoint operation after every NUM
+completed archive or file scans.  This may slow down parallel scanning
+phase somewhat, but generate much smaller "-wal" temporary files on
+busy servers.  The default is 256.  Disabled if 0.
+
+.TP
 .B "\-v"
 Increase verbosity of logging to the standard error file descriptor.
 May be repeated to increase details.  The default verbosity is 0.
@@ -294,18 +304,35 @@
 This file service resemblance is intentional, so that an installation
 can take advantage of standard HTTP management infrastructure.
 
-Upon finding a file in an archive or simply in the database, some
-custom http headers are added to the response. For files in the
-database X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE are added.
-X-DEBUGINFOD-FILE is simply the unescaped filename and
-X-DEBUGINFOD-SIZE is the size of the file. For files found in archives,
-in addition to X-DEBUGINFOD-FILE and X-DEBUGINFOD-SIZE,
-X-DEBUGINFOD-ARCHIVE is added.  X-DEBUGINFOD-ARCHIVE is the name of the
-archive the file was found in.
+For most queries, some custom http headers are added to the response,
+providing additional metadata about the buildid-related response.  For example:
 
-There are three requests.  In each case, the buildid is encoded as a
-lowercase hexadecimal string.  For example, for a program \fI/bin/ls\fP,
-look at the ELF note GNU_BUILD_ID:
+.SAMPLE
+% debuginfod-find -v debuginfo /bin/ls |& grep -i x-debuginfo
+x-debuginfod-size: 502024
+x-debuginfod-archive: /mnt/fedora_koji_prod/koji/packages/coreutils/9.3/4.fc39/x86_64/coreutils-debuginfo-9.3-4.fc39.x86_64.rpm
+x-debuginfod-file: /usr/lib/debug/usr/bin/ls-9.3-4.fc39.x86_64.debug
+.ESAMPLE
+
+.TP
+X-DEBUGINFOD-SIZE
+The size of the file, in bytes.  This may differ from the http Content-Length:
+field (if present), due to compression in transit.
+
+.TP
+X-DEBUGINFOD-FILE
+The full path name of the file related to the given buildid.
+
+.TP
+X-DEBUGINFOD-ARCHIVE
+The full path name of the archive that contained the above file, if any.
+
+
+
+
+There are a handful of buildid-related requests.  In each case, the
+buildid is encoded as a lowercase hexadecimal string.  For example,
+for a program \fI/bin/ls\fP, look at the ELF note GNU_BUILD_ID:
 
 .SAMPLE
 % readelf -n /bin/ls | grep -A4 build.id
@@ -381,8 +408,7 @@
 This endpoint returns a Prometheus formatted text/plain dump of a
 variety of statistics about the operation of the debuginfod server.
 The exact set of metrics and their meanings may change in future
-versions.  Caution: configuration information (path names, versions)
-may be disclosed.
+versions.
 
 .SH DATA MANAGEMENT
 
@@ -475,8 +501,16 @@
 If this is a problem, users are advised to install debuginfod with a
 HTTPS reverse-proxy front-end that enforces site policies for
 firewalling, authentication, integrity, authorization, and load
-control.  The \fI/metrics\fP webapi endpoint is probably not
-appropriate for disclosure to the public.
+control.
+
+Front-end proxies may elide sensitive path name components in
+X-DEBUGINFOD-FILE/ARCHIVE response headers.  For example, using Apache
+httpd's \fBmod_headers\fP, you can remove the entire directory name
+prefix:
+
+.SAMPLE
+Header edit x-debuginfod-archive ".*/" ""
+.ESAMPLE
 
 When relaying queries to upstream debuginfods, debuginfod \fBdoes not\fP
 include any particular security features.  It trusts that the binaries
diff --git a/doc/srcfiles.1 b/doc/srcfiles.1
new file mode 100644
index 0000000..6149c21
--- /dev/null
+++ b/doc/srcfiles.1
@@ -0,0 +1,133 @@
+.\" Copyright 2023 Red Hat Inc.
+.\" Mon 2023-Sept 23 Housam Alamour <halamour@redhat.com>
+.\" Contact elfutils-devel@sourceware.org to correct errors or typos.
+.TH EU-SRCFILES 1 "2023-Sept-25" "elfutils"
+
+.de SAMPLE
+.br
+.RS 0
+.nf
+.nh
+\fB
+..
+.de ESAMPLE
+\fP
+.hy
+.fi
+.RE
+..
+
+.SH "NAME"
+eu-srcfiles \- Lists the source files of a DWARF/ELF file.
+
+.SH "SYNOPSIS"
+eu-srcfiles [\fB\-0\fR|\fB\-\-null\fR] [\fB\-c\fR|\fB\-\-cu\-only\fR] [\fB\-v\fR|\fB\-\-verbose\fR] INPUT
+
+.SH "DESCRIPTION"
+\fBeu-srcfiles\fR lists the source files of a given \s-DWARF/ELF\s0
+file.  This list is based on a search of the DWARF debuginfo, which
+may be automatically fetched by debuginfod if applicable.  The target
+file may be an executable, a coredump, a process, or even the running
+kernel.  The default is the file 'a.out'.  The source file names are
+made unique and printed to standard output.
+
+.SH "INPUT OPTIONS"
+The long and short forms of options, shown here as alternatives, are
+equivalent.
+.TP
+\fB--core=COREFILE\fR
+Find addresses from signatures found in COREFILE.
+
+.TP
+\fB--debuginfo-path=PATH\fR
+Search path for separate debuginfo files.
+
+.TP
+\fB-e FILE\fR, \fB--executable=FILE\fR
+Find addresses in FILE.
+
+.TP
+\fB-k\fR, \fB--kernel\fR
+Find addresses in the running kernel.
+
+.TP
+\fB-K\fR, \fB--offline-kernel[=RELEASE]\fR
+Kernel with all modules.
+
+.TP
+\fB-M FILE\fR, \fB--linux-process-map=FILE\fR
+Find addresses in files mapped as read from FILE in Linux /proc/PID/maps format.
+
+.TP
+\fB-p PID\fR, \fB--pid=PID\fR
+Find addresses in files mapped into process PID.
+
+.TP
+\fB-?\fR, \fB--help\fR
+Give this help list.
+
+.TP
+\fB--usage\fR
+Give a short usage message.
+
+.TP
+\fB-V\fR, \fB--version\fR
+Print program version.
+
+.SH "OUTPUT OPTIONS"
+
+.TP
+\fB\-0, \-\-null\fR
+Separate items by a null instead of a newline.
+
+.TP
+\fB\-c, \-\-cu\-only\fR
+Only list the CU names.
+
+.TP
+\fB\-v, \-\-verbose\fR
+Increase verbosity of logging messages.
+
+
+.SH EXAMPLES
+
+List all source files for a binary.
+.SAMPLE
+eu-srcfiles -e /bin/ls
+.ESAMPLE
+
+List all compilation units (CU) names for a given process (including shared libraries).
+.SAMPLE
+eu-srcfiles -c -p $$
+.ESAMPLE
+
+List source files of a binary based on its buildid, using debuginfod.
+.SAMPLE
+binary=`debuginfod-find executable 9c22d8d9e42bd051ffdc1064fdfd456ba781c629`
+eu-srcfiles -c -e $binary
+.ESAMPLE
+
+Show the source code of the first CU of a shared library.
+.SAMPLE
+binary=/usr/lib64/libc.so.6
+srcfile=`eu-srcfiles -c -e $binary | head -1`
+cat `debuginfod-find source $binary $srcfile`
+.ESAMPLE
+
+List the source files of a kernel image.
+.SAMPLE
+eu-srcfiles -e /boot/vmlinuz-`uname -r`
+.ESAMPLE
+
+
+.SH "AUTHOR"
+Written by Housam Alamour.
+
+.SH "REPORTING BUGS"
+Please reports bugs at https://sourceware.org/bugzilla/
+
+.SH "COPYRIGHT"
+Copyright (c) 2023 Red Hat Inc.  License GPLv3+: GNU GPL version 3 or
+later <https://gnu.org/licenses/gpl.html>.  This is free software: you
+are free to change and redistribute it.  There is NO WARRANTY, to the
+extent permitted by law.
diff --git a/lib/eu-config.h b/lib/eu-config.h
index 78a5c4f..feb079d 100644
--- a/lib/eu-config.h
+++ b/lib/eu-config.h
@@ -33,13 +33,18 @@
 # include <pthread.h>
 # include <assert.h>
 # define rwlock_define(class,name)	class pthread_rwlock_t name
+# define once_define(class,name)  class pthread_once_t name = PTHREAD_ONCE_INIT
 # define RWLOCK_CALL(call)		\
   ({ int _err = pthread_rwlock_ ## call; assert_perror (_err); })
+# define ONCE_CALL(call)  \
+  ({ int _err = pthread_ ## call; assert_perror (_err); })
 # define rwlock_init(lock)		RWLOCK_CALL (init (&lock, NULL))
 # define rwlock_fini(lock)		RWLOCK_CALL (destroy (&lock))
 # define rwlock_rdlock(lock)		RWLOCK_CALL (rdlock (&lock))
 # define rwlock_wrlock(lock)		RWLOCK_CALL (wrlock (&lock))
 # define rwlock_unlock(lock)		RWLOCK_CALL (unlock (&lock))
+# define once(once_control, init_routine)  \
+  ONCE_CALL (once (&once_control, init_routine))
 #else
 /* Eventually we will allow multi-threaded applications to use the
    libraries.  Therefore we will add the necessary locking although
@@ -50,6 +55,8 @@
 # define rwlock_rdlock(lock) ((void) (lock))
 # define rwlock_wrlock(lock) ((void) (lock))
 # define rwlock_unlock(lock) ((void) (lock))
+# define once_define(class,name)
+# define once(once_control, init_routine)	init_routine()
 #endif	/* USE_LOCKS */
 
 #include <libintl.h>
diff --git a/lib/printversion.h b/lib/printversion.h
index 4154b32..6811aa5 100644
--- a/lib/printversion.h
+++ b/lib/printversion.h
@@ -32,6 +32,9 @@
 #include <argp.h>
 #include <stdio.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
 /* Defined in version.c.  Common ARGP_PROGRAM_VERSION_HOOK_DEF.  */
 void print_version (FILE *stream, struct argp_state *state);
 
@@ -49,4 +52,8 @@
 #define ARGP_PROGRAM_BUG_ADDRESS_DEF \
   const char *const apba__ __asm ("argp_program_bug_address")
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif // PRINTVERSION_H
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 406310e..b19fc80 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,47 @@
+2023-09-27  Omar Sandoval  <osandov@fb.com>
+
+	* libdwP.h ((Dwarf): Add elfpath.
+	* dwarf_begin_elf.c (__libdw_debugdir): Replace declaration with...
+	(__libdw_elfpath): New declaration.
+	(__libdw_set_debugdir): New declaration.
+	(__libdw_debugdir): Replace with..
+	(__libdw_elfpath): New function.
+	(__libdw_set_debugdir): New function.
+	(valid_p): Call __libdw_elfpath and __libdw_set_debugdir instead of
+	__libdw_debugdir.
+	* dwarf_end.c (dwarf_end): Free dwarf->elfpath.
+
+2023-09-27  Omar Sandoval  <osandov@fb.com>
+
+	* libdw_find_split_unit.c (try_split_file): Make static.
+	* dwarf_entrypc.c (dwarf_entrypc): Call dwarf_lowpc.
+	* dwarf_ranges.c (dwarf_ranges): Use skeleton ranges section for
+	skeleton units.
+	* dwarf_macro_param2.c (dwarf_macro_param2): Change form condition to
+	switch statement and add DW_FORM_line_strp, DW_FORM_strp_sup,
+	DW_FORM_strx, and DW_FORM_strx[1-4].
+	* dwarf_getmacros.c (get_macinfo_table): Replace assignment of
+	table->is_64bit with assignments of table->address_size and
+	table->offset_size.  Assume default DW_AT_stmt_list of 0 for split
+	DWARF.  Set table->dbg.
+	(get_table_for_offset): Ditto.
+	(read_macros): Get fake CU offset_size from table->offset_size instead
+	of table->is_64bit.
+	* dwarf_macro_getsrcfiles.c (dwarf_macro_getsrcfiles): Get
+	address_size for __libdw_getsrclines from table->address_size instead
+	of table->is_64bit.  Get dbg for __libdw_getsrclines from table->dbg
+	instead of dbg parameter, which is now unused.
+	* libdwP.h (Dwarf_Macro_Op_Table): Replace is_64bit with address_size
+	and offset_size.  Add dbg.
+	Add IDX_debug_cu_index and IDX_debug_tu_index.
+	* dwarf_begin_elf.c (dwarf_scnnames): Add IDX_debug_cu_index and
+	IDX_debug_tu_index.
+	(scn_to_string_section_idx): Ditto.
+	(scn_dwarf_type): Check for .debug_cu_index, .debug_tu_index,
+	.zdebug_cu_index, and .zdebug_tu_index.
+	(check_section): Change .dwo suffix matching to account for
+	.debug_cu_index and .debug_tu_index.
+
 2023-02-22  Mark Wielaard  <mark@klomp.org>
 
 	* dwarf_getscopes.c (origin_match): Don't free a->scopes.
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
index 92d76d2..323a91d 100644
--- a/libdw/dwarf_begin_elf.c
+++ b/libdw/dwarf_begin_elf.c
@@ -67,6 +67,8 @@
   [IDX_debug_macro] = ".debug_macro",
   [IDX_debug_ranges] = ".debug_ranges",
   [IDX_debug_rnglists] = ".debug_rnglists",
+  [IDX_debug_cu_index] = ".debug_cu_index",
+  [IDX_debug_tu_index] = ".debug_tu_index",
   [IDX_gnu_debugaltlink] = ".gnu_debugaltlink"
 };
 #define ndwarf_scnnames (sizeof (dwarf_scnnames) / sizeof (dwarf_scnnames[0]))
@@ -92,6 +94,8 @@
   [IDX_debug_macro] = STR_SCN_IDX_last,
   [IDX_debug_ranges] = STR_SCN_IDX_last,
   [IDX_debug_rnglists] = STR_SCN_IDX_last,
+  [IDX_debug_cu_index] = STR_SCN_IDX_last,
+  [IDX_debug_tu_index] = STR_SCN_IDX_last,
   [IDX_gnu_debugaltlink] = STR_SCN_IDX_last
 };
 
@@ -109,6 +113,11 @@
     {
       if (startswith (scnname, ".gnu.debuglto_.debug"))
 	return TYPE_GNU_LTO;
+      else if (strcmp (scnname, ".debug_cu_index") == 0
+	       || strcmp (scnname, ".debug_tu_index") == 0
+	       || strcmp (scnname, ".zdebug_cu_index") == 0
+	       || strcmp (scnname, ".zdebug_tu_index") == 0)
+	return TYPE_DWO;
       else if (startswith (scnname, ".debug_") || startswith (scnname, ".zdebug_"))
 	{
 	  size_t len = strlen (scnname);
@@ -173,42 +182,34 @@
   bool gnu_compressed = false;
   for (cnt = 0; cnt < ndwarf_scnnames; ++cnt)
     {
+      /* .debug_cu_index and .debug_tu_index don't have a .dwo suffix,
+	 but they are for DWO.  */
+      if (result->type != TYPE_DWO
+	  && (cnt == IDX_debug_cu_index || cnt == IDX_debug_tu_index))
+	continue;
+      bool need_dot_dwo =
+	(result->type == TYPE_DWO
+	 && cnt != IDX_debug_cu_index
+	 && cnt != IDX_debug_tu_index);
       size_t dbglen = strlen (dwarf_scnnames[cnt]);
       size_t scnlen = strlen (scnname);
       if (strncmp (scnname, dwarf_scnnames[cnt], dbglen) == 0
-	  && (dbglen == scnlen
-	      || (scnlen == dbglen + 4
+	  && ((!need_dot_dwo && dbglen == scnlen)
+	      || (need_dot_dwo
+		  && scnlen == dbglen + 4
 		  && strstr (scnname, ".dwo") == scnname + dbglen)))
-	{
-	  if (dbglen == scnlen)
-	    {
-	      if (result->type == TYPE_PLAIN)
-		break;
-	    }
-	  else if (result->type == TYPE_DWO)
-	    break;
-	}
+	break;
       else if (scnname[0] == '.' && scnname[1] == 'z'
 	       && (strncmp (&scnname[2], &dwarf_scnnames[cnt][1],
 			    dbglen - 1) == 0
-		   && (scnlen == dbglen + 1
-		       || (scnlen == dbglen + 5
+		   && ((!need_dot_dwo && scnlen == dbglen + 1)
+		       || (need_dot_dwo
+			   && scnlen == dbglen + 5
 			   && strstr (scnname,
 				      ".dwo") == scnname + dbglen + 1))))
 	{
-	  if (scnlen == dbglen + 1)
-	    {
-	      if (result->type == TYPE_PLAIN)
-		{
-		  gnu_compressed = true;
-		  break;
-		}
-	    }
-	  else if (result->type <= TYPE_DWO)
-	    {
-	      gnu_compressed = true;
-	      break;
-	    }
+	  gnu_compressed = true;
+	  break;
 	}
       else if (scnlen > 14 /* .gnu.debuglto_ prefix. */
 	       && startswith (scnname, ".gnu.debuglto_")
@@ -271,24 +272,27 @@
   return result;
 }
 
-
-/* Helper function to set debugdir field.  We want to cache the dir
-   where we found this Dwarf ELF file to locate alt and dwo files.  */
 char *
-__libdw_debugdir (int fd)
+__libdw_elfpath (int fd)
 {
   /* strlen ("/proc/self/fd/") = 14 + strlen (<MAXINT>) = 10 + 1 = 25.  */
   char devfdpath[25];
   sprintf (devfdpath, "/proc/self/fd/%u", fd);
-  char *fdpath = realpath (devfdpath, NULL);
-  char *fddir;
-  if (fdpath != NULL && fdpath[0] == '/'
-      && (fddir = strrchr (fdpath, '/')) != NULL)
-    {
-      *++fddir = '\0';
-      return fdpath;
-    }
-  return NULL;
+  return realpath (devfdpath, NULL);
+}
+
+
+void
+__libdw_set_debugdir (Dwarf *dbg)
+{
+  if (dbg->elfpath == NULL || dbg->elfpath[0] != '/')
+    return;
+  size_t dirlen = strrchr (dbg->elfpath, '/') - dbg->elfpath + 1;
+  dbg->debugdir = malloc (dirlen + 1);
+  if (dbg->debugdir == NULL)
+    return;
+  memcpy (dbg->debugdir, dbg->elfpath, dirlen);
+  dbg->debugdir[dirlen] = '\0';
 }
 
 
@@ -420,7 +424,10 @@
     }
 
   if (result != NULL)
-    result->debugdir = __libdw_debugdir (result->elf->fildes);
+    {
+      result->elfpath = __libdw_elfpath (result->elf->fildes);
+      __libdw_set_debugdir(result);
+    }
 
   return result;
 }
diff --git a/libdw/dwarf_end.c b/libdw/dwarf_end.c
index 8dd075c..e51d5dd 100644
--- a/libdw/dwarf_end.c
+++ b/libdw/dwarf_end.c
@@ -144,7 +144,8 @@
 	  close (dwarf->alt_fd);
 	}
 
-      /* The cached dir we found the Dwarf ELF file in.  */
+      /* The cached path and dir we found the Dwarf ELF file in.  */
+      free (dwarf->elfpath);
       free (dwarf->debugdir);
 
       /* Free the context descriptor.  */
diff --git a/libdw/dwarf_entrypc.c b/libdw/dwarf_entrypc.c
index 0ef3b0e..543567d 100644
--- a/libdw/dwarf_entrypc.c
+++ b/libdw/dwarf_entrypc.c
@@ -37,12 +37,10 @@
 int
 dwarf_entrypc (Dwarf_Die *die, Dwarf_Addr *return_addr)
 {
-  Dwarf_Attribute attr_mem;
-
-  return INTUSE(dwarf_formaddr) (INTUSE(dwarf_attr) (die, DW_AT_entry_pc,
-						     &attr_mem)
-				 ?: INTUSE(dwarf_attr) (die, DW_AT_low_pc,
-							&attr_mem),
-				 return_addr);
+  Dwarf_Attribute attr_mem, *attr;
+  if ((attr = INTUSE(dwarf_attr) (die, DW_AT_entry_pc, &attr_mem)) != NULL)
+    return INTUSE(dwarf_formaddr) (attr, return_addr);
+  else
+    return INTUSE(dwarf_lowpc) (die, return_addr);
 }
 INTDEF(dwarf_entrypc)
diff --git a/libdw/dwarf_getaranges.c b/libdw/dwarf_getaranges.c
index de5b81b..27439d3 100644
--- a/libdw/dwarf_getaranges.c
+++ b/libdw/dwarf_getaranges.c
@@ -1,5 +1,6 @@
 /* Return list address ranges.
    Copyright (C) 2000-2010, 2016, 2017 Red Hat, Inc.
+   Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
@@ -124,6 +125,10 @@
 			 && length <= DWARF3_LENGTH_MAX_ESCAPE_CODE))
 	goto invalid;
 
+      const unsigned char *endp = readp + length;
+      if (unlikely (endp > readendp))
+	goto invalid;
+
       if (unlikely (readp + 2 > readendp))
 	goto invalid;
 
@@ -182,9 +187,17 @@
 	  else
 	    range_length = read_8ubyte_unaligned_inc (dbg, readp);
 
-	  /* Two zero values mark the end.  */
+	  /* Two zero values mark the end.  But in some cases (bugs)
+	     there might be such entries in the middle of the table.
+	     Ignore and continue, we'll check the actual length of
+	     the table to see if we are really at the end.  */
 	  if (range_address == 0 && range_length == 0)
-	    break;
+	    {
+	      if (readp >= endp)
+		break;
+	      else
+		continue;
+	    }
 
 	  /* We don't use alloca for these temporary structures because
 	     the total number of them can be quite large.  */
diff --git a/libdw/dwarf_getmacros.c b/libdw/dwarf_getmacros.c
index fd92966..a3a7888 100644
--- a/libdw/dwarf_getmacros.c
+++ b/libdw/dwarf_getmacros.c
@@ -124,17 +124,24 @@
     = INTUSE(dwarf_attr) (cudie, DW_AT_stmt_list, &attr_mem);
   Dwarf_Off line_offset = (Dwarf_Off) -1;
   if (attr != NULL)
-    if (unlikely (INTUSE(dwarf_formudata) (attr, &line_offset) != 0))
-      return NULL;
+    {
+      if (unlikely (INTUSE(dwarf_formudata) (attr, &line_offset) != 0))
+	return NULL;
+    }
+  else if (cudie->cu->unit_type == DW_UT_split_compile
+	   && dbg->sectiondata[IDX_debug_line] != NULL)
+    line_offset = 0;
 
   Dwarf_Macro_Op_Table *table = libdw_alloc (dbg, Dwarf_Macro_Op_Table,
 					     macinfo_data_size, 1);
   memcpy (table, macinfo_data, macinfo_data_size);
 
+  table->dbg = dbg;
   table->offset = macoff;
   table->sec_index = IDX_debug_macinfo;
   table->line_offset = line_offset;
-  table->is_64bit = cudie->cu->address_size == 8;
+  table->address_size = cudie->cu->address_size;
+  table->offset_size = cudie->cu->offset_size;
   table->comp_dir = __libdw_getcompdir (cudie);
 
   return table;
@@ -182,6 +189,15 @@
 	  return NULL;
     }
 
+  uint8_t address_size;
+  if (cudie != NULL)
+    address_size = cudie->cu->address_size;
+  else
+    {
+      char *ident = elf_getident (dbg->elf, NULL);
+      address_size = ident[EI_CLASS] == ELFCLASS32 ? 4 : 8;
+    }
+
   /* """The macinfo entry types defined in this standard may, but
      might not, be described in the table""".
 
@@ -253,12 +269,14 @@
 					     macop_table_size, 1);
 
   *table = (Dwarf_Macro_Op_Table) {
+    .dbg = dbg,
     .offset = macoff,
     .sec_index = IDX_debug_macro,
     .line_offset = line_offset,
     .header_len = readp - startp,
     .version = version,
-    .is_64bit = is_64bit,
+    .address_size = address_size,
+    .offset_size = is_64bit ? 8 : 4,
 
     /* NULL if CUDIE is NULL or DW_AT_comp_dir is absent.  */
     .comp_dir = __libdw_getcompdir (cudie),
@@ -368,7 +386,7 @@
 	.dbg = dbg,
 	.sec_idx = sec_index,
 	.version = table->version,
-	.offset_size = table->is_64bit ? 8 : 4,
+	.offset_size = table->offset_size,
 	.str_off_base = str_offsets_base_off (dbg, (cudie != NULL
 						    ? cudie->cu: NULL)),
 	.startp = (void *) startp + offset,
diff --git a/libdw/dwarf_macro_getsrcfiles.c b/libdw/dwarf_macro_getsrcfiles.c
index 3b1794b..11c587a 100644
--- a/libdw/dwarf_macro_getsrcfiles.c
+++ b/libdw/dwarf_macro_getsrcfiles.c
@@ -36,6 +36,9 @@
 dwarf_macro_getsrcfiles (Dwarf *dbg, Dwarf_Macro *macro,
 			 Dwarf_Files **files, size_t *nfiles)
 {
+  /* This was needed before Dwarf_Macro_Op_Table stored the Dwarf handle.  */
+  (void)dbg;
+
   /* macro is declared NN */
   Dwarf_Macro_Op_Table *const table = macro->table;
   if (table->files == NULL)
@@ -71,9 +74,8 @@
 	 the same unit through dwarf_getsrcfiles, and the file names
 	 will be broken.  */
 
-      if (__libdw_getsrclines (dbg, line_offset, table->comp_dir,
-			       table->is_64bit ? 8 : 4,
-			       NULL, &table->files) < 0)
+      if (__libdw_getsrclines (table->dbg, line_offset, table->comp_dir,
+			       table->address_size, NULL, &table->files) < 0)
 	table->files = (void *) -1;
     }
 
diff --git a/libdw/dwarf_macro_param2.c b/libdw/dwarf_macro_param2.c
index cc902c9..f12e6f9 100644
--- a/libdw/dwarf_macro_param2.c
+++ b/libdw/dwarf_macro_param2.c
@@ -44,12 +44,21 @@
   if (dwarf_macro_param (macro, 1, &param) != 0)
     return -1;
 
-  if (param.form == DW_FORM_string
-      || param.form == DW_FORM_strp)
+  switch (param.form)
     {
-      *strp = dwarf_formstring (&param);
-      return 0;
+      /* String forms allowed by libdw_valid_user_form.  */
+      case DW_FORM_line_strp:
+      case DW_FORM_string:
+      case DW_FORM_strp:
+      case DW_FORM_strp_sup:
+      case DW_FORM_strx:
+      case DW_FORM_strx1:
+      case DW_FORM_strx2:
+      case DW_FORM_strx3:
+      case DW_FORM_strx4:
+	*strp = dwarf_formstring (&param);
+	return 0;
+      default:
+	return dwarf_formudata (&param, paramp);
     }
-  else
-    return dwarf_formudata (&param, paramp);
 }
diff --git a/libdw/dwarf_ranges.c b/libdw/dwarf_ranges.c
index 520f9ff..b853e4b 100644
--- a/libdw/dwarf_ranges.c
+++ b/libdw/dwarf_ranges.c
@@ -489,10 +489,10 @@
 
   size_t secidx = (cu->version < 5 ? IDX_debug_ranges : IDX_debug_rnglists);
   const Elf_Data *d = cu->dbg->sectiondata[secidx];
-  if (d == NULL && cu->unit_type == DW_UT_split_compile)
+  if (cu->unit_type == DW_UT_split_compile && (d == NULL || is_cudie (die)))
     {
       Dwarf_CU *skel = __libdw_find_split_unit (cu);
-      if (skel != NULL)
+      if (skel != NULL && skel->dbg->sectiondata[secidx] != NULL)
 	{
 	  cu = skel;
 	  d = cu->dbg->sectiondata[secidx];
diff --git a/libdw/libdwP.h b/libdw/libdwP.h
index 5cbdc27..aef4226 100644
--- a/libdw/libdwP.h
+++ b/libdw/libdwP.h
@@ -82,6 +82,8 @@
     IDX_debug_macro,
     IDX_debug_ranges,
     IDX_debug_rnglists,
+    IDX_debug_cu_index,
+    IDX_debug_tu_index,
     IDX_gnu_debugaltlink,
     IDX_last
   };
@@ -166,6 +168,10 @@
   /* The underlying ELF file.  */
   Elf *elf;
 
+  /* The (absolute) path to the ELF file, if known.  To help locating
+     dwp files.  */
+  char *elfpath;
+
   /* The (absolute) path to the ELF dir, if known.  To help locating
      alt and dwo files.  */
   char *debugdir;
@@ -508,6 +514,8 @@
 /* Prototype table.  */
 typedef struct
 {
+  Dwarf *dbg;
+
   /* Offset of .debug_macro section.  */
   Dwarf_Off offset;
 
@@ -526,7 +534,8 @@
   Dwarf_Half header_len;
 
   uint16_t version;
-  bool is_64bit;
+  uint8_t address_size;
+  uint8_t offset_size;
   uint8_t sec_index;	/* IDX_debug_macro or IDX_debug_macinfo.  */
 
   /* Shows where in TABLE each opcode is defined.  Since opcode 0 is
@@ -1345,9 +1354,13 @@
 int __libdw_addrx (Dwarf_CU *cu, Dwarf_Word idx, Dwarf_Addr *addr);
 
 
-/* Helper function to set debugdir field in Dwarf, used from dwarf_begin_elf
+/* Helper function to set elfpath field in Dwarf, used from dwarf_begin_elf
    and libdwfl process_file.  */
-char * __libdw_debugdir (int fd);
+char * __libdw_elfpath (int fd);
+
+/* Helper function to set debugdir field in Dwarf after elfpath field has been
+   set.  */
+void __libdw_set_debugdir (Dwarf *dbg);
 
 
 /* Given the directory of a debug file, an absolute or relative dir
diff --git a/libdw/libdw_find_split_unit.c b/libdw/libdw_find_split_unit.c
index a22e7bc..533f807 100644
--- a/libdw/libdw_find_split_unit.c
+++ b/libdw/libdw_find_split_unit.c
@@ -41,7 +41,7 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-void
+static void
 try_split_file (Dwarf_CU *cu, const char *dwo_path)
 {
   int split_fd = open (dwo_path, O_RDONLY);
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index daef282..abbf0df 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,16 @@
+2023-09-27  Omar Sandoval  <osandov@fb.com>
+	* dwfl_module.c (__libdwfl_module_free): Free mod->elfpath instead of
+	mod->elfdir.
+	* dwfl_module_getdwarf.c (load_dw): Set mod->dw->elfpath and call
+	__libdw_set_debugdir instead of setting mod->dw->debugdir.
+	* libdwflP.h (Dwfl_Module): Replace elfdir with elfpath.
+	* offline.c (process_elf): Call __libdw_elfpath and set mod->elfpath
+	instead of mod->elfdir.
+
+2023-04-24  John Gallagher  <john@gllghr.com>
+
+	* gzip.c: Fix memory leak in unzip()
+
 2023-02-06  Mark Wielaard  <mark@klomp.org>
 
 	* libdwfl.h: Guard debuginfod_client typedef with
diff --git a/libdwfl/dwfl_module.c b/libdwfl/dwfl_module.c
index 221d726..c4d872d 100644
--- a/libdwfl/dwfl_module.c
+++ b/libdwfl/dwfl_module.c
@@ -119,7 +119,7 @@
     free (mod->reloc_info);
 
   free (mod->name);
-  free (mod->elfdir);
+  free (mod->elfpath);
   free (mod);
 }
 
diff --git a/libdwfl/dwfl_module_getdwarf.c b/libdwfl/dwfl_module_getdwarf.c
index 9ba499b..6f98c02 100644
--- a/libdwfl/dwfl_module_getdwarf.c
+++ b/libdwfl/dwfl_module_getdwarf.c
@@ -1362,11 +1362,14 @@
     }
 
   /* We might have already closed the fd when we asked dwarf_begin_elf to
-     create an Dwarf.  Help out a little in case we need to find an alt or
-     dwo file later.  */
-  if (mod->dw->debugdir == NULL && mod->elfdir != NULL
+     create an Dwarf.  Help out a little in case we need to find an alt,
+     dwo, or dwp file later.  */
+  if (mod->dw->elfpath == NULL && mod->elfpath != NULL
       && debugfile == &mod->main)
-    mod->dw->debugdir = strdup (mod->elfdir);
+    {
+      mod->dw->elfpath = strdup (mod->elfpath);
+      __libdw_set_debugdir (mod->dw);
+    }
 
   /* Until we have iterated through all CU's, we might do lazy lookups.  */
   mod->lazycu = 1;
diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c
index 53013be..002afc4 100644
--- a/libdwfl/gzip.c
+++ b/libdwfl/gzip.c
@@ -227,7 +227,7 @@
 #endif
       )
     /* Not a compressed file.  */
-    return DWFL_E_BADELF;
+    return fail (&state, DWFL_E_BADELF);
 
 #ifdef ZSTD
   /* special case for libzstd since it is slightly different from the
diff --git a/libdwfl/libdwflP.h b/libdwfl/libdwflP.h
index cdc528d..b3dfea1 100644
--- a/libdwfl/libdwflP.h
+++ b/libdwfl/libdwflP.h
@@ -186,7 +186,7 @@
   Elf_Data *symxndxdata;	/* Data in the extended section index table. */
   Elf_Data *aux_symxndxdata;	/* Data in the extended auxiliary table. */
 
-  char *elfdir;			/* The dir where we found the main Elf.  */
+  char *elfpath;		/* The path where we found the main Elf.  */
 
   Dwarf *dw;			/* libdw handle for its debugging info.  */
   Dwarf *alt;			/* Dwarf used for dwarf_setalt, or NULL.  */
diff --git a/libdwfl/link_map.c b/libdwfl/link_map.c
index 06d85eb..76f2335 100644
--- a/libdwfl/link_map.c
+++ b/libdwfl/link_map.c
@@ -331,11 +331,17 @@
   int result = 0;
 
   /* There can't be more elements in the link_map list than there are
-     segments.  DWFL->lookup_elts is probably twice that number, so it
-     is certainly above the upper bound.  If we iterate too many times,
-     there must be a loop in the pointers due to link_map clobberation.  */
+     segments.  A segment is created for each PT_LOAD and there can be
+     up to 5 per module (-z separate-code, tends to create four LOAD
+     segments, gold has -z text-unlikely-segment, which might result
+     in creating that number of load segments) DWFL->lookup_elts is
+     probably twice the number of modules, so that multiplied by max
+     PT_LOADs is certainly above the upper bound.  If we iterate too
+     many times, there must be a loop in the pointers due to link_map
+     clobberation.  */
+#define MAX_PT_LOAD 5
   size_t iterations = 0;
-  while (next != 0 && ++iterations < dwfl->lookup_elts)
+  while (next != 0 && ++iterations < dwfl->lookup_elts * MAX_PT_LOAD)
     {
       if (read_addrs (&memory_closure, elfclass, elfdata,
 		      &buffer, &buffer_available, next, &read_vaddr,
diff --git a/libdwfl/offline.c b/libdwfl/offline.c
index e090b42..e9ab0cc 100644
--- a/libdwfl/offline.c
+++ b/libdwfl/offline.c
@@ -50,10 +50,11 @@
 			      const GElf_Shdr *shdr __attribute__ ((unused)),
 			      Dwarf_Addr *addr)
 {
-  assert (mod->e_type == ET_REL);
-  assert (shdr->sh_addr == 0);
-  assert (shdr->sh_flags & SHF_ALLOC);
-  assert (shndx != 0);
+  if (mod->e_type != ET_REL
+      || shdr->sh_addr != 0
+      || !(shdr->sh_flags & SHF_ALLOC)
+      || shndx == 0)
+    return -1;
 
   if (mod->debug.elf == NULL)
     /* We are only here because sh_addr is zero even though layout is complete.
@@ -151,9 +152,9 @@
       /* Don't keep the file descriptor around.  */
       if (mod->main.fd != -1 && elf_cntl (mod->main.elf, ELF_C_FDREAD) == 0)
 	{
-	  /* Grab the dir path in case we want to report this file as
+	  /* Grab the path in case we want to report this file as
 	     Dwarf later.  */
-	  mod->elfdir = __libdw_debugdir (mod->main.fd);
+	  mod->elfpath = __libdw_elfpath (mod->main.fd);
 	  close (mod->main.fd);
 	  mod->main.fd = -1;
 	}
diff --git a/libebl/eblsectiontypename.c b/libebl/eblsectiontypename.c
index 2008b95..ade25d4 100644
--- a/libebl/eblsectiontypename.c
+++ b/libebl/eblsectiontypename.c
@@ -61,7 +61,8 @@
 	  KNOWNSTYPE (FINI_ARRAY),
 	  KNOWNSTYPE (PREINIT_ARRAY),
 	  KNOWNSTYPE (GROUP),
-	  KNOWNSTYPE (SYMTAB_SHNDX)
+	  KNOWNSTYPE (SYMTAB_SHNDX),
+	  KNOWNSTYPE (RELR)
 	};
 
       /* Handle standard names.  */
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index 8cc3c53..0e314ab 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,11 @@
+2023-09-09  Yanglin Xun  <xunyanglins@gmail.com>
+
+ * libelf.h: Fix typo in comment
+
+2023-04-01  Youling Tang  <tangyouling@loongson.cn>
+
+	* elf.h: Update from glibc.
+
 2023-03-03  Mark Wielaard  <mark@klomp.org>
 
 	* libelf.h: Define ELFCOMPRESS_ZSTD if undefined.
diff --git a/libelf/Makefile.am b/libelf/Makefile.am
index aabce43..3402863 100644
--- a/libelf/Makefile.am
+++ b/libelf/Makefile.am
@@ -41,7 +41,7 @@
 
 noinst_HEADERS = abstract.h common.h exttypes.h gelf_xlate.h libelfP.h \
 		 version_xlate.h gnuhash_xlate.h note_xlate.h dl-hash.h \
-		 chdr_xlate.h
+		 chdr_xlate.h elf32_getchdr.h
 
 if INSTALL_ELFH
 include_HEADERS += elf.h
diff --git a/libelf/elf.h b/libelf/elf.h
index da41bad..7b4a8fe 100644
--- a/libelf/elf.h
+++ b/libelf/elf.h
@@ -1,5 +1,5 @@
 /* This file defines standard ELF types, structures, and macros.
-   Copyright (C) 1995-2022 Free Software Foundation, Inc.
+   Copyright (C) 1995-2023 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -210,7 +210,7 @@
 #define EM_68HC12	53	/* Motorola M68HC12 */
 #define EM_MMA		54	/* Fujitsu MMA Multimedia Accelerator */
 #define EM_PCP		55	/* Siemens PCP */
-#define EM_NCPU		56	/* Sony nCPU embeeded RISC */
+#define EM_NCPU		56	/* Sony nCPU embedded RISC */
 #define EM_NDR1		57	/* Denso NDR1 microprocessor */
 #define EM_STARCORE	58	/* Motorola Start*Core processor */
 #define EM_ME16		59	/* Toyota ME16 processor */
@@ -559,7 +559,7 @@
 
 /* Possible bitmasks for si_flags.  */
 #define SYMINFO_FLG_DIRECT	0x0001	/* Direct bound symbol */
-#define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-thru symbol for translator */
+#define SYMINFO_FLG_PASSTHRU	0x0002	/* Pass-through symbol for translator */
 #define SYMINFO_FLG_COPY	0x0004	/* Symbol is a copy-reloc */
 #define SYMINFO_FLG_LAZYLOAD	0x0008	/* Symbol bound to object to be lazy
 					   loaded */
@@ -728,6 +728,7 @@
 #define PT_GNU_STACK	0x6474e551	/* Indicates stack executability */
 #define PT_GNU_RELRO	0x6474e552	/* Read-only after relocation */
 #define PT_GNU_PROPERTY	0x6474e553	/* GNU property */
+#define PT_GNU_SFRAME	0x6474e554	/* SFrame segment.  */
 #define PT_LOSUNW	0x6ffffffa
 #define PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
 #define PT_SUNWSTACK	0x6ffffffb	/* Stack segment */
@@ -1223,6 +1224,9 @@
 #define AT_HWCAP2	26		/* More machine-dependent hints about
 					   processor capabilities.  */
 
+#define AT_RSEQ_FEATURE_SIZE	27	/* rseq supported feature size.  */
+#define AT_RSEQ_ALIGN	28		/* rseq allocation alignment.  */
+
 #define AT_EXECFN	31		/* Filename of executable.  */
 
 /* Pointer to the global system page used for system calls and other
@@ -1681,11 +1685,25 @@
 #define EF_MIPS_PIC		2     /* Contains PIC code.  */
 #define EF_MIPS_CPIC		4     /* Uses PIC calling sequence.  */
 #define EF_MIPS_XGOT		8
-#define EF_MIPS_64BIT_WHIRL	16
+#define EF_MIPS_UCODE		16
 #define EF_MIPS_ABI2		32
 #define EF_MIPS_ABI_ON32	64
+#define EF_MIPS_OPTIONS_FIRST	0x00000080 /* Process the .MIPS.options
+					      section first by ld.  */
+#define EF_MIPS_32BITMODE	0x00000100 /* Indicates code compiled for
+					      a 64-bit machine in 32-bit
+					      mode (regs are 32-bits
+					      wide).  */
 #define EF_MIPS_FP64		512  /* Uses FP64 (12 callee-saved).  */
 #define EF_MIPS_NAN2008	1024  /* Uses IEEE 754-2008 NaN encoding.  */
+#define EF_MIPS_ARCH_ASE	0x0f000000 /* Architectural Extensions
+					      used by this file.  */
+#define EF_MIPS_ARCH_ASE_MDMX	0x08000000 /* Use MDMX multimedia
+					      extensions.  */
+#define EF_MIPS_ARCH_ASE_M16	0x04000000 /* Use MIPS-16 ISA
+					      extensions.  */
+#define EF_MIPS_ARCH_ASE_MICROMIPS	0x02000000 /* Use MICROMIPS ISA
+						      extensions.  */
 #define EF_MIPS_ARCH		0xf0000000 /* MIPS architecture level.  */
 
 /* Legal values for MIPS architecture level.  */
@@ -1699,6 +1717,38 @@
 #define EF_MIPS_ARCH_64		0x60000000 /* MIPS64 code.  */
 #define EF_MIPS_ARCH_32R2	0x70000000 /* MIPS32r2 code.  */
 #define EF_MIPS_ARCH_64R2	0x80000000 /* MIPS64r2 code.  */
+#define EF_MIPS_ARCH_32R6	0x90000000 /* MIPS32r6 code.  */
+#define EF_MIPS_ARCH_64R6	0xa0000000 /* MIPS64r6 code.  */
+#define EF_MIPS_ABI		0x0000F000 /* The ABI of the file.  Also
+					      see EF_MIPS_ABI2 above.  */
+#define EF_MIPS_ABI_O32		0x00001000 /* The original o32 abi.  */
+#define EF_MIPS_ABI_O64		0x00002000 /* O32 extended to work on
+					      64 bit architectures.  */
+#define EF_MIPS_ABI_EABI32	0x00003000 /* EABI in 32 bit mode.  */
+#define EF_MIPS_ABI_EABI64	0x00004000 /* EABI in 64 bit mode.  */
+#define EF_MIPS_MACH		0x00FF0000
+#define EF_MIPS_MACH_3900	0x00810000
+#define EF_MIPS_MACH_4010	0x00820000
+#define EF_MIPS_MACH_4100	0x00830000
+#define EF_MIPS_MACH_ALLEGREX	0x00840000
+#define EF_MIPS_MACH_4650	0x00850000
+#define EF_MIPS_MACH_4120	0x00870000
+#define EF_MIPS_MACH_4111	0x00880000
+#define EF_MIPS_MACH_SB1	0x008a0000
+#define EF_MIPS_MACH_OCTEON	0x008b0000
+#define EF_MIPS_MACH_XLR	0x008c0000
+#define EF_MIPS_MACH_OCTEON2	0x008d0000
+#define EF_MIPS_MACH_OCTEON3	0x008e0000
+#define EF_MIPS_MACH_5400	0x00910000
+#define EF_MIPS_MACH_5900	0x00920000
+#define EF_MIPS_MACH_IAMR2	0x00930000
+#define EF_MIPS_MACH_5500	0x00980000
+#define EF_MIPS_MACH_9000	0x00990000
+#define EF_MIPS_MACH_LS2E	0x00A00000
+#define EF_MIPS_MACH_LS2F	0x00A10000
+#define EF_MIPS_MACH_GS464	0x00A20000
+#define EF_MIPS_MACH_GS464E	0x00A30000
+#define EF_MIPS_MACH_GS264E	0x00A40000
 
 /* The following are unofficial names and should not be used.  */
 
@@ -1759,6 +1809,7 @@
 #define SHT_MIPS_EH_REGION	0x70000027
 #define SHT_MIPS_XLATE_OLD	0x70000028
 #define SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define SHT_MIPS_ABIFLAGS	0x7000002a
 #define SHT_MIPS_XHASH		0x7000002b
 
 /* Legal values for sh_flags field of Elf32_Shdr.  */
@@ -1927,10 +1978,68 @@
 #define R_MIPS_TLS_TPREL_HI16	49	/* TP-relative offset, high 16 bits */
 #define R_MIPS_TLS_TPREL_LO16	50	/* TP-relative offset, low 16 bits */
 #define R_MIPS_GLOB_DAT		51
+#define R_MIPS_PC21_S2		60
+#define R_MIPS_PC26_S2		61
+#define R_MIPS_PC18_S3		62
+#define R_MIPS_PC19_S2		63
+#define R_MIPS_PCHI16		64
+#define R_MIPS_PCLO16		65
+#define R_MIPS16_26		100
+#define R_MIPS16_GPREL		101
+#define R_MIPS16_GOT16		102
+#define R_MIPS16_CALL16		103
+#define R_MIPS16_HI16		104
+#define R_MIPS16_LO16		105
+#define R_MIPS16_TLS_GD		106
+#define R_MIPS16_TLS_LDM	107
+#define R_MIPS16_TLS_DTPREL_HI16	108
+#define R_MIPS16_TLS_DTPREL_LO16	109
+#define R_MIPS16_TLS_GOTTPREL	110
+#define R_MIPS16_TLS_TPREL_HI16	111
+#define R_MIPS16_TLS_TPREL_LO16	112
+#define R_MIPS16_PC16_S1	113
 #define R_MIPS_COPY		126
 #define R_MIPS_JUMP_SLOT        127
+#define R_MIPS_RELATIVE		128
+#define R_MICROMIPS_26_S1	133
+#define R_MICROMIPS_HI16	134
+#define R_MICROMIPS_LO16	135
+#define R_MICROMIPS_GPREL16	136
+#define R_MICROMIPS_LITERAL	137
+#define R_MICROMIPS_GOT16	138
+#define R_MICROMIPS_PC7_S1	139
+#define R_MICROMIPS_PC10_S1	140
+#define R_MICROMIPS_PC16_S1	141
+#define R_MICROMIPS_CALL16	142
+#define R_MICROMIPS_GOT_DISP	145
+#define R_MICROMIPS_GOT_PAGE	146
+#define R_MICROMIPS_GOT_OFST	147
+#define R_MICROMIPS_GOT_HI16	148
+#define R_MICROMIPS_GOT_LO16	149
+#define R_MICROMIPS_SUB		150
+#define R_MICROMIPS_HIGHER	151
+#define R_MICROMIPS_HIGHEST	152
+#define R_MICROMIPS_CALL_HI16	153
+#define R_MICROMIPS_CALL_LO16	154
+#define R_MICROMIPS_SCN_DISP	155
+#define R_MICROMIPS_JALR	156
+#define R_MICROMIPS_HI0_LO16	157
+#define R_MICROMIPS_TLS_GD	162
+#define R_MICROMIPS_TLS_LDM	163
+#define R_MICROMIPS_TLS_DTPREL_HI16	164
+#define R_MICROMIPS_TLS_DTPREL_LO16	165
+#define R_MICROMIPS_TLS_GOTTPREL	166
+#define R_MICROMIPS_TLS_TPREL_HI16	169
+#define R_MICROMIPS_TLS_TPREL_LO16	170
+#define R_MICROMIPS_GPREL7_S2	172
+#define R_MICROMIPS_PC23_S2	173
+#define R_MIPS_PC32		248
+#define R_MIPS_EH		249
+#define R_MIPS_GNU_REL16_S2	250
+#define R_MIPS_GNU_VTINHERIT	253
+#define R_MIPS_GNU_VTENTRY	254
 /* Keep this the last entry.  */
-#define R_MIPS_NUM		128
+#define R_MIPS_NUM		255
 
 /* Legal values for p_type field of Elf32_Phdr.  */
 
@@ -3998,8 +4107,11 @@
 #define R_RISCV_SET32		56
 #define R_RISCV_32_PCREL	57
 #define R_RISCV_IRELATIVE	58
+#define R_RISCV_PLT32		59
+#define R_RISCV_SET_ULEB128	60
+#define R_RISCV_SUB_ULEB128	61
 
-#define R_RISCV_NUM		59
+#define R_RISCV_NUM		62
 
 /* RISC-V specific values for the st_other field.  */
 #define STO_RISCV_VARIANT_CC	0x80	/* Function uses variant calling
@@ -4159,6 +4271,55 @@
 #define R_LARCH_GNU_VTINHERIT  57
 #define R_LARCH_GNU_VTENTRY  58
 
+/* reserved 59-63 */
+
+#define R_LARCH_B16 64
+#define R_LARCH_B21 65
+#define R_LARCH_B26 66
+#define R_LARCH_ABS_HI20 67
+#define R_LARCH_ABS_LO12 68
+#define R_LARCH_ABS64_LO20 69
+#define R_LARCH_ABS64_HI12 70
+#define R_LARCH_PCALA_HI20 71
+#define R_LARCH_PCALA_LO12 72
+#define R_LARCH_PCALA64_LO20 73
+#define R_LARCH_PCALA64_HI12 74
+#define R_LARCH_GOT_PC_HI20 75
+#define R_LARCH_GOT_PC_LO12 76
+#define R_LARCH_GOT64_PC_LO20 77
+#define R_LARCH_GOT64_PC_HI12 78
+#define R_LARCH_GOT_HI20 79
+#define R_LARCH_GOT_LO12 80
+#define R_LARCH_GOT64_LO20 81
+#define R_LARCH_GOT64_HI12 82
+#define R_LARCH_TLS_LE_HI20 83
+#define R_LARCH_TLS_LE_LO12 84
+#define R_LARCH_TLS_LE64_LO20 85
+#define R_LARCH_TLS_LE64_HI12 86
+#define R_LARCH_TLS_IE_PC_HI20 87
+#define R_LARCH_TLS_IE_PC_LO12 88
+#define R_LARCH_TLS_IE64_PC_LO20 89
+#define R_LARCH_TLS_IE64_PC_HI12 90
+#define R_LARCH_TLS_IE_HI20 91
+#define R_LARCH_TLS_IE_LO12 92
+#define R_LARCH_TLS_IE64_LO20 93
+#define R_LARCH_TLS_IE64_HI12 94
+#define R_LARCH_TLS_LD_PC_HI20 95
+#define R_LARCH_TLS_LD_HI20 96
+#define R_LARCH_TLS_GD_PC_HI20 97
+#define R_LARCH_TLS_GD_HI20 98
+#define R_LARCH_32_PCREL 99
+#define R_LARCH_RELAX 100
+#define R_LARCH_DELETE 101
+#define R_LARCH_ALIGN 102
+#define R_LARCH_PCREL20_S2 103
+#define R_LARCH_CFA 104
+#define R_LARCH_ADD6 105
+#define R_LARCH_SUB6 106
+#define R_LARCH_ADD_ULEB128 107
+#define R_LARCH_SUB_ULEB128 108
+#define R_LARCH_64_PCREL 109
+
 /* ARC specific declarations.  */
 
 /* Processor specific flags for the Ehdr e_flags field.  */
diff --git a/libelf/elf32_getchdr.c b/libelf/elf32_getchdr.c
index 982a614..4159130 100644
--- a/libelf/elf32_getchdr.c
+++ b/libelf/elf32_getchdr.c
@@ -38,46 +38,8 @@
 # define LIBELFBITS 32
 #endif
 
+#define ELF_WRLOCK_HELD 1
+#include "elf32_getchdr.h"
 
-ElfW2(LIBELFBITS,Chdr) *
-elfw2(LIBELFBITS,getchdr) (Elf_Scn *scn)
-{
-  ElfW2(LIBELFBITS,Shdr) *shdr = elfw2(LIBELFBITS,getshdr) (scn);
-  if (shdr == NULL)
-    return NULL;
-
-  /* Must have SHF_COMPRESSED flag set.  Allocated or no bits sections
-     can never be compressed.  */
-  if ((shdr->sh_flags & SHF_ALLOC) != 0)
-    {
-      __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS);
-      return NULL;
-    }
-
-  if (shdr->sh_type == SHT_NULL
-      || shdr->sh_type == SHT_NOBITS)
-    {
-      __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE);
-      return NULL;
-    }
-
-  if ((shdr->sh_flags & SHF_COMPRESSED) == 0)
-    {
-      __libelf_seterrno (ELF_E_NOT_COMPRESSED);
-      return NULL;
-    }
-
-  /* This makes sure the data is in the correct format, so we don't
-     need to swap fields. */
-  Elf_Data *d  = elf_getdata (scn, NULL);
-  if (d == NULL)
-    return NULL;
-
-  if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL)
-    {
-      __libelf_seterrno (ELF_E_INVALID_DATA);
-      return NULL;
-    }
-
-  return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf;
-}
+#define ELF_WRLOCK_HELD 0
+#include "elf32_getchdr.h"
\ No newline at end of file
diff --git a/libelf/elf32_getchdr.h b/libelf/elf32_getchdr.h
new file mode 100644
index 0000000..04d47e7
--- /dev/null
+++ b/libelf/elf32_getchdr.h
@@ -0,0 +1,61 @@
+#undef ADD_ROUTINE_PREFIX
+#undef ADD_ROUTINE_SUFFIX
+
+#if ELF_WRLOCK_HELD
+#define CONCAT(x,y) x##y
+#define ADD_ROUTINE_PREFIX(y) CONCAT(__,y)
+#define ADD_ROUTINE_SUFFIX(x) x ## _wrlock
+#define INTERNAL internal_function
+#else
+#define ADD_ROUTINE_PREFIX(y) y
+#define ADD_ROUTINE_SUFFIX(x) x
+#define INTERNAL
+#endif
+
+ElfW2(LIBELFBITS,Chdr) *
+INTERNAL
+ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getchdr))) (Elf_Scn *scn)
+{
+
+  ElfW2(LIBELFBITS,Shdr) *shdr = ADD_ROUTINE_PREFIX(elfw2(LIBELFBITS, ADD_ROUTINE_SUFFIX(getshdr)))(scn);
+
+  if (shdr == NULL)
+    return NULL;
+
+  /* Must have SHF_COMPRESSED flag set.  Allocated or no bits sections
+     can never be compressed.  */
+  if ((shdr->sh_flags & SHF_ALLOC) != 0)
+    {
+      __libelf_seterrno (ELF_E_INVALID_SECTION_FLAGS);
+      return NULL;
+    }
+
+  if (shdr->sh_type == SHT_NULL
+      || shdr->sh_type == SHT_NOBITS)
+    {
+      __libelf_seterrno (ELF_E_INVALID_SECTION_TYPE);
+      return NULL;
+    }
+
+  if ((shdr->sh_flags & SHF_COMPRESSED) == 0)
+    {
+      __libelf_seterrno (ELF_E_NOT_COMPRESSED);
+      return NULL;
+    }
+
+  /* This makes sure the data is in the correct format, so we don't
+     need to swap fields. */
+  Elf_Data *d  = ADD_ROUTINE_PREFIX(ADD_ROUTINE_SUFFIX(elf_getdata)) (scn, NULL);
+  if (d == NULL)
+    return NULL;
+
+  if (d->d_size < sizeof (ElfW2(LIBELFBITS,Chdr)) || d->d_buf == NULL)
+    {
+      __libelf_seterrno (ELF_E_INVALID_DATA);
+      return NULL;
+    }
+
+  return (ElfW2(LIBELFBITS,Chdr) *) d->d_buf;
+}
+#undef INTERNAL
+#undef ELF_WRLOCK_HELD
\ No newline at end of file
diff --git a/libelf/elf32_updatenull.c b/libelf/elf32_updatenull.c
index 6c06e5e..3594e8b 100644
--- a/libelf/elf32_updatenull.c
+++ b/libelf/elf32_updatenull.c
@@ -256,6 +256,9 @@
 		case SHT_SUNW_syminfo:
 		  sh_entsize = elf_typesize (LIBELFBITS, ELF_T_SYMINFO, 1);
 		  break;
+		case SHT_RELR:
+		  sh_entsize = elf_typesize (LIBELFBITS, ELF_T_RELR, 1);
+		  break;
 		default:
 		  break;
 		}
@@ -404,7 +407,7 @@
 		  else
 		    {
 		      ElfW2(LIBELFBITS,Chdr) *chdr;
-		      chdr = elfw2(LIBELFBITS,getchdr) (scn);
+		      chdr = __elfw2(LIBELFBITS,getchdr_wrlock) (scn);
 		      if (unlikely (chdr == NULL))
 			return -1;
 		      sh_size = chdr->ch_size;
diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c
index e3ecab3..0ad6a32 100644
--- a/libelf/elf_compress.c
+++ b/libelf/elf_compress.c
@@ -1,5 +1,6 @@
 /* Compress or decompress a section.
    Copyright (C) 2015, 2016 Red Hat, Inc.
+   Copyright (C) 2023, Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -523,10 +524,20 @@
   if (scn->data_base != scn->rawdata_base)
     free (scn->data_base);
   scn->data_base = NULL;
+  if (scn->zdata_base != buf
+      && scn->zdata_base != scn->rawdata_base)
+    {
+      free (scn->zdata_base);
+      scn->zdata_base = NULL;
+    }
   if (scn->elf->map_address == NULL
       || scn->rawdata_base == scn->zdata_base
       || (scn->flags & ELF_F_MALLOCED) != 0)
-    free (scn->rawdata_base);
+    {
+      free (scn->rawdata_base);
+      scn->rawdata_base = NULL;
+      scn->zdata_base = NULL;
+    }
 
   scn->rawdata_base = buf;
   scn->flags |= ELF_F_MALLOCED;
@@ -677,6 +688,7 @@
 	 data around, but since that might have been multiple Elf_Data
 	 buffers let the user uncompress it explicitly again if they
 	 want it to simplify bookkeeping.  */
+      free (scn->zdata_base);
       scn->zdata_base = NULL;
 
       return 1;
diff --git a/libelf/elf_end.c b/libelf/elf_end.c
index 5c451f3..80f4d13 100644
--- a/libelf/elf_end.c
+++ b/libelf/elf_end.c
@@ -1,5 +1,6 @@
 /* Free resources associated with Elf descriptor.
    Copyright (C) 1998,1999,2000,2001,2002,2004,2005,2007,2015,2016 Red Hat, Inc.
+   Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 1998.
 
@@ -32,12 +33,22 @@
 #endif
 
 #include <assert.h>
+#include <search.h>
 #include <stddef.h>
 #include <stdlib.h>
 
 #include "libelfP.h"
 
 
+static void
+free_chunk (void *n)
+{
+  Elf_Data_Chunk *rawchunk = (Elf_Data_Chunk *)n;
+  if (rawchunk->dummy_scn.flags & ELF_F_MALLOCED)
+    free (rawchunk->data.d.d_buf);
+  free (rawchunk);
+}
+
 int
 elf_end (Elf *elf)
 {
@@ -71,7 +82,10 @@
       elf->state.ar.ar_sym = NULL;
 
       if (elf->state.ar.children != NULL)
-	return 0;
+	{
+	  rwlock_unlock(elf->lock);
+	  return 0;
+	}
     }
 
   /* Remove this structure from the children list.  */
@@ -112,20 +126,13 @@
 
     case ELF_K_ELF:
       {
-	Elf_Data_Chunk *rawchunks
+	void *rawchunks
 	  = (elf->class == ELFCLASS32
 	     || (offsetof (struct Elf, state.elf32.rawchunks)
 		 == offsetof (struct Elf, state.elf64.rawchunks))
 	     ? elf->state.elf32.rawchunks
 	     : elf->state.elf64.rawchunks);
-	while (rawchunks != NULL)
-	  {
-	    Elf_Data_Chunk *next = rawchunks->next;
-	    if (rawchunks->dummy_scn.flags & ELF_F_MALLOCED)
-	      free (rawchunks->data.d.d_buf);
-	    free (rawchunks);
-	    rawchunks = next;
-	  }
+	tdestroy (rawchunks, free_chunk);
 
 	Elf_ScnList *list = (elf->class == ELFCLASS32
 			     || (offsetof (struct Elf, state.elf32.scns)
@@ -153,7 +160,10 @@
 		   rawdata_base.  If it is already used it will be
 		   freed below.  */
 		if (scn->zdata_base != scn->rawdata_base)
-		  free (scn->zdata_base);
+		  {
+		    free (scn->zdata_base);
+		    scn->zdata_base = NULL;
+		  }
 
 		/* If the file has the same byte order and the
 		   architecture doesn't require overly stringent
diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c
index 5ebd270..7c3ac04 100644
--- a/libelf/elf_getdata.c
+++ b/libelf/elf_getdata.c
@@ -582,4 +582,18 @@
 
   return result;
 }
+
+Elf_Data *
+internal_function
+__elf_getdata_wrlock (Elf_Scn *scn, Elf_Data *data)
+{
+  Elf_Data *result;
+
+  if (scn == NULL)
+    return NULL;
+
+  result = __elf_getdata_rdlock (scn, data);
+
+  return result;
+}
 INTDEF(elf_getdata)
diff --git a/libelf/elf_getdata_rawchunk.c b/libelf/elf_getdata_rawchunk.c
index 5a35ccd..05ff329 100644
--- a/libelf/elf_getdata_rawchunk.c
+++ b/libelf/elf_getdata_rawchunk.c
@@ -1,6 +1,6 @@
 /* Return converted data from raw chunk of ELF file.
    Copyright (C) 2007, 2014, 2015 Red Hat, Inc.
-   Copyright (C) 2022 Mark J. Wielaard <mark@klomp.org>
+   Copyright (C) 2022, 2023 Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -33,12 +33,28 @@
 
 #include <assert.h>
 #include <errno.h>
+#include <search.h>
 #include <stdlib.h>
 #include <string.h>
 
 #include "libelfP.h"
 #include "common.h"
 
+static int
+chunk_compare (const void *a, const void *b)
+{
+  Elf_Data_Chunk *da = (Elf_Data_Chunk *)a;
+  Elf_Data_Chunk *db = (Elf_Data_Chunk *)b;
+
+  if (da->offset != db->offset)
+    return da->offset - db->offset;
+
+  if (da->data.d.d_size != db->data.d.d_size)
+    return da->data.d.d_size - db->data.d.d_size;
+
+  return da->data.d.d_type - db->data.d.d_type;
+}
+
 Elf_Data *
 elf_getdata_rawchunk (Elf *elf, int64_t offset, size_t size, Elf_Type type)
 {
@@ -75,19 +91,27 @@
   rwlock_rdlock (elf->lock);
 
   /* Maybe we already got this chunk?  */
-  Elf_Data_Chunk *rawchunks = elf->state.elf.rawchunks;
-  while (rawchunks != NULL)
+  Elf_Data_Chunk key;
+  key.offset = offset;
+  key.data.d.d_size = size;
+  key.data.d.d_type = type;
+  Elf_Data_Chunk **found = tsearch (&key, &elf->state.elf.rawchunks,
+				    &chunk_compare);
+  if (found == NULL)
+    goto nomem;
+
+  /* Existing entry.  */
+  if (*found != &key && *found != NULL)
     {
-      if ((rawchunks->offset == offset || size == 0)
-	  && rawchunks->data.d.d_size == size
-	  && rawchunks->data.d.d_type == type)
-	{
-	  result = &rawchunks->data.d;
-	  goto out;
-	}
-      rawchunks = rawchunks->next;
+      result = &(*found)->data.d;
+      goto out;
     }
 
+  /* New entry.  Note that *found will point to the newly inserted
+     (dummy) key.  We'll replace it with a real rawchunk when that is
+     setup.  Make sure to tdelete the dummy key if anything goes
+     wrong.  */
+
   size_t align = __libelf_type_align (elf->class, type);
   if (elf->map_address != NULL)
     {
@@ -112,6 +136,7 @@
       if (rawchunk == NULL)
 	{
 	nomem:
+	  tdelete (&key, &elf->state.elf.rawchunks, &chunk_compare);
 	  __libelf_seterrno (ELF_E_NOMEM);
 	  goto out;
 	}
@@ -122,6 +147,7 @@
 		    != size))
 	{
 	  /* Something went wrong.  */
+	  tdelete (&key, &elf->state.elf.rawchunks, &chunk_compare);
 	  free (rawchunk);
 	  __libelf_seterrno (ELF_E_READ_ERROR);
 	  goto out;
@@ -189,8 +215,7 @@
   rwlock_unlock (elf->lock);
   rwlock_wrlock (elf->lock);
 
-  chunk->next = elf->state.elf.rawchunks;
-  elf->state.elf.rawchunks = chunk;
+  *found = chunk;
   result = &chunk->data.d;
 
  out:
diff --git a/libelf/elf_newscn.c b/libelf/elf_newscn.c
index d6bdf15..ec731f7 100644
--- a/libelf/elf_newscn.c
+++ b/libelf/elf_newscn.c
@@ -94,9 +94,9 @@
 	  1
 #endif
 	  )
-      newp = calloc (sizeof (Elf_ScnList)
-		     + ((elf->state.elf.scnincr *= 2)
-			* sizeof (Elf_Scn)), 1);
+      newp = calloc (1, sizeof (Elf_ScnList)
+			+ ((elf->state.elf.scnincr *= 2)
+			   * sizeof (Elf_Scn)));
       if (newp == NULL)
 	{
 	  __libelf_seterrno (ELF_E_NOMEM);
diff --git a/libelf/elf_version.c b/libelf/elf_version.c
index 6ec534a..8296bb6 100644
--- a/libelf/elf_version.c
+++ b/libelf/elf_version.c
@@ -32,12 +32,21 @@
 #endif
 
 #include <libelfP.h>
+#include <pthread.h>
 
+/* Multiple threads may initialize __libelf_version.
+   pthread_once() ensures that __libelf_version is initialized only once. */
+once_define(static, version_once);
 
 /* Currently selected version.  Should be EV_CURRENT.
    Will be EV_NONE if elf_version () has not been called yet.  */
 unsigned int __libelf_version = EV_NONE;
 
+static void initialize_version(void)
+{
+  __libelf_version = EV_CURRENT;
+}
+
 unsigned int
 elf_version (unsigned int version)
 {
@@ -49,7 +58,7 @@
       /* Phew, we know this version.  */
 
       /* Signal that the version is now initialized.  */
-      __libelf_version = EV_CURRENT;
+      once(version_once, initialize_version);
 
       /* And return the last (or initial) version.  */
       return EV_CURRENT;
diff --git a/libelf/gelf.h b/libelf/gelf.h
index 7a3c87a..1847021 100644
--- a/libelf/gelf.h
+++ b/libelf/gelf.h
@@ -82,6 +82,9 @@
 /* Relocation table entry with addend (in section of type SHT_RELA).  */
 typedef Elf64_Rela GElf_Rela;
 
+/* Relative relocation entry (in section of type SHT_RELR).  */
+typedef Elf64_Relr GElf_Relr;
+
 /* Program segment header.  */
 typedef Elf64_Phdr GElf_Phdr;
 
diff --git a/libelf/gelf_fsize.c b/libelf/gelf_fsize.c
index 493d791..63bcbae 100644
--- a/libelf/gelf_fsize.c
+++ b/libelf/gelf_fsize.c
@@ -69,7 +69,8 @@
       [ELF_T_LIB]	= sizeof (ElfW2(LIBELFBITS, Ext_Lib)),		      \
       [ELF_T_AUXV]	= sizeof (ElfW2(LIBELFBITS, Ext_auxv_t)),	      \
       [ELF_T_CHDR]	= sizeof (ElfW2(LIBELFBITS, Ext_Chdr)),		      \
-      [ELF_T_GNUHASH]	= ELFW2(LIBELFBITS, FSZ_WORD)
+      [ELF_T_GNUHASH]	= ELFW2(LIBELFBITS, FSZ_WORD),			      \
+      [ELF_T_RELR]	= ELFW2(LIBELFBITS, FSZ_RELR)
       TYPE_SIZES (32)
     },
     [ELFCLASS64 - 1] = {
diff --git a/libelf/gelf_xlate.c b/libelf/gelf_xlate.c
index d8ad063..749da1a 100644
--- a/libelf/gelf_xlate.c
+++ b/libelf/gelf_xlate.c
@@ -204,7 +204,8 @@
 	[ELF_T_MOVE]	= ElfW2(Bits, cvt_Move),			      \
 	[ELF_T_LIB]	= ElfW2(Bits, cvt_Lib),				      \
 	[ELF_T_AUXV]	= ElfW2(Bits, cvt_auxv_t),			      \
-	[ELF_T_CHDR]	= ElfW2(Bits, cvt_chdr)
+	[ELF_T_CHDR]	= ElfW2(Bits, cvt_chdr),			      \
+	[ELF_T_RELR]	= ElfW2(Bits, cvt_Relr)
         define_xfcts (32),
 	[ELF_T_GNUHASH] = Elf32_cvt_Word
       },
diff --git a/libelf/gelf_xlate.h b/libelf/gelf_xlate.h
index 3c0e4bf..d5511c3 100644
--- a/libelf/gelf_xlate.h
+++ b/libelf/gelf_xlate.h
@@ -36,6 +36,7 @@
 FUNDAMENTAL (SWORD, Sword, LIBELFBITS);
 FUNDAMENTAL (XWORD, Xword, LIBELFBITS);
 FUNDAMENTAL (SXWORD, Sxword, LIBELFBITS);
+FUNDAMENTAL (RELR, Relr, LIBELFBITS);
 
 /* The structured types.  */
 TYPE (Ehdr, LIBELFBITS)
diff --git a/libelf/libelf.h b/libelf/libelf.h
index 2374a48..d3f057b 100644
--- a/libelf/libelf.h
+++ b/libelf/libelf.h
@@ -69,6 +69,19 @@
  #define ELFCOMPRESS_ZSTD       2          /* Zstandard algorithm.  */
 #endif
 
+#ifndef SHT_RELR
+ /* So RELR defines/typedefs can be used even with an old system elf.h.  */
+ #define SHT_RELR       19      /* RELR relative relocations */
+
+ /* RELR relocation table entry */
+ typedef Elf32_Word     Elf32_Relr;
+ typedef Elf64_Xword    Elf64_Relr;
+
+ #define DT_RELRSZ      35      /* Total size of RELR relative relocations */
+ #define DT_RELR        36      /* Address of RELR relative relocations */
+ #define DT_RELRENT     37      /* Size of one RELR relative relocaction */
+#endif
+
 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
 # define __nonnull_attribute__(...) __attribute__ ((__nonnull__ (__VA_ARGS__)))
 # define __deprecated_attribute__ __attribute__ ((__deprecated__))
@@ -124,6 +137,7 @@
   ELF_T_CHDR,			/* Compressed, Elf32_Chdr, Elf64_Chdr, ... */
   ELF_T_NHDR8,			/* Special GNU Properties note.  Same as Nhdr,
 				   except padding.  */
+  ELF_T_RELR,			/* Relative relocation entry.  */
   /* Keep this the last entry.  */
   ELF_T_NUM
 } Elf_Type;
@@ -288,7 +302,7 @@
 
 /* Get section at OFFSET.  */
 extern Elf_Scn *elf32_offscn (Elf *__elf, Elf32_Off __offset);
-/* Similar bug this time the binary calls is ELFCLASS64.  */
+/* Similar but this time the binary calls is ELFCLASS64.  */
 extern Elf_Scn *elf64_offscn (Elf *__elf, Elf64_Off __offset);
 
 /* Get index of section.  */
diff --git a/libelf/libelf.map b/libelf/libelf.map
index 10dc505..25760bc 100644
--- a/libelf/libelf.map
+++ b/libelf/libelf.map
@@ -50,7 +50,6 @@
     elf_rand;
     elf_rawdata;
     elf_rawfile;
-    elf_scncnt;
     elf_strptr;
     elf_update;
     elf_version;
diff --git a/libelf/libelfP.h b/libelf/libelfP.h
index 6624f38..ed061ab 100644
--- a/libelf/libelfP.h
+++ b/libelf/libelfP.h
@@ -1,5 +1,6 @@
 /* Internal interfaces for libelf.
    Copyright (C) 1998-2010, 2015, 2016 Red Hat, Inc.
+   Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 1998.
 
@@ -62,6 +63,7 @@
 #define ELF32_FSZ_SWORD  4
 #define ELF32_FSZ_XWORD  8
 #define ELF32_FSZ_SXWORD 8
+#define ELF32_FSZ_RELR   4
 
 /* Same for 64 bits objects.  */
 #define ELF64_FSZ_ADDR   8
@@ -71,6 +73,7 @@
 #define ELF64_FSZ_SWORD  4
 #define ELF64_FSZ_XWORD  8
 #define ELF64_FSZ_SXWORD 8
+#define ELF64_FSZ_RELR   8
 
 
 /* This is an extension of the ELF_F_* enumeration.  The values here are
@@ -262,11 +265,7 @@
 typedef struct Elf_Data_Chunk
 {
   Elf_Data_Scn data;
-  union
-  {
-    Elf_Scn dummy_scn;
-    struct Elf_Data_Chunk *next;
-  };
+  Elf_Scn dummy_scn;
   int64_t offset;		/* The original raw offset in the Elf image.  */
 } Elf_Data_Chunk;
 
@@ -324,7 +323,7 @@
       Elf_ScnList *scns_last;	/* Last element in the section list.
 				   If NULL the data has not yet been
 				   read from the file.  */
-      Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results.  */
+      void *rawchunks;		/* Tree of elf_getdata_rawchunk results.  */
       unsigned int scnincr;	/* Number of sections allocate the last
 				   time.  */
       int ehdr_flags;		/* Flags (dirty) for ELF header.  */
@@ -343,7 +342,7 @@
       Elf_ScnList *scns_last;	/* Last element in the section list.
 				   If NULL the data has not yet been
 				   read from the file.  */
-      Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results.  */
+      void *rawchunks;		/* Tree of elf_getdata_rawchunk results.  */
       unsigned int scnincr;	/* Number of sections allocate the last
 				   time.  */
       int ehdr_flags;		/* Flags (dirty) for ELF header.  */
@@ -368,7 +367,7 @@
       Elf_ScnList *scns_last;	/* Last element in the section list.
 				   If NULL the data has not yet been
 				   read from the file.  */
-      Elf_Data_Chunk *rawchunks; /* List of elf_getdata_rawchunk results.  */
+      void *rawchunks;		/* Tree of elf_getdata_rawchunk results.  */
       unsigned int scnincr;	/* Number of sections allocate the last
 				   time.  */
       int ehdr_flags;		/* Flags (dirty) for ELF header.  */
@@ -515,6 +514,8 @@
 extern Elf64_Shdr *__elf64_getshdr_rdlock (Elf_Scn *__scn) internal_function;
 extern Elf32_Shdr *__elf32_getshdr_wrlock (Elf_Scn *__scn) internal_function;
 extern Elf64_Shdr *__elf64_getshdr_wrlock (Elf_Scn *__scn) internal_function;
+extern Elf32_Chdr *__elf32_getchdr_wrlock (Elf_Scn *__scn) internal_function;
+extern Elf64_Chdr *__elf64_getchdr_wrlock (Elf_Scn *__scn) internal_function;
 extern Elf_Scn *__elf_getscn_internal (Elf *__elf, size_t __index)
      attribute_hidden;
 extern Elf_Scn *__elf_nextscn_internal (Elf *__elf, Elf_Scn *__scn)
@@ -524,6 +525,8 @@
      attribute_hidden;
 extern Elf_Data *__elf_getdata_rdlock (Elf_Scn *__scn, Elf_Data *__data)
      internal_function;
+extern Elf_Data *__elf_getdata_wrlock (Elf_Scn *__scn, Elf_Data *__data)
+     internal_function;
 extern Elf_Data *__elf_rawdata_internal (Elf_Scn *__scn, Elf_Data *__data)
      attribute_hidden;
 /* Should be called to setup first section data element if
diff --git a/patches/libdw-ignore-really-large-discriminator.patch b/patches/libdw-ignore-really-large-discriminator.patch
deleted file mode 100644
index d18b7e9..0000000
--- a/patches/libdw-ignore-really-large-discriminator.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 6583a5497fb60496ae7f9df9907be1248a339360 Mon Sep 17 00:00:00 2001
-From: Mark Wielaard <mark@klomp.org>
-Date: Thu, 26 Oct 2023 16:49:08 +0200
-Subject: [PATCH] libdw: ignore really large discriminator
-
-llvm can create really large discriminator values. We used to flag those
-as invalid when the value wouldn't fit in 24 bits. Just truncate the value.
-
-	* libdw/dwarf_getsrclines.c (add_new_line): Define SETX.
-	Use SETX to set discriminator.
-
-https://sourceware.org/bugzilla/show_bug.cgi?id=30967
-
-Signed-off-by: Mark Wielaard <mark@klomp.org>
----
- libdw/dwarf_getsrclines.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/libdw/dwarf_getsrclines.c b/libdw/dwarf_getsrclines.c
-index df003c5f..69e10c7b 100644
---- a/libdw/dwarf_getsrclines.c
-+++ b/libdw/dwarf_getsrclines.c
-@@ -129,6 +129,12 @@ add_new_line (struct line_state *state, struct linelist *new_line)
-        return true;						      \
-    } while (0)
- 
-+  /* Same as above, but don't flag as "invalid" just use truncated
-+     value.  Used for discriminator for which llvm might use a value
-+     that won't fit 24 bits.  */
-+#define SETX(field)						      \
-+     new_line->line.field = state->field;			      \
-+
-   SET (addr);
-   SET (op_index);
-   SET (file);
-@@ -140,7 +146,7 @@ add_new_line (struct line_state *state, struct linelist *new_line)
-   SET (prologue_end);
-   SET (epilogue_begin);
-   SET (isa);
--  SET (discriminator);
-+  SETX (discriminator);
-   SET (context);
-   SET (function_name);
- 
--- 
-2.42.0.869.gea05f2083d-goog
-
diff --git a/po/de.po b/po/de.po
index 1e55248..47acd74 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: elfutils\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2023-03-03 16:09+0100\n"
+"POT-Creation-Date: 2023-11-03 17:36+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"
@@ -49,7 +49,7 @@
 "GARANTIE,\n"
 "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
 
-#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11793
+#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202
 #: src/unstrip.c:311
 #, c-format
 msgid "memory exhausted"
@@ -553,7 +553,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79
 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
+#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<Unbekannt>"
 
@@ -647,7 +647,7 @@
 msgid "invalid size of destination operand"
 msgstr "ungültige Grösse des Ziel-Operanden"
 
-#: libelf/elf_error.c:86 src/readelf.c:6415
+#: libelf/elf_error.c:86 src/readelf.c:6758
 #, c-format
 msgid "invalid encoding"
 msgstr "ungültige Kodierung"
@@ -735,8 +735,8 @@
 msgid "invalid section header"
 msgstr "ungültiger Abschnitts-Header"
 
-#: libelf/elf_error.c:190 src/readelf.c:10294 src/readelf.c:10899
-#: src/readelf.c:11000 src/readelf.c:11188
+#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242
+#: src/readelf.c:11343 src/readelf.c:11531
 #, c-format
 msgid "invalid data"
 msgstr "Ungültige Daten"
@@ -1392,8 +1392,8 @@
 msgstr ""
 
 #. Strings for arguments in help texts.
-#: src/elfclassify.c:979 src/elfcompress.c:1433 src/elflint.c:76
-#: src/readelf.c:160
+#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77
+#: src/readelf.c:161
 msgid "FILE..."
 msgstr "DATEI..."
 
@@ -1680,21 +1680,21 @@
 msgstr "unbekannter Typ"
 
 #. We need at least one input file.
-#: src/elfcompress.c:162 src/elfcompress.c:1444
+#: src/elfcompress.c:162 src/elfcompress.c:1447
 #, fuzzy, c-format
 msgid "No input file given"
 msgstr "Eingabedatei '%s' ignoriert"
 
-#: src/elfcompress.c:168 src/elfcompress.c:1448
+#: src/elfcompress.c:168 src/elfcompress.c:1451
 #, c-format
 msgid "Only one input file allowed together with '-o'"
 msgstr ""
 
-#: src/elfcompress.c:1405
+#: src/elfcompress.c:1408
 msgid "Place (de)compressed output into FILE"
 msgstr ""
 
-#: src/elfcompress.c:1408
+#: src/elfcompress.c:1411
 msgid ""
 "What type of compression to apply. TYPE can be 'none' (decompress), "
 "'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-"
@@ -1702,297 +1702,297 @@
 "compression)"
 msgstr ""
 
-#: src/elfcompress.c:1412
+#: src/elfcompress.c:1415
 msgid ""
 "SECTION name to (de)compress, SECTION is an extended wildcard pattern "
 "(defaults to '.?(z)debug*')"
 msgstr ""
 
-#: src/elfcompress.c:1415
+#: src/elfcompress.c:1418
 msgid "Print a message for each section being (de)compressed"
 msgstr ""
 
-#: src/elfcompress.c:1418
+#: src/elfcompress.c:1421
 msgid ""
 "Force compression of section even if it would become larger or update/"
 "rewrite the file even if no section would be (de)compressed"
 msgstr ""
 
-#: src/elfcompress.c:1421 src/strip.c:92
+#: src/elfcompress.c:1424 src/strip.c:92
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr ""
 
-#: src/elfcompress.c:1424
+#: src/elfcompress.c:1427
 #, fuzzy
 msgid "Be silent when a section cannot be compressed"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elfcompress.c:1434
+#: src/elfcompress.c:1437
 msgid "Compress or decompress sections in an ELF file."
 msgstr ""
 
-#: src/elflint.c:62
+#: src/elflint.c:63
 msgid "Be extremely strict, flag level 2 features."
 msgstr ""
 
-#: src/elflint.c:63
+#: src/elflint.c:64
 msgid "Do not print anything if successful"
 msgstr "Gebe nichts aus, wenn erfolgreich"
 
-#: src/elflint.c:64
+#: src/elflint.c:65
 msgid "Binary is a separate debuginfo file"
 msgstr ""
 
-#: src/elflint.c:66
+#: src/elflint.c:67
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
 msgstr ""
 
 #. Short description of program.
-#: src/elflint.c:72
+#: src/elflint.c:73
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 
-#: src/elflint.c:153 src/readelf.c:391
+#: src/elflint.c:154 src/readelf.c:413
 #, fuzzy, c-format
 msgid "cannot open input file '%s'"
 msgstr "Kann Eingabedatei nicht öffnen"
 
-#: src/elflint.c:160
+#: src/elflint.c:161
 #, fuzzy, c-format
 msgid "cannot generate Elf descriptor for '%s': %s\n"
 msgstr "kann Elf-Deskriptor nicht erzeugen: %s\n"
 
-#: src/elflint.c:179
+#: src/elflint.c:180
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
 
-#: src/elflint.c:183
+#: src/elflint.c:184
 msgid "No errors"
 msgstr "Keine Fehler"
 
-#: src/elflint.c:218 src/readelf.c:603
+#: src/elflint.c:219 src/readelf.c:625
 msgid "Missing file name.\n"
 msgstr "Dateiname fehlt.\n"
 
-#: src/elflint.c:283
+#: src/elflint.c:284
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr ""
 
 #. We cannot do anything.
-#: src/elflint.c:291
+#: src/elflint.c:292
 #, fuzzy, c-format
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "Keine ELF-Datei - sie hat die falschen Magic Bytes am Anfang\n"
 
-#: src/elflint.c:357
+#: src/elflint.c:358
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr ""
 
-#: src/elflint.c:362
+#: src/elflint.c:363
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr ""
 
-#: src/elflint.c:366
+#: src/elflint.c:367
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr ""
 
-#: src/elflint.c:374
+#: src/elflint.c:375
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr ""
 
-#: src/elflint.c:380
+#: src/elflint.c:381
 #, c-format
 msgid "unsupported ABI version e_ident[%d] == %d\n"
 msgstr ""
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] ist nicht null\n"
 
-#: src/elflint.c:390
+#: src/elflint.c:391
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr ""
 
-#: src/elflint.c:397
+#: src/elflint.c:398
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr ""
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file version\n"
 msgstr ""
 
-#: src/elflint.c:407
+#: src/elflint.c:408
 #, c-format
 msgid "invalid program header offset\n"
 msgstr ""
 
-#: src/elflint.c:409
+#: src/elflint.c:410
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 
-#: src/elflint.c:413
+#: src/elflint.c:414
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr ""
 
-#: src/elflint.c:421
+#: src/elflint.c:422
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr ""
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "section header table must be present\n"
 msgstr ""
 
-#: src/elflint.c:438
+#: src/elflint.c:439
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr ""
 
-#: src/elflint.c:455
+#: src/elflint.c:456
 #, c-format
 msgid "invalid section header index\n"
 msgstr ""
 
-#: src/elflint.c:473
+#: src/elflint.c:474
 #, c-format
 msgid "Can only check %u headers, shnum was %u\n"
 msgstr ""
 
-#: src/elflint.c:487
+#: src/elflint.c:488
 #, fuzzy, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "Ungültige Anzahl von Parametern.\n"
 
-#: src/elflint.c:504
+#: src/elflint.c:505
 #, c-format
 msgid "Can only check %u headers, phnum was %u\n"
 msgstr ""
 
-#: src/elflint.c:509
+#: src/elflint.c:510
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr ""
 
-#: src/elflint.c:516 src/elflint.c:533
+#: src/elflint.c:517 src/elflint.c:534
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:519 src/elflint.c:536
+#: src/elflint.c:520 src/elflint.c:537
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:522 src/elflint.c:539
+#: src/elflint.c:523 src/elflint.c:540
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr ""
 
-#: src/elflint.c:525 src/elflint.c:542
+#: src/elflint.c:526 src/elflint.c:543
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr ""
 
-#: src/elflint.c:528 src/elflint.c:545
+#: src/elflint.c:529 src/elflint.c:546
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr ""
 
-#: src/elflint.c:590
+#: src/elflint.c:591
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
 "group\n"
 msgstr ""
 
-#: src/elflint.c:594
+#: src/elflint.c:595
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
 msgstr ""
 
-#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
-#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
-#: src/elflint.c:3254 src/elflint.c:3456 src/elflint.c:4468
+#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610
+#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981
+#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr ""
 
-#: src/elflint.c:623 src/elflint.c:1662
+#: src/elflint.c:624 src/elflint.c:1699
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
 "type is not SHT_STRTAB\n"
 msgstr ""
 
-#: src/elflint.c:646
+#: src/elflint.c:647
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
 "section\n"
 msgstr ""
 
-#: src/elflint.c:658
+#: src/elflint.c:659
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr ""
 
-#: src/elflint.c:662
+#: src/elflint.c:663
 #, c-format
 msgid ""
 "section [%2u] '%s': number of local entries in 'st_info' larger than table "
 "size\n"
 msgstr ""
 
-#: src/elflint.c:671
+#: src/elflint.c:672
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
-#: src/elflint.c:688 src/elflint.c:691
+#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686
+#: src/elflint.c:689 src/elflint.c:692
 #, c-format
 msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
 msgstr ""
 
-#: src/elflint.c:694
+#: src/elflint.c:695
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr ""
 
-#: src/elflint.c:704
+#: src/elflint.c:705
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:713
+#: src/elflint.c:714
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr ""
 
-#: src/elflint.c:728
+#: src/elflint.c:729
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
 "section index section\n"
 msgstr ""
 
-#: src/elflint.c:734
+#: src/elflint.c:735
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
@@ -2000,119 +2000,119 @@
 msgstr ""
 
 #. || sym->st_shndx > SHN_HIRESERVE  always false
-#: src/elflint.c:746
+#: src/elflint.c:747
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
 msgstr "ungültiger Abschnittsindex"
 
-#: src/elflint.c:754
+#: src/elflint.c:755
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:760
+#: src/elflint.c:761
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:765
+#: src/elflint.c:766
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
 msgstr ""
 
-#: src/elflint.c:773
+#: src/elflint.c:774
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
 "files\n"
 msgstr ""
 
-#: src/elflint.c:777
+#: src/elflint.c:778
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
 msgstr ""
 
-#: src/elflint.c:781
+#: src/elflint.c:782
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
 msgstr ""
 
-#: src/elflint.c:832
+#: src/elflint.c:833
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
 "section [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:847
+#: src/elflint.c:848
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
 "have SHF_TLS flag set\n"
 msgstr ""
 
-#: src/elflint.c:857 src/elflint.c:905
+#: src/elflint.c:858 src/elflint.c:906
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
 "section [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:884
+#: src/elflint.c:885
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
 "entry\n"
 msgstr ""
 
-#: src/elflint.c:890
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
 "header entry\n"
 msgstr ""
 
-#: src/elflint.c:898
+#: src/elflint.c:899
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
 "[%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:925
+#: src/elflint.c:926
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
 "sh_info\n"
 msgstr ""
 
-#: src/elflint.c:932
+#: src/elflint.c:933
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
 "described in sh_info\n"
 msgstr ""
 
-#: src/elflint.c:939
+#: src/elflint.c:940
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:989
+#: src/elflint.c:990
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
 "[%2d]\n"
 msgstr ""
 
-#: src/elflint.c:996
+#: src/elflint.c:997
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -2122,1372 +2122,1367 @@
 #. This test is more strict than the psABIs which
 #. usually allow the symbol to be in the middle of
 #. the .got section, allowing negative offsets.
-#: src/elflint.c:1012
+#: src/elflint.c:1013
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
 "match %s section address %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:1019
+#: src/elflint.c:1020
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
 "match %s section size %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:1027
+#: src/elflint.c:1028
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
 "section\n"
 msgstr ""
 
-#: src/elflint.c:1043
+#: src/elflint.c:1044
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
 "segment address %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:1050
+#: src/elflint.c:1051
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
 "segment size %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:1063
+#: src/elflint.c:1064
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
 "default visibility\n"
 msgstr ""
 
-#: src/elflint.c:1067
+#: src/elflint.c:1068
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:1105
+#: src/elflint.c:1106
 #, fuzzy, c-format
 msgid "section [%2d] '%s': cannot get section data.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:1121
+#: src/elflint.c:1122
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr ""
 
-#: src/elflint.c:1132 src/elflint.c:1185
+#: src/elflint.c:1133 src/elflint.c:1186
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
 msgstr ""
 
-#: src/elflint.c:1157 src/elflint.c:1210
+#: src/elflint.c:1158 src/elflint.c:1211
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
 "DT_RELCOUNT\n"
 msgstr ""
 
-#: src/elflint.c:1163 src/elflint.c:1216
+#: src/elflint.c:1164 src/elflint.c:1217
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
 "specified %d relative relocations\n"
 msgstr ""
 
-#: src/elflint.c:1175
+#: src/elflint.c:1176
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr ""
 
-#: src/elflint.c:1258
+#: src/elflint.c:1259
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr ""
 
-#: src/elflint.c:1270
+#: src/elflint.c:1271
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr ""
 
-#: src/elflint.c:1278
+#: src/elflint.c:1279
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr ""
 
-#: src/elflint.c:1286
+#: src/elflint.c:1287
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': no relocations for merge-able string sections possible\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:1294
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-
-#: src/elflint.c:1354
+#: src/elflint.c:1365
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 
-#: src/elflint.c:1381
+#: src/elflint.c:1392
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr ""
 
-#: src/elflint.c:1389
+#: src/elflint.c:1400
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
 "type\n"
 msgstr ""
 
-#: src/elflint.c:1397
+#: src/elflint.c:1408
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr ""
 
-#: src/elflint.c:1415
+#: src/elflint.c:1426
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
 "be used with %s\n"
 msgstr ""
 
-#: src/elflint.c:1432
+#: src/elflint.c:1443
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:1447
+#: src/elflint.c:1458
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
 "%s\n"
 msgstr ""
 
-#: src/elflint.c:1468
+#: src/elflint.c:1479
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
 "relocation flag not set\n"
 msgstr ""
 
-#: src/elflint.c:1483
+#: src/elflint.c:1494
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr ""
 
-#: src/elflint.c:1523 src/elflint.c:1574
+#: src/elflint.c:1534 src/elflint.c:1585
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1650
+#: src/elflint.c:1687
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr ""
 
-#: src/elflint.c:1668
+#: src/elflint.c:1705
 #, c-format
 msgid ""
 "section [%2d]: referenced as string table for section [%2d] '%s' but section "
 "link value is invalid\n"
 msgstr ""
 
-#: src/elflint.c:1676
+#: src/elflint.c:1713
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 
-#: src/elflint.c:1681 src/elflint.c:1970
+#: src/elflint.c:1718 src/elflint.c:2008
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr ""
 
-#: src/elflint.c:1691
+#: src/elflint.c:1728
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1699
+#: src/elflint.c:1736
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr ""
 
-#: src/elflint.c:1706
+#: src/elflint.c:1743
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr ""
 
-#: src/elflint.c:1717
+#: src/elflint.c:1754
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr ""
 
-#: src/elflint.c:1727
+#: src/elflint.c:1764
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr ""
 
-#: src/elflint.c:1745
+#: src/elflint.c:1782
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
 msgstr ""
 
-#: src/elflint.c:1758
+#: src/elflint.c:1795
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
 "[%2d] '%s' referenced by sh_link\n"
 msgstr ""
 
-#: src/elflint.c:1801
+#: src/elflint.c:1839
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:1816
+#: src/elflint.c:1854
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
 "[%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:1836 src/elflint.c:1864
+#: src/elflint.c:1874 src/elflint.c:1902
 #, c-format
 msgid "section [%2d] '%s': contains %s entry but not %s\n"
 msgstr ""
 
-#: src/elflint.c:1848
+#: src/elflint.c:1886
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr ""
 
-#: src/elflint.c:1857
+#: src/elflint.c:1895
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr ""
 
-#: src/elflint.c:1872 src/elflint.c:1879
+#: src/elflint.c:1910 src/elflint.c:1917
 #, c-format
 msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
 msgstr ""
 
-#: src/elflint.c:1889 src/elflint.c:1893
+#: src/elflint.c:1927 src/elflint.c:1931
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
 msgstr ""
 
-#: src/elflint.c:1899
+#: src/elflint.c:1937
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 
-#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
+#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
 msgstr ""
 
-#: src/elflint.c:1934
+#: src/elflint.c:1972
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1944
+#: src/elflint.c:1982
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1948
+#: src/elflint.c:1986
 #, c-format
 msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
 msgstr ""
 
-#: src/elflint.c:1953
+#: src/elflint.c:1991
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr ""
 
-#: src/elflint.c:1956
+#: src/elflint.c:1994
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr ""
 
-#: src/elflint.c:1965
+#: src/elflint.c:2003
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1980
+#: src/elflint.c:2018
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
 "same symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1998
+#: src/elflint.c:2036
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr ""
 
-#: src/elflint.c:2010
+#: src/elflint.c:2048
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr ""
 
-#: src/elflint.c:2015
+#: src/elflint.c:2053
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 
-#: src/elflint.c:2032 src/elflint.c:2089
+#: src/elflint.c:2070 src/elflint.c:2127
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
 msgstr ""
 
-#: src/elflint.c:2046 src/elflint.c:2103
+#: src/elflint.c:2084 src/elflint.c:2141
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr ""
 
-#: src/elflint.c:2060 src/elflint.c:2117
+#: src/elflint.c:2098 src/elflint.c:2155
 #, c-format
 msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2070
+#: src/elflint.c:2108
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2127
+#: src/elflint.c:2165
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2140
+#: src/elflint.c:2178
 #, c-format
 msgid "section [%2d] '%s': not enough data\n"
 msgstr ""
 
-#: src/elflint.c:2152
+#: src/elflint.c:2190
 #, c-format
 msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
 msgstr ""
 
-#: src/elflint.c:2168
+#: src/elflint.c:2206
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected at "
 "least %ld)\n"
 msgstr ""
 
-#: src/elflint.c:2177
+#: src/elflint.c:2215
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 
-#: src/elflint.c:2211
+#: src/elflint.c:2249
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
 msgstr ""
 
-#: src/elflint.c:2232
+#: src/elflint.c:2270
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
 "undefined\n"
 msgstr ""
 
-#: src/elflint.c:2245
+#: src/elflint.c:2283
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
 msgstr ""
 
-#: src/elflint.c:2254
+#: src/elflint.c:2292
 #, c-format
 msgid ""
 "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
 msgstr ""
 
-#: src/elflint.c:2284
+#: src/elflint.c:2322
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2289
+#: src/elflint.c:2327
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2295
+#: src/elflint.c:2333
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 
-#: src/elflint.c:2308
+#: src/elflint.c:2346
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 
-#: src/elflint.c:2326
+#: src/elflint.c:2364
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2330
+#: src/elflint.c:2368
 #, c-format
 msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
 msgstr ""
 
-#: src/elflint.c:2340
+#: src/elflint.c:2378
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr ""
 
-#: src/elflint.c:2345
+#: src/elflint.c:2383
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr ""
 
-#: src/elflint.c:2350
+#: src/elflint.c:2388
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
 "entries\n"
 msgstr ""
 
-#: src/elflint.c:2399
+#: src/elflint.c:2437
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 
-#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
+#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561
 #, c-format
 msgid "hash section [%2zu] '%s' does not contain enough data\n"
 msgstr ""
 
-#: src/elflint.c:2444
+#: src/elflint.c:2482
 #, c-format
 msgid "hash section [%2zu] '%s' has zero bit mask words\n"
 msgstr ""
 
-#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
+#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574
 #, c-format
 msgid "hash section [%2zu] '%s' uses too much data\n"
 msgstr ""
 
-#: src/elflint.c:2470
+#: src/elflint.c:2508
 #, c-format
 msgid ""
 "hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
 "%<PRIu32>, nentries: %<PRIu32>\n"
 msgstr ""
 
-#: src/elflint.c:2557
+#: src/elflint.c:2595
 #, c-format
 msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
 msgstr ""
 
-#: src/elflint.c:2567 src/elflint.c:2571
+#: src/elflint.c:2605 src/elflint.c:2609
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr ""
 
-#: src/elflint.c:2578
+#: src/elflint.c:2616
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
 "table in [%2zu] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2590
+#: src/elflint.c:2628
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
 "table in [%2zu] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2606
+#: src/elflint.c:2644
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr ""
 
-#: src/elflint.c:2626
+#: src/elflint.c:2664
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
 msgstr ""
 
-#: src/elflint.c:2637
+#: src/elflint.c:2675
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr ""
 
-#: src/elflint.c:2642
+#: src/elflint.c:2680
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2648
+#: src/elflint.c:2686
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr ""
 
-#: src/elflint.c:2653
+#: src/elflint.c:2691
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr ""
 
-#: src/elflint.c:2660
+#: src/elflint.c:2698
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr ""
 
-#: src/elflint.c:2664
+#: src/elflint.c:2702
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol name for signature\n"
 msgstr ""
 
-#: src/elflint.c:2669
+#: src/elflint.c:2707
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr ""
 
-#: src/elflint.c:2675
+#: src/elflint.c:2713
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr ""
 
-#: src/elflint.c:2681
+#: src/elflint.c:2719
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr ""
 
-#: src/elflint.c:2690
+#: src/elflint.c:2728
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 
-#: src/elflint.c:2696
+#: src/elflint.c:2734
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr ""
 
-#: src/elflint.c:2704
+#: src/elflint.c:2742
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr ""
 
-#: src/elflint.c:2708
+#: src/elflint.c:2746
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr ""
 
-#: src/elflint.c:2719
+#: src/elflint.c:2757
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr ""
 
-#: src/elflint.c:2731
+#: src/elflint.c:2769
 #, fuzzy, c-format
 msgid "section [%2d] '%s': section index %zu out of range\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:2740
+#: src/elflint.c:2778
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:2747
+#: src/elflint.c:2785
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2753
+#: src/elflint.c:2791
 #, c-format
 msgid ""
 "section [%2d] '%s': element %zu references section [%2d] '%s' without "
 "SHF_GROUP flag set\n"
 msgstr ""
 
-#: src/elflint.c:2760
+#: src/elflint.c:2798
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr ""
 
-#: src/elflint.c:2957
+#: src/elflint.c:2995
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
 "dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2969
+#: src/elflint.c:3007
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
 "'%s'\n"
 msgstr ""
 
-#: src/elflint.c:2985
+#: src/elflint.c:3023
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr ""
 
-#: src/elflint.c:3001
+#: src/elflint.c:3039
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 
-#: src/elflint.c:3009
+#: src/elflint.c:3047
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr ""
 
-#: src/elflint.c:3023
+#: src/elflint.c:3061
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr ""
 
-#: src/elflint.c:3028
+#: src/elflint.c:3066
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
 msgstr ""
 
-#: src/elflint.c:3038
+#: src/elflint.c:3076
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
 msgstr ""
 
-#: src/elflint.c:3091
+#: src/elflint.c:3129
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr ""
 
-#: src/elflint.c:3099 src/elflint.c:3246
+#: src/elflint.c:3137 src/elflint.c:3284
 #, c-format
 msgid "section [%2d] '%s': sh_link does not link to string table\n"
 msgstr ""
 
-#: src/elflint.c:3124 src/elflint.c:3300
+#: src/elflint.c:3162 src/elflint.c:3338
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong version %d\n"
 msgstr ""
 
-#: src/elflint.c:3131 src/elflint.c:3307
+#: src/elflint.c:3169 src/elflint.c:3345
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3141
+#: src/elflint.c:3179
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr ""
 
-#: src/elflint.c:3149
+#: src/elflint.c:3187
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr ""
 
-#: src/elflint.c:3161
+#: src/elflint.c:3199
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3169
+#: src/elflint.c:3207
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
 "reference\n"
 msgstr ""
 
-#: src/elflint.c:3178
+#: src/elflint.c:3216
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
 "%#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3187
+#: src/elflint.c:3225
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
 "name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3198
+#: src/elflint.c:3236
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
 msgstr ""
 
-#: src/elflint.c:3215 src/elflint.c:3391
+#: src/elflint.c:3253 src/elflint.c:3429
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
 msgstr ""
 
-#: src/elflint.c:3223 src/elflint.c:3399
+#: src/elflint.c:3261 src/elflint.c:3437
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
 "there are more entries\n"
 msgstr ""
 
-#: src/elflint.c:3238
+#: src/elflint.c:3276
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr ""
 
-#: src/elflint.c:3285
+#: src/elflint.c:3323
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3289
+#: src/elflint.c:3327
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 
-#: src/elflint.c:3295
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3322
+#: src/elflint.c:3360
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr ""
 
-#: src/elflint.c:3329
+#: src/elflint.c:3367
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3337
+#: src/elflint.c:3375
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3357
+#: src/elflint.c:3395
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3374
+#: src/elflint.c:3412
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3407
+#: src/elflint.c:3445
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3423
+#: src/elflint.c:3461
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3448
+#: src/elflint.c:3486
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr ""
 
-#: src/elflint.c:3464
+#: src/elflint.c:3502
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr ""
 
-#: src/elflint.c:3475
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3484
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3496
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
 #: src/elflint.c:3513
 #, c-format
 msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
 msgstr ""
 
 #: src/elflint.c:3522
 #, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3534
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
+msgstr ""
+
+#: src/elflint.c:3551
+#, c-format
+msgid ""
+"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+msgstr ""
+
+#: src/elflint.c:3560
+#, c-format
 msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3531
+#: src/elflint.c:3569
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3546
+#: src/elflint.c:3584
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
 msgstr ""
 
 #. Tag_File
-#: src/elflint.c:3557
+#: src/elflint.c:3595
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3578
+#: src/elflint.c:3616
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 
-#: src/elflint.c:3589
+#: src/elflint.c:3627
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr ""
 
-#: src/elflint.c:3602
+#: src/elflint.c:3640
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3606
+#: src/elflint.c:3644
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3616
+#: src/elflint.c:3654
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr ""
 
-#: src/elflint.c:3622
+#: src/elflint.c:3660
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3719
+#: src/elflint.c:3758
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr ""
 
-#: src/elflint.c:3723
+#: src/elflint.c:3762
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr ""
 
-#: src/elflint.c:3725
+#: src/elflint.c:3764
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr ""
 
-#: src/elflint.c:3727
+#: src/elflint.c:3766
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr ""
 
-#: src/elflint.c:3729
+#: src/elflint.c:3768
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr ""
 
-#: src/elflint.c:3731
+#: src/elflint.c:3770
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr ""
 
-#: src/elflint.c:3733
+#: src/elflint.c:3772
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr ""
 
-#: src/elflint.c:3735
+#: src/elflint.c:3774
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr ""
 
-#: src/elflint.c:3738
+#: src/elflint.c:3777
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
 "value\n"
 msgstr ""
 
-#: src/elflint.c:3742
+#: src/elflint.c:3781
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in shstrndx\n"
 msgstr ""
 
-#: src/elflint.c:3746
+#: src/elflint.c:3785
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in phnum\n"
 msgstr ""
 
-#: src/elflint.c:3764
+#: src/elflint.c:3803
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr ""
 
-#: src/elflint.c:3773
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr ""
 
-#: src/elflint.c:3800
+#: src/elflint.c:3839
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3817
+#: src/elflint.c:3856
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3835
+#: src/elflint.c:3874
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3852
+#: src/elflint.c:3891
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr ""
 
-#: src/elflint.c:3858 src/elflint.c:3890
+#: src/elflint.c:3897 src/elflint.c:3929
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
 msgstr ""
 
-#: src/elflint.c:3863 src/elflint.c:3895
+#: src/elflint.c:3902 src/elflint.c:3934
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
 "segments\n"
 msgstr ""
 
-#: src/elflint.c:3871
+#: src/elflint.c:3910
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
 msgstr ""
 
-#: src/elflint.c:3914
+#: src/elflint.c:3953
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr ""
 
-#: src/elflint.c:3919
+#: src/elflint.c:3958
 #, c-format
 msgid "cannot get section header\n"
 msgstr ""
 
-#: src/elflint.c:3929
+#: src/elflint.c:3968
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3949
+#: src/elflint.c:3988
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3959
+#: src/elflint.c:3998
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3967
+#: src/elflint.c:4006
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3977
+#: src/elflint.c:4016
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:3982
+#: src/elflint.c:4021
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:3988
+#: src/elflint.c:4027
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr ""
 
-#: src/elflint.c:3994
+#: src/elflint.c:4033
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3999
+#: src/elflint.c:4038
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:4006
+#: src/elflint.c:4045
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:4011
+#: src/elflint.c:4050
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:4030
+#: src/elflint.c:4069
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:4039
+#: src/elflint.c:4078
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr ""
 
-#: src/elflint.c:4046
+#: src/elflint.c:4085
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:4077
+#: src/elflint.c:4116
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
 "%d\n"
 msgstr ""
 
-#: src/elflint.c:4087
+#: src/elflint.c:4126
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
 "program header entry %d\n"
 msgstr ""
 
-#: src/elflint.c:4113
+#: src/elflint.c:4152
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
 "program header entry %d and file contents is non-zero\n"
 msgstr ""
 
-#: src/elflint.c:4124
+#: src/elflint.c:4163
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
 "segment of program header entry %d\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4174
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4145
+#: src/elflint.c:4184
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4155
+#: src/elflint.c:4194
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4161
+#: src/elflint.c:4200
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
 "but type is not SHT_TYPE\n"
 msgstr ""
 
-#: src/elflint.c:4169
+#: src/elflint.c:4208
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:4220
+#: src/elflint.c:4263
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:4243
+#: src/elflint.c:4286
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:4254
+#: src/elflint.c:4297
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:4260
+#: src/elflint.c:4303
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:4271
+#: src/elflint.c:4314
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
 "exist\n"
 msgstr ""
 
-#: src/elflint.c:4284
+#: src/elflint.c:4327
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:4298
+#: src/elflint.c:4341
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:4347
+#: src/elflint.c:4390
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:4351
+#: src/elflint.c:4394
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4407
+#: src/elflint.c:4450
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
 "offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4412
+#: src/elflint.c:4455
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
 "'%s' at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4431
+#: src/elflint.c:4474
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4451
+#: src/elflint.c:4494
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4454
+#: src/elflint.c:4497
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4475
+#: src/elflint.c:4518
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4482
+#: src/elflint.c:4525
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4485
+#: src/elflint.c:4528
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4503
+#: src/elflint.c:4546
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4518
+#: src/elflint.c:4561
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4528
+#: src/elflint.c:4571
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4539
+#: src/elflint.c:4582
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4547
+#: src/elflint.c:4590
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4554
+#: src/elflint.c:4597
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4568
+#: src/elflint.c:4611
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4571
+#: src/elflint.c:4614
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4581
+#: src/elflint.c:4624
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4602
+#: src/elflint.c:4645
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4613
+#: src/elflint.c:4656
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4620
+#: src/elflint.c:4663
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4629 src/elflint.c:4652
+#: src/elflint.c:4672 src/elflint.c:4695
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4658
+#: src/elflint.c:4701
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4685
+#: src/elflint.c:4728
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4688
+#: src/elflint.c:4731
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4701
+#: src/elflint.c:4744
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4709
+#: src/elflint.c:4752
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4712
+#: src/elflint.c:4755
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4716
+#: src/elflint.c:4759
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4719
+#: src/elflint.c:4762
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4724
+#: src/elflint.c:4767
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4727
+#: src/elflint.c:4770
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4741
+#: src/elflint.c:4784
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4748
+#: src/elflint.c:4791
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4751
+#: src/elflint.c:4794
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
 "alignment\n"
 msgstr ""
 
-#: src/elflint.c:4764
+#: src/elflint.c:4807
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
 "program header entry"
 msgstr ""
 
-#: src/elflint.c:4798
+#: src/elflint.c:4841
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4810
+#: src/elflint.c:4853
 #, fuzzy, c-format
 msgid "cannot create backend for ELF file\n"
 msgstr "neue Datei konnte nicht angelegt werden"
 
-#: src/elflint.c:4831
+#: src/elflint.c:4874
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
@@ -3699,7 +3694,7 @@
 msgstr "%s: INTERNER FEHLER %d (%s-%s): %s"
 
 #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307
-#: src/strip.c:2766
+#: src/strip.c:2763
 #, c-format
 msgid "while closing '%s'"
 msgstr "beim Schliessen von '%s'"
@@ -3743,13 +3738,13 @@
 msgid "cannot create search tree"
 msgstr "Kann Suchbaum nicht erstellen"
 
-#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663
-#: src/readelf.c:1484 src/readelf.c:1633 src/readelf.c:1860 src/readelf.c:2097
-#: src/readelf.c:2286 src/readelf.c:2466 src/readelf.c:2544 src/readelf.c:2809
-#: src/readelf.c:2884 src/readelf.c:2970 src/readelf.c:3565 src/readelf.c:3613
-#: src/readelf.c:3682 src/readelf.c:11620 src/readelf.c:12803
-#: src/readelf.c:13013 src/readelf.c:13081 src/size.c:396 src/size.c:467
-#: src/strip.c:1093
+#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685
+#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123
+#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854
+#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896
+#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029
+#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396
+#: src/size.c:467 src/strip.c:1093
 #, c-format
 msgid "cannot get section header string table index"
 msgstr ""
@@ -3855,7 +3850,7 @@
 msgid "Show information from FILEs (a.out by default)."
 msgstr ""
 
-#: src/objdump.c:217 src/readelf.c:608
+#: src/objdump.c:217 src/readelf.c:630
 msgid "No operation specified.\n"
 msgstr "Keine Operation angegeben.\n"
 
@@ -3864,11 +3859,11 @@
 msgid "while close `%s'"
 msgstr ""
 
-#: src/objdump.c:362 src/readelf.c:2192 src/readelf.c:2383
+#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409
 msgid "INVALID SYMBOL"
 msgstr ""
 
-#: src/objdump.c:377 src/readelf.c:2226 src/readelf.c:2419
+#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445
 msgid "INVALID SECTION"
 msgstr ""
 
@@ -3923,175 +3918,175 @@
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:96
+#: src/readelf.c:97
 #, fuzzy
 msgid "ELF input selection:"
 msgstr "Eingabeauswahloptionen:"
 
-#: src/readelf.c:98
+#: src/readelf.c:99
 msgid ""
 "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
 msgstr ""
 
-#: src/readelf.c:101
+#: src/readelf.c:102
 msgid ""
 "Used with -w to find the skeleton Compile Units in FILE associated with the "
 "Split Compile units in a .dwo input file"
 msgstr ""
 
-#: src/readelf.c:103
+#: src/readelf.c:104
 #, fuzzy
 msgid "ELF output selection:"
 msgstr "Eingabeauswahloptionen:"
 
-#: src/readelf.c:105
+#: src/readelf.c:106
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr ""
 
-#: src/readelf.c:106
+#: src/readelf.c:107
 msgid "Display the dynamic segment"
 msgstr ""
 
-#: src/readelf.c:107
+#: src/readelf.c:108
 msgid "Display the ELF file header"
 msgstr ""
 
-#: src/readelf.c:109
+#: src/readelf.c:110
 msgid "Display histogram of bucket list lengths"
 msgstr ""
 
-#: src/readelf.c:110
+#: src/readelf.c:111
 msgid "Display the program headers"
 msgstr "Programm-Köpfe anzeigen"
 
-#: src/readelf.c:112
+#: src/readelf.c:113
 msgid "Display relocations"
 msgstr "Relocations anzeigen"
 
-#: src/readelf.c:113
+#: src/readelf.c:114
 #, fuzzy
 msgid "Display the section groups"
 msgstr "Programm-Köpfe anzeigen"
 
-#: src/readelf.c:114
+#: src/readelf.c:115
 #, fuzzy
 msgid "Display the sections' headers"
 msgstr "Programm-Köpfe anzeigen"
 
-#: src/readelf.c:117
+#: src/readelf.c:118
 #, fuzzy
 msgid "Display the symbol table sections"
 msgstr "Symboltabelle anzeigen"
 
-#: src/readelf.c:120
+#: src/readelf.c:121
 #, fuzzy
 msgid "Display (only) the dynamic symbol table"
 msgstr "Zeige nur externe Symbole"
 
-#: src/readelf.c:121
+#: src/readelf.c:122
 msgid "Display versioning information"
 msgstr "Versionierungsinformationen anzeigen"
 
-#: src/readelf.c:122
+#: src/readelf.c:123
 #, fuzzy
 msgid "Display the ELF notes"
 msgstr "Kernnotizen anzeigen"
 
-#: src/readelf.c:124
+#: src/readelf.c:125
 #, fuzzy
 msgid "Display architecture specific information, if any"
 msgstr "Architekturspezifische Informationen anzeigen (falls vorhanden)"
 
-#: src/readelf.c:126
+#: src/readelf.c:127
 msgid "Display sections for exception handling"
 msgstr "Abschnitte für Ausnahmebehandlung anzeigen"
 
-#: src/readelf.c:128
+#: src/readelf.c:129
 msgid "Additional output selection:"
 msgstr ""
 
-#: src/readelf.c:130
+#: src/readelf.c:131
 msgid ""
 "Display DWARF section content.  SECTION can be one of abbrev, addr, aranges, "
 "decodedaranges, frame, gdb_index, info, info+, loc, line, decodedline, "
 "ranges, pubnames, str, macinfo, macro or exception"
 msgstr ""
 
-#: src/readelf.c:134
+#: src/readelf.c:135
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr ""
 
-#: src/readelf.c:136
+#: src/readelf.c:137
 msgid "Print string contents of sections"
 msgstr ""
 
-#: src/readelf.c:139
+#: src/readelf.c:140
 msgid "Display the symbol index of an archive"
 msgstr "Symbolindex des Archivs anzeigen"
 
-#: src/readelf.c:141
+#: src/readelf.c:142
 msgid "Use the dynamic segment when possible for displaying info"
 msgstr ""
 
-#: src/readelf.c:143
+#: src/readelf.c:144
 msgid "Output control:"
 msgstr "Ausgabekontrolle:"
 
-#: src/readelf.c:145
+#: src/readelf.c:146
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr "Keine symbolischen Namen für Adressen in DWARF-Daten suchen"
 
-#: src/readelf.c:147
+#: src/readelf.c:148
 #, fuzzy
 msgid ""
 "Display just offsets instead of resolving values to addresses in DWARF data"
 msgstr "Keine symbolischen Namen für Adressen in DWARF-Daten suchen"
 
-#: src/readelf.c:149
+#: src/readelf.c:150
 msgid "Ignored for compatibility (lines always wide)"
 msgstr ""
 
-#: src/readelf.c:151
+#: src/readelf.c:152
 msgid ""
 "Show compression information for compressed sections (when used with -S); "
 "decompress section before dumping data (when used with -p or -x)"
 msgstr ""
 
 #. Short description of program.
-#: src/readelf.c:156
+#: src/readelf.c:157
 msgid "Print information from ELF file in human-readable form."
 msgstr "Informationen aus der ELF-Datei in menschenlesbarer Form ausgeben."
 
 #. Look up once.
-#: src/readelf.c:373
+#: src/readelf.c:395
 msgid "yes"
 msgstr "ja"
 
-#: src/readelf.c:374
+#: src/readelf.c:396
 msgid "no"
 msgstr "nein"
 
-#: src/readelf.c:576
+#: src/readelf.c:598
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr ""
 
-#: src/readelf.c:647 src/readelf.c:758
+#: src/readelf.c:669 src/readelf.c:780
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "konnte Elf-Deskriptor nicht erzeugen: %s"
 
-#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188
+#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr ""
 
-#: src/readelf.c:672 src/readelf.c:1300 src/readelf.c:1508
+#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530
 #, c-format
 msgid "cannot get section: %s"
 msgstr ""
 
-#: src/readelf.c:681 src/readelf.c:1307 src/readelf.c:1515 src/readelf.c:13033
+#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442
 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610
 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222
 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470
@@ -4100,345 +4095,345 @@
 msgid "cannot get section header: %s"
 msgstr ""
 
-#: src/readelf.c:689
+#: src/readelf.c:711
 #, fuzzy, c-format
 msgid "cannot get section name"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:698 src/readelf.c:6833 src/readelf.c:10887 src/readelf.c:10989
-#: src/readelf.c:11173
+#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332
+#: src/readelf.c:11516
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr ""
 
-#: src/readelf.c:714
+#: src/readelf.c:736
 #, fuzzy, c-format
 msgid "cannot create temp file '%s'"
 msgstr "neue Datei konnte nicht angelegt werden"
 
-#: src/readelf.c:723
+#: src/readelf.c:745
 #, fuzzy, c-format
 msgid "cannot write section data"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775
+#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797
 #, c-format
 msgid "error while closing Elf descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:736
+#: src/readelf.c:758
 #, fuzzy, c-format
 msgid "error while rewinding file descriptor"
 msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
 
-#: src/readelf.c:770
+#: src/readelf.c:792
 #, c-format
 msgid "'%s' is not an archive, cannot print archive index"
 msgstr ""
 
-#: src/readelf.c:874
+#: src/readelf.c:896
 #, c-format
 msgid "cannot stat input file"
 msgstr ""
 
-#: src/readelf.c:876
+#: src/readelf.c:898
 #, c-format
 msgid "input file is empty"
 msgstr ""
 
-#: src/readelf.c:878
+#: src/readelf.c:900
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "Konnte '%s' nicht lesen: %s"
 
-#: src/readelf.c:907
+#: src/readelf.c:929
 #, fuzzy, c-format
 msgid "No such section '%s' in '%s'"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:966
+#: src/readelf.c:988
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr ""
 
-#: src/readelf.c:974
+#: src/readelf.c:996
 #, c-format
 msgid "cannot create EBL handle"
 msgstr ""
 
-#: src/readelf.c:985
+#: src/readelf.c:1007
 #, fuzzy, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:1017
+#: src/readelf.c:1039
 #, fuzzy, c-format
 msgid "cannot read ELF: %s"
 msgstr "Konnte %s: %s nicht lesen"
 
-#: src/readelf.c:1050
+#: src/readelf.c:1072
 #, fuzzy
 msgid "cannot find section"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:1087
+#: src/readelf.c:1109
 msgid "NONE (None)"
 msgstr ""
 
-#: src/readelf.c:1088
+#: src/readelf.c:1110
 msgid "REL (Relocatable file)"
 msgstr ""
 
-#: src/readelf.c:1089
+#: src/readelf.c:1111
 msgid "EXEC (Executable file)"
 msgstr ""
 
-#: src/readelf.c:1090
+#: src/readelf.c:1112
 msgid "DYN (Shared object file)"
 msgstr ""
 
-#: src/readelf.c:1091
+#: src/readelf.c:1113
 msgid "CORE (Core file)"
 msgstr ""
 
-#: src/readelf.c:1096
+#: src/readelf.c:1118
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr ""
 
 #. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1098
+#: src/readelf.c:1120
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr ""
 
-#: src/readelf.c:1108
+#: src/readelf.c:1130
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
 msgstr ""
 
-#: src/readelf.c:1112
+#: src/readelf.c:1134
 #, c-format
 msgid ""
 "\n"
 "  Class:                             %s\n"
 msgstr ""
 
-#: src/readelf.c:1117
+#: src/readelf.c:1139
 #, fuzzy, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Daten:                             %s\n"
 
-#: src/readelf.c:1123
+#: src/readelf.c:1145
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr ""
 
-#: src/readelf.c:1125 src/readelf.c:1147
+#: src/readelf.c:1147 src/readelf.c:1169
 msgid "(current)"
 msgstr "(aktuell)"
 
-#: src/readelf.c:1129
+#: src/readelf.c:1151
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr ""
 
-#: src/readelf.c:1132
+#: src/readelf.c:1154
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr ""
 
-#: src/readelf.c:1135
+#: src/readelf.c:1157
 msgid "  Type:                              "
 msgstr "  Typ:                               "
 
-#: src/readelf.c:1140
+#: src/readelf.c:1162
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr ""
 
-#: src/readelf.c:1142
+#: src/readelf.c:1164
 #, fuzzy, c-format
 msgid "  Machine:                           <unknown>: 0x%x\n"
 msgstr "  Daten:                             %s\n"
 
-#: src/readelf.c:1145
+#: src/readelf.c:1167
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr ""
 
-#: src/readelf.c:1149
+#: src/readelf.c:1171
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:1152
+#: src/readelf.c:1174
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr ""
 
-#: src/readelf.c:1153 src/readelf.c:1156
+#: src/readelf.c:1175 src/readelf.c:1178
 msgid "(bytes into file)"
 msgstr ""
 
-#: src/readelf.c:1155
+#: src/readelf.c:1177
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr ""
 
-#: src/readelf.c:1158
+#: src/readelf.c:1180
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr ""
 
-#: src/readelf.c:1161
+#: src/readelf.c:1183
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:1162 src/readelf.c:1165 src/readelf.c:1182
+#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204
 msgid "(bytes)"
 msgstr "(Bytes)"
 
-#: src/readelf.c:1164
+#: src/readelf.c:1186
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:1167
+#: src/readelf.c:1189
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr ""
 
-#: src/readelf.c:1174
+#: src/readelf.c:1196
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr ""
 
-#: src/readelf.c:1177 src/readelf.c:1194 src/readelf.c:1208
+#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230
 msgid " ([0] not available)"
 msgstr ""
 
-#: src/readelf.c:1181
+#: src/readelf.c:1203
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr ""
 
-#: src/readelf.c:1184
+#: src/readelf.c:1206
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr ""
 
-#: src/readelf.c:1191
+#: src/readelf.c:1213
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr ""
 
 #. We managed to get the zeroth section.
-#: src/readelf.c:1204
+#: src/readelf.c:1226
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr ""
 
-#: src/readelf.c:1212
+#: src/readelf.c:1234
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:1216
+#: src/readelf.c:1238
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:1266 src/readelf.c:1474
+#: src/readelf.c:1288 src/readelf.c:1496
 #, fuzzy, c-format
 msgid "cannot get number of sections: %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:1269
+#: src/readelf.c:1291
 #, fuzzy, c-format
 msgid ""
 "There are %zd section headers, starting at offset %#<PRIx64>:\n"
 "\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:1277
+#: src/readelf.c:1299
 #, fuzzy, c-format
 msgid "cannot get section header string table index: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:1280
+#: src/readelf.c:1302
 msgid "Section Headers:"
 msgstr ""
 
-#: src/readelf.c:1283
+#: src/readelf.c:1305
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
 msgstr ""
 
-#: src/readelf.c:1285
+#: src/readelf.c:1307
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
 msgstr ""
 
-#: src/readelf.c:1290
+#: src/readelf.c:1312
 msgid "     [Compression  Size   Al]"
 msgstr ""
 
-#: src/readelf.c:1292
+#: src/readelf.c:1314
 msgid "     [Compression  Size     Al]"
 msgstr ""
 
-#: src/readelf.c:1370
+#: src/readelf.c:1392
 #, c-format
 msgid "bad compression header for section %zd: %s"
 msgstr ""
 
-#: src/readelf.c:1381
+#: src/readelf.c:1403
 #, c-format
 msgid "bad gnu compressed size for section %zd: %s"
 msgstr ""
 
-#: src/readelf.c:1399
+#: src/readelf.c:1421
 msgid "Program Headers:"
 msgstr "Programm-Köpfe:"
 
-#: src/readelf.c:1401
+#: src/readelf.c:1423
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 
-#: src/readelf.c:1404
+#: src/readelf.c:1426
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
 msgstr ""
 
-#: src/readelf.c:1461
+#: src/readelf.c:1483
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr ""
 
-#: src/readelf.c:1486
+#: src/readelf.c:1508
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
 "  Segment Sections..."
 msgstr ""
 
-#: src/readelf.c:1497 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
+#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
 #, c-format
 msgid "cannot get program header: %s"
 msgstr ""
 
-#: src/readelf.c:1641
+#: src/readelf.c:1663
 #, c-format
 msgid ""
 "\n"
@@ -4449,7 +4444,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1646
+#: src/readelf.c:1668
 #, c-format
 msgid ""
 "\n"
@@ -4460,32 +4455,32 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1654
+#: src/readelf.c:1676
 msgid "<INVALID SYMBOL>"
 msgstr ""
 
-#: src/readelf.c:1668
+#: src/readelf.c:1690
 msgid "<INVALID SECTION>"
 msgstr ""
 
-#: src/readelf.c:1691 src/readelf.c:2476 src/readelf.c:3581 src/readelf.c:3881
-#: src/readelf.c:12905 src/readelf.c:12912 src/readelf.c:12956
-#: src/readelf.c:12963
+#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212
+#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365
+#: src/readelf.c:13372
 msgid "Couldn't uncompress section"
 msgstr ""
 
-#: src/readelf.c:1695 src/readelf.c:2481 src/readelf.c:3585
+#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916
 #, fuzzy, c-format
 msgid "cannot get section [%zd] header: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:1864 src/readelf.c:2550 src/readelf.c:2815 src/readelf.c:2890
-#: src/readelf.c:3193 src/readelf.c:3267 src/readelf.c:5619
+#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221
+#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962
 #, fuzzy, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:1867
+#: src/readelf.c:1889
 #, c-format
 msgid ""
 "\n"
@@ -4498,7 +4493,7 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1880
+#: src/readelf.c:1902
 #, c-format
 msgid ""
 "\n"
@@ -4511,48 +4506,48 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:1890
+#: src/readelf.c:1912
 msgid "  Type              Value\n"
 msgstr ""
 
-#: src/readelf.c:1899
+#: src/readelf.c:1921
 #, fuzzy
 msgid "cannot get string table by using dynamic segment"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:1938
+#: src/readelf.c:1960
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1942
+#: src/readelf.c:1964
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1946
+#: src/readelf.c:1968
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1950
+#: src/readelf.c:1972
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr ""
 
-#: src/readelf.c:1969
+#: src/readelf.c:1993
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr ""
 
-#: src/readelf.c:2083 src/readelf.c:2272
+#: src/readelf.c:2109 src/readelf.c:2298
 #, c-format
 msgid ""
 "\n"
 "Invalid symbol table at offset %#0<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:2100 src/readelf.c:2289
+#: src/readelf.c:2126 src/readelf.c:2315
 #, c-format
 msgid ""
 "\n"
@@ -4571,7 +4566,8 @@
 #. The .rela.dyn section does not refer to a specific section but
 #. instead of section index zero.  Do not try to print a section
 #. name.
-#: src/readelf.c:2115 src/readelf.c:2304
+#. A .relr.dyn section does not refer to a specific section.
+#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485
 #, c-format
 msgid ""
 "\n"
@@ -4582,29 +4578,39 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2125
+#: src/readelf.c:2151
 msgid "  Offset      Type                 Value       Name\n"
 msgstr ""
 
-#: src/readelf.c:2127
+#: src/readelf.c:2153
 msgid "  Offset              Type                 Value               Name\n"
 msgstr ""
 
-#: src/readelf.c:2180 src/readelf.c:2191 src/readelf.c:2204 src/readelf.c:2225
-#: src/readelf.c:2237 src/readelf.c:2370 src/readelf.c:2382 src/readelf.c:2396
-#: src/readelf.c:2418 src/readelf.c:2431
+#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251
+#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422
+#: src/readelf.c:2444 src/readelf.c:2457
 msgid "<INVALID RELOC>"
 msgstr ""
 
-#: src/readelf.c:2314
+#: src/readelf.c:2340
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr ""
 
-#: src/readelf.c:2316
+#: src/readelf.c:2342
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 
-#: src/readelf.c:2558
+#: src/readelf.c:2654
+#, c-format
+msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+msgstr ""
+
+#: src/readelf.c:2750
+#, c-format
+msgid "bad dynamic symbol"
+msgstr ""
+
+#: src/readelf.c:2868
 #, c-format
 msgid ""
 "\n"
@@ -4615,40 +4621,34 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2563
+#: src/readelf.c:2873
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2571
+#: src/readelf.c:2881
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr ""
 
-#: src/readelf.c:2573
+#: src/readelf.c:2883
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr ""
 
-#: src/readelf.c:2593
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+#: src/readelf.c:3002
+msgid "Dynamic symbol information is not available for displaying symbols."
 msgstr ""
 
-#: src/readelf.c:2686
-#, c-format
-msgid "bad dynamic symbol"
-msgstr ""
-
-#: src/readelf.c:2771
+#: src/readelf.c:3102
 msgid "none"
 msgstr "keine"
 
-#: src/readelf.c:2788
+#: src/readelf.c:3119
 msgid "| <unknown>"
 msgstr "| <unbekannt>"
 
-#: src/readelf.c:2818
+#: src/readelf.c:3149
 #, c-format
 msgid ""
 "\n"
@@ -4661,17 +4661,17 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2839
+#: src/readelf.c:3170
 #, fuzzy, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Version: %hu  Datei: %s  Cnt: %hu\n"
 
-#: src/readelf.c:2852
+#: src/readelf.c:3183
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 
-#: src/readelf.c:2894
+#: src/readelf.c:3225
 #, c-format
 msgid ""
 "\n"
@@ -4684,18 +4684,18 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:2922
+#: src/readelf.c:3253
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr ""
 
-#: src/readelf.c:2937
+#: src/readelf.c:3268
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr ""
 
 #. Print the header.
-#: src/readelf.c:3197
+#: src/readelf.c:3528
 #, c-format
 msgid ""
 "\n"
@@ -4708,15 +4708,15 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:3225
+#: src/readelf.c:3556
 msgid "   0 *local*                     "
 msgstr "   0 *lokal*                     "
 
-#: src/readelf.c:3230
+#: src/readelf.c:3561
 msgid "   1 *global*                    "
 msgstr "   1 *global*                    "
 
-#: src/readelf.c:3272
+#: src/readelf.c:3603
 #, c-format
 msgid ""
 "\n"
@@ -4731,66 +4731,66 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:3294
+#: src/readelf.c:3625
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr ""
 
-#: src/readelf.c:3296
+#: src/readelf.c:3627
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:3303
+#: src/readelf.c:3634
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:3316
+#: src/readelf.c:3647
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
 "\t\t\t  unsuccessful lookup: %f\n"
 msgstr ""
 
-#: src/readelf.c:3334 src/readelf.c:3398 src/readelf.c:3464
+#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr ""
 
-#: src/readelf.c:3342
+#: src/readelf.c:3673
 #, fuzzy, c-format
 msgid "invalid data in sysv.hash section %d"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:3371
+#: src/readelf.c:3702
 #, fuzzy, c-format
 msgid "invalid chain in sysv.hash section %d"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:3406
+#: src/readelf.c:3737
 #, fuzzy, c-format
 msgid "invalid data in sysv.hash64 section %d"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:3437
+#: src/readelf.c:3768
 #, fuzzy, c-format
 msgid "invalid chain in sysv.hash64 section %d"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:3473
+#: src/readelf.c:3804
 #, fuzzy, c-format
 msgid "invalid data in gnu.hash section %d"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:3539
+#: src/readelf.c:3870
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
 " Bitmask Size: %zu bytes  %<PRIuFAST32>%% bits set  2nd hash shift: %u\n"
 msgstr ""
 
-#: src/readelf.c:3624
+#: src/readelf.c:3955
 #, c-format
 msgid ""
 "\n"
@@ -4801,13 +4801,13 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:3638
+#: src/readelf.c:3969
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
 msgstr ""
 
-#: src/readelf.c:3698
+#: src/readelf.c:4029
 #, c-format
 msgid ""
 "\n"
@@ -4815,107 +4815,107 @@
 "%#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:3715
+#: src/readelf.c:4046
 msgid "  Owner          Size\n"
 msgstr ""
 
-#: src/readelf.c:3739
+#: src/readelf.c:4070
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
 #. Unknown subsection, print and skip.
-#: src/readelf.c:3778
+#: src/readelf.c:4109
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
 #. Tag_File
-#: src/readelf.c:3783
+#: src/readelf.c:4114
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    File: %11<PRIu32>\n"
 
-#: src/readelf.c:3833
+#: src/readelf.c:4164
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3836
+#: src/readelf.c:4167
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3839
+#: src/readelf.c:4170
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3849
+#: src/readelf.c:4180
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3852
+#: src/readelf.c:4183
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3890
+#: src/readelf.c:4221
 #, fuzzy
 msgid "Couldn't get data from section"
 msgstr "konnte Versionierungsabschnitt nicht erstellen: %s"
 
-#: src/readelf.c:3955
+#: src/readelf.c:4286
 #, fuzzy
 msgid "sprintf failure"
 msgstr "mprotect fehlgeschlagen"
 
-#: src/readelf.c:4439
+#: src/readelf.c:4770
 msgid "empty block"
 msgstr ""
 
-#: src/readelf.c:4442
+#: src/readelf.c:4773
 #, c-format
 msgid "%zu byte block:"
 msgstr ""
 
-#: src/readelf.c:4920
+#: src/readelf.c:5251
 #, c-format
 msgid "%*s[%2<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr ""
 
-#: src/readelf.c:5080
+#: src/readelf.c:5423
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr ""
 
-#: src/readelf.c:5087
+#: src/readelf.c:5430
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr ""
 
-#: src/readelf.c:5094
+#: src/readelf.c:5437
 #, c-format
 msgid "%s %#<PRIx64> used with different base addresses"
 msgstr ""
 
-#: src/readelf.c:5101
+#: src/readelf.c:5444
 #, c-format
 msgid "%s %#<PRIx64> used with different attribute %s and %s"
 msgstr ""
 
-#: src/readelf.c:5201
+#: src/readelf.c:5544
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr ""
 
-#: src/readelf.c:5209
+#: src/readelf.c:5552
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:5315
+#: src/readelf.c:5658
 #, c-format
 msgid ""
 "\n"
@@ -4923,74 +4923,74 @@
 " [ Code]\n"
 msgstr ""
 
-#: src/readelf.c:5323
+#: src/readelf.c:5666
 #, c-format
 msgid ""
 "\n"
 "Abbreviation section at offset %<PRIu64>:\n"
 msgstr ""
 
-#: src/readelf.c:5336
+#: src/readelf.c:5679
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr ""
 
-#: src/readelf.c:5352
+#: src/readelf.c:5695
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr ""
 
-#: src/readelf.c:5389 src/readelf.c:5682 src/readelf.c:5853 src/readelf.c:6224
-#: src/readelf.c:6850 src/readelf.c:8619 src/readelf.c:9361 src/readelf.c:9829
-#: src/readelf.c:10084 src/readelf.c:10246 src/readelf.c:10627
-#: src/readelf.c:10698
+#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567
+#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172
+#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970
+#: src/readelf.c:11041
 #, c-format
 msgid ""
 "\n"
 "DWARF section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:5492 src/readelf.c:5516 src/readelf.c:5889 src/readelf.c:9397
+#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5494 src/readelf.c:5531 src/readelf.c:5902 src/readelf.c:9410
+#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5495 src/readelf.c:5540 src/readelf.c:5911 src/readelf.c:9419
+#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5497 src/readelf.c:5550 src/readelf.c:5921 src/readelf.c:9429
+#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5535 src/readelf.c:5906 src/readelf.c:9414 src/readelf.c:10820
+#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "unbekannte Version"
 
-#: src/readelf.c:5545 src/readelf.c:5752 src/readelf.c:5916 src/readelf.c:9424
+#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767
 #, fuzzy, c-format
 msgid "unsupported address size"
 msgstr "Kein Adress-Wert"
 
-#: src/readelf.c:5556 src/readelf.c:5763 src/readelf.c:5926 src/readelf.c:9434
+#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777
 #, c-format
 msgid "unsupported segment size"
 msgstr ""
 
-#: src/readelf.c:5609
+#: src/readelf.c:5952
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ""
 
-#: src/readelf.c:5624
+#: src/readelf.c:5967
 #, c-format
 msgid ""
 "\n"
@@ -5001,229 +5001,229 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:5655
+#: src/readelf.c:5998
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5657
+#: src/readelf.c:6000
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:5695 src/readelf.c:8638
+#: src/readelf.c:6038 src/readelf.c:8981
 #, c-format
 msgid ""
 "\n"
 "Table at offset %zu:\n"
 msgstr ""
 
-#: src/readelf.c:5699 src/readelf.c:5870 src/readelf.c:6874 src/readelf.c:8649
-#: src/readelf.c:9378
+#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992
+#: src/readelf.c:9721
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr ""
 
-#: src/readelf.c:5715
+#: src/readelf.c:6058
 #, fuzzy, c-format
 msgid ""
 "\n"
 " Length:        %6<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5727
+#: src/readelf.c:6070
 #, fuzzy, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5731
+#: src/readelf.c:6074
 #, c-format
 msgid "unsupported aranges version"
 msgstr ""
 
-#: src/readelf.c:5742
+#: src/readelf.c:6085
 #, fuzzy, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5748
+#: src/readelf.c:6091
 #, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:5759
+#: src/readelf.c:6102
 #, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:5814
+#: src/readelf.c:6157
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr ""
 
-#: src/readelf.c:5876 src/readelf.c:9384
+#: src/readelf.c:6219 src/readelf.c:9727
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5931 src/readelf.c:9439
+#: src/readelf.c:6274 src/readelf.c:9782
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5947 src/readelf.c:9455
+#: src/readelf.c:6290 src/readelf.c:9798
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5949 src/readelf.c:9457
+#: src/readelf.c:6292 src/readelf.c:9800
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5955 src/readelf.c:9463
+#: src/readelf.c:6298 src/readelf.c:9806
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5966 src/readelf.c:9474
+#: src/readelf.c:6309 src/readelf.c:9817
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5970 src/readelf.c:9478
+#: src/readelf.c:6313 src/readelf.c:9821
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:6022
+#: src/readelf.c:6365
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "Ungültige Daten"
 
-#: src/readelf.c:6207 src/readelf.c:9813
+#: src/readelf.c:6550 src/readelf.c:10156
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:6255 src/readelf.c:9862
+#: src/readelf.c:6598 src/readelf.c:10205
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6257 src/readelf.c:9864
+#: src/readelf.c:6600 src/readelf.c:10207
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6266 src/readelf.c:9890 src/readelf.c:9916
+#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:6291 src/readelf.c:10000
+#: src/readelf.c:6634 src/readelf.c:10343
 #, fuzzy
 msgid "base address"
 msgstr "Außerhalb des Adressbereiches"
 
-#: src/readelf.c:6301 src/readelf.c:10010
+#: src/readelf.c:6644 src/readelf.c:10353
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx]  %s..%s\n"
 
-#: src/readelf.c:6565
+#: src/readelf.c:6908
 msgid "         <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:6822
+#: src/readelf.c:7165
 #, fuzzy, c-format
 msgid "cannot get ELF: %s"
 msgstr "ELF Kopf konnte nicht ausgelesen werden"
 
-#: src/readelf.c:6846
+#: src/readelf.c:7189
 #, c-format
 msgid ""
 "\n"
 "Call frame information section [%2zu] '%s' at offset %#<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:6896
+#: src/readelf.c:7239
 #, c-format
 msgid ""
 "\n"
 " [%6tx] Zero terminator\n"
 msgstr ""
 
-#: src/readelf.c:7000 src/readelf.c:7154
+#: src/readelf.c:7343 src/readelf.c:7497
 #, fuzzy, c-format
 msgid "invalid augmentation length"
 msgstr "ungültige Abschnittsausrichtung"
 
-#: src/readelf.c:7015
+#: src/readelf.c:7358
 msgid "FDE address encoding: "
 msgstr ""
 
-#: src/readelf.c:7021
+#: src/readelf.c:7364
 msgid "LSDA pointer encoding: "
 msgstr ""
 
-#: src/readelf.c:7131
+#: src/readelf.c:7474
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:7138
+#: src/readelf.c:7481
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr ""
 
-#: src/readelf.c:7175
+#: src/readelf.c:7518
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:7260
+#: src/readelf.c:7603
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr ""
 
-#: src/readelf.c:7270
+#: src/readelf.c:7613
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr ""
 
-#: src/readelf.c:7292
+#: src/readelf.c:7635
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr ""
 
-#: src/readelf.c:7622
+#: src/readelf.c:7965
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "Ungültige Datei"
 
-#: src/readelf.c:7626
+#: src/readelf.c:7969
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr "unbekannte Form %<PRIx64>"
 
-#: src/readelf.c:7630
+#: src/readelf.c:7973
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "ELF Kopf konnte nicht ausgelesen werden"
 
-#: src/readelf.c:7952
+#: src/readelf.c:8295
 #, c-format
 msgid ""
 "\n"
@@ -5231,12 +5231,12 @@
 " [Offset]\n"
 msgstr ""
 
-#: src/readelf.c:8002
+#: src/readelf.c:8345
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:8022
+#: src/readelf.c:8365
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5245,7 +5245,7 @@
 " Type signature: %#<PRIx64>, Type offset: %#<PRIx64> [%<PRIx64>]\n"
 msgstr ""
 
-#: src/readelf.c:8034
+#: src/readelf.c:8377
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5253,37 +5253,37 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:8044 src/readelf.c:8205
+#: src/readelf.c:8387 src/readelf.c:8548
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:8071
+#: src/readelf.c:8414
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:8100
+#: src/readelf.c:8443
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr ""
 
-#: src/readelf.c:8109
+#: src/readelf.c:8452
 #, 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:8145
+#: src/readelf.c:8488
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr ""
 
-#: src/readelf.c:8153
+#: src/readelf.c:8496
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr ""
 
-#: src/readelf.c:8197
+#: src/readelf.c:8540
 #, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5291,7 +5291,7 @@
 "%<PRIu8>, Offset size: %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:8249
+#: src/readelf.c:8592
 #, c-format
 msgid ""
 "\n"
@@ -5299,13 +5299,13 @@
 "\n"
 msgstr ""
 
-#: src/readelf.c:8581
+#: src/readelf.c:8924
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "unbekannte Form %<PRIx64>"
 
 #. Print what we got so far.
-#: src/readelf.c:8729
+#: src/readelf.c:9072
 #, c-format
 msgid ""
 "\n"
@@ -5324,187 +5324,187 @@
 "Opcodes:\n"
 msgstr ""
 
-#: src/readelf.c:8751
+#: src/readelf.c:9094
 #, fuzzy, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "ungültige .debug_line Sektion"
 
-#: src/readelf.c:8759
+#: src/readelf.c:9102
 #, fuzzy, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "Kein Adress-Wert"
 
-#: src/readelf.c:8767
+#: src/readelf.c:9110
 #, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr ""
 
-#: src/readelf.c:8777
+#: src/readelf.c:9120
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr ""
 
-#: src/readelf.c:8792
+#: src/readelf.c:9135
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:8803
+#: src/readelf.c:9146
 msgid ""
 "\n"
 "Directory table:"
 msgstr ""
 
-#: src/readelf.c:8809 src/readelf.c:8886
+#: src/readelf.c:9152 src/readelf.c:9229
 #, fuzzy, c-format
 msgid "      ["
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:8880
+#: src/readelf.c:9223
 msgid ""
 "\n"
 "File name table:"
 msgstr ""
 
-#: src/readelf.c:8941
+#: src/readelf.c:9284
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
 
-#: src/readelf.c:8987
+#: src/readelf.c:9330
 msgid ""
 "\n"
 "No line number statements."
 msgstr ""
 
-#: src/readelf.c:8991
+#: src/readelf.c:9334
 msgid ""
 "\n"
 "Line number statements:"
 msgstr ""
 
-#: src/readelf.c:9006
+#: src/readelf.c:9349
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr ""
 
-#: src/readelf.c:9040
+#: src/readelf.c:9383
 #, c-format
 msgid " special opcode %u: address+%u = "
 msgstr ""
 
-#: src/readelf.c:9044
+#: src/readelf.c:9387
 #, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:9047
+#: src/readelf.c:9390
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:9065
+#: src/readelf.c:9408
 #, c-format
 msgid " extended opcode %u: "
 msgstr ""
 
-#: src/readelf.c:9070
+#: src/readelf.c:9413
 msgid " end of sequence"
 msgstr ""
 
-#: src/readelf.c:9088
+#: src/readelf.c:9431
 #, fuzzy, c-format
 msgid " set address to "
 msgstr "Außerhalb des Adressbereiches"
 
-#: src/readelf.c:9116
+#: src/readelf.c:9459
 #, c-format
 msgid " define new file: dir=%u, mtime=%<PRIu64>, length=%<PRIu64>, name=%s\n"
 msgstr ""
 
-#: src/readelf.c:9130
+#: src/readelf.c:9473
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr ""
 
-#: src/readelf.c:9157
+#: src/readelf.c:9500
 #, c-format
 msgid " set inlined context %u, function name %s (0x%x)\n"
 msgstr ""
 
-#: src/readelf.c:9181
+#: src/readelf.c:9524
 #, c-format
 msgid " set function name %s (0x%x)\n"
 msgstr ""
 
 #. Unknown, ignore it.
-#: src/readelf.c:9188
+#: src/readelf.c:9531
 #, fuzzy
 msgid " unknown opcode"
 msgstr "unbekannter Typ"
 
 #. Takes no argument.
-#: src/readelf.c:9200
+#: src/readelf.c:9543
 msgid " copy"
 msgstr ""
 
-#: src/readelf.c:9211
+#: src/readelf.c:9554
 #, c-format
 msgid " advance address by %u to "
 msgstr ""
 
-#: src/readelf.c:9215 src/readelf.c:9276
+#: src/readelf.c:9558 src/readelf.c:9619
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:9227
+#: src/readelf.c:9570
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr ""
 
-#: src/readelf.c:9237
+#: src/readelf.c:9580
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:9248
+#: src/readelf.c:9591
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr ""
 
-#: src/readelf.c:9255
+#: src/readelf.c:9598
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr ""
 
 #. Takes no argument.
-#: src/readelf.c:9261
+#: src/readelf.c:9604
 msgid " set basic block flag"
 msgstr ""
 
-#: src/readelf.c:9272
+#: src/readelf.c:9615
 #, c-format
 msgid " advance address by constant %u to "
 msgstr ""
 
-#: src/readelf.c:9292
+#: src/readelf.c:9635
 #, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr ""
 
 #. Takes no argument.
-#: src/readelf.c:9302
+#: src/readelf.c:9645
 msgid " set prologue end flag"
 msgstr ""
 
 #. Takes no argument.
-#: src/readelf.c:9307
+#: src/readelf.c:9650
 msgid " set epilogue begin flag"
 msgstr ""
 
-#: src/readelf.c:9317
+#: src/readelf.c:9660
 #, c-format
 msgid " set isa to %u\n"
 msgstr ""
@@ -5512,93 +5512,93 @@
 #. 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:9326
+#: src/readelf.c:9669
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/readelf.c:9527
+#: src/readelf.c:9870
 #, c-format
 msgid "    <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:9567
+#: src/readelf.c:9910
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "Ungültige Daten"
 
-#: src/readelf.c:10037 src/readelf.c:11082
+#: src/readelf.c:10380 src/readelf.c:11425
 msgid "   <INVALID DATA>\n"
 msgstr ""
 
-#: src/readelf.c:10168
+#: src/readelf.c:10511
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr ""
 
-#: src/readelf.c:10191
+#: src/readelf.c:10534
 #, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr ""
 
-#: src/readelf.c:10286
+#: src/readelf.c:10629
 #, fuzzy, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10298
+#: src/readelf.c:10641
 #, fuzzy, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10304 src/readelf.c:11202
+#: src/readelf.c:10647 src/readelf.c:11546
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr ""
 
-#: src/readelf.c:10311
+#: src/readelf.c:10654
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10340
+#: src/readelf.c:10683
 #, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr ""
 
-#: src/readelf.c:10348
+#: src/readelf.c:10691
 #, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr ""
 
-#: src/readelf.c:10373
+#: src/readelf.c:10716
 #, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr ""
 
-#: src/readelf.c:10380
+#: src/readelf.c:10723
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr ""
 
-#: src/readelf.c:10392
+#: src/readelf.c:10735
 #, c-format
 msgid " %<PRIu8> arguments:"
 msgstr ""
 
-#: src/readelf.c:10407
+#: src/readelf.c:10750
 #, c-format
 msgid " no arguments."
 msgstr ""
 
-#: src/readelf.c:10608
+#: src/readelf.c:10951
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
 
-#: src/readelf.c:10663
+#: src/readelf.c:11006
 #, c-format
 msgid ""
 "\n"
@@ -5607,72 +5607,72 @@
 msgstr ""
 
 #. TRANS: the debugstr| prefix makes the string unique.
-#: src/readelf.c:10668
+#: src/readelf.c:11011
 msgctxt "debugstr"
 msgid "Offset"
 msgstr ""
 
-#: src/readelf.c:10678
+#: src/readelf.c:11021
 #, c-format
 msgid " *** error, missing string terminator\n"
 msgstr ""
 
-#: src/readelf.c:10800
+#: src/readelf.c:11143
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10802
+#: src/readelf.c:11145
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10816
+#: src/readelf.c:11159
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10825
+#: src/readelf.c:11168
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10879
+#: src/readelf.c:11222
 #, c-format
 msgid ""
 "\n"
 "Call frame search table section [%2zu] '.eh_frame_hdr':\n"
 msgstr ""
 
-#: src/readelf.c:10981
+#: src/readelf.c:11324
 #, c-format
 msgid ""
 "\n"
 "Exception handling table section [%2zu] '.gcc_except_table':\n"
 msgstr ""
 
-#: src/readelf.c:11004
+#: src/readelf.c:11347
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr ""
 
-#: src/readelf.c:11016
+#: src/readelf.c:11359
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr ""
 
-#: src/readelf.c:11033
+#: src/readelf.c:11376
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr ""
 
-#: src/readelf.c:11048
+#: src/readelf.c:11391
 msgid ""
 "\n"
 " Call site table:"
 msgstr ""
 
-#: src/readelf.c:11064
+#: src/readelf.c:11407
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5681,142 +5681,164 @@
 "        Action:            %u\n"
 msgstr ""
 
-#: src/readelf.c:11137
+#: src/readelf.c:11480
 #, c-format
 msgid "invalid TType encoding"
 msgstr ""
 
-#: src/readelf.c:11164
+#: src/readelf.c:11507
 #, c-format
 msgid ""
 "\n"
 "GDB section [%2zu] '%s' at offset %#<PRIx64> contains %<PRId64> bytes :\n"
 msgstr ""
 
-#: src/readelf.c:11193
+#: src/readelf.c:11536
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:11211
+#: src/readelf.c:11555
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:11218
+#: src/readelf.c:11562
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:11225
+#: src/readelf.c:11569
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:11232
+#: src/readelf.c:11576
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:11239
+#: src/readelf.c:11586
+#, fuzzy, c-format
+msgid " shortcut offset: %#<PRIx32>\n"
+msgstr "      %s: %<PRId64>\n"
+
+#: src/readelf.c:11594
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr ""
 
-#: src/readelf.c:11253
+#: src/readelf.c:11608
 #, c-format
 msgid ""
 "\n"
 " CU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:11278
+#: src/readelf.c:11633
 #, c-format
 msgid ""
 "\n"
 " TU list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:11307
+#: src/readelf.c:11662
 #, c-format
 msgid ""
 "\n"
 " Address list at offset %#<PRIx32> contains %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:11339
+#: src/readelf.c:11705
 #, c-format
 msgid ""
 "\n"
 " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
 msgstr ""
 
-#: src/readelf.c:11477
+#: src/readelf.c:11790
+#, c-format
+msgid ""
+"\n"
+"Shortcut table at offset %#<PRIx32> contains %zu slots:\n"
+msgstr ""
+
+#: src/readelf.c:11802
+#, c-format
+msgid "Language of main: %s\n"
+msgstr ""
+
+#: src/readelf.c:11803
+#, c-format
+msgid "Name of main: "
+msgstr ""
+
+#: src/readelf.c:11886
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:11843 src/readelf.c:12463 src/readelf.c:12573
-#: src/readelf.c:12630
+#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982
+#: src/readelf.c:13039
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr ""
 
-#: src/readelf.c:12207
+#: src/readelf.c:12616
 #, c-format
 msgid ""
 "\n"
 "%*s... <repeats %u more times> ..."
 msgstr ""
 
-#: src/readelf.c:12709
+#: src/readelf.c:13118
 msgid "  Owner          Data size  Type\n"
 msgstr ""
 
-#: src/readelf.c:12737
+#: src/readelf.c:13146
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr ""
 
-#: src/readelf.c:12789
+#: src/readelf.c:13198
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "Konnte Inhalt von %s: %s nicht lesen"
 
-#: src/readelf.c:12822
+#: src/readelf.c:13231
 #, c-format
 msgid ""
 "\n"
 "Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12845
+#: src/readelf.c:13254
 #, c-format
 msgid ""
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12892
+#: src/readelf.c:13301
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Section [%zu] '%s' has no data to dump.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12919 src/readelf.c:12970
+#: src/readelf.c:13328 src/readelf.c:13379
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12924
+#: src/readelf.c:13333
 #, c-format
 msgid ""
 "\n"
 "Hex dump of section [%zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12929
+#: src/readelf.c:13338
 #, c-format
 msgid ""
 "\n"
@@ -5824,21 +5846,21 @@
 "%#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12943
+#: src/readelf.c:13352
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Section [%zu] '%s' has no strings to dump.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12975
+#: src/readelf.c:13384
 #, c-format
 msgid ""
 "\n"
 "String section [%zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12980
+#: src/readelf.c:13389
 #, c-format
 msgid ""
 "\n"
@@ -5846,45 +5868,45 @@
 "offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:13028
+#: src/readelf.c:13437
 #, c-format
 msgid ""
 "\n"
 "section [%lu] does not exist"
 msgstr ""
 
-#: src/readelf.c:13058
+#: src/readelf.c:13467
 #, c-format
 msgid ""
 "\n"
 "section '%s' does not exist"
 msgstr ""
 
-#: src/readelf.c:13113
+#: src/readelf.c:13522
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr ""
 
-#: src/readelf.c:13116
+#: src/readelf.c:13525
 #, c-format
 msgid ""
 "\n"
 "Archive '%s' has no symbol index\n"
 msgstr ""
 
-#: src/readelf.c:13120
+#: src/readelf.c:13529
 #, c-format
 msgid ""
 "\n"
 "Index of archive '%s' has %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:13138
+#: src/readelf.c:13547
 #, fuzzy, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:13143
+#: src/readelf.c:13552
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr ""
@@ -6362,7 +6384,7 @@
 msgid "%s: error while getting shdrstrndx: %s"
 msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
 
-#: src/strip.c:1712 src/strip.c:2553
+#: src/strip.c:1712 src/strip.c:2552
 #, fuzzy, c-format
 msgid "%s: error updating shdrstrndx: %s"
 msgstr "Fehler beim Schliessen des Elf-Desktriptor: %s\n"
@@ -6396,7 +6418,7 @@
 msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
 msgstr ""
 
-#: src/strip.c:2469 src/strip.c:2577
+#: src/strip.c:2469 src/strip.c:2574
 #, c-format
 msgid "while writing '%s': %s"
 msgstr ""
@@ -6416,22 +6438,22 @@
 msgid "%s: error while creating ELF header: %s"
 msgstr ""
 
-#: src/strip.c:2562
+#: src/strip.c:2560
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr ""
 
-#: src/strip.c:2602 src/strip.c:2622
+#: src/strip.c:2599 src/strip.c:2619
 #, fuzzy, c-format
 msgid "while writing '%s'"
 msgstr "beim Schliessen von '%s'"
 
-#: src/strip.c:2659 src/strip.c:2666
+#: src/strip.c:2656 src/strip.c:2663
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr ""
 
-#: src/strip.c:2683 src/strip.c:2759
+#: src/strip.c:2680 src/strip.c:2756
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr ""
@@ -6877,7 +6899,7 @@
 "section PATH SECTION-NAME\n"
 msgstr ""
 
-#: tests/backtrace.c:483
+#: tests/backtrace.c:491
 msgid "Run executable"
 msgstr ""
 
diff --git a/po/es.po b/po/es.po
index 472a6b7..3736209 100644
--- a/po/es.po
+++ b/po/es.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: elfutils\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2023-03-03 16:09+0100\n"
+"POT-Creation-Date: 2023-11-03 17:36+0100\n"
 "PO-Revision-Date: 2011-01-10 15:17-0300\n"
 "Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz."
 "com.ar>\n"
@@ -52,7 +52,7 @@
 "garantía, ni siquiera para SU COMERCIALIZACIÓN o PARA SER USADO CON UN FIN "
 "DETERMINADO.\n"
 
-#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11793
+#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202
 #: src/unstrip.c:311
 #, c-format
 msgid "memory exhausted"
@@ -555,7 +555,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79
 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
+#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<desconocido>"
 
@@ -649,7 +649,7 @@
 msgid "invalid size of destination operand"
 msgstr "tamaño inválido del operando destino"
 
-#: libelf/elf_error.c:86 src/readelf.c:6415
+#: libelf/elf_error.c:86 src/readelf.c:6758
 #, c-format
 msgid "invalid encoding"
 msgstr "codificación inválida"
@@ -735,8 +735,8 @@
 msgid "invalid section header"
 msgstr "encabezamiento de sección inválida"
 
-#: libelf/elf_error.c:190 src/readelf.c:10294 src/readelf.c:10899
-#: src/readelf.c:11000 src/readelf.c:11188
+#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242
+#: src/readelf.c:11343 src/readelf.c:11531
 #, c-format
 msgid "invalid data"
 msgstr "datos inválidos"
@@ -1404,8 +1404,8 @@
 msgstr ""
 
 #. Strings for arguments in help texts.
-#: src/elfclassify.c:979 src/elfcompress.c:1433 src/elflint.c:76
-#: src/readelf.c:160
+#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77
+#: src/readelf.c:161
 msgid "FILE..."
 msgstr "FICHERO..."
 
@@ -1696,22 +1696,22 @@
 msgstr "tipo desconocido"
 
 #. We need at least one input file.
-#: src/elfcompress.c:162 src/elfcompress.c:1444
+#: src/elfcompress.c:162 src/elfcompress.c:1447
 #, fuzzy, c-format
 msgid "No input file given"
 msgstr "archivo de entrada vacío"
 
-#: src/elfcompress.c:168 src/elfcompress.c:1448
+#: src/elfcompress.c:168 src/elfcompress.c:1451
 #, fuzzy, c-format
 msgid "Only one input file allowed together with '-o'"
 msgstr "Sólo se permite ingresar un archivo junto con '-o' y '-f'"
 
-#: src/elfcompress.c:1405
+#: src/elfcompress.c:1408
 #, fuzzy
 msgid "Place (de)compressed output into FILE"
 msgstr "Colocar la salida obtenida en FICHERO"
 
-#: src/elfcompress.c:1408
+#: src/elfcompress.c:1411
 msgid ""
 "What type of compression to apply. TYPE can be 'none' (decompress), "
 "'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-"
@@ -1719,49 +1719,49 @@
 "compression)"
 msgstr ""
 
-#: src/elfcompress.c:1412
+#: src/elfcompress.c:1415
 msgid ""
 "SECTION name to (de)compress, SECTION is an extended wildcard pattern "
 "(defaults to '.?(z)debug*')"
 msgstr ""
 
-#: src/elfcompress.c:1415
+#: src/elfcompress.c:1418
 msgid "Print a message for each section being (de)compressed"
 msgstr ""
 
-#: src/elfcompress.c:1418
+#: src/elfcompress.c:1421
 msgid ""
 "Force compression of section even if it would become larger or update/"
 "rewrite the file even if no section would be (de)compressed"
 msgstr ""
 
-#: src/elfcompress.c:1421 src/strip.c:92
+#: src/elfcompress.c:1424 src/strip.c:92
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "Relaja algunas reglas para manejar ficheros ELF rotos"
 
-#: src/elfcompress.c:1424
+#: src/elfcompress.c:1427
 #, fuzzy
 msgid "Be silent when a section cannot be compressed"
 msgstr ""
 "Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n"
 
-#: src/elfcompress.c:1434
+#: src/elfcompress.c:1437
 msgid "Compress or decompress sections in an ELF file."
 msgstr ""
 
-#: src/elflint.c:62
+#: src/elflint.c:63
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Sea extremadamente estricto, característica de marca de nivel 2."
 
-#: src/elflint.c:63
+#: src/elflint.c:64
 msgid "Do not print anything if successful"
 msgstr "No imprime nada si está correcto"
 
-#: src/elflint.c:64
+#: src/elflint.c:65
 msgid "Binary is a separate debuginfo file"
 msgstr "Binario es un archivo debuginfo independiente"
 
-#: src/elflint.c:66
+#: src/elflint.c:67
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1770,174 +1770,174 @@
 "roto de alguna forma"
 
 #. Short description of program.
-#: src/elflint.c:72
+#: src/elflint.c:73
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr "Chequeo minucioso de ficheros ELF de acuerdo con gABI/psABI "
 
-#: src/elflint.c:153 src/readelf.c:391
+#: src/elflint.c:154 src/readelf.c:413
 #, fuzzy, c-format
 msgid "cannot open input file '%s'"
 msgstr "no se puede abrir el fichero de entrada"
 
-#: src/elflint.c:160
+#: src/elflint.c:161
 #, fuzzy, c-format
 msgid "cannot generate Elf descriptor for '%s': %s\n"
 msgstr "no se puede crear descriptor ELF: %s\n"
 
-#: src/elflint.c:179
+#: src/elflint.c:180
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "error al cerrar el descriptor ELF: %s\n"
 
-#: src/elflint.c:183
+#: src/elflint.c:184
 msgid "No errors"
 msgstr "No hay errores"
 
-#: src/elflint.c:218 src/readelf.c:603
+#: src/elflint.c:219 src/readelf.c:625
 msgid "Missing file name.\n"
 msgstr "Falta el nombre de archivo.\n"
 
-#: src/elflint.c:283
+#: src/elflint.c:284
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr " error al liberar descriptor sub-ELF: %s\n"
 
 #. We cannot do anything.
-#: src/elflint.c:291
+#: src/elflint.c:292
 #, c-format
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "No es un fichero ELF - tiene los bytes mágicos errados en el inicio\n"
 
-#: src/elflint.c:357
+#: src/elflint.c:358
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr "e_ident[%d] == %d es una clase desconocida\n"
 
-#: src/elflint.c:362
+#: src/elflint.c:363
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr "e_ident[%d] == %d es una codificación de datos desconocida\n"
 
-#: src/elflint.c:366
+#: src/elflint.c:367
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr ""
 "número de versión de encabezamiento ELF desconocido e_ident[%d] == %d\n"
 
-#: src/elflint.c:374
+#: src/elflint.c:375
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr "Sistema operativo OS ABI e_ident[%d] == '%s' incompatible\n"
 
-#: src/elflint.c:380
+#: src/elflint.c:381
 #, fuzzy, c-format
 msgid "unsupported ABI version e_ident[%d] == %d\n"
 msgstr "Versión incompatible ABI e_ident[%d] == %d\n"
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] no es cero\n"
 
-#: src/elflint.c:390
+#: src/elflint.c:391
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "tipo de fichero objeto desconocido %d\n"
 
-#: src/elflint.c:397
+#: src/elflint.c:398
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "tipo de máquina desconocido %d\n"
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file version\n"
 msgstr "versión de fichero objeto desconocido\n"
 
-#: src/elflint.c:407
+#: src/elflint.c:408
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "Compensación de encabezamiento de programa inválida\n"
 
-#: src/elflint.c:409
+#: src/elflint.c:410
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 "tanto los ejecutables como los DSO no pueden tener compensación de "
 "encabezamiento de programa cero\n"
 
-#: src/elflint.c:413
+#: src/elflint.c:414
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr "cantidad no válida de entradas del encabezamiento del programa\n"
 
-#: src/elflint.c:421
+#: src/elflint.c:422
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "compensación de sección de tabla de encabezamiento inválida\n"
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "section header table must be present\n"
 msgstr "tabla de encabezamiento de sección debe estar presente\n"
 
-#: src/elflint.c:438
+#: src/elflint.c:439
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr ""
 "cantidad no válida de entradas en la tabla del encabezamiento de sección\n"
 
-#: src/elflint.c:455
+#: src/elflint.c:456
 #, c-format
 msgid "invalid section header index\n"
 msgstr "Índice de sección de encabezamiento inválido\n"
 
-#: src/elflint.c:473
+#: src/elflint.c:474
 #, c-format
 msgid "Can only check %u headers, shnum was %u\n"
 msgstr ""
 
-#: src/elflint.c:487
+#: src/elflint.c:488
 #, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "cantidad no válida de entradas de tabla de encabezado del programa\n"
 
-#: src/elflint.c:504
+#: src/elflint.c:505
 #, c-format
 msgid "Can only check %u headers, phnum was %u\n"
 msgstr ""
 
-#: src/elflint.c:509
+#: src/elflint.c:510
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "Indicadores de máquina inválidos: %s\n"
 
-#: src/elflint.c:516 src/elflint.c:533
+#: src/elflint.c:517 src/elflint.c:534
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr "tamaño inválido del encabezamiento ELF: %hd\n"
 
-#: src/elflint.c:519 src/elflint.c:536
+#: src/elflint.c:520 src/elflint.c:537
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr "tamaño inválido del encabezamiento del programa: %hd\n"
 
-#: src/elflint.c:522 src/elflint.c:539
+#: src/elflint.c:523 src/elflint.c:540
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr "tamaño o posición inválidos del encabezamiento del programa\n"
 
-#: src/elflint.c:525 src/elflint.c:542
+#: src/elflint.c:526 src/elflint.c:543
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr "tamaño inválido del encabezamiento de sección: %hd\n"
 
-#: src/elflint.c:528 src/elflint.c:545
+#: src/elflint.c:529 src/elflint.c:546
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr "tamaño o posición no válidos del encabezamiento de sección\n"
 
-#: src/elflint.c:590
+#: src/elflint.c:591
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1946,7 +1946,7 @@
 "sección [%2d] '%s': sección con la bandera SHF_GROUP no es parte de una "
 "sección de grupo\n"
 
-#: src/elflint.c:594
+#: src/elflint.c:595
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1954,14 +1954,14 @@
 "sección [%2d] '%s': el grupo de sección [%2zu] '%s' no precede al miembro de "
 "grupo\n"
 
-#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
-#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
-#: src/elflint.c:3254 src/elflint.c:3456 src/elflint.c:4468
+#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610
+#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981
+#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "Sección [%2d] '%s': No se pueden obtener datos de sección\n"
 
-#: src/elflint.c:623 src/elflint.c:1662
+#: src/elflint.c:624 src/elflint.c:1699
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1970,7 +1970,7 @@
 "sección [%2d] '%s': nombrado como una tabla de cadena para la sección [%2d] "
 "'%s' pero el tipo no es SHT_STRTAB\n"
 
-#: src/elflint.c:646
+#: src/elflint.c:647
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1979,13 +1979,13 @@
 "sección [%2d] '%s': la tabla de símbolo no puede tener más de una sección de "
 "índice extendido\n"
 
-#: src/elflint.c:658
+#: src/elflint.c:659
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr ""
 "sección [%2u] '%s': el tamaño de la entrada no coincide con ElfXX_Sym\n"
 
-#: src/elflint.c:662
+#: src/elflint.c:663
 #, fuzzy, c-format
 msgid ""
 "section [%2u] '%s': number of local entries in 'st_info' larger than table "
@@ -1994,33 +1994,33 @@
 "Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de "
 "archivo\n"
 
-#: src/elflint.c:671
+#: src/elflint.c:672
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr "Sección [%2d] '%s': no se puede obtener símbolo %d: %s\n"
 
-#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
-#: src/elflint.c:688 src/elflint.c:691
+#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686
+#: src/elflint.c:689 src/elflint.c:692
 #, c-format
 msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
 msgstr "Sección [%2d] '%s': '%s' en la entrada zeroth no es cero\n"
 
-#: src/elflint.c:694
+#: src/elflint.c:695
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr "sección [%2d] '%s': XINDEX en la entrada zeroth no es cero\n"
 
-#: src/elflint.c:704
+#: src/elflint.c:705
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr "sección [%2d] '%s': no es posible obtener el símbolo %zu: %s\n"
 
-#: src/elflint.c:713
+#: src/elflint.c:714
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr "sección [%2d] '%s': símbolo %zu: valor de nombre inválido\n"
 
-#: src/elflint.c:728
+#: src/elflint.c:729
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
@@ -2029,7 +2029,7 @@
 "Sección [%2d] '%s': símbolo %zu: el índice de sección es demasiado extenso, "
 "pero no la sección extendida de la sección de índice\n"
 
-#: src/elflint.c:734
+#: src/elflint.c:735
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
@@ -2039,27 +2039,27 @@
 "caber en st_shndx (%<PRIu32>)\n"
 
 #. || sym->st_shndx > SHN_HIRESERVE  always false
-#: src/elflint.c:746
+#: src/elflint.c:747
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
 msgstr "sección [%2d] '%s': símbolo %zu: índice de sección inválido\n"
 
-#: src/elflint.c:754
+#: src/elflint.c:755
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
 msgstr "sección [%2d] '%s': símbolo %zu: tipo desconocido\n"
 
-#: src/elflint.c:760
+#: src/elflint.c:761
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
 msgstr "sección [%2d] '%s': símbolo %zu: asociación de símbolo desconocida\n"
 
-#: src/elflint.c:765
+#: src/elflint.c:766
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
 msgstr "Sección [%2d] '%s': símbolo %zu: símbolo único no de tipo de objeto\n"
 
-#: src/elflint.c:773
+#: src/elflint.c:774
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
@@ -2068,26 +2068,26 @@
 "sección [%2d] '%s': símbolo %zu: COMMON solo es permitido en archivos "
 "realojables\n"
 
-#: src/elflint.c:777
+#: src/elflint.c:778
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
 msgstr ""
 "Sección [%2d] '%s': símbolo %zu: símbolos locales COMMON no tienen sentido\n"
 
-#: src/elflint.c:781
+#: src/elflint.c:782
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
 msgstr ""
 "Sección [%2d] '%s': símbolo %zu: función en sección COMMON no tiene sentido\n"
 
-#: src/elflint.c:832
+#: src/elflint.c:833
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
 msgstr "sección [%2d] '%s': símbolo %zu: st_value fuera de límites\n"
 
-#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
@@ -2096,7 +2096,7 @@
 "Sección [%2d] '%s': símbolo %zu no se ajusta totalmente en la sección [%2d] "
 "'%s'\n"
 
-#: src/elflint.c:847
+#: src/elflint.c:848
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
@@ -2105,7 +2105,7 @@
 "Sección [%2d] '%s': símbolo %zu: sección de referencia [%2d] '%s' no tiene "
 "establecida bandera SHF_TLS\n"
 
-#: src/elflint.c:857 src/elflint.c:905
+#: src/elflint.c:858 src/elflint.c:906
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
@@ -2114,7 +2114,7 @@
 "Sección [%2d] '%s': símbolo %zu: st_value fuera de límites de sección de "
 "referencia [%2d] '%s'\n"
 
-#: src/elflint.c:884
+#: src/elflint.c:885
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
@@ -2123,7 +2123,7 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de "
 "programa TLS\n"
 
-#: src/elflint.c:890
+#: src/elflint.c:891
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
@@ -2132,7 +2132,7 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo TLS, pero no hay entrada de "
 "programa TLS\n"
 
-#: src/elflint.c:898
+#: src/elflint.c:899
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
@@ -2141,7 +2141,7 @@
 "Sección [%2d] '%s': símbolo %zu: st_value falta sección de referencia [%2d] "
 "'%s'\n"
 
-#: src/elflint.c:925
+#: src/elflint.c:926
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
@@ -2150,7 +2150,7 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo local fuera del rango descrito en "
 "sh_info\n"
 
-#: src/elflint.c:932
+#: src/elflint.c:933
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
@@ -2159,12 +2159,12 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo non-local fuera del rango descrito "
 "en sh_info\n"
 
-#: src/elflint.c:939
+#: src/elflint.c:940
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
 msgstr "Sección [%2d] '%s': símbolo %zu: símbolo de sección non-local\n"
 
-#: src/elflint.c:989
+#: src/elflint.c:990
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -2173,7 +2173,7 @@
 "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ se refiere a sección "
 "errada [%2d]\n"
 
-#: src/elflint.c:996
+#: src/elflint.c:997
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -2185,7 +2185,7 @@
 #. This test is more strict than the psABIs which
 #. usually allow the symbol to be in the middle of
 #. the .got section, allowing negative offsets.
-#: src/elflint.c:1012
+#: src/elflint.c:1013
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -2194,7 +2194,7 @@
 "Sección [%2d] '%s': valor del símbolo _GLOBAL_OFFSET_TABLE_ %#<PRIx64> no "
 "coincide con dirección de sección %s %#<PRIx64>\n"
 
-#: src/elflint.c:1019
+#: src/elflint.c:1020
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -2203,7 +2203,7 @@
 "Sección [%2d] '%s': tamaño de símbolo _GLOBAL_OFFSET_TABLE_ %<PRIu64> no "
 "coincide con tamaño de sección %s %<PRIu64>\n"
 
-#: src/elflint.c:1027
+#: src/elflint.c:1028
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -2212,7 +2212,7 @@
 "Sección [%2d] '%s': símbolo _GLOBAL_OFFSET_TABLE_ presente, pero no. sección "
 "got\n"
 
-#: src/elflint.c:1043
+#: src/elflint.c:1044
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -2221,7 +2221,7 @@
 "sección [%2d] '%s': Valor de símbolo _DYNAMIC_ %#<PRIx64> no coincide con la "
 "dirección de segmento%#<PRIx64>\n"
 
-#: src/elflint.c:1050
+#: src/elflint.c:1051
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -2230,7 +2230,7 @@
 "Sección [%2d] '%s': tamaño de símbolo _DYNAMIC %<PRIu64> no coincide con "
 "tamaño de segmento %<PRIu64>\n"
 
-#: src/elflint.c:1063
+#: src/elflint.c:1064
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
@@ -2239,29 +2239,29 @@
 "Sección [%2d] '%s': símbolo %zu: símbolo en tabla de símbolos dinámicos sin "
 "visibilidad predeterminada\n"
 
-#: src/elflint.c:1067
+#: src/elflint.c:1068
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
 msgstr ""
 "Sección [%2d] '%s': símbolo %zu: bit desconocido establecido en st_other\n"
 
-#: src/elflint.c:1105
+#: src/elflint.c:1106
 #, fuzzy, c-format
 msgid "section [%2d] '%s': cannot get section data.\n"
 msgstr "Sección [%2d] '%s': No se pueden obtener datos de sección\n"
 
-#: src/elflint.c:1121
+#: src/elflint.c:1122
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr "Sección [%2d] '%s': DT_RELCOUNT utilizada para esta sección RELA\n"
 
-#: src/elflint.c:1132 src/elflint.c:1185
+#: src/elflint.c:1133 src/elflint.c:1186
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
 msgstr ""
 "Sección [%2d] '%s': valor DT_RELCOUNT %d demasiado alto para esta sección\n"
 
-#: src/elflint.c:1157 src/elflint.c:1210
+#: src/elflint.c:1158 src/elflint.c:1211
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -2270,7 +2270,7 @@
 "Sección [%2d] '%s': reubicaciones relativas después de que el %d de índice "
 "haya sido especificado por DT_RELCOUNT\n"
 
-#: src/elflint.c:1163 src/elflint.c:1216
+#: src/elflint.c:1164 src/elflint.c:1217
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -2279,50 +2279,44 @@
 "Sección [%2d] '%s': reubicación no-relativa en %zu de índice; DT_RELCOUNT "
 "especificado %d reubicaciones relativas\n"
 
-#: src/elflint.c:1175
+#: src/elflint.c:1176
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr "sección [%2d] '%s': DT_RELACOUNT utilizado para esta sección REL\n"
 
-#: src/elflint.c:1258
+#: src/elflint.c:1259
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr "Sección [%2d] '%s': índice de sección de destino inválido\n"
 
-#: src/elflint.c:1270
+#: src/elflint.c:1271
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr "Sección [%2d] '%s': tipo de sección de destino inválido\n"
 
-#: src/elflint.c:1278
+#: src/elflint.c:1279
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr "Sección [%2d] '%s': sh_info debe ser cero\n"
 
-#: src/elflint.c:1286
+#: src/elflint.c:1287
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': no relocations for merge-able string sections possible\n"
 msgstr ""
 "Sección [%2d] '%s': no reubicaciones para secciones de fusión posibles\n"
 
-#: src/elflint.c:1294
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-"Sección [%2d] '%s': tamaño de entrada de sección no coincide con ElfXX_Rela\n"
-
-#: src/elflint.c:1354
+#: src/elflint.c:1365
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr "Reubicación de bandera pero no hay segmento de sólo lectura\n"
 
-#: src/elflint.c:1381
+#: src/elflint.c:1392
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr "Sección [%2d] '%s': reubicación %zu: tipo inválido\n"
 
-#: src/elflint.c:1389
+#: src/elflint.c:1400
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2331,12 +2325,12 @@
 "Sección [%2d] '%s': reubicación %zu: tipo de reubicación inválido para el "
 "tipo de archivo\n"
 
-#: src/elflint.c:1397
+#: src/elflint.c:1408
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr "Sección [%2d] '%s': reubicación %zu: índice de símbolo inválido\n"
 
-#: src/elflint.c:1415
+#: src/elflint.c:1426
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2345,12 +2339,12 @@
 "Sección [%2d] '%s': reubicación %zu: sólo el símbolo '_GLOBAL_OFFSET_TABLE_' "
 "puede utilizarse con %s\n"
 
-#: src/elflint.c:1432
+#: src/elflint.c:1443
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr "Sección [%2d] '%s': reubicación %zu: compensación fuera de límites\n"
 
-#: src/elflint.c:1447
+#: src/elflint.c:1458
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2359,7 +2353,7 @@
 "Sección [%2d] '%s': reubicación %zu: reubicación de copia con símbolo de "
 "tipo %s\n"
 
-#: src/elflint.c:1468
+#: src/elflint.c:1479
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2368,24 +2362,24 @@
 "Sección [%2d] '%s': reubicación %zu: sección de sólo-lectura modificada, "
 "pero no se estableció bandera de reubicación\n"
 
-#: src/elflint.c:1483
+#: src/elflint.c:1494
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr ""
 "Sección [%2d] '%s': las reubicaciones se hacen con datos cargados y "
 "descargados\n"
 
-#: src/elflint.c:1523 src/elflint.c:1574
+#: src/elflint.c:1534 src/elflint.c:1585
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr "Sección [%2d] '%s': no puede obtener reubicación %zu: %s\n"
 
-#: src/elflint.c:1650
+#: src/elflint.c:1687
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr "más de una sección dinámica presente\n"
 
-#: src/elflint.c:1668
+#: src/elflint.c:1705
 #, fuzzy, c-format
 msgid ""
 "section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2394,44 +2388,44 @@
 "sección [%2d] '%s': nombrado como una tabla de cadena para la sección [%2d] "
 "'%s' pero el tipo no es SHT_STRTAB\n"
 
-#: src/elflint.c:1676
+#: src/elflint.c:1713
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 "Sección [%2d] '%s': tamaño de entrada de sección no coincide con ElfXX_Dyn\n"
 
-#: src/elflint.c:1681 src/elflint.c:1970
+#: src/elflint.c:1718 src/elflint.c:2008
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr "Sección [%2d] '%s': sh_info no es cero\n"
 
-#: src/elflint.c:1691
+#: src/elflint.c:1728
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 "Sección [%2d] '%s': no puede obtener entrada de sección dinámica %zu: %s\n"
 
-#: src/elflint.c:1699
+#: src/elflint.c:1736
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr "Sección [%2d] '%s': entradas non-DT_NULL siguen a la entrada DT_NULL\n"
 
-#: src/elflint.c:1706
+#: src/elflint.c:1743
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr "Sección [%2d] '%s': entrada %zu: etiqueta desconocida\n"
 
-#: src/elflint.c:1717
+#: src/elflint.c:1754
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr "Sección [%2d] '%s': entrada %zu: más de una entrada con etiqueta %s\n"
 
-#: src/elflint.c:1727
+#: src/elflint.c:1764
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr "Sección [%2d] '%s': entrada %zu: nivel 2 etiqueta %s utilizada\n"
 
-#: src/elflint.c:1745
+#: src/elflint.c:1782
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -2439,7 +2433,7 @@
 "Sección [%2d] '%s': entrada %zu: el valor DT_PLTREL debe ser DT_REL or "
 "DT_RELA\n"
 
-#: src/elflint.c:1758
+#: src/elflint.c:1795
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -2448,14 +2442,14 @@
 "Sección [%2d] '%s': entrada %zu: puntero no coincide con dirección de "
 "sección [%2d] '%s' al que hace referencia sh_link\n"
 
-#: src/elflint.c:1801
+#: src/elflint.c:1839
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 "Sección [%2d] '%s': entrada %zu: valor %s debe apuntar en segmento cargado\n"
 
-#: src/elflint.c:1816
+#: src/elflint.c:1854
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -2464,46 +2458,46 @@
 "sección [%2d] '%s': entrada %zu: valor %s debe ser compensación válida en "
 "sección [%2d] '%s'\n"
 
-#: src/elflint.c:1836 src/elflint.c:1864
+#: src/elflint.c:1874 src/elflint.c:1902
 #, c-format
 msgid "section [%2d] '%s': contains %s entry but not %s\n"
 msgstr "Sección [%2d] '%s': contiene entrada %s pero no %s\n"
 
-#: src/elflint.c:1848
+#: src/elflint.c:1886
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr "Sección [%2d] '%s': etiqueta obligatoria %s no está presente\n"
 
-#: src/elflint.c:1857
+#: src/elflint.c:1895
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr "Sección [%2d] '%s': no hay sección de dispersión presente\n"
 
-#: src/elflint.c:1872 src/elflint.c:1879
+#: src/elflint.c:1910 src/elflint.c:1917
 #, c-format
 msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
 msgstr "Sección [%2d] '%s': no todas las %s, %s, y %s están presentes\n"
 
-#: src/elflint.c:1889 src/elflint.c:1893
+#: src/elflint.c:1927 src/elflint.c:1931
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
 msgstr ""
 "Sección [%2d] '%s': etiqueta %s faltante en DSO marcada durante el pre-"
 "enlace\n"
 
-#: src/elflint.c:1899
+#: src/elflint.c:1937
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 "Sección [%2d] '%s': archivo no-DSO marcado como dependencia durante el pre-"
 "enlace\n"
 
-#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
+#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
 msgstr "Sección [%2d] '%s': etiqueta %s faltante en pre-enlace ejecutable\n"
 
-#: src/elflint.c:1934
+#: src/elflint.c:1972
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -2511,37 +2505,37 @@
 "Sección [%2d] '%s': sólo los archivos reubicables pueden tener índice de "
 "sección extendido\n"
 
-#: src/elflint.c:1944
+#: src/elflint.c:1982
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
 msgstr ""
 "Sección [%2d] '%s': índice de sección extendido no para tabla de símbolos\n"
 
-#: src/elflint.c:1948
+#: src/elflint.c:1986
 #, fuzzy, c-format
 msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
 msgstr ""
 "Sección [%2d] '%s': índice de sección extendido no para tabla de símbolos\n"
 
-#: src/elflint.c:1953
+#: src/elflint.c:1991
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr "no se puede obtener sección para símbolos\n"
 
-#: src/elflint.c:1956
+#: src/elflint.c:1994
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr "Sección [%2d] '%s': tamaño de entrada no coincide con Elf32_Word\n"
 
-#: src/elflint.c:1965
+#: src/elflint.c:2003
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 "Sección [%2d] '%s': tabla de índice extendida demasiado pequeña para tabla "
 "de símbolos\n"
 
-#: src/elflint.c:1980
+#: src/elflint.c:2018
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -2550,24 +2544,24 @@
 "Sección [%2d] '%s': índice de sección extendida en sección [%2zu] '%s' se "
 "refiere a la misma tabla de símbolos\n"
 
-#: src/elflint.c:1998
+#: src/elflint.c:2036
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr "símbolo 0 debe tener índice de sección extendida cero\n"
 
-#: src/elflint.c:2010
+#: src/elflint.c:2048
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr "no puede obtener datos para símbolo %zu\n"
 
-#: src/elflint.c:2015
+#: src/elflint.c:2053
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 "índice de sección extendida es %<PRIu32> pero índice de símbolo no es "
 "XINDEX\n"
 
-#: src/elflint.c:2032 src/elflint.c:2089
+#: src/elflint.c:2070 src/elflint.c:2127
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
@@ -2575,42 +2569,42 @@
 "Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
 "%ld, se espera %ld)\n"
 
-#: src/elflint.c:2046 src/elflint.c:2103
+#: src/elflint.c:2084 src/elflint.c:2141
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr "Sección [%2d] '%s': índice de la cadena es demasiado grande\n"
 
-#: src/elflint.c:2060 src/elflint.c:2117
+#: src/elflint.c:2098 src/elflint.c:2155
 #, c-format
 msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
 msgstr ""
 "Sección [%2d] '%s': referencia de cubetas de dispersión %zu fuera de "
 "límites\n"
 
-#: src/elflint.c:2070
+#: src/elflint.c:2108
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 "Sección [%2d] '%s': referencia de cadena de dispersión %zu fuera de límites\n"
 
-#: src/elflint.c:2127
+#: src/elflint.c:2165
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 "Sección [%2d] '%s': referencia de cadena de dispersión %<PRIu64> fuera de "
 "límites\n"
 
-#: src/elflint.c:2140
+#: src/elflint.c:2178
 #, fuzzy, c-format
 msgid "section [%2d] '%s': not enough data\n"
 msgstr "Sección [%2d] '%s': no puede obtener datos: %s\n"
 
-#: src/elflint.c:2152
+#: src/elflint.c:2190
 #, fuzzy, c-format
 msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
 msgstr "Sección [%2d] '%s': tamaño de bitmask no es potencia de 2: %u\n"
 
-#: src/elflint.c:2168
+#: src/elflint.c:2206
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected at "
@@ -2619,14 +2613,14 @@
 "Sección [%2d] '%s': sección de tabla de dispersión es demasiado pequeña (es "
 "%ld, se espera al menos least%ld)\n"
 
-#: src/elflint.c:2177
+#: src/elflint.c:2215
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 "Sección [%2d] '%s': segundo cambio de función de dispersión demasiado "
 "grande: %u\n"
 
-#: src/elflint.c:2211
+#: src/elflint.c:2249
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -2634,7 +2628,7 @@
 "Sección [%2d] '%s': cadena de dispersión para cubetas %zu inferior a "
 "polarización de índice de símbolo\n"
 
-#: src/elflint.c:2232
+#: src/elflint.c:2270
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -2643,7 +2637,7 @@
 "Sección [%2d] '%s': el símbolo %u al que se hace referencia en cadena para "
 "cubeta %zu es indefinido\n"
 
-#: src/elflint.c:2245
+#: src/elflint.c:2283
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -2651,7 +2645,7 @@
 "Sección [%2d] '%s': valor de dispersión para símbolo %u en cadena para "
 "cubeta %zu está errado\n"
 
-#: src/elflint.c:2254
+#: src/elflint.c:2292
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
@@ -2659,13 +2653,13 @@
 "Sección [%2d] '%s': valor de dispersión para símbolo %u en cadena para "
 "cubeta %zu está errado\n"
 
-#: src/elflint.c:2284
+#: src/elflint.c:2322
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 "Sección [%2d] '%s': cadena de dispersión para cubeta %zu fuera de limites\n"
 
-#: src/elflint.c:2289
+#: src/elflint.c:2327
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2673,43 +2667,43 @@
 "Sección [%2d] '%s': referencia de símbolo en cadena para cubeta %zu fuera de "
 "límites\n"
 
-#: src/elflint.c:2295
+#: src/elflint.c:2333
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 "Sección [%2d] '%s': bitmask no coincide con nombres en la tabla de "
 "dispersión\n"
 
-#: src/elflint.c:2308
+#: src/elflint.c:2346
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 "Sección [%2d] '%s': archivos reubicables no pueden tener tablas de "
 "dispersión\n"
 
-#: src/elflint.c:2326
+#: src/elflint.c:2364
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 "Sección [%2d] '%s': tabla de dispersión no para tabla de símbolos dinámicos\n"
 
-#: src/elflint.c:2330
+#: src/elflint.c:2368
 #, fuzzy, c-format
 msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
 msgstr "Sección [%2d] '%s': índice de sección de destino inválido\n"
 
-#: src/elflint.c:2340
+#: src/elflint.c:2378
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr ""
 "Sección [%2d] '%s': tamaño incorrecto de entrada de tabla de dispersión\n"
 
-#: src/elflint.c:2345
+#: src/elflint.c:2383
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr "Sección [%2d] '%s': no marcada para ser asignada\n"
 
-#: src/elflint.c:2350
+#: src/elflint.c:2388
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2718,46 +2712,46 @@
 "Sección [%2d] '%s': tabla de dispersión no tiene ni siquiera espacio para "
 "entradas administrativas iniciales\n"
 
-#: src/elflint.c:2399
+#: src/elflint.c:2437
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 "sh_link en secciones de dispersión [%2zu] '%s' y [%2zu] '%s' no son "
 "idénticas\n"
 
-#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
+#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' does not contain enough data\n"
 msgstr "sección [%2zu] '%s' no debe ser ejecutable\n"
 
-#: src/elflint.c:2444
+#: src/elflint.c:2482
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' has zero bit mask words\n"
 msgstr "Sección [%2d] '%s': grupo de sección sin palabra de banderas\n"
 
-#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
+#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' uses too much data\n"
 msgstr "sección [%2zu] '%s' debe ser asignada\n"
 
-#: src/elflint.c:2470
+#: src/elflint.c:2508
 #, c-format
 msgid ""
 "hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
 "%<PRIu32>, nentries: %<PRIu32>\n"
 msgstr ""
 
-#: src/elflint.c:2557
+#: src/elflint.c:2595
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
 msgstr "Sección [%2zu]: nombre inválido\n"
 
-#: src/elflint.c:2567 src/elflint.c:2571
+#: src/elflint.c:2605 src/elflint.c:2609
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr "Sección [%2zu] '%s': referencia al índice de símbolo 0\n"
 
-#: src/elflint.c:2578
+#: src/elflint.c:2616
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2766,7 +2760,7 @@
 "Símbolo %d nombrado en nueva tabla de dispersión en [%2zu] '%s' pero no en "
 "la tabla de dispersión anterior en [%2zu] '%s'\n"
 
-#: src/elflint.c:2590
+#: src/elflint.c:2628
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2775,12 +2769,12 @@
 "Símbolo %d nombrado en la tabla de dispersión anterior en [%2zu] '%s' pero "
 "no en la nueva tabla de dispersión en [%2zu] '%s'\n"
 
-#: src/elflint.c:2606
+#: src/elflint.c:2644
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr "Sección [%2d] '%s': nonzero sh_%s para sección NULL\n"
 
-#: src/elflint.c:2626
+#: src/elflint.c:2664
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2788,99 +2782,99 @@
 "Sección [%2d] '%s': grupos de sección sólo permitidos en archivos de objeto "
 "reubicables\n"
 
-#: src/elflint.c:2637
+#: src/elflint.c:2675
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr "Sección [%2d] '%s': no puede obtener tabla de símbolos: %s\n"
 
-#: src/elflint.c:2642
+#: src/elflint.c:2680
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 "Sección [%2d] '%s': referencia de sección en sh_link no es una tabla de "
 "símbolos\n"
 
-#: src/elflint.c:2648
+#: src/elflint.c:2686
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr "Sección [%2d] '%s': índice de símbolo inválido en sh_info\n"
 
-#: src/elflint.c:2653
+#: src/elflint.c:2691
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr "Sección [%2d] '%s': sh_flags no cero\n"
 
-#: src/elflint.c:2660
+#: src/elflint.c:2698
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr "Sección [%2d] '%s': no puede obtener símbolo para firma\n"
 
-#: src/elflint.c:2664
+#: src/elflint.c:2702
 #, fuzzy, c-format
 msgid "section [%2d] '%s': cannot get symbol name for signature\n"
 msgstr "Sección [%2d] '%s': no puede obtener símbolo para firma\n"
 
-#: src/elflint.c:2669
+#: src/elflint.c:2707
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr ""
 "sección [%2d] '%s': el símbolo de firma no puede ser una cadena vacía\n"
 
-#: src/elflint.c:2675
+#: src/elflint.c:2713
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr "Sección [%2d] '%s': sh_flags no establecida correctamente\n"
 
-#: src/elflint.c:2681
+#: src/elflint.c:2719
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr "Sección [%2d] '%s': no puede obtener datos: %s\n"
 
-#: src/elflint.c:2690
+#: src/elflint.c:2728
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 "Sección [%2d] '%s': tamaño de sección no es múltiplo de tamaño de "
 "(Elf32_Word)\n"
 
-#: src/elflint.c:2696
+#: src/elflint.c:2734
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr "Sección [%2d] '%s': grupo de sección sin palabra de banderas\n"
 
-#: src/elflint.c:2704
+#: src/elflint.c:2742
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr "Sección [%2d] '%s': grupo de sección sin miembro\n"
 
-#: src/elflint.c:2708
+#: src/elflint.c:2746
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr "Sección [%2d] '%s': grupo de sección con sólo un miembro\n"
 
-#: src/elflint.c:2719
+#: src/elflint.c:2757
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr "Sección [%2d] '%s': banderas de grupo de sección desconocido\n"
 
-#: src/elflint.c:2731
+#: src/elflint.c:2769
 #, fuzzy, c-format
 msgid "section [%2d] '%s': section index %zu out of range\n"
 msgstr "Sección [%2d] '%s': índice de sección %Zu fuera de rango\n"
 
-#: src/elflint.c:2740
+#: src/elflint.c:2778
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 "Sección [%2d] '%s': no se puede obtener encabezamiento de sección para "
 "elemento %zu: %s\n"
 
-#: src/elflint.c:2747
+#: src/elflint.c:2785
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr "Sección [%2d] '%s': grupo de sección contiene otro grupo [%2d] '%s'\n"
 
-#: src/elflint.c:2753
+#: src/elflint.c:2791
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2889,12 +2883,12 @@
 "Sección [%2d] '%s': elemento %Zu hace referencia a sección [%2d] '%s' sin "
 "establecer bandera SHF_GROUP\n"
 
-#: src/elflint.c:2760
+#: src/elflint.c:2798
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr "Sección [%2d] '%s' está contenida en más de un grupo de sección\n"
 
-#: src/elflint.c:2957
+#: src/elflint.c:2995
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2903,7 +2897,7 @@
 "Sección [%2d] '%s' se refiere en sh_link a la sección [%2d] '%s' la cual no "
 "es una tabla de símbolos dinámicos\n"
 
-#: src/elflint.c:2969
+#: src/elflint.c:3007
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2912,29 +2906,29 @@
 "Sección [%2d] '%s' tiene un número diferente de entradas a la de la tabla de "
 "símbolos [%2d] '%s'\n"
 
-#: src/elflint.c:2985
+#: src/elflint.c:3023
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr ""
 "Sección [%2d] '%s': el símbolo %d: no se pueden leer datos de versión\n"
 
-#: src/elflint.c:3001
+#: src/elflint.c:3039
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 "Sección [%2d] '%s': el símbolo %d: el símbolo local con alcance mundial\n"
 
-#: src/elflint.c:3009
+#: src/elflint.c:3047
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr "Sección [%2d] '%s': símbolo %d: símbolo local con versión\n"
 
-#: src/elflint.c:3023
+#: src/elflint.c:3061
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr "Sección [%2d] '%s': símbolo %d: índice de versión inválida %d\n"
 
-#: src/elflint.c:3028
+#: src/elflint.c:3066
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
@@ -2942,7 +2936,7 @@
 "Sección [%2d] '%s': símbolo %d: índice de versión %d es para versión "
 "definida\n"
 
-#: src/elflint.c:3038
+#: src/elflint.c:3076
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
@@ -2950,46 +2944,46 @@
 "Sección [%2d] '%s': símbolo %d: índice de versión %d es para la versión "
 "solicitada\n"
 
-#: src/elflint.c:3091
+#: src/elflint.c:3129
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr "Más de una sección de referencia de versión presente\n"
 
-#: src/elflint.c:3099 src/elflint.c:3246
+#: src/elflint.c:3137 src/elflint.c:3284
 #, c-format
 msgid "section [%2d] '%s': sh_link does not link to string table\n"
 msgstr "Sección [%2d] '%s': sh_link no se enlaza a la tabla de cadenas\n"
 
-#: src/elflint.c:3124 src/elflint.c:3300
+#: src/elflint.c:3162 src/elflint.c:3338
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong version %d\n"
 msgstr "Sección [%2d] '%s': entrada %d tiene versión %d errada\n"
 
-#: src/elflint.c:3131 src/elflint.c:3307
+#: src/elflint.c:3169 src/elflint.c:3345
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
 msgstr ""
 "Sección [%2d] '%s': entrada %d tiene compensación errada de datos "
 "auxiliares\n"
 
-#: src/elflint.c:3141
+#: src/elflint.c:3179
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr "Sección [%2d] '%s': entrada %d tiene referencia de archivo inválida\n"
 
-#: src/elflint.c:3149
+#: src/elflint.c:3187
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr "Sección [%2d] '%s': %d hace referencia a dependencia desconocida\n"
 
-#: src/elflint.c:3161
+#: src/elflint.c:3199
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene bandera "
 "desconocida\n"
 
-#: src/elflint.c:3169
+#: src/elflint.c:3207
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2998,7 +2992,7 @@
 "Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene referencia de "
 "nombre inválida\n"
 
-#: src/elflint.c:3178
+#: src/elflint.c:3216
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -3007,7 +3001,7 @@
 "Sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene valor de "
 "dispersión: %#x, esperado %#x\n"
 
-#: src/elflint.c:3187
+#: src/elflint.c:3225
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -3016,7 +3010,7 @@
 "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene nombre duplicado "
 "'%s'\n"
 
-#: src/elflint.c:3198
+#: src/elflint.c:3236
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -3024,14 +3018,14 @@
 "sección [%2d] '%s': entrada auxiliar %d de entrada %d tiene próximo campo "
 "errado\n"
 
-#: src/elflint.c:3215 src/elflint.c:3391
+#: src/elflint.c:3253 src/elflint.c:3429
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
 msgstr ""
 "sección [%2d] '%s': entrada %d tiene compensación inválida para próxima "
 "entrada\n"
 
-#: src/elflint.c:3223 src/elflint.c:3399
+#: src/elflint.c:3261 src/elflint.c:3437
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
@@ -3040,46 +3034,46 @@
 "sección [%2d] '%s': entrada %d tiene compensación inválida para próxima "
 "entrada\n"
 
-#: src/elflint.c:3238
+#: src/elflint.c:3276
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr "más de una definición de versión presente de sección\n"
 
-#: src/elflint.c:3285
+#: src/elflint.c:3323
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr "Sección [%2d] '%s': más de una definición de BASE\n"
 
-#: src/elflint.c:3289
+#: src/elflint.c:3327
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 "Sección [%2d] '%s': definición de BASE debe tener índice VER_NDX_GLOBAL\n"
 
-#: src/elflint.c:3295
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr "Sección [%2d] '%s': entrada %d tiene bandera desconocida\n"
 
-#: src/elflint.c:3322
+#: src/elflint.c:3360
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr "Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida\n"
 
-#: src/elflint.c:3329
+#: src/elflint.c:3367
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 "Sección [%2d] '%s': entrada %d tiene valor de dispersión errado: %#x, "
 "esperado %#x\n"
 
-#: src/elflint.c:3337
+#: src/elflint.c:3375
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr ""
 "Sección [%2d] '%s': entrada %d tiene nombre de versión duplicado '%s'\n"
 
-#: src/elflint.c:3357
+#: src/elflint.c:3395
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -3087,34 +3081,34 @@
 "Sección [%2d] '%s': entrada %d tiene referencia de nombre inválida en datos "
 "auxiliares\n"
 
-#: src/elflint.c:3374
+#: src/elflint.c:3412
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 "Sección [%2d] '%s': entrada %d tiene próximo campo errado en datos "
 "auxiliares\n"
 
-#: src/elflint.c:3407
+#: src/elflint.c:3445
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr "Sección [%2d] '%s': no hay definición de BASE\n"
 
-#: src/elflint.c:3423
+#: src/elflint.c:3461
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr "Sección [%2d] '%s': desconocida versión principal '%s'\n"
 
-#: src/elflint.c:3448
+#: src/elflint.c:3486
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr "Sección [%2d] '%s': sección de atributos de objeto vacío\n"
 
-#: src/elflint.c:3464
+#: src/elflint.c:3502
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr "Sección[%2d] '%s': formato de atributo no reconocido\n"
 
-#: src/elflint.c:3475
+#: src/elflint.c:3513
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute section\n"
@@ -3122,21 +3116,21 @@
 "Sección[%2d] '%s': compensación %zu: campo de longitud cero en sección de "
 "atributo\n"
 
-#: src/elflint.c:3484
+#: src/elflint.c:3522
 #, c-format
 msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
 msgstr ""
 "Sección[%2d] '%s': compensación %zu: longitud inválida en sección de "
 "atributo\n"
 
-#: src/elflint.c:3496
+#: src/elflint.c:3534
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
 msgstr ""
 "Sección[%2d] '%s': compensación %zu: cadena de nombre de proveedor sin "
 "terminar\n"
 
-#: src/elflint.c:3513
+#: src/elflint.c:3551
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -3144,12 +3138,12 @@
 "Sección [%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de sub-"
 "sección de atributo\n"
 
-#: src/elflint.c:3522
+#: src/elflint.c:3560
 #, c-format
 msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
 msgstr "Sección [%2d] '%s': compensación %zu: sección de atributo truncado\n"
 
-#: src/elflint.c:3531
+#: src/elflint.c:3569
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -3157,7 +3151,7 @@
 "Sección [%2d] '%s': compensación %zu: campo de longitud cero length en sub-"
 "sección de atributo\n"
 
-#: src/elflint.c:3546
+#: src/elflint.c:3584
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -3166,7 +3160,7 @@
 "atributo\n"
 
 #. Tag_File
-#: src/elflint.c:3557
+#: src/elflint.c:3595
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -3174,26 +3168,26 @@
 "Sección[%2d] '%s': compensación %zu: sub-sección de atributo tiene etiqueta "
 "inesperada %u\n"
 
-#: src/elflint.c:3578
+#: src/elflint.c:3616
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 "Sección[%2d] '%s': compensación %zu: sin fin ULEB128 en etiqueta de "
 "atributo\n"
 
-#: src/elflint.c:3589
+#: src/elflint.c:3627
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr ""
 "Sección [%2d] '%s': compensación %zu: cadena sin terminar en atributo\n"
 
-#: src/elflint.c:3602
+#: src/elflint.c:3640
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr ""
 "Sección [%2d] '%s': compensación %zu: etiqueta de atributo no reconocida %u\n"
 
-#: src/elflint.c:3606
+#: src/elflint.c:3644
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
@@ -3201,12 +3195,12 @@
 "Sección [%2d] '%s': compensación %zu: no reconocido %s valor de atributo "
 "%<PRIu64>\n"
 
-#: src/elflint.c:3616
+#: src/elflint.c:3654
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr "Sección [%2d] '%s': compensación %zu: proveedor '%s' desconocido\n"
 
-#: src/elflint.c:3622
+#: src/elflint.c:3660
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -3214,47 +3208,47 @@
 "Sección [%2d] '%s': compensación %zu: extra bytes después de la última "
 "sección de atributo\n"
 
-#: src/elflint.c:3719
+#: src/elflint.c:3758
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr "no puede obtener encabezamiento de sección de sección zeroth\n"
 
-#: src/elflint.c:3723
+#: src/elflint.c:3762
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "Sección zeroth tiene nombre nonzero\n"
 
-#: src/elflint.c:3725
+#: src/elflint.c:3764
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "Sección zeroth tiene tipo nonzero\n"
 
-#: src/elflint.c:3727
+#: src/elflint.c:3766
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "Sección zeroth tiene banderas nonzero\n"
 
-#: src/elflint.c:3729
+#: src/elflint.c:3768
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "Sección zeroth tiene dirección nonzero\n"
 
-#: src/elflint.c:3731
+#: src/elflint.c:3770
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "Sección zeroth tiene compensación nonzero\n"
 
-#: src/elflint.c:3733
+#: src/elflint.c:3772
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr "Sección zeroth tiene valor de alineación nonzero\n"
 
-#: src/elflint.c:3735
+#: src/elflint.c:3774
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr "Sección zeroth tiene valor de tamaño de entrada nonzero\n"
 
-#: src/elflint.c:3738
+#: src/elflint.c:3777
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -3263,7 +3257,7 @@
 "Sección zeroth tiene valor de tamaño nonzero mientras que el encabezamiento "
 "ELF tiene valor shnum nonzero\n"
 
-#: src/elflint.c:3742
+#: src/elflint.c:3781
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -3272,7 +3266,7 @@
 "Sección zeroth tiene valor de enlace nonzero mientras que el encabezamiento "
 "ELF no señala sobreflujo en shstrndx\n"
 
-#: src/elflint.c:3746
+#: src/elflint.c:3785
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -3281,27 +3275,27 @@
 "la sección zeroth tiene un valor de enlace distinto a cero mientras que el "
 "encabezamiento ELF no señala desbordamiento en phnum\n"
 
-#: src/elflint.c:3764
+#: src/elflint.c:3803
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr "No se puede obtener encabezamiento para sección [%2zu] '%s': %s\n"
 
-#: src/elflint.c:3773
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "Sección [%2zu]: nombre inválido\n"
 
-#: src/elflint.c:3800
+#: src/elflint.c:3839
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr "Sección [%2d] '%s' tiene tipo errado: %s esperado, es %s\n"
 
-#: src/elflint.c:3817
+#: src/elflint.c:3856
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr "Sección [%2zu] '%s' tiene banderas erradas: %s esperado, es %s\n"
 
-#: src/elflint.c:3835
+#: src/elflint.c:3874
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -3309,12 +3303,12 @@
 "Sección [%2zu] '%s' tiene banderas erradas: %s esperado y posiblemente %s, "
 "es %s\n"
 
-#: src/elflint.c:3852
+#: src/elflint.c:3891
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr "Sección [%2zu] '%s' presente en archivo objeto\n"
 
-#: src/elflint.c:3858 src/elflint.c:3890
+#: src/elflint.c:3897 src/elflint.c:3929
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
@@ -3322,7 +3316,7 @@
 "Sección [%2zu] '%s' tiene bandera SHF_ALLOC establecida pero no es un "
 "segmento cargable\n"
 
-#: src/elflint.c:3863 src/elflint.c:3895
+#: src/elflint.c:3902 src/elflint.c:3934
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -3331,7 +3325,7 @@
 "Sección [%2zu] '%s' no tiene bandera SHF_ALLOC establecida pero hay "
 "segmentos cargables\n"
 
-#: src/elflint.c:3871
+#: src/elflint.c:3910
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -3339,22 +3333,22 @@
 "Sección [%2zu] '%s' es tabla de índice de sección de extensión en archivo no-"
 "objeto\n"
 
-#: src/elflint.c:3914
+#: src/elflint.c:3953
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr "Sección [%2zu] '%s': tamaño no es múltiplo de tamaño de entrada\n"
 
-#: src/elflint.c:3919
+#: src/elflint.c:3958
 #, c-format
 msgid "cannot get section header\n"
 msgstr "no se puede obtener encabezamiento de sección\n"
 
-#: src/elflint.c:3929
+#: src/elflint.c:3968
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "sección [%2zu] '%s' tiene tipo %d incompatible \n"
 
-#: src/elflint.c:3949
+#: src/elflint.c:3988
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3362,76 +3356,76 @@
 "Sección [%2zu] '%s' contiene bandera(s) de procesador-específico inválidas "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3959
+#: src/elflint.c:3998
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr "Sección [%2zu] '%s' contiene bandera(s) desconocidas %#<PRIx64>\n"
 
-#: src/elflint.c:3967
+#: src/elflint.c:4006
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 "Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n"
 
-#: src/elflint.c:3977
+#: src/elflint.c:4016
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr ""
 "Sección [%2zu] '%s': dirección de secciones de datos de hilo-local no cero\n"
 
-#: src/elflint.c:3982
+#: src/elflint.c:4021
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "Sección [%2d] '%s': no hay sección de dispersión presente\n"
 
-#: src/elflint.c:3988
+#: src/elflint.c:4027
 #, fuzzy, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr "Sección [%2d] '%s': grupo de sección con sólo un miembro\n"
 
-#: src/elflint.c:3994
+#: src/elflint.c:4033
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 "Sección [%2zu] '%s': referencia de sección inválida en valor de enlace\n"
 
-#: src/elflint.c:3999
+#: src/elflint.c:4038
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 "Sección [%2zu] '%s': referencia de sección inválida en valor de información\n"
 
-#: src/elflint.c:4006
+#: src/elflint.c:4045
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 "Sección [%2zu] '%s': bandera de cadenas establecida sin bandera de fusión\n"
 
-#: src/elflint.c:4011
+#: src/elflint.c:4050
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 "Sección [%2zu] '%s': bandera de fusión establecida pero tamaño de entrada es "
 "cero\n"
 
-#: src/elflint.c:4030
+#: src/elflint.c:4069
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 "Sección [%2zu] '%s' tiene un tipo %d inesperado para una sección ejecutable\n"
 
-#: src/elflint.c:4039
+#: src/elflint.c:4078
 #, fuzzy, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr "sección [%2zu] '%s' no debe tener permiso de escritura\n"
 
-#: src/elflint.c:4046
+#: src/elflint.c:4085
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr "Sección [%2zu] '%s' es tanto de ejecución como de escritura\n"
 
-#: src/elflint.c:4077
+#: src/elflint.c:4116
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3440,7 +3434,7 @@
 "Sección [%2zu] '%s' no contenida totalmente en segmento de entrada de "
 "encabezamiento de programa %d\n"
 
-#: src/elflint.c:4087
+#: src/elflint.c:4126
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3449,7 +3443,7 @@
 "Sección [%2zu] '%s' no tiene tipo NOBITS pero es leída desde el archivo en "
 "segmento de entrada de encabezamiento de programa %d\n"
 
-#: src/elflint.c:4113
+#: src/elflint.c:4152
 #, fuzzy, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3458,7 +3452,7 @@
 "Sección [%2zu] '%s' no tiene tipo NOBITS pero es leída desde el archivo en "
 "segmento de entrada de encabezamiento de programa %d\n"
 
-#: src/elflint.c:4124
+#: src/elflint.c:4163
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3467,18 +3461,18 @@
 "Sección [%2zu] '%s' no tiene tipo NOBITS pero no es leída desde el fichero "
 "en segmento de entrada de encabezamiento de programa %d\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4174
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr "Sección [%2zu] '%s' es ejecutable en segmento no ejecutable %d\n"
 
-#: src/elflint.c:4145
+#: src/elflint.c:4184
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 "Sección [%2zu] '%s' es de escritura en segmento que no es de escritura %d\n"
 
-#: src/elflint.c:4155
+#: src/elflint.c:4194
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3486,7 +3480,7 @@
 "Sección [%2zu] '%s': asignación de bandera establecida pero sección no en "
 "ningún segmento cargado\n"
 
-#: src/elflint.c:4161
+#: src/elflint.c:4200
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3495,7 +3489,7 @@
 "Sección [%2zu] '%s': encabezamiento ELF dice esta es la tabla de cadena de "
 "encabezamiento de sección, pero el tipo no es SHT_TYPE\n"
 
-#: src/elflint.c:4169
+#: src/elflint.c:4208
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3503,32 +3497,32 @@
 "sección [%2zu] '%s': ficheros reubicables no pueden tener tablas de símbolos "
 "dinámicos\n"
 
-#: src/elflint.c:4220
+#: src/elflint.c:4263
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr "Más de una tabla de símbolos presente\n"
 
-#: src/elflint.c:4243
+#: src/elflint.c:4286
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 "Entrada de encabezamiento de programa INTERP pero no la sección .interp\n"
 
-#: src/elflint.c:4254
+#: src/elflint.c:4297
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 "segmento cargable [%u] es ejecutable pero no contiene secciones ejecutables\n"
 
-#: src/elflint.c:4260
+#: src/elflint.c:4303
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 "segmento cargable [%u] es de escritura pero contiene secciones protegidas "
 "contra escritura\n"
 
-#: src/elflint.c:4271
+#: src/elflint.c:4314
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3537,26 +3531,26 @@
 "Sección no .gnu.versym presente, pero la sección .gnu.versym_d o la sección ."
 "gnu.versym_r existen\n"
 
-#: src/elflint.c:4284
+#: src/elflint.c:4327
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "Duplicar índice de versión %d\n"
 
-#: src/elflint.c:4298
+#: src/elflint.c:4341
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 "Sección .gnu.versym presente sin las secciones .gnu.versym_d o .gnu."
 "versym_r\n"
 
-#: src/elflint.c:4347
+#: src/elflint.c:4390
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 "phdr[%d]: tipo de nota de fichero core desconocido %<PRIu32> en compensación "
 "%<PRIu64>\n"
 
-#: src/elflint.c:4351
+#: src/elflint.c:4394
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3564,7 +3558,7 @@
 "Sección [%2d] '%s': tipo de nota de fichero core desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4407
+#: src/elflint.c:4450
 #, fuzzy, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3573,7 +3567,7 @@
 "phdr[%d]: tipo de nota de fichero objeto desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4412
+#: src/elflint.c:4455
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3582,40 +3576,40 @@
 "Sección [%2d] '%s': tipo de nota de fichero objeto desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4431
+#: src/elflint.c:4474
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr "phdr[%d]: no hay entradas de nota definidas para el tipo de archivo\n"
 
-#: src/elflint.c:4451
+#: src/elflint.c:4494
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr "phdr[%d]: no puede obtener contenido de sección de nota: %s\n"
 
-#: src/elflint.c:4454
+#: src/elflint.c:4497
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr "phdr[%d]: extra %<PRIu64> bytes después de la última nota\n"
 
-#: src/elflint.c:4475
+#: src/elflint.c:4518
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 "Sección [%2d] '%s': no hay entradas de nota definidas para el tipo de "
 "archivo\n"
 
-#: src/elflint.c:4482
+#: src/elflint.c:4525
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 "Sección[%2d] '%s': no se puede obtener el contenido de sección de nota\n"
 
-#: src/elflint.c:4485
+#: src/elflint.c:4528
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr "Sección[%2d] '%s': extra %<PRIu64> bytes después de la última nota\n"
 
-#: src/elflint.c:4503
+#: src/elflint.c:4546
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -3623,145 +3617,145 @@
 "Sólo ejecutables, objetos compartidos y ficheros core pueden tener "
 "encabezamientos de programas\n"
 
-#: src/elflint.c:4518
+#: src/elflint.c:4561
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr "no se puede obtener entrada de encabezamiento %d: %s\n"
 
-#: src/elflint.c:4528
+#: src/elflint.c:4571
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 "entrada de encabezamiento de programa %d: tipo %#<PRIx64> de entrada de "
 "encabezamiento de programa desconocido\n"
 
-#: src/elflint.c:4539
+#: src/elflint.c:4582
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr "Más de una entrada INTERP en encabezamiento de programa\n"
 
-#: src/elflint.c:4547
+#: src/elflint.c:4590
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr "más de una entrada TLS en encabezamiento de programa\n"
 
-#: src/elflint.c:4554
+#: src/elflint.c:4597
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "ejecutable estático no puede tener secciones dinámicas\n"
 
-#: src/elflint.c:4568
+#: src/elflint.c:4611
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 "Referencia de sección dinámica en encabezamiento de programa tiene "
 "compensación errada\n"
 
-#: src/elflint.c:4571
+#: src/elflint.c:4614
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 "No coinciden tamaño de sección dinámica en programa y encabezamiento de "
 "sección\n"
 
-#: src/elflint.c:4581
+#: src/elflint.c:4624
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr "Más de una entrada GNU_RELRO en encabezamiento de programa\n"
 
-#: src/elflint.c:4602
+#: src/elflint.c:4645
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr "Segmento cargable GNU_RELRO que se aplica no es de escritura\n"
 
-#: src/elflint.c:4613
+#: src/elflint.c:4656
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 "Banderas de segmento cargable [%u] no coinciden con banderas GNU_RELRO [%u]\n"
 
-#: src/elflint.c:4620
+#: src/elflint.c:4663
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4629 src/elflint.c:4652
+#: src/elflint.c:4672 src/elflint.c:4695
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr "Segmento %s no contenido en un segmento cargable\n"
 
-#: src/elflint.c:4658
+#: src/elflint.c:4701
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 "Compensación de encabezamiento de programa en encabezamiento ELF y entrada "
 "PHDR no coinciden"
 
-#: src/elflint.c:4685
+#: src/elflint.c:4728
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 "Referencia de tabla de búsqueda de marco de llamada en encabezamiento de "
 "programa tiene una compensación errada\n"
 
-#: src/elflint.c:4688
+#: src/elflint.c:4731
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 "Tamaño de tabla de búsqueda de marco de llamada no coincide con programa y "
 "encabezamiento de sección\n"
 
-#: src/elflint.c:4701
+#: src/elflint.c:4744
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr "PT_GNU_EH_FRAME presente pero no la sección.eh_frame_hdr\n"
 
-#: src/elflint.c:4709
+#: src/elflint.c:4752
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr "tabla de búsqueda de marco de llamada debe ser asignada\n"
 
-#: src/elflint.c:4712
+#: src/elflint.c:4755
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "sección [%2zu] '%s' debe ser asignada\n"
 
-#: src/elflint.c:4716
+#: src/elflint.c:4759
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 "tabla de búsqueda de marco de llamada no debe tener permiso de escritura\n"
 
-#: src/elflint.c:4719
+#: src/elflint.c:4762
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr "sección [%2zu] '%s' no debe tener permiso de escritura\n"
 
-#: src/elflint.c:4724
+#: src/elflint.c:4767
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr "tabla de búsqueda de marco de llamada no debe ser ejecutable\n"
 
-#: src/elflint.c:4727
+#: src/elflint.c:4770
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "sección [%2zu] '%s' no debe ser ejecutable\n"
 
-#: src/elflint.c:4741
+#: src/elflint.c:4784
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 "entrada de encabezamiento de programa %d: tamaño de fichero mayor que el "
 "tamaño de memoria\n"
 
-#: src/elflint.c:4748
+#: src/elflint.c:4791
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 "entrada de encabezamiento de programa %d: alineamiento no es potencia de 2\n"
 
-#: src/elflint.c:4751
+#: src/elflint.c:4794
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3770,7 +3764,7 @@
 "entrada de encabezamiento de programa %d: compensación de fichero y "
 "dirección virtual no módulo de alineación\n"
 
-#: src/elflint.c:4764
+#: src/elflint.c:4807
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3779,17 +3773,17 @@
 "ejecutable/DSO con sección .eh_frame_hdr no tiene una entrada de "
 "encabezamiento de programa PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4798
+#: src/elflint.c:4841
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "No se puede leer encabezamiento ELF: %s\n"
 
-#: src/elflint.c:4810
+#: src/elflint.c:4853
 #, fuzzy, c-format
 msgid "cannot create backend for ELF file\n"
 msgstr "no sepuede crear fichero nuevo"
 
-#: src/elflint.c:4831
+#: src/elflint.c:4874
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr "Bandera de reubicación de texto establecida pero no necesaria\n"
@@ -4010,7 +4004,7 @@
 msgstr "%s: ERROR INTERNO %d (%s-%s): %s"
 
 #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307
-#: src/strip.c:2766
+#: src/strip.c:2763
 #, c-format
 msgid "while closing '%s'"
 msgstr "error al cerrar '%s'"
@@ -4054,13 +4048,13 @@
 msgid "cannot create search tree"
 msgstr "No se puede crear el árbol de búsqueda"
 
-#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663
-#: src/readelf.c:1484 src/readelf.c:1633 src/readelf.c:1860 src/readelf.c:2097
-#: src/readelf.c:2286 src/readelf.c:2466 src/readelf.c:2544 src/readelf.c:2809
-#: src/readelf.c:2884 src/readelf.c:2970 src/readelf.c:3565 src/readelf.c:3613
-#: src/readelf.c:3682 src/readelf.c:11620 src/readelf.c:12803
-#: src/readelf.c:13013 src/readelf.c:13081 src/size.c:396 src/size.c:467
-#: src/strip.c:1093
+#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685
+#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123
+#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854
+#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896
+#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029
+#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396
+#: src/size.c:467 src/strip.c:1093
 #, c-format
 msgid "cannot get section header string table index"
 msgstr "no se puede obtener índice de cadena de encabezamiento de sección"
@@ -4170,7 +4164,7 @@
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Muestra información de FICHEROS (a.out por defecto)."
 
-#: src/objdump.c:217 src/readelf.c:608
+#: src/objdump.c:217 src/readelf.c:630
 msgid "No operation specified.\n"
 msgstr "No se especificó una operación.\n"
 
@@ -4179,11 +4173,11 @@
 msgid "while close `%s'"
 msgstr "mientras cierra `%s'"
 
-#: src/objdump.c:362 src/readelf.c:2192 src/readelf.c:2383
+#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409
 msgid "INVALID SYMBOL"
 msgstr "SÍMBOLO INVÁLIDO"
 
-#: src/objdump.c:377 src/readelf.c:2226 src/readelf.c:2419
+#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445
 msgid "INVALID SECTION"
 msgstr "SECCIÓN INVÁLIDA"
 
@@ -4241,90 +4235,90 @@
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "error al liberar descriptor sub-ELF: %s"
 
-#: src/readelf.c:96
+#: src/readelf.c:97
 #, fuzzy
 msgid "ELF input selection:"
 msgstr "Selección de salida de ELF:"
 
-#: src/readelf.c:98
+#: src/readelf.c:99
 msgid ""
 "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
 msgstr ""
 
-#: src/readelf.c:101
+#: src/readelf.c:102
 msgid ""
 "Used with -w to find the skeleton Compile Units in FILE associated with the "
 "Split Compile units in a .dwo input file"
 msgstr ""
 
-#: src/readelf.c:103
+#: src/readelf.c:104
 msgid "ELF output selection:"
 msgstr "Selección de salida de ELF:"
 
-#: src/readelf.c:105
+#: src/readelf.c:106
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr "Todo esto mas -p .strtab -p .dynstr -p .comment"
 
-#: src/readelf.c:106
+#: src/readelf.c:107
 msgid "Display the dynamic segment"
 msgstr "Mostrar el segmento dinámico"
 
-#: src/readelf.c:107
+#: src/readelf.c:108
 msgid "Display the ELF file header"
 msgstr "Mostrar el encabezamiento del fichero ELF"
 
-#: src/readelf.c:109
+#: src/readelf.c:110
 msgid "Display histogram of bucket list lengths"
 msgstr "Mostrar histograma de las longitudes de las listas de cubetas"
 
-#: src/readelf.c:110
+#: src/readelf.c:111
 msgid "Display the program headers"
 msgstr "Mostrar encabezamientos de programa"
 
-#: src/readelf.c:112
+#: src/readelf.c:113
 msgid "Display relocations"
 msgstr "Mostrar reubicaciones"
 
-#: src/readelf.c:113
+#: src/readelf.c:114
 #, fuzzy
 msgid "Display the section groups"
 msgstr "Mostrar los encabezados de las secciones"
 
-#: src/readelf.c:114
+#: src/readelf.c:115
 msgid "Display the sections' headers"
 msgstr "Mostrar los encabezados de las secciones"
 
-#: src/readelf.c:117
+#: src/readelf.c:118
 #, fuzzy
 msgid "Display the symbol table sections"
 msgstr "Mostrar la tabla de símbolos"
 
-#: src/readelf.c:120
+#: src/readelf.c:121
 #, fuzzy
 msgid "Display (only) the dynamic symbol table"
 msgstr "Mostrar sólo símbolos externos"
 
-#: src/readelf.c:121
+#: src/readelf.c:122
 msgid "Display versioning information"
 msgstr "Mostrar información de versión"
 
-#: src/readelf.c:122
+#: src/readelf.c:123
 msgid "Display the ELF notes"
 msgstr "Mostrar las notas ELF"
 
-#: src/readelf.c:124
+#: src/readelf.c:125
 msgid "Display architecture specific information, if any"
 msgstr "Mostrar información específica de la arquitectura (si es que la hay)"
 
-#: src/readelf.c:126
+#: src/readelf.c:127
 msgid "Display sections for exception handling"
 msgstr "Muestra secciones para manejo de excepciones"
 
-#: src/readelf.c:128
+#: src/readelf.c:129
 msgid "Additional output selection:"
 msgstr "Selección de salida adicional:"
 
-#: src/readelf.c:130
+#: src/readelf.c:131
 #, fuzzy
 msgid ""
 "Display DWARF section content.  SECTION can be one of abbrev, addr, aranges, "
@@ -4335,85 +4329,85 @@
 "siguiente: abbrev, aranges, frame, info, loc, line, ranges, pubnames, str, "
 "macinfo, o exception"
 
-#: src/readelf.c:134
+#: src/readelf.c:135
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr "Vuelca los contenidos no interpretados de SECCIÓN, por número o nombre"
 
-#: src/readelf.c:136
+#: src/readelf.c:137
 msgid "Print string contents of sections"
 msgstr "Imprime contenido de cadena de secciones"
 
-#: src/readelf.c:139
+#: src/readelf.c:140
 msgid "Display the symbol index of an archive"
 msgstr "Muestra el índice de símbolos de un archivo"
 
-#: src/readelf.c:141
+#: src/readelf.c:142
 msgid "Use the dynamic segment when possible for displaying info"
 msgstr ""
 
-#: src/readelf.c:143
+#: src/readelf.c:144
 msgid "Output control:"
 msgstr "Control de salida:"
 
-#: src/readelf.c:145
+#: src/readelf.c:146
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr ""
 "No se encuentran los nombres de símbolos para direcciones en datos DWARF"
 
-#: src/readelf.c:147
+#: src/readelf.c:148
 #, fuzzy
 msgid ""
 "Display just offsets instead of resolving values to addresses in DWARF data"
 msgstr ""
 "No se encuentran los nombres de símbolos para direcciones en datos DWARF"
 
-#: src/readelf.c:149
+#: src/readelf.c:150
 msgid "Ignored for compatibility (lines always wide)"
 msgstr ""
 
-#: src/readelf.c:151
+#: src/readelf.c:152
 msgid ""
 "Show compression information for compressed sections (when used with -S); "
 "decompress section before dumping data (when used with -p or -x)"
 msgstr ""
 
 #. Short description of program.
-#: src/readelf.c:156
+#: src/readelf.c:157
 msgid "Print information from ELF file in human-readable form."
 msgstr ""
 "Imprimir información del fichero ELF en una forma comprensible para los "
 "seres humanos."
 
 #. Look up once.
-#: src/readelf.c:373
+#: src/readelf.c:395
 msgid "yes"
 msgstr "sí"
 
-#: src/readelf.c:374
+#: src/readelf.c:396
 msgid "no"
 msgstr "no"
 
-#: src/readelf.c:576
+#: src/readelf.c:598
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Sección de depuración DWARF desconocida `%s'.\n"
 
-#: src/readelf.c:647 src/readelf.c:758
+#: src/readelf.c:669 src/readelf.c:780
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "no se puede crear descriptor ELF: %s"
 
-#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188
+#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "no se pudieron determinar el número de secciones: %s"
 
-#: src/readelf.c:672 src/readelf.c:1300 src/readelf.c:1508
+#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530
 #, c-format
 msgid "cannot get section: %s"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/readelf.c:681 src/readelf.c:1307 src/readelf.c:1515 src/readelf.c:13033
+#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442
 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610
 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222
 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470
@@ -4422,120 +4416,120 @@
 msgid "cannot get section header: %s"
 msgstr "No se puede obtener encabezamiento de sección: %s"
 
-#: src/readelf.c:689
+#: src/readelf.c:711
 #, fuzzy, c-format
 msgid "cannot get section name"
 msgstr "no se puede obtener encabezamiento de sección\n"
 
-#: src/readelf.c:698 src/readelf.c:6833 src/readelf.c:10887 src/readelf.c:10989
-#: src/readelf.c:11173
+#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332
+#: src/readelf.c:11516
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "No se puede obtener el contenido %s: %s"
 
-#: src/readelf.c:714
+#: src/readelf.c:736
 #, fuzzy, c-format
 msgid "cannot create temp file '%s'"
 msgstr "no se puede crear fichero nuevo '%s': %s"
 
-#: src/readelf.c:723
+#: src/readelf.c:745
 #, fuzzy, c-format
 msgid "cannot write section data"
 msgstr "no se puede leer la sección de datos: %s"
 
-#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775
+#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797
 #, c-format
 msgid "error while closing Elf descriptor: %s"
 msgstr "error al cerrar el descriptor ELF: %s"
 
-#: src/readelf.c:736
+#: src/readelf.c:758
 #, fuzzy, c-format
 msgid "error while rewinding file descriptor"
 msgstr "error al cerrar el descriptor ELF: %s"
 
-#: src/readelf.c:770
+#: src/readelf.c:792
 #, c-format
 msgid "'%s' is not an archive, cannot print archive index"
 msgstr "'%s' no es un archivo, no se puede imprimir índice de archivo"
 
-#: src/readelf.c:874
+#: src/readelf.c:896
 #, c-format
 msgid "cannot stat input file"
 msgstr "no sepudo stat archivo de entrada"
 
-#: src/readelf.c:876
+#: src/readelf.c:898
 #, c-format
 msgid "input file is empty"
 msgstr "archivo de entrada vacío"
 
-#: src/readelf.c:878
+#: src/readelf.c:900
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "Falló lectura de '%s': %s"
 
-#: src/readelf.c:907
+#: src/readelf.c:929
 #, fuzzy, c-format
 msgid "No such section '%s' in '%s'"
 msgstr "No se puede obtener contenido de sección %zu en '%s': %s"
 
-#: src/readelf.c:966
+#: src/readelf.c:988
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "no se pudo leer encabezamiento ELF: %s"
 
-#: src/readelf.c:974
+#: src/readelf.c:996
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "no se puede crear EBL"
 
-#: src/readelf.c:985
+#: src/readelf.c:1007
 #, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "no se pudo determinar la cantidad de encabezados de programa: %s"
 
-#: src/readelf.c:1017
+#: src/readelf.c:1039
 #, fuzzy, c-format
 msgid "cannot read ELF: %s"
 msgstr "no sepuede leer %s: %s"
 
-#: src/readelf.c:1050
+#: src/readelf.c:1072
 #, fuzzy
 #| msgid "cannot get section: %s"
 msgid "cannot find section"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/readelf.c:1087
+#: src/readelf.c:1109
 msgid "NONE (None)"
 msgstr "NONE (Ninguno)"
 
-#: src/readelf.c:1088
+#: src/readelf.c:1110
 msgid "REL (Relocatable file)"
 msgstr "REL (Fichero reubicable)"
 
-#: src/readelf.c:1089
+#: src/readelf.c:1111
 msgid "EXEC (Executable file)"
 msgstr "EXEC (Fichero ejecutable)"
 
-#: src/readelf.c:1090
+#: src/readelf.c:1112
 msgid "DYN (Shared object file)"
 msgstr "DYN (Fichero objeto compartido)"
 
-#: src/readelf.c:1091
+#: src/readelf.c:1113
 msgid "CORE (Core file)"
 msgstr "CORE (Fichero núcleo)"
 
-#: src/readelf.c:1096
+#: src/readelf.c:1118
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "OS Specific: (%x)\n"
 
 #. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1098
+#: src/readelf.c:1120
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "Específico del procesador: (%x)\n"
 
-#: src/readelf.c:1108
+#: src/readelf.c:1130
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4543,7 +4537,7 @@
 "Encabezamiento ELF:\n"
 "  Mágico:  "
 
-#: src/readelf.c:1112
+#: src/readelf.c:1134
 #, c-format
 msgid ""
 "\n"
@@ -4552,125 +4546,125 @@
 "\n"
 "  Clase:                             %s\n"
 
-#: src/readelf.c:1117
+#: src/readelf.c:1139
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Datos:                             %s\n"
 
-#: src/readelf.c:1123
+#: src/readelf.c:1145
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "  Versión ident:                     %hhd %s\n"
 
-#: src/readelf.c:1125 src/readelf.c:1147
+#: src/readelf.c:1147 src/readelf.c:1169
 msgid "(current)"
 msgstr "(actual)"
 
-#: src/readelf.c:1129
+#: src/readelf.c:1151
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: src/readelf.c:1132
+#: src/readelf.c:1154
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  Versión ABI:                       %hhd\n"
 
-#: src/readelf.c:1135
+#: src/readelf.c:1157
 msgid "  Type:                              "
 msgstr "  Tipo:                              "
 
-#: src/readelf.c:1140
+#: src/readelf.c:1162
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Máquina:                           %s\n"
 
-#: src/readelf.c:1142
+#: src/readelf.c:1164
 #, fuzzy, c-format
 msgid "  Machine:                           <unknown>: 0x%x\n"
 msgstr "  Máquina:                           %s\n"
 
-#: src/readelf.c:1145
+#: src/readelf.c:1167
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Versión:                           %d %s\n"
 
-#: src/readelf.c:1149
+#: src/readelf.c:1171
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  Dirección de punto de entrada:               %#<PRIx64>\n"
 
-#: src/readelf.c:1152
+#: src/readelf.c:1174
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr "  Inicio de encabezamientos de programa:          %<PRId64> %s\n"
 
-#: src/readelf.c:1153 src/readelf.c:1156
+#: src/readelf.c:1175 src/readelf.c:1178
 msgid "(bytes into file)"
 msgstr " (bytes en el archivo)"
 
-#: src/readelf.c:1155
+#: src/readelf.c:1177
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr "  Inicio de encabezamientos de sección:          %<PRId64> %s\n"
 
-#: src/readelf.c:1158
+#: src/readelf.c:1180
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  Indicadores:                             %s\n"
 
-#: src/readelf.c:1161
+#: src/readelf.c:1183
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr "  Tamaño de este encabezamiento:               %<PRId16> %s\n"
 
-#: src/readelf.c:1162 src/readelf.c:1165 src/readelf.c:1182
+#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204
 msgid "(bytes)"
 msgstr "(bytes)"
 
-#: src/readelf.c:1164
+#: src/readelf.c:1186
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr ""
 "  Tamaño de las entradas en encabezamiento del programa:    %<PRId16> %s\n"
 
-#: src/readelf.c:1167
+#: src/readelf.c:1189
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr "  Cantidad de entradas de encabezados de programa: %<PRId16>"
 
-#: src/readelf.c:1174
+#: src/readelf.c:1196
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr " (%<PRIu32> in [0].sh_info)"
 
-#: src/readelf.c:1177 src/readelf.c:1194 src/readelf.c:1208
+#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230
 msgid " ([0] not available)"
 msgstr " ([0] no disponible)"
 
-#: src/readelf.c:1181
+#: src/readelf.c:1203
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr ""
 "  Tamaño de las entradas en el encabezamiento de sección:    %<PRId16> %s\n"
 
-#: src/readelf.c:1184
+#: src/readelf.c:1206
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr "  Cantidad de entradas en los encabezamientos de sección: %<PRId16>"
 
-#: src/readelf.c:1191
+#: src/readelf.c:1213
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " (%<PRIu32> en [0].sh_size)"
 
 #. We managed to get the zeroth section.
-#: src/readelf.c:1204
+#: src/readelf.c:1226
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr " (%<PRIu32> en [0].sh_link)"
 
-#: src/readelf.c:1212
+#: src/readelf.c:1234
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4679,19 +4673,19 @@
 "  Índice de tabla de cadenas de sección de encabezamiento de : XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:1216
+#: src/readelf.c:1238
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
 "\n"
 msgstr "  Índice de tabla de cadenas de sección de encabezamiento: %<PRId16>\n"
 
-#: src/readelf.c:1266 src/readelf.c:1474
+#: src/readelf.c:1288 src/readelf.c:1496
 #, fuzzy, c-format
 msgid "cannot get number of sections: %s"
 msgstr "no se pudieron determinar el número de secciones: %s"
 
-#: src/readelf.c:1269
+#: src/readelf.c:1291
 #, fuzzy, c-format
 msgid ""
 "There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4700,16 +4694,16 @@
 "Hay %d encabezamientos de sección, comenzando en compensación %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:1277
+#: src/readelf.c:1299
 #, fuzzy, c-format
 msgid "cannot get section header string table index: %s"
 msgstr "no se puede obtener índice de cadena de encabezamiento de sección"
 
-#: src/readelf.c:1280
+#: src/readelf.c:1302
 msgid "Section Headers:"
 msgstr "encabezamientos de sección:"
 
-#: src/readelf.c:1283
+#: src/readelf.c:1305
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4717,7 +4711,7 @@
 "[Nr] Nombre            Tipo            Dirección    Off    Tamaño    Inf Al "
 "Enlace banderas ES"
 
-#: src/readelf.c:1285
+#: src/readelf.c:1307
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4725,36 +4719,36 @@
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
 
-#: src/readelf.c:1290
+#: src/readelf.c:1312
 msgid "     [Compression  Size   Al]"
 msgstr ""
 
-#: src/readelf.c:1292
+#: src/readelf.c:1314
 msgid "     [Compression  Size     Al]"
 msgstr ""
 
-#: src/readelf.c:1370
+#: src/readelf.c:1392
 #, fuzzy, c-format
 msgid "bad compression header for section %zd: %s"
 msgstr "No se puede obtener el encabezamiento de sección %zu: %s"
 
-#: src/readelf.c:1381
+#: src/readelf.c:1403
 #, fuzzy, c-format
 msgid "bad gnu compressed size for section %zd: %s"
 msgstr "No se pueden obtener datos para la sección %d: %s"
 
-#: src/readelf.c:1399
+#: src/readelf.c:1421
 msgid "Program Headers:"
 msgstr "encabezamientos de programa:"
 
-#: src/readelf.c:1401
+#: src/readelf.c:1423
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 "  Tipo           Compensación  Dirección Virtual       Dirección "
 "Física       Tamaño de Fichero  Tamaño de Memoria     Alineación de bandera"
 
-#: src/readelf.c:1404
+#: src/readelf.c:1426
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4762,12 +4756,12 @@
 "  Tipo          Compensación  Dirección Virtual            Dirección "
 "Física          Tamaño de Fichero  Tamaño de Memoria   Alineación de bandera"
 
-#: src/readelf.c:1461
+#: src/readelf.c:1483
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Solicitando intérprete de programa: %s]\n"
 
-#: src/readelf.c:1486
+#: src/readelf.c:1508
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4777,12 +4771,12 @@
 " Sección para asignación de segmento:\n"
 "  Secciones de segmento..."
 
-#: src/readelf.c:1497 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
+#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "no se puede obtener memoria para encabezamiento del programa: %s"
 
-#: src/readelf.c:1641
+#: src/readelf.c:1663
 #, c-format
 msgid ""
 "\n"
@@ -4797,7 +4791,7 @@
 "\n"
 "Grupo de sección COMDAT [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
 
-#: src/readelf.c:1646
+#: src/readelf.c:1668
 #, c-format
 msgid ""
 "\n"
@@ -4812,32 +4806,32 @@
 "\n"
 "Grupo de sección [%2zu] '%s' con firma '%s' contiene entradas %zu:\n"
 
-#: src/readelf.c:1654
+#: src/readelf.c:1676
 msgid "<INVALID SYMBOL>"
 msgstr "<SÍMBOLO INVÁLIDO>"
 
-#: src/readelf.c:1668
+#: src/readelf.c:1690
 msgid "<INVALID SECTION>"
 msgstr "<SECCIÓN INVÁLIDA>"
 
-#: src/readelf.c:1691 src/readelf.c:2476 src/readelf.c:3581 src/readelf.c:3881
-#: src/readelf.c:12905 src/readelf.c:12912 src/readelf.c:12956
-#: src/readelf.c:12963
+#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212
+#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365
+#: src/readelf.c:13372
 msgid "Couldn't uncompress section"
 msgstr ""
 
-#: src/readelf.c:1695 src/readelf.c:2481 src/readelf.c:3585
+#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916
 #, fuzzy, c-format
 msgid "cannot get section [%zd] header: %s"
 msgstr "No se puede obtener encabezamiento de sección: %s"
 
-#: src/readelf.c:1864 src/readelf.c:2550 src/readelf.c:2815 src/readelf.c:2890
-#: src/readelf.c:3193 src/readelf.c:3267 src/readelf.c:5619
+#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221
+#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962
 #, fuzzy, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr ".debug_line section inválida"
 
-#: src/readelf.c:1867
+#: src/readelf.c:1889
 #, c-format
 msgid ""
 "\n"
@@ -4858,7 +4852,7 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:1880
+#: src/readelf.c:1902
 #, fuzzy, c-format
 #| msgid ""
 #| "\n"
@@ -4887,41 +4881,41 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:1890
+#: src/readelf.c:1912
 msgid "  Type              Value\n"
 msgstr "  Tipo              Valor\n"
 
-#: src/readelf.c:1899
+#: src/readelf.c:1921
 #, fuzzy
 msgid "cannot get string table by using dynamic segment"
 msgstr "no se pueden obtener datos de sección: %s"
 
-#: src/readelf.c:1938
+#: src/readelf.c:1960
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Biblioteca compartida: [%s]\n"
 
-#: src/readelf.c:1942
+#: src/readelf.c:1964
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "Nombre-so de la biblioteca: [%s]\n"
 
-#: src/readelf.c:1946
+#: src/readelf.c:1968
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "Rpath de la biblioteca: [%s]\n"
 
-#: src/readelf.c:1950
+#: src/readelf.c:1972
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "Ruta de ejecución de la biblioteca: [%s]\n"
 
-#: src/readelf.c:1969
+#: src/readelf.c:1993
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (bytes)\n"
 
-#: src/readelf.c:2083 src/readelf.c:2272
+#: src/readelf.c:2109 src/readelf.c:2298
 #, c-format
 msgid ""
 "\n"
@@ -4930,7 +4924,7 @@
 "\n"
 "Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
 
-#: src/readelf.c:2100 src/readelf.c:2289
+#: src/readelf.c:2126 src/readelf.c:2315
 #, c-format
 msgid ""
 "\n"
@@ -4955,7 +4949,8 @@
 #. The .rela.dyn section does not refer to a specific section but
 #. instead of section index zero.  Do not try to print a section
 #. name.
-#: src/readelf.c:2115 src/readelf.c:2304
+#. A .relr.dyn section does not refer to a specific section.
+#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485
 #, c-format
 msgid ""
 "\n"
@@ -4972,29 +4967,39 @@
 "Sección de reubicación [%2u] '%s' en compensación %#0<PRIx64> contiene "
 "entradas %d:\n"
 
-#: src/readelf.c:2125
+#: src/readelf.c:2151
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "   Compensación           Tipo               Valor      Nombre\n"
 
-#: src/readelf.c:2127
+#: src/readelf.c:2153
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "    Compensación           Tipo               Valor           Nombre\n"
 
-#: src/readelf.c:2180 src/readelf.c:2191 src/readelf.c:2204 src/readelf.c:2225
-#: src/readelf.c:2237 src/readelf.c:2370 src/readelf.c:2382 src/readelf.c:2396
-#: src/readelf.c:2418 src/readelf.c:2431
+#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251
+#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422
+#: src/readelf.c:2444 src/readelf.c:2457
 msgid "<INVALID RELOC>"
 msgstr "<REUBIC INVÁLIDA>"
 
-#: src/readelf.c:2314
+#: src/readelf.c:2340
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "    Compensación            Tipo               Valor    Nombre Adend\n"
 
-#: src/readelf.c:2316
+#: src/readelf.c:2342
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr "    Compensación            Tipo               Valor   Nombre Adend\n"
 
-#: src/readelf.c:2558
+#: src/readelf.c:2654
+#, c-format
+msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+
+#: src/readelf.c:2750
+#, c-format
+msgid "bad dynamic symbol"
+msgstr "símbolo dinámico erróneo"
+
+#: src/readelf.c:2868
 #, c-format
 msgid ""
 "\n"
@@ -5009,40 +5014,34 @@
 "\n"
 "La tabla de símbolos [%2u] '%s' contiene entradas %u:\n"
 
-#: src/readelf.c:2563
+#: src/readelf.c:2873
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
 msgstr[0] "símbolos locales %lu Tabla de cadena: [%2u] '%s'\n"
 msgstr[1] " Símbolos locales %lu Tabla de cadenas: [%2u] '%s'\n"
 
-#: src/readelf.c:2571
+#: src/readelf.c:2881
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Núm:    Valor       Tamaño Tipo    Unión  Vis          Nombre Ndx\n"
 
-#: src/readelf.c:2573
+#: src/readelf.c:2883
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "   Num:    Valor          Tamaño Tipo    Unión  Vis      Nombre Ndx\n"
 
-#: src/readelf.c:2593
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+#: src/readelf.c:3002
+msgid "Dynamic symbol information is not available for displaying symbols."
+msgstr ""
 
-#: src/readelf.c:2686
-#, c-format
-msgid "bad dynamic symbol"
-msgstr "símbolo dinámico erróneo"
-
-#: src/readelf.c:2771
+#: src/readelf.c:3102
 msgid "none"
 msgstr "nada"
 
-#: src/readelf.c:2788
+#: src/readelf.c:3119
 msgid "| <unknown>"
 msgstr "| <desconocido>"
 
-#: src/readelf.c:2818
+#: src/readelf.c:3149
 #, c-format
 msgid ""
 "\n"
@@ -5063,17 +5062,17 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2839
+#: src/readelf.c:3170
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Versión: %hu  Fichero: %s  Conteo: %hu\n"
 
-#: src/readelf.c:2852
+#: src/readelf.c:3183
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Nombre: %s  Banderas: %s  Versión: %hu\n"
 
-#: src/readelf.c:2894
+#: src/readelf.c:3225
 #, c-format
 msgid ""
 "\n"
@@ -5094,19 +5093,19 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2922
+#: src/readelf.c:3253
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr ""
 "  %#06x: Versión: %hd  Banderas: %s  Índice: %hd  Conteo: %hd  Nombre: %s\n"
 
-#: src/readelf.c:2937
+#: src/readelf.c:3268
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Principal %d: %s\n"
 
 #. Print the header.
-#: src/readelf.c:3197
+#: src/readelf.c:3528
 #, c-format
 msgid ""
 "\n"
@@ -5127,15 +5126,15 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'"
 
-#: src/readelf.c:3225
+#: src/readelf.c:3556
 msgid "   0 *local*                     "
 msgstr "   0 *local*                     "
 
-#: src/readelf.c:3230
+#: src/readelf.c:3561
 msgid "   1 *global*                    "
 msgstr "   1 *global*                    "
 
-#: src/readelf.c:3272
+#: src/readelf.c:3603
 #, c-format
 msgid ""
 "\n"
@@ -5160,22 +5159,22 @@
 " Dirección: %#0*<PRIx64>  Compensación: %#08<PRIx64>  Enlace a sección: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:3294
+#: src/readelf.c:3625
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Longitud  Número  % of total  Cobertura\n"
 
-#: src/readelf.c:3296
+#: src/readelf.c:3627
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:3303
+#: src/readelf.c:3634
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:3316
+#: src/readelf.c:3647
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -5184,37 +5183,37 @@
 " Número promedio de pruebas:   búsqueda exitosa: %f\n"
 "                          búsqueda sin éxito: %f\n"
 
-#: src/readelf.c:3334 src/readelf.c:3398 src/readelf.c:3464
+#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "No se pueden obtener datos para la sección %d: %s"
 
-#: src/readelf.c:3342
+#: src/readelf.c:3673
 #, fuzzy, c-format
 msgid "invalid data in sysv.hash section %d"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:3371
+#: src/readelf.c:3702
 #, fuzzy, c-format
 msgid "invalid chain in sysv.hash section %d"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:3406
+#: src/readelf.c:3737
 #, fuzzy, c-format
 msgid "invalid data in sysv.hash64 section %d"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:3437
+#: src/readelf.c:3768
 #, fuzzy, c-format
 msgid "invalid chain in sysv.hash64 section %d"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:3473
+#: src/readelf.c:3804
 #, fuzzy, c-format
 msgid "invalid data in gnu.hash section %d"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:3539
+#: src/readelf.c:3870
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -5224,7 +5223,7 @@
 " Tamaño de Bitmask: %zu bytes  %<PRIuFAST32>%% bits establecen segundo "
 "cambio de dispersión: %u\n"
 
-#: src/readelf.c:3624
+#: src/readelf.c:3955
 #, c-format
 msgid ""
 "\n"
@@ -5241,7 +5240,7 @@
 "Sección de lista de biblioteca [%2zu] '%s' en compensación %#0<PRIx64> "
 "contiene entradas %d:\n"
 
-#: src/readelf.c:3638
+#: src/readelf.c:3969
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -5249,7 +5248,7 @@
 "       Biblioteca                       Marca de tiempo          Indicadores "
 "de versión de suma de verificación"
 
-#: src/readelf.c:3698
+#: src/readelf.c:4029
 #, c-format
 msgid ""
 "\n"
@@ -5260,107 +5259,107 @@
 "Sección de atributos de objeto [%2zu] '%s' de %<PRIu64> bytes con "
 "desplazamiento %#0<PRIx64>:\n"
 
-#: src/readelf.c:3715
+#: src/readelf.c:4046
 msgid "  Owner          Size\n"
 msgstr "  Propietario          Tamaño\n"
 
-#: src/readelf.c:3739
+#: src/readelf.c:4070
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
 #. Unknown subsection, print and skip.
-#: src/readelf.c:3778
+#: src/readelf.c:4109
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
 #. Tag_File
-#: src/readelf.c:3783
+#: src/readelf.c:4114
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    File: %11<PRIu32>\n"
 
-#: src/readelf.c:3833
+#: src/readelf.c:4164
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3836
+#: src/readelf.c:4167
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3839
+#: src/readelf.c:4170
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3849
+#: src/readelf.c:4180
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3852
+#: src/readelf.c:4183
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3890
+#: src/readelf.c:4221
 #, fuzzy
 msgid "Couldn't get data from section"
 msgstr "No se puede obtener encabezamiento de sección 0th: %s"
 
-#: src/readelf.c:3955
+#: src/readelf.c:4286
 #, fuzzy
 msgid "sprintf failure"
 msgstr "mprotect falló"
 
-#: src/readelf.c:4439
+#: src/readelf.c:4770
 msgid "empty block"
 msgstr "bloque vacío"
 
-#: src/readelf.c:4442
+#: src/readelf.c:4773
 #, c-format
 msgid "%zu byte block:"
 msgstr "bloque de byte %zu:"
 
-#: src/readelf.c:4920
+#: src/readelf.c:5251
 #, fuzzy, c-format
 msgid "%*s[%2<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 
-#: src/readelf.c:5080
+#: src/readelf.c:5423
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
 
-#: src/readelf.c:5087
+#: src/readelf.c:5430
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> utilizado con offsetr de diferente tamaño"
 
-#: src/readelf.c:5094
+#: src/readelf.c:5437
 #, fuzzy, c-format
 msgid "%s %#<PRIx64> used with different base addresses"
 msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
 
-#: src/readelf.c:5101
+#: src/readelf.c:5444
 #, fuzzy, c-format
 msgid "%s %#<PRIx64> used with different attribute %s and %s"
 msgstr "%s %#<PRIx64> utilizado con direcciones de diferente tamaño"
 
-#: src/readelf.c:5201
+#: src/readelf.c:5544
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx] <MATERIAL INUTIL SIN UTILIZAR EN EL RESTO DE LA SECCION>\n"
 
-#: src/readelf.c:5209
+#: src/readelf.c:5552
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <MATERIAL INUTIL NO UTILIZADO> ... %<PRIu64> bytes ...\n"
 
-#: src/readelf.c:5315
+#: src/readelf.c:5658
 #, c-format
 msgid ""
 "\n"
@@ -5371,7 +5370,7 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " [ Código]\n"
 
-#: src/readelf.c:5323
+#: src/readelf.c:5666
 #, c-format
 msgid ""
 "\n"
@@ -5380,20 +5379,20 @@
 "\n"
 "Sección de abreviatura en compensación %<PRIu64>:\n"
 
-#: src/readelf.c:5336
+#: src/readelf.c:5679
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** error en lectura de abreviatura: %s\n"
 
-#: src/readelf.c:5352
+#: src/readelf.c:5695
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] compensación: %<PRId64>, hijos: %s, etiqueta: %s\n"
 
-#: src/readelf.c:5389 src/readelf.c:5682 src/readelf.c:5853 src/readelf.c:6224
-#: src/readelf.c:6850 src/readelf.c:8619 src/readelf.c:9361 src/readelf.c:9829
-#: src/readelf.c:10084 src/readelf.c:10246 src/readelf.c:10627
-#: src/readelf.c:10698
+#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567
+#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172
+#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970
+#: src/readelf.c:11041
 #, c-format
 msgid ""
 "\n"
@@ -5402,47 +5401,47 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 
-#: src/readelf.c:5492 src/readelf.c:5516 src/readelf.c:5889 src/readelf.c:9397
+#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5494 src/readelf.c:5531 src/readelf.c:5902 src/readelf.c:9410
+#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5495 src/readelf.c:5540 src/readelf.c:5911 src/readelf.c:9419
+#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5497 src/readelf.c:5550 src/readelf.c:5921 src/readelf.c:9429
+#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:5535 src/readelf.c:5906 src/readelf.c:9414 src/readelf.c:10820
+#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "versión desconocida"
 
-#: src/readelf.c:5545 src/readelf.c:5752 src/readelf.c:5916 src/readelf.c:9424
+#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767
 #, fuzzy, c-format
 msgid "unsupported address size"
 msgstr "no hay valor de dirección"
 
-#: src/readelf.c:5556 src/readelf.c:5763 src/readelf.c:5926 src/readelf.c:9434
+#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777
 #, c-format
 msgid "unsupported segment size"
 msgstr ""
 
-#: src/readelf.c:5609
+#: src/readelf.c:5952
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "no se ha podido obtener contenido de .debug_aranges: %s"
 
-#: src/readelf.c:5624
+#: src/readelf.c:5967
 #, c-format
 msgid ""
 "\n"
@@ -5457,12 +5456,12 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entradas %zu:\n"
 
-#: src/readelf.c:5655
+#: src/readelf.c:5998
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5657
+#: src/readelf.c:6000
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5470,7 +5469,7 @@
 " Inicio [%*zu]: %0#*<PRIx64>, longitud: %5<PRIu64>, compensación CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:5695 src/readelf.c:8638
+#: src/readelf.c:6038 src/readelf.c:8981
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5479,140 +5478,140 @@
 "\n"
 "Tabla en compensación %Zu:\n"
 
-#: src/readelf.c:5699 src/readelf.c:5870 src/readelf.c:6874 src/readelf.c:8649
-#: src/readelf.c:9378
+#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992
+#: src/readelf.c:9721
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "Datos inválidos en sección [%zu] '%s'"
 
-#: src/readelf.c:5715
+#: src/readelf.c:6058
 #, fuzzy, c-format
 msgid ""
 "\n"
 " Length:        %6<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5727
+#: src/readelf.c:6070
 #, fuzzy, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5731
+#: src/readelf.c:6074
 #, c-format
 msgid "unsupported aranges version"
 msgstr ""
 
-#: src/readelf.c:5742
+#: src/readelf.c:6085
 #, fuzzy, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5748
+#: src/readelf.c:6091
 #, fuzzy, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5759
+#: src/readelf.c:6102
 #, fuzzy, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
 "\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:5814
+#: src/readelf.c:6157
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr ""
 
-#: src/readelf.c:5876 src/readelf.c:9384
+#: src/readelf.c:6219 src/readelf.c:9727
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5931 src/readelf.c:9439
+#: src/readelf.c:6274 src/readelf.c:9782
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:5947 src/readelf.c:9455
+#: src/readelf.c:6290 src/readelf.c:9798
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5949 src/readelf.c:9457
+#: src/readelf.c:6292 src/readelf.c:9800
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5955 src/readelf.c:9463
+#: src/readelf.c:6298 src/readelf.c:9806
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5966 src/readelf.c:9474
+#: src/readelf.c:6309 src/readelf.c:9817
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5970 src/readelf.c:9478
+#: src/readelf.c:6313 src/readelf.c:9821
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  Propietario          Tamaño\n"
 
-#: src/readelf.c:6022
+#: src/readelf.c:6365
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "datos inválidos"
 
-#: src/readelf.c:6207 src/readelf.c:9813
+#: src/readelf.c:6550 src/readelf.c:10156
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:6255 src/readelf.c:9862
+#: src/readelf.c:6598 src/readelf.c:10205
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6257 src/readelf.c:9864
+#: src/readelf.c:6600 src/readelf.c:10207
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6266 src/readelf.c:9890 src/readelf.c:9916
+#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:6291 src/readelf.c:10000
+#: src/readelf.c:6634 src/readelf.c:10343
 #, fuzzy
 msgid "base address"
 msgstr "Establecer dirección a %s\n"
 
-#: src/readelf.c:6301 src/readelf.c:10010
+#: src/readelf.c:6644 src/readelf.c:10353
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx]  lista vacía\n"
 
-#: src/readelf.c:6565
+#: src/readelf.c:6908
 #, fuzzy
 msgid "         <INVALID DATA>\n"
 msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:6822
+#: src/readelf.c:7165
 #, fuzzy, c-format
 msgid "cannot get ELF: %s"
 msgstr "no se puede leer encabezamiento ELF: %s"
 
-#: src/readelf.c:6846
+#: src/readelf.c:7189
 #, c-format
 msgid ""
 "\n"
@@ -5622,7 +5621,7 @@
 "Sección de información de marco de llamada [%2zu] '%s' en compensación "
 "%#<PRIx64>:\n"
 
-#: src/readelf.c:6896
+#: src/readelf.c:7239
 #, c-format
 msgid ""
 "\n"
@@ -5631,65 +5630,65 @@
 "\n"
 " [%6tx] Terminator cero\n"
 
-#: src/readelf.c:7000 src/readelf.c:7154
+#: src/readelf.c:7343 src/readelf.c:7497
 #, c-format
 msgid "invalid augmentation length"
 msgstr "longitud de aumento inválida"
 
-#: src/readelf.c:7015
+#: src/readelf.c:7358
 msgid "FDE address encoding: "
 msgstr "Codificación de dirección FDE:"
 
-#: src/readelf.c:7021
+#: src/readelf.c:7364
 msgid "LSDA pointer encoding: "
 msgstr "Codificación de puntero LSDA:"
 
-#: src/readelf.c:7131
+#: src/readelf.c:7474
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7138
+#: src/readelf.c:7481
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:7175
+#: src/readelf.c:7518
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "Puntero   %-26sLSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:7260
+#: src/readelf.c:7603
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "No se puede obtener código de atributo: %s"
 
-#: src/readelf.c:7270
+#: src/readelf.c:7613
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "No se puede obtener forma de atributo: %s"
 
-#: src/readelf.c:7292
+#: src/readelf.c:7635
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "No se puede obtener valor: %s"
 
-#: src/readelf.c:7622
+#: src/readelf.c:7965
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "Archivo inválido"
 
-#: src/readelf.c:7626
+#: src/readelf.c:7969
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:7630
+#: src/readelf.c:7973
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "no se puede leer encabezamiento ELF: %s"
 
-#: src/readelf.c:7952
+#: src/readelf.c:8295
 #, c-format
 msgid ""
 "\n"
@@ -5700,12 +5699,12 @@
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:8002
+#: src/readelf.c:8345
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "No se puede obtener próximo DIE: %s"
 
-#: src/readelf.c:8022
+#: src/readelf.c:8365
 #, fuzzy, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5718,7 +5717,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:8034
+#: src/readelf.c:8377
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5729,39 +5728,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:8044 src/readelf.c:8205
+#: src/readelf.c:8387 src/readelf.c:8548
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:8071
+#: src/readelf.c:8414
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:8100
+#: src/readelf.c:8443
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "no se puede obtener DIE en compensación: %s"
 
-#: src/readelf.c:8109
+#: src/readelf.c:8452
 #, 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:8145
+#: src/readelf.c:8488
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "No se puede obtener próximo DIE: %s\n"
 
-#: src/readelf.c:8153
+#: src/readelf.c:8496
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "No se puede obtener próximo DIE: %s"
 
-#: src/readelf.c:8197
+#: src/readelf.c:8540
 #, fuzzy, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5772,7 +5771,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:8249
+#: src/readelf.c:8592
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5782,13 +5781,13 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64>:\n"
 
-#: src/readelf.c:8581
+#: src/readelf.c:8924
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "Forma %<PRIx64> desconocida"
 
 #. Print what we got so far.
-#: src/readelf.c:8729
+#: src/readelf.c:9072
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5819,34 +5818,34 @@
 "\n"
 "Códigos operativos:\n"
 
-#: src/readelf.c:8751
+#: src/readelf.c:9094
 #, 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:8759
+#: src/readelf.c:9102
 #, fuzzy, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "no hay valor de dirección"
 
-#: src/readelf.c:8767
+#: src/readelf.c:9110
 #, fuzzy, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/readelf.c:8777
+#: src/readelf.c:9120
 #, 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:8792
+#: src/readelf.c:9135
 #, 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:8803
+#: src/readelf.c:9146
 msgid ""
 "\n"
 "Directory table:"
@@ -5854,12 +5853,12 @@
 "\n"
 "Tabla de Directorio:"
 
-#: src/readelf.c:8809 src/readelf.c:8886
+#: src/readelf.c:9152 src/readelf.c:9229
 #, fuzzy, c-format
 msgid "      ["
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:8880
+#: src/readelf.c:9223
 #, fuzzy
 msgid ""
 "\n"
@@ -5868,7 +5867,7 @@
 "\n"
 " Tabla de sitio de llamada:"
 
-#: src/readelf.c:8941
+#: src/readelf.c:9284
 #, fuzzy
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
@@ -5876,7 +5875,7 @@
 "Tabla de nombre de archivo:\n"
 " Directorio de entrada   Tiempo      Tamaño      Nombre"
 
-#: src/readelf.c:8987
+#: src/readelf.c:9330
 #, fuzzy
 msgid ""
 "\n"
@@ -5885,7 +5884,7 @@
 "\n"
 " Declaraciones de número de Línea:"
 
-#: src/readelf.c:8991
+#: src/readelf.c:9334
 msgid ""
 "\n"
 "Line number statements:"
@@ -5893,132 +5892,132 @@
 "\n"
 " Declaraciones de número de Línea:"
 
-#: src/readelf.c:9006
+#: src/readelf.c:9349
 #, 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:9040
+#: src/readelf.c:9383
 #, 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:9044
+#: src/readelf.c:9387
 #, 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:9047
+#: src/readelf.c:9390
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:9065
+#: src/readelf.c:9408
 #, c-format
 msgid " extended opcode %u: "
 msgstr "  Código operativo extendido %u: "
 
-#: src/readelf.c:9070
+#: src/readelf.c:9413
 #, fuzzy
 msgid " end of sequence"
 msgstr "Fin de secuencia"
 
-#: src/readelf.c:9088
+#: src/readelf.c:9431
 #, fuzzy, c-format
 msgid " set address to "
 msgstr "Establecer dirección a %s\n"
 
-#: src/readelf.c:9116
+#: src/readelf.c:9459
 #, 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:9130
+#: src/readelf.c:9473
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " establecer discriminador a %u\n"
 
-#: src/readelf.c:9157
+#: src/readelf.c:9500
 #, c-format
 msgid " set inlined context %u, function name %s (0x%x)\n"
 msgstr ""
 
-#: src/readelf.c:9181
+#: src/readelf.c:9524
 #, fuzzy, c-format
 #| msgid "Also show function names"
 msgid " set function name %s (0x%x)\n"
 msgstr "También mostrar nombres de función"
 
 #. Unknown, ignore it.
-#: src/readelf.c:9188
+#: src/readelf.c:9531
 #, fuzzy
 msgid " unknown opcode"
 msgstr "código operativo desconocido "
 
 #. Takes no argument.
-#: src/readelf.c:9200
+#: src/readelf.c:9543
 msgid " copy"
 msgstr "Copiar"
 
-#: src/readelf.c:9211
+#: src/readelf.c:9554
 #, fuzzy, c-format
 msgid " advance address by %u to "
 msgstr "Dirección de avance por %u a %s\n"
 
-#: src/readelf.c:9215 src/readelf.c:9276
+#: src/readelf.c:9558 src/readelf.c:9619
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:9227
+#: src/readelf.c:9570
 #, 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:9237
+#: src/readelf.c:9580
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " establecer archivo a %<PRIu64>\n"
 
-#: src/readelf.c:9248
+#: src/readelf.c:9591
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr "  Establecer columna a %<PRIu64>\n"
 
-#: src/readelf.c:9255
+#: src/readelf.c:9598
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr "Establecer '%s' a %<PRIuFAST8>\n"
 
 #. Takes no argument.
-#: src/readelf.c:9261
+#: src/readelf.c:9604
 msgid " set basic block flag"
 msgstr "Establecer bandera de bloque básico"
 
-#: src/readelf.c:9272
+#: src/readelf.c:9615
 #, fuzzy, c-format
 msgid " advance address by constant %u to "
 msgstr "Dirección de avance por constante %u a %s\n"
 
-#: src/readelf.c:9292
+#: src/readelf.c:9635
 #, 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:9302
+#: src/readelf.c:9645
 msgid " set prologue end flag"
 msgstr " Establecer bandera prologue_end"
 
 #. Takes no argument.
-#: src/readelf.c:9307
+#: src/readelf.c:9650
 msgid " set epilogue begin flag"
 msgstr " Establecer bandera epilogue_begin"
 
-#: src/readelf.c:9317
+#: src/readelf.c:9660
 #, c-format
 msgid " set isa to %u\n"
 msgstr " establecer isa para %u\n"
@@ -6026,95 +6025,95 @@
 #. 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:9326
+#: src/readelf.c:9669
 #, 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:9527
+#: src/readelf.c:9870
 #, fuzzy, c-format
 msgid "    <INVALID DATA>\n"
 msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:9567
+#: src/readelf.c:9910
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "datos inválidos"
 
-#: src/readelf.c:10037 src/readelf.c:11082
+#: src/readelf.c:10380 src/readelf.c:11425
 msgid "   <INVALID DATA>\n"
 msgstr "   <DATOS INVÁLIDOS>\n"
 
-#: src/readelf.c:10168
+#: src/readelf.c:10511
 #, 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:10191
+#: src/readelf.c:10534
 #, 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:10286
+#: src/readelf.c:10629
 #, fuzzy, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr "  Propietario          Tamaño\n"
 
-#: src/readelf.c:10298
+#: src/readelf.c:10641
 #, fuzzy, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10304 src/readelf.c:11202
+#: src/readelf.c:10647 src/readelf.c:11546
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr ""
 
-#: src/readelf.c:10311
+#: src/readelf.c:10654
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr "  Dirección de punto de entrada:               %#<PRIx64>\n"
 
-#: src/readelf.c:10340
+#: src/readelf.c:10683
 #, fuzzy, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10348
+#: src/readelf.c:10691
 #, fuzzy, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10373
+#: src/readelf.c:10716
 #, fuzzy, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr " opcódigo con parámetro %<PRIu8> desconocido:"
 
-#: src/readelf.c:10380
+#: src/readelf.c:10723
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr ""
 
-#: src/readelf.c:10392
+#: src/readelf.c:10735
 #, fuzzy, c-format
 msgid " %<PRIu8> arguments:"
 msgstr "  [%*<PRIuFAST8>]  argumento %hhu \n"
 
-#: src/readelf.c:10407
+#: src/readelf.c:10750
 #, c-format
 msgid " no arguments."
 msgstr ""
 
-#: src/readelf.c:10608
+#: src/readelf.c:10951
 #, 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:10663
+#: src/readelf.c:11006
 #, c-format
 msgid ""
 "\n"
@@ -6126,37 +6125,37 @@
 " %*s  String\n"
 
 #. TRANS: the debugstr| prefix makes the string unique.
-#: src/readelf.c:10668
+#: src/readelf.c:11011
 msgctxt "debugstr"
 msgid "Offset"
 msgstr ""
 
-#: src/readelf.c:10678
+#: src/readelf.c:11021
 #, fuzzy, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** error en lectura de cadenas: %s\n"
 
-#: src/readelf.c:10800
+#: src/readelf.c:11143
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10802
+#: src/readelf.c:11145
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10816
+#: src/readelf.c:11159
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10825
+#: src/readelf.c:11168
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:10879
+#: src/readelf.c:11222
 #, c-format
 msgid ""
 "\n"
@@ -6165,7 +6164,7 @@
 "\n"
 "Sección de tabla de búsqueda de marco de llamada [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:10981
+#: src/readelf.c:11324
 #, c-format
 msgid ""
 "\n"
@@ -6174,22 +6173,22 @@
 "\n"
 "Excepción en el manejo de la sección de tabla [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:11004
+#: src/readelf.c:11347
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr "Codificación LPStart:    %#x "
 
-#: src/readelf.c:11016
+#: src/readelf.c:11359
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr "Codificación TType:      %#x "
 
-#: src/readelf.c:11033
+#: src/readelf.c:11376
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr "Codificación de sitio de llamada:  %#x "
 
-#: src/readelf.c:11048
+#: src/readelf.c:11391
 msgid ""
 "\n"
 " Call site table:"
@@ -6197,7 +6196,7 @@
 "\n"
 " Tabla de sitio de llamada:"
 
-#: src/readelf.c:11064
+#: src/readelf.c:11407
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -6210,12 +6209,12 @@
 "        Landing pad:       %#<PRIx64>\n"
 "        Action:            %u\n"
 
-#: src/readelf.c:11137
+#: src/readelf.c:11480
 #, c-format
 msgid "invalid TType encoding"
 msgstr "Codificación TType inválida"
 
-#: src/readelf.c:11164
+#: src/readelf.c:11507
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6224,37 +6223,42 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:11193
+#: src/readelf.c:11536
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:11211
+#: src/readelf.c:11555
 #, fuzzy, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:11218
+#: src/readelf.c:11562
 #, fuzzy, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:11225
+#: src/readelf.c:11569
 #, fuzzy, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:11232
+#: src/readelf.c:11576
 #, fuzzy, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " (compensación: %#<PRIx64>)"
 
-#: src/readelf.c:11239
+#: src/readelf.c:11586
+#, fuzzy, c-format
+msgid " shortcut offset: %#<PRIx32>\n"
+msgstr " (fin de compensación: %#<PRIx64>)"
+
+#: src/readelf.c:11594
 #, fuzzy, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " (fin de compensación: %#<PRIx64>)"
 
-#: src/readelf.c:11253
+#: src/readelf.c:11608
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6263,7 +6267,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:11278
+#: src/readelf.c:11633
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6272,7 +6276,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:11307
+#: src/readelf.c:11662
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6281,7 +6285,7 @@
 "\n"
 "Sección DWARF [%2zu] '%s' en compensación %#<PRIx64> contiene entrada %zu:\n"
 
-#: src/readelf.c:11339
+#: src/readelf.c:11705
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6290,18 +6294,37 @@
 "\n"
 "Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
 
-#: src/readelf.c:11477
+#: src/readelf.c:11790
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Shortcut table at offset %#<PRIx32> contains %zu slots:\n"
+msgstr ""
+"\n"
+"Tabla de símbolos inválida en compensación %#0<PRIx64>\n"
+
+#: src/readelf.c:11802
+#, c-format
+msgid "Language of main: %s\n"
+msgstr ""
+
+#: src/readelf.c:11803
+#, c-format
+msgid "Name of main: "
+msgstr ""
+
+#: src/readelf.c:11886
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "no se puede depurar descriptor de contexto: %s"
 
-#: src/readelf.c:11843 src/readelf.c:12463 src/readelf.c:12573
-#: src/readelf.c:12630
+#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982
+#: src/readelf.c:13039
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "no es posible convertir datos de la nota principal: %s"
 
-#: src/readelf.c:12207
+#: src/readelf.c:12616
 #, c-format
 msgid ""
 "\n"
@@ -6310,21 +6333,21 @@
 "\n"
 "%*s... <repeats %u more times> ..."
 
-#: src/readelf.c:12709
+#: src/readelf.c:13118
 msgid "  Owner          Data size  Type\n"
 msgstr "  Owner          Data size  Type\n"
 
-#: src/readelf.c:12737
+#: src/readelf.c:13146
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12789
+#: src/readelf.c:13198
 #, 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:12822
+#: src/readelf.c:13231
 #, c-format
 msgid ""
 "\n"
@@ -6333,7 +6356,7 @@
 "\n"
 "Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:12845
+#: src/readelf.c:13254
 #, c-format
 msgid ""
 "\n"
@@ -6342,7 +6365,7 @@
 "\n"
 "Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:12892
+#: src/readelf.c:13301
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6351,12 +6374,12 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:12919 src/readelf.c:12970
+#: src/readelf.c:13328 src/readelf.c:13379
 #, 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:12924
+#: src/readelf.c:13333
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6366,7 +6389,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12929
+#: src/readelf.c:13338
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6377,7 +6400,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12943
+#: src/readelf.c:13352
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6386,7 +6409,7 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:12975
+#: src/readelf.c:13384
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6396,7 +6419,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12980
+#: src/readelf.c:13389
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6407,7 +6430,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:13028
+#: src/readelf.c:13437
 #, c-format
 msgid ""
 "\n"
@@ -6416,7 +6439,7 @@
 "\n"
 "sección [%lu] no existe"
 
-#: src/readelf.c:13058
+#: src/readelf.c:13467
 #, c-format
 msgid ""
 "\n"
@@ -6425,12 +6448,12 @@
 "\n"
 "sección '%s' no existe"
 
-#: src/readelf.c:13113
+#: src/readelf.c:13522
 #, 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:13116
+#: src/readelf.c:13525
 #, c-format
 msgid ""
 "\n"
@@ -6439,7 +6462,7 @@
 "\n"
 "Archivo '%s' no tiene índice de símbolo\n"
 
-#: src/readelf.c:13120
+#: src/readelf.c:13529
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6448,12 +6471,12 @@
 "\n"
 "Índice de archivo '%s' tiene %Zu entradas:\n"
 
-#: src/readelf.c:13138
+#: src/readelf.c:13547
 #, 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:13143
+#: src/readelf.c:13552
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Miembro de archivo contiene '%s':\n"
@@ -6938,7 +6961,7 @@
 msgid "%s: error while getting shdrstrndx: %s"
 msgstr "%s: error al crear encabezamiento ELF: %s"
 
-#: src/strip.c:1712 src/strip.c:2553
+#: src/strip.c:1712 src/strip.c:2552
 #, fuzzy, c-format
 msgid "%s: error updating shdrstrndx: %s"
 msgstr "%s: error al crear encabezamiento ELF: %s"
@@ -6973,7 +6996,7 @@
 msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
 msgstr ""
 
-#: src/strip.c:2469 src/strip.c:2577
+#: src/strip.c:2469 src/strip.c:2574
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "al escribir '%s': %s"
@@ -6993,22 +7016,22 @@
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: error al crear encabezamiento ELF: %s"
 
-#: src/strip.c:2562
+#: src/strip.c:2560
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: error al leer el fichero: %s"
 
-#: src/strip.c:2602 src/strip.c:2622
+#: src/strip.c:2599 src/strip.c:2619
 #, c-format
 msgid "while writing '%s'"
 msgstr "al escribir '%s'"
 
-#: src/strip.c:2659 src/strip.c:2666
+#: src/strip.c:2656 src/strip.c:2663
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "Error al terminar '%s': %s"
 
-#: src/strip.c:2683 src/strip.c:2759
+#: src/strip.c:2680 src/strip.c:2756
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "no es posible establecer acceso y fecha de modificación de '%s'"
@@ -7494,7 +7517,7 @@
 "section PATH SECTION-NAME\n"
 msgstr ""
 
-#: tests/backtrace.c:483
+#: tests/backtrace.c:491
 msgid "Run executable"
 msgstr ""
 
@@ -7507,6 +7530,12 @@
 msgid "Show instances of inlined functions"
 msgstr ""
 
+#, c-format
+#~ msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
+#~ msgstr ""
+#~ "Sección [%2d] '%s': tamaño de entrada de sección no coincide con "
+#~ "ElfXX_Rela\n"
+
 #, fuzzy, c-format
 #~ msgid "cannot get .debug_addr section data: %s"
 #~ msgstr "no se pueden obtener datos de sección: %s"
diff --git a/po/ja.po b/po/ja.po
index 9e4e554..bca8f29 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: elfutils\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2023-03-03 16:09+0100\n"
+"POT-Creation-Date: 2023-11-03 17:36+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"
@@ -42,7 +42,7 @@
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
 
-#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11793
+#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202
 #: src/unstrip.c:311
 #, c-format
 msgid "memory exhausted"
@@ -525,7 +525,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79
 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
+#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<不明>"
 
@@ -619,7 +619,7 @@
 msgid "invalid size of destination operand"
 msgstr "宛先演算子の大きさが無効です"
 
-#: libelf/elf_error.c:86 src/readelf.c:6415
+#: libelf/elf_error.c:86 src/readelf.c:6758
 #, c-format
 msgid "invalid encoding"
 msgstr "無効なエンコードです"
@@ -704,8 +704,8 @@
 msgid "invalid section header"
 msgstr "不当なセクションヘッダーです"
 
-#: libelf/elf_error.c:190 src/readelf.c:10294 src/readelf.c:10899
-#: src/readelf.c:11000 src/readelf.c:11188
+#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242
+#: src/readelf.c:11343 src/readelf.c:11531
 #, c-format
 msgid "invalid data"
 msgstr "不当なデータです"
@@ -1357,8 +1357,8 @@
 msgstr "いくつかのエラー出力を 抑制する ( --verbose の反対)"
 
 #. Strings for arguments in help texts.
-#: src/elfclassify.c:979 src/elfcompress.c:1433 src/elflint.c:76
-#: src/readelf.c:160
+#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77
+#: src/readelf.c:161
 msgid "FILE..."
 msgstr ""
 
@@ -1646,21 +1646,21 @@
 msgstr "不明な圧縮タイプ '%s'"
 
 #. We need at least one input file.
-#: src/elfcompress.c:162 src/elfcompress.c:1444
+#: src/elfcompress.c:162 src/elfcompress.c:1447
 #, c-format
 msgid "No input file given"
 msgstr "入力ファイルが与えられていません"
 
-#: src/elfcompress.c:168 src/elfcompress.c:1448
+#: src/elfcompress.c:168 src/elfcompress.c:1451
 #, c-format
 msgid "Only one input file allowed together with '-o'"
 msgstr "'-o' と一緒の場合は入力ファイルは 1 つしか認められません"
 
-#: src/elfcompress.c:1405
+#: src/elfcompress.c:1408
 msgid "Place (de)compressed output into FILE"
 msgstr "圧縮(展開)した出力を FILE に置く"
 
-#: src/elfcompress.c:1408
+#: src/elfcompress.c:1411
 msgid ""
 "What type of compression to apply. TYPE can be 'none' (decompress), "
 "'zlib' (ELF ZLIB compression, the default, 'zlib-gabi' is an alias), 'zlib-"
@@ -1668,7 +1668,7 @@
 "compression)"
 msgstr ""
 
-#: src/elfcompress.c:1412
+#: src/elfcompress.c:1415
 msgid ""
 "SECTION name to (de)compress, SECTION is an extended wildcard pattern "
 "(defaults to '.?(z)debug*')"
@@ -1676,41 +1676,41 @@
 "圧縮(展開)する セクション名。 SECTION は 拡張 ワイルドカード パターン(デ"
 "フォルトで  '.?(z)debug*')"
 
-#: src/elfcompress.c:1415
+#: src/elfcompress.c:1418
 msgid "Print a message for each section being (de)compressed"
 msgstr "圧縮(展開) されている 各セクション に対する メッセージを 表示"
 
-#: src/elfcompress.c:1418
+#: src/elfcompress.c:1421
 msgid ""
 "Force compression of section even if it would become larger or update/"
 "rewrite the file even if no section would be (de)compressed"
 msgstr ""
 
-#: src/elfcompress.c:1421 src/strip.c:92
+#: src/elfcompress.c:1424 src/strip.c:92
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "少し壊れた ELF ファイルを取り扱うためにルールを少し緩和する"
 
-#: src/elfcompress.c:1424
+#: src/elfcompress.c:1427
 msgid "Be silent when a section cannot be compressed"
 msgstr "セクションを圧縮できないときに静かにする"
 
-#: src/elfcompress.c:1434
+#: src/elfcompress.c:1437
 msgid "Compress or decompress sections in an ELF file."
 msgstr "ELF ファイルの セクションを 圧縮 または 展開する"
 
-#: src/elflint.c:62
+#: src/elflint.c:63
 msgid "Be extremely strict, flag level 2 features."
 msgstr "非常に厳格にする。 フラグレベル 2 機能。"
 
-#: src/elflint.c:63
+#: src/elflint.c:64
 msgid "Do not print anything if successful"
 msgstr "成功した場合は何も表示しない"
 
-#: src/elflint.c:64
+#: src/elflint.c:65
 msgid "Binary is a separate debuginfo file"
 msgstr "バイナリーは別の debuginfo ファイルです"
 
-#: src/elflint.c:66
+#: src/elflint.c:67
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1719,171 +1719,171 @@
 "る"
 
 #. Short description of program.
-#: src/elflint.c:72
+#: src/elflint.c:73
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr "ELF ファイルが gABI/psABI 仕様へ準拠しているかの厳密なチェック。"
 
-#: src/elflint.c:153 src/readelf.c:391
+#: src/elflint.c:154 src/readelf.c:413
 #, c-format
 msgid "cannot open input file '%s'"
 msgstr "入力ファイル '%s' を開けません"
 
-#: src/elflint.c:160
+#: src/elflint.c:161
 #, c-format
 msgid "cannot generate Elf descriptor for '%s': %s\n"
 msgstr "'%s' に対する Elf 記述子を生成できません: %s\n"
 
-#: src/elflint.c:179
+#: src/elflint.c:180
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "Elf 記述子を閉じている時にエラー: %s\n"
 
-#: src/elflint.c:183
+#: src/elflint.c:184
 msgid "No errors"
 msgstr "エラーはありません"
 
-#: src/elflint.c:218 src/readelf.c:603
+#: src/elflint.c:219 src/readelf.c:625
 msgid "Missing file name.\n"
 msgstr "ファイル名がありません。\n"
 
-#: src/elflint.c:283
+#: src/elflint.c:284
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr "sub-ELF 記述子を解放している時にエラー: %s\n"
 
 #. We cannot do anything.
-#: src/elflint.c:291
+#: src/elflint.c:292
 #, c-format
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "ELF ファイルではありません - 最初に誤ったマジックバイトがあります\n"
 
-#: src/elflint.c:357
+#: src/elflint.c:358
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr "e_ident[%d] == %d は既知のクラスではありません\n"
 
-#: src/elflint.c:362
+#: src/elflint.c:363
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr "e_ident[%d] == %d は既知のデータエンコードではありません\n"
 
-#: src/elflint.c:366
+#: src/elflint.c:367
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr "不明な ELF ヘッダーバージョン数 e_ident[%d] == %d\n"
 
-#: src/elflint.c:374
+#: src/elflint.c:375
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr "不明な OS ABI e_ident[%d] == '%s'\n"
 
-#: src/elflint.c:380
+#: src/elflint.c:381
 #, c-format
 msgid "unsupported ABI version e_ident[%d] == %d\n"
 msgstr "不明な ABI バージョン e_ident[%d] == %d\n"
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] がゼロではありません\n"
 
-#: src/elflint.c:390
+#: src/elflint.c:391
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "不明なオブジェクトファイルタイプ %d\n"
 
-#: src/elflint.c:397
+#: src/elflint.c:398
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "不明なマシンタイプ %d\n"
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file version\n"
 msgstr "不明なオブジェクトファイルバージョン\n"
 
-#: src/elflint.c:407
+#: src/elflint.c:408
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "不当なプログラムヘッダーオフセット\n"
 
-#: src/elflint.c:409
+#: src/elflint.c:410
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 "実行ファイルと DSO はプログラムヘッダーオフセットが 0 であってはいけません\n"
 
-#: src/elflint.c:413
+#: src/elflint.c:414
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr "プログラムヘッダー項目数として不当な数\n"
 
-#: src/elflint.c:421
+#: src/elflint.c:422
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "不当なセクションヘッダーテーブルオフセット\n"
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "section header table must be present\n"
 msgstr "セクションヘッダーテーブルがなければなりません\n"
 
-#: src/elflint.c:438
+#: src/elflint.c:439
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr "セクションヘッダーテーブル項目数として不当な数\n"
 
-#: src/elflint.c:455
+#: src/elflint.c:456
 #, c-format
 msgid "invalid section header index\n"
 msgstr "不当なセクションヘッダーインデックス\n"
 
-#: src/elflint.c:473
+#: src/elflint.c:474
 #, c-format
 msgid "Can only check %u headers, shnum was %u\n"
 msgstr ""
 
-#: src/elflint.c:487
+#: src/elflint.c:488
 #, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "プログラムヘッダー項目数として不当な数\n"
 
-#: src/elflint.c:504
+#: src/elflint.c:505
 #, c-format
 msgid "Can only check %u headers, phnum was %u\n"
 msgstr ""
 
-#: src/elflint.c:509
+#: src/elflint.c:510
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "不当なマシンフラグ: %s\n"
 
-#: src/elflint.c:516 src/elflint.c:533
+#: src/elflint.c:517 src/elflint.c:534
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr "不当な ELF ヘッダーサイズ: %hd\n"
 
-#: src/elflint.c:519 src/elflint.c:536
+#: src/elflint.c:520 src/elflint.c:537
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr "不当なプログラムヘッダーサイズ: %hd\n"
 
-#: src/elflint.c:522 src/elflint.c:539
+#: src/elflint.c:523 src/elflint.c:540
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr "不当なプログラムヘッダー位置かサイズ\n"
 
-#: src/elflint.c:525 src/elflint.c:542
+#: src/elflint.c:526 src/elflint.c:543
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr "不当なセクションヘッダーサイズ: %hd\n"
 
-#: src/elflint.c:528 src/elflint.c:545
+#: src/elflint.c:529 src/elflint.c:546
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr "不当なセクションヘッダー位置かサイズ\n"
 
-#: src/elflint.c:590
+#: src/elflint.c:591
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1892,7 +1892,7 @@
 "セクション [%2d] '%s': SHF_GROUP フラグのあるセクションにセクショングループの"
 "一部分が設定されていません\n"
 
-#: src/elflint.c:594
+#: src/elflint.c:595
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1900,14 +1900,14 @@
 "セクション [%2d] '%s': セクショングループ [%2zu] '%s' がグループメンバーより"
 "前にありません\n"
 
-#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
-#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
-#: src/elflint.c:3254 src/elflint.c:3456 src/elflint.c:4468
+#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610
+#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981
+#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:623 src/elflint.c:1662
+#: src/elflint.c:624 src/elflint.c:1699
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1916,7 +1916,7 @@
 "セクション [%2d] '%s': セクション [%2d] '%s' 用の文字列テーブルとして参照され"
 "ていますが、タイプが SHT_STRTAB ではありません\n"
 
-#: src/elflint.c:646
+#: src/elflint.c:647
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1925,45 +1925,45 @@
 "セクション [%2d] '%s': シンボルテーブルは 1 個を越える拡張インデックスセク"
 "ションを持てません\n"
 
-#: src/elflint.c:658
+#: src/elflint.c:659
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr "セクション [%2u] '%s': 項目サイズが ElfXX_Sym と一致しません\n"
 
-#: src/elflint.c:662
+#: src/elflint.c:663
 #, c-format
 msgid ""
 "section [%2u] '%s': number of local entries in 'st_info' larger than table "
 "size\n"
 msgstr ""
 
-#: src/elflint.c:671
+#: src/elflint.c:672
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr "セクション [%2d] '%s': シンボル %d を得られません: %s\n"
 
-#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
-#: src/elflint.c:688 src/elflint.c:691
+#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686
+#: src/elflint.c:689 src/elflint.c:692
 #, c-format
 msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
 msgstr "セクション [%2d] '%s': 0番目の項目にある '%s' ゼロではありません\n"
 
-#: src/elflint.c:694
+#: src/elflint.c:695
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr "セクション [%2d] '%s': 0番目の項目用の XINDEX がゼロではありません\n"
 
-#: src/elflint.c:704
+#: src/elflint.c:705
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr "セクション [%2d] '%s': シンボル %zu を得られません: %s\n"
 
-#: src/elflint.c:713
+#: src/elflint.c:714
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不当な名前の値\n"
 
-#: src/elflint.c:728
+#: src/elflint.c:729
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
@@ -1972,7 +1972,7 @@
 "セクション [%2d] '%s': シンボル %zu: 大きすぎるセクションインデックスだが、拡"
 "張セクションインデックスセクションがありません\n"
 
-#: src/elflint.c:734
+#: src/elflint.c:735
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
@@ -1982,29 +1982,29 @@
 "クス用に使われる XINDEX\n"
 
 #. || sym->st_shndx > SHN_HIRESERVE  always false
-#: src/elflint.c:746
+#: src/elflint.c:747
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不当なセクションインデックス\n"
 
-#: src/elflint.c:754
+#: src/elflint.c:755
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不明なタイプ\n"
 
-#: src/elflint.c:760
+#: src/elflint.c:761
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 不明なシンボルバインディング\n"
 
-#: src/elflint.c:765
+#: src/elflint.c:766
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
 msgstr ""
 "セクション [%2d] '%s': シンボル %zu: オブジェクトタイプと異なる固有のシンボ"
 "ル\n"
 
-#: src/elflint.c:773
+#: src/elflint.c:774
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
@@ -2013,7 +2013,7 @@
 "セクション [%2d] '%s': シンボル %zu: COMMON はリロケータブルファイル内のみで"
 "許されます\n"
 
-#: src/elflint.c:777
+#: src/elflint.c:778
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
@@ -2021,7 +2021,7 @@
 "セクション [%2d] '%s': シンボル %zu: ローカルな COMMON シンボルは意味がありま"
 "せん\n"
 
-#: src/elflint.c:781
+#: src/elflint.c:782
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
@@ -2029,12 +2029,12 @@
 "セクション [%2d] '%s': シンボル %zu: COMMON セクションの機能は意味がありませ"
 "ん\n"
 
-#: src/elflint.c:832
+#: src/elflint.c:833
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: st_value 境界外\n"
 
-#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
@@ -2043,7 +2043,7 @@
 "セクション [%2d] '%s': シンボル %zu は参照されるセクション [%2d] '%s' とは完"
 "全に一致しません\n"
 
-#: src/elflint.c:847
+#: src/elflint.c:848
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
@@ -2052,7 +2052,7 @@
 "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' は "
 "SHF_TLS フラグが設定されていません\n"
 
-#: src/elflint.c:857 src/elflint.c:905
+#: src/elflint.c:858 src/elflint.c:906
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
@@ -2061,7 +2061,7 @@
 "セクション [%2d] '%s': シンボル %zu: st_value 参照されるセクション [%2d] "
 "'%s' の境界外\n"
 
-#: src/elflint.c:884
+#: src/elflint.c:885
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
@@ -2070,7 +2070,7 @@
 "セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目がない TLS シ"
 "ンボル\n"
 
-#: src/elflint.c:890
+#: src/elflint.c:891
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
@@ -2079,7 +2079,7 @@
 "セクション [%2d] '%s': シンボル %zu: TLS プログラムヘッダー項目がない TLS シ"
 "ンボル\n"
 
-#: src/elflint.c:898
+#: src/elflint.c:899
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
@@ -2088,7 +2088,7 @@
 "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' の"
 "st_value 不足\n"
 
-#: src/elflint.c:925
+#: src/elflint.c:926
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
@@ -2097,7 +2097,7 @@
 "セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外のローカルシン"
 "ボル\n"
 
-#: src/elflint.c:932
+#: src/elflint.c:933
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
@@ -2106,12 +2106,12 @@
 "セクション [%2d] '%s': シンボル %zu: sh_info に記述された範囲外の非ローカルシ"
 "ンボル\n"
 
-#: src/elflint.c:939
+#: src/elflint.c:940
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
 msgstr "セクション [%2d] '%s': シンボル %zu: 非ローカルセクションシンボル\n"
 
-#: src/elflint.c:989
+#: src/elflint.c:990
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -2120,7 +2120,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルが間違ったセクション "
 "[%2d] を参照しています\n"
 
-#: src/elflint.c:996
+#: src/elflint.c:997
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -2132,7 +2132,7 @@
 #. This test is more strict than the psABIs which
 #. usually allow the symbol to be in the middle of
 #. the .got section, allowing negative offsets.
-#: src/elflint.c:1012
+#: src/elflint.c:1013
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -2141,7 +2141,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボル値 %#<PRIx64> は %s のセ"
 "クションアドレス %#<PRIx64> と一致しません\n"
 
-#: src/elflint.c:1019
+#: src/elflint.c:1020
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -2150,7 +2150,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルサイズ %<PRIu64> は %s "
 "のセクションサイズ %<PRIu64> と一致しません\n"
 
-#: src/elflint.c:1027
+#: src/elflint.c:1028
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -2159,7 +2159,7 @@
 "セクション [%2d] '%s': _GLOBAL_OFFSET_TABLE_ シンボルはありますが、.got セク"
 "ションがありません\n"
 
-#: src/elflint.c:1043
+#: src/elflint.c:1044
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -2168,7 +2168,7 @@
 "セクション [%2d] '%s': _DYNAMIC_ シンボル値 %#<PRIx64> は動的セグメントアドレ"
 "ス %#<PRIx64> と一致しません\n"
 
-#: src/elflint.c:1050
+#: src/elflint.c:1051
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -2177,7 +2177,7 @@
 "セクション [%2d] '%s': _DYNAMIC シンボルサイズ %<PRIu64> は動的セグメントサイ"
 "ズ %<PRIu64> と一致しません\n"
 
-#: src/elflint.c:1063
+#: src/elflint.c:1064
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
@@ -2186,29 +2186,29 @@
 "セクション [%2d] '%s': シンボル %zu: 省略以外の可視性を持った動的シンボルテー"
 "ブル中のシンボル\n"
 
-#: src/elflint.c:1067
+#: src/elflint.c:1068
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
 msgstr ""
 "セクション [%2d] '%s': シンボル %zu: st_other 中に設定された不明なビット\n"
 
-#: src/elflint.c:1105
+#: src/elflint.c:1106
 #, fuzzy, c-format
 msgid "section [%2d] '%s': cannot get section data.\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:1121
+#: src/elflint.c:1122
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr "セクション [%2d] '%s': この RELA セクション用に使われる DT_RELCOUNT\n"
 
-#: src/elflint.c:1132 src/elflint.c:1185
+#: src/elflint.c:1133 src/elflint.c:1186
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
 msgstr ""
 "セクション [%2d] '%s': このセクション用には高すぎる DT_RELCOUNT 値 %d\n"
 
-#: src/elflint.c:1157 src/elflint.c:1210
+#: src/elflint.c:1158 src/elflint.c:1211
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -2217,7 +2217,7 @@
 "セクション [%2d] '%s': UT_RELOCOUNT で指定されたインデックス %d 後の相対リロ"
 "ケーション\n"
 
-#: src/elflint.c:1163 src/elflint.c:1216
+#: src/elflint.c:1164 src/elflint.c:1217
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -2226,52 +2226,46 @@
 "セクション [%2d] '%s': インデックス %zu での非相対リロケーション;  %d 相対リ"
 "ロケーションで指定された DT_RELCOUNT\n"
 
-#: src/elflint.c:1175
+#: src/elflint.c:1176
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr "セクション [%2d] '%s': この REL セクション用に使われる DT_RELACOUNT\n"
 
-#: src/elflint.c:1258
+#: src/elflint.c:1259
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n"
 
-#: src/elflint.c:1270
+#: src/elflint.c:1271
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションタイプ\n"
 
-#: src/elflint.c:1278
+#: src/elflint.c:1279
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr "セクション [%2d] '%s': sh_info はゼロでなければなりません\n"
 
-#: src/elflint.c:1286
+#: src/elflint.c:1287
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': no relocations for merge-able string sections possible\n"
 msgstr ""
 "セクション [%2d] '%s': マージできるセクションのリロケーションは不可能です\n"
 
-#: src/elflint.c:1294
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-"セクション [%2d] '%s': セクション項目サイズが ElfXX_Rela と一致しません\n"
-
-#: src/elflint.c:1354
+#: src/elflint.c:1365
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 "テキストリロケーションフラグが設定されていますが、読込み専用セグメントがあり"
 "ません\n"
 
-#: src/elflint.c:1381
+#: src/elflint.c:1392
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr "セクション [%2d] '%s': リロケーション %zu: 不当なタイプ\n"
 
-#: src/elflint.c:1389
+#: src/elflint.c:1400
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2280,13 +2274,13 @@
 "セクション [%2d] '%s': リロケーション %zu: このファイル用のリロケーションタイ"
 "プは不当です\n"
 
-#: src/elflint.c:1397
+#: src/elflint.c:1408
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr ""
 "セクション [%2d] '%s': リロケーション %zu: 不当なシンボルインデックス\n"
 
-#: src/elflint.c:1415
+#: src/elflint.c:1426
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2295,12 +2289,12 @@
 "セクション [%2d] '%s': リロケーション %zu: シンボル '_GLOBAL_OFFSET_TABLE_' "
 "のみが %s と一緒に使用できます\n"
 
-#: src/elflint.c:1432
+#: src/elflint.c:1443
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n"
 
-#: src/elflint.c:1447
+#: src/elflint.c:1458
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2309,7 +2303,7 @@
 "セクション [%2d] '%s': リロケーション %zu: タイプ %s のシンボルに対するコピー"
 "リロケーション\n"
 
-#: src/elflint.c:1468
+#: src/elflint.c:1479
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2318,24 +2312,24 @@
 "セクション [%2d] '%s': リロケーション %zu: 読込み専用セクションが変更されまし"
 "たが、テキストリロケーションフラグが設定されていません\n"
 
-#: src/elflint.c:1483
+#: src/elflint.c:1494
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr ""
 "セクション [%2d] '%s': リロケーションがロードされたデータとロードされなかった"
 "データに対してです\n"
 
-#: src/elflint.c:1523 src/elflint.c:1574
+#: src/elflint.c:1534 src/elflint.c:1585
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1650
+#: src/elflint.c:1687
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr ""
 
-#: src/elflint.c:1668
+#: src/elflint.c:1705
 #, fuzzy, c-format
 msgid ""
 "section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2344,427 +2338,427 @@
 "セクション [%2d] '%s': セクション [%2d] '%s' 用の文字列テーブルとして参照され"
 "ていますが、タイプが SHT_STRTAB ではありません\n"
 
-#: src/elflint.c:1676
+#: src/elflint.c:1713
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 
-#: src/elflint.c:1681 src/elflint.c:1970
+#: src/elflint.c:1718 src/elflint.c:2008
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr ""
 
-#: src/elflint.c:1691
+#: src/elflint.c:1728
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:1699
+#: src/elflint.c:1736
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr ""
 
-#: src/elflint.c:1706
+#: src/elflint.c:1743
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr ""
 
-#: src/elflint.c:1717
+#: src/elflint.c:1754
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr ""
 
-#: src/elflint.c:1727
+#: src/elflint.c:1764
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr ""
 
-#: src/elflint.c:1745
+#: src/elflint.c:1782
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
 msgstr ""
 
-#: src/elflint.c:1758
+#: src/elflint.c:1795
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
 "[%2d] '%s' referenced by sh_link\n"
 msgstr ""
 
-#: src/elflint.c:1801
+#: src/elflint.c:1839
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:1816
+#: src/elflint.c:1854
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
 "[%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:1836 src/elflint.c:1864
+#: src/elflint.c:1874 src/elflint.c:1902
 #, c-format
 msgid "section [%2d] '%s': contains %s entry but not %s\n"
 msgstr ""
 
-#: src/elflint.c:1848
+#: src/elflint.c:1886
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr ""
 
-#: src/elflint.c:1857
+#: src/elflint.c:1895
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr ""
 
-#: src/elflint.c:1872 src/elflint.c:1879
+#: src/elflint.c:1910 src/elflint.c:1917
 #, c-format
 msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
 msgstr ""
 
-#: src/elflint.c:1889 src/elflint.c:1893
+#: src/elflint.c:1927 src/elflint.c:1931
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
 msgstr ""
 
-#: src/elflint.c:1899
+#: src/elflint.c:1937
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 
-#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
+#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
 msgstr ""
 
-#: src/elflint.c:1934
+#: src/elflint.c:1972
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
 msgstr ""
 
-#: src/elflint.c:1944
+#: src/elflint.c:1982
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1948
+#: src/elflint.c:1986
 #, fuzzy, c-format
 msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n"
 
-#: src/elflint.c:1953
+#: src/elflint.c:1991
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr ""
 
-#: src/elflint.c:1956
+#: src/elflint.c:1994
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr ""
 
-#: src/elflint.c:1965
+#: src/elflint.c:2003
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1980
+#: src/elflint.c:2018
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
 "same symbol table\n"
 msgstr ""
 
-#: src/elflint.c:1998
+#: src/elflint.c:2036
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr ""
 
-#: src/elflint.c:2010
+#: src/elflint.c:2048
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr ""
 
-#: src/elflint.c:2015
+#: src/elflint.c:2053
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 
-#: src/elflint.c:2032 src/elflint.c:2089
+#: src/elflint.c:2070 src/elflint.c:2127
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
 msgstr ""
 
-#: src/elflint.c:2046 src/elflint.c:2103
+#: src/elflint.c:2084 src/elflint.c:2141
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr ""
 
-#: src/elflint.c:2060 src/elflint.c:2117
+#: src/elflint.c:2098 src/elflint.c:2155
 #, c-format
 msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2070
+#: src/elflint.c:2108
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2127
+#: src/elflint.c:2165
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2140
+#: src/elflint.c:2178
 #, fuzzy, c-format
 msgid "section [%2d] '%s': not enough data\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:2152
+#: src/elflint.c:2190
 #, fuzzy, c-format
 msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
 msgstr "セクション [%2d] '%s': 0番目の項目にある '%s' ゼロではありません\n"
 
-#: src/elflint.c:2168
+#: src/elflint.c:2206
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected at "
 "least %ld)\n"
 msgstr ""
 
-#: src/elflint.c:2177
+#: src/elflint.c:2215
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 
-#: src/elflint.c:2211
+#: src/elflint.c:2249
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
 msgstr ""
 
-#: src/elflint.c:2232
+#: src/elflint.c:2270
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
 "undefined\n"
 msgstr ""
 
-#: src/elflint.c:2245
+#: src/elflint.c:2283
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
 msgstr ""
 
-#: src/elflint.c:2254
+#: src/elflint.c:2292
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:2284
+#: src/elflint.c:2322
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2289
+#: src/elflint.c:2327
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
 msgstr ""
 
-#: src/elflint.c:2295
+#: src/elflint.c:2333
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 
-#: src/elflint.c:2308
+#: src/elflint.c:2346
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 
-#: src/elflint.c:2326
+#: src/elflint.c:2364
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2330
+#: src/elflint.c:2368
 #, fuzzy, c-format
 msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションインデックス\n"
 
-#: src/elflint.c:2340
+#: src/elflint.c:2378
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr ""
 
-#: src/elflint.c:2345
+#: src/elflint.c:2383
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr ""
 
-#: src/elflint.c:2350
+#: src/elflint.c:2388
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
 "entries\n"
 msgstr ""
 
-#: src/elflint.c:2399
+#: src/elflint.c:2437
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 
-#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
+#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' does not contain enough data\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:2444
+#: src/elflint.c:2482
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' has zero bit mask words\n"
 msgstr ""
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
+#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' uses too much data\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:2470
+#: src/elflint.c:2508
 #, c-format
 msgid ""
 "hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
 "%<PRIu32>, nentries: %<PRIu32>\n"
 msgstr ""
 
-#: src/elflint.c:2557
+#: src/elflint.c:2595
 #, fuzzy, c-format
 msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
 msgstr "セクション [%2d] '%s': 不当な宛先セクションタイプ\n"
 
-#: src/elflint.c:2567 src/elflint.c:2571
+#: src/elflint.c:2605 src/elflint.c:2609
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr ""
 
-#: src/elflint.c:2578
+#: src/elflint.c:2616
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
 "table in [%2zu] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2590
+#: src/elflint.c:2628
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
 "table in [%2zu] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2606
+#: src/elflint.c:2644
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr ""
 
-#: src/elflint.c:2626
+#: src/elflint.c:2664
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
 msgstr ""
 
-#: src/elflint.c:2637
+#: src/elflint.c:2675
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr ""
 
-#: src/elflint.c:2642
+#: src/elflint.c:2680
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2648
+#: src/elflint.c:2686
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr ""
 
-#: src/elflint.c:2653
+#: src/elflint.c:2691
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr ""
 
-#: src/elflint.c:2660
+#: src/elflint.c:2698
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr ""
 
-#: src/elflint.c:2664
+#: src/elflint.c:2702
 #, fuzzy, c-format
 msgid "section [%2d] '%s': cannot get symbol name for signature\n"
 msgstr "セクション [%2d] '%s': シンボル %d を得られません: %s\n"
 
-#: src/elflint.c:2669
+#: src/elflint.c:2707
 #, fuzzy, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:2675
+#: src/elflint.c:2713
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr ""
 
-#: src/elflint.c:2681
+#: src/elflint.c:2719
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr ""
 
-#: src/elflint.c:2690
+#: src/elflint.c:2728
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 
-#: src/elflint.c:2696
+#: src/elflint.c:2734
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr ""
 
-#: src/elflint.c:2704
+#: src/elflint.c:2742
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr ""
 
-#: src/elflint.c:2708
+#: src/elflint.c:2746
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr ""
 
-#: src/elflint.c:2719
+#: src/elflint.c:2757
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr ""
 
-#: src/elflint.c:2731
+#: src/elflint.c:2769
 #, fuzzy, c-format
 msgid "section [%2d] '%s': section index %zu out of range\n"
 msgstr "セクション [%2d] '%s': リロケーション %zu: オフセット境界外\n"
 
-#: src/elflint.c:2740
+#: src/elflint.c:2778
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 
-#: src/elflint.c:2747
+#: src/elflint.c:2785
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr ""
 
-#: src/elflint.c:2753
+#: src/elflint.c:2791
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2773,770 +2767,770 @@
 "セクション [%2d] '%s': シンボル %zu: 参照されるセクション [%2d] '%s' は "
 "SHF_TLS フラグが設定されていません\n"
 
-#: src/elflint.c:2760
+#: src/elflint.c:2798
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr ""
 
-#: src/elflint.c:2957
+#: src/elflint.c:2995
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
 "dynamic symbol table\n"
 msgstr ""
 
-#: src/elflint.c:2969
+#: src/elflint.c:3007
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
 "'%s'\n"
 msgstr ""
 
-#: src/elflint.c:2985
+#: src/elflint.c:3023
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr ""
 
-#: src/elflint.c:3001
+#: src/elflint.c:3039
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 
-#: src/elflint.c:3009
+#: src/elflint.c:3047
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr ""
 
-#: src/elflint.c:3023
+#: src/elflint.c:3061
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr ""
 
-#: src/elflint.c:3028
+#: src/elflint.c:3066
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
 msgstr ""
 
-#: src/elflint.c:3038
+#: src/elflint.c:3076
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
 msgstr ""
 
-#: src/elflint.c:3091
+#: src/elflint.c:3129
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr ""
 
-#: src/elflint.c:3099 src/elflint.c:3246
+#: src/elflint.c:3137 src/elflint.c:3284
 #, c-format
 msgid "section [%2d] '%s': sh_link does not link to string table\n"
 msgstr ""
 
-#: src/elflint.c:3124 src/elflint.c:3300
+#: src/elflint.c:3162 src/elflint.c:3338
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong version %d\n"
 msgstr ""
 
-#: src/elflint.c:3131 src/elflint.c:3307
+#: src/elflint.c:3169 src/elflint.c:3345
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3141
+#: src/elflint.c:3179
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr ""
 
-#: src/elflint.c:3149
+#: src/elflint.c:3187
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr ""
 
-#: src/elflint.c:3161
+#: src/elflint.c:3199
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3169
+#: src/elflint.c:3207
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
 "reference\n"
 msgstr ""
 
-#: src/elflint.c:3178
+#: src/elflint.c:3216
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
 "%#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3187
+#: src/elflint.c:3225
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
 "name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3198
+#: src/elflint.c:3236
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
 msgstr ""
 
-#: src/elflint.c:3215 src/elflint.c:3391
+#: src/elflint.c:3253 src/elflint.c:3429
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
 msgstr ""
 
-#: src/elflint.c:3223 src/elflint.c:3399
+#: src/elflint.c:3261 src/elflint.c:3437
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
 "there are more entries\n"
 msgstr ""
 
-#: src/elflint.c:3238
+#: src/elflint.c:3276
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr ""
 
-#: src/elflint.c:3285
+#: src/elflint.c:3323
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3289
+#: src/elflint.c:3327
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 
-#: src/elflint.c:3295
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr ""
 
-#: src/elflint.c:3322
+#: src/elflint.c:3360
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr ""
 
-#: src/elflint.c:3329
+#: src/elflint.c:3367
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 
-#: src/elflint.c:3337
+#: src/elflint.c:3375
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3357
+#: src/elflint.c:3395
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3374
+#: src/elflint.c:3412
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 
-#: src/elflint.c:3407
+#: src/elflint.c:3445
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr ""
 
-#: src/elflint.c:3423
+#: src/elflint.c:3461
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr ""
 
-#: src/elflint.c:3448
+#: src/elflint.c:3486
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr ""
 
-#: src/elflint.c:3464
+#: src/elflint.c:3502
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr ""
 
-#: src/elflint.c:3475
-#, c-format
-msgid ""
-"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3484
-#, c-format
-msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
-msgstr ""
-
-#: src/elflint.c:3496
-#, c-format
-msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
-msgstr ""
-
 #: src/elflint.c:3513
 #, c-format
 msgid ""
-"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+"section [%2d] '%s': offset %zu: zero length field in attribute section\n"
 msgstr ""
 
 #: src/elflint.c:3522
 #, c-format
+msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
+msgstr ""
+
+#: src/elflint.c:3534
+#, c-format
+msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
+msgstr ""
+
+#: src/elflint.c:3551
+#, c-format
+msgid ""
+"section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
+msgstr ""
+
+#: src/elflint.c:3560
+#, c-format
 msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3531
+#: src/elflint.c:3569
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
 msgstr ""
 
-#: src/elflint.c:3546
+#: src/elflint.c:3584
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
 msgstr ""
 
 #. Tag_File
-#: src/elflint.c:3557
+#: src/elflint.c:3595
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3578
+#: src/elflint.c:3616
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 
-#: src/elflint.c:3589
+#: src/elflint.c:3627
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr ""
 
-#: src/elflint.c:3602
+#: src/elflint.c:3640
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr ""
 
-#: src/elflint.c:3606
+#: src/elflint.c:3644
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:3616
+#: src/elflint.c:3654
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr ""
 
-#: src/elflint.c:3622
+#: src/elflint.c:3660
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
 msgstr ""
 
-#: src/elflint.c:3719
+#: src/elflint.c:3758
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr ""
 
-#: src/elflint.c:3723
+#: src/elflint.c:3762
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr ""
 
-#: src/elflint.c:3725
+#: src/elflint.c:3764
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr ""
 
-#: src/elflint.c:3727
+#: src/elflint.c:3766
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr ""
 
-#: src/elflint.c:3729
+#: src/elflint.c:3768
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr ""
 
-#: src/elflint.c:3731
+#: src/elflint.c:3770
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr ""
 
-#: src/elflint.c:3733
+#: src/elflint.c:3772
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr ""
 
-#: src/elflint.c:3735
+#: src/elflint.c:3774
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr ""
 
-#: src/elflint.c:3738
+#: src/elflint.c:3777
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
 "value\n"
 msgstr ""
 
-#: src/elflint.c:3742
+#: src/elflint.c:3781
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in shstrndx\n"
 msgstr ""
 
-#: src/elflint.c:3746
+#: src/elflint.c:3785
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
 "overflow in phnum\n"
 msgstr ""
 
-#: src/elflint.c:3764
+#: src/elflint.c:3803
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr ""
 
-#: src/elflint.c:3773
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr ""
 
-#: src/elflint.c:3800
+#: src/elflint.c:3839
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3817
+#: src/elflint.c:3856
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3835
+#: src/elflint.c:3874
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
 msgstr ""
 
-#: src/elflint.c:3852
+#: src/elflint.c:3891
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr ""
 
-#: src/elflint.c:3858 src/elflint.c:3890
+#: src/elflint.c:3897 src/elflint.c:3929
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
 msgstr ""
 
-#: src/elflint.c:3863 src/elflint.c:3895
+#: src/elflint.c:3902 src/elflint.c:3934
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
 "segments\n"
 msgstr ""
 
-#: src/elflint.c:3871
+#: src/elflint.c:3910
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
 msgstr ""
 
-#: src/elflint.c:3914
+#: src/elflint.c:3953
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr ""
 
-#: src/elflint.c:3919
+#: src/elflint.c:3958
 #, c-format
 msgid "cannot get section header\n"
 msgstr ""
 
-#: src/elflint.c:3929
+#: src/elflint.c:3968
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3949
+#: src/elflint.c:3988
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3959
+#: src/elflint.c:3998
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3967
+#: src/elflint.c:4006
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3977
+#: src/elflint.c:4016
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:3982
+#: src/elflint.c:4021
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:3988
+#: src/elflint.c:4027
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr ""
 
-#: src/elflint.c:3994
+#: src/elflint.c:4033
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3999
+#: src/elflint.c:4038
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:4006
+#: src/elflint.c:4045
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:4011
+#: src/elflint.c:4050
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:4030
+#: src/elflint.c:4069
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:4039
+#: src/elflint.c:4078
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr ""
 
-#: src/elflint.c:4046
+#: src/elflint.c:4085
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:4077
+#: src/elflint.c:4116
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
 "%d\n"
 msgstr ""
 
-#: src/elflint.c:4087
+#: src/elflint.c:4126
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
 "program header entry %d\n"
 msgstr ""
 
-#: src/elflint.c:4113
+#: src/elflint.c:4152
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
 "program header entry %d and file contents is non-zero\n"
 msgstr ""
 
-#: src/elflint.c:4124
+#: src/elflint.c:4163
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
 "segment of program header entry %d\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4174
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4145
+#: src/elflint.c:4184
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4155
+#: src/elflint.c:4194
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4161
+#: src/elflint.c:4200
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
 "but type is not SHT_TYPE\n"
 msgstr ""
 
-#: src/elflint.c:4169
+#: src/elflint.c:4208
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:4220
+#: src/elflint.c:4263
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:4243
+#: src/elflint.c:4286
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:4254
+#: src/elflint.c:4297
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:4260
+#: src/elflint.c:4303
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:4271
+#: src/elflint.c:4314
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
 "exist\n"
 msgstr ""
 
-#: src/elflint.c:4284
+#: src/elflint.c:4327
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:4298
+#: src/elflint.c:4341
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:4347
+#: src/elflint.c:4390
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:4351
+#: src/elflint.c:4394
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4407
+#: src/elflint.c:4450
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
 "offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4412
+#: src/elflint.c:4455
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
 "'%s' at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4431
+#: src/elflint.c:4474
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4451
+#: src/elflint.c:4494
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4454
+#: src/elflint.c:4497
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4475
+#: src/elflint.c:4518
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4482
+#: src/elflint.c:4525
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4485
+#: src/elflint.c:4528
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4503
+#: src/elflint.c:4546
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4518
+#: src/elflint.c:4561
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4528
+#: src/elflint.c:4571
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4539
+#: src/elflint.c:4582
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4547
+#: src/elflint.c:4590
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4554
+#: src/elflint.c:4597
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4568
+#: src/elflint.c:4611
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4571
+#: src/elflint.c:4614
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4581
+#: src/elflint.c:4624
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4602
+#: src/elflint.c:4645
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4613
+#: src/elflint.c:4656
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4620
+#: src/elflint.c:4663
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4629 src/elflint.c:4652
+#: src/elflint.c:4672 src/elflint.c:4695
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4658
+#: src/elflint.c:4701
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4685
+#: src/elflint.c:4728
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4688
+#: src/elflint.c:4731
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4701
+#: src/elflint.c:4744
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4709
+#: src/elflint.c:4752
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4712
+#: src/elflint.c:4755
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4716
+#: src/elflint.c:4759
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4719
+#: src/elflint.c:4762
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4724
+#: src/elflint.c:4767
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4727
+#: src/elflint.c:4770
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4741
+#: src/elflint.c:4784
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4748
+#: src/elflint.c:4791
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4751
+#: src/elflint.c:4794
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
 "alignment\n"
 msgstr ""
 
-#: src/elflint.c:4764
+#: src/elflint.c:4807
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
 "program header entry"
 msgstr ""
 
-#: src/elflint.c:4798
+#: src/elflint.c:4841
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4810
+#: src/elflint.c:4853
 #, fuzzy, c-format
 msgid "cannot create backend for ELF file\n"
 msgstr "新しいファイルを生成できません"
 
-#: src/elflint.c:4831
+#: src/elflint.c:4874
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
@@ -3752,7 +3746,7 @@
 msgstr "%s: 内部エラー %d (%s-%s): %s"
 
 #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307
-#: src/strip.c:2766
+#: src/strip.c:2763
 #, c-format
 msgid "while closing '%s'"
 msgstr "'%s' を閉じている最中"
@@ -3796,13 +3790,13 @@
 msgid "cannot create search tree"
 msgstr "検索ツリーを生成できません"
 
-#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663
-#: src/readelf.c:1484 src/readelf.c:1633 src/readelf.c:1860 src/readelf.c:2097
-#: src/readelf.c:2286 src/readelf.c:2466 src/readelf.c:2544 src/readelf.c:2809
-#: src/readelf.c:2884 src/readelf.c:2970 src/readelf.c:3565 src/readelf.c:3613
-#: src/readelf.c:3682 src/readelf.c:11620 src/readelf.c:12803
-#: src/readelf.c:13013 src/readelf.c:13081 src/size.c:396 src/size.c:467
-#: src/strip.c:1093
+#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685
+#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123
+#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854
+#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896
+#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029
+#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396
+#: src/size.c:467 src/strip.c:1093
 #, c-format
 msgid "cannot get section header string table index"
 msgstr "セクションヘッダー文字列テーブル索引が得られません"
@@ -3909,7 +3903,7 @@
 msgid "Show information from FILEs (a.out by default)."
 msgstr "FILE から情報を表示する (デフォルトでは a.out)"
 
-#: src/objdump.c:217 src/readelf.c:608
+#: src/objdump.c:217 src/readelf.c:630
 msgid "No operation specified.\n"
 msgstr "操作が指定されていません。\n"
 
@@ -3918,11 +3912,11 @@
 msgid "while close `%s'"
 msgstr ""
 
-#: src/objdump.c:362 src/readelf.c:2192 src/readelf.c:2383
+#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409
 msgid "INVALID SYMBOL"
 msgstr "不当なシンボル"
 
-#: src/objdump.c:377 src/readelf.c:2226 src/readelf.c:2419
+#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445
 msgid "INVALID SECTION"
 msgstr "不当なセクション"
 
@@ -3976,87 +3970,87 @@
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:96
+#: src/readelf.c:97
 msgid "ELF input selection:"
 msgstr "ELF入力選択:"
 
-#: src/readelf.c:98
+#: src/readelf.c:99
 msgid ""
 "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
 msgstr ""
 "ELF 入力データとして SECTION (デフォルトでは .gnu_debugdata) を使用する"
 
-#: src/readelf.c:101
+#: src/readelf.c:102
 msgid ""
 "Used with -w to find the skeleton Compile Units in FILE associated with the "
 "Split Compile units in a .dwo input file"
 msgstr ""
 
-#: src/readelf.c:103
+#: src/readelf.c:104
 msgid "ELF output selection:"
 msgstr "ELF出力選択:"
 
-#: src/readelf.c:105
+#: src/readelf.c:106
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr ""
 
-#: src/readelf.c:106
+#: src/readelf.c:107
 msgid "Display the dynamic segment"
 msgstr "動的セグメントを表示"
 
-#: src/readelf.c:107
+#: src/readelf.c:108
 msgid "Display the ELF file header"
 msgstr "ELF ファイルヘッダーを表示"
 
-#: src/readelf.c:109
+#: src/readelf.c:110
 msgid "Display histogram of bucket list lengths"
 msgstr "バケットリスト長のヒストグラムを表示"
 
-#: src/readelf.c:110
+#: src/readelf.c:111
 msgid "Display the program headers"
 msgstr "プログラムヘッダーを表示"
 
-#: src/readelf.c:112
+#: src/readelf.c:113
 msgid "Display relocations"
 msgstr "リロケーションを表示"
 
-#: src/readelf.c:113
+#: src/readelf.c:114
 msgid "Display the section groups"
 msgstr "セクショングループを表示"
 
-#: src/readelf.c:114
+#: src/readelf.c:115
 msgid "Display the sections' headers"
 msgstr "セクションヘッダーを表示"
 
-#: src/readelf.c:117
+#: src/readelf.c:118
 msgid "Display the symbol table sections"
 msgstr "シンボルテーブルセクションを表示"
 
-#: src/readelf.c:120
+#: src/readelf.c:121
 msgid "Display (only) the dynamic symbol table"
 msgstr "動的シンボルテーブル(のみ)を表示"
 
-#: src/readelf.c:121
+#: src/readelf.c:122
 msgid "Display versioning information"
 msgstr "バージョニング情報を表示"
 
-#: src/readelf.c:122
+#: src/readelf.c:123
 msgid "Display the ELF notes"
 msgstr "ELF notes を表示"
 
-#: src/readelf.c:124
+#: src/readelf.c:125
 msgid "Display architecture specific information, if any"
 msgstr "(もしあれば)アーキテクチャー固有の情報を表示"
 
-#: src/readelf.c:126
+#: src/readelf.c:127
 msgid "Display sections for exception handling"
 msgstr "例外ハンドリングのセクションを表示"
 
-#: src/readelf.c:128
+#: src/readelf.c:129
 msgid "Additional output selection:"
 msgstr "追加の出力選択:"
 
-#: src/readelf.c:130
+#: src/readelf.c:131
 #, fuzzy
 msgid ""
 "Display DWARF section content.  SECTION can be one of abbrev, addr, aranges, "
@@ -4066,81 +4060,81 @@
 "DWARF セクションの内容を表示。SECTION は addrevか、aranges、frame、info、"
 "loc、ranges、pubnames、str、macinfo、exception のいずれかです"
 
-#: src/readelf.c:134
+#: src/readelf.c:135
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr "SECTION の 未解釈の 内容を ダンプする。 番号 または 名前で指定する"
 
-#: src/readelf.c:136
+#: src/readelf.c:137
 msgid "Print string contents of sections"
 msgstr "セクションの文字列内容を表示"
 
-#: src/readelf.c:139
+#: src/readelf.c:140
 msgid "Display the symbol index of an archive"
 msgstr "アーカイブのシンボル索引を表示"
 
-#: src/readelf.c:141
+#: src/readelf.c:142
 msgid "Use the dynamic segment when possible for displaying info"
 msgstr ""
 
-#: src/readelf.c:143
+#: src/readelf.c:144
 msgid "Output control:"
 msgstr "出力制御:"
 
-#: src/readelf.c:145
+#: src/readelf.c:146
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない"
 
-#: src/readelf.c:147
+#: src/readelf.c:148
 #, fuzzy
 msgid ""
 "Display just offsets instead of resolving values to addresses in DWARF data"
 msgstr "DWARFデータ中のアドレスのためのシンボル名を探さない"
 
-#: src/readelf.c:149
+#: src/readelf.c:150
 msgid "Ignored for compatibility (lines always wide)"
 msgstr ""
 
-#: src/readelf.c:151
+#: src/readelf.c:152
 msgid ""
 "Show compression information for compressed sections (when used with -S); "
 "decompress section before dumping data (when used with -p or -x)"
 msgstr ""
 
 #. Short description of program.
-#: src/readelf.c:156
+#: src/readelf.c:157
 msgid "Print information from ELF file in human-readable form."
 msgstr "ELF ファイルから人間が読める形で情報を表示する。"
 
 #. Look up once.
-#: src/readelf.c:373
+#: src/readelf.c:395
 msgid "yes"
 msgstr "はい"
 
-#: src/readelf.c:374
+#: src/readelf.c:396
 msgid "no"
 msgstr "いいえ"
 
-#: src/readelf.c:576
+#: src/readelf.c:598
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "不明な DWARF デバッグセクション `%s'.\n"
 
-#: src/readelf.c:647 src/readelf.c:758
+#: src/readelf.c:669 src/readelf.c:780
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "Elf 記述子を生成できません: %s"
 
-#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188
+#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "セクション数を決定できません: %s"
 
-#: src/readelf.c:672 src/readelf.c:1300 src/readelf.c:1508
+#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530
 #, c-format
 msgid "cannot get section: %s"
 msgstr "セクションを取得できません: %s"
 
-#: src/readelf.c:681 src/readelf.c:1307 src/readelf.c:1515 src/readelf.c:13033
+#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442
 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610
 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222
 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470
@@ -4149,120 +4143,120 @@
 msgid "cannot get section header: %s"
 msgstr "セクションヘッダーを取得できません: %s"
 
-#: src/readelf.c:689
+#: src/readelf.c:711
 #, c-format
 msgid "cannot get section name"
 msgstr "セクション名を取得できません"
 
-#: src/readelf.c:698 src/readelf.c:6833 src/readelf.c:10887 src/readelf.c:10989
-#: src/readelf.c:11173
+#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332
+#: src/readelf.c:11516
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "%s の内容を取得できません: %s"
 
-#: src/readelf.c:714
+#: src/readelf.c:736
 #, c-format
 msgid "cannot create temp file '%s'"
 msgstr "一時ファイル '%s' を作成できません"
 
-#: src/readelf.c:723
+#: src/readelf.c:745
 #, c-format
 msgid "cannot write section data"
 msgstr "セクションデータを書き込みできません"
 
-#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775
+#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797
 #, c-format
 msgid "error while closing Elf descriptor: %s"
 msgstr "Elf 記述子を閉じている時にエラー: %s"
 
-#: src/readelf.c:736
+#: src/readelf.c:758
 #, c-format
 msgid "error while rewinding file descriptor"
 msgstr "ファイル記述子を巻き戻している時にエラー"
 
-#: src/readelf.c:770
+#: src/readelf.c:792
 #, c-format
 msgid "'%s' is not an archive, cannot print archive index"
 msgstr "'%s' はアーカイブではなく、アーカイブ索引を表示できません"
 
-#: src/readelf.c:874
+#: src/readelf.c:896
 #, c-format
 msgid "cannot stat input file"
 msgstr "入力ファイルを stat できません"
 
-#: src/readelf.c:876
+#: src/readelf.c:898
 #, c-format
 msgid "input file is empty"
 msgstr "入力ファイルが空です"
 
-#: src/readelf.c:878
+#: src/readelf.c:900
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "'%s' の読込みに失敗: %s"
 
-#: src/readelf.c:907
+#: src/readelf.c:929
 #, fuzzy, c-format
 msgid "No such section '%s' in '%s'"
 msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
 
-#: src/readelf.c:966
+#: src/readelf.c:988
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "ELF ヘッダーを読み込めません: %s"
 
-#: src/readelf.c:974
+#: src/readelf.c:996
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "EBL ハンドルを作成できません"
 
-#: src/readelf.c:985
+#: src/readelf.c:1007
 #, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "プログラムヘッダの数を決定できません: %s"
 
-#: src/readelf.c:1017
+#: src/readelf.c:1039
 #, c-format
 msgid "cannot read ELF: %s"
 msgstr "ELFを読み込めません: %s"
 
-#: src/readelf.c:1050
+#: src/readelf.c:1072
 #, fuzzy
 #| msgid "cannot get section: %s"
 msgid "cannot find section"
 msgstr "セクションを取得できません: %s"
 
-#: src/readelf.c:1087
+#: src/readelf.c:1109
 msgid "NONE (None)"
 msgstr "なし (なし)"
 
-#: src/readelf.c:1088
+#: src/readelf.c:1110
 msgid "REL (Relocatable file)"
 msgstr "REL (リロケータブルファイル)"
 
-#: src/readelf.c:1089
+#: src/readelf.c:1111
 msgid "EXEC (Executable file)"
 msgstr "(EXEC (実行ファイル)"
 
-#: src/readelf.c:1090
+#: src/readelf.c:1112
 msgid "DYN (Shared object file)"
 msgstr "DYN (共用オブジェクトファイル)"
 
-#: src/readelf.c:1091
+#: src/readelf.c:1113
 msgid "CORE (Core file)"
 msgstr "CORE (コアファイル)"
 
-#: src/readelf.c:1096
+#: src/readelf.c:1118
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "OS 固有: (%x)\n"
 
 #. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1098
+#: src/readelf.c:1120
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "プロセッサー固有: (%x)\n"
 
-#: src/readelf.c:1108
+#: src/readelf.c:1130
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4270,7 +4264,7 @@
 "ELF ヘッダー:\n"
 " マジック: "
 
-#: src/readelf.c:1112
+#: src/readelf.c:1134
 #, c-format
 msgid ""
 "\n"
@@ -4279,123 +4273,123 @@
 "\n"
 "  クラス:                            %s\n"
 
-#: src/readelf.c:1117
+#: src/readelf.c:1139
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  データ:                            %s\n"
 
-#: src/readelf.c:1123
+#: src/readelf.c:1145
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "  識別バージョン:                    %hhd %s\n"
 
-#: src/readelf.c:1125 src/readelf.c:1147
+#: src/readelf.c:1147 src/readelf.c:1169
 msgid "(current)"
 msgstr "(現在)"
 
-#: src/readelf.c:1129
+#: src/readelf.c:1151
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  OS/ABI:                            %s\n"
 
-#: src/readelf.c:1132
+#: src/readelf.c:1154
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  ABI バージョン:                    %hhd\n"
 
-#: src/readelf.c:1135
+#: src/readelf.c:1157
 msgid "  Type:                              "
 msgstr "  タイプ:                            "
 
-#: src/readelf.c:1140
+#: src/readelf.c:1162
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  マシン :                           %s\n"
 
-#: src/readelf.c:1142
+#: src/readelf.c:1164
 #, fuzzy, c-format
 msgid "  Machine:                           <unknown>: 0x%x\n"
 msgstr "  マシン :                           %s\n"
 
-#: src/readelf.c:1145
+#: src/readelf.c:1167
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  バージョン:                        %d %s\n"
 
-#: src/readelf.c:1149
+#: src/readelf.c:1171
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  入口点アドレス     :               %#<PRIx64>\n"
 
-#: src/readelf.c:1152
+#: src/readelf.c:1174
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr "  プログラムヘッダーの開始:          %<PRId64> %s\n"
 
-#: src/readelf.c:1153 src/readelf.c:1156
+#: src/readelf.c:1175 src/readelf.c:1178
 msgid "(bytes into file)"
 msgstr "(ファイルへのバイト数)"
 
-#: src/readelf.c:1155
+#: src/readelf.c:1177
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr "  セクションヘッダーの開始:          %<PRId64> %s\n"
 
-#: src/readelf.c:1158
+#: src/readelf.c:1180
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  フラグ:                            %s\n"
 
-#: src/readelf.c:1161
+#: src/readelf.c:1183
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr "  このヘッダーの大きさ:              %<PRId16> %s\n"
 
-#: src/readelf.c:1162 src/readelf.c:1165 src/readelf.c:1182
+#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204
 msgid "(bytes)"
 msgstr "(バイト)"
 
-#: src/readelf.c:1164
+#: src/readelf.c:1186
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr "  プログラムヘッダー項目の大きさ:%<PRId16> %s\n"
 
-#: src/readelf.c:1167
+#: src/readelf.c:1189
 #, fuzzy, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr "  プログラムヘッダー項目の数 : %<PRId16>\n"
 
-#: src/readelf.c:1174
+#: src/readelf.c:1196
 #, fuzzy, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr "([0].sh_link の %<PRIu32>)"
 
-#: src/readelf.c:1177 src/readelf.c:1194 src/readelf.c:1208
+#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230
 msgid " ([0] not available)"
 msgstr "([0]は使えません)"
 
-#: src/readelf.c:1181
+#: src/readelf.c:1203
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr "  セクションヘッダー項目の大きさ:%<PRId16> %s\n"
 
-#: src/readelf.c:1184
+#: src/readelf.c:1206
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr "  セクションヘッダー項目の数 : %<PRId16>"
 
-#: src/readelf.c:1191
+#: src/readelf.c:1213
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " ([0].sh_size の %<PRIu32>)"
 
 #. We managed to get the zeroth section.
-#: src/readelf.c:1204
+#: src/readelf.c:1226
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr "([0].sh_link の %<PRIu32>)"
 
-#: src/readelf.c:1212
+#: src/readelf.c:1234
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4404,7 +4398,7 @@
 "  セクションヘッダー文字列テーブル索引: XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:1216
+#: src/readelf.c:1238
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
@@ -4413,12 +4407,12 @@
 "  セクションヘッダー文字列テーブル索引: %<PRId16>\n"
 "\n"
 
-#: src/readelf.c:1266 src/readelf.c:1474
+#: src/readelf.c:1288 src/readelf.c:1496
 #, fuzzy, c-format
 msgid "cannot get number of sections: %s"
 msgstr "セクション数を決定できません: %s"
 
-#: src/readelf.c:1269
+#: src/readelf.c:1291
 #, fuzzy, c-format
 msgid ""
 "There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4427,16 +4421,16 @@
 "オフセット %2$#<PRIx64> から始まる %1$d 個のセクションヘッダーがあります:\n"
 "\n"
 
-#: src/readelf.c:1277
+#: src/readelf.c:1299
 #, fuzzy, c-format
 msgid "cannot get section header string table index: %s"
 msgstr "セクションヘッダー文字列テーブル索引が得られません"
 
-#: src/readelf.c:1280
+#: src/readelf.c:1302
 msgid "Section Headers:"
 msgstr "セクションヘッダー:"
 
-#: src/readelf.c:1283
+#: src/readelf.c:1305
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4444,7 +4438,7 @@
 "[番] 名前                 タイプ       アドレス オフセ 大きさ ES フラグLk "
 "Inf Al"
 
-#: src/readelf.c:1285
+#: src/readelf.c:1307
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4452,35 +4446,35 @@
 "[番] 名前                 タイプ       アドレス         オフセ   大きさ   ES "
 "フラグLk Inf Al"
 
-#: src/readelf.c:1290
+#: src/readelf.c:1312
 msgid "     [Compression  Size   Al]"
 msgstr ""
 
-#: src/readelf.c:1292
+#: src/readelf.c:1314
 msgid "     [Compression  Size     Al]"
 msgstr ""
 
-#: src/readelf.c:1370
+#: src/readelf.c:1392
 #, fuzzy, c-format
 msgid "bad compression header for section %zd: %s"
 msgstr "セクションヘッダー文字列セクションを生成できません: %s"
 
-#: src/readelf.c:1381
+#: src/readelf.c:1403
 #, fuzzy, c-format
 msgid "bad gnu compressed size for section %zd: %s"
 msgstr "セクションからデータを得られません %d: %s"
 
-#: src/readelf.c:1399
+#: src/readelf.c:1421
 msgid "Program Headers:"
 msgstr "プログラムヘッダー:"
 
-#: src/readelf.c:1401
+#: src/readelf.c:1423
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 "  タイプ         オフセ   仮アドレス 物アドレス ファイ量 メモ量   Flg 調整 "
 
-#: src/readelf.c:1404
+#: src/readelf.c:1426
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4488,12 +4482,12 @@
 "  タイプ         オフセ   仮想アドレス       物理アドレス      ファイル量メモ"
 "量   Flg 調整 "
 
-#: src/readelf.c:1461
+#: src/readelf.c:1483
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[プログラム割込みを要求: %s]\n"
 
-#: src/readelf.c:1486
+#: src/readelf.c:1508
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4503,12 +4497,12 @@
 " セクションからセグメントへのマッビング:\n"
 "  セグメント セクション..."
 
-#: src/readelf.c:1497 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
+#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "プログラムヘッダーを得られません: %s"
 
-#: src/readelf.c:1641
+#: src/readelf.c:1663
 #, c-format
 msgid ""
 "\n"
@@ -4521,7 +4515,7 @@
 "署名 '%3$s' を持つ COMDAT セクショングループ [%1$2zu] '%2$s' には %4$zu 個の"
 "項目があります:\n"
 
-#: src/readelf.c:1646
+#: src/readelf.c:1668
 #, c-format
 msgid ""
 "\n"
@@ -4534,32 +4528,32 @@
 "署名 '%3$s' を持つセクショングループ [%1$2zu] '%2$s' には %4$zu 個の項目があ"
 "ります:\n"
 
-#: src/readelf.c:1654
+#: src/readelf.c:1676
 msgid "<INVALID SYMBOL>"
 msgstr "<不当なシンボル>"
 
-#: src/readelf.c:1668
+#: src/readelf.c:1690
 msgid "<INVALID SECTION>"
 msgstr "<不当なセクション>"
 
-#: src/readelf.c:1691 src/readelf.c:2476 src/readelf.c:3581 src/readelf.c:3881
-#: src/readelf.c:12905 src/readelf.c:12912 src/readelf.c:12956
-#: src/readelf.c:12963
+#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212
+#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365
+#: src/readelf.c:13372
 msgid "Couldn't uncompress section"
 msgstr ""
 
-#: src/readelf.c:1695 src/readelf.c:2481 src/readelf.c:3585
+#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916
 #, fuzzy, c-format
 msgid "cannot get section [%zd] header: %s"
 msgstr "セクションヘッダーを得られません: %s"
 
-#: src/readelf.c:1864 src/readelf.c:2550 src/readelf.c:2815 src/readelf.c:2890
-#: src/readelf.c:3193 src/readelf.c:3267 src/readelf.c:5619
+#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221
+#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962
 #, fuzzy, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "不当な .debug_line セクション"
 
-#: src/readelf.c:1867
+#: src/readelf.c:1889
 #, c-format
 msgid ""
 "\n"
@@ -4575,7 +4569,7 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:1880
+#: src/readelf.c:1902
 #, fuzzy, c-format
 #| msgid ""
 #| "\n"
@@ -4599,42 +4593,42 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:1890
+#: src/readelf.c:1912
 msgid "  Type              Value\n"
 msgstr "  タイプ            値\n"
 
-#: src/readelf.c:1899
+#: src/readelf.c:1921
 #, fuzzy
 #| msgid "cannot get string section data: %s"
 msgid "cannot get string table by using dynamic segment"
 msgstr "文字列セクションデータを取得できません: %s"
 
-#: src/readelf.c:1938
+#: src/readelf.c:1960
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "共用ライブラリー: [%s]\n"
 
-#: src/readelf.c:1942
+#: src/readelf.c:1964
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "ライブラリー so 名: [%s]\n"
 
-#: src/readelf.c:1946
+#: src/readelf.c:1968
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "ライブラリー rパス: [%s]\n"
 
-#: src/readelf.c:1950
+#: src/readelf.c:1972
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "ライブラリー run パス: [%s]\n"
 
-#: src/readelf.c:1969
+#: src/readelf.c:1993
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (バイト)\n"
 
-#: src/readelf.c:2083 src/readelf.c:2272
+#: src/readelf.c:2109 src/readelf.c:2298
 #, c-format
 msgid ""
 "\n"
@@ -4643,7 +4637,7 @@
 "\n"
 "オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
 
-#: src/readelf.c:2100 src/readelf.c:2289
+#: src/readelf.c:2126 src/readelf.c:2315
 #, c-format
 msgid ""
 "\n"
@@ -4664,7 +4658,8 @@
 #. The .rela.dyn section does not refer to a specific section but
 #. instead of section index zero.  Do not try to print a section
 #. name.
-#: src/readelf.c:2115 src/readelf.c:2304
+#. A .relr.dyn section does not refer to a specific section.
+#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485
 #, c-format
 msgid ""
 "\n"
@@ -4677,29 +4672,39 @@
 "オフセット %3$#0<PRIx64> のリロケーションセクション [%1$2u] '%2$s' には %4$d "
 "個の項目があります:\n"
 
-#: src/readelf.c:2125
+#: src/readelf.c:2151
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  オフセット  タイプ               値          名前\n"
 
-#: src/readelf.c:2127
+#: src/readelf.c:2153
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  オフセット          タイプ               値                  名前\n"
 
-#: src/readelf.c:2180 src/readelf.c:2191 src/readelf.c:2204 src/readelf.c:2225
-#: src/readelf.c:2237 src/readelf.c:2370 src/readelf.c:2382 src/readelf.c:2396
-#: src/readelf.c:2418 src/readelf.c:2431
+#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251
+#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422
+#: src/readelf.c:2444 src/readelf.c:2457
 msgid "<INVALID RELOC>"
 msgstr "<不当なRELOC>"
 
-#: src/readelf.c:2314
+#: src/readelf.c:2340
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  オフセット  タイプ          値          付加名\n"
 
-#: src/readelf.c:2316
+#: src/readelf.c:2342
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr "  オフセット          タイプ          値                  付加名\n"
 
-#: src/readelf.c:2558
+#: src/readelf.c:2654
+#, c-format
+msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+
+#: src/readelf.c:2750
+#, c-format
+msgid "bad dynamic symbol"
+msgstr "不正な動的シンボル"
+
+#: src/readelf.c:2868
 #, c-format
 msgid ""
 "\n"
@@ -4711,39 +4716,33 @@
 "\n"
 "シンボルテーブル [%2u] '%s' には %u 個の項目があります:\n"
 
-#: src/readelf.c:2563
+#: src/readelf.c:2873
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
 msgstr[0] " %lu ローカルシンボル文字列テーブル: [%2u] '%s'\n"
 
-#: src/readelf.c:2571
+#: src/readelf.c:2881
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  数 :    値      大き タイプ  Bind   Vis          Ndx 名前\n"
 
-#: src/readelf.c:2573
+#: src/readelf.c:2883
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  数 :            値      大き タイプ  Bind   Vis          Ndx 名前\n"
 
-#: src/readelf.c:2593
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+#: src/readelf.c:3002
+msgid "Dynamic symbol information is not available for displaying symbols."
+msgstr ""
 
-#: src/readelf.c:2686
-#, c-format
-msgid "bad dynamic symbol"
-msgstr "不正な動的シンボル"
-
-#: src/readelf.c:2771
+#: src/readelf.c:3102
 msgid "none"
 msgstr "なし"
 
-#: src/readelf.c:2788
+#: src/readelf.c:3119
 msgid "| <unknown>"
 msgstr "| <不明>"
 
-#: src/readelf.c:2818
+#: src/readelf.c:3149
 #, c-format
 msgid ""
 "\n"
@@ -4759,17 +4758,17 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2839
+#: src/readelf.c:3170
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: バージョン: %hu  ファイル: %s  数: %hu\n"
 
-#: src/readelf.c:2852
+#: src/readelf.c:3183
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: 名前: %s  フラグ: %s  バージョン: %hu\n"
 
-#: src/readelf.c:2894
+#: src/readelf.c:3225
 #, c-format
 msgid ""
 "\n"
@@ -4785,18 +4784,18 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:2922
+#: src/readelf.c:3253
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr "  %#06x: バージョン: %hd  フラグ: %s  索引: %hd  数: %hd  名前: %s\n"
 
-#: src/readelf.c:2937
+#: src/readelf.c:3268
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: 親 %d: %s\n"
 
 #. Print the header.
-#: src/readelf.c:3197
+#: src/readelf.c:3528
 #, c-format
 msgid ""
 "\n"
@@ -4812,15 +4811,15 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'"
 
-#: src/readelf.c:3225
+#: src/readelf.c:3556
 msgid "   0 *local*                     "
 msgstr "   0 *ローカル*                  "
 
-#: src/readelf.c:3230
+#: src/readelf.c:3561
 msgid "   1 *global*                    "
 msgstr "   1 *グローバル*                "
 
-#: src/readelf.c:3272
+#: src/readelf.c:3603
 #, c-format
 msgid ""
 "\n"
@@ -4838,22 +4837,22 @@
 " アドレス: %#0*<PRIx64>  オフセット: %#08<PRIx64>  セクションへのリンク: "
 "[%2u] '%s'\n"
 
-#: src/readelf.c:3294
+#: src/readelf.c:3625
 #, fuzzy, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " 長さ    数      全体の%     範囲    \n"
 
-#: src/readelf.c:3296
+#: src/readelf.c:3627
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:3303
+#: src/readelf.c:3634
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:3316
+#: src/readelf.c:3647
 #, fuzzy, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -4862,37 +4861,37 @@
 " テストの平均数: 検索成功: %f\n"
 "                 検索失敗: %f\n"
 
-#: src/readelf.c:3334 src/readelf.c:3398 src/readelf.c:3464
+#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "セクションからデータを得られません %d: %s"
 
-#: src/readelf.c:3342
+#: src/readelf.c:3673
 #, fuzzy, c-format
 msgid "invalid data in sysv.hash section %d"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:3371
+#: src/readelf.c:3702
 #, fuzzy, c-format
 msgid "invalid chain in sysv.hash section %d"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:3406
+#: src/readelf.c:3737
 #, fuzzy, c-format
 msgid "invalid data in sysv.hash64 section %d"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:3437
+#: src/readelf.c:3768
 #, fuzzy, c-format
 msgid "invalid chain in sysv.hash64 section %d"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:3473
+#: src/readelf.c:3804
 #, fuzzy, c-format
 msgid "invalid data in gnu.hash section %d"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:3539
+#: src/readelf.c:3870
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -4902,7 +4901,7 @@
 " ビットマスクの大きさ: %zu バイト  %<PRIuFAST32>%% ビット設定 第2ハッシュシフ"
 "ト: %u\n"
 
-#: src/readelf.c:3624
+#: src/readelf.c:3955
 #, c-format
 msgid ""
 "\n"
@@ -4915,7 +4914,7 @@
 "オフセット %3$#0<PRIx64> のライブラリー一覧セクション [%1$2zu] '%2$s' には "
 "%4$d 個の項目があります:\n"
 
-#: src/readelf.c:3638
+#: src/readelf.c:3969
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -4923,7 +4922,7 @@
 "       ライブラリー                  タイムスタンプ      チェックサム バー"
 "ジョン フラグ"
 
-#: src/readelf.c:3698
+#: src/readelf.c:4029
 #, c-format
 msgid ""
 "\n"
@@ -4934,107 +4933,107 @@
 "オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのオブジェクト属性セクション "
 "[%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:3715
+#: src/readelf.c:4046
 msgid "  Owner          Size\n"
 msgstr "  所有者         大きさ\n"
 
-#: src/readelf.c:3739
+#: src/readelf.c:4070
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
 #. Unknown subsection, print and skip.
-#: src/readelf.c:3778
+#: src/readelf.c:4109
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
 #. Tag_File
-#: src/readelf.c:3783
+#: src/readelf.c:4114
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    ファイル: %11<PRIu32>\n"
 
-#: src/readelf.c:3833
+#: src/readelf.c:4164
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>、%s\n"
 
-#: src/readelf.c:3836
+#: src/readelf.c:4167
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3839
+#: src/readelf.c:4170
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3849
+#: src/readelf.c:4180
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3852
+#: src/readelf.c:4183
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3890
+#: src/readelf.c:4221
 #, fuzzy
 #| msgid "couldn't get shdr for group section: %s"
 msgid "Couldn't get data from section"
 msgstr "グループセクションに対する shdr を取得できませんでした: %s"
 
-#: src/readelf.c:3955
+#: src/readelf.c:4286
 msgid "sprintf failure"
 msgstr ""
 
-#: src/readelf.c:4439
+#: src/readelf.c:4770
 msgid "empty block"
 msgstr "空ブロック"
 
-#: src/readelf.c:4442
+#: src/readelf.c:4773
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu バイトのブロック:"
 
-#: src/readelf.c:4920
+#: src/readelf.c:5251
 #, fuzzy, c-format
 msgid "%*s[%2<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%4<PRIuMAX>] %s  <TRUNCATED>\n"
 
-#: src/readelf.c:5080
+#: src/readelf.c:5423
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr ""
 
-#: src/readelf.c:5087
+#: src/readelf.c:5430
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr ""
 
-#: src/readelf.c:5094
+#: src/readelf.c:5437
 #, c-format
 msgid "%s %#<PRIx64> used with different base addresses"
 msgstr ""
 
-#: src/readelf.c:5101
+#: src/readelf.c:5444
 #, c-format
 msgid "%s %#<PRIx64> used with different attribute %s and %s"
 msgstr ""
 
-#: src/readelf.c:5201
+#: src/readelf.c:5544
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr ""
 
-#: src/readelf.c:5209
+#: src/readelf.c:5552
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr ""
 
-#: src/readelf.c:5315
+#: src/readelf.c:5658
 #, c-format
 msgid ""
 "\n"
@@ -5045,7 +5044,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " [ コード]\n"
 
-#: src/readelf.c:5323
+#: src/readelf.c:5666
 #, c-format
 msgid ""
 "\n"
@@ -5054,20 +5053,20 @@
 "\n"
 "オフセット %<PRIu64> の略語セクション:\n"
 
-#: src/readelf.c:5336
+#: src/readelf.c:5679
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** 略語を読んでいる間にエラー: %s\n"
 
-#: src/readelf.c:5352
+#: src/readelf.c:5695
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] オフセット: %<PRId64>、子: %s、タグ: %s\n"
 
-#: src/readelf.c:5389 src/readelf.c:5682 src/readelf.c:5853 src/readelf.c:6224
-#: src/readelf.c:6850 src/readelf.c:8619 src/readelf.c:9361 src/readelf.c:9829
-#: src/readelf.c:10084 src/readelf.c:10246 src/readelf.c:10627
-#: src/readelf.c:10698
+#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567
+#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172
+#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970
+#: src/readelf.c:11041
 #, c-format
 msgid ""
 "\n"
@@ -5076,47 +5075,47 @@
 "\n"
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:5492 src/readelf.c:5516 src/readelf.c:5889 src/readelf.c:9397
+#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740
 #, fuzzy, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5494 src/readelf.c:5531 src/readelf.c:5902 src/readelf.c:9410
+#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753
 #, fuzzy, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5495 src/readelf.c:5540 src/readelf.c:5911 src/readelf.c:9419
+#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762
 #, fuzzy, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5497 src/readelf.c:5550 src/readelf.c:5921 src/readelf.c:9429
+#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772
 #, fuzzy, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:5535 src/readelf.c:5906 src/readelf.c:9414 src/readelf.c:10820
+#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163
 #, fuzzy, c-format
 msgid "Unknown version"
 msgstr "不明なバージョン"
 
-#: src/readelf.c:5545 src/readelf.c:5752 src/readelf.c:5916 src/readelf.c:9424
+#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767
 #, fuzzy, c-format
 msgid "unsupported address size"
 msgstr "アドレス値ではありません"
 
-#: src/readelf.c:5556 src/readelf.c:5763 src/readelf.c:5926 src/readelf.c:9434
+#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777
 #, c-format
 msgid "unsupported segment size"
 msgstr ""
 
-#: src/readelf.c:5609
+#: src/readelf.c:5952
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr ".debug_aragnes の内容を得られません: %s"
 
-#: src/readelf.c:5624
+#: src/readelf.c:5967
 #, c-format
 msgid ""
 "\n"
@@ -5129,19 +5128,19 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:5655
+#: src/readelf.c:5998
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5657
+#: src/readelf.c:6000
 #, 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:5695 src/readelf.c:8638
+#: src/readelf.c:6038 src/readelf.c:8981
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5150,142 +5149,142 @@
 "\n"
 "オフセット %Zu のテーブル:\n"
 
-#: src/readelf.c:5699 src/readelf.c:5870 src/readelf.c:6874 src/readelf.c:8649
-#: src/readelf.c:9378
+#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992
+#: src/readelf.c:9721
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "セクション [%zu] '%s' の不当なデータ"
 
-#: src/readelf.c:5715
+#: src/readelf.c:6058
 #, fuzzy, c-format
 msgid ""
 "\n"
 " Length:        %6<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5727
+#: src/readelf.c:6070
 #, fuzzy, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:5731
+#: src/readelf.c:6074
 #, c-format
 msgid "unsupported aranges version"
 msgstr ""
 
-#: src/readelf.c:5742
+#: src/readelf.c:6085
 #, fuzzy, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5748
+#: src/readelf.c:6091
 #, fuzzy, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5759
+#: src/readelf.c:6102
 #, fuzzy, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
 "\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:5814
+#: src/readelf.c:6157
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr ""
 
-#: src/readelf.c:5876 src/readelf.c:9384
+#: src/readelf.c:6219 src/readelf.c:9727
 #, fuzzy, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
 "\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5931 src/readelf.c:9439
+#: src/readelf.c:6274 src/readelf.c:9782
 #, fuzzy, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:5947 src/readelf.c:9455
+#: src/readelf.c:6290 src/readelf.c:9798
 #, c-format
 msgid " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:5949 src/readelf.c:9457
+#: src/readelf.c:6292 src/readelf.c:9800
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:5955 src/readelf.c:9463
+#: src/readelf.c:6298 src/readelf.c:9806
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr ""
 
-#: src/readelf.c:5966 src/readelf.c:9474
+#: src/readelf.c:6309 src/readelf.c:9817
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr ""
 
-#: src/readelf.c:5970 src/readelf.c:9478
+#: src/readelf.c:6313 src/readelf.c:9821
 #, fuzzy, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  所有者         大きさ\n"
 
-#: src/readelf.c:6022
+#: src/readelf.c:6365
 #, fuzzy, c-format
 msgid "invalid range list data"
 msgstr "不当なデータ"
 
-#: src/readelf.c:6207 src/readelf.c:9813
+#: src/readelf.c:6550 src/readelf.c:10156
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
 "\n"
 msgstr ""
 
-#: src/readelf.c:6255 src/readelf.c:9862
+#: src/readelf.c:6598 src/readelf.c:10205
 #, c-format
 msgid ""
 "\n"
 " Unknown CU base: "
 msgstr ""
 
-#: src/readelf.c:6257 src/readelf.c:9864
+#: src/readelf.c:6600 src/readelf.c:10207
 #, c-format
 msgid ""
 "\n"
 " CU [%6<PRIx64>] base: "
 msgstr ""
 
-#: src/readelf.c:6266 src/readelf.c:9890 src/readelf.c:9916
+#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:6291 src/readelf.c:10000
+#: src/readelf.c:6634 src/readelf.c:10343
 #, fuzzy
 msgid "base address"
 msgstr "アドレスを %s に設定する\n"
 
-#: src/readelf.c:6301 src/readelf.c:10010
+#: src/readelf.c:6644 src/readelf.c:10353
 #, fuzzy, c-format
 msgid " [%6tx] empty list\n"
 msgstr ""
 "\n"
 " [%6tx] ゼロ終端\n"
 
-#: src/readelf.c:6565
+#: src/readelf.c:6908
 #, fuzzy
 msgid "         <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:6822
+#: src/readelf.c:7165
 #, fuzzy, c-format
 msgid "cannot get ELF: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:6846
+#: src/readelf.c:7189
 #, c-format
 msgid ""
 "\n"
@@ -5294,7 +5293,7 @@
 "\n"
 "オフセット %3$#<PRIx64> の フレーム情報呼出しセクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:6896
+#: src/readelf.c:7239
 #, c-format
 msgid ""
 "\n"
@@ -5303,65 +5302,65 @@
 "\n"
 " [%6tx] ゼロ終端\n"
 
-#: src/readelf.c:7000 src/readelf.c:7154
+#: src/readelf.c:7343 src/readelf.c:7497
 #, fuzzy, c-format
 msgid "invalid augmentation length"
 msgstr "不当な拡大エンコード"
 
-#: src/readelf.c:7015
+#: src/readelf.c:7358
 msgid "FDE address encoding: "
 msgstr "FDE アドレスエンコード"
 
-#: src/readelf.c:7021
+#: src/readelf.c:7364
 msgid "LSDA pointer encoding: "
 msgstr "LSDA ポインターエンコード:"
 
-#: src/readelf.c:7131
+#: src/readelf.c:7474
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7138
+#: src/readelf.c:7481
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:7175
+#: src/readelf.c:7518
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sLSDA ポインター: %#<PRIx64>\n"
 
-#: src/readelf.c:7260
+#: src/readelf.c:7603
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "属性コードを得られません: %s"
 
-#: src/readelf.c:7270
+#: src/readelf.c:7613
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "属性様式を得られません: %s"
 
-#: src/readelf.c:7292
+#: src/readelf.c:7635
 #, fuzzy, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "属性値を得られません: %s"
 
-#: src/readelf.c:7622
+#: src/readelf.c:7965
 #, fuzzy, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "不当なファイル"
 
-#: src/readelf.c:7626
+#: src/readelf.c:7969
 #, fuzzy, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:7630
+#: src/readelf.c:7973
 #, fuzzy, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:7952
+#: src/readelf.c:8295
 #, c-format
 msgid ""
 "\n"
@@ -5372,12 +5371,12 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 " [オフセット]\n"
 
-#: src/readelf.c:8002
+#: src/readelf.c:8345
 #, fuzzy, c-format
 msgid "cannot get next unit: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:8022
+#: src/readelf.c:8365
 #, fuzzy, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5389,7 +5388,7 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:8034
+#: src/readelf.c:8377
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5400,39 +5399,39 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:8044 src/readelf.c:8205
+#: src/readelf.c:8387 src/readelf.c:8548
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr ""
 
-#: src/readelf.c:8071
+#: src/readelf.c:8414
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr ""
 
-#: src/readelf.c:8100
+#: src/readelf.c:8443
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "DIE オフセットを得られません: %s"
 
-#: src/readelf.c:8109
+#: src/readelf.c:8452
 #, 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:8145
+#: src/readelf.c:8488
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "次の DIE を得られません: %s\n"
 
-#: src/readelf.c:8153
+#: src/readelf.c:8496
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "次の DIE を得られません: %s"
 
-#: src/readelf.c:8197
+#: src/readelf.c:8540
 #, fuzzy, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5443,7 +5442,7 @@
 " バージョン: %2$<PRIu16>、略語セクションオフセット: %3$<PRIu64>、アドレスの大"
 "きさ: %4$<PRIu8>、オフセットの大きさ: %5$<PRIu8>\n"
 
-#: src/readelf.c:8249
+#: src/readelf.c:8592
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5453,13 +5452,13 @@
 "\n"
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 
-#: src/readelf.c:8581
+#: src/readelf.c:8924
 #, fuzzy, c-format
 msgid "unknown form: %s"
 msgstr "不明な様式 %<PRIx64>"
 
 #. Print what we got so far.
-#: src/readelf.c:8729
+#: src/readelf.c:9072
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5489,33 +5488,33 @@
 "\n"
 "命令コード:\n"
 
-#: src/readelf.c:8751
+#: src/readelf.c:9094
 #, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr ".debug_line バージョンを扱えません: %u\n"
 
-#: src/readelf.c:8759
+#: src/readelf.c:9102
 #, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "アドレスサイズを扱えません: %u\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:9110
 #, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "セグメントセレクタサイズを扱えません: %u\n"
 
-#: src/readelf.c:8777
+#: src/readelf.c:9120
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "セクション [%2$zu] '%3$s' 中のオフセット %1$tu に不当なデータ"
 
-#: src/readelf.c:8792
+#: src/readelf.c:9135
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
 msgstr[0] "  [%*<PRIuFAST8>]  %hhu パラメーター\n"
 
-#: src/readelf.c:8803
+#: src/readelf.c:9146
 msgid ""
 "\n"
 "Directory table:"
@@ -5523,12 +5522,12 @@
 "\n"
 "ディレクトリーテーブル:"
 
-#: src/readelf.c:8809 src/readelf.c:8886
+#: src/readelf.c:9152 src/readelf.c:9229
 #, fuzzy, c-format
 msgid "      ["
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:8880
+#: src/readelf.c:9223
 #, fuzzy
 msgid ""
 "\n"
@@ -5537,7 +5536,7 @@
 "\n"
 " 呼出しサイトテーブル:"
 
-#: src/readelf.c:8941
+#: src/readelf.c:9284
 #, fuzzy
 msgid " Entry Dir   Time      Size      Name"
 msgstr ""
@@ -5545,7 +5544,7 @@
 "ファイル名テーブル:\n"
 " Entry Dir   時刻     大きさ    名前"
 
-#: src/readelf.c:8987
+#: src/readelf.c:9330
 #, fuzzy
 msgid ""
 "\n"
@@ -5554,7 +5553,7 @@
 "\n"
 "行   番号   文:"
 
-#: src/readelf.c:8991
+#: src/readelf.c:9334
 msgid ""
 "\n"
 "Line number statements:"
@@ -5562,129 +5561,129 @@
 "\n"
 "行   番号   文:"
 
-#: src/readelf.c:9006
+#: src/readelf.c:9349
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr ""
 
-#: src/readelf.c:9040
+#: src/readelf.c:9383
 #, fuzzy, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
 
-#: src/readelf.c:9044
+#: src/readelf.c:9387
 #, fuzzy, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr " 特殊命令コード %u: アドレス+%u = %s, 行%+d = %zu\n"
 
-#: src/readelf.c:9047
+#: src/readelf.c:9390
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ""
 
-#: src/readelf.c:9065
+#: src/readelf.c:9408
 #, c-format
 msgid " extended opcode %u: "
 msgstr " 拡張命令コード %u: "
 
-#: src/readelf.c:9070
+#: src/readelf.c:9413
 #, fuzzy
 msgid " end of sequence"
 msgstr "列の終わり"
 
-#: src/readelf.c:9088
+#: src/readelf.c:9431
 #, fuzzy, c-format
 msgid " set address to "
 msgstr "アドレスを %s に設定する\n"
 
-#: src/readelf.c:9116
+#: src/readelf.c:9459
 #, 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:9130
+#: src/readelf.c:9473
 #, fuzzy, c-format
 msgid " set discriminator to %u\n"
 msgstr "カラムを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:9157
+#: src/readelf.c:9500
 #, c-format
 msgid " set inlined context %u, function name %s (0x%x)\n"
 msgstr ""
 
-#: src/readelf.c:9181
+#: src/readelf.c:9524
 #, fuzzy, c-format
 #| msgid "Also show function names"
 msgid " set function name %s (0x%x)\n"
 msgstr "関数名も表示"
 
 #. Unknown, ignore it.
-#: src/readelf.c:9188
+#: src/readelf.c:9531
 msgid " unknown opcode"
 msgstr "不明なオペコード"
 
 #. Takes no argument.
-#: src/readelf.c:9200
+#: src/readelf.c:9543
 msgid " copy"
 msgstr "複写"
 
-#: src/readelf.c:9211
+#: src/readelf.c:9554
 #, fuzzy, c-format
 msgid " advance address by %u to "
 msgstr "アドレスを %u だけ進めて %s にする\n"
 
-#: src/readelf.c:9215 src/readelf.c:9276
+#: src/readelf.c:9558 src/readelf.c:9619
 #, c-format
 msgid ", op_index to %u"
 msgstr ""
 
-#: src/readelf.c:9227
+#: src/readelf.c:9570
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr "行を定数 %d だけ進めて %<PRId64> にする\n"
 
-#: src/readelf.c:9237
+#: src/readelf.c:9580
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:9248
+#: src/readelf.c:9591
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr "カラムを %<PRIu64> に設定する\n"
 
-#: src/readelf.c:9255
+#: src/readelf.c:9598
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " '%s' を %<PRIuFAST8> に設定する\n"
 
 #. Takes no argument.
-#: src/readelf.c:9261
+#: src/readelf.c:9604
 msgid " set basic block flag"
 msgstr "基本ブロックフラグを設定する"
 
-#: src/readelf.c:9272
+#: src/readelf.c:9615
 #, fuzzy, c-format
 msgid " advance address by constant %u to "
 msgstr "アドレスを定数 %u だけ済めて %s にする\n"
 
-#: src/readelf.c:9292
+#: src/readelf.c:9635
 #, fuzzy, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr "アドレスを固定値 %u だけ進めて %s にする\n"
 
 #. Takes no argument.
-#: src/readelf.c:9302
+#: src/readelf.c:9645
 msgid " set prologue end flag"
 msgstr "プロローグ終了フラグを設定する"
 
 #. Takes no argument.
-#: src/readelf.c:9307
+#: src/readelf.c:9650
 msgid " set epilogue begin flag"
 msgstr "エピローグ開始フラグを設定する"
 
-#: src/readelf.c:9317
+#: src/readelf.c:9660
 #, fuzzy, c-format
 msgid " set isa to %u\n"
 msgstr " ファイルを %<PRIu64> に設定する\n"
@@ -5692,88 +5691,88 @@
 #. 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:9326
+#: src/readelf.c:9669
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
 msgstr[0] " %<PRIu8> 個のパラメーターのある不明な命令コード:"
 
-#: src/readelf.c:9527
+#: src/readelf.c:9870
 #, fuzzy, c-format
 msgid "    <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:9567
+#: src/readelf.c:9910
 #, fuzzy, c-format
 msgid "invalid loclists data"
 msgstr "不当なデータ"
 
-#: src/readelf.c:10037 src/readelf.c:11082
+#: src/readelf.c:10380 src/readelf.c:11425
 #, fuzzy
 msgid "   <INVALID DATA>\n"
 msgstr " [%6tx]  <不当なデータ>\n"
 
-#: src/readelf.c:10168
+#: src/readelf.c:10511
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** 最後のセクションの終端していない文字列"
 
-#: src/readelf.c:10191
+#: src/readelf.c:10534
 #, fuzzy, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr "%*s*** 最後のセクションの終端していない文字列"
 
-#: src/readelf.c:10286
+#: src/readelf.c:10629
 #, fuzzy, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr "  所有者         大きさ\n"
 
-#: src/readelf.c:10298
+#: src/readelf.c:10641
 #, fuzzy, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10304 src/readelf.c:11202
+#: src/readelf.c:10647 src/readelf.c:11546
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr ""
 
-#: src/readelf.c:10311
+#: src/readelf.c:10654
 #, fuzzy, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr "  入口点アドレス     :               %#<PRIx64>\n"
 
-#: src/readelf.c:10340
+#: src/readelf.c:10683
 #, fuzzy, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10348
+#: src/readelf.c:10691
 #, fuzzy, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10373
+#: src/readelf.c:10716
 #, fuzzy, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr " %<PRIu8> 個のパラメーターのある不明な命令コード:"
 
-#: src/readelf.c:10380
+#: src/readelf.c:10723
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr ""
 
-#: src/readelf.c:10392
+#: src/readelf.c:10735
 #, fuzzy, c-format
 msgid " %<PRIu8> arguments:"
 msgstr "  [%*<PRIuFAST8>]  %hhu パラメーター\n"
 
-#: src/readelf.c:10407
+#: src/readelf.c:10750
 #, c-format
 msgid " no arguments."
 msgstr ""
 
-#: src/readelf.c:10608
+#: src/readelf.c:10951
 #, c-format
 msgid " [%5d] DIE offset: %6<PRId64>, CU DIE offset: %6<PRId64>, name: %s\n"
 msgstr ""
@@ -5781,7 +5780,7 @@
 
 # # "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s':\n"
 # # " %4$*s  文字列\n" がエラーになるのは何故? 取り敢えず fuzzy扱い
-#: src/readelf.c:10663
+#: src/readelf.c:11006
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5793,37 +5792,37 @@
 " %4$*s  文字列\n"
 
 #. TRANS: the debugstr| prefix makes the string unique.
-#: src/readelf.c:10668
+#: src/readelf.c:11011
 msgctxt "debugstr"
 msgid "Offset"
 msgstr ""
 
-#: src/readelf.c:10678
+#: src/readelf.c:11021
 #, fuzzy, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** 文字列の読込み中にエラー: %s\n"
 
-#: src/readelf.c:10800
+#: src/readelf.c:11143
 #, fuzzy, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10802
+#: src/readelf.c:11145
 #, fuzzy, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10816
+#: src/readelf.c:11159
 #, fuzzy, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:10825
+#: src/readelf.c:11168
 #, fuzzy, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:10879
+#: src/readelf.c:11222
 #, c-format
 msgid ""
 "\n"
@@ -5832,7 +5831,7 @@
 "\n"
 "呼出しフレーム検索テーブルセクション [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:10981
+#: src/readelf.c:11324
 #, c-format
 msgid ""
 "\n"
@@ -5841,22 +5840,22 @@
 "\n"
 "例外取扱いテーブルセクション [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:11004
+#: src/readelf.c:11347
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " LPStart コード化:    %#x "
 
-#: src/readelf.c:11016
+#: src/readelf.c:11359
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr "TType コード化:       %#x "
 
-#: src/readelf.c:11033
+#: src/readelf.c:11376
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr "呼出しサイトコード化: %#x "
 
-#: src/readelf.c:11048
+#: src/readelf.c:11391
 msgid ""
 "\n"
 " Call site table:"
@@ -5864,7 +5863,7 @@
 "\n"
 " 呼出しサイトテーブル:"
 
-#: src/readelf.c:11064
+#: src/readelf.c:11407
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -5877,12 +5876,12 @@
 "        離着陸場:           %#<PRIx64>\n"
 "        行動:               %u\n"
 
-#: src/readelf.c:11137
+#: src/readelf.c:11480
 #, c-format
 msgid "invalid TType encoding"
 msgstr "不当な TType コード化"
 
-#: src/readelf.c:11164
+#: src/readelf.c:11507
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5892,37 +5891,42 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:11193
+#: src/readelf.c:11536
 #, fuzzy, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:11211
+#: src/readelf.c:11555
 #, fuzzy, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:11218
+#: src/readelf.c:11562
 #, fuzzy, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:11225
+#: src/readelf.c:11569
 #, fuzzy, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:11232
+#: src/readelf.c:11576
 #, fuzzy, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " (オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:11239
+#: src/readelf.c:11586
+#, fuzzy, c-format
+msgid " shortcut offset: %#<PRIx32>\n"
+msgstr " (終了オフセット: %#<PRIx64>)"
+
+#: src/readelf.c:11594
 #, fuzzy, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " (終了オフセット: %#<PRIx64>)"
 
-#: src/readelf.c:11253
+#: src/readelf.c:11608
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5932,7 +5936,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:11278
+#: src/readelf.c:11633
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5942,7 +5946,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:11307
+#: src/readelf.c:11662
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5952,7 +5956,7 @@
 "オフセット %3$#<PRIx64> の DWARF セクション [%1$2zu] '%2$s' には %4$zu 個の項"
 "目があります:\n"
 
-#: src/readelf.c:11339
+#: src/readelf.c:11705
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5961,18 +5965,37 @@
 "\n"
 "オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
 
-#: src/readelf.c:11477
+#: src/readelf.c:11790
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Shortcut table at offset %#<PRIx32> contains %zu slots:\n"
+msgstr ""
+"\n"
+"オフセット %#0<PRIx64> に不当なシンボルテーブル\n"
+
+#: src/readelf.c:11802
+#, c-format
+msgid "Language of main: %s\n"
+msgstr ""
+
+#: src/readelf.c:11803
+#, c-format
+msgid "Name of main: "
+msgstr ""
+
+#: src/readelf.c:11886
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "デバッグ内容記述子を得られません: %s"
 
-#: src/readelf.c:11843 src/readelf.c:12463 src/readelf.c:12573
-#: src/readelf.c:12630
+#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982
+#: src/readelf.c:13039
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "コアノートデータの変換ができません: %s"
 
-#: src/readelf.c:12207
+#: src/readelf.c:12616
 #, c-format
 msgid ""
 "\n"
@@ -5981,21 +6004,21 @@
 "\n"
 "%*s... < %u 回の繰返し> ..."
 
-#: src/readelf.c:12709
+#: src/readelf.c:13118
 msgid "  Owner          Data size  Type\n"
 msgstr "  所有者         データ大きさタイプ\n"
 
-#: src/readelf.c:12737
+#: src/readelf.c:13146
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12789
+#: src/readelf.c:13198
 #, c-format
 msgid "cannot get content of note: %s"
 msgstr "ノートセクションの内容を取得できません: %s"
 
-#: src/readelf.c:12822
+#: src/readelf.c:13231
 #, c-format
 msgid ""
 "\n"
@@ -6005,7 +6028,7 @@
 "オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのノートセクション [%1$2zu] "
 "'%2$s':\n"
 
-#: src/readelf.c:12845
+#: src/readelf.c:13254
 #, c-format
 msgid ""
 "\n"
@@ -6014,7 +6037,7 @@
 "\n"
 "オフセット %2$#0<PRIx64> の %1$<PRIu64> バイトのノートセグメント:\n"
 
-#: src/readelf.c:12892
+#: src/readelf.c:13301
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6023,12 +6046,12 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:12919 src/readelf.c:12970
+#: src/readelf.c:13328 src/readelf.c:13379
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
 
-#: src/readelf.c:12924
+#: src/readelf.c:13333
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6038,7 +6061,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:12929
+#: src/readelf.c:13338
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6049,7 +6072,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:12943
+#: src/readelf.c:13352
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6058,7 +6081,7 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:12975
+#: src/readelf.c:13384
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6068,7 +6091,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:12980
+#: src/readelf.c:13389
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6079,7 +6102,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:13028
+#: src/readelf.c:13437
 #, c-format
 msgid ""
 "\n"
@@ -6088,7 +6111,7 @@
 "\n"
 "セクション [%lu] がありません"
 
-#: src/readelf.c:13058
+#: src/readelf.c:13467
 #, c-format
 msgid ""
 "\n"
@@ -6097,12 +6120,12 @@
 "\n"
 "セクション '%s' がありません"
 
-#: src/readelf.c:13113
+#: src/readelf.c:13522
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "アーカイブのシンボル索引 '%s' を得られません: %s"
 
-#: src/readelf.c:13116
+#: src/readelf.c:13525
 #, c-format
 msgid ""
 "\n"
@@ -6111,7 +6134,7 @@
 "\n"
 "アーカイブ '%s' にはシンボル索引がありません\n"
 
-#: src/readelf.c:13120
+#: src/readelf.c:13529
 #, c-format
 msgid ""
 "\n"
@@ -6120,12 +6143,12 @@
 "\n"
 "アーカイブ '%s' の索引は %zu 個の項目を持ちます:\n"
 
-#: src/readelf.c:13138
+#: src/readelf.c:13547
 #, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "'%2$s' の オフセット %1$zu のメンバーを抽出できません: %3$s"
 
-#: src/readelf.c:13143
+#: src/readelf.c:13552
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "アーカイブメンバー '%s' には以下があります:\n"
@@ -6609,7 +6632,7 @@
 msgid "%s: error while getting shdrstrndx: %s"
 msgstr "%s: shdrstrndx の取得中にエラー: %s"
 
-#: src/strip.c:1712 src/strip.c:2553
+#: src/strip.c:1712 src/strip.c:2552
 #, c-format
 msgid "%s: error updating shdrstrndx: %s"
 msgstr "%s: shdrstrndx の更新中にエラー: %s"
@@ -6643,7 +6666,7 @@
 msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
 msgstr ""
 
-#: src/strip.c:2469 src/strip.c:2577
+#: src/strip.c:2469 src/strip.c:2574
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "'%s' を書込み中: %s"
@@ -6663,22 +6686,22 @@
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: ELF ヘッダーを生成している間にエラー: %s"
 
-#: src/strip.c:2562
+#: src/strip.c:2560
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: ファイルを読込み中にエラー: %s"
 
-#: src/strip.c:2602 src/strip.c:2622
+#: src/strip.c:2599 src/strip.c:2619
 #, c-format
 msgid "while writing '%s'"
 msgstr "書き込み中 '%s'"
 
-#: src/strip.c:2659 src/strip.c:2666
+#: src/strip.c:2656 src/strip.c:2663
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "'%s' の終了中にエラー: %s"
 
-#: src/strip.c:2683 src/strip.c:2759
+#: src/strip.c:2680 src/strip.c:2756
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "'%s' のアクセスと変更日付を設定できません"
@@ -7127,7 +7150,7 @@
 "section PATH SECTION-NAME\n"
 msgstr ""
 
-#: tests/backtrace.c:483
+#: tests/backtrace.c:491
 msgid "Run executable"
 msgstr ""
 
@@ -7139,6 +7162,11 @@
 msgid "Show instances of inlined functions"
 msgstr "インライン関数の実体を表示"
 
+#, c-format
+#~ msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
+#~ msgstr ""
+#~ "セクション [%2d] '%s': セクション項目サイズが ElfXX_Rela と一致しません\n"
+
 #, fuzzy, c-format
 #~ msgid "cannot get .debug_addr section data: %s"
 #~ msgstr "セクションデータを割り当てられません: %s"
diff --git a/po/pl.po b/po/pl.po
index 31ee867..a8bf8ce 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: 2023-03-03 16:09+0100\n"
+"POT-Creation-Date: 2023-11-03 17:36+0100\n"
 "PO-Revision-Date: 2021-02-22 16:25+0100\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
@@ -54,7 +54,7 @@
 "BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI\n"
 "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
 
-#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11793
+#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202
 #: src/unstrip.c:311
 #, c-format
 msgid "memory exhausted"
@@ -537,7 +537,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79
 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
+#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<nieznany>"
 
@@ -631,7 +631,7 @@
 msgid "invalid size of destination operand"
 msgstr "nieprawidłowy rozmiar operandu docelowego"
 
-#: libelf/elf_error.c:86 src/readelf.c:6415
+#: libelf/elf_error.c:86 src/readelf.c:6758
 #, c-format
 msgid "invalid encoding"
 msgstr "nieprawidłowe kodowanie"
@@ -716,8 +716,8 @@
 msgid "invalid section header"
 msgstr "nieprawidłowy nagłówek sekcji"
 
-#: libelf/elf_error.c:190 src/readelf.c:10294 src/readelf.c:10899
-#: src/readelf.c:11000 src/readelf.c:11188
+#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242
+#: src/readelf.c:11343 src/readelf.c:11531
 #, c-format
 msgid "invalid data"
 msgstr "nieprawidłowe dane"
@@ -1374,8 +1374,8 @@
 msgstr "Zmniejsza wyjście błędów (odpowiednik opcji --verbose)"
 
 #. Strings for arguments in help texts.
-#: src/elfclassify.c:979 src/elfcompress.c:1433 src/elflint.c:76
-#: src/readelf.c:160
+#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77
+#: src/readelf.c:161
 msgid "FILE..."
 msgstr "PLIK…"
 
@@ -1699,21 +1699,21 @@
 msgstr "nieznany typ kompresji „%s”"
 
 #. We need at least one input file.
-#: src/elfcompress.c:162 src/elfcompress.c:1444
+#: src/elfcompress.c:162 src/elfcompress.c:1447
 #, c-format
 msgid "No input file given"
 msgstr "Nie podano pliku wejściowego"
 
-#: src/elfcompress.c:168 src/elfcompress.c:1448
+#: src/elfcompress.c:168 src/elfcompress.c:1451
 #, c-format
 msgid "Only one input file allowed together with '-o'"
 msgstr "Tylko jeden plik wejściowy jest dozwolony z „-o”"
 
-#: src/elfcompress.c:1405
+#: src/elfcompress.c:1408
 msgid "Place (de)compressed output into FILE"
 msgstr "Umieszcza zdekompresowane wyjście w PLIKU"
 
-#: src/elfcompress.c:1408
+#: src/elfcompress.c:1411
 #, fuzzy
 #| msgid ""
 #| "What type of compression to apply. TYPE can be 'none' (decompress), "
@@ -1729,7 +1729,7 @@
 "„zlib” (kompresja zlib ELF, domyślna, „zlib-gabi” to alias) lub „zlib-"
 "gnu” (kompresja .zdebug w stylu GNU, „gnu” to alias)"
 
-#: src/elfcompress.c:1412
+#: src/elfcompress.c:1415
 msgid ""
 "SECTION name to (de)compress, SECTION is an extended wildcard pattern "
 "(defaults to '.?(z)debug*')"
@@ -1737,11 +1737,11 @@
 "Nazwa SEKCJI do (de)kompresowania, SEKCJA jest rozszerzonym wzorem "
 "(domyślnie „.?(z)debug*”)"
 
-#: src/elfcompress.c:1415
+#: src/elfcompress.c:1418
 msgid "Print a message for each section being (de)compressed"
 msgstr "Wyświetla komunikat dla każdej (de)kompresowanej sekcji"
 
-#: src/elfcompress.c:1418
+#: src/elfcompress.c:1421
 msgid ""
 "Force compression of section even if it would become larger or update/"
 "rewrite the file even if no section would be (de)compressed"
@@ -1750,31 +1750,31 @@
 "zaktualizowanie/przepisanie pliku, nawet jeśli żadna sekcja nie zostałaby "
 "(zde)kompresowana"
 
-#: src/elfcompress.c:1421 src/strip.c:92
+#: src/elfcompress.c:1424 src/strip.c:92
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr "Łagodzi kilka reguł, aby obsłużyć lekko uszkodzone pliki ELF"
 
-#: src/elfcompress.c:1424
+#: src/elfcompress.c:1427
 msgid "Be silent when a section cannot be compressed"
 msgstr "Bez zgłaszania, kiedy nie można zdekompresować sekcji"
 
-#: src/elfcompress.c:1434
+#: src/elfcompress.c:1437
 msgid "Compress or decompress sections in an ELF file."
 msgstr "Kompresuje lub dekompresuje sekcje w pliku ELF."
 
-#: src/elflint.c:62
+#: src/elflint.c:63
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Bardzo ścisłe sprawdzanie, cechy poziomu 2 flag."
 
-#: src/elflint.c:63
+#: src/elflint.c:64
 msgid "Do not print anything if successful"
 msgstr "Nie wypisywanie niczego w przypadku powodzenia"
 
-#: src/elflint.c:64
+#: src/elflint.c:65
 msgid "Binary is a separate debuginfo file"
 msgstr "Plik binarny jest oddzielnym plikiem debuginfo"
 
-#: src/elflint.c:66
+#: src/elflint.c:67
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1783,172 +1783,172 @@
 "w pewien sposób"
 
 #. Short description of program.
-#: src/elflint.c:72
+#: src/elflint.c:73
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 "Szczegółowe sprawdzanie zgodności plików ELF ze specyfikacją gABI/psABI."
 
-#: src/elflint.c:153 src/readelf.c:391
+#: src/elflint.c:154 src/readelf.c:413
 #, c-format
 msgid "cannot open input file '%s'"
 msgstr "nie można otworzyć pliku wejściowego „%s”"
 
-#: src/elflint.c:160
+#: src/elflint.c:161
 #, c-format
 msgid "cannot generate Elf descriptor for '%s': %s\n"
 msgstr "nie można utworzyć deskryptora ELF dla „%s”: %s\n"
 
-#: src/elflint.c:179
+#: src/elflint.c:180
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "błąd podczas zamykania deskryptora ELF: %s\n"
 
-#: src/elflint.c:183
+#: src/elflint.c:184
 msgid "No errors"
 msgstr "Brak błędów"
 
-#: src/elflint.c:218 src/readelf.c:603
+#: src/elflint.c:219 src/readelf.c:625
 msgid "Missing file name.\n"
 msgstr "Brak nazwy pliku.\n"
 
-#: src/elflint.c:283
+#: src/elflint.c:284
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr " błąd podczas zwalniania deskryptora pod-ELF: %s\n"
 
 #. We cannot do anything.
-#: src/elflint.c:291
+#: src/elflint.c:292
 #, c-format
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "To nie jest plik ELF — ma błędne bajty magiczne na początku\n"
 
-#: src/elflint.c:357
+#: src/elflint.c:358
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr "e_ident[%d] == %d nie jest znaną klasą\n"
 
-#: src/elflint.c:362
+#: src/elflint.c:363
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr "e_ident[%d] == %d nie jest znanym kodowaniem danych\n"
 
-#: src/elflint.c:366
+#: src/elflint.c:367
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr "nieznany numer wersji nagłówka ELF e_ident[%d] == %d\n"
 
-#: src/elflint.c:374
+#: src/elflint.c:375
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr "nieobsługiwane ABI systemu operacyjnego e_ident[%d] == „%s”\n"
 
-#: src/elflint.c:380
+#: src/elflint.c:381
 #, c-format
 msgid "unsupported ABI version e_ident[%d] == %d\n"
 msgstr "nieobsługiwana wersja ABI e_ident[%d] == %d\n"
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] nie wynosi zero\n"
 
-#: src/elflint.c:390
+#: src/elflint.c:391
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "nieznany typ pliku obiektu %d\n"
 
-#: src/elflint.c:397
+#: src/elflint.c:398
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "nieznany typ komputera %d\n"
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file version\n"
 msgstr "nieznana wersja pliku obiektu\n"
 
-#: src/elflint.c:407
+#: src/elflint.c:408
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "nieprawidłowy offset nagłówka programu\n"
 
-#: src/elflint.c:409
+#: src/elflint.c:410
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 "pliki wykonywalne i DSO nie mogą mieć zerowego offsetu nagłówka programu\n"
 
-#: src/elflint.c:413
+#: src/elflint.c:414
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr "nieprawidłowa liczba wpisów nagłówka programu\n"
 
-#: src/elflint.c:421
+#: src/elflint.c:422
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "nieprawidłowy offset tabeli nagłówków sekcji\n"
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "section header table must be present\n"
 msgstr "tabela nagłówków sekcji musi istnieć\n"
 
-#: src/elflint.c:438
+#: src/elflint.c:439
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr "nieprawidłowa liczba wpisów tabeli nagłówków sekcji\n"
 
-#: src/elflint.c:455
+#: src/elflint.c:456
 #, c-format
 msgid "invalid section header index\n"
 msgstr "nieprawidłowy indeks nagłówka sekcji\n"
 
-#: src/elflint.c:473
+#: src/elflint.c:474
 #, c-format
 msgid "Can only check %u headers, shnum was %u\n"
 msgstr "Można sprawdzić tylko nagłówki %u, shnum wynosiło %u\n"
 
-#: src/elflint.c:487
+#: src/elflint.c:488
 #, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "nieprawidłowa liczba wpisów tabeli nagłówka programu\n"
 
-#: src/elflint.c:504
+#: src/elflint.c:505
 #, c-format
 msgid "Can only check %u headers, phnum was %u\n"
 msgstr "Można sprawdzić tylko nagłówki %u, phnum wynosiło %u\n"
 
-#: src/elflint.c:509
+#: src/elflint.c:510
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "nieprawidłowe flagi komputera: %s\n"
 
-#: src/elflint.c:516 src/elflint.c:533
+#: src/elflint.c:517 src/elflint.c:534
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr "nieprawidłowy rozmiar nagłówka ELF: %hd\n"
 
-#: src/elflint.c:519 src/elflint.c:536
+#: src/elflint.c:520 src/elflint.c:537
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr "nieprawidłowa rozmiar nagłówka programu: %hd\n"
 
-#: src/elflint.c:522 src/elflint.c:539
+#: src/elflint.c:523 src/elflint.c:540
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr "nieprawidłowe położenie lub rozmiar nagłówka programu\n"
 
-#: src/elflint.c:525 src/elflint.c:542
+#: src/elflint.c:526 src/elflint.c:543
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr "nieprawidłowy rozmiar nagłówka sekcji: %hd\n"
 
-#: src/elflint.c:528 src/elflint.c:545
+#: src/elflint.c:529 src/elflint.c:546
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr "nieprawidłowe położenie lub rozmiar nagłówka sekcji\n"
 
-#: src/elflint.c:590
+#: src/elflint.c:591
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1956,21 +1956,21 @@
 msgstr ""
 "sekcja [%2d] „%s”: sekcja z flagą SHF_GROUP nie jest częścią grupy sekcji\n"
 
-#: src/elflint.c:594
+#: src/elflint.c:595
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
 msgstr ""
 "sekcja [%2d] „%s”: grupa sekcji [%2zu] „%s” nie poprzedza elementu grupy\n"
 
-#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
-#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
-#: src/elflint.c:3254 src/elflint.c:3456 src/elflint.c:4468
+#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610
+#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981
+#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać danych sekcji\n"
 
-#: src/elflint.c:623 src/elflint.c:1662
+#: src/elflint.c:624 src/elflint.c:1699
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1979,7 +1979,7 @@
 "sekcja [%2d] „%s”: użyta jako tabela ciągów dla sekcji [%2d] „%s”, ale nie "
 "jest typu SHT_STRTAB\n"
 
-#: src/elflint.c:646
+#: src/elflint.c:647
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1988,12 +1988,12 @@
 "sekcja [%2d] „%s”: tabela symboli nie może mieć więcej niż jednej "
 "rozszerzonej sekcji indeksów\n"
 
-#: src/elflint.c:658
+#: src/elflint.c:659
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr "sekcja [%2u] „%s”: rozmiar wpisu nie zgadza się z ElfXX_Sym\n"
 
-#: src/elflint.c:662
+#: src/elflint.c:663
 #, c-format
 msgid ""
 "section [%2u] '%s': number of local entries in 'st_info' larger than table "
@@ -2002,33 +2002,33 @@
 "sekcja [%2u] „%s”: liczba lokalnych wpisów w „st_info” jest większa niż "
 "rozmiar tabeli\n"
 
-#: src/elflint.c:671
+#: src/elflint.c:672
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać symbolu %d: %s\n"
 
-#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
-#: src/elflint.c:688 src/elflint.c:691
+#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686
+#: src/elflint.c:689 src/elflint.c:692
 #, c-format
 msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
 msgstr "sekcja [%2d] „%s”: „%s” w zerowym wpisie nie jest zerem\n"
 
-#: src/elflint.c:694
+#: src/elflint.c:695
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr "sekcja [%2d] „%s”: XINDEX dla zerowego wpisu nie jest zerem\n"
 
-#: src/elflint.c:704
+#: src/elflint.c:705
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać symbolu %zu: %s\n"
 
-#: src/elflint.c:713
+#: src/elflint.c:714
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr "sekcja [%2d] „%s”: symbol %zu: nieprawidłowa wartość nazwy\n"
 
-#: src/elflint.c:728
+#: src/elflint.c:729
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
@@ -2037,7 +2037,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): za duży indeks sekcji, ale nie ma sekcji "
 "rozszerzonych indeksów sekcji\n"
 
-#: src/elflint.c:734
+#: src/elflint.c:735
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
@@ -2047,28 +2047,28 @@
 "zmieściłby się w st_shndx (%<PRIu32>)\n"
 
 #. || sym->st_shndx > SHN_HIRESERVE  always false
-#: src/elflint.c:746
+#: src/elflint.c:747
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
 msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nieprawidłowy indeks sekcji\n"
 
-#: src/elflint.c:754
+#: src/elflint.c:755
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
 msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nieznany typ\n"
 
-#: src/elflint.c:760
+#: src/elflint.c:761
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
 msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nieznane dowiązanie symbolu\n"
 
-#: src/elflint.c:765
+#: src/elflint.c:766
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
 msgstr ""
 "sekcja [%2d] „%s”: symbol %zu (%s): unikalny symbol nie jest typem obiektu\n"
 
-#: src/elflint.c:773
+#: src/elflint.c:774
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
@@ -2077,26 +2077,26 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): COMMON jest dozwolone tylko w plikach "
 "relokowalnych\n"
 
-#: src/elflint.c:777
+#: src/elflint.c:778
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
 msgstr ""
 "sekcja [%2d] „%s”: symbol %zu (%s): lokalne symbole COMMON to nonsens\n"
 
-#: src/elflint.c:781
+#: src/elflint.c:782
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
 msgstr ""
 "sekcja [%2d] „%s”: symbol %zu (%s): funkcja w sekcji COMMON to nonsens\n"
 
-#: src/elflint.c:832
+#: src/elflint.c:833
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
 msgstr "sekcja [%2d] „%s”: symbol %zu (%s): st_value spoza zakresu\n"
 
-#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
@@ -2105,7 +2105,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s) nie mieści się w całości we wskazywanej "
 "sekcji [%2d] „%s”\n"
 
-#: src/elflint.c:847
+#: src/elflint.c:848
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
@@ -2114,7 +2114,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): wskazywana sekcja [%2d] „%s” nie ma "
 "ustawionej flagi SHF_TLS\n"
 
-#: src/elflint.c:857 src/elflint.c:905
+#: src/elflint.c:858 src/elflint.c:906
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
@@ -2123,7 +2123,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): st_value spoza zakresu wskazywanej "
 "sekcji [%2d] „%s”\n"
 
-#: src/elflint.c:884
+#: src/elflint.c:885
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
@@ -2132,7 +2132,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): symbol TLS, ale brak wpisu TLS nagłówka "
 "programu\n"
 
-#: src/elflint.c:890
+#: src/elflint.c:891
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
@@ -2141,7 +2141,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): symbol TLS, ale nie można uzyskać wpisu "
 "TLS nagłówka programu\n"
 
-#: src/elflint.c:898
+#: src/elflint.c:899
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
@@ -2150,7 +2150,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): st_value pomija wskazywaną sekcję [%2d] "
 "„%s”\n"
 
-#: src/elflint.c:925
+#: src/elflint.c:926
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
@@ -2159,7 +2159,7 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): lokalny symbol spoza zakresu określonego "
 "w sh_info\n"
 
-#: src/elflint.c:932
+#: src/elflint.c:933
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
@@ -2168,12 +2168,12 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): nielokalny symbol spoza zakresu "
 "określonego w sh_info\n"
 
-#: src/elflint.c:939
+#: src/elflint.c:940
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
 msgstr "sekcja [%2d] „%s”: symbol %zu (%s): nielokalny symbol sekcji\n"
 
-#: src/elflint.c:989
+#: src/elflint.c:990
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -2182,7 +2182,7 @@
 "sekcja [%2d] „%s”: symbol _GLOBAL_OFFSET_TABLE_ odnosi się do błędnej sekcji "
 "[%2d]\n"
 
-#: src/elflint.c:996
+#: src/elflint.c:997
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -2194,7 +2194,7 @@
 #. This test is more strict than the psABIs which
 #. usually allow the symbol to be in the middle of
 #. the .got section, allowing negative offsets.
-#: src/elflint.c:1012
+#: src/elflint.c:1013
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -2203,7 +2203,7 @@
 "sekcja [%2d] „%s”: wartość symbolu _GLOBAL_OFFSET_TABLE_ %#<PRIx64> nie "
 "pasuje do adresu sekcji %s %#<PRIx64>\n"
 
-#: src/elflint.c:1019
+#: src/elflint.c:1020
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -2212,7 +2212,7 @@
 "sekcja [%2d] „%s”: rozmiar symbolu _GLOBAL_OFFSET_TABLE_ %<PRIu64> nie "
 "pasuje do rozmiaru sekcji %s %<PRIu64>\n"
 
-#: src/elflint.c:1027
+#: src/elflint.c:1028
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -2221,7 +2221,7 @@
 "sekcja [%2d] „%s”: symbol _GLOBAL_OFFSET_TABLE_ istnieje, ale brak sekcji ."
 "got\n"
 
-#: src/elflint.c:1043
+#: src/elflint.c:1044
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -2230,7 +2230,7 @@
 "sekcja [%2d] „%s”: wartość symbolu _DYNAMIC_ %#<PRIx64> nie pasuje do adresu "
 "segmentu dynamicznego %#<PRIx64>\n"
 
-#: src/elflint.c:1050
+#: src/elflint.c:1051
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -2239,7 +2239,7 @@
 "sekcja [%2d] „%s”: rozmiar symbolu _DYNAMIC_ %<PRIu64> nie pasuje do "
 "rozmiaru segmentu dynamicznego %<PRIu64>\n"
 
-#: src/elflint.c:1063
+#: src/elflint.c:1064
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
@@ -2248,28 +2248,28 @@
 "sekcja [%2d] „%s”: symbol %zu (%s): symbol w dynamicznej tabeli symboli "
 "z niedomyślną widocznością\n"
 
-#: src/elflint.c:1067
+#: src/elflint.c:1068
 #, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
 msgstr ""
 "sekcja [%2d] „%s”: symbol %zu (%s): ustawiono nieznany bit w st_other\n"
 
-#: src/elflint.c:1105
+#: src/elflint.c:1106
 #, c-format
 msgid "section [%2d] '%s': cannot get section data.\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać danych sekcji.\n"
 
-#: src/elflint.c:1121
+#: src/elflint.c:1122
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr "sekcja [%2d] „%s”: DT_RELCOUNT użyte dla tej sekcji RELA\n"
 
-#: src/elflint.c:1132 src/elflint.c:1185
+#: src/elflint.c:1133 src/elflint.c:1186
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
 msgstr "sekcja [%2d] „%s”: DT_RELCOUNT %d za duże dla tej sekcji\n"
 
-#: src/elflint.c:1157 src/elflint.c:1210
+#: src/elflint.c:1158 src/elflint.c:1211
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -2278,7 +2278,7 @@
 "sekcja [%2d] „%s”: relokacje względne po indeksie %d podanym przez "
 "DT_RELCOUNT\n"
 
-#: src/elflint.c:1163 src/elflint.c:1216
+#: src/elflint.c:1164 src/elflint.c:1217
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -2287,50 +2287,45 @@
 "sekcja [%2d] „%s”: relokacja bezwzględna pod indeksem %zu; DT_RELCOUNT podał "
 "%d relokacji względnych\n"
 
-#: src/elflint.c:1175
+#: src/elflint.c:1176
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr "sekcja [%2d] „%s”: DT_RELACOUNT użyte dla tej sekcji REL\n"
 
-#: src/elflint.c:1258
+#: src/elflint.c:1259
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr "sekcja [%2d] „%s”: nieprawidłowy indeks sekcji docelowej\n"
 
-#: src/elflint.c:1270
+#: src/elflint.c:1271
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr "sekcja [%2d] „%s”: nieprawidłowy typ sekcji docelowej\n"
 
-#: src/elflint.c:1278
+#: src/elflint.c:1279
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr "sekcja [%2d] „%s”: sh_info musi wynosić zero\n"
 
-#: src/elflint.c:1286
+#: src/elflint.c:1287
 #, c-format
 msgid ""
 "section [%2d] '%s': no relocations for merge-able string sections possible\n"
 msgstr ""
 "sekcja [%2d] „%s”: relokacje dla sekcji złączalnych ciągów są niemożliwe\n"
 
-#: src/elflint.c:1294
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr "sekcja [%2d] „%s”: rozmiar wpisu sekcji nie zgadza się z ElfXX_Rela\n"
-
-#: src/elflint.c:1354
+#: src/elflint.c:1365
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 "flaga relokacji tekstu jest ustawiona, ale nie ma segmentu tylko do odczytu\n"
 
-#: src/elflint.c:1381
+#: src/elflint.c:1392
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr "sekcja [%2d] „%s”: relokacja %zu: nieprawidłowy typ\n"
 
-#: src/elflint.c:1389
+#: src/elflint.c:1400
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2339,12 +2334,12 @@
 "sekcja [%2d] „%s”: relokacja %zu: typ relokacji nieprawidłowy dla tego typu "
 "pliku\n"
 
-#: src/elflint.c:1397
+#: src/elflint.c:1408
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr "sekcja [%2d] „%s”: relokacja %zu: nieprawidłowy indeks symbolu\n"
 
-#: src/elflint.c:1415
+#: src/elflint.c:1426
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2353,12 +2348,12 @@
 "sekcja [%2d] „%s”: relokacja %zu: z %s można użyć tylko symbolu "
 "„_GLOBAL_OFFSET_TABLE_”\n"
 
-#: src/elflint.c:1432
+#: src/elflint.c:1443
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr "sekcja [%2d] „%s”: relokacja %zu: offset spoza zakresu\n"
 
-#: src/elflint.c:1447
+#: src/elflint.c:1458
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2366,7 +2361,7 @@
 msgstr ""
 "sekcja [%2d] „%s”: relokacja %zu: relokacja kopii względem symbolu typu %s\n"
 
-#: src/elflint.c:1468
+#: src/elflint.c:1479
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2375,23 +2370,23 @@
 "sekcja [%2d] „%s”: relokacja %zu: sekcja tylko do odczytu została "
 "zmodyfikowana, ale nie ustawiono flagi relokacji tekstu\n"
 
-#: src/elflint.c:1483
+#: src/elflint.c:1494
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr ""
 "sekcja [%2d] „%s”: relokacje względem wczytanych i niewczytanych danych\n"
 
-#: src/elflint.c:1523 src/elflint.c:1574
+#: src/elflint.c:1534 src/elflint.c:1585
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać relokacji %zu: %s\n"
 
-#: src/elflint.c:1650
+#: src/elflint.c:1687
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr "obecna jest więcej niż jedna sekcja dynamiczna\n"
 
-#: src/elflint.c:1668
+#: src/elflint.c:1705
 #, c-format
 msgid ""
 "section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2400,43 +2395,43 @@
 "sekcja [%2d]: wskazane jako tabela ciągów dla sekcji [%2d] „%s”, ale wartość "
 "dowiązania sekcji jest nieprawidłowa\n"
 
-#: src/elflint.c:1676
+#: src/elflint.c:1713
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr "sekcja [%2d] „%s”: rozmiar wpisu sekcji nie zgadza się z ElfXX_Dyn\n"
 
-#: src/elflint.c:1681 src/elflint.c:1970
+#: src/elflint.c:1718 src/elflint.c:2008
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr "sekcja [%2d] „%s”: sh_info nie wynosi zero\n"
 
-#: src/elflint.c:1691
+#: src/elflint.c:1728
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 "sekcja [%2d] „%s”: nie można uzyskać wpisu %zu sekcji dynamicznej: %s\n"
 
-#: src/elflint.c:1699
+#: src/elflint.c:1736
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr "sekcja [%2d] „%s”: wpisy nie-DT_NULL występują po wpisie DT_NULL\n"
 
-#: src/elflint.c:1706
+#: src/elflint.c:1743
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr "sekcja [%2d] „%s”: wpis %zu: nieznany znacznik\n"
 
-#: src/elflint.c:1717
+#: src/elflint.c:1754
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr "sekcja [%2d] „%s”: wpis %zu: więcej niż jeden wpis ze znacznikiem %s\n"
 
-#: src/elflint.c:1727
+#: src/elflint.c:1764
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr "sekcja [%2d] „%s”: wpis %zu: użyto znacznika %s poziomu 2\n"
 
-#: src/elflint.c:1745
+#: src/elflint.c:1782
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -2444,7 +2439,7 @@
 "sekcja [%2d] „%s”: wpis %zu: wartość DT_PLTREL musi wynosić DT_REL lub "
 "DT_RELA\n"
 
-#: src/elflint.c:1758
+#: src/elflint.c:1795
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -2453,14 +2448,14 @@
 "sekcja [%2d] „%s”: wpis %zu: wskaźnik nie pasuje do adresu sekcji [%2d] „%s” "
 "wskazywanej przez sh_link\n"
 
-#: src/elflint.c:1801
+#: src/elflint.c:1839
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
 msgstr ""
 "sekcja [%2d] „%s”: wpis %zu: wartość %s musi wskazywać na wczytany segment\n"
 
-#: src/elflint.c:1816
+#: src/elflint.c:1854
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -2469,48 +2464,48 @@
 "sekcja [%2d] „%s”: wpis %zu: wartość %s musi być prawidłowym offsetem "
 "w sekcji [%2d] „%s”\n"
 
-#: src/elflint.c:1836 src/elflint.c:1864
+#: src/elflint.c:1874 src/elflint.c:1902
 #, c-format
 msgid "section [%2d] '%s': contains %s entry but not %s\n"
 msgstr "sekcja [%2d] „%s”: zawiera wpis %s, ale nie %s\n"
 
-#: src/elflint.c:1848
+#: src/elflint.c:1886
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr "sekcja [%2d] „%s”: brak obowiązkowego znacznika %s\n"
 
-#: src/elflint.c:1857
+#: src/elflint.c:1895
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr "sekcja [%2d] „%s”: brak sekcji skrótów\n"
 
-#: src/elflint.c:1872 src/elflint.c:1879
+#: src/elflint.c:1910 src/elflint.c:1917
 #, c-format
 msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
 msgstr "sekcja [%2d] „%s”: nie wszystkie z %s, %s i %s są obecne\n"
 
-#: src/elflint.c:1889 src/elflint.c:1893
+#: src/elflint.c:1927 src/elflint.c:1931
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
 msgstr ""
 "sekcja [%2d] „%s”: brak znacznika %s w DSO oznaczonym podczas wstępnej "
 "konsolidacji\n"
 
-#: src/elflint.c:1899
+#: src/elflint.c:1937
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 "sekcja [%2d] „%s”: plik nie-DSO oznaczony jako zależność podczas wstępnej "
 "konsolidacji\n"
 
-#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
+#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
 msgstr ""
 "sekcja [%2d] „%s”: brak znacznika %s we wstępnie konsolidowanym pliku "
 "wykonywalnym\n"
 
-#: src/elflint.c:1934
+#: src/elflint.c:1972
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -2518,7 +2513,7 @@
 "sekcja [%2d] „%s”: tylko pliki relokowalne mogą mieć rozszerzoną sekcję "
 "indeksów\n"
 
-#: src/elflint.c:1944
+#: src/elflint.c:1982
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
@@ -2526,31 +2521,31 @@
 "sekcja [%2d] „%s”: sekcja rozszerzonych indeksów sekcji nie dla tabeli "
 "symboli\n"
 
-#: src/elflint.c:1948
+#: src/elflint.c:1986
 #, c-format
 msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
 msgstr ""
 "sekcja [%2d] „%s”: rozszerzony indeks sekcji sh_link [%2d] jest "
 "nieprawidłowy\n"
 
-#: src/elflint.c:1953
+#: src/elflint.c:1991
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr "nie można uzyskać danych dla sekcji symboli\n"
 
-#: src/elflint.c:1956
+#: src/elflint.c:1994
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr "sekcja [%2d] „%s”: rozmiar wpisu nie zgadza się z Elf32_Word\n"
 
-#: src/elflint.c:1965
+#: src/elflint.c:2003
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 "sekcja [%2d] „%s”: tabela rozszerzonych indeksów jest za mała dla tabeli "
 "symboli\n"
 
-#: src/elflint.c:1980
+#: src/elflint.c:2018
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -2559,24 +2554,24 @@
 "sekcja [%2d] „%s”: rozszerzony indeks sekcji w sekcji [%2zu] „%s” odwołuje "
 "się do tej samej tabeli symboli\n"
 
-#: src/elflint.c:1998
+#: src/elflint.c:2036
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr "symbol 0 musi mieć zerowy rozszerzony indeks sekcji\n"
 
-#: src/elflint.c:2010
+#: src/elflint.c:2048
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr "nie można uzyskać danych dla symbolu %zu\n"
 
-#: src/elflint.c:2015
+#: src/elflint.c:2053
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 "rozszerzony indeks sekcji wynosi %<PRIu32>, ale indeks symbolu nie wynosi "
 "XINDEX\n"
 
-#: src/elflint.c:2032 src/elflint.c:2089
+#: src/elflint.c:2070 src/elflint.c:2127
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
@@ -2584,43 +2579,43 @@
 "sekcja [%2d] „%s”: sekcja tabeli mieszającej jest za mała (%ld, oczekiwano "
 "%ld)\n"
 
-#: src/elflint.c:2046 src/elflint.c:2103
+#: src/elflint.c:2084 src/elflint.c:2141
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr "sekcja [%2d] „%s”: tabela łańcuchowa jest za duża\n"
 
-#: src/elflint.c:2060 src/elflint.c:2117
+#: src/elflint.c:2098 src/elflint.c:2155
 #, c-format
 msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
 msgstr ""
 "sekcja [%2d] „%s”: odwołanie do kubełka skrótu %zu jest spoza zakresu\n"
 
-#: src/elflint.c:2070
+#: src/elflint.c:2108
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 "sekcja [%2d] „%s”: odwołanie do łańcucha skrótu %zu jest spoza zakresu\n"
 
-#: src/elflint.c:2127
+#: src/elflint.c:2165
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 "sekcja [%2d] „%s”: odwołanie do łańcucha skrótu %<PRIu64> jest spoza "
 "zakresu\n"
 
-#: src/elflint.c:2140
+#: src/elflint.c:2178
 #, c-format
 msgid "section [%2d] '%s': not enough data\n"
 msgstr "sekcja [%2d] „%s”: brak wystarczającej ilości danych\n"
 
-#: src/elflint.c:2152
+#: src/elflint.c:2190
 #, c-format
 msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
 msgstr ""
 "sekcja [%2d] „%s”: rozmiar maski bitowej wynosi zero lub nie jest potęgą 2: "
 "%u\n"
 
-#: src/elflint.c:2168
+#: src/elflint.c:2206
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected at "
@@ -2629,13 +2624,13 @@
 "sekcja [%2d] „%s”: sekcja tabeli mieszającej jest za mała (wynosi %ld, "
 "oczekiwano co najmniej %ld)\n"
 
-#: src/elflint.c:2177
+#: src/elflint.c:2215
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr ""
 "sekcja [%2d] „%s”: drugie przesunięcie funkcji mieszającej jest za duże: %u\n"
 
-#: src/elflint.c:2211
+#: src/elflint.c:2249
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -2643,7 +2638,7 @@
 "sekcja [%2d] „%s”: łańcuch mieszający dla kubełka %zu jest mniejszy niż "
 "przesunięcie indeksu symboli\n"
 
-#: src/elflint.c:2232
+#: src/elflint.c:2270
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -2652,7 +2647,7 @@
 "sekcja [%2d] „%s”: symbol %u wskazywany w łańcuchu dla kubełka %zu jest "
 "nieokreślony\n"
 
-#: src/elflint.c:2245
+#: src/elflint.c:2283
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -2660,7 +2655,7 @@
 "sekcja [%2d] „%s”: wartość skrótu dla symbolu %u w łańcuchu dla kubełka %zu "
 "jest błędna\n"
 
-#: src/elflint.c:2254
+#: src/elflint.c:2292
 #, c-format
 msgid ""
 "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
@@ -2668,12 +2663,12 @@
 "sekcja [%2d] „%s”: indeks maski dla symbolu %u w łańcuchu dla kubełka %zu "
 "jest błędny\n"
 
-#: src/elflint.c:2284
+#: src/elflint.c:2322
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr "sekcja [%2d] „%s”: łańcuch skrótu dla kubełka %zu jest spoza zakresu\n"
 
-#: src/elflint.c:2289
+#: src/elflint.c:2327
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2681,41 +2676,41 @@
 "sekcja [%2d] „%s”: odwołanie do symbolu w łańcuchu dla kubełka %zu jest "
 "spoza zakresu\n"
 
-#: src/elflint.c:2295
+#: src/elflint.c:2333
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr ""
 "sekcja [%2d] „%s”: maska bitowa nie pasuje do nazw w tabeli mieszającej\n"
 
-#: src/elflint.c:2308
+#: src/elflint.c:2346
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 "sekcja [%2d] „%s”: pliki relokowalne nie mogą mieć tabeli mieszających\n"
 
-#: src/elflint.c:2326
+#: src/elflint.c:2364
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 "sekcja [%2d] „%s”: tabela mieszająca nie dla tabeli dynamicznych symboli\n"
 
-#: src/elflint.c:2330
+#: src/elflint.c:2368
 #, c-format
 msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
 msgstr ""
 "sekcja [%2d] „%s”: nieprawidłowy indeks sekcji tabeli symboli sh_link [%2d]\n"
 
-#: src/elflint.c:2340
+#: src/elflint.c:2378
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr "sekcja [%2d] „%s”: niepoprawny rozmiar wpisu tabeli mieszającej\n"
 
-#: src/elflint.c:2345
+#: src/elflint.c:2383
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr "sekcja [%2d] „%s”: nieoznaczona do przydzielenia\n"
 
-#: src/elflint.c:2350
+#: src/elflint.c:2388
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2724,29 +2719,29 @@
 "sekcja [%2d] „%s”: tabela mieszająca nie ma miejsca nawet na początkowe "
 "wpisy administracyjne\n"
 
-#: src/elflint.c:2399
+#: src/elflint.c:2437
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr ""
 "sh_link w sekcjach skrótu [%2zu] „%s” i [%2zu] „%s” nie są identyczne\n"
 
-#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
+#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561
 #, c-format
 msgid "hash section [%2zu] '%s' does not contain enough data\n"
 msgstr ""
 "sekcja mieszania [%2zu] „%s” nie zawiera wystarczającej ilości danych\n"
 
-#: src/elflint.c:2444
+#: src/elflint.c:2482
 #, c-format
 msgid "hash section [%2zu] '%s' has zero bit mask words\n"
 msgstr "sekcja mieszania [%2zu] „%s” ma zerowe słowa maski bitów\n"
 
-#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
+#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574
 #, c-format
 msgid "hash section [%2zu] '%s' uses too much data\n"
 msgstr "sekcja mieszania [%2zu] „%s” używa za dużo danych\n"
 
-#: src/elflint.c:2470
+#: src/elflint.c:2508
 #, c-format
 msgid ""
 "hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
@@ -2755,17 +2750,17 @@
 "sekcja mieszająca [%2zu] „%s” nieprawidłowy indeks symboli %<PRIu32> "
 "(max_nsyms: %<PRIu32>, nentries: %<PRIu32>\n"
 
-#: src/elflint.c:2557
+#: src/elflint.c:2595
 #, c-format
 msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
 msgstr "sekcja mieszania [%2zu] „%s” nieprawidłowe sh_entsize\n"
 
-#: src/elflint.c:2567 src/elflint.c:2571
+#: src/elflint.c:2605 src/elflint.c:2609
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr "sekcja [%2zu] „%s”: odwołanie do symbolu o indeksie 0\n"
 
-#: src/elflint.c:2578
+#: src/elflint.c:2616
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2774,7 +2769,7 @@
 "symbol %d wymieniony w nowej tabeli mieszającej w [%2zu] „%s”, ale nie "
 "w poprzedniej tabeli mieszającej [%2zu] „%s”\n"
 
-#: src/elflint.c:2590
+#: src/elflint.c:2628
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2783,12 +2778,12 @@
 "symbol %d wymieniony w poprzedniej tabeli mieszającej w [%2zu] „%s”, ale nie "
 "w nowej tabeli mieszającej w [%2zu] „%s”\n"
 
-#: src/elflint.c:2606
+#: src/elflint.c:2644
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr "sekcja [%2d] „%s”: niezerowe sh_%s dla sekcji NULL\n"
 
-#: src/elflint.c:2626
+#: src/elflint.c:2664
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2796,96 +2791,96 @@
 "sekcja [%2d] „%s”: w plikach obiektów relokowalnych dozwolone są tylko grupy "
 "sekcji\n"
 
-#: src/elflint.c:2637
+#: src/elflint.c:2675
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać tabeli symboli: %s\n"
 
-#: src/elflint.c:2642
+#: src/elflint.c:2680
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 "sekcja [%2d] „%s”: odwołanie do sekcji w sh_link nie ma tabeli symboli\n"
 
-#: src/elflint.c:2648
+#: src/elflint.c:2686
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr "sekcja [%2d] „%s”: nieprawidłowy indeks symbolu w sh_info\n"
 
-#: src/elflint.c:2653
+#: src/elflint.c:2691
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr "sekcja [%2d] „%s”: niezerowe sh_flags\n"
 
-#: src/elflint.c:2660
+#: src/elflint.c:2698
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać symbolu dla podpisu\n"
 
-#: src/elflint.c:2664
+#: src/elflint.c:2702
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol name for signature\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać nazwy symbolu dla podpisu\n"
 
-#: src/elflint.c:2669
+#: src/elflint.c:2707
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr "sekcja [%2d] „%s”: symbol podpisu nie można być pustym ciągiem\n"
 
-#: src/elflint.c:2675
+#: src/elflint.c:2713
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr "sekcja [%2d] „%s”: sh_flags nie ustawione poprawnie\n"
 
-#: src/elflint.c:2681
+#: src/elflint.c:2719
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać danych: %s\n"
 
-#: src/elflint.c:2690
+#: src/elflint.c:2728
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr ""
 "sekcja [%2d] „%s”: rozmiar sekcji nie jest wielokrotnością "
 "sizeof(Elf32_Word)\n"
 
-#: src/elflint.c:2696
+#: src/elflint.c:2734
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr "sekcja [%2d] „%s”: grupa sekcji bez słowa flag\n"
 
-#: src/elflint.c:2704
+#: src/elflint.c:2742
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr "sekcja [%2d] „%s”: grupa sekcji bez elementów\n"
 
-#: src/elflint.c:2708
+#: src/elflint.c:2746
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr "sekcja [%2d] „%s”: grupa sekcji z tylko jednym elementem\n"
 
-#: src/elflint.c:2719
+#: src/elflint.c:2757
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr "sekcja [%2d] „%s”: nieznane flagi grupy sekcji\n"
 
-#: src/elflint.c:2731
+#: src/elflint.c:2769
 #, c-format
 msgid "section [%2d] '%s': section index %zu out of range\n"
 msgstr "sekcja [%2d] „%s”: indeks sekcji %zu jest spoza zakresu\n"
 
-#: src/elflint.c:2740
+#: src/elflint.c:2778
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 "sekcja [%2d] „%s”: nie można uzyskać nagłówka sekcji dla elementu %zu: %s\n"
 
-#: src/elflint.c:2747
+#: src/elflint.c:2785
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr "sekcja [%2d] „%s”: grupa sekcji zawiera inną grupę [%2d] „%s”\n"
 
-#: src/elflint.c:2753
+#: src/elflint.c:2791
 #, c-format
 msgid ""
 "section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2894,12 +2889,12 @@
 "sekcja [%2d] „%s”: element %zu odwołuje się do sekcji [%2d] „%s” bez flagi "
 "SHF_GROUP\n"
 
-#: src/elflint.c:2760
+#: src/elflint.c:2798
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr "sekcja [%2d] „%s” jest zawarta w więcej niż jednej grupie sekcji\n"
 
-#: src/elflint.c:2957
+#: src/elflint.c:2995
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2908,7 +2903,7 @@
 "sekcja [%2d] „%s” odwołuje się w sh_link do sekcji [%2d] „%s”, która nie "
 "jest tabelą symboli dynamicznych\n"
 
-#: src/elflint.c:2969
+#: src/elflint.c:3007
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2916,76 +2911,76 @@
 msgstr ""
 "sekcja [%2d] „%s” ma inną liczbę wpisów niż tabela symboli [%2d] „%s”\n"
 
-#: src/elflint.c:2985
+#: src/elflint.c:3023
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr "sekcja [%2d] „%s”: symbol %d: nie można odczytać danych wersji\n"
 
-#: src/elflint.c:3001
+#: src/elflint.c:3039
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr "sekcja [%2d] „%s”: symbol %d: symbol lokalny z zakresem globalnym\n"
 
-#: src/elflint.c:3009
+#: src/elflint.c:3047
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr "sekcja [%2d] „%s”: symbol %d: symbol lokalny z wersją\n"
 
-#: src/elflint.c:3023
+#: src/elflint.c:3061
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr "sekcja [%2d] „%s”: symbol %d: nieprawidłowy indeks wersji %d\n"
 
-#: src/elflint.c:3028
+#: src/elflint.c:3066
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
 msgstr ""
 "sekcja [%2d] „%s”: symbol %d: indeks wersji %d jest dla wersji określonej\n"
 
-#: src/elflint.c:3038
+#: src/elflint.c:3076
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
 msgstr ""
 "sekcja [%2d] „%s”: symbol %d: indeks wersji %d jest dla wersji żądanej\n"
 
-#: src/elflint.c:3091
+#: src/elflint.c:3129
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr "obecna jest więcej niż jedna sekcja odniesienia wersji\n"
 
-#: src/elflint.c:3099 src/elflint.c:3246
+#: src/elflint.c:3137 src/elflint.c:3284
 #, c-format
 msgid "section [%2d] '%s': sh_link does not link to string table\n"
 msgstr "sekcja [%2d] „%s”: sh_link nie łączy się z tabelą ciągów\n"
 
-#: src/elflint.c:3124 src/elflint.c:3300
+#: src/elflint.c:3162 src/elflint.c:3338
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong version %d\n"
 msgstr "sekcja [%2d] „%s”: wpis %d ma błędną wersję %d\n"
 
-#: src/elflint.c:3131 src/elflint.c:3307
+#: src/elflint.c:3169 src/elflint.c:3345
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
 msgstr "sekcja [%2d] „%s”: wpis %d ma błędny offset dla danych dodatkowych\n"
 
-#: src/elflint.c:3141
+#: src/elflint.c:3179
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr "sekcja [%2d] „%s”: symbol %d ma błędne odniesienie do pliku\n"
 
-#: src/elflint.c:3149
+#: src/elflint.c:3187
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr "sekcja [%2d] „%s”: wpis %d odnosi się do nieznanej zależności\n"
 
-#: src/elflint.c:3161
+#: src/elflint.c:3199
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma nieznaną flagę\n"
 
-#: src/elflint.c:3169
+#: src/elflint.c:3207
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2994,7 +2989,7 @@
 "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma nieprawidłowe "
 "odniesienie do nazwy\n"
 
-#: src/elflint.c:3178
+#: src/elflint.c:3216
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -3003,7 +2998,7 @@
 "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma błędną wartość skrótu: "
 "%#x, oczekiwano %#x\n"
 
-#: src/elflint.c:3187
+#: src/elflint.c:3225
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -3012,19 +3007,19 @@
 "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma powtórzoną nazwę wersji "
 "„%s”\n"
 
-#: src/elflint.c:3198
+#: src/elflint.c:3236
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
 msgstr ""
 "sekcja [%2d] „%s”: wpis dodatkowy %d do wpisu %d ma błędne następne pole\n"
 
-#: src/elflint.c:3215 src/elflint.c:3391
+#: src/elflint.c:3253 src/elflint.c:3429
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
 msgstr "sekcja [%2d] „%s”: wpis %d ma błędny offset do następnego wpisu\n"
 
-#: src/elflint.c:3223 src/elflint.c:3399
+#: src/elflint.c:3261 src/elflint.c:3437
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
@@ -3033,43 +3028,43 @@
 "sekcja [%2d] „%s”: wpis %d ma zerowy offset do następnego wpisu, ale sh_info "
 "zawiera informacje o większej liczbie wpisów\n"
 
-#: src/elflint.c:3238
+#: src/elflint.c:3276
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr "obecna jest więcej niż jedna sekcja definicji wersji\n"
 
-#: src/elflint.c:3285
+#: src/elflint.c:3323
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr "sekcja [%2d] „%s”: jest więcej niż jedna definicja BASE\n"
 
-#: src/elflint.c:3289
+#: src/elflint.c:3327
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr "sekcja [%2d] „%s”: definicja BASE musi mieć indeks VER_NDX_GLOBAL\n"
 
-#: src/elflint.c:3295
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr "sekcja [%2d] „%s”: wpis %d ma nieznaną flagę\n"
 
-#: src/elflint.c:3322
+#: src/elflint.c:3360
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr "sekcja [%2d] „%s”: wpis %d ma nieprawidłowe odniesienie do nazwy\n"
 
-#: src/elflint.c:3329
+#: src/elflint.c:3367
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 "sekcja [%2d] „%s”: wpis %d ma błędną wartość skrótu: %#x, oczekiwano %#x\n"
 
-#: src/elflint.c:3337
+#: src/elflint.c:3375
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr "sekcja [%2d] „%s”: wpis %d ma powtórzoną nazwę wersji „%s”\n"
 
-#: src/elflint.c:3357
+#: src/elflint.c:3395
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -3077,51 +3072,51 @@
 "sekcja [%2d] „%s”: wpis %d ma nieprawidłowe odniesienie do nazwy w danych "
 "dodatkowych\n"
 
-#: src/elflint.c:3374
+#: src/elflint.c:3412
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 "sekcja [%2d] „%s”: wpis %d ma błędne następne pole w danych dodatkowych\n"
 
-#: src/elflint.c:3407
+#: src/elflint.c:3445
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr "sekcja [%2d] „%s”: brak definicji BASE\n"
 
-#: src/elflint.c:3423
+#: src/elflint.c:3461
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr "sekcja [%2d] „%s”: nieznana wersja rodzica „%s”\n"
 
-#: src/elflint.c:3448
+#: src/elflint.c:3486
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr "sekcja [%2d] „%s”: pusta sekcja atrybutów obiektu\n"
 
-#: src/elflint.c:3464
+#: src/elflint.c:3502
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr "sekcja [%2d] „%s”: nierozpoznany format atrybutu\n"
 
-#: src/elflint.c:3475
+#: src/elflint.c:3513
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute section\n"
 msgstr ""
 "sekcja [%2d] „%s”: offset %zu: pole o zerowej długości w sekcji atrybutów\n"
 
-#: src/elflint.c:3484
+#: src/elflint.c:3522
 #, c-format
 msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
 msgstr ""
 "sekcja [%2d] „%s”: offset %zu: nieprawidłowa długość w sekcji atrybutów\n"
 
-#: src/elflint.c:3496
+#: src/elflint.c:3534
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
 msgstr "sekcja [%2d] „%s”: offset %zu: niezakończony ciąg nazwy producenta\n"
 
-#: src/elflint.c:3513
+#: src/elflint.c:3551
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -3129,19 +3124,19 @@
 "sekcja [%2d] „%s”: offset %zu: niekończące się ULEB128 w znaczniku podsekcji "
 "atrybutów\n"
 
-#: src/elflint.c:3522
+#: src/elflint.c:3560
 #, c-format
 msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
 msgstr "sekcja [%2d] „%s”: offset %zu: skrócona sekcja atrybutów\n"
 
-#: src/elflint.c:3531
+#: src/elflint.c:3569
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
 msgstr ""
 "sekcja [%2d] „%s”: offset %zu: zerowej długości pole w podsekcji atrybutów\n"
 
-#: src/elflint.c:3546
+#: src/elflint.c:3584
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -3149,7 +3144,7 @@
 "sekcja [%2d] „%s”: offset %zu: nieprawidłowa długość w podsekcji atrybutów\n"
 
 #. Tag_File
-#: src/elflint.c:3557
+#: src/elflint.c:3595
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -3157,23 +3152,23 @@
 "sekcja [%2d] „%s”: offset %zu: podsekcja atrybutów ma nieoczekiwany znacznik "
 "%u\n"
 
-#: src/elflint.c:3578
+#: src/elflint.c:3616
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 "sekcja [%2d] „%s”: offset %zu: niekończące się ULEB128 w znaczniku atrybutu\n"
 
-#: src/elflint.c:3589
+#: src/elflint.c:3627
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr "sekcja [%2d] „%s”: offset %zu: niezakończony ciąg w atrybucie\n"
 
-#: src/elflint.c:3602
+#: src/elflint.c:3640
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr "sekcja [%2d] „%s”: offset %zu: nierozpoznany znacznik atrybutu %u\n"
 
-#: src/elflint.c:3606
+#: src/elflint.c:3644
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
@@ -3181,12 +3176,12 @@
 "sekcja [%2d] „%s”: offset %zu: atrybut %s ma nierozpoznaną wartość "
 "%<PRIu64>\n"
 
-#: src/elflint.c:3616
+#: src/elflint.c:3654
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr "sekcja [%2d] „%s”: offset %zu: producent „%s” jest nieznany\n"
 
-#: src/elflint.c:3622
+#: src/elflint.c:3660
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -3194,47 +3189,47 @@
 "sekcja [%2d] „%s”: offset %zu: dodatkowe bajty po ostatniej sekcji "
 "atrybutów\n"
 
-#: src/elflint.c:3719
+#: src/elflint.c:3758
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr "nie można uzyskać nagłówka sekcji zerowej\n"
 
-#: src/elflint.c:3723
+#: src/elflint.c:3762
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "sekcja zerowa ma niezerową nazwę\n"
 
-#: src/elflint.c:3725
+#: src/elflint.c:3764
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "sekcja zerowa ma niezerowy typ\n"
 
-#: src/elflint.c:3727
+#: src/elflint.c:3766
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "sekcja zerowa ma niezerowe flagi\n"
 
-#: src/elflint.c:3729
+#: src/elflint.c:3768
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "sekcja zerowa ma niezerowy adres\n"
 
-#: src/elflint.c:3731
+#: src/elflint.c:3770
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "sekcja zerowa ma niezerowy offset\n"
 
-#: src/elflint.c:3733
+#: src/elflint.c:3772
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr "sekcja zerowa ma niezerową wartość wyrównania\n"
 
-#: src/elflint.c:3735
+#: src/elflint.c:3774
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr "sekcja zerowa ma niezerową wartość rozmiaru wpisu\n"
 
-#: src/elflint.c:3738
+#: src/elflint.c:3777
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -3243,7 +3238,7 @@
 "sekcja zerowa ma niezerową wartość rozmiaru, a nagłówek ELF ma niezerową "
 "wartość shnum\n"
 
-#: src/elflint.c:3742
+#: src/elflint.c:3781
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -3252,7 +3247,7 @@
 "sekcja zerowa ma niezerową wartość dowiązań, a nagłówek ELF nie wskazuje "
 "przepełnienia w shstrndx\n"
 
-#: src/elflint.c:3746
+#: src/elflint.c:3785
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -3261,46 +3256,46 @@
 "sekcja zerowa ma niezerową wartość dowiązań, a nagłówek ELF nie wskazuje "
 "przepełnienia w phnum\n"
 
-#: src/elflint.c:3764
+#: src/elflint.c:3803
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr "nie można uzyskać nagłówka sekcji dla sekcji [%2zu] „%s”: %s\n"
 
-#: src/elflint.c:3773
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "sekcja [%2zu]: nieprawidłowa nazwa\n"
 
-#: src/elflint.c:3800
+#: src/elflint.c:3839
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr "sekcja [%2d] „%s” ma błędny typ: oczekiwano %s, jest %s\n"
 
-#: src/elflint.c:3817
+#: src/elflint.c:3856
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr "sekcja [%2zu] „%s” ma błędne flagi: oczekiwano %s, jest %s\n"
 
-#: src/elflint.c:3835
+#: src/elflint.c:3874
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
 msgstr ""
 "sekcja [%2zu] „%s” ma błędne flagi: oczekiwano %s i być może %s, jest %s\n"
 
-#: src/elflint.c:3852
+#: src/elflint.c:3891
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr "sekcja [%2zu] „%s” jest obecna w pliku obiektu\n"
 
-#: src/elflint.c:3858 src/elflint.c:3890
+#: src/elflint.c:3897 src/elflint.c:3929
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
 msgstr ""
 "sekcja [%2zu] „%s” ma flagę SHF_ALLOC, ale nie ma segmentu wczytywalnego\n"
 
-#: src/elflint.c:3863 src/elflint.c:3895
+#: src/elflint.c:3902 src/elflint.c:3934
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -3308,7 +3303,7 @@
 msgstr ""
 "sekcja [%2zu] „%s” nie ma flagi SHF_ALLOC, ale są segmenty wczytywalne\n"
 
-#: src/elflint.c:3871
+#: src/elflint.c:3910
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -3316,22 +3311,22 @@
 "sekcja [%2zu] „%s” jest tabelą indeksów sekcji rozszerzeń w pliku "
 "nieobiektowym\n"
 
-#: src/elflint.c:3914
+#: src/elflint.c:3953
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr "sekcja [%2zu] „%s”: rozmiar nie jest wielokrotnością rozmiaru wpisu\n"
 
-#: src/elflint.c:3919
+#: src/elflint.c:3958
 #, c-format
 msgid "cannot get section header\n"
 msgstr "nie można uzyskać nagłówka sekcji\n"
 
-#: src/elflint.c:3929
+#: src/elflint.c:3968
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "sekcja [%2zu] „%s” ma nieobsługiwany typ %d\n"
 
-#: src/elflint.c:3949
+#: src/elflint.c:3988
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3339,74 +3334,74 @@
 "sekcja [%2zu] „%s” zawiera nieprawidłowe flagi dla konkretnego procesora "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3959
+#: src/elflint.c:3998
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr "sekcja [%2zu] „%s” zawiera nieznane flagi %#<PRIx64>\n"
 
-#: src/elflint.c:3967
+#: src/elflint.c:4006
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 "sekcja [%2zu] „%s”: adres sekcji danych lokalnych dla wątków nie jest zerem\n"
 
-#: src/elflint.c:3977
+#: src/elflint.c:4016
 #, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr "sekcja [%2zu] „%s”: nie można skompresować przydzielonej sekcji\n"
 
-#: src/elflint.c:3982
+#: src/elflint.c:4021
 #, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "sekcja [%2zu] „%s”: nie można skompresować sekcji „nobits”\n"
 
-#: src/elflint.c:3988
+#: src/elflint.c:4027
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr "sekcja [%2zu] „%s”: skompresowana sekcja bez nagłówka kompresji: %s\n"
 
-#: src/elflint.c:3994
+#: src/elflint.c:4033
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 "sekcja [%2zu] „%s”: nieprawidłowe odwołanie do sekcji w wartości dowiązania\n"
 
-#: src/elflint.c:3999
+#: src/elflint.c:4038
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 "sekcja [%2zu] „%s”: nieprawidłowe odwołanie do sekcji w wartości "
 "informacyjnej\n"
 
-#: src/elflint.c:4006
+#: src/elflint.c:4045
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr "sekcja [%2zu] „%s”: flaga ciągów jest ustawiona bez flagi merge\n"
 
-#: src/elflint.c:4011
+#: src/elflint.c:4050
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 "sekcja [%2zu] „%s”: flaga merge jest ustawiona, ale rozmiar wpisu jest "
 "zerowy\n"
 
-#: src/elflint.c:4030
+#: src/elflint.c:4069
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr "sekcja [%2zu] „%s” ma nieoczekiwany typ %d dla sekcji wykonywalnej\n"
 
-#: src/elflint.c:4039
+#: src/elflint.c:4078
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr "sekcja [%2zu] „%s” musi być typu NOBITS w plikach debuginfo\n"
 
-#: src/elflint.c:4046
+#: src/elflint.c:4085
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr "sekcja [%2zu] „%s” jest wykonywalne i zapisywalne\n"
 
-#: src/elflint.c:4077
+#: src/elflint.c:4116
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3415,7 +3410,7 @@
 "sekcja [%2zu] „%s” nie jest w całości zawarta w segmencie wpisu %d nagłówka "
 "programu\n"
 
-#: src/elflint.c:4087
+#: src/elflint.c:4126
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3424,7 +3419,7 @@
 "sekcja [%2zu] „%s” ma typ NOBITS, a jest odczytywana z pliku w segmencie "
 "wpisu %d nagłówka programu\n"
 
-#: src/elflint.c:4113
+#: src/elflint.c:4152
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3433,7 +3428,7 @@
 "sekcja [%2zu] „%s” ma typ NOBITS, ale jest odczytywana z pliku w segmencie "
 "wpisu %d nagłówka programu, a zawartość pliku jest niezerowa\n"
 
-#: src/elflint.c:4124
+#: src/elflint.c:4163
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3442,17 +3437,17 @@
 "sekcja [%2zu] „%s” nie ma typu NOBITS, a nie jest odczytywana z pliku "
 "w segmencie wpisu %d nagłówka programu\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4174
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr "sekcja [%2zu] „%s” jest wykonywalne w segmencie niewykonywalnym %d\n"
 
-#: src/elflint.c:4145
+#: src/elflint.c:4184
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr "sekcja [%2zu] „%s” jest zapisywalne w niezapisywalnym segmencie %d\n"
 
-#: src/elflint.c:4155
+#: src/elflint.c:4194
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3460,7 +3455,7 @@
 "sekcja [%2zu] „%s”: ma flagę alloc, ale sekcja nie jest w żadnym segmencie "
 "wczytywalnym\n"
 
-#: src/elflint.c:4161
+#: src/elflint.c:4200
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3469,7 +3464,7 @@
 "sekcja [%2zu] „%s”: według nagłówka ELF to jest tabela ciągów nagłówków "
 "sekcji, ale typ nie jest SHT_TYPE\n"
 
-#: src/elflint.c:4169
+#: src/elflint.c:4208
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3477,17 +3472,17 @@
 "sekcja [%2zu] „%s”: pliki relokowalne nie mogą mieć tabeli symboli "
 "dynamicznych\n"
 
-#: src/elflint.c:4220
+#: src/elflint.c:4263
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr "obecna jest więcej niż jedna tabela symboli wersji\n"
 
-#: src/elflint.c:4243
+#: src/elflint.c:4286
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr "jest wpis nagłówka programu INTERP, ale nie ma sekcji .interp\n"
 
-#: src/elflint.c:4254
+#: src/elflint.c:4297
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
@@ -3495,14 +3490,14 @@
 "wczytywalny segment [%u] jest wykonywalny, ale nie zawiera wykonywalnych "
 "sekcji\n"
 
-#: src/elflint.c:4260
+#: src/elflint.c:4303
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 "wczytywalny segment [%u] jest zapisywalny, ale nie zawiera zapisywalnych "
 "sekcji\n"
 
-#: src/elflint.c:4271
+#: src/elflint.c:4314
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3511,23 +3506,23 @@
 "brak sekcji .gnu.versym, ale istnieje sekcja .gnu.versym_d lub .gnu."
 "versym_r\n"
 
-#: src/elflint.c:4284
+#: src/elflint.c:4327
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "powtórzony indeks wersji %d\n"
 
-#: src/elflint.c:4298
+#: src/elflint.c:4341
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr "sekcja .gnu.versym istnieje bez .gnu.versym_d lub .gnu.versym_r\n"
 
-#: src/elflint.c:4347
+#: src/elflint.c:4390
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 "phdr[%d]: nieznany typ notatki pliku core %<PRIu32> pod offsetem %<PRIu64>\n"
 
-#: src/elflint.c:4351
+#: src/elflint.c:4394
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3535,7 +3530,7 @@
 "sekcja [%2d]: „%s”: nieznany typ notatki pliku core %<PRIu32> pod offsetem "
 "%zu\n"
 
-#: src/elflint.c:4407
+#: src/elflint.c:4450
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3544,7 +3539,7 @@
 "phdr[%d]: nieznany typ notatki pliku obiektu %<PRIu32> o nazwie właściciela "
 "„%s” pod offsetem %zu\n"
 
-#: src/elflint.c:4412
+#: src/elflint.c:4455
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3553,37 +3548,37 @@
 "sekcja [%2d] „%s”: nieznany typ notatki pliku obiektu %<PRIu32> o nazwie "
 "właściciela „%s” pod offsetem %zu\n"
 
-#: src/elflint.c:4431
+#: src/elflint.c:4474
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr "phdr[%d]: brak określonych wpisów notatek dla typu pliku\n"
 
-#: src/elflint.c:4451
+#: src/elflint.c:4494
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr "phdr[%d]: nie można uzyskać zawartości sekcji notatki: %s\n"
 
-#: src/elflint.c:4454
+#: src/elflint.c:4497
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr "phdr[%d]: dodatkowe %<PRIu64> B po ostatniej notatce\n"
 
-#: src/elflint.c:4475
+#: src/elflint.c:4518
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr "sekcja [%2d] „%s”: brak określonych wpisów notatek dla typu pliku\n"
 
-#: src/elflint.c:4482
+#: src/elflint.c:4525
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać zawartości sekcji notatek\n"
 
-#: src/elflint.c:4485
+#: src/elflint.c:4528
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr "sekcja [%2d] „%s”: dodatkowe %<PRIu64> B po ostatniej notatce\n"
 
-#: src/elflint.c:4503
+#: src/elflint.c:4546
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -3591,135 +3586,135 @@
 "tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą mieć "
 "nagłówki programu\n"
 
-#: src/elflint.c:4518
+#: src/elflint.c:4561
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr "nie można uzyskać wpisu nagłówka programu %d: %s\n"
 
-#: src/elflint.c:4528
+#: src/elflint.c:4571
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 "wpis nagłówka programu %d: nieznany typ wpisu nagłówka programu %#<PRIx64>\n"
 
-#: src/elflint.c:4539
+#: src/elflint.c:4582
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr "więcej niż jeden wpis INTERP w nagłówku programu\n"
 
-#: src/elflint.c:4547
+#: src/elflint.c:4590
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr "więcej niż jeden wpis TLS w nagłówku programu\n"
 
-#: src/elflint.c:4554
+#: src/elflint.c:4597
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "statyczny plik wykonywalny nie może mieć sekcji dynamicznych\n"
 
-#: src/elflint.c:4568
+#: src/elflint.c:4611
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr "odniesienie sekcji dynamicznej w nagłówku programu ma błędny offset\n"
 
-#: src/elflint.c:4571
+#: src/elflint.c:4614
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr "różne rozmiary sekcji dynamicznej w nagłówku programu i sekcji\n"
 
-#: src/elflint.c:4581
+#: src/elflint.c:4624
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr "więcej niż jeden wpis GNU_RELRO w nagłówku programu\n"
 
-#: src/elflint.c:4602
+#: src/elflint.c:4645
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr "wczytywalny segment wskazywany przez GNU_RELRO nie jest zapisywalny\n"
 
-#: src/elflint.c:4613
+#: src/elflint.c:4656
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr "flagi wczytywalnego segmentu [%u] nie pasują do flag GNU_RELRO [%u]\n"
 
-#: src/elflint.c:4620
+#: src/elflint.c:4663
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 "flagi GNU_RELRO [%u] nie są podzbiorem flag wczytywalnego segmentu [%u]\n"
 
-#: src/elflint.c:4629 src/elflint.c:4652
+#: src/elflint.c:4672 src/elflint.c:4695
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr "segment %s nie zawiera się we wczytywalnym segmencie\n"
 
-#: src/elflint.c:4658
+#: src/elflint.c:4701
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 "offsety nagłówka programu w nagłówku ELF i wpisie PHDR nie zgadzają się"
 
-#: src/elflint.c:4685
+#: src/elflint.c:4728
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 "odniesienie tabeli wyszukiwania ramki wywołania w nagłówku programu ma "
 "błędny offset\n"
 
-#: src/elflint.c:4688
+#: src/elflint.c:4731
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 "różne rozmiary tabel wyszukiwania ramki wywołania w nagłówku programu "
 "i sekcji\n"
 
-#: src/elflint.c:4701
+#: src/elflint.c:4744
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr "PT_GNU_EH_FRAME jest obecne, ale brak sekcji .eh_frame_hdr\n"
 
-#: src/elflint.c:4709
+#: src/elflint.c:4752
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr "tabela wyszukiwania ramki wywołania musi być przydzielona\n"
 
-#: src/elflint.c:4712
+#: src/elflint.c:4755
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "sekcja [%2zu] „%s”: musi być przydzielona\n"
 
-#: src/elflint.c:4716
+#: src/elflint.c:4759
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr "tabela wyszukiwania ramki wywołania nie może być zapisywalna\n"
 
-#: src/elflint.c:4719
+#: src/elflint.c:4762
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr "sekcja [%2zu] „%s” nie może być zapisywalna\n"
 
-#: src/elflint.c:4724
+#: src/elflint.c:4767
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr "tabela wyszukiwania ramki wywołania nie może być wykonywalna\n"
 
-#: src/elflint.c:4727
+#: src/elflint.c:4770
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "sekcja [%2zu] „%s” nie może być wykonywalna\n"
 
-#: src/elflint.c:4741
+#: src/elflint.c:4784
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr "wpis nagłówka programu %d: rozmiar pliku większy niż rozmiar pamięci\n"
 
-#: src/elflint.c:4748
+#: src/elflint.c:4791
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr "wpis nagłówka programu %d: wyrównanie nie jest potęgą 2\n"
 
-#: src/elflint.c:4751
+#: src/elflint.c:4794
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3728,7 +3723,7 @@
 "wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są "
 "wielokrotnością wyrównania\n"
 
-#: src/elflint.c:4764
+#: src/elflint.c:4807
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3737,17 +3732,17 @@
 "plik wykonywalny/DSO z sekcją .eh_frame_hdr nie ma wpisu nagłówka programu "
 "PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4798
+#: src/elflint.c:4841
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "nie można odczytać nagłówka ELF: %s\n"
 
-#: src/elflint.c:4810
+#: src/elflint.c:4853
 #, c-format
 msgid "cannot create backend for ELF file\n"
 msgstr "nie można utworzyć zaplecza dla pliku ELF\n"
 
-#: src/elflint.c:4831
+#: src/elflint.c:4874
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr "flaga relokacji tekstu jest ustawiona, ale niepotrzebna\n"
@@ -3960,7 +3955,7 @@
 msgstr "%s: BŁĄD WEWNĘTRZNY %d (%s): %s"
 
 #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307
-#: src/strip.c:2766
+#: src/strip.c:2763
 #, c-format
 msgid "while closing '%s'"
 msgstr "podczas zamykania „%s”"
@@ -4003,13 +3998,13 @@
 msgid "cannot create search tree"
 msgstr "nie można utworzyć drzewa wyszukiwania"
 
-#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663
-#: src/readelf.c:1484 src/readelf.c:1633 src/readelf.c:1860 src/readelf.c:2097
-#: src/readelf.c:2286 src/readelf.c:2466 src/readelf.c:2544 src/readelf.c:2809
-#: src/readelf.c:2884 src/readelf.c:2970 src/readelf.c:3565 src/readelf.c:3613
-#: src/readelf.c:3682 src/readelf.c:11620 src/readelf.c:12803
-#: src/readelf.c:13013 src/readelf.c:13081 src/size.c:396 src/size.c:467
-#: src/strip.c:1093
+#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685
+#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123
+#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854
+#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896
+#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029
+#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396
+#: src/size.c:467 src/strip.c:1093
 #, c-format
 msgid "cannot get section header string table index"
 msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji"
@@ -4118,7 +4113,7 @@
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Wyświetla informacje z PLIKÓW (domyślnie a.out)."
 
-#: src/objdump.c:217 src/readelf.c:608
+#: src/objdump.c:217 src/readelf.c:630
 msgid "No operation specified.\n"
 msgstr "Nie podano działania.\n"
 
@@ -4127,11 +4122,11 @@
 msgid "while close `%s'"
 msgstr "podczas zamykania „%s”"
 
-#: src/objdump.c:362 src/readelf.c:2192 src/readelf.c:2383
+#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409
 msgid "INVALID SYMBOL"
 msgstr "NIEPRAWIDŁOWY SYMBOL"
 
-#: src/objdump.c:377 src/readelf.c:2226 src/readelf.c:2419
+#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445
 msgid "INVALID SECTION"
 msgstr "NIEPRAWIDŁOWA SEKCJA"
 
@@ -4188,18 +4183,18 @@
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "błąd podczas zwalniania deskryptora pod-ELF: %s"
 
-#: src/readelf.c:96
+#: src/readelf.c:97
 msgid "ELF input selection:"
 msgstr "Wybór wyjścia ELF:"
 
-#: src/readelf.c:98
+#: src/readelf.c:99
 msgid ""
 "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
 msgstr ""
 "Używa podanej SEKCJI (domyślnie .gnu_debugdata) jako (skompresowanych) "
 "danych wejściowych ELF"
 
-#: src/readelf.c:101
+#: src/readelf.c:102
 msgid ""
 "Used with -w to find the skeleton Compile Units in FILE associated with the "
 "Split Compile units in a .dwo input file"
@@ -4207,71 +4202,71 @@
 "Używane z opcją -w do wyszukiwania szkieletów jednostek kompilacji w PLIKU "
 "powiązanych z jednostkami podzielonej kompilacji w pliku wejściowym .dwo"
 
-#: src/readelf.c:103
+#: src/readelf.c:104
 msgid "ELF output selection:"
 msgstr "Wybór wyjścia ELF:"
 
-#: src/readelf.c:105
+#: src/readelf.c:106
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr "Wszystkie te plus -p .strtab -p .dynstr -p .comment"
 
-#: src/readelf.c:106
+#: src/readelf.c:107
 msgid "Display the dynamic segment"
 msgstr "Wyświetla segment dynamiczny"
 
-#: src/readelf.c:107
+#: src/readelf.c:108
 msgid "Display the ELF file header"
 msgstr "Wyświetla nagłówek pliku ELF"
 
-#: src/readelf.c:109
+#: src/readelf.c:110
 msgid "Display histogram of bucket list lengths"
 msgstr "Wyświetla histogram długości list kubełków"
 
-#: src/readelf.c:110
+#: src/readelf.c:111
 msgid "Display the program headers"
 msgstr "Wyświetla nagłówki programu"
 
-#: src/readelf.c:112
+#: src/readelf.c:113
 msgid "Display relocations"
 msgstr "Wyświetla relokacje"
 
-#: src/readelf.c:113
+#: src/readelf.c:114
 msgid "Display the section groups"
 msgstr "Wyświetla grupy sekcji"
 
-#: src/readelf.c:114
+#: src/readelf.c:115
 msgid "Display the sections' headers"
 msgstr "Wyświetla nagłówki sekcji"
 
-#: src/readelf.c:117
+#: src/readelf.c:118
 msgid "Display the symbol table sections"
 msgstr "Wyświetla sekcje tabeli symboli"
 
-#: src/readelf.c:120
+#: src/readelf.c:121
 msgid "Display (only) the dynamic symbol table"
 msgstr "Wyświetla (tylko) tabelę symboli dynamicznych"
 
-#: src/readelf.c:121
+#: src/readelf.c:122
 msgid "Display versioning information"
 msgstr "Wyświetla informacje o wersji"
 
-#: src/readelf.c:122
+#: src/readelf.c:123
 msgid "Display the ELF notes"
 msgstr "Wyświetla notatki ELF"
 
-#: src/readelf.c:124
+#: src/readelf.c:125
 msgid "Display architecture specific information, if any"
 msgstr "Wyświetla informacje dla konkretnej architektury, jeśli są"
 
-#: src/readelf.c:126
+#: src/readelf.c:127
 msgid "Display sections for exception handling"
 msgstr "Wyświetla sekcje do obsługi wyjątków"
 
-#: src/readelf.c:128
+#: src/readelf.c:129
 msgid "Additional output selection:"
 msgstr "Dodatkowy wybór wyjścia:"
 
-#: src/readelf.c:130
+#: src/readelf.c:131
 msgid ""
 "Display DWARF section content.  SECTION can be one of abbrev, addr, aranges, "
 "decodedaranges, frame, gdb_index, info, info+, loc, line, decodedline, "
@@ -4281,42 +4276,42 @@
 "aranges, decodedaranges, frame, gdb_index, info, info+, loc, line, "
 "decodedline, ranges, pubnames, str, macinfo, macro lub exception"
 
-#: src/readelf.c:134
+#: src/readelf.c:135
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr "Zrzuca niezinterpretowaną zawartość SEKCJI, według liczny lub nazwy"
 
-#: src/readelf.c:136
+#: src/readelf.c:137
 msgid "Print string contents of sections"
 msgstr "Wyświetla zawartość ciągów sekcji"
 
-#: src/readelf.c:139
+#: src/readelf.c:140
 msgid "Display the symbol index of an archive"
 msgstr "Wyświetla indeks symboli archiwum"
 
-#: src/readelf.c:141
+#: src/readelf.c:142
 msgid "Use the dynamic segment when possible for displaying info"
 msgstr ""
 
-#: src/readelf.c:143
+#: src/readelf.c:144
 msgid "Output control:"
 msgstr "Kontrola wyjścia:"
 
-#: src/readelf.c:145
+#: src/readelf.c:146
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr "Bez odnajdywania nazw symboli dla adresów w danych DWARF"
 
-#: src/readelf.c:147
+#: src/readelf.c:148
 msgid ""
 "Display just offsets instead of resolving values to addresses in DWARF data"
 msgstr ""
 "Wyświetla tylko offsety zamiast rozwiązywania wartości na adresy w danych "
 "DWARF"
 
-#: src/readelf.c:149
+#: src/readelf.c:150
 msgid "Ignored for compatibility (lines always wide)"
 msgstr "Ignorowane dla zgodności (wiersze są zawsze szerokie)"
 
-#: src/readelf.c:151
+#: src/readelf.c:152
 msgid ""
 "Show compression information for compressed sections (when used with -S); "
 "decompress section before dumping data (when used with -p or -x)"
@@ -4326,40 +4321,40 @@
 "używane z opcją -p lub -x)"
 
 #. Short description of program.
-#: src/readelf.c:156
+#: src/readelf.c:157
 msgid "Print information from ELF file in human-readable form."
 msgstr "Wyświetla informacje z pliku ELF w postaci czytelnej dla człowieka."
 
 #. Look up once.
-#: src/readelf.c:373
+#: src/readelf.c:395
 msgid "yes"
 msgstr "tak"
 
-#: src/readelf.c:374
+#: src/readelf.c:396
 msgid "no"
 msgstr "nie"
 
-#: src/readelf.c:576
+#: src/readelf.c:598
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Nieznana sekcja debugowania DWARF „%s”.\n"
 
-#: src/readelf.c:647 src/readelf.c:758
+#: src/readelf.c:669 src/readelf.c:780
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "nie można utworzyć deskryptora ELF: %s"
 
-#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188
+#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "nie można określić liczby sekcji: %s"
 
-#: src/readelf.c:672 src/readelf.c:1300 src/readelf.c:1508
+#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530
 #, c-format
 msgid "cannot get section: %s"
 msgstr "nie można uzyskać sekcji: %s"
 
-#: src/readelf.c:681 src/readelf.c:1307 src/readelf.c:1515 src/readelf.c:13033
+#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442
 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610
 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222
 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470
@@ -4368,120 +4363,120 @@
 msgid "cannot get section header: %s"
 msgstr "nie można uzyskać nagłówka sekcji: %s"
 
-#: src/readelf.c:689
+#: src/readelf.c:711
 #, c-format
 msgid "cannot get section name"
 msgstr "nie można uzyskać nazwy sekcji"
 
-#: src/readelf.c:698 src/readelf.c:6833 src/readelf.c:10887 src/readelf.c:10989
-#: src/readelf.c:11173
+#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332
+#: src/readelf.c:11516
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "nie można uzyskać zwartości %s: %s"
 
-#: src/readelf.c:714
+#: src/readelf.c:736
 #, c-format
 msgid "cannot create temp file '%s'"
 msgstr "nie można utworzyć pliku tymczasowego „%s”"
 
-#: src/readelf.c:723
+#: src/readelf.c:745
 #, c-format
 msgid "cannot write section data"
 msgstr "nie można zapisać danych sekcji"
 
-#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775
+#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797
 #, c-format
 msgid "error while closing Elf descriptor: %s"
 msgstr "błąd podczas zamykania deskryptora ELF: %s"
 
-#: src/readelf.c:736
+#: src/readelf.c:758
 #, c-format
 msgid "error while rewinding file descriptor"
 msgstr "błąd podczas przewijania deskryptora pliku"
 
-#: src/readelf.c:770
+#: src/readelf.c:792
 #, c-format
 msgid "'%s' is not an archive, cannot print archive index"
 msgstr "„%s” nie jest archiwum, nie można wyświetlić indeksu archiwum"
 
-#: src/readelf.c:874
+#: src/readelf.c:896
 #, c-format
 msgid "cannot stat input file"
 msgstr "nie można wykonać stat na pliku wejściowym"
 
-#: src/readelf.c:876
+#: src/readelf.c:898
 #, c-format
 msgid "input file is empty"
 msgstr "plik wejściowy jest pusty"
 
-#: src/readelf.c:878
+#: src/readelf.c:900
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "odczytanie „%s” się nie powiodło: %s"
 
-#: src/readelf.c:907
+#: src/readelf.c:929
 #, c-format
 msgid "No such section '%s' in '%s'"
 msgstr "Brak sekcji „%s” w „%s”"
 
-#: src/readelf.c:966
+#: src/readelf.c:988
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "nie można odczytać nagłówka ELF: %s"
 
-#: src/readelf.c:974
+#: src/readelf.c:996
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "nie można utworzyć uchwytu EBL"
 
-#: src/readelf.c:985
+#: src/readelf.c:1007
 #, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "nie można określić liczby nagłówków programu: %s"
 
-#: src/readelf.c:1017
+#: src/readelf.c:1039
 #, c-format
 msgid "cannot read ELF: %s"
 msgstr "nie można odczytać danych ELF: %s"
 
-#: src/readelf.c:1050
+#: src/readelf.c:1072
 #, fuzzy
 #| msgid "cannot get section: %s"
 msgid "cannot find section"
 msgstr "nie można uzyskać sekcji: %s"
 
-#: src/readelf.c:1087
+#: src/readelf.c:1109
 msgid "NONE (None)"
 msgstr "NONE (żaden)"
 
-#: src/readelf.c:1088
+#: src/readelf.c:1110
 msgid "REL (Relocatable file)"
 msgstr "REL (plik relokowalny)"
 
-#: src/readelf.c:1089
+#: src/readelf.c:1111
 msgid "EXEC (Executable file)"
 msgstr "EXEC (plik wykonywalny)"
 
-#: src/readelf.c:1090
+#: src/readelf.c:1112
 msgid "DYN (Shared object file)"
 msgstr "DYN (plik obiektu współdzielonego)"
 
-#: src/readelf.c:1091
+#: src/readelf.c:1113
 msgid "CORE (Core file)"
 msgstr "CORE (plik core)"
 
-#: src/readelf.c:1096
+#: src/readelf.c:1118
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "Zależny od systemu: (%x)\n"
 
 #. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1098
+#: src/readelf.c:1120
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "Zależny od procesora: (%x)\n"
 
-#: src/readelf.c:1108
+#: src/readelf.c:1130
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4489,7 +4484,7 @@
 "Nagłówek ELF:\n"
 "  Magic:  "
 
-#: src/readelf.c:1112
+#: src/readelf.c:1134
 #, c-format
 msgid ""
 "\n"
@@ -4498,123 +4493,123 @@
 "\n"
 "  Klasa:                             %s\n"
 
-#: src/readelf.c:1117
+#: src/readelf.c:1139
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Dane:                              %s\n"
 
-#: src/readelf.c:1123
+#: src/readelf.c:1145
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "  Wersja Ident:                      %hhd %s\n"
 
-#: src/readelf.c:1125 src/readelf.c:1147
+#: src/readelf.c:1147 src/readelf.c:1169
 msgid "(current)"
 msgstr "(bieżąca)"
 
-#: src/readelf.c:1129
+#: src/readelf.c:1151
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  System operacyjny/ABI:             %s\n"
 
-#: src/readelf.c:1132
+#: src/readelf.c:1154
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  Wersja ABI:                        %hhd\n"
 
-#: src/readelf.c:1135
+#: src/readelf.c:1157
 msgid "  Type:                              "
 msgstr "  Typ:                               "
 
-#: src/readelf.c:1140
+#: src/readelf.c:1162
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Komputer:                          %s\n"
 
-#: src/readelf.c:1142
+#: src/readelf.c:1164
 #, c-format
 msgid "  Machine:                           <unknown>: 0x%x\n"
 msgstr "  Komputer:                          <nieznany>: 0x%x\n"
 
-#: src/readelf.c:1145
+#: src/readelf.c:1167
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Wersja:                            %d %s\n"
 
-#: src/readelf.c:1149
+#: src/readelf.c:1171
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  Adres punktu wejściowego:          %#<PRIx64>\n"
 
-#: src/readelf.c:1152
+#: src/readelf.c:1174
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr "  Początek nagłówków programu:       %<PRId64> %s\n"
 
-#: src/readelf.c:1153 src/readelf.c:1156
+#: src/readelf.c:1175 src/readelf.c:1178
 msgid "(bytes into file)"
 msgstr "(bajtów w pliku)"
 
-#: src/readelf.c:1155
+#: src/readelf.c:1177
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr "  Początek nagłówków sekcji:         %<PRId64> %s\n"
 
-#: src/readelf.c:1158
+#: src/readelf.c:1180
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  Flagi:                             %s\n"
 
-#: src/readelf.c:1161
+#: src/readelf.c:1183
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr "  Rozmiar tego nagłówka:             %<PRId16> %s\n"
 
-#: src/readelf.c:1162 src/readelf.c:1165 src/readelf.c:1182
+#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204
 msgid "(bytes)"
 msgstr "(bajtów)"
 
-#: src/readelf.c:1164
+#: src/readelf.c:1186
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr "  Rozmiar wpisów nagłówka programu:  %<PRId16> %s\n"
 
-#: src/readelf.c:1167
+#: src/readelf.c:1189
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr "  Liczba wpisów nagłówków programu: %<PRId16>"
 
-#: src/readelf.c:1174
+#: src/readelf.c:1196
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr " (%<PRIu32> w [0].sh_info)"
 
-#: src/readelf.c:1177 src/readelf.c:1194 src/readelf.c:1208
+#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230
 msgid " ([0] not available)"
 msgstr " ([0] niedostępny)"
 
-#: src/readelf.c:1181
+#: src/readelf.c:1203
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr "  Rozmiar wpisów nagłówka sekcji:    %<PRId16> %s\n"
 
-#: src/readelf.c:1184
+#: src/readelf.c:1206
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr "  Liczba wpisów nagłówków sekcji:    %<PRId16>"
 
-#: src/readelf.c:1191
+#: src/readelf.c:1213
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " (%<PRIu32> w [0].sh_size)"
 
 #. We managed to get the zeroth section.
-#: src/readelf.c:1204
+#: src/readelf.c:1226
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr " (%<PRIu32> w [0].sh_link)"
 
-#: src/readelf.c:1212
+#: src/readelf.c:1234
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4623,7 +4618,7 @@
 "  Indeks tabeli ciągów nagłówków sekcji: XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:1216
+#: src/readelf.c:1238
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
@@ -4632,12 +4627,12 @@
 "  Indeks tabeli ciągów nagłówków sekcji: %<PRId16>\n"
 "\n"
 
-#: src/readelf.c:1266 src/readelf.c:1474
+#: src/readelf.c:1288 src/readelf.c:1496
 #, c-format
 msgid "cannot get number of sections: %s"
 msgstr "nie można uzyskać liczby sekcji: %s"
 
-#: src/readelf.c:1269
+#: src/readelf.c:1291
 #, c-format
 msgid ""
 "There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4646,16 +4641,16 @@
 "Liczba nagłówków sekcji: %zd, rozpoczynających się od offsetu %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:1277
+#: src/readelf.c:1299
 #, c-format
 msgid "cannot get section header string table index: %s"
 msgstr "nie można uzyskać indeksu tabeli ciągów nagłówków sekcji: %s"
 
-#: src/readelf.c:1280
+#: src/readelf.c:1302
 msgid "Section Headers:"
 msgstr "Nagłówki sekcji:"
 
-#: src/readelf.c:1283
+#: src/readelf.c:1305
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4663,7 +4658,7 @@
 "[Nr] Nazwa                Typ          Adres    Offset Rozm.  ES Flagi Lk "
 "Inf Al"
 
-#: src/readelf.c:1285
+#: src/readelf.c:1307
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4671,36 +4666,36 @@
 "[Nr] Nazwa                Typ          Adres            Offset   Rozmiar  ES "
 "Flagi Lk Inf Al"
 
-#: src/readelf.c:1290
+#: src/readelf.c:1312
 msgid "     [Compression  Size   Al]"
 msgstr "     [Kompresja  Rozmiar   Al]"
 
-#: src/readelf.c:1292
+#: src/readelf.c:1314
 msgid "     [Compression  Size     Al]"
 msgstr "     [Kompresja  Rozmiar     Al]"
 
-#: src/readelf.c:1370
+#: src/readelf.c:1392
 #, c-format
 msgid "bad compression header for section %zd: %s"
 msgstr "błędny nagłówek kompresji dla sekcji %zd: %s"
 
-#: src/readelf.c:1381
+#: src/readelf.c:1403
 #, c-format
 msgid "bad gnu compressed size for section %zd: %s"
 msgstr "błędny rozmiar kompresji gnu dla sekcji %zd: %s"
 
-#: src/readelf.c:1399
+#: src/readelf.c:1421
 msgid "Program Headers:"
 msgstr "Nagłówki programu:"
 
-#: src/readelf.c:1401
+#: src/readelf.c:1423
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 "  Typ            Offset   AdresWirt  AdresFiz   RozmPlik RozmPam  Flg "
 "Wyrównanie"
 
-#: src/readelf.c:1404
+#: src/readelf.c:1426
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4708,12 +4703,12 @@
 "  Typ            Offset   AdresWirtualny     AdresFizyczny      RozmPlik "
 "RozmPam  Flg Wyrównanie"
 
-#: src/readelf.c:1461
+#: src/readelf.c:1483
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Wywołanie interpretera programu: %s]\n"
 
-#: src/readelf.c:1486
+#: src/readelf.c:1508
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4723,12 +4718,12 @@
 " Mapowanie sekcji do segmentów:\n"
 "  Segment sekcji…"
 
-#: src/readelf.c:1497 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
+#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "nie można uzyskać nagłówka programu: %s"
 
-#: src/readelf.c:1641
+#: src/readelf.c:1663
 #, c-format
 msgid ""
 "\n"
@@ -4746,7 +4741,7 @@
 "\n"
 "Grupa sekcji COMDAT [%2zu] „%s” z podpisem „%s” zawiera %zu wpisów:\n"
 
-#: src/readelf.c:1646
+#: src/readelf.c:1668
 #, c-format
 msgid ""
 "\n"
@@ -4764,32 +4759,32 @@
 "\n"
 "Grupa sekcji [%2zu] „%s” z podpisem „%s” zawiera %zu wpisów:\n"
 
-#: src/readelf.c:1654
+#: src/readelf.c:1676
 msgid "<INVALID SYMBOL>"
 msgstr "<NIEPRAWIDŁOWY SYMBOL>"
 
-#: src/readelf.c:1668
+#: src/readelf.c:1690
 msgid "<INVALID SECTION>"
 msgstr "<NIEPRAWIDŁOWY SEKCJA>"
 
-#: src/readelf.c:1691 src/readelf.c:2476 src/readelf.c:3581 src/readelf.c:3881
-#: src/readelf.c:12905 src/readelf.c:12912 src/readelf.c:12956
-#: src/readelf.c:12963
+#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212
+#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365
+#: src/readelf.c:13372
 msgid "Couldn't uncompress section"
 msgstr "Nie można dekompresować sekcji"
 
-#: src/readelf.c:1695 src/readelf.c:2481 src/readelf.c:3585
+#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916
 #, c-format
 msgid "cannot get section [%zd] header: %s"
 msgstr "nie można uzyskać nagłówka sekcji [%zd]: %s"
 
-#: src/readelf.c:1864 src/readelf.c:2550 src/readelf.c:2815 src/readelf.c:2890
-#: src/readelf.c:3193 src/readelf.c:3267 src/readelf.c:5619
+#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221
+#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962
 #, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "nieprawidłowa wartość sh_link w sekcji %zu"
 
-#: src/readelf.c:1867
+#: src/readelf.c:1889
 #, c-format
 msgid ""
 "\n"
@@ -4815,7 +4810,7 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] "
 "'%s'\n"
 
-#: src/readelf.c:1880
+#: src/readelf.c:1902
 #, fuzzy, c-format
 #| msgid ""
 #| "\n"
@@ -4849,42 +4844,42 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] "
 "'%s'\n"
 
-#: src/readelf.c:1890
+#: src/readelf.c:1912
 msgid "  Type              Value\n"
 msgstr "  Typ               Wartość\n"
 
-#: src/readelf.c:1899
+#: src/readelf.c:1921
 #, fuzzy
 #| msgid "cannot get string section data: %s"
 msgid "cannot get string table by using dynamic segment"
 msgstr "nie można uzyskać danych sekcji ciągów: %s"
 
-#: src/readelf.c:1938
+#: src/readelf.c:1960
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Biblioteka współdzielona: [%s]\n"
 
-#: src/readelf.c:1942
+#: src/readelf.c:1964
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "soname biblioteki: [%s]\n"
 
-#: src/readelf.c:1946
+#: src/readelf.c:1968
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "rpath biblioteki: [%s]\n"
 
-#: src/readelf.c:1950
+#: src/readelf.c:1972
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "runpath biblioteki: [%s]\n"
 
-#: src/readelf.c:1969
+#: src/readelf.c:1993
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (bajtów)\n"
 
-#: src/readelf.c:2083 src/readelf.c:2272
+#: src/readelf.c:2109 src/readelf.c:2298
 #, c-format
 msgid ""
 "\n"
@@ -4893,7 +4888,7 @@
 "\n"
 "Nieprawidłowa tabela symboli pod offsetem %#0<PRIx64>\n"
 
-#: src/readelf.c:2100 src/readelf.c:2289
+#: src/readelf.c:2126 src/readelf.c:2315
 #, c-format
 msgid ""
 "\n"
@@ -4922,7 +4917,8 @@
 #. The .rela.dyn section does not refer to a specific section but
 #. instead of section index zero.  Do not try to print a section
 #. name.
-#: src/readelf.c:2115 src/readelf.c:2304
+#. A .relr.dyn section does not refer to a specific section.
+#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485
 #, c-format
 msgid ""
 "\n"
@@ -4940,30 +4936,40 @@
 "\n"
 "Sekcja relokacji [%2u] „%s” pod offsetem %#0<PRIx64> zawiera %d wpisów:\n"
 
-#: src/readelf.c:2125
+#: src/readelf.c:2151
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  Offset      Typ                  Wartość     Nazwa\n"
 
-#: src/readelf.c:2127
+#: src/readelf.c:2153
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  Offset              Typ                  Wartość             Nazwa\n"
 
-#: src/readelf.c:2180 src/readelf.c:2191 src/readelf.c:2204 src/readelf.c:2225
-#: src/readelf.c:2237 src/readelf.c:2370 src/readelf.c:2382 src/readelf.c:2396
-#: src/readelf.c:2418 src/readelf.c:2431
+#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251
+#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422
+#: src/readelf.c:2444 src/readelf.c:2457
 msgid "<INVALID RELOC>"
 msgstr "<NIEPRAWIDŁOWA RELOKACJA>"
 
-#: src/readelf.c:2314
+#: src/readelf.c:2340
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  Offset      Typ             Wartość     Koniec Nazwa\n"
 
-#: src/readelf.c:2316
+#: src/readelf.c:2342
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 "  Offset              Typ             Wartość             Koniec Nazwa\n"
 
-#: src/readelf.c:2558
+#: src/readelf.c:2654
+#, c-format
+msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+
+#: src/readelf.c:2750
+#, c-format
+msgid "bad dynamic symbol"
+msgstr "błędny symbol dynamiczny"
+
+#: src/readelf.c:2868
 #, c-format
 msgid ""
 "\n"
@@ -4981,7 +4987,7 @@
 "\n"
 "Tabela symboli [%2u] „%s” zawiera %u wpisów:\n"
 
-#: src/readelf.c:2563
+#: src/readelf.c:2873
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
@@ -4989,33 +4995,27 @@
 msgstr[1] " %lu symbole lokalne    Tabela ciągów: [%2u] „%s”\n"
 msgstr[2] " %lu symboli lokalnych  Tabela ciągów: [%2u] „%s”\n"
 
-#: src/readelf.c:2571
+#: src/readelf.c:2881
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Numer:  Wartość Rozm Typ     Bind   Widoczność   Ndx Nazwa\n"
 
-#: src/readelf.c:2573
+#: src/readelf.c:2883
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  Numer:          Wartość Rozm Typ     Bind   Widoczność   Ndx Nazwa\n"
 
-#: src/readelf.c:2593
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+#: src/readelf.c:3002
+msgid "Dynamic symbol information is not available for displaying symbols."
+msgstr ""
 
-#: src/readelf.c:2686
-#, c-format
-msgid "bad dynamic symbol"
-msgstr "błędny symbol dynamiczny"
-
-#: src/readelf.c:2771
+#: src/readelf.c:3102
 msgid "none"
 msgstr "brak"
 
-#: src/readelf.c:2788
+#: src/readelf.c:3119
 msgid "| <unknown>"
 msgstr "| <nieznany>"
 
-#: src/readelf.c:2818
+#: src/readelf.c:3149
 #, c-format
 msgid ""
 "\n"
@@ -5041,17 +5041,17 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] "
 "„%s”\n"
 
-#: src/readelf.c:2839
+#: src/readelf.c:3170
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Wersja: %hu  Plik: %s  Licznik: %hu\n"
 
-#: src/readelf.c:2852
+#: src/readelf.c:3183
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Nazwa: %s  Flagi: %s  Wersja: %hu\n"
 
-#: src/readelf.c:2894
+#: src/readelf.c:3225
 #, c-format
 msgid ""
 "\n"
@@ -5077,19 +5077,19 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] "
 "„%s”\n"
 
-#: src/readelf.c:2922
+#: src/readelf.c:3253
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr ""
 "  %#06x: Wersja: %hd  Flagi: %s  Indeks: %hd  Licznik: %hd  Nazwa: %s\n"
 
-#: src/readelf.c:2937
+#: src/readelf.c:3268
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: Rodzic %d: %s\n"
 
 #. Print the header.
-#: src/readelf.c:3197
+#: src/readelf.c:3528
 #, c-format
 msgid ""
 "\n"
@@ -5112,15 +5112,15 @@
 "Sekcja symboli wersji [%2u] „%s” zawiera %d wpisów:\n"
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] „%s”"
 
-#: src/readelf.c:3225
+#: src/readelf.c:3556
 msgid "   0 *local*                     "
 msgstr "   0 *lokalny*                   "
 
-#: src/readelf.c:3230
+#: src/readelf.c:3561
 msgid "   1 *global*                    "
 msgstr "   1 *globalny*                  "
 
-#: src/readelf.c:3272
+#: src/readelf.c:3603
 #, c-format
 msgid ""
 "\n"
@@ -5151,22 +5151,22 @@
 " Adres: %#0*<PRIx64>  Offset: %#08<PRIx64>  Dowiązanie do sekcji: [%2u] "
 "„%s”\n"
 
-#: src/readelf.c:3294
+#: src/readelf.c:3625
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Długość Liczba  % całości   Pokrycie\n"
 
-#: src/readelf.c:3296
+#: src/readelf.c:3627
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:3303
+#: src/readelf.c:3634
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:3316
+#: src/readelf.c:3647
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -5175,37 +5175,37 @@
 " Średnia liczba testów:   udane wyszukania: %f\n"
 "\t\t\t  nieudane wyszukania: %f\n"
 
-#: src/readelf.c:3334 src/readelf.c:3398 src/readelf.c:3464
+#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "nie można uzyskać danych dla sekcji %d: %s"
 
-#: src/readelf.c:3342
+#: src/readelf.c:3673
 #, c-format
 msgid "invalid data in sysv.hash section %d"
 msgstr "nieprawidłowe dane w sekcji sysv.hash %d"
 
-#: src/readelf.c:3371
+#: src/readelf.c:3702
 #, c-format
 msgid "invalid chain in sysv.hash section %d"
 msgstr "nieprawidłowy łańcuch w sekcji sysv.hash %d"
 
-#: src/readelf.c:3406
+#: src/readelf.c:3737
 #, c-format
 msgid "invalid data in sysv.hash64 section %d"
 msgstr "nieprawidłowe dane w sekcji sysv.hash64 %d"
 
-#: src/readelf.c:3437
+#: src/readelf.c:3768
 #, c-format
 msgid "invalid chain in sysv.hash64 section %d"
 msgstr "nieprawidłowy łańcuch w sekcji sysv.hash64 %d"
 
-#: src/readelf.c:3473
+#: src/readelf.c:3804
 #, c-format
 msgid "invalid data in gnu.hash section %d"
 msgstr "nieprawidłowe dane w sekcji gnu.hash %d"
 
-#: src/readelf.c:3539
+#: src/readelf.c:3870
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -5215,7 +5215,7 @@
 " Rozmiar maski bitowej: %zu B  %<PRIuFAST32>%% b ustawionych  drugie "
 "przesunięcie skrótu: %u\n"
 
-#: src/readelf.c:3624
+#: src/readelf.c:3955
 #, c-format
 msgid ""
 "\n"
@@ -5236,7 +5236,7 @@
 "Sekcja listy bibliotek [%2zu] „%s” pod offsetem %#0<PRIx64> zawiera %d "
 "wpisów:\n"
 
-#: src/readelf.c:3638
+#: src/readelf.c:3969
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -5244,7 +5244,7 @@
 "       Biblioteka                    Czas                Suma k.  Wersja  "
 "Flagi"
 
-#: src/readelf.c:3698
+#: src/readelf.c:4029
 #, c-format
 msgid ""
 "\n"
@@ -5254,107 +5254,107 @@
 "\n"
 "Sekcja atrybutów obiektu [%2zu] „%s” %<PRIu64> B pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:3715
+#: src/readelf.c:4046
 msgid "  Owner          Size\n"
 msgstr "  Właściciel          Rozmiar\n"
 
-#: src/readelf.c:3739
+#: src/readelf.c:4070
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
 #. Unknown subsection, print and skip.
-#: src/readelf.c:3778
+#: src/readelf.c:4109
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
 #. Tag_File
-#: src/readelf.c:3783
+#: src/readelf.c:4114
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    Plik: %11<PRIu32>\n"
 
-#: src/readelf.c:3833
+#: src/readelf.c:4164
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3836
+#: src/readelf.c:4167
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3839
+#: src/readelf.c:4170
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3849
+#: src/readelf.c:4180
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3852
+#: src/readelf.c:4183
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3890
+#: src/readelf.c:4221
 #, fuzzy
 #| msgid "couldn't get shdr for group section: %s"
 msgid "Couldn't get data from section"
 msgstr "nie można uzyskać shdr dla sekcji grupy: %s"
 
-#: src/readelf.c:3955
+#: src/readelf.c:4286
 msgid "sprintf failure"
 msgstr "sprintf się nie powiodło"
 
-#: src/readelf.c:4439
+#: src/readelf.c:4770
 msgid "empty block"
 msgstr "pusty blok"
 
-#: src/readelf.c:4442
+#: src/readelf.c:4773
 #, c-format
 msgid "%zu byte block:"
 msgstr "blok o %zu B:"
 
-#: src/readelf.c:4920
+#: src/readelf.c:5251
 #, c-format
 msgid "%*s[%2<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%2<PRIuMAX>] %s  <SKRÓCONE>\n"
 
-#: src/readelf.c:5080
+#: src/readelf.c:5423
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami adresu"
 
-#: src/readelf.c:5087
+#: src/readelf.c:5430
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> zostało użyte z różnymi rozmiarami offsetu"
 
-#: src/readelf.c:5094
+#: src/readelf.c:5437
 #, c-format
 msgid "%s %#<PRIx64> used with different base addresses"
 msgstr "%s %#<PRIx64> zostało użyte z różnymi adresami podstawowymi"
 
-#: src/readelf.c:5101
+#: src/readelf.c:5444
 #, c-format
 msgid "%s %#<PRIx64> used with different attribute %s and %s"
 msgstr "%s %#<PRIx64> zostało użyte z różnymi atrybutami %s i %s"
 
-#: src/readelf.c:5201
+#: src/readelf.c:5544
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx]  <NIEUŻYWANE ŚMIECIE W RESZCIE SEKCJI>\n"
 
-#: src/readelf.c:5209
+#: src/readelf.c:5552
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <NIEUŻYWANE ŚMIECIE>… %<PRIu64> B…\n"
 
-#: src/readelf.c:5315
+#: src/readelf.c:5658
 #, c-format
 msgid ""
 "\n"
@@ -5365,7 +5365,7 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 " [ Kod]\n"
 
-#: src/readelf.c:5323
+#: src/readelf.c:5666
 #, c-format
 msgid ""
 "\n"
@@ -5374,20 +5374,20 @@
 "\n"
 "Sekcja skrótów pod offsetem %<PRIu64>:\n"
 
-#: src/readelf.c:5336
+#: src/readelf.c:5679
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** błąd podczas odczytywania skrótu: %s\n"
 
-#: src/readelf.c:5352
+#: src/readelf.c:5695
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] offset: %<PRId64>, potomek: %s, znacznik: %s\n"
 
-#: src/readelf.c:5389 src/readelf.c:5682 src/readelf.c:5853 src/readelf.c:6224
-#: src/readelf.c:6850 src/readelf.c:8619 src/readelf.c:9361 src/readelf.c:9829
-#: src/readelf.c:10084 src/readelf.c:10246 src/readelf.c:10627
-#: src/readelf.c:10698
+#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567
+#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172
+#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970
+#: src/readelf.c:11041
 #, c-format
 msgid ""
 "\n"
@@ -5396,47 +5396,47 @@
 "\n"
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 
-#: src/readelf.c:5492 src/readelf.c:5516 src/readelf.c:5889 src/readelf.c:9397
+#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740
 #, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " Długość:          %8<PRIu64>\n"
 
-#: src/readelf.c:5494 src/readelf.c:5531 src/readelf.c:5902 src/readelf.c:9410
+#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753
 #, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr " Wersja DWARF:     %8<PRIu16>\n"
 
-#: src/readelf.c:5495 src/readelf.c:5540 src/readelf.c:5911 src/readelf.c:9419
+#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762
 #, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " Rozmiar adresu:   %8<PRIu64>\n"
 
-#: src/readelf.c:5497 src/readelf.c:5550 src/readelf.c:5921 src/readelf.c:9429
+#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772
 #, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr " Rozmiar segmentu: %8<PRIu64>\n"
 
-#: src/readelf.c:5535 src/readelf.c:5906 src/readelf.c:9414 src/readelf.c:10820
+#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163
 #, c-format
 msgid "Unknown version"
 msgstr "Nieznana wersja"
 
-#: src/readelf.c:5545 src/readelf.c:5752 src/readelf.c:5916 src/readelf.c:9424
+#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767
 #, c-format
 msgid "unsupported address size"
 msgstr "nieobsługiwany rozmiar adresu"
 
-#: src/readelf.c:5556 src/readelf.c:5763 src/readelf.c:5926 src/readelf.c:9434
+#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777
 #, c-format
 msgid "unsupported segment size"
 msgstr "nieobsługiwany rozmiar segmentu"
 
-#: src/readelf.c:5609
+#: src/readelf.c:5952
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "nie można uzyskać zawartości .debug_aranges: %s"
 
-#: src/readelf.c:5624
+#: src/readelf.c:5967
 #, c-format
 msgid ""
 "\n"
@@ -5454,12 +5454,12 @@
 "\n"
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:5655
+#: src/readelf.c:5998
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5657
+#: src/readelf.c:6000
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5467,7 +5467,7 @@
 " [%*zu] początek: %0#*<PRIx64>, długość: %5<PRIu64>, offset CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:5695 src/readelf.c:8638
+#: src/readelf.c:6038 src/readelf.c:8981
 #, c-format
 msgid ""
 "\n"
@@ -5476,13 +5476,13 @@
 "\n"
 "Tabela pod offsetem %zu:\n"
 
-#: src/readelf.c:5699 src/readelf.c:5870 src/readelf.c:6874 src/readelf.c:8649
-#: src/readelf.c:9378
+#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992
+#: src/readelf.c:9721
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "nieprawidłowe dane w sekcji [%zu] „%s”"
 
-#: src/readelf.c:5715
+#: src/readelf.c:6058
 #, c-format
 msgid ""
 "\n"
@@ -5491,27 +5491,27 @@
 "\n"
 " Długość:        %6<PRIu64>\n"
 
-#: src/readelf.c:5727
+#: src/readelf.c:6070
 #, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr " Wersja DWARF: %6<PRIuFAST16>\n"
 
-#: src/readelf.c:5731
+#: src/readelf.c:6074
 #, c-format
 msgid "unsupported aranges version"
 msgstr "nieobsługiwana wersja aranges"
 
-#: src/readelf.c:5742
+#: src/readelf.c:6085
 #, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " Offset CU:     %6<PRIx64>\n"
 
-#: src/readelf.c:5748
+#: src/readelf.c:6091
 #, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " Offset adresu:  %6<PRIu64>\n"
 
-#: src/readelf.c:5759
+#: src/readelf.c:6102
 #, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
@@ -5520,12 +5520,12 @@
 " Rozmiar segmentu:  %6<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5814
+#: src/readelf.c:6157
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr "   %zu B wypełnienia\n"
 
-#: src/readelf.c:5876 src/readelf.c:9384
+#: src/readelf.c:6219 src/readelf.c:9727
 #, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
@@ -5534,42 +5534,42 @@
 "Tabela pod offsetem 0x%<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:5931 src/readelf.c:9439
+#: src/readelf.c:6274 src/readelf.c:9782
 #, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " Wpisy offsetu: %8<PRIu64>\n"
 
-#: src/readelf.c:5947 src/readelf.c:9455
+#: src/readelf.c:6290 src/readelf.c:9798
 #, c-format
 msgid " Unknown CU base: "
 msgstr " Nieznana podstawa CU: "
 
-#: src/readelf.c:5949 src/readelf.c:9457
+#: src/readelf.c:6292 src/readelf.c:9800
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr " Podstawa CU [%6<PRIx64>]: "
 
-#: src/readelf.c:5955 src/readelf.c:9463
+#: src/readelf.c:6298 src/readelf.c:9806
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr " Brak powiązania z CU.\n"
 
-#: src/readelf.c:5966 src/readelf.c:9474
+#: src/readelf.c:6309 src/readelf.c:9817
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr "za dużo wpisów offsetu dla długości jednostki"
 
-#: src/readelf.c:5970 src/readelf.c:9478
+#: src/readelf.c:6313 src/readelf.c:9821
 #, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  Offsety zaczynające się w 0x%<PRIx64>:\n"
 
-#: src/readelf.c:6022
+#: src/readelf.c:6365
 #, c-format
 msgid "invalid range list data"
 msgstr "nieprawidłowe dane listy zakresów"
 
-#: src/readelf.c:6207 src/readelf.c:9813
+#: src/readelf.c:6550 src/readelf.c:10156
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
@@ -5578,7 +5578,7 @@
 "   %zu B wypełnienia\n"
 "\n"
 
-#: src/readelf.c:6255 src/readelf.c:9862
+#: src/readelf.c:6598 src/readelf.c:10205
 #, c-format
 msgid ""
 "\n"
@@ -5587,7 +5587,7 @@
 "\n"
 " Nieznana podstawa CU: "
 
-#: src/readelf.c:6257 src/readelf.c:9864
+#: src/readelf.c:6600 src/readelf.c:10207
 #, c-format
 msgid ""
 "\n"
@@ -5596,30 +5596,30 @@
 "\n"
 " Podstawa CU [%6<PRIx64>]: "
 
-#: src/readelf.c:6266 src/readelf.c:9890 src/readelf.c:9916
+#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:6291 src/readelf.c:10000
+#: src/readelf.c:6634 src/readelf.c:10343
 msgid "base address"
 msgstr "adres podstawowy"
 
-#: src/readelf.c:6301 src/readelf.c:10010
+#: src/readelf.c:6644 src/readelf.c:10353
 #, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx] pusta lista\n"
 
-#: src/readelf.c:6565
+#: src/readelf.c:6908
 msgid "         <INVALID DATA>\n"
 msgstr "         <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:6822
+#: src/readelf.c:7165
 #, c-format
 msgid "cannot get ELF: %s"
 msgstr "nie można uzyskać ELF: %s"
 
-#: src/readelf.c:6846
+#: src/readelf.c:7189
 #, c-format
 msgid ""
 "\n"
@@ -5628,7 +5628,7 @@
 "\n"
 "Sekcja informacji o ramce wywołania [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 
-#: src/readelf.c:6896
+#: src/readelf.c:7239
 #, c-format
 msgid ""
 "\n"
@@ -5637,65 +5637,65 @@
 "\n"
 " [%6tx] Zerowy koniec\n"
 
-#: src/readelf.c:7000 src/readelf.c:7154
+#: src/readelf.c:7343 src/readelf.c:7497
 #, c-format
 msgid "invalid augmentation length"
 msgstr "nieprawidłowa długość powiększenia"
 
-#: src/readelf.c:7015
+#: src/readelf.c:7358
 msgid "FDE address encoding: "
 msgstr "Kodowanie adresu FDE: "
 
-#: src/readelf.c:7021
+#: src/readelf.c:7364
 msgid "LSDA pointer encoding: "
 msgstr "Kodowanie wskaźnika LSDA: "
 
-#: src/readelf.c:7131
+#: src/readelf.c:7474
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (offset: %#<PRIx64>)"
 
-#: src/readelf.c:7138
+#: src/readelf.c:7481
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (kończący offset: %#<PRIx64>)"
 
-#: src/readelf.c:7175
+#: src/readelf.c:7518
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sWskaźnik LSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:7260
+#: src/readelf.c:7603
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "DIE [%<PRIx64>] nie można uzyskać kodu atrybutu: %s"
 
-#: src/readelf.c:7270
+#: src/readelf.c:7613
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "DIE [%<PRIx64>] nie można uzyskać formy atrybutu: %s"
 
-#: src/readelf.c:7292
+#: src/readelf.c:7635
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "DIE [%<PRIx64>] nie można uzyskać wartości atrybutu „%s” (%s): %s"
 
-#: src/readelf.c:7622
+#: src/readelf.c:7965
 #, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "nieprawidłowy plik (%<PRId64>): %s"
 
-#: src/readelf.c:7626
+#: src/readelf.c:7969
 #, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr "brak plików źródłowych dla CU [%<PRIx64>]"
 
-#: src/readelf.c:7630
+#: src/readelf.c:7973
 #, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "nie można uzyskać CU DWARF: %s"
 
-#: src/readelf.c:7952
+#: src/readelf.c:8295
 #, c-format
 msgid ""
 "\n"
@@ -5706,12 +5706,12 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 " [Offset]\n"
 
-#: src/readelf.c:8002
+#: src/readelf.c:8345
 #, c-format
 msgid "cannot get next unit: %s"
 msgstr "nie można uzyskać następnej jednostki: %s"
 
-#: src/readelf.c:8022
+#: src/readelf.c:8365
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5724,7 +5724,7 @@
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 " Podpis typu: %#<PRIx64>, offset typu: %#<PRIx64> [%<PRIx64>]\n"
 
-#: src/readelf.c:8034
+#: src/readelf.c:8377
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5735,38 +5735,38 @@
 " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 
-#: src/readelf.c:8044 src/readelf.c:8205
+#: src/readelf.c:8387 src/readelf.c:8548
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr " Typ jednostki: %s (%<PRIu8>)"
 
-#: src/readelf.c:8071
+#: src/readelf.c:8414
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr "nieznana wersja (%d) lub typ jednostki (%d)"
 
-#: src/readelf.c:8100
+#: src/readelf.c:8443
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "nie można uzyskać offsetu DIE: %s"
 
-#: src/readelf.c:8109
+#: src/readelf.c:8452
 #, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr ""
 "nie można uzyskać znacznika DIE pod offsetem [%<PRIx64>] w sekcji „%s”: %s"
 
-#: src/readelf.c:8145
+#: src/readelf.c:8488
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "nie można uzyskać następnego DIE: %s\n"
 
-#: src/readelf.c:8153
+#: src/readelf.c:8496
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "nie można uzyskać następnego DIE: %s"
 
-#: src/readelf.c:8197
+#: src/readelf.c:8540
 #, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5777,7 +5777,7 @@
 " Wersja: %<PRIu16>, offset sekcji skrótów: %<PRIu64>, rozmiar adresu: "
 "%<PRIu8>, rozmiar offsetu: %<PRIu8>\n"
 
-#: src/readelf.c:8249
+#: src/readelf.c:8592
 #, c-format
 msgid ""
 "\n"
@@ -5788,13 +5788,13 @@
 "Sekcja DWARF [%2zu] „%s” pod offsetem %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:8581
+#: src/readelf.c:8924
 #, c-format
 msgid "unknown form: %s"
 msgstr "nieznana forma: %s"
 
 #. Print what we got so far.
-#: src/readelf.c:8729
+#: src/readelf.c:9072
 #, c-format
 msgid ""
 "\n"
@@ -5827,27 +5827,27 @@
 "\n"
 "Instrukcje:\n"
 
-#: src/readelf.c:8751
+#: src/readelf.c:9094
 #, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "nie można obsłużyć wersji .debug_line: %u\n"
 
-#: src/readelf.c:8759
+#: src/readelf.c:9102
 #, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "nie można obsłużyć rozmiaru adresu: %u\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:9110
 #, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "nie można obsłużyć rozmiaru selektora segmentu: %u\n"
 
-#: src/readelf.c:8777
+#: src/readelf.c:9120
 #, 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:8792
+#: src/readelf.c:9135
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
@@ -5855,7 +5855,7 @@
 msgstr[1] "  [%*<PRIuFAST8>]  %hhu parametry\n"
 msgstr[2] "  [%*<PRIuFAST8>]  %hhu parametrów\n"
 
-#: src/readelf.c:8803
+#: src/readelf.c:9146
 msgid ""
 "\n"
 "Directory table:"
@@ -5863,12 +5863,12 @@
 "\n"
 "Tabela katalogu:"
 
-#: src/readelf.c:8809 src/readelf.c:8886
+#: src/readelf.c:9152 src/readelf.c:9229
 #, c-format
 msgid "      ["
 msgstr "      ["
 
-#: src/readelf.c:8880
+#: src/readelf.c:9223
 msgid ""
 "\n"
 "File name table:"
@@ -5876,11 +5876,11 @@
 "\n"
 "Tabela nazw plików:"
 
-#: src/readelf.c:8941
+#: src/readelf.c:9284
 msgid " Entry Dir   Time      Size      Name"
 msgstr " Wpis  Kat   Czas      Rozmiar   Nazwa"
 
-#: src/readelf.c:8987
+#: src/readelf.c:9330
 msgid ""
 "\n"
 "No line number statements."
@@ -5888,7 +5888,7 @@
 "\n"
 "Brak instrukcji numerów wierszy."
 
-#: src/readelf.c:8991
+#: src/readelf.c:9334
 msgid ""
 "\n"
 "Line number statements:"
@@ -5896,129 +5896,129 @@
 "\n"
 "Instrukcje numerów wierszy:"
 
-#: src/readelf.c:9006
+#: src/readelf.c:9349
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr "nieprawidłowe maksimum operacji na instrukcję wynosi zero"
 
-#: src/readelf.c:9040
+#: src/readelf.c:9383
 #, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " instrukcja specjalna %u: adres+%u = "
 
-#: src/readelf.c:9044
+#: src/readelf.c:9387
 #, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ", op_index = %u, wiersz%+d = %zu\n"
 
-#: src/readelf.c:9047
+#: src/readelf.c:9390
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ", wiersz%+d = %zu\n"
 
-#: src/readelf.c:9065
+#: src/readelf.c:9408
 #, c-format
 msgid " extended opcode %u: "
 msgstr " instrukcja rozszerzona %u: "
 
-#: src/readelf.c:9070
+#: src/readelf.c:9413
 msgid " end of sequence"
 msgstr " koniec sekwencji"
 
-#: src/readelf.c:9088
+#: src/readelf.c:9431
 #, c-format
 msgid " set address to "
 msgstr " ustawienie adresu na "
 
-#: src/readelf.c:9116
+#: src/readelf.c:9459
 #, 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:9130
+#: src/readelf.c:9473
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " ustawienie dyskryminatora na %u\n"
 
-#: src/readelf.c:9157
+#: src/readelf.c:9500
 #, c-format
 msgid " set inlined context %u, function name %s (0x%x)\n"
 msgstr ""
 
-#: src/readelf.c:9181
+#: src/readelf.c:9524
 #, fuzzy, c-format
 #| msgid "Also show function names"
 msgid " set function name %s (0x%x)\n"
 msgstr "Wyświetla także nazwy funkcji"
 
 #. Unknown, ignore it.
-#: src/readelf.c:9188
+#: src/readelf.c:9531
 msgid " unknown opcode"
 msgstr " nieznana instrukcja"
 
 #. Takes no argument.
-#: src/readelf.c:9200
+#: src/readelf.c:9543
 msgid " copy"
 msgstr " kopiowanie"
 
-#: src/readelf.c:9211
+#: src/readelf.c:9554
 #, c-format
 msgid " advance address by %u to "
 msgstr " zwiększenie adresu o %u do "
 
-#: src/readelf.c:9215 src/readelf.c:9276
+#: src/readelf.c:9558 src/readelf.c:9619
 #, c-format
 msgid ", op_index to %u"
 msgstr ", op_index do %u"
 
-#: src/readelf.c:9227
+#: src/readelf.c:9570
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " zwiększenie wiersza o stałą %d do %<PRId64>\n"
 
-#: src/readelf.c:9237
+#: src/readelf.c:9580
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " ustawienie pliku na %<PRIu64>\n"
 
-#: src/readelf.c:9248
+#: src/readelf.c:9591
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " ustawienie kolumny na %<PRIu64>\n"
 
-#: src/readelf.c:9255
+#: src/readelf.c:9598
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " ustawienie „%s” na %<PRIuFAST8>\n"
 
 #. Takes no argument.
-#: src/readelf.c:9261
+#: src/readelf.c:9604
 msgid " set basic block flag"
 msgstr " ustawienie podstawowej flagi bloku"
 
-#: src/readelf.c:9272
+#: src/readelf.c:9615
 #, c-format
 msgid " advance address by constant %u to "
 msgstr " zwiększenie adresu o stałą %u do "
 
-#: src/readelf.c:9292
+#: src/readelf.c:9635
 #, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr " zwiększenie adresu o stałą wartość %u do \n"
 
 #. Takes no argument.
-#: src/readelf.c:9302
+#: src/readelf.c:9645
 msgid " set prologue end flag"
 msgstr " ustawienie flagi końca prologu"
 
 #. Takes no argument.
-#: src/readelf.c:9307
+#: src/readelf.c:9650
 msgid " set epilogue begin flag"
 msgstr " ustawienie flagi początku epilogu"
 
-#: src/readelf.c:9317
+#: src/readelf.c:9660
 #, c-format
 msgid " set isa to %u\n"
 msgstr " ustawienie isa na %u\n"
@@ -6026,7 +6026,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:9326
+#: src/readelf.c:9669
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -6034,86 +6034,86 @@
 msgstr[1] " nieznana instrukcja z %<PRIu8> parametrami:"
 msgstr[2] " nieznana instrukcja z %<PRIu8> parametrami:"
 
-#: src/readelf.c:9527
+#: src/readelf.c:9870
 #, c-format
 msgid "    <INVALID DATA>\n"
 msgstr "    <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:9567
+#: src/readelf.c:9910
 #, c-format
 msgid "invalid loclists data"
 msgstr "nieprawidłowe dane loclists"
 
-#: src/readelf.c:10037 src/readelf.c:11082
+#: src/readelf.c:10380 src/readelf.c:11425
 msgid "   <INVALID DATA>\n"
 msgstr "   <NIEPRAWIDŁOWE DANE>\n"
 
-#: src/readelf.c:10168
+#: src/readelf.c:10511
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** niezakończony ciąg na końcu sekcji"
 
-#: src/readelf.c:10191
+#: src/readelf.c:10534
 #, 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:10286
+#: src/readelf.c:10629
 #, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr " Offset:             0x%<PRIx64>\n"
 
-#: src/readelf.c:10298
+#: src/readelf.c:10641
 #, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr " Wersja:             %<PRIu16>\n"
 
-#: src/readelf.c:10304 src/readelf.c:11202
+#: src/readelf.c:10647 src/readelf.c:11546
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr "  nieznana wersja, nie można przetworzyć sekcji\n"
 
-#: src/readelf.c:10311
+#: src/readelf.c:10654
 #, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr " Flaga:              0x%<PRIx8>"
 
-#: src/readelf.c:10340
+#: src/readelf.c:10683
 #, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " Długość offsetu:    %<PRIu8>\n"
 
-#: src/readelf.c:10348
+#: src/readelf.c:10691
 #, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " Offset .debug_line: 0x%<PRIx64>\n"
 
-#: src/readelf.c:10373
+#: src/readelf.c:10716
 #, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr "  tabela instrukcji rozszerzenia, %<PRIu8> elementów:\n"
 
-#: src/readelf.c:10380
+#: src/readelf.c:10723
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr "    [%<PRIx8>]"
 
-#: src/readelf.c:10392
+#: src/readelf.c:10735
 #, c-format
 msgid " %<PRIu8> arguments:"
 msgstr " Parametry %<PRIu8>:"
 
-#: src/readelf.c:10407
+#: src/readelf.c:10750
 #, c-format
 msgid " no arguments."
 msgstr " brak parametrów."
 
-#: src/readelf.c:10608
+#: src/readelf.c:10951
 #, 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:10663
+#: src/readelf.c:11006
 #, c-format
 msgid ""
 "\n"
@@ -6125,37 +6125,37 @@
 " %*s  Ciąg\n"
 
 #. TRANS: the debugstr| prefix makes the string unique.
-#: src/readelf.c:10668
+#: src/readelf.c:11011
 msgctxt "debugstr"
 msgid "Offset"
 msgstr ""
 
-#: src/readelf.c:10678
+#: src/readelf.c:11021
 #, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** błąd, brak znaku kończącego ciąg\n"
 
-#: src/readelf.c:10800
+#: src/readelf.c:11143
 #, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " Długość:         %8<PRIu64>\n"
 
-#: src/readelf.c:10802
+#: src/readelf.c:11145
 #, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " Rozmiar offsetu: %8<PRIu8>\n"
 
-#: src/readelf.c:10816
+#: src/readelf.c:11159
 #, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr " Wersja DWARF:    %8<PRIu16>\n"
 
-#: src/readelf.c:10825
+#: src/readelf.c:11168
 #, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " Wypełnienie:     %8<PRIx16>\n"
 
-#: src/readelf.c:10879
+#: src/readelf.c:11222
 #, c-format
 msgid ""
 "\n"
@@ -6164,7 +6164,7 @@
 "\n"
 "Sekcja tabeli wyszukiwania ramki wywołania [%2zu] „.eh_frame_hdr”:\n"
 
-#: src/readelf.c:10981
+#: src/readelf.c:11324
 #, c-format
 msgid ""
 "\n"
@@ -6173,22 +6173,22 @@
 "\n"
 "Sekcja tabeli obsługiwania wyjątków [%2zu] „.gcc_except_table”:\n"
 
-#: src/readelf.c:11004
+#: src/readelf.c:11347
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " Kodowanie LPStart:    %#x "
 
-#: src/readelf.c:11016
+#: src/readelf.c:11359
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " Kodowanie TType:      %#x "
 
-#: src/readelf.c:11033
+#: src/readelf.c:11376
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Kodowanie strony wywołania:  %#x "
 
-#: src/readelf.c:11048
+#: src/readelf.c:11391
 msgid ""
 "\n"
 " Call site table:"
@@ -6196,7 +6196,7 @@
 "\n"
 " Tabela strony wywołania:"
 
-#: src/readelf.c:11064
+#: src/readelf.c:11407
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -6209,12 +6209,12 @@
 "        Lądowisko:                 %#<PRIx64>\n"
 "        Działanie:                 %u\n"
 
-#: src/readelf.c:11137
+#: src/readelf.c:11480
 #, c-format
 msgid "invalid TType encoding"
 msgstr "nieprawidłowe kodowanie TType"
 
-#: src/readelf.c:11164
+#: src/readelf.c:11507
 #, c-format
 msgid ""
 "\n"
@@ -6223,37 +6223,43 @@
 "\n"
 "Sekcja GDB [%2zu] „%s” pod offsetem %#<PRIx64> zawiera %<PRId64> B:\n"
 
-#: src/readelf.c:11193
+#: src/readelf.c:11536
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr " Wersja:         %<PRId32>\n"
 
-#: src/readelf.c:11211
+#: src/readelf.c:11555
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " offset CU:       %#<PRIx32>\n"
 
-#: src/readelf.c:11218
+#: src/readelf.c:11562
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " offset TU:       %#<PRIx32>\n"
 
-#: src/readelf.c:11225
+#: src/readelf.c:11569
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " offset adresu:  %#<PRIx32>\n"
 
-#: src/readelf.c:11232
+#: src/readelf.c:11576
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " offset symbolu:   %#<PRIx32>\n"
 
-#: src/readelf.c:11239
+#: src/readelf.c:11586
+#, fuzzy, c-format
+#| msgid " constant offset: %#<PRIx32>\n"
+msgid " shortcut offset: %#<PRIx32>\n"
+msgstr " offset stałej: %#<PRIx32>\n"
+
+#: src/readelf.c:11594
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " offset stałej: %#<PRIx32>\n"
 
-#: src/readelf.c:11253
+#: src/readelf.c:11608
 #, c-format
 msgid ""
 "\n"
@@ -6262,7 +6268,7 @@
 "\n"
 " Lista CU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:11278
+#: src/readelf.c:11633
 #, c-format
 msgid ""
 "\n"
@@ -6271,7 +6277,7 @@
 "\n"
 " Lista TU pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:11307
+#: src/readelf.c:11662
 #, c-format
 msgid ""
 "\n"
@@ -6280,7 +6286,7 @@
 "\n"
 " Lista adresów pod offsetem %#<PRIx32> zawiera %zu wpisów:\n"
 
-#: src/readelf.c:11339
+#: src/readelf.c:11705
 #, c-format
 msgid ""
 "\n"
@@ -6289,18 +6295,40 @@
 "\n"
 " Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n"
 
-#: src/readelf.c:11477
+#: src/readelf.c:11790
+#, fuzzy, c-format
+#| msgid ""
+#| "\n"
+#| " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
+msgid ""
+"\n"
+"Shortcut table at offset %#<PRIx32> contains %zu slots:\n"
+msgstr ""
+"\n"
+" Tabela symboli pod offsetem %#<PRIx32> zawiera %zu gniazd:\n"
+
+#: src/readelf.c:11802
+#, c-format
+msgid "Language of main: %s\n"
+msgstr ""
+
+#: src/readelf.c:11803
+#, c-format
+msgid "Name of main: "
+msgstr ""
+
+#: src/readelf.c:11886
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
 
-#: src/readelf.c:11843 src/readelf.c:12463 src/readelf.c:12573
-#: src/readelf.c:12630
+#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982
+#: src/readelf.c:13039
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "nie można konwertować danych notatki core: %s"
 
-#: src/readelf.c:12207
+#: src/readelf.c:12616
 #, c-format
 msgid ""
 "\n"
@@ -6309,21 +6337,21 @@
 "\n"
 "%*s… <powtarza się jeszcze %u razy>…"
 
-#: src/readelf.c:12709
+#: src/readelf.c:13118
 msgid "  Owner          Data size  Type\n"
 msgstr "  Właściciel     Rozmiar danych  Typ\n"
 
-#: src/readelf.c:12737
+#: src/readelf.c:13146
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12789
+#: src/readelf.c:13198
 #, c-format
 msgid "cannot get content of note: %s"
 msgstr "nie można uzyskać zawartości notatki: %s"
 
-#: src/readelf.c:12822
+#: src/readelf.c:13231
 #, c-format
 msgid ""
 "\n"
@@ -6333,7 +6361,7 @@
 "Segment notatki [%2zu] „%s” o długości %<PRIu64> B pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12845
+#: src/readelf.c:13254
 #, c-format
 msgid ""
 "\n"
@@ -6342,7 +6370,7 @@
 "\n"
 "Segment notatki o długości %<PRIu64> B pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12892
+#: src/readelf.c:13301
 #, c-format
 msgid ""
 "\n"
@@ -6351,12 +6379,12 @@
 "\n"
 "Sekcja [%zu] „%s” nie ma danych do zrzucenia.\n"
 
-#: src/readelf.c:12919 src/readelf.c:12970
+#: src/readelf.c:13328 src/readelf.c:13379
 #, 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:12924
+#: src/readelf.c:13333
 #, c-format
 msgid ""
 "\n"
@@ -6366,7 +6394,7 @@
 "Segment zrzutu szesnastkowego [%zu] „%s”, %<PRIu64> B pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12929
+#: src/readelf.c:13338
 #, c-format
 msgid ""
 "\n"
@@ -6377,7 +6405,7 @@
 "Zrzut szesnastkowy sekcji [%zu] „%s”, %<PRIu64> B (%zd nieskompresowanych) "
 "pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12943
+#: src/readelf.c:13352
 #, c-format
 msgid ""
 "\n"
@@ -6386,7 +6414,7 @@
 "\n"
 "Sekcja [%zu] „%s” nie ma ciągów do zrzucenia.\n"
 
-#: src/readelf.c:12975
+#: src/readelf.c:13384
 #, c-format
 msgid ""
 "\n"
@@ -6395,7 +6423,7 @@
 "\n"
 "Sekcja ciągów [%zu] „%s” zawiera %<PRIu64> B pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12980
+#: src/readelf.c:13389
 #, c-format
 msgid ""
 "\n"
@@ -6406,7 +6434,7 @@
 "Sekcja ciągów [%zu] „%s” zawiera %<PRIu64> B (%zd nieskompresowanych) pod "
 "offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:13028
+#: src/readelf.c:13437
 #, c-format
 msgid ""
 "\n"
@@ -6415,7 +6443,7 @@
 "\n"
 "sekcja [%lu] nie istnieje"
 
-#: src/readelf.c:13058
+#: src/readelf.c:13467
 #, c-format
 msgid ""
 "\n"
@@ -6424,12 +6452,12 @@
 "\n"
 "sekcja „%s” nie istnieje"
 
-#: src/readelf.c:13113
+#: src/readelf.c:13522
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "nie można uzyskać indeksu symboli archiwum „%s”: %s"
 
-#: src/readelf.c:13116
+#: src/readelf.c:13525
 #, c-format
 msgid ""
 "\n"
@@ -6438,7 +6466,7 @@
 "\n"
 "Archiwum „%s” nie ma indeksu symboli\n"
 
-#: src/readelf.c:13120
+#: src/readelf.c:13529
 #, c-format
 msgid ""
 "\n"
@@ -6447,12 +6475,12 @@
 "\n"
 "Indeks archiwum „%s” ma %zu wpisów:\n"
 
-#: src/readelf.c:13138
+#: src/readelf.c:13547
 #, 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:13143
+#: src/readelf.c:13552
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Element archiwum „%s” zawiera:\n"
@@ -6960,7 +6988,7 @@
 msgid "%s: error while getting shdrstrndx: %s"
 msgstr "%s: błąd podczas uzyskiwania shdrstrndx: %s"
 
-#: src/strip.c:1712 src/strip.c:2553
+#: src/strip.c:1712 src/strip.c:2552
 #, c-format
 msgid "%s: error updating shdrstrndx: %s"
 msgstr "%s: błąd podczas aktualizowania shdrstrndx: %s"
@@ -6994,7 +7022,7 @@
 msgid "Cannot remove symbol [%zd] from allocated symbol table [%zd]"
 msgstr "Nie można usunąć symbolu [%zd] z przydzielonej tabeli symboli [%zd]"
 
-#: src/strip.c:2469 src/strip.c:2577
+#: src/strip.c:2469 src/strip.c:2574
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "podczas zapisywania „%s”: %s"
@@ -7014,22 +7042,22 @@
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: błąd podczas tworzenia nagłówka ELF: %s"
 
-#: src/strip.c:2562
+#: src/strip.c:2560
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: błąd podczas odczytywania pliku: %s"
 
-#: src/strip.c:2602 src/strip.c:2622
+#: src/strip.c:2599 src/strip.c:2619
 #, c-format
 msgid "while writing '%s'"
 msgstr "podczas zapisywania „%s”"
 
-#: src/strip.c:2659 src/strip.c:2666
+#: src/strip.c:2656 src/strip.c:2663
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "błąd podczas kończenia „%s”: %s"
 
-#: src/strip.c:2683 src/strip.c:2759
+#: src/strip.c:2680 src/strip.c:2756
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "nie można ustawić czasu dostępu i modyfikacji „%s”"
@@ -7527,7 +7555,7 @@
 "source IDENTYFIKATOR-KOPII /NAZWA-PLIKU\n"
 "source ŚCIEŻKA /NAZWA-PLIKU\n"
 
-#: tests/backtrace.c:483
+#: tests/backtrace.c:491
 msgid "Run executable"
 msgstr "Uruchamia plik wykonywalny"
 
@@ -7540,6 +7568,11 @@
 msgstr "Wyświetla wystąpienia wstawionych funkcji"
 
 #, c-format
+#~ msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
+#~ msgstr ""
+#~ "sekcja [%2d] „%s”: rozmiar wpisu sekcji nie zgadza się z ElfXX_Rela\n"
+
+#, c-format
 #~ msgid "cannot get .debug_addr section data: %s"
 #~ msgstr "nie można uzyskać danych sekcji .debug_addr: %s"
 
diff --git a/po/uk.po b/po/uk.po
index 0d0609a..86f43dd 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: elfutils\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2023-03-03 16:09+0100\n"
+"POT-Creation-Date: 2023-11-03 17:36+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"
@@ -53,7 +53,7 @@
 "початкових кодах. Умовами ліцензування програми НЕ передбачено жодних "
 "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n"
 
-#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:11793
+#: lib/xmalloc.c:47 lib/xmalloc.c:60 lib/xmalloc.c:72 src/readelf.c:12202
 #: src/unstrip.c:311
 #, c-format
 msgid "memory exhausted"
@@ -541,7 +541,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:79
 #: libebl/eblobjnotetypename.c:113 libebl/eblobjnotetypename.c:134
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
+#: libebl/eblsectiontypename.c:116 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<невідомо>"
 
@@ -635,7 +635,7 @@
 msgid "invalid size of destination operand"
 msgstr "некоректна розмірність вихідного параметра"
 
-#: libelf/elf_error.c:86 src/readelf.c:6415
+#: libelf/elf_error.c:86 src/readelf.c:6758
 #, c-format
 msgid "invalid encoding"
 msgstr "некоректне кодування"
@@ -720,8 +720,8 @@
 msgid "invalid section header"
 msgstr "некоректний заголовок розділу"
 
-#: libelf/elf_error.c:190 src/readelf.c:10294 src/readelf.c:10899
-#: src/readelf.c:11000 src/readelf.c:11188
+#: libelf/elf_error.c:190 src/readelf.c:10637 src/readelf.c:11242
+#: src/readelf.c:11343 src/readelf.c:11531
 #, c-format
 msgid "invalid data"
 msgstr "некоректні дані"
@@ -1384,8 +1384,8 @@
 msgstr ""
 
 #. Strings for arguments in help texts.
-#: src/elfclassify.c:979 src/elfcompress.c:1433 src/elflint.c:76
-#: src/readelf.c:160
+#: src/elfclassify.c:979 src/elfcompress.c:1436 src/elflint.c:77
+#: src/readelf.c:161
 msgid "FILE..."
 msgstr "ФАЙЛ..."
 
@@ -1674,21 +1674,21 @@
 msgstr "невідомий тип стиснення «%s»"
 
 #. We need at least one input file.
-#: src/elfcompress.c:162 src/elfcompress.c:1444
+#: src/elfcompress.c:162 src/elfcompress.c:1447
 #, c-format
 msgid "No input file given"
 msgstr "Не надано файла вхідних даних"
 
-#: src/elfcompress.c:168 src/elfcompress.c:1448
+#: src/elfcompress.c:168 src/elfcompress.c:1451
 #, c-format
 msgid "Only one input file allowed together with '-o'"
 msgstr "З параметром «-o» можна використовувати лише один файл вхідних даних"
 
-#: src/elfcompress.c:1405
+#: src/elfcompress.c:1408
 msgid "Place (de)compressed output into FILE"
 msgstr "Помістити результати розпакування або стискання до ФАЙЛа"
 
-#: src/elfcompress.c:1408
+#: src/elfcompress.c:1411
 #, fuzzy
 #| msgid ""
 #| "What type of compression to apply. TYPE can be 'none' (decompress), "
@@ -1705,7 +1705,7 @@
 "назва — «zlib-gabi») або «zlib-gnu» (стискання у стилі GNU .zdebug, інша "
 "назва — «gnu»)"
 
-#: src/elfcompress.c:1412
+#: src/elfcompress.c:1415
 msgid ""
 "SECTION name to (de)compress, SECTION is an extended wildcard pattern "
 "(defaults to '.?(z)debug*')"
@@ -1713,12 +1713,12 @@
 "назва РОЗДІЛу для розпакування або стискання, РОЗДІЛ є розширеним взірцем із "
 "замінниками (типове значення -- «.?(z)debug*»)"
 
-#: src/elfcompress.c:1415
+#: src/elfcompress.c:1418
 msgid "Print a message for each section being (de)compressed"
 msgstr ""
 "Вивести повідомлення для кожного розділу, який розпаковується чи стискається"
 
-#: src/elfcompress.c:1418
+#: src/elfcompress.c:1421
 msgid ""
 "Force compression of section even if it would become larger or update/"
 "rewrite the file even if no section would be (de)compressed"
@@ -1726,32 +1726,32 @@
 "Примусове стискання розділу, навіть якщо він стане більшим, або оновлення чи "
 "перезапис файла, навіть якщо жодного розділу не буде розпаковано або стиснено"
 
-#: src/elfcompress.c:1421 src/strip.c:92
+#: src/elfcompress.c:1424 src/strip.c:92
 msgid "Relax a few rules to handle slightly broken ELF files"
 msgstr ""
 "Знехтувати декількома правилами для обробки трохи пошкоджених файлів ELF"
 
-#: src/elfcompress.c:1424
+#: src/elfcompress.c:1427
 msgid "Be silent when a section cannot be compressed"
 msgstr "Не сповіщати, якщо розділ неможливо стиснути"
 
-#: src/elfcompress.c:1434
+#: src/elfcompress.c:1437
 msgid "Compress or decompress sections in an ELF file."
 msgstr "Стиснути або розпакувати розділи у файлі ELF."
 
-#: src/elflint.c:62
+#: src/elflint.c:63
 msgid "Be extremely strict, flag level 2 features."
 msgstr "Висока строгість, увімкнути можливості рівня 2."
 
-#: src/elflint.c:63
+#: src/elflint.c:64
 msgid "Do not print anything if successful"
 msgstr "Не виводити ніяких даних у разі успіху"
 
-#: src/elflint.c:64
+#: src/elflint.c:65
 msgid "Binary is a separate debuginfo file"
 msgstr "Бінарний файл є окремим файлом debuginfo"
 
-#: src/elflint.c:66
+#: src/elflint.c:67
 msgid ""
 "Binary has been created with GNU ld and is therefore known to be broken in "
 "certain ways"
@@ -1760,173 +1760,173 @@
 "певної міри неправильним"
 
 #. Short description of program.
-#: src/elflint.c:72
+#: src/elflint.c:73
 msgid "Pedantic checking of ELF files compliance with gABI/psABI spec."
 msgstr ""
 "Педантична перевірка файлів ELF на сумісність зі специфікаціями gABI/psABI."
 
-#: src/elflint.c:153 src/readelf.c:391
+#: src/elflint.c:154 src/readelf.c:413
 #, c-format
 msgid "cannot open input file '%s'"
 msgstr "не вдалося відкрити вхідний файл «%s»"
 
-#: src/elflint.c:160
+#: src/elflint.c:161
 #, c-format
 msgid "cannot generate Elf descriptor for '%s': %s\n"
 msgstr "не вдалося створити дескриптор Elf для «%s»: %s\n"
 
-#: src/elflint.c:179
+#: src/elflint.c:180
 #, c-format
 msgid "error while closing Elf descriptor: %s\n"
 msgstr "помилка під час спроби закриття дескриптора Elf: %s\n"
 
-#: src/elflint.c:183
+#: src/elflint.c:184
 msgid "No errors"
 msgstr "Без помилок"
 
-#: src/elflint.c:218 src/readelf.c:603
+#: src/elflint.c:219 src/readelf.c:625
 msgid "Missing file name.\n"
 msgstr "Не вказано назви файла.\n"
 
-#: src/elflint.c:283
+#: src/elflint.c:284
 #, c-format
 msgid " error while freeing sub-ELF descriptor: %s\n"
 msgstr " помилка під час спроби вивільнення дескриптора суб-ELF: %s\n"
 
 #. We cannot do anything.
-#: src/elflint.c:291
+#: src/elflint.c:292
 #, c-format
 msgid "Not an ELF file - it has the wrong magic bytes at the start\n"
 msgstr "Не є файлом ELF. Виявлено помилкові магічні байти на початку файла\n"
 
-#: src/elflint.c:357
+#: src/elflint.c:358
 #, c-format
 msgid "e_ident[%d] == %d is no known class\n"
 msgstr "e_ident[%d] == %d не є відомим класом\n"
 
-#: src/elflint.c:362
+#: src/elflint.c:363
 #, c-format
 msgid "e_ident[%d] == %d is no known data encoding\n"
 msgstr "e_ident[%d] == %d не є відомим кодуванням даних\n"
 
-#: src/elflint.c:366
+#: src/elflint.c:367
 #, c-format
 msgid "unknown ELF header version number e_ident[%d] == %d\n"
 msgstr "невідомий номер версії заголовка ELF e_ident[%d] == %d\n"
 
-#: src/elflint.c:374
+#: src/elflint.c:375
 #, c-format
 msgid "unsupported OS ABI e_ident[%d] == '%s'\n"
 msgstr "непідтримуване ABI ОС e_ident[%d] == «%s»\n"
 
-#: src/elflint.c:380
+#: src/elflint.c:381
 #, c-format
 msgid "unsupported ABI version e_ident[%d] == %d\n"
 msgstr "непідтримувана версія ABI e_ident[%d] == %d\n"
 
-#: src/elflint.c:385
+#: src/elflint.c:386
 #, c-format
 msgid "e_ident[%zu] is not zero\n"
 msgstr "e_ident[%zu] не дорівнює нулеві\n"
 
-#: src/elflint.c:390
+#: src/elflint.c:391
 #, c-format
 msgid "unknown object file type %d\n"
 msgstr "невідомий тип об’єктних файлів %d\n"
 
-#: src/elflint.c:397
+#: src/elflint.c:398
 #, c-format
 msgid "unknown machine type %d\n"
 msgstr "невідомий тип архітектури %d\n"
 
-#: src/elflint.c:401
+#: src/elflint.c:402
 #, c-format
 msgid "unknown object file version\n"
 msgstr "невідома версія об’єктних файлів\n"
 
-#: src/elflint.c:407
+#: src/elflint.c:408
 #, c-format
 msgid "invalid program header offset\n"
 msgstr "некоректне зміщення заголовка програми\n"
 
-#: src/elflint.c:409
+#: src/elflint.c:410
 #, c-format
 msgid "executables and DSOs cannot have zero program header offset\n"
 msgstr ""
 "виконувані файли і DSO не можуть містити заголовка програми з нульовим "
 "зміщенням\n"
 
-#: src/elflint.c:413
+#: src/elflint.c:414
 #, c-format
 msgid "invalid number of program header entries\n"
 msgstr "некоректна кількість записів заголовків програми\n"
 
-#: src/elflint.c:421
+#: src/elflint.c:422
 #, c-format
 msgid "invalid section header table offset\n"
 msgstr "некоректне зміщення таблиці заголовків розділів\n"
 
-#: src/elflint.c:424
+#: src/elflint.c:425
 #, c-format
 msgid "section header table must be present\n"
 msgstr "має бути вказано таблицю заголовків розділів\n"
 
-#: src/elflint.c:438
+#: src/elflint.c:439
 #, c-format
 msgid "invalid number of section header table entries\n"
 msgstr "некоректна кількість записів таблиці заголовків розділів\n"
 
-#: src/elflint.c:455
+#: src/elflint.c:456
 #, c-format
 msgid "invalid section header index\n"
 msgstr "некоректний індекс заголовка розділу\n"
 
-#: src/elflint.c:473
+#: src/elflint.c:474
 #, c-format
 msgid "Can only check %u headers, shnum was %u\n"
 msgstr "Можна перевірити лише %u заголовків, значенням же shnum було %u\n"
 
-#: src/elflint.c:487
+#: src/elflint.c:488
 #, c-format
 msgid "invalid number of program header table entries\n"
 msgstr "некоректна кількість записів таблиці заголовків програми\n"
 
-#: src/elflint.c:504
+#: src/elflint.c:505
 #, c-format
 msgid "Can only check %u headers, phnum was %u\n"
 msgstr "Можна перевірити лише %u заголовків, значенням же phnum було %u\n"
 
-#: src/elflint.c:509
+#: src/elflint.c:510
 #, c-format
 msgid "invalid machine flags: %s\n"
 msgstr "некоректні прапорці архітектури: %s\n"
 
-#: src/elflint.c:516 src/elflint.c:533
+#: src/elflint.c:517 src/elflint.c:534
 #, c-format
 msgid "invalid ELF header size: %hd\n"
 msgstr "некоректний розмір заголовка ELF: %hd\n"
 
-#: src/elflint.c:519 src/elflint.c:536
+#: src/elflint.c:520 src/elflint.c:537
 #, c-format
 msgid "invalid program header size: %hd\n"
 msgstr "некоректний розмір заголовка програми: %hd\n"
 
-#: src/elflint.c:522 src/elflint.c:539
+#: src/elflint.c:523 src/elflint.c:540
 #, c-format
 msgid "invalid program header position or size\n"
 msgstr "некоректне розташування або розмір заголовка програми\n"
 
-#: src/elflint.c:525 src/elflint.c:542
+#: src/elflint.c:526 src/elflint.c:543
 #, c-format
 msgid "invalid section header size: %hd\n"
 msgstr "некоректний розмір заголовка розділу: %hd\n"
 
-#: src/elflint.c:528 src/elflint.c:545
+#: src/elflint.c:529 src/elflint.c:546
 #, c-format
 msgid "invalid section header position or size\n"
 msgstr "некоректне розташування або розмір заголовка розділу\n"
 
-#: src/elflint.c:590
+#: src/elflint.c:591
 #, c-format
 msgid ""
 "section [%2d] '%s': section with SHF_GROUP flag set not part of a section "
@@ -1935,7 +1935,7 @@
 "розділ [%2d] «%s»: розділ з встановленим прапорцем SHF_GROUP не є частиною "
 "групи розділів\n"
 
-#: src/elflint.c:594
+#: src/elflint.c:595
 #, c-format
 msgid ""
 "section [%2d] '%s': section group [%2zu] '%s' does not precede group member\n"
@@ -1943,14 +1943,14 @@
 "розділ [%2d] «%s»: групу розділів [%2zu] «%s» мало бути визначено до розділу-"
 "елемента цієї групи\n"
 
-#: src/elflint.c:610 src/elflint.c:1498 src/elflint.c:1549 src/elflint.c:1655
-#: src/elflint.c:1991 src/elflint.c:2317 src/elflint.c:2943 src/elflint.c:3106
-#: src/elflint.c:3254 src/elflint.c:3456 src/elflint.c:4468
+#: src/elflint.c:611 src/elflint.c:1509 src/elflint.c:1560 src/elflint.c:1610
+#: src/elflint.c:1692 src/elflint.c:2029 src/elflint.c:2355 src/elflint.c:2981
+#: src/elflint.c:3144 src/elflint.c:3292 src/elflint.c:3494 src/elflint.c:4511
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу\n"
 
-#: src/elflint.c:623 src/elflint.c:1662
+#: src/elflint.c:624 src/elflint.c:1699
 #, c-format
 msgid ""
 "section [%2d] '%s': referenced as string table for section [%2d] '%s' but "
@@ -1959,7 +1959,7 @@
 "розділ [%2d] «%s»: надано посилання на таблицю рядків розділу [%2d] «%s», "
 "але типом даних не є SHT_STRTAB\n"
 
-#: src/elflint.c:646
+#: src/elflint.c:647
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol table cannot have more than one extended index "
@@ -1968,12 +1968,12 @@
 "розділ [%2d] «%s»: у таблиці символів не може бути більше одного розширеного "
 "розділу покажчика\n"
 
-#: src/elflint.c:658
+#: src/elflint.c:659
 #, c-format
 msgid "section [%2u] '%s': entry size is does not match ElfXX_Sym\n"
 msgstr "розділ [%2u] «%s»: розмірність запису не відповідає ElfXX_Sym\n"
 
-#: src/elflint.c:662
+#: src/elflint.c:663
 #, c-format
 msgid ""
 "section [%2u] '%s': number of local entries in 'st_info' larger than table "
@@ -1982,33 +1982,33 @@
 "розділ [%2u] «%s»: кількість локальних записів у «st_info» перевищує розмір "
 "таблиці\n"
 
-#: src/elflint.c:671
+#: src/elflint.c:672
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %d: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати символ %d: %s\n"
 
-#: src/elflint.c:676 src/elflint.c:679 src/elflint.c:682 src/elflint.c:685
-#: src/elflint.c:688 src/elflint.c:691
+#: src/elflint.c:677 src/elflint.c:680 src/elflint.c:683 src/elflint.c:686
+#: src/elflint.c:689 src/elflint.c:692
 #, c-format
 msgid "section [%2d] '%s': '%s' in zeroth entry not zero\n"
 msgstr "розділ [%2d] «%s»: «%s» у нульовому записі не є нулем\n"
 
-#: src/elflint.c:694
+#: src/elflint.c:695
 #, c-format
 msgid "section [%2d] '%s': XINDEX for zeroth entry not zero\n"
 msgstr "розділ [%2d] «%s»: XINDEX для нульового запису не є нулем\n"
 
-#: src/elflint.c:704
+#: src/elflint.c:705
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol %zu: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати символ %zu: %s\n"
 
-#: src/elflint.c:713
+#: src/elflint.c:714
 #, c-format
 msgid "section [%2d] '%s': symbol %zu: invalid name value\n"
 msgstr "розділ [%2d] «%s»: символ %zu: некоректне значення назви\n"
 
-#: src/elflint.c:728
+#: src/elflint.c:729
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): too large section index but no extended "
@@ -2017,7 +2017,7 @@
 "розділ [%2d] «%s»: символ %zu: занадто великий покажчик розділу за умови, що "
 "не визначено розділу розширеного покажчика розділів\n"
 
-#: src/elflint.c:734
+#: src/elflint.c:735
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): XINDEX used for index which would fit "
@@ -2027,29 +2027,29 @@
 "відповідає st_shndx (%<PRIu32>)\n"
 
 #. || sym->st_shndx > SHN_HIRESERVE  always false
-#: src/elflint.c:746
+#: src/elflint.c:747
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): invalid section index\n"
 msgstr "розділ [%2d] «%s»: символ %zu: некоректний індекс розділу\n"
 
-#: src/elflint.c:754
+#: src/elflint.c:755
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown type\n"
 msgstr "розділ [%2d] «%s»: символ %zu: невідомий тип\n"
 
-#: src/elflint.c:760
+#: src/elflint.c:761
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown symbol binding\n"
 msgstr "розділ [%2d] «%s»: символ %zu: невідома прив’язка символу\n"
 
-#: src/elflint.c:765
+#: src/elflint.c:766
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unique symbol not of object type\n"
 msgstr ""
 "розділ [%2d] «%s»: символ %zu: унікальний символ, що не належить до типу "
 "об’єктів\n"
 
-#: src/elflint.c:773
+#: src/elflint.c:774
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): COMMON only allowed in relocatable "
@@ -2058,7 +2058,7 @@
 "розділ [%2d] «%s»: символ %zu: COMMON можна використовувати лише у файлах, "
 "придатних до пересування\n"
 
-#: src/elflint.c:777
+#: src/elflint.c:778
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local COMMON symbols are nonsense\n"
@@ -2066,7 +2066,7 @@
 "розділ [%2d] «%s»: символ %zu: використання локальних символів COMMON "
 "позбавлене сенсу\n"
 
-#: src/elflint.c:781
+#: src/elflint.c:782
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): function in COMMON section is nonsense\n"
@@ -2074,13 +2074,13 @@
 "розділ [%2d] «%s»: символ %zu: використання функції у розділі COMMON "
 "позбавлене сенсу\n"
 
-#: src/elflint.c:832
+#: src/elflint.c:833
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): st_value out of bounds\n"
 msgstr ""
 "розділ [%2d] «%s»: символ %zu: значення st_value поза можливим діапазоном\n"
 
-#: src/elflint.c:838 src/elflint.c:863 src/elflint.c:912
+#: src/elflint.c:839 src/elflint.c:864 src/elflint.c:913
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s) does not fit completely in referenced "
@@ -2089,7 +2089,7 @@
 "розділ [%2d] «%s»: символ %zu не повністю відповідає розділу, на який "
 "посилається, [%2d] «%s»\n"
 
-#: src/elflint.c:847
+#: src/elflint.c:848
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): referenced section [%2d] '%s' does not "
@@ -2098,7 +2098,7 @@
 "розділ [%2d] «%s»: символ %zu: для розділу посилання [%2d] «%s» не "
 "встановлено прапорець SHF_TLS\n"
 
-#: src/elflint.c:857 src/elflint.c:905
+#: src/elflint.c:858 src/elflint.c:906
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value out of bounds of referenced "
@@ -2107,7 +2107,7 @@
 "розділ [%2d] «%s»: символ %zu: значення st_value поза межами розділу "
 "посилання, [%2d] «%s»\n"
 
-#: src/elflint.c:884
+#: src/elflint.c:885
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but no TLS program header "
@@ -2115,7 +2115,7 @@
 msgstr ""
 "розділ [%2d] «%s»: символ %zu: символ TLS без запису заголовка програми TLS\n"
 
-#: src/elflint.c:890
+#: src/elflint.c:891
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): TLS symbol but couldn't get TLS program "
@@ -2124,7 +2124,7 @@
 "розділ [%2d] «%s»: символ %zu: маємо символ TLS, але не вдалося отримати "
 "запис заголовка програми TLS\n"
 
-#: src/elflint.c:898
+#: src/elflint.c:899
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): st_value short of referenced section "
@@ -2133,7 +2133,7 @@
 "розділ [%2d] «%s»: символ %zu: значення st_value перед розділом посилання, "
 "[%2d] «%s»\n"
 
-#: src/elflint.c:925
+#: src/elflint.c:926
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): local symbol outside range described in "
@@ -2142,7 +2142,7 @@
 "розділ [%2d] «%s»: символ %zu: у sh_info описано локальний символ поза "
 "діапазоном\n"
 
-#: src/elflint.c:932
+#: src/elflint.c:933
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): non-local symbol outside range "
@@ -2151,12 +2151,12 @@
 "розділ [%2d] «%s»: символ %zu: у sh_info описано нелокальний символ поза "
 "діапазоном\n"
 
-#: src/elflint.c:939
+#: src/elflint.c:940
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): non-local section symbol\n"
 msgstr "розділ [%2d] «%s»: символ %zu: нелокальний символ розділу\n"
 
-#: src/elflint.c:989
+#: src/elflint.c:990
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to bad section "
@@ -2165,7 +2165,7 @@
 "розділ [%2d] «%s»: символ _GLOBAL_OFFSET_TABLE_  посилається на помилковий "
 "розділ, [%2d]\n"
 
-#: src/elflint.c:996
+#: src/elflint.c:997
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol refers to section [%2d] "
@@ -2177,7 +2177,7 @@
 #. This test is more strict than the psABIs which
 #. usually allow the symbol to be in the middle of
 #. the .got section, allowing negative offsets.
-#: src/elflint.c:1012
+#: src/elflint.c:1013
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol value %#<PRIx64> does not "
@@ -2186,7 +2186,7 @@
 "розділ [%2d] «%s»: значення символу _GLOBAL_OFFSET_TABLE_ %#<PRIx64> не "
 "відповідає адресі розділу %s %#<PRIx64>\n"
 
-#: src/elflint.c:1019
+#: src/elflint.c:1020
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol size %<PRIu64> does not "
@@ -2195,7 +2195,7 @@
 "розділ [%2d] «%s»: розмір символу _GLOBAL_OFFSET_TABLE_ %<PRIu64> не "
 "відповідає розміру розділу %s %<PRIu64>\n"
 
-#: src/elflint.c:1027
+#: src/elflint.c:1028
 #, c-format
 msgid ""
 "section [%2d] '%s': _GLOBAL_OFFSET_TABLE_ symbol present, but no .got "
@@ -2204,7 +2204,7 @@
 "розділ [%2d] «%s»: виявлено символ _GLOBAL_OFFSET_TABLE_, але не виявлено "
 "розділу .got\n"
 
-#: src/elflint.c:1043
+#: src/elflint.c:1044
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC_ symbol value %#<PRIx64> does not match dynamic "
@@ -2213,7 +2213,7 @@
 "розділ [%2d] «%s»: значення символу _DYNAMIC_ %#<PRIx64> не відповідає "
 "адресі динамічного сегмента %#<PRIx64>\n"
 
-#: src/elflint.c:1050
+#: src/elflint.c:1051
 #, c-format
 msgid ""
 "section [%2d] '%s': _DYNAMIC symbol size %<PRIu64> does not match dynamic "
@@ -2222,7 +2222,7 @@
 "розділ [%2d] «%s»: розмір символу _DYNAMIC %<PRIu64> не відповідає розміру "
 "динамічного сегмента %<PRIu64>\n"
 
-#: src/elflint.c:1063
+#: src/elflint.c:1064
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': symbol %zu (%s): symbol in dynamic symbol table with non-"
@@ -2231,29 +2231,29 @@
 "розділ [%2d] «%s»: символ %zu: символ у динамічній таблиці символів з "
 "нетиповою видимістю\n"
 
-#: src/elflint.c:1067
+#: src/elflint.c:1068
 #, fuzzy, c-format
 msgid "section [%2d] '%s': symbol %zu (%s): unknown bit set in st_other\n"
 msgstr "розділ [%2d] «%s»: символ %zu: невідомий набір бітів у st_other\n"
 
-#: src/elflint.c:1105
+#: src/elflint.c:1106
 #, c-format
 msgid "section [%2d] '%s': cannot get section data.\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу.\n"
 
-#: src/elflint.c:1121
+#: src/elflint.c:1122
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT used for this RELA section\n"
 msgstr "розділ [%2d] «%s»: для цього розділу RELA використано DT_RELCOUNT\n"
 
-#: src/elflint.c:1132 src/elflint.c:1185
+#: src/elflint.c:1133 src/elflint.c:1186
 #, c-format
 msgid "section [%2d] '%s': DT_RELCOUNT value %d too high for this section\n"
 msgstr ""
 "розділ [%2d] «%s»: значення DT_RELCOUNT %d є занадто високим для цього "
 "розділу\n"
 
-#: src/elflint.c:1157 src/elflint.c:1210
+#: src/elflint.c:1158 src/elflint.c:1211
 #, c-format
 msgid ""
 "section [%2d] '%s': relative relocations after index %d as specified by "
@@ -2262,7 +2262,7 @@
 "розділ [%2d] «%s»: відносні пересування після позиції %d, вказаної за "
 "допомогою DT_RELCOUNT\n"
 
-#: src/elflint.c:1163 src/elflint.c:1216
+#: src/elflint.c:1164 src/elflint.c:1217
 #, c-format
 msgid ""
 "section [%2d] '%s': non-relative relocation at index %zu; DT_RELCOUNT "
@@ -2271,27 +2271,27 @@
 "розділ [%2d] «%s»: безвідносне пересування на позиції %zu; DT_RELCOUNT "
 "визначено %d відносних пересування\n"
 
-#: src/elflint.c:1175
+#: src/elflint.c:1176
 #, c-format
 msgid "section [%2d] '%s': DT_RELACOUNT used for this REL section\n"
 msgstr "розділ [%2d] «%s»: для цього розділу REL використано DT_RELACOUNT\n"
 
-#: src/elflint.c:1258
+#: src/elflint.c:1259
 #, c-format
 msgid "section [%2d] '%s': invalid destination section index\n"
 msgstr "розділ [%2d] «%s»: некоректний індекс розділу призначення\n"
 
-#: src/elflint.c:1270
+#: src/elflint.c:1271
 #, c-format
 msgid "section [%2d] '%s': invalid destination section type\n"
 msgstr "розділ [%2d] «%s»: некоректний тип розділу призначення\n"
 
-#: src/elflint.c:1278
+#: src/elflint.c:1279
 #, c-format
 msgid "section [%2d] '%s': sh_info should be zero\n"
 msgstr "розділ [%2d] «%s»: sh_info має бути нульовим\n"
 
-#: src/elflint.c:1286
+#: src/elflint.c:1287
 #, c-format
 msgid ""
 "section [%2d] '%s': no relocations for merge-able string sections possible\n"
@@ -2299,25 +2299,19 @@
 "розділ [%2d] «%s»: неможливі пересування для розділів рядків, які непридатні "
 "до об'єднання\n"
 
-#: src/elflint.c:1294
-#, c-format
-msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
-msgstr ""
-"розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Rela\n"
-
-#: src/elflint.c:1354
+#: src/elflint.c:1365
 #, c-format
 msgid "text relocation flag set but there is no read-only segment\n"
 msgstr ""
 "встановлено прапорець пересування тексту, але сегмент придатний лише до "
 "читання\n"
 
-#: src/elflint.c:1381
+#: src/elflint.c:1392
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid type\n"
 msgstr "розділ [%2d] «%s»: пересування %zu: некоректний тип\n"
 
-#: src/elflint.c:1389
+#: src/elflint.c:1400
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: relocation type invalid for the file "
@@ -2326,12 +2320,12 @@
 "розділ [%2d] «%s»: пересування %zu: некоректний тип пересування для типу "
 "файла\n"
 
-#: src/elflint.c:1397
+#: src/elflint.c:1408
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: invalid symbol index\n"
 msgstr "розділ [%2d] «%s»: пересування %zu: некоректний індекс символу\n"
 
-#: src/elflint.c:1415
+#: src/elflint.c:1426
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: only symbol '_GLOBAL_OFFSET_TABLE_' can "
@@ -2340,12 +2334,12 @@
 "розділ [%2d] «%s»: пересування %zu: з %s можна використовувати лише символ "
 "«_GLOBAL_OFFSET_TABLE_»\n"
 
-#: src/elflint.c:1432
+#: src/elflint.c:1443
 #, c-format
 msgid "section [%2d] '%s': relocation %zu: offset out of bounds\n"
 msgstr "розділ [%2d] «%s»: пересування %zu: зміщення за межі діапазону\n"
 
-#: src/elflint.c:1447
+#: src/elflint.c:1458
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: copy relocation against symbol of type "
@@ -2354,7 +2348,7 @@
 "розділ [%2d] «%s»: пересування %zu: пересування копіювання для символу типу "
 "%s\n"
 
-#: src/elflint.c:1468
+#: src/elflint.c:1479
 #, c-format
 msgid ""
 "section [%2d] '%s': relocation %zu: read-only section modified but text "
@@ -2363,22 +2357,22 @@
 "розділ [%2d] «%s»: пересування %zu: змінено придатний лише для читання "
 "розділ, але не встановлено прапорець пересування тексту\n"
 
-#: src/elflint.c:1483
+#: src/elflint.c:1494
 #, c-format
 msgid "section [%2d] '%s': relocations are against loaded and unloaded data\n"
 msgstr "розділ [%2d] «%s»: пересування завантажених і незавантажених даних\n"
 
-#: src/elflint.c:1523 src/elflint.c:1574
+#: src/elflint.c:1534 src/elflint.c:1585
 #, c-format
 msgid "section [%2d] '%s': cannot get relocation %zu: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати зміщення %zu: %s\n"
 
-#: src/elflint.c:1650
+#: src/elflint.c:1687
 #, c-format
 msgid "more than one dynamic section present\n"
 msgstr "вказано більше одного динамічного розділу\n"
 
-#: src/elflint.c:1668
+#: src/elflint.c:1705
 #, c-format
 msgid ""
 "section [%2d]: referenced as string table for section [%2d] '%s' but section "
@@ -2387,46 +2381,46 @@
 "розділ [%2d]: надано посилання на таблицю рядків розділу [%2d] «%s», але "
 "значення посилання на розділ є некоректним\n"
 
-#: src/elflint.c:1676
+#: src/elflint.c:1713
 #, c-format
 msgid "section [%2d] '%s': section entry size does not match ElfXX_Dyn\n"
 msgstr ""
 "розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Dyn\n"
 
-#: src/elflint.c:1681 src/elflint.c:1970
+#: src/elflint.c:1718 src/elflint.c:2008
 #, c-format
 msgid "section [%2d] '%s': sh_info not zero\n"
 msgstr "розділ [%2d] «%s»: sh_info не є нульовим\n"
 
-#: src/elflint.c:1691
+#: src/elflint.c:1728
 #, c-format
 msgid "section [%2d] '%s': cannot get dynamic section entry %zu: %s\n"
 msgstr ""
 "розділ [%2d] «%s»: не вдалося отримати запис динамічного розділу %zu: %s\n"
 
-#: src/elflint.c:1699
+#: src/elflint.c:1736
 #, c-format
 msgid "section [%2d] '%s': non-DT_NULL entries follow DT_NULL entry\n"
 msgstr ""
 "розділ [%2d] «%s»: за записом DT_NULL вказано записи, що не належать до "
 "DT_NULL\n"
 
-#: src/elflint.c:1706
+#: src/elflint.c:1743
 #, c-format
 msgid "section [%2d] '%s': entry %zu: unknown tag\n"
 msgstr "розділ [%2d] «%s»: запис %zu: невідома мітка\n"
 
-#: src/elflint.c:1717
+#: src/elflint.c:1754
 #, c-format
 msgid "section [%2d] '%s': entry %zu: more than one entry with tag %s\n"
 msgstr "розділ [%2d] «%s»: запис %zu: декілька записів з міткою %s\n"
 
-#: src/elflint.c:1727
+#: src/elflint.c:1764
 #, c-format
 msgid "section [%2d] '%s': entry %zu: level 2 tag %s used\n"
 msgstr "розділ [%2d] «%s»: запис %zu: використано мітку рівня 2 %s\n"
 
-#: src/elflint.c:1745
+#: src/elflint.c:1782
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: DT_PLTREL value must be DT_REL or DT_RELA\n"
@@ -2434,7 +2428,7 @@
 "розділ [%2d] «%s»: запис %zu: значенням DT_PLTREL має бути DT_REL або "
 "DT_RELA\n"
 
-#: src/elflint.c:1758
+#: src/elflint.c:1795
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: pointer does not match address of section "
@@ -2443,7 +2437,7 @@
 "розділ [%2d] «%s»: розділ %zu: вказівник не відповідає адресі розділу [%2d] "
 "«%s», на яку посилається sh_link\n"
 
-#: src/elflint.c:1801
+#: src/elflint.c:1839
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must point into loaded segment\n"
@@ -2451,7 +2445,7 @@
 "розділ [%2d] «%s»: запис %zu: значення %s має вказувати на завантажений "
 "сегмент\n"
 
-#: src/elflint.c:1816
+#: src/elflint.c:1854
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %zu: %s value must be valid offset in section "
@@ -2460,48 +2454,48 @@
 "розділ [%2d] «%s»: запис %zu: значенням %s має бути коректне зміщення у "
 "розділі [%2d] «%s»\n"
 
-#: src/elflint.c:1836 src/elflint.c:1864
+#: src/elflint.c:1874 src/elflint.c:1902
 #, c-format
 msgid "section [%2d] '%s': contains %s entry but not %s\n"
 msgstr "розділ [%2d] «%s»: містить запис %s, але не %s\n"
 
-#: src/elflint.c:1848
+#: src/elflint.c:1886
 #, c-format
 msgid "section [%2d] '%s': mandatory tag %s not present\n"
 msgstr "розділ [%2d] «%s»: немає обов’язкової мітки %s\n"
 
-#: src/elflint.c:1857
+#: src/elflint.c:1895
 #, c-format
 msgid "section [%2d] '%s': no hash section present\n"
 msgstr "розділ [%2d] «%s»: не виявлено розділу хешів\n"
 
-#: src/elflint.c:1872 src/elflint.c:1879
+#: src/elflint.c:1910 src/elflint.c:1917
 #, c-format
 msgid "section [%2d] '%s': not all of %s, %s, and %s are present\n"
 msgstr "розділ [%2d] «%s»: вказано не всі зі значень %s, %s і %s\n"
 
-#: src/elflint.c:1889 src/elflint.c:1893
+#: src/elflint.c:1927 src/elflint.c:1931
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in DSO marked during prelinking\n"
 msgstr ""
 "розділ [%2d] «%s»: у DSO, позначеному на кроці попереднього компонування, "
 "немає мітки %s\n"
 
-#: src/elflint.c:1899
+#: src/elflint.c:1937
 #, c-format
 msgid "section [%2d] '%s': non-DSO file marked as dependency during prelink\n"
 msgstr ""
 "розділ [%2d] «%s»: під час попереднього компонування як залежність позначено "
 "файл, який не є файлом DSO\n"
 
-#: src/elflint.c:1910 src/elflint.c:1914 src/elflint.c:1918 src/elflint.c:1922
+#: src/elflint.c:1948 src/elflint.c:1952 src/elflint.c:1956 src/elflint.c:1960
 #, c-format
 msgid "section [%2d] '%s': %s tag missing in prelinked executable\n"
 msgstr ""
 "розділ [%2d] «%s»: у попередньо скомпонованому виконуваному файлі не "
 "міститься мітки %s\n"
 
-#: src/elflint.c:1934
+#: src/elflint.c:1972
 #, c-format
 msgid ""
 "section [%2d] '%s': only relocatable files can have extended section index\n"
@@ -2509,7 +2503,7 @@
 "розділ [%2d] «%s»: розширений розділ покажчика можуть мати лише файли, "
 "придатні до пересування\n"
 
-#: src/elflint.c:1944
+#: src/elflint.c:1982
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index section not for symbol table\n"
@@ -2517,29 +2511,29 @@
 "розділ [%2d] «%s»: розділ розширеного покажчика розділів не призначено для "
 "таблиць символів\n"
 
-#: src/elflint.c:1948
+#: src/elflint.c:1986
 #, c-format
 msgid "section [%2d] '%s': sh_link extended section index [%2d] is invalid\n"
 msgstr ""
 "розділ [%2d] «%s»: індекс розширеного розділу sh_link [%2d] є некоректним\n"
 
-#: src/elflint.c:1953
+#: src/elflint.c:1991
 #, c-format
 msgid "cannot get data for symbol section\n"
 msgstr "не вдалося отримати дані для розділу символів\n"
 
-#: src/elflint.c:1956
+#: src/elflint.c:1994
 #, c-format
 msgid "section [%2d] '%s': entry size does not match Elf32_Word\n"
 msgstr "розділ [%2d] «%s»: розмірність запису не відповідає Elf32_Word\n"
 
-#: src/elflint.c:1965
+#: src/elflint.c:2003
 #, c-format
 msgid "section [%2d] '%s': extended index table too small for symbol table\n"
 msgstr ""
 "розділ [%2d] «%s»: розширена таблиця покажчика замала для таблиці символів\n"
 
-#: src/elflint.c:1980
+#: src/elflint.c:2018
 #, c-format
 msgid ""
 "section [%2d] '%s': extended section index in section [%2zu] '%s' refers to "
@@ -2548,24 +2542,24 @@
 "розділ [%2d] «%s»: розширений покажчик розділів у розділі [%2zu] «%s» "
 "посилається на ту саму таблицю розділів\n"
 
-#: src/elflint.c:1998
+#: src/elflint.c:2036
 #, c-format
 msgid "symbol 0 should have zero extended section index\n"
 msgstr "символу 0 має відповідати нульовий індекс розширеного розділу\n"
 
-#: src/elflint.c:2010
+#: src/elflint.c:2048
 #, c-format
 msgid "cannot get data for symbol %zu\n"
 msgstr "не вдалося отримати дані для символу %zu\n"
 
-#: src/elflint.c:2015
+#: src/elflint.c:2053
 #, c-format
 msgid "extended section index is %<PRIu32> but symbol index is not XINDEX\n"
 msgstr ""
 "індекс розширеного розділу дорівнює %<PRIu32>, але індекс символу не є "
 "XINDEX\n"
 
-#: src/elflint.c:2032 src/elflint.c:2089
+#: src/elflint.c:2070 src/elflint.c:2127
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected %ld)\n"
@@ -2573,43 +2567,43 @@
 "розділ [%2d] «%s»: розділ таблиці хешів занадто малий (розмір %ld, мало бути "
 "— %ld)\n"
 
-#: src/elflint.c:2046 src/elflint.c:2103
+#: src/elflint.c:2084 src/elflint.c:2141
 #, c-format
 msgid "section [%2d] '%s': chain array too large\n"
 msgstr "розділ [%2d] «%s»: масив ланцюжка занадто великий\n"
 
-#: src/elflint.c:2060 src/elflint.c:2117
+#: src/elflint.c:2098 src/elflint.c:2155
 #, c-format
 msgid "section [%2d] '%s': hash bucket reference %zu out of bounds\n"
 msgstr ""
 "розділ [%2d] «%s»: посилання на хеш блоку %zu лежить поза межами діапазону\n"
 
-#: src/elflint.c:2070
+#: src/elflint.c:2108
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %zu out of bounds\n"
 msgstr ""
 "розділ [%2d] «%s»: посилання ланцюжка хешів %zu лежить поза межами "
 "діапазону\n"
 
-#: src/elflint.c:2127
+#: src/elflint.c:2165
 #, c-format
 msgid "section [%2d] '%s': hash chain reference %<PRIu64> out of bounds\n"
 msgstr ""
 "розділ [%2d] «%s»: посилання ланцюжка хешів %<PRIu64> лежить поза межами "
 "діапазону\n"
 
-#: src/elflint.c:2140
+#: src/elflint.c:2178
 #, c-format
 msgid "section [%2d] '%s': not enough data\n"
 msgstr "розділ [%2d] «%s»: недостатньо даних\n"
 
-#: src/elflint.c:2152
+#: src/elflint.c:2190
 #, c-format
 msgid "section [%2d] '%s': bitmask size zero or not power of 2: %u\n"
 msgstr ""
 "розділ [%2d] «%s»: розмір бітової маски є нульовим або не є степенем 2: %u\n"
 
-#: src/elflint.c:2168
+#: src/elflint.c:2206
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table section is too small (is %ld, expected at "
@@ -2618,12 +2612,12 @@
 "розділ [%2d] «%s»: розділ таблиці хешів є надто малим (маємо %ld, мало бути "
 "принаймні %ld)\n"
 
-#: src/elflint.c:2177
+#: src/elflint.c:2215
 #, c-format
 msgid "section [%2d] '%s': 2nd hash function shift too big: %u\n"
 msgstr "розділ [%2d] «%s»: зсув 2-ої функції хешування занадто великий: %u\n"
 
-#: src/elflint.c:2211
+#: src/elflint.c:2249
 #, c-format
 msgid ""
 "section [%2d] '%s': hash chain for bucket %zu lower than symbol index bias\n"
@@ -2631,7 +2625,7 @@
 "розділ [%2d] '%s': ланцюжок хешів для блоку %zu розташовано нижче за позицію "
 "відхилення індексу символу\n"
 
-#: src/elflint.c:2232
+#: src/elflint.c:2270
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %u referenced in chain for bucket %zu is "
@@ -2640,7 +2634,7 @@
 "розділ [%2d] «%s»: символ %u, на який посилається ланцюжок у блоці %zu не "
 "визначено\n"
 
-#: src/elflint.c:2245
+#: src/elflint.c:2283
 #, c-format
 msgid ""
 "section [%2d] '%s': hash value for symbol %u in chain for bucket %zu wrong\n"
@@ -2648,7 +2642,7 @@
 "розділ [%2d] «%s»: значення хешу для символу %u у ланцюжку для блоку %zu є "
 "помилковим\n"
 
-#: src/elflint.c:2254
+#: src/elflint.c:2292
 #, c-format
 msgid ""
 "section [%2d] '%s': mask index for symbol %u in chain for bucket %zu wrong\n"
@@ -2656,14 +2650,14 @@
 "розділ [%2d] «%s»: індекс маски для символу %u у ланцюжку для блоку %zu є "
 "помилковим\n"
 
-#: src/elflint.c:2284
+#: src/elflint.c:2322
 #, c-format
 msgid "section [%2d] '%s': hash chain for bucket %zu out of bounds\n"
 msgstr ""
 "розділ [%2d] «%s»: ланцюжок хешів для блоку %zu лежить поза межами "
 "діапазону\n"
 
-#: src/elflint.c:2289
+#: src/elflint.c:2327
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol reference in chain for bucket %zu out of bounds\n"
@@ -2671,43 +2665,43 @@
 "розділ [%2d] «%s»: посилання на символ у ланцюжку для блоку %zu лежить поза "
 "межами діапазону\n"
 
-#: src/elflint.c:2295
+#: src/elflint.c:2333
 #, c-format
 msgid "section [%2d] '%s': bitmask does not match names in the hash table\n"
 msgstr "розділ [%2d] «%s»: бітова маска не відповідає назвам у таблиці хешів\n"
 
-#: src/elflint.c:2308
+#: src/elflint.c:2346
 #, c-format
 msgid "section [%2d] '%s': relocatable files cannot have hash tables\n"
 msgstr ""
 "розділ [%2d] «%s»: придатні до пересування файли не можуть містити таблиць "
 "хешів\n"
 
-#: src/elflint.c:2326
+#: src/elflint.c:2364
 #, c-format
 msgid "section [%2d] '%s': hash table not for dynamic symbol table\n"
 msgstr ""
 "розділ [%2d] «%s»: таблицю хешів не призначено для зберігання таблиці "
 "динамічних символів\n"
 
-#: src/elflint.c:2330
+#: src/elflint.c:2368
 #, c-format
 msgid "section [%2d] '%s': invalid sh_link symbol table section index [%2d]\n"
 msgstr ""
 "розділ [%2d] «%s»: некоректний індекс розділу таблиці символів sh_link "
 "[%2d]\n"
 
-#: src/elflint.c:2340
+#: src/elflint.c:2378
 #, c-format
 msgid "section [%2d] '%s': hash table entry size incorrect\n"
 msgstr "розділ [%2d] «%s»: розмірність запису таблиці хешів є некоректною\n"
 
-#: src/elflint.c:2345
+#: src/elflint.c:2383
 #, c-format
 msgid "section [%2d] '%s': not marked to be allocated\n"
 msgstr "розділ [%2d] «%s»: не позначено для пересування\n"
 
-#: src/elflint.c:2350
+#: src/elflint.c:2388
 #, c-format
 msgid ""
 "section [%2d] '%s': hash table has not even room for initial administrative "
@@ -2716,27 +2710,27 @@
 "розділ [%2d] «%s»: у таблиці хешів виявлено незвичайне розташування "
 "початкових адміністративних записів\n"
 
-#: src/elflint.c:2399
+#: src/elflint.c:2437
 #, c-format
 msgid "sh_link in hash sections [%2zu] '%s' and [%2zu] '%s' not identical\n"
 msgstr "sh_link у розділах хешів [%2zu] «%s» і [%2zu] «%s» не збігаються\n"
 
-#: src/elflint.c:2423 src/elflint.c:2488 src/elflint.c:2523
+#: src/elflint.c:2461 src/elflint.c:2526 src/elflint.c:2561
 #, c-format
 msgid "hash section [%2zu] '%s' does not contain enough data\n"
 msgstr "розділ хешу [%2zu] «%s» містить недостатньо даних\n"
 
-#: src/elflint.c:2444
+#: src/elflint.c:2482
 #, c-format
 msgid "hash section [%2zu] '%s' has zero bit mask words\n"
 msgstr "розділ хешу [%2zu] «%s» містить нульові слова бітової маски\n"
 
-#: src/elflint.c:2455 src/elflint.c:2499 src/elflint.c:2536
+#: src/elflint.c:2493 src/elflint.c:2537 src/elflint.c:2574
 #, c-format
 msgid "hash section [%2zu] '%s' uses too much data\n"
 msgstr "розділ хешу [%2zu] «%s» використовує надто багато даних\n"
 
-#: src/elflint.c:2470
+#: src/elflint.c:2508
 #, c-format
 msgid ""
 "hash section [%2zu] '%s' invalid symbol index %<PRIu32> (max_nsyms: "
@@ -2745,17 +2739,17 @@
 "розділ хешу [%2zu] «%s» некоректний індекс символу %<PRIu32> (макс. к-ть "
 "символів: %<PRIu32>, кількість записів: %<PRIu32>\n"
 
-#: src/elflint.c:2557
+#: src/elflint.c:2595
 #, c-format
 msgid "hash section [%2zu] '%s' invalid sh_entsize\n"
 msgstr "розділ хешу [%2zu] «%s» некоректне значення sh_entsize\n"
 
-#: src/elflint.c:2567 src/elflint.c:2571
+#: src/elflint.c:2605 src/elflint.c:2609
 #, c-format
 msgid "section [%2zu] '%s': reference to symbol index 0\n"
 msgstr "розділ [%2zu] «%s»: посилання на індекс символів 0\n"
 
-#: src/elflint.c:2578
+#: src/elflint.c:2616
 #, c-format
 msgid ""
 "symbol %d referenced in new hash table in [%2zu] '%s' but not in old hash "
@@ -2764,7 +2758,7 @@
 "виявлено посилання на символ %d у новій таблиці хешів у [%2zu] «%s», але "
 "його немає у старій таблиці хешів у [%2zu] «%s»\n"
 
-#: src/elflint.c:2590
+#: src/elflint.c:2628
 #, c-format
 msgid ""
 "symbol %d referenced in old hash table in [%2zu] '%s' but not in new hash "
@@ -2773,12 +2767,12 @@
 "виявлено посилання на символ %d у старій таблиці хешів у [%2zu] «%s», але "
 "його немає у новій таблиці хешів у [%2zu] «%s»\n"
 
-#: src/elflint.c:2606
+#: src/elflint.c:2644
 #, c-format
 msgid "section [%2d] '%s': nonzero sh_%s for NULL section\n"
 msgstr "розділ [%2d] «%s»: ненульове значення sh_%s для розділу NULL\n"
 
-#: src/elflint.c:2626
+#: src/elflint.c:2664
 #, c-format
 msgid ""
 "section [%2d] '%s': section groups only allowed in relocatable object files\n"
@@ -2786,95 +2780,95 @@
 "розділ [%2d] «%s»: групи розділів передбачено лише для придатних до "
 "пересування об’єктних файлах\n"
 
-#: src/elflint.c:2637
+#: src/elflint.c:2675
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol table: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати таблицю символів: %s\n"
 
-#: src/elflint.c:2642
+#: src/elflint.c:2680
 #, c-format
 msgid "section [%2d] '%s': section reference in sh_link is no symbol table\n"
 msgstr ""
 "розділ [%2d] «%s»: посилання на розділ у sh_link не має таблиці символів\n"
 
-#: src/elflint.c:2648
+#: src/elflint.c:2686
 #, c-format
 msgid "section [%2d] '%s': invalid symbol index in sh_info\n"
 msgstr "розділ [%2d] «%s»: некоректний індекс символу у sh_info\n"
 
-#: src/elflint.c:2653
+#: src/elflint.c:2691
 #, c-format
 msgid "section [%2d] '%s': sh_flags not zero\n"
 msgstr "розділ [%2d] «%s»: sh_flags не є нульовим\n"
 
-#: src/elflint.c:2660
+#: src/elflint.c:2698
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol for signature\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати символ для підпису\n"
 
-#: src/elflint.c:2664
+#: src/elflint.c:2702
 #, c-format
 msgid "section [%2d] '%s': cannot get symbol name for signature\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати назву символу для підпису\n"
 
-#: src/elflint.c:2669
+#: src/elflint.c:2707
 #, c-format
 msgid "section [%2d] '%s': signature symbol cannot be empty string\n"
 msgstr "розділ [%2d] «%s»: символ підпису не може бути порожнім рядком\n"
 
-#: src/elflint.c:2675
+#: src/elflint.c:2713
 #, c-format
 msgid "section [%2d] '%s': sh_flags not set correctly\n"
 msgstr "розділ [%2d] «%s»: для sh_flags встановлено помилкове значення\n"
 
-#: src/elflint.c:2681
+#: src/elflint.c:2719
 #, c-format
 msgid "section [%2d] '%s': cannot get data: %s\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати дані: %s\n"
 
-#: src/elflint.c:2690
+#: src/elflint.c:2728
 #, c-format
 msgid "section [%2d] '%s': section size not multiple of sizeof(Elf32_Word)\n"
 msgstr "розділ [%2d] «%s»: розмір розділу не є кратним до sizeof(Elf32_Word)\n"
 
-#: src/elflint.c:2696
+#: src/elflint.c:2734
 #, c-format
 msgid "section [%2d] '%s': section group without flags word\n"
 msgstr "розділ [%2d] «%s»: група розділів без значення типу word прапорців\n"
 
-#: src/elflint.c:2704
+#: src/elflint.c:2742
 #, c-format
 msgid "section [%2d] '%s': section group without member\n"
 msgstr "розділ [%2d] «%s»: група розділів без елементів\n"
 
-#: src/elflint.c:2708
+#: src/elflint.c:2746
 #, c-format
 msgid "section [%2d] '%s': section group with only one member\n"
 msgstr "розділ [%2d] «%s»: група розділів, що містить лише один елемент\n"
 
-#: src/elflint.c:2719
+#: src/elflint.c:2757
 #, c-format
 msgid "section [%2d] '%s': unknown section group flags\n"
 msgstr "розділ [%2d] «%s»: невідомі прапорці групи розділів\n"
 
-#: src/elflint.c:2731
+#: src/elflint.c:2769
 #, c-format
 msgid "section [%2d] '%s': section index %zu out of range\n"
 msgstr "розділ [%2d] «%s»: індекс розділу %zu поза межами діапазону\n"
 
-#: src/elflint.c:2740
+#: src/elflint.c:2778
 #, c-format
 msgid "section [%2d] '%s': cannot get section header for element %zu: %s\n"
 msgstr ""
 "розділ [%2d] «%s»: не вдалося отримати заголовок розділу для елемента %zu: "
 "%s\n"
 
-#: src/elflint.c:2747
+#: src/elflint.c:2785
 #, c-format
 msgid "section [%2d] '%s': section group contains another group [%2d] '%s'\n"
 msgstr "розділ [%2d] «%s»: група розділів містить іншу групу [%2d] «%s»\n"
 
-#: src/elflint.c:2753
+#: src/elflint.c:2791
 #, c-format
 msgid ""
 "section [%2d] '%s': element %zu references section [%2d] '%s' without "
@@ -2883,12 +2877,12 @@
 "розділ [%2d] «%s»: елемент %zu посилається на розділ [%2d] «%s» без "
 "встановленого прапорця SHF_GROUP\n"
 
-#: src/elflint.c:2760
+#: src/elflint.c:2798
 #, c-format
 msgid "section [%2d] '%s' is contained in more than one section group\n"
 msgstr "розділ [%2d] «%s» міститься у більше ніж одній групі розділів\n"
 
-#: src/elflint.c:2957
+#: src/elflint.c:2995
 #, c-format
 msgid ""
 "section [%2d] '%s' refers in sh_link to section [%2d] '%s' which is no "
@@ -2897,7 +2891,7 @@
 "розділ [%2d] «%s» посилається у sh_link на розділ [%2d] «%s», який не має "
 "динамічної таблиці символів\n"
 
-#: src/elflint.c:2969
+#: src/elflint.c:3007
 #, c-format
 msgid ""
 "section [%2d] '%s' has different number of entries than symbol table [%2d] "
@@ -2906,28 +2900,28 @@
 "кількість записів у розділі [%2d] «%s» відрізняється від кількості у таблиці "
 "символів [%2d] «%s»\n"
 
-#: src/elflint.c:2985
+#: src/elflint.c:3023
 #, c-format
 msgid "section [%2d] '%s': symbol %d: cannot read version data\n"
 msgstr "розділ [%2d] «%s»: символ %d: не вдалося прочитати дані щодо версії\n"
 
-#: src/elflint.c:3001
+#: src/elflint.c:3039
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with global scope\n"
 msgstr ""
 "розділ [%2d] «%s»: символ %d: локальний символ у загальному контексті\n"
 
-#: src/elflint.c:3009
+#: src/elflint.c:3047
 #, c-format
 msgid "section [%2d] '%s': symbol %d: local symbol with version\n"
 msgstr "розділ [%2d] «%s»: символ %d: локальний символ з версією\n"
 
-#: src/elflint.c:3023
+#: src/elflint.c:3061
 #, c-format
 msgid "section [%2d] '%s': symbol %d: invalid version index %d\n"
 msgstr "розділ [%2d] «%s»: символ %d: некоректний індекс версії %d\n"
 
-#: src/elflint.c:3028
+#: src/elflint.c:3066
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for defined version\n"
@@ -2935,7 +2929,7 @@
 "розділ [%2d] «%s»: символ %d: індекси версії %d призначено до визначеної "
 "версії\n"
 
-#: src/elflint.c:3038
+#: src/elflint.c:3076
 #, c-format
 msgid ""
 "section [%2d] '%s': symbol %d: version index %d is for requested version\n"
@@ -2943,45 +2937,45 @@
 "розділ [%2d] «%s»: символ %d: індекс версії %d призначено для версії, на яку "
 "надійшов запит\n"
 
-#: src/elflint.c:3091
+#: src/elflint.c:3129
 #, c-format
 msgid "more than one version reference section present\n"
 msgstr "виявлено більше за один розділ посилань на версії\n"
 
-#: src/elflint.c:3099 src/elflint.c:3246
+#: src/elflint.c:3137 src/elflint.c:3284
 #, c-format
 msgid "section [%2d] '%s': sh_link does not link to string table\n"
 msgstr "розділ [%2d] «%s»: sh_link не посилається на таблицю рядків\n"
 
-#: src/elflint.c:3124 src/elflint.c:3300
+#: src/elflint.c:3162 src/elflint.c:3338
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong version %d\n"
 msgstr "розділ [%2d] «%s»: запис %d має помилкову версію %d\n"
 
-#: src/elflint.c:3131 src/elflint.c:3307
+#: src/elflint.c:3169 src/elflint.c:3345
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong offset of auxiliary data\n"
 msgstr ""
 "розділ [%2d] «%s»: запис %d містить помилкове зміщення у допоміжних даних\n"
 
-#: src/elflint.c:3141
+#: src/elflint.c:3179
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid file reference\n"
 msgstr "розділ [%2d] «%s»: запис %d містить некоректне посилання на файл\n"
 
-#: src/elflint.c:3149
+#: src/elflint.c:3187
 #, c-format
 msgid "section [%2d] '%s': entry %d references unknown dependency\n"
 msgstr "розділ [%2d] «%s»: запис %d посилається на невідому залежність\n"
 
-#: src/elflint.c:3161
+#: src/elflint.c:3199
 #, c-format
 msgid "section [%2d] '%s': auxiliary entry %d of entry %d has unknown flag\n"
 msgstr ""
 "розділ [%2d] «%s»: допоміжний запис %d запису %d позначено невідомим "
 "прапорцем\n"
 
-#: src/elflint.c:3169
+#: src/elflint.c:3207
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has invalid name "
@@ -2990,7 +2984,7 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d містить некоректне "
 "посилання на назву\n"
 
-#: src/elflint.c:3178
+#: src/elflint.c:3216
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong hash value: "
@@ -2999,7 +2993,7 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове значення "
 "хешу: %#x, мало бути %#x\n"
 
-#: src/elflint.c:3187
+#: src/elflint.c:3225
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has duplicate version "
@@ -3008,7 +3002,7 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d містить дублікати назви "
 "версії «%s»\n"
 
-#: src/elflint.c:3198
+#: src/elflint.c:3236
 #, c-format
 msgid ""
 "section [%2d] '%s': auxiliary entry %d of entry %d has wrong next field\n"
@@ -3016,13 +3010,13 @@
 "розділ [%2d] «%s»: допоміжний запис %d запису %d має помилкове наступне "
 "поле\n"
 
-#: src/elflint.c:3215 src/elflint.c:3391
+#: src/elflint.c:3253 src/elflint.c:3429
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid offset to next entry\n"
 msgstr ""
 "розділ [%2d] «%s»: запис %d має некоректне зміщення щодо наступного запису\n"
 
-#: src/elflint.c:3223 src/elflint.c:3399
+#: src/elflint.c:3261 src/elflint.c:3437
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has zero offset to next entry, but sh_info says "
@@ -3031,44 +3025,44 @@
 "розділ [%2d] «%s»: запис %d має нульове зміщення щодо наступного запису, але "
 "за sh_info можна зрозуміти, що записів більше\n"
 
-#: src/elflint.c:3238
+#: src/elflint.c:3276
 #, c-format
 msgid "more than one version definition section present\n"
 msgstr "виявлено більше за один розділ визначення версій\n"
 
-#: src/elflint.c:3285
+#: src/elflint.c:3323
 #, c-format
 msgid "section [%2d] '%s': more than one BASE definition\n"
 msgstr "розділ [%2d] «%s»: повторне визначення BASE\n"
 
-#: src/elflint.c:3289
+#: src/elflint.c:3327
 #, c-format
 msgid "section [%2d] '%s': BASE definition must have index VER_NDX_GLOBAL\n"
 msgstr ""
 "розділ [%2d] «%s»: визначення BASE повинно мати індекс VER_NDX_GLOBAL\n"
 
-#: src/elflint.c:3295
+#: src/elflint.c:3333
 #, c-format
 msgid "section [%2d] '%s': entry %d has unknown flag\n"
 msgstr "розділ [%2d] «%s»: невідомий прапорець запису %d\n"
 
-#: src/elflint.c:3322
+#: src/elflint.c:3360
 #, c-format
 msgid "section [%2d] '%s': entry %d has invalid name reference\n"
 msgstr "розділ [%2d] «%s»: запис %d містить некоректне посилання на назву\n"
 
-#: src/elflint.c:3329
+#: src/elflint.c:3367
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong hash value: %#x, expected %#x\n"
 msgstr ""
 "розділ [%2d] «%s»: запис %d має помилкове значення хешу: %#x, мало бути %#x\n"
 
-#: src/elflint.c:3337
+#: src/elflint.c:3375
 #, c-format
 msgid "section [%2d] '%s': entry %d has duplicate version name '%s'\n"
 msgstr "розділ [%2d] «%s»: запис %d містить дублікати назви версії «%s»\n"
 
-#: src/elflint.c:3357
+#: src/elflint.c:3395
 #, c-format
 msgid ""
 "section [%2d] '%s': entry %d has invalid name reference in auxiliary data\n"
@@ -3076,53 +3070,53 @@
 "розділ [%2d] «%s»: запис %d містить некоректне посилання на назву у "
 "допоміжних даних\n"
 
-#: src/elflint.c:3374
+#: src/elflint.c:3412
 #, c-format
 msgid "section [%2d] '%s': entry %d has wrong next field in auxiliary data\n"
 msgstr ""
 "розділ [%2d] «%s»: у допоміжних даних запису %d міститься помилкове поле "
 "наступного запису\n"
 
-#: src/elflint.c:3407
+#: src/elflint.c:3445
 #, c-format
 msgid "section [%2d] '%s': no BASE definition\n"
 msgstr "розділ [%2d] «%s»: немає визначення BASE\n"
 
-#: src/elflint.c:3423
+#: src/elflint.c:3461
 #, c-format
 msgid "section [%2d] '%s': unknown parent version '%s'\n"
 msgstr "розділ [%2d] «%s»: невідома основна версія «%s»\n"
 
-#: src/elflint.c:3448
+#: src/elflint.c:3486
 #, c-format
 msgid "section [%2d] '%s': empty object attributes section\n"
 msgstr "розділ [%2d] «%s»: порожній розділ атрибутів об’єкта\n"
 
-#: src/elflint.c:3464
+#: src/elflint.c:3502
 #, c-format
 msgid "section [%2d] '%s': unrecognized attribute format\n"
 msgstr "розділ [%2d] «%s»: не вдалося визначити формат атрибутів\n"
 
-#: src/elflint.c:3475
+#: src/elflint.c:3513
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute section\n"
 msgstr ""
 "розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у розділі атрибутів\n"
 
-#: src/elflint.c:3484
+#: src/elflint.c:3522
 #, c-format
 msgid "section [%2d] '%s': offset %zu: invalid length in attribute section\n"
 msgstr ""
 "розділ [%2d] «%s»: зміщення %zu: некоректна довжина у розділі атрибутів\n"
 
-#: src/elflint.c:3496
+#: src/elflint.c:3534
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated vendor name string\n"
 msgstr ""
 "розділ [%2d] «%s»: зміщення %zu: незавершений рядок назви постачальника\n"
 
-#: src/elflint.c:3513
+#: src/elflint.c:3551
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: endless ULEB128 in attribute subsection tag\n"
@@ -3130,12 +3124,12 @@
 "розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі підрозділу "
 "атрибутів\n"
 
-#: src/elflint.c:3522
+#: src/elflint.c:3560
 #, c-format
 msgid "section [%2d] '%s': offset %zu: truncated attribute section\n"
 msgstr "розділ [%2d] «%s»: зміщення %zu: обрізаний розділ атрибутів\n"
 
-#: src/elflint.c:3531
+#: src/elflint.c:3569
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: zero length field in attribute subsection\n"
@@ -3143,7 +3137,7 @@
 "розділ [%2d] «%s»: зміщення %zu: поле нульового розміру у підрозділі "
 "атрибутів\n"
 
-#: src/elflint.c:3546
+#: src/elflint.c:3584
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: invalid length in attribute subsection\n"
@@ -3151,7 +3145,7 @@
 "розділ [%2d] «%s»: зміщення %zu: некоректна довжина у підрозділі атрибутів\n"
 
 #. Tag_File
-#: src/elflint.c:3557
+#: src/elflint.c:3595
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: attribute subsection has unexpected tag %u\n"
@@ -3159,35 +3153,35 @@
 "розділ [%2d] «%s»: зміщення %zu: підрозділ атрибутів містить неочікуваний "
 "теґ %u\n"
 
-#: src/elflint.c:3578
+#: src/elflint.c:3616
 #, c-format
 msgid "section [%2d] '%s': offset %zu: endless ULEB128 in attribute tag\n"
 msgstr ""
 "розділ [%2d] «%s»: зміщення %zu: незавершене поле ULEB128 у тезі атрибуту\n"
 
-#: src/elflint.c:3589
+#: src/elflint.c:3627
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unterminated string in attribute\n"
 msgstr "розділ [%2d] «%s»: зміщення %zu: незавершений рядок у атрибуті\n"
 
-#: src/elflint.c:3602
+#: src/elflint.c:3640
 #, c-format
 msgid "section [%2d] '%s': offset %zu: unrecognized attribute tag %u\n"
 msgstr "розділ [%2d] «%s»: зміщення %zu: незавершений теґ атрибуту %u\n"
 
-#: src/elflint.c:3606
+#: src/elflint.c:3644
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: unrecognized %s attribute value %<PRIu64>\n"
 msgstr ""
 "розділ [%2d] «%s»: зміщення %zu: невідоме значення %s атрибуту %<PRIu64>\n"
 
-#: src/elflint.c:3616
+#: src/elflint.c:3654
 #, c-format
 msgid "section [%2d] '%s': offset %zu: vendor '%s' unknown\n"
 msgstr "розділ [%2d] «%s»: зміщення %zu: невідомий постачальник «%s»\n"
 
-#: src/elflint.c:3622
+#: src/elflint.c:3660
 #, c-format
 msgid ""
 "section [%2d] '%s': offset %zu: extra bytes after last attribute section\n"
@@ -3195,47 +3189,47 @@
 "розділ [%2d] «%s»: зміщення %zu: зайві байти після останнього розділу "
 "атрибутів\n"
 
-#: src/elflint.c:3719
+#: src/elflint.c:3758
 #, c-format
 msgid "cannot get section header of zeroth section\n"
 msgstr "не вдалося отримати заголовок нульового розділу\n"
 
-#: src/elflint.c:3723
+#: src/elflint.c:3762
 #, c-format
 msgid "zeroth section has nonzero name\n"
 msgstr "нульовий розділ має ненульову назву\n"
 
-#: src/elflint.c:3725
+#: src/elflint.c:3764
 #, c-format
 msgid "zeroth section has nonzero type\n"
 msgstr "нульовий розділ має ненульовий тип\n"
 
-#: src/elflint.c:3727
+#: src/elflint.c:3766
 #, c-format
 msgid "zeroth section has nonzero flags\n"
 msgstr "нульовий розділ має ненульові прапорці\n"
 
-#: src/elflint.c:3729
+#: src/elflint.c:3768
 #, c-format
 msgid "zeroth section has nonzero address\n"
 msgstr "нульовий розділ має ненульову адресу\n"
 
-#: src/elflint.c:3731
+#: src/elflint.c:3770
 #, c-format
 msgid "zeroth section has nonzero offset\n"
 msgstr "нульовий розділ має ненульове зміщення\n"
 
-#: src/elflint.c:3733
+#: src/elflint.c:3772
 #, c-format
 msgid "zeroth section has nonzero align value\n"
 msgstr "нульовий розділ має ненульове значення вирівнювання\n"
 
-#: src/elflint.c:3735
+#: src/elflint.c:3774
 #, c-format
 msgid "zeroth section has nonzero entry size value\n"
 msgstr "нульовий розділ має ненульове значення розміру запису\n"
 
-#: src/elflint.c:3738
+#: src/elflint.c:3777
 #, c-format
 msgid ""
 "zeroth section has nonzero size value while ELF header has nonzero shnum "
@@ -3244,7 +3238,7 @@
 "нульовий розділ має ненульове значення розміру, хоча заголовок ELF ман "
 "ненульове значення shnum\n"
 
-#: src/elflint.c:3742
+#: src/elflint.c:3781
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -3253,7 +3247,7 @@
 "нульовий розділ має ненульове значення компонування, хоча у заголовку ELF "
 "немає сигналу переповнення у shstrndx\n"
 
-#: src/elflint.c:3746
+#: src/elflint.c:3785
 #, c-format
 msgid ""
 "zeroth section has nonzero link value while ELF header does not signal "
@@ -3262,28 +3256,28 @@
 "нульовий розділ має ненульове значення компонування, хоча у заголовку ELF "
 "немає сигналу переповнення у phnum\n"
 
-#: src/elflint.c:3764
+#: src/elflint.c:3803
 #, c-format
 msgid "cannot get section header for section [%2zu] '%s': %s\n"
 msgstr "не вдалося отримати заголовок розділу [%2zu] «%s»: %s\n"
 
-#: src/elflint.c:3773
+#: src/elflint.c:3812
 #, c-format
 msgid "section [%2zu]: invalid name\n"
 msgstr "розділ [%2zu]: некоректна назва\n"
 
-#: src/elflint.c:3800
+#: src/elflint.c:3839
 #, c-format
 msgid "section [%2d] '%s' has wrong type: expected %s, is %s\n"
 msgstr ""
 "розділ [%2d] «%s» належить до помилкового типу: мав бути %s, маємо %s\n"
 
-#: src/elflint.c:3817
+#: src/elflint.c:3856
 #, c-format
 msgid "section [%2zu] '%s' has wrong flags: expected %s, is %s\n"
 msgstr "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, маємо %s\n"
 
-#: src/elflint.c:3835
+#: src/elflint.c:3874
 #, c-format
 msgid ""
 "section [%2zu] '%s' has wrong flags: expected %s and possibly %s, is %s\n"
@@ -3291,12 +3285,12 @@
 "розділ [%2zu] «%s» має помилкові прапорці: мало бути %s, можливо, %s, але "
 "маємо %s\n"
 
-#: src/elflint.c:3852
+#: src/elflint.c:3891
 #, c-format
 msgid "section [%2zu] '%s' present in object file\n"
 msgstr "у об’єктному файлі виявлено розділ [%2zu] «%s»\n"
 
-#: src/elflint.c:3858 src/elflint.c:3890
+#: src/elflint.c:3897 src/elflint.c:3929
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag set but there is no loadable segment\n"
@@ -3304,7 +3298,7 @@
 "у розділ [%2zu] «%s» встановлено прапорець SHF_ALLOC, але немає придатного "
 "до завантаження сегмента\n"
 
-#: src/elflint.c:3863 src/elflint.c:3895
+#: src/elflint.c:3902 src/elflint.c:3934
 #, c-format
 msgid ""
 "section [%2zu] '%s' has SHF_ALLOC flag not set but there are loadable "
@@ -3313,7 +3307,7 @@
 "у розділі [%2zu] «%s» не встановлено прапорець SHF_ALLOC, але є придатні до "
 "завантаження сегменти\n"
 
-#: src/elflint.c:3871
+#: src/elflint.c:3910
 #, c-format
 msgid ""
 "section [%2zu] '%s' is extension section index table in non-object file\n"
@@ -3321,22 +3315,22 @@
 "розділ [%2zu] «%s» є таблицею-покажчиком розділу розширень у файлі, який не "
 "є об’єктним\n"
 
-#: src/elflint.c:3914
+#: src/elflint.c:3953
 #, c-format
 msgid "section [%2zu] '%s': size not multiple of entry size\n"
 msgstr "розділ [%2zu] «%s»: розмір не є кратним до розміру запису\n"
 
-#: src/elflint.c:3919
+#: src/elflint.c:3958
 #, c-format
 msgid "cannot get section header\n"
 msgstr "не вдалося отримати заголовок розділу\n"
 
-#: src/elflint.c:3929
+#: src/elflint.c:3968
 #, c-format
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "розділ [%2zu] «%s» належить до непідтримуваного типу %d\n"
 
-#: src/elflint.c:3949
+#: src/elflint.c:3988
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3344,74 +3338,74 @@
 "розділ [%2zu] «%s» містить некоректні специфічні для процесора прапорці "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3959
+#: src/elflint.c:3998
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr "розділ [%2zu] «%s» містить невідомі прапорці %#<PRIx64>\n"
 
-#: src/elflint.c:3967
+#: src/elflint.c:4006
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 "розділ [%2zu] «%s»: адреса розділів локальних даних потоків не є нульовою\n"
 
-#: src/elflint.c:3977
+#: src/elflint.c:4016
 #, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr ""
 "розділ [%2zu] «%s»: розміщений у пам'яті розділ не може бути стиснений\n"
 
-#: src/elflint.c:3982
+#: src/elflint.c:4021
 #, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "розділ [%2zu] «%s»: розділ nobits не може бути стиснений\n"
 
-#: src/elflint.c:3988
+#: src/elflint.c:4027
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr "розділ [%2zu] «%s»: стиснений розділ без заголовка стиснення: %s\n"
 
-#: src/elflint.c:3994
+#: src/elflint.c:4033
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні компонування\n"
 
-#: src/elflint.c:3999
+#: src/elflint.c:4038
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні відомостей\n"
 
-#: src/elflint.c:4006
+#: src/elflint.c:4045
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr "розділ [%2zu] «%s»: встановлено прапорець strings без прапорця merge\n"
 
-#: src/elflint.c:4011
+#: src/elflint.c:4050
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 "розділ [%2zu] «%s»: встановлено прапорець merge, але розмір запису є "
 "нульовим\n"
 
-#: src/elflint.c:4030
+#: src/elflint.c:4069
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr "розділ [%2zu] «%s» має неочікуваний тип %d для виконуваного розділу\n"
 
-#: src/elflint.c:4039
+#: src/elflint.c:4078
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr "розділ [%2zu] «%s» у файлах debuginfo має належати до типу NOBITS\n"
 
-#: src/elflint.c:4046
+#: src/elflint.c:4085
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr "розділ [%2zu] «%s» є одночасно виконуваним і придатним до запису\n"
 
-#: src/elflint.c:4077
+#: src/elflint.c:4116
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3420,7 +3414,7 @@
 "розділ [%2zu] «%s» не повністю міститься у сегменті запису заголовка "
 "програми %d\n"
 
-#: src/elflint.c:4087
+#: src/elflint.c:4126
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3429,7 +3423,7 @@
 "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з "
 "файла у сегментів запису заголовка програми %d\n"
 
-#: src/elflint.c:4113
+#: src/elflint.c:4152
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3438,7 +3432,7 @@
 "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з "
 "файла у сегментів запису заголовка програми %d, а вміст файла є ненульовим\n"
 
-#: src/elflint.c:4124
+#: src/elflint.c:4163
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3447,19 +3441,19 @@
 "розділ [%2zu] «%s» не належить до типу NOBITS, але його читання не "
 "виконується з файла у сегментів запису заголовка програми %d\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4174
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr "розділ [%2zu] «%s» є виконуваним у невиконуваному сегменті %d\n"
 
-#: src/elflint.c:4145
+#: src/elflint.c:4184
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 "розділ [%2zu] «%s» є придатним до запису у непридатному до запису сегменті "
 "%d\n"
 
-#: src/elflint.c:4155
+#: src/elflint.c:4194
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3467,7 +3461,7 @@
 "розділ [%2zu] «%s»: встановлено прапорець alloc, але розділ не перебуває у "
 "жодному завантаженому сегменті\n"
 
-#: src/elflint.c:4161
+#: src/elflint.c:4200
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3476,7 +3470,7 @@
 "розділ [%2zu] «%s»: заголовок ELF повідомляє про те, що це таблиця рядків "
 "заголовка розділу, але ця таблиця не належить до типу SHT_TYPE\n"
 
-#: src/elflint.c:4169
+#: src/elflint.c:4208
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3484,17 +3478,17 @@
 "розділ [%2zu] «%s»: придатні до пересування файли не можуть містити "
 "динамічних таблиць символів\n"
 
-#: src/elflint.c:4220
+#: src/elflint.c:4263
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr "виявлено більше за одну таблицю символів версій\n"
 
-#: src/elflint.c:4243
+#: src/elflint.c:4286
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr "існує запис заголовка програми INTERP, але не розділ .interp\n"
 
-#: src/elflint.c:4254
+#: src/elflint.c:4297
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
@@ -3502,14 +3496,14 @@
 "придатний до завантаження сегмент [%u] є виконуваним, але не містить "
 "виконуваних розділів\n"
 
-#: src/elflint.c:4260
+#: src/elflint.c:4303
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 "придатний до завантаження розділ [%u] є придатним до запису, але не містить "
 "придатних до запису розділів\n"
 
-#: src/elflint.c:4271
+#: src/elflint.c:4314
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3518,24 +3512,24 @@
 "немає розділу .gnu.versym, хоча існує розділ .gnu.versym_d або .gnu."
 "versym_r\n"
 
-#: src/elflint.c:4284
+#: src/elflint.c:4327
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "дублікат індексу версії %d\n"
 
-#: src/elflint.c:4298
+#: src/elflint.c:4341
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 "існує розділ .gnu.versym, але немає розділу .gnu.versym_d або .gnu.versym_r\n"
 
-#: src/elflint.c:4347
+#: src/elflint.c:4390
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 "phdr[%d]: невідомий тип нотатки файла core %<PRIu32> за зміщенням %<PRIu64>\n"
 
-#: src/elflint.c:4351
+#: src/elflint.c:4394
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3543,7 +3537,7 @@
 "розділ [%2d] «%s»: невідомий тип нотатки файла core %<PRIu32> за зміщенням "
 "%zu\n"
 
-#: src/elflint.c:4407
+#: src/elflint.c:4450
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3552,7 +3546,7 @@
 "phdr[%d]: невідомий тип нотатки у файлі об'єктів, %<PRIu32>, із іменем "
 "власника «%s» за зміщенням %zu\n"
 
-#: src/elflint.c:4412
+#: src/elflint.c:4455
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3561,39 +3555,39 @@
 "розділ [%2d] «%s»: невідомий тип нотатки у файлі об'єктів, %<PRIu32>, із "
 "іменем власника «%s» за зміщенням %zu\n"
 
-#: src/elflint.c:4431
+#: src/elflint.c:4474
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr "phdr[%d]: для цього типу файлів не визначено записів нотаток\n"
 
-#: src/elflint.c:4451
+#: src/elflint.c:4494
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr "phdr[%d]: не вдалося отримати вміст розділу нотаток: %s\n"
 
-#: src/elflint.c:4454
+#: src/elflint.c:4497
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr "phdr[%d]: зайві %<PRIu64> байтів після останнього запису нотатки\n"
 
-#: src/elflint.c:4475
+#: src/elflint.c:4518
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 "розділ [%2d] «%s»: для цього типу файлів не визначено записів нотаток\n"
 
-#: src/elflint.c:4482
+#: src/elflint.c:4525
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати вміст розділу нотаток\n"
 
-#: src/elflint.c:4485
+#: src/elflint.c:4528
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 "розділ [%2d] «%s»: додаткові %<PRIu64> байтів після останньої нотатки\n"
 
-#: src/elflint.c:4503
+#: src/elflint.c:4546
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -3601,66 +3595,66 @@
 "заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів "
 "спільного використання або файлів core\n"
 
-#: src/elflint.c:4518
+#: src/elflint.c:4561
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr "не вдалося отримати запис заголовка програми %d: %s\n"
 
-#: src/elflint.c:4528
+#: src/elflint.c:4571
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 "запис заголовка програми %d: невідомий тип запису заголовка програми "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:4539
+#: src/elflint.c:4582
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr "більше за один запис INTERP у заголовку програми\n"
 
-#: src/elflint.c:4547
+#: src/elflint.c:4590
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr "більше за один запис TLS у заголовку програми\n"
 
-#: src/elflint.c:4554
+#: src/elflint.c:4597
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "у статичному виконуваному файлі не може бути динамічних розділів\n"
 
-#: src/elflint.c:4568
+#: src/elflint.c:4611
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 "посилання на динамічний розділ у заголовку програми має помилкове зміщення\n"
 
-#: src/elflint.c:4571
+#: src/elflint.c:4614
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 "розміри динамічного розділу у заголовку програми та у заголовку розділу не "
 "збігаються\n"
 
-#: src/elflint.c:4581
+#: src/elflint.c:4624
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr "більше за один запис GNU_RELRO у заголовку програми\n"
 
-#: src/elflint.c:4602
+#: src/elflint.c:4645
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 "придатний до завантаження сегмент, до якого звертається GNU_RELRO, "
 "непридатний до запису\n"
 
-#: src/elflint.c:4613
+#: src/elflint.c:4656
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 "прапорці придатного до завантаження сегмента [%u] не відповідають прапорцям "
 "GNU_RELRO [%u]\n"
 
-#: src/elflint.c:4620
+#: src/elflint.c:4663
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
@@ -3668,76 +3662,76 @@
 "прапорці GNU_RELRO [%u] не є підмножиною прапорців завантажуваного сегмента "
 "[%u]\n"
 
-#: src/elflint.c:4629 src/elflint.c:4652
+#: src/elflint.c:4672 src/elflint.c:4695
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr "сегмент %s не міститься у завантаженому сегменті\n"
 
-#: src/elflint.c:4658
+#: src/elflint.c:4701
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr "зміщення заголовка програми у заголовку ELF і запис PHDR не збігаються"
 
-#: src/elflint.c:4685
+#: src/elflint.c:4728
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 "посилання на таблицю вікон викликів у заголовку програми має помилкове "
 "зміщення\n"
 
-#: src/elflint.c:4688
+#: src/elflint.c:4731
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 "розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку "
 "розділу не збігаються\n"
 
-#: src/elflint.c:4701
+#: src/elflint.c:4744
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr "існує PT_GNU_EH_FRAME, хоча немає розділу .eh_frame_hdr\n"
 
-#: src/elflint.c:4709
+#: src/elflint.c:4752
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’яті\n"
 
-#: src/elflint.c:4712
+#: src/elflint.c:4755
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "розділ [%2zu] «%s» має бути розміщено у пам’яті\n"
 
-#: src/elflint.c:4716
+#: src/elflint.c:4759
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr "таблиця пошуку вікон викликів не повинна бути придатною до запису\n"
 
-#: src/elflint.c:4719
+#: src/elflint.c:4762
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr "розділ [%2zu] «%s» не повинен бути придатним до запису\n"
 
-#: src/elflint.c:4724
+#: src/elflint.c:4767
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr "таблиця пошуку вікон викликів не повинна бути придатною до виконання\n"
 
-#: src/elflint.c:4727
+#: src/elflint.c:4770
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконання\n"
 
-#: src/elflint.c:4741
+#: src/elflint.c:4784
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr "запис заголовка програми %d: розмір файла перевищує об’єм пам’яті\n"
 
-#: src/elflint.c:4748
+#: src/elflint.c:4791
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr "запис заголовка програми %d: значення вирівнювання не є степенем 2\n"
 
-#: src/elflint.c:4751
+#: src/elflint.c:4794
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3746,7 +3740,7 @@
 "запис заголовка програми %d: зміщення у файлі і віртуальна адреса не "
 "співвідносяться з вирівнюванням\n"
 
-#: src/elflint.c:4764
+#: src/elflint.c:4807
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3755,17 +3749,17 @@
 "виконуваний модуль/DSO з розділом .eh_frame_hdr не містить запису заголовка "
 "програми PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4798
+#: src/elflint.c:4841
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "не вдалося прочитати заголовок ELF: %s\n"
 
-#: src/elflint.c:4810
+#: src/elflint.c:4853
 #, fuzzy, c-format
 msgid "cannot create backend for ELF file\n"
 msgstr "не вдалося створити файл"
 
-#: src/elflint.c:4831
+#: src/elflint.c:4874
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
@@ -3982,7 +3976,7 @@
 msgstr "%s: ВНУТРІШНЯ ПОМИЛКА %d (%s): %s"
 
 #: src/nm.c:380 src/nm.c:392 src/size.c:287 src/size.c:296 src/size.c:307
-#: src/strip.c:2766
+#: src/strip.c:2763
 #, c-format
 msgid "while closing '%s'"
 msgstr "під час закриття «%s»"
@@ -4025,13 +4019,13 @@
 msgid "cannot create search tree"
 msgstr "не вдалося створити дерево пошуку"
 
-#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:663
-#: src/readelf.c:1484 src/readelf.c:1633 src/readelf.c:1860 src/readelf.c:2097
-#: src/readelf.c:2286 src/readelf.c:2466 src/readelf.c:2544 src/readelf.c:2809
-#: src/readelf.c:2884 src/readelf.c:2970 src/readelf.c:3565 src/readelf.c:3613
-#: src/readelf.c:3682 src/readelf.c:11620 src/readelf.c:12803
-#: src/readelf.c:13013 src/readelf.c:13081 src/size.c:396 src/size.c:467
-#: src/strip.c:1093
+#: src/nm.c:742 src/nm.c:1234 src/objdump.c:778 src/readelf.c:685
+#: src/readelf.c:1506 src/readelf.c:1655 src/readelf.c:1882 src/readelf.c:2123
+#: src/readelf.c:2312 src/readelf.c:2482 src/readelf.c:2604 src/readelf.c:2854
+#: src/readelf.c:3140 src/readelf.c:3215 src/readelf.c:3301 src/readelf.c:3896
+#: src/readelf.c:3944 src/readelf.c:4013 src/readelf.c:12029
+#: src/readelf.c:13212 src/readelf.c:13422 src/readelf.c:13490 src/size.c:396
+#: src/size.c:467 src/strip.c:1093
 #, c-format
 msgid "cannot get section header string table index"
 msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків"
@@ -4140,7 +4134,7 @@
 msgid "Show information from FILEs (a.out by default)."
 msgstr "Показати інформацію з ФАЙЛів (типово a.out)."
 
-#: src/objdump.c:217 src/readelf.c:608
+#: src/objdump.c:217 src/readelf.c:630
 msgid "No operation specified.\n"
 msgstr "Не вказано дії.\n"
 
@@ -4149,11 +4143,11 @@
 msgid "while close `%s'"
 msgstr "під час закриття «%s»"
 
-#: src/objdump.c:362 src/readelf.c:2192 src/readelf.c:2383
+#: src/objdump.c:362 src/readelf.c:2218 src/readelf.c:2409
 msgid "INVALID SYMBOL"
 msgstr "НЕКОРЕКТНИЙ СИМВОЛ"
 
-#: src/objdump.c:377 src/readelf.c:2226 src/readelf.c:2419
+#: src/objdump.c:377 src/readelf.c:2252 src/readelf.c:2445
 msgid "INVALID SECTION"
 msgstr "НЕКОРЕКТНИЙ РОЗДІЛ"
 
@@ -4211,18 +4205,18 @@
 msgid "error while freeing sub-ELF descriptor: %s"
 msgstr "помилка під час спроби вивільнення дескриптора під-ELF: %s"
 
-#: src/readelf.c:96
+#: src/readelf.c:97
 msgid "ELF input selection:"
 msgstr "Вибір вихідних даних ELF:"
 
-#: src/readelf.c:98
+#: src/readelf.c:99
 msgid ""
 "Use the named SECTION (default .gnu_debugdata) as (compressed) ELF input data"
 msgstr ""
 "Використовувати вказаний за іменем РОЗДІЛ (типово .gnu_debugdata) як "
 "(стиснені) вхідні дані ELF"
 
-#: src/readelf.c:101
+#: src/readelf.c:102
 msgid ""
 "Used with -w to find the skeleton Compile Units in FILE associated with the "
 "Split Compile units in a .dwo input file"
@@ -4230,71 +4224,71 @@
 "Використовується з -w для пошуку основи компільованих модулів у ФАЙЛі, "
 "пов'язаному із модулями розділеної компіляції у вхідному файлі .dwo"
 
-#: src/readelf.c:103
+#: src/readelf.c:104
 msgid "ELF output selection:"
 msgstr "Вибір виводу ELF:"
 
-#: src/readelf.c:105
+#: src/readelf.c:106
 msgid "All these plus -p .strtab -p .dynstr -p .comment"
 msgstr "Все це плюс -p .strtab -p .dynstr -p .comment"
 
-#: src/readelf.c:106
+#: src/readelf.c:107
 msgid "Display the dynamic segment"
 msgstr "Показувати динамічний сегмент"
 
-#: src/readelf.c:107
+#: src/readelf.c:108
 msgid "Display the ELF file header"
 msgstr "Показувати заголовок файла ELF"
 
-#: src/readelf.c:109
+#: src/readelf.c:110
 msgid "Display histogram of bucket list lengths"
 msgstr "Показати гістограму довжин списку блоків"
 
-#: src/readelf.c:110
+#: src/readelf.c:111
 msgid "Display the program headers"
 msgstr "Показувати заголовки програми"
 
-#: src/readelf.c:112
+#: src/readelf.c:113
 msgid "Display relocations"
 msgstr "Показувати пересування"
 
-#: src/readelf.c:113
+#: src/readelf.c:114
 msgid "Display the section groups"
 msgstr "Показувати групи розділів"
 
-#: src/readelf.c:114
+#: src/readelf.c:115
 msgid "Display the sections' headers"
 msgstr "Показувати заголовки розділів"
 
-#: src/readelf.c:117
+#: src/readelf.c:118
 msgid "Display the symbol table sections"
 msgstr "Показати розділи таблиці символів"
 
-#: src/readelf.c:120
+#: src/readelf.c:121
 msgid "Display (only) the dynamic symbol table"
 msgstr "Показувати (лише) динамічну таблицю символів"
 
-#: src/readelf.c:121
+#: src/readelf.c:122
 msgid "Display versioning information"
 msgstr "Показувати відомості щодо версії"
 
-#: src/readelf.c:122
+#: src/readelf.c:123
 msgid "Display the ELF notes"
 msgstr "Показувати нотатки ELF"
 
-#: src/readelf.c:124
+#: src/readelf.c:125
 msgid "Display architecture specific information, if any"
 msgstr "Показувати специфічні для архітектури дані, якщо такі буде виявлено"
 
-#: src/readelf.c:126
+#: src/readelf.c:127
 msgid "Display sections for exception handling"
 msgstr "Показувати розділи для обробки виключень"
 
-#: src/readelf.c:128
+#: src/readelf.c:129
 msgid "Additional output selection:"
 msgstr "Додатковий вибір виводу:"
 
-#: src/readelf.c:130
+#: src/readelf.c:131
 msgid ""
 "Display DWARF section content.  SECTION can be one of abbrev, addr, aranges, "
 "decodedaranges, frame, gdb_index, info, info+, loc, line, decodedline, "
@@ -4304,42 +4298,42 @@
 "aranges, decodedaranges, frame, gdb_index, info, info+, loc, line, "
 "decodedline, ranges, pubnames, str, macinfo, macro або exception"
 
-#: src/readelf.c:134
+#: src/readelf.c:135
 msgid "Dump the uninterpreted contents of SECTION, by number or name"
 msgstr ""
 "Створити дамп даних РОЗДІЛ, які не вдалося інтерпретувати, за номером або "
 "назвами"
 
-#: src/readelf.c:136
+#: src/readelf.c:137
 msgid "Print string contents of sections"
 msgstr "Виводити вміст рядків розділів"
 
-#: src/readelf.c:139
+#: src/readelf.c:140
 msgid "Display the symbol index of an archive"
 msgstr "Показувати покажчик символів архіву"
 
-#: src/readelf.c:141
+#: src/readelf.c:142
 msgid "Use the dynamic segment when possible for displaying info"
 msgstr ""
 
-#: src/readelf.c:143
+#: src/readelf.c:144
 msgid "Output control:"
 msgstr "Керування виводом:"
 
-#: src/readelf.c:145
+#: src/readelf.c:146
 msgid "Do not find symbol names for addresses in DWARF data"
 msgstr "Не шукати назви символів для адрес у даних DWARF"
 
-#: src/readelf.c:147
+#: src/readelf.c:148
 msgid ""
 "Display just offsets instead of resolving values to addresses in DWARF data"
 msgstr "Показати лише зміщення, а не визначені значення адреси у даних DWARF"
 
-#: src/readelf.c:149
+#: src/readelf.c:150
 msgid "Ignored for compatibility (lines always wide)"
 msgstr "Ігнорується з міркувань сумісності (рядки завжди широкі)"
 
-#: src/readelf.c:151
+#: src/readelf.c:152
 msgid ""
 "Show compression information for compressed sections (when used with -S); "
 "decompress section before dumping data (when used with -p or -x)"
@@ -4348,40 +4342,40 @@
 "розпакувати розділ до створення дампу даних (якщо використано з -p або -x)"
 
 #. Short description of program.
-#: src/readelf.c:156
+#: src/readelf.c:157
 msgid "Print information from ELF file in human-readable form."
 msgstr "Виводити відомості з файла ELF у придатному для читання форматі."
 
 #. Look up once.
-#: src/readelf.c:373
+#: src/readelf.c:395
 msgid "yes"
 msgstr "так"
 
-#: src/readelf.c:374
+#: src/readelf.c:396
 msgid "no"
 msgstr "ні"
 
-#: src/readelf.c:576
+#: src/readelf.c:598
 #, c-format
 msgid "Unknown DWARF debug section `%s'.\n"
 msgstr "Невідомий діагностичний розділ DWARF «%s».\n"
 
-#: src/readelf.c:647 src/readelf.c:758
+#: src/readelf.c:669 src/readelf.c:780
 #, c-format
 msgid "cannot generate Elf descriptor: %s"
 msgstr "не вдалося створити дескриптор Elf: %s"
 
-#: src/readelf.c:654 src/readelf.c:980 src/strip.c:1188
+#: src/readelf.c:676 src/readelf.c:1002 src/strip.c:1188
 #, c-format
 msgid "cannot determine number of sections: %s"
 msgstr "не вдалося визначити кількість розділів: %s"
 
-#: src/readelf.c:672 src/readelf.c:1300 src/readelf.c:1508
+#: src/readelf.c:694 src/readelf.c:1322 src/readelf.c:1530
 #, c-format
 msgid "cannot get section: %s"
 msgstr "не вдалося отримати розділ: %s"
 
-#: src/readelf.c:681 src/readelf.c:1307 src/readelf.c:1515 src/readelf.c:13033
+#: src/readelf.c:703 src/readelf.c:1329 src/readelf.c:1537 src/readelf.c:13442
 #: src/unstrip.c:396 src/unstrip.c:427 src/unstrip.c:490 src/unstrip.c:610
 #: src/unstrip.c:631 src/unstrip.c:671 src/unstrip.c:887 src/unstrip.c:1222
 #: src/unstrip.c:1349 src/unstrip.c:1373 src/unstrip.c:1429 src/unstrip.c:1470
@@ -4390,120 +4384,120 @@
 msgid "cannot get section header: %s"
 msgstr "не вдалося отримати заголовок розділу: %s"
 
-#: src/readelf.c:689
+#: src/readelf.c:711
 #, c-format
 msgid "cannot get section name"
 msgstr "не вдалося отримати назву розділу"
 
-#: src/readelf.c:698 src/readelf.c:6833 src/readelf.c:10887 src/readelf.c:10989
-#: src/readelf.c:11173
+#: src/readelf.c:720 src/readelf.c:7176 src/readelf.c:11230 src/readelf.c:11332
+#: src/readelf.c:11516
 #, c-format
 msgid "cannot get %s content: %s"
 msgstr "не вдалося отримати дані %s: %s"
 
-#: src/readelf.c:714
+#: src/readelf.c:736
 #, c-format
 msgid "cannot create temp file '%s'"
 msgstr "не вдалося створити файл тимчасових даних «%s»"
 
-#: src/readelf.c:723
+#: src/readelf.c:745
 #, c-format
 msgid "cannot write section data"
 msgstr "не вдалося записати дані розділу"
 
-#: src/readelf.c:729 src/readelf.c:746 src/readelf.c:775
+#: src/readelf.c:751 src/readelf.c:768 src/readelf.c:797
 #, c-format
 msgid "error while closing Elf descriptor: %s"
 msgstr "помилка під час спроби закриття дескриптора Elf: %s"
 
-#: src/readelf.c:736
+#: src/readelf.c:758
 #, c-format
 msgid "error while rewinding file descriptor"
 msgstr "помилка під час повернення до початкового значення дескриптора файла"
 
-#: src/readelf.c:770
+#: src/readelf.c:792
 #, c-format
 msgid "'%s' is not an archive, cannot print archive index"
 msgstr "«%s» не є архівом, виведення покажчика архіву неможливе"
 
-#: src/readelf.c:874
+#: src/readelf.c:896
 #, c-format
 msgid "cannot stat input file"
 msgstr "не вдалося отримати дані з вхідного файла за допомогою stat"
 
-#: src/readelf.c:876
+#: src/readelf.c:898
 #, c-format
 msgid "input file is empty"
 msgstr "вхідний файл є порожнім"
 
-#: src/readelf.c:878
+#: src/readelf.c:900
 #, c-format
 msgid "failed reading '%s': %s"
 msgstr "не вдалося прочитати «%s»: %s"
 
-#: src/readelf.c:907
+#: src/readelf.c:929
 #, c-format
 msgid "No such section '%s' in '%s'"
 msgstr "У «%2$s» немає розділу «%1$s»"
 
-#: src/readelf.c:966
+#: src/readelf.c:988
 #, c-format
 msgid "cannot read ELF header: %s"
 msgstr "не вдалося прочитати заголовок ELF: %s"
 
-#: src/readelf.c:974
+#: src/readelf.c:996
 #, c-format
 msgid "cannot create EBL handle"
 msgstr "не вдалося створити дескриптор EBL"
 
-#: src/readelf.c:985
+#: src/readelf.c:1007
 #, c-format
 msgid "cannot determine number of program headers: %s"
 msgstr "не вдалося визначити кількість заголовків програми: %s"
 
-#: src/readelf.c:1017
+#: src/readelf.c:1039
 #, c-format
 msgid "cannot read ELF: %s"
 msgstr "не вдалося прочитати ELF: %s"
 
-#: src/readelf.c:1050
+#: src/readelf.c:1072
 #, fuzzy
 #| msgid "cannot get section: %s"
 msgid "cannot find section"
 msgstr "не вдалося отримати розділ: %s"
 
-#: src/readelf.c:1087
+#: src/readelf.c:1109
 msgid "NONE (None)"
 msgstr "NONE (Немає)"
 
-#: src/readelf.c:1088
+#: src/readelf.c:1110
 msgid "REL (Relocatable file)"
 msgstr "REL (Придатний до пересування файл)"
 
-#: src/readelf.c:1089
+#: src/readelf.c:1111
 msgid "EXEC (Executable file)"
 msgstr "EXEC (Виконуваний файл)"
 
-#: src/readelf.c:1090
+#: src/readelf.c:1112
 msgid "DYN (Shared object file)"
 msgstr "DYN (Файл об’єктів спільного використання)"
 
-#: src/readelf.c:1091
+#: src/readelf.c:1113
 msgid "CORE (Core file)"
 msgstr "CORE (Файл ядра)"
 
-#: src/readelf.c:1096
+#: src/readelf.c:1118
 #, c-format
 msgid "OS Specific: (%x)\n"
 msgstr "ОС-специфічне: (%x)\n"
 
 #. && e_type <= ET_HIPROC always true
-#: src/readelf.c:1098
+#: src/readelf.c:1120
 #, c-format
 msgid "Processor Specific: (%x)\n"
 msgstr "Специфічне для процесора: (%x)\n"
 
-#: src/readelf.c:1108
+#: src/readelf.c:1130
 msgid ""
 "ELF Header:\n"
 "  Magic:  "
@@ -4511,7 +4505,7 @@
 "Заголовок ELF:\n"
 "  Magic:  "
 
-#: src/readelf.c:1112
+#: src/readelf.c:1134
 #, c-format
 msgid ""
 "\n"
@@ -4520,123 +4514,123 @@
 "\n"
 "  Клас:                              %s\n"
 
-#: src/readelf.c:1117
+#: src/readelf.c:1139
 #, c-format
 msgid "  Data:                              %s\n"
 msgstr "  Дані:                              %s\n"
 
-#: src/readelf.c:1123
+#: src/readelf.c:1145
 #, c-format
 msgid "  Ident Version:                     %hhd %s\n"
 msgstr "   Версія Ident:                     %hhd %s\n"
 
-#: src/readelf.c:1125 src/readelf.c:1147
+#: src/readelf.c:1147 src/readelf.c:1169
 msgid "(current)"
 msgstr "(поточний)"
 
-#: src/readelf.c:1129
+#: src/readelf.c:1151
 #, c-format
 msgid "  OS/ABI:                            %s\n"
 msgstr "  ОС/ABI:                            %s\n"
 
-#: src/readelf.c:1132
+#: src/readelf.c:1154
 #, c-format
 msgid "  ABI Version:                       %hhd\n"
 msgstr "  Версія ABI:                       %hhd\n"
 
-#: src/readelf.c:1135
+#: src/readelf.c:1157
 msgid "  Type:                              "
 msgstr "  Тип:                                "
 
-#: src/readelf.c:1140
+#: src/readelf.c:1162
 #, c-format
 msgid "  Machine:                           %s\n"
 msgstr "  Архітектура:                       %s\n"
 
-#: src/readelf.c:1142
+#: src/readelf.c:1164
 #, c-format
 msgid "  Machine:                           <unknown>: 0x%x\n"
 msgstr "  Архітектура:                       <невідома>: 0x%x\n"
 
-#: src/readelf.c:1145
+#: src/readelf.c:1167
 #, c-format
 msgid "  Version:                           %d %s\n"
 msgstr "  Версія:                            %d %s\n"
 
-#: src/readelf.c:1149
+#: src/readelf.c:1171
 #, c-format
 msgid "  Entry point address:               %#<PRIx64>\n"
 msgstr "  Адреса вхідної точки:              %#<PRIx64>\n"
 
-#: src/readelf.c:1152
+#: src/readelf.c:1174
 #, c-format
 msgid "  Start of program headers:          %<PRId64> %s\n"
 msgstr "  Початок заголовків програм:      %<PRId64> %s\n"
 
-#: src/readelf.c:1153 src/readelf.c:1156
+#: src/readelf.c:1175 src/readelf.c:1178
 msgid "(bytes into file)"
 msgstr "(байтів у файл)"
 
-#: src/readelf.c:1155
+#: src/readelf.c:1177
 #, c-format
 msgid "  Start of section headers:          %<PRId64> %s\n"
 msgstr "  Початок заголовків розділів:     %<PRId64> %s\n"
 
-#: src/readelf.c:1158
+#: src/readelf.c:1180
 #, c-format
 msgid "  Flags:                             %s\n"
 msgstr "  Прапорці:                          %s\n"
 
-#: src/readelf.c:1161
+#: src/readelf.c:1183
 #, c-format
 msgid "  Size of this header:               %<PRId16> %s\n"
 msgstr "  Розмір цього заголовка:            %<PRId16> %s\n"
 
-#: src/readelf.c:1162 src/readelf.c:1165 src/readelf.c:1182
+#: src/readelf.c:1184 src/readelf.c:1187 src/readelf.c:1204
 msgid "(bytes)"
 msgstr "(байтів)"
 
-#: src/readelf.c:1164
+#: src/readelf.c:1186
 #, c-format
 msgid "  Size of program header entries:    %<PRId16> %s\n"
 msgstr "  Розмір записів заголовка програми:  %<PRId16> %s\n"
 
-#: src/readelf.c:1167
+#: src/readelf.c:1189
 #, c-format
 msgid "  Number of program headers entries: %<PRId16>"
 msgstr "  Кількість записів заголовків програми: %<PRId16>"
 
-#: src/readelf.c:1174
+#: src/readelf.c:1196
 #, c-format
 msgid " (%<PRIu32> in [0].sh_info)"
 msgstr " (%<PRIu32> у [0].sh_info)"
 
-#: src/readelf.c:1177 src/readelf.c:1194 src/readelf.c:1208
+#: src/readelf.c:1199 src/readelf.c:1216 src/readelf.c:1230
 msgid " ([0] not available)"
 msgstr " ([0] недоступний)"
 
-#: src/readelf.c:1181
+#: src/readelf.c:1203
 #, c-format
 msgid "  Size of section header entries:    %<PRId16> %s\n"
 msgstr "  Розмір записів заголовків розділів:  %<PRId16> %s\n"
 
-#: src/readelf.c:1184
+#: src/readelf.c:1206
 #, c-format
 msgid "  Number of section headers entries: %<PRId16>"
 msgstr "  Кількість записів заголовків розділів: %<PRId16>"
 
-#: src/readelf.c:1191
+#: src/readelf.c:1213
 #, c-format
 msgid " (%<PRIu32> in [0].sh_size)"
 msgstr " (%<PRIu32> у [0].sh_size)"
 
 #. We managed to get the zeroth section.
-#: src/readelf.c:1204
+#: src/readelf.c:1226
 #, c-format
 msgid " (%<PRIu32> in [0].sh_link)"
 msgstr " (%<PRIu32> у [0].sh_link)"
 
-#: src/readelf.c:1212
+#: src/readelf.c:1234
 #, c-format
 msgid ""
 "  Section header string table index: XINDEX%s\n"
@@ -4645,7 +4639,7 @@
 "  Індекс заголовка розділу у таблиці рядків: XINDEX%s\n"
 "\n"
 
-#: src/readelf.c:1216
+#: src/readelf.c:1238
 #, c-format
 msgid ""
 "  Section header string table index: %<PRId16>\n"
@@ -4654,12 +4648,12 @@
 "  Індекс заголовка розділу у таблиці рядків: %<PRId16>\n"
 "\n"
 
-#: src/readelf.c:1266 src/readelf.c:1474
+#: src/readelf.c:1288 src/readelf.c:1496
 #, c-format
 msgid "cannot get number of sections: %s"
 msgstr "не вдалося отримати кількість розділів: %s"
 
-#: src/readelf.c:1269
+#: src/readelf.c:1291
 #, c-format
 msgid ""
 "There are %zd section headers, starting at offset %#<PRIx64>:\n"
@@ -4668,16 +4662,16 @@
 "Виявлено %zd заголовків розділів, зміщення початку — %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:1277
+#: src/readelf.c:1299
 #, c-format
 msgid "cannot get section header string table index: %s"
 msgstr "не вдалося визначити індекс заголовка розділу у таблиці рядків: %s"
 
-#: src/readelf.c:1280
+#: src/readelf.c:1302
 msgid "Section Headers:"
 msgstr "Заголовки розділів:"
 
-#: src/readelf.c:1283
+#: src/readelf.c:1305
 msgid ""
 "[Nr] Name                 Type         Addr     Off    Size   ES Flags Lk "
 "Inf Al"
@@ -4685,7 +4679,7 @@
 "[№ ] Назва                Тип          Адр      Змі    Розмір ES Прап  Lk "
 "Інф Al"
 
-#: src/readelf.c:1285
+#: src/readelf.c:1307
 msgid ""
 "[Nr] Name                 Type         Addr             Off      Size     ES "
 "Flags Lk Inf Al"
@@ -4693,35 +4687,35 @@
 "[№ ] Назва                Тип          Адр              Змі      Розмір   ES "
 "Прап  Lk Інф Al"
 
-#: src/readelf.c:1290
+#: src/readelf.c:1312
 msgid "     [Compression  Size   Al]"
 msgstr "     [Стискання    Розмір Ал]"
 
-#: src/readelf.c:1292
+#: src/readelf.c:1314
 msgid "     [Compression  Size     Al]"
 msgstr "     [Стискання    Розмір   Ал]"
 
-#: src/readelf.c:1370
+#: src/readelf.c:1392
 #, c-format
 msgid "bad compression header for section %zd: %s"
 msgstr "помилковий заголовок стиснення для розділу %zd: %s"
 
-#: src/readelf.c:1381
+#: src/readelf.c:1403
 #, c-format
 msgid "bad gnu compressed size for section %zd: %s"
 msgstr "помилкове значення стисненого розміру gnu для розділу %zd: %s"
 
-#: src/readelf.c:1399
+#: src/readelf.c:1421
 msgid "Program Headers:"
 msgstr "Заголовки програми:"
 
-#: src/readelf.c:1401
+#: src/readelf.c:1423
 msgid ""
 "  Type           Offset   VirtAddr   PhysAddr   FileSiz  MemSiz   Flg Align"
 msgstr ""
 "  Тип            Зміщен   ВіртАдр    ФізАдр     РозмФайл РозмПам  Пра Вирів"
 
-#: src/readelf.c:1404
+#: src/readelf.c:1426
 msgid ""
 "  Type           Offset   VirtAddr           PhysAddr           FileSiz  "
 "MemSiz   Flg Align"
@@ -4729,12 +4723,12 @@
 "  Тип           Зміщен   ВіртАдр            ФізАдр             "
 "РозмФайлРозмПам  Пра Вирів"
 
-#: src/readelf.c:1461
+#: src/readelf.c:1483
 #, c-format
 msgid "\t[Requesting program interpreter: %s]\n"
 msgstr "\t[Запит щодо інтерпретатора програми: %s]\n"
 
-#: src/readelf.c:1486
+#: src/readelf.c:1508
 msgid ""
 "\n"
 " Section to Segment mapping:\n"
@@ -4744,12 +4738,12 @@
 " Відображення розділів на сегмент:\n"
 "  Розділи сегмента..."
 
-#: src/readelf.c:1497 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
+#: src/readelf.c:1519 src/unstrip.c:2114 src/unstrip.c:2156 src/unstrip.c:2163
 #, c-format
 msgid "cannot get program header: %s"
 msgstr "не вдалося отримати заголовок програми: %s"
 
-#: src/readelf.c:1641
+#: src/readelf.c:1663
 #, c-format
 msgid ""
 "\n"
@@ -4767,7 +4761,7 @@
 "\n"
 "Група розділів COMDAT [%2zu] «%s» з підписом «%s» містить %zu записів:\n"
 
-#: src/readelf.c:1646
+#: src/readelf.c:1668
 #, c-format
 msgid ""
 "\n"
@@ -4785,32 +4779,32 @@
 "\n"
 "Група розділів [%2zu] «%s» з підписом «%s» містить %zu записів:\n"
 
-#: src/readelf.c:1654
+#: src/readelf.c:1676
 msgid "<INVALID SYMBOL>"
 msgstr "<НЕКОРЕКТНИЙ СИМВОЛ>"
 
-#: src/readelf.c:1668
+#: src/readelf.c:1690
 msgid "<INVALID SECTION>"
 msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>"
 
-#: src/readelf.c:1691 src/readelf.c:2476 src/readelf.c:3581 src/readelf.c:3881
-#: src/readelf.c:12905 src/readelf.c:12912 src/readelf.c:12956
-#: src/readelf.c:12963
+#: src/readelf.c:1713 src/readelf.c:2614 src/readelf.c:3912 src/readelf.c:4212
+#: src/readelf.c:13314 src/readelf.c:13321 src/readelf.c:13365
+#: src/readelf.c:13372
 msgid "Couldn't uncompress section"
 msgstr "Не вдалося розпакувати розділ"
 
-#: src/readelf.c:1695 src/readelf.c:2481 src/readelf.c:3585
+#: src/readelf.c:1717 src/readelf.c:2619 src/readelf.c:3916
 #, c-format
 msgid "cannot get section [%zd] header: %s"
 msgstr "не вдалося отримати заголовок розділу [%zd]: %s"
 
-#: src/readelf.c:1864 src/readelf.c:2550 src/readelf.c:2815 src/readelf.c:2890
-#: src/readelf.c:3193 src/readelf.c:3267 src/readelf.c:5619
+#: src/readelf.c:1886 src/readelf.c:2860 src/readelf.c:3146 src/readelf.c:3221
+#: src/readelf.c:3524 src/readelf.c:3598 src/readelf.c:5962
 #, c-format
 msgid "invalid sh_link value in section %zu"
 msgstr "некоректне значення sh_link у розділі %zu"
 
-#: src/readelf.c:1867
+#: src/readelf.c:1889
 #, c-format
 msgid ""
 "\n"
@@ -4833,7 +4827,7 @@
 "Динамічний сегмент містить %lu записів:\n"
 " Адр: %#0*<PRIx64>  Зміщення: %#08<PRIx64>  Пос. на розділ: [%2u] '%s'\n"
 
-#: src/readelf.c:1880
+#: src/readelf.c:1902
 #, fuzzy, c-format
 #| msgid ""
 #| "\n"
@@ -4864,42 +4858,42 @@
 "Динамічний сегмент містить %lu записів:\n"
 " Адр: %#0*<PRIx64>  Зміщення: %#08<PRIx64>  Пос. на розділ: [%2u] '%s'\n"
 
-#: src/readelf.c:1890
+#: src/readelf.c:1912
 msgid "  Type              Value\n"
 msgstr "  Тип              Значення\n"
 
-#: src/readelf.c:1899
+#: src/readelf.c:1921
 #, fuzzy
 #| msgid "cannot get string section data: %s"
 msgid "cannot get string table by using dynamic segment"
 msgstr "не вдалося отримати дані розділу рядків: %s"
 
-#: src/readelf.c:1938
+#: src/readelf.c:1960
 #, c-format
 msgid "Shared library: [%s]\n"
 msgstr "Спільна бібліотека: [%s]\n"
 
-#: src/readelf.c:1942
+#: src/readelf.c:1964
 #, c-format
 msgid "Library soname: [%s]\n"
 msgstr "Назва so бібліотеки: [%s]\n"
 
-#: src/readelf.c:1946
+#: src/readelf.c:1968
 #, c-format
 msgid "Library rpath: [%s]\n"
 msgstr "Rpath бібліотеки: [%s]\n"
 
-#: src/readelf.c:1950
+#: src/readelf.c:1972
 #, c-format
 msgid "Library runpath: [%s]\n"
 msgstr "Runpath бібліотеки: [%s]\n"
 
-#: src/readelf.c:1969
+#: src/readelf.c:1993
 #, c-format
 msgid "%<PRId64> (bytes)\n"
 msgstr "%<PRId64> (байт)\n"
 
-#: src/readelf.c:2083 src/readelf.c:2272
+#: src/readelf.c:2109 src/readelf.c:2298
 #, c-format
 msgid ""
 "\n"
@@ -4908,7 +4902,7 @@
 "\n"
 "Некоректна таблиця символів за зміщенням %#0<PRIx64>\n"
 
-#: src/readelf.c:2100 src/readelf.c:2289
+#: src/readelf.c:2126 src/readelf.c:2315
 #, c-format
 msgid ""
 "\n"
@@ -4937,7 +4931,8 @@
 #. The .rela.dyn section does not refer to a specific section but
 #. instead of section index zero.  Do not try to print a section
 #. name.
-#: src/readelf.c:2115 src/readelf.c:2304
+#. A .relr.dyn section does not refer to a specific section.
+#: src/readelf.c:2141 src/readelf.c:2330 src/readelf.c:2485
 #, c-format
 msgid ""
 "\n"
@@ -4955,30 +4950,40 @@
 "\n"
 "Розділ пересування [%2u] «%s» за зміщенням %#0<PRIx64> містить %d записів:\n"
 
-#: src/readelf.c:2125
+#: src/readelf.c:2151
 msgid "  Offset      Type                 Value       Name\n"
 msgstr "  Зміщення     Тип                  Значення    Назва\n"
 
-#: src/readelf.c:2127
+#: src/readelf.c:2153
 msgid "  Offset              Type                 Value               Name\n"
 msgstr "  Зміщення            Тип                  Значення            Назва\n"
 
-#: src/readelf.c:2180 src/readelf.c:2191 src/readelf.c:2204 src/readelf.c:2225
-#: src/readelf.c:2237 src/readelf.c:2370 src/readelf.c:2382 src/readelf.c:2396
-#: src/readelf.c:2418 src/readelf.c:2431
+#: src/readelf.c:2206 src/readelf.c:2217 src/readelf.c:2230 src/readelf.c:2251
+#: src/readelf.c:2263 src/readelf.c:2396 src/readelf.c:2408 src/readelf.c:2422
+#: src/readelf.c:2444 src/readelf.c:2457
 msgid "<INVALID RELOC>"
 msgstr "<НЕКОРЕКТНЕ ПЕРЕМІЩЕННЯ>"
 
-#: src/readelf.c:2314
+#: src/readelf.c:2340
 msgid "  Offset      Type            Value       Addend Name\n"
 msgstr "  Зміщення    Тип             Значення    Назва додатка\n"
 
-#: src/readelf.c:2316
+#: src/readelf.c:2342
 msgid "  Offset              Type            Value               Addend Name\n"
 msgstr ""
 "  Зміщення            Тип             Значення            Назва додатка\n"
 
-#: src/readelf.c:2558
+#: src/readelf.c:2654
+#, c-format
+msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+
+#: src/readelf.c:2750
+#, c-format
+msgid "bad dynamic symbol"
+msgstr "помилковий динамічний символ"
+
+#: src/readelf.c:2868
 #, c-format
 msgid ""
 "\n"
@@ -4996,7 +5001,7 @@
 "\n"
 "Таблиця символів [%2u] «%s» містить %u записів:\n"
 
-#: src/readelf.c:2563
+#: src/readelf.c:2873
 #, c-format
 msgid " %lu local symbol  String table: [%2u] '%s'\n"
 msgid_plural " %lu local symbols  String table: [%2u] '%s'\n"
@@ -5004,33 +5009,27 @@
 msgstr[1] " %lu лок. символи  Таблиця символів: [%2u] «%s»\n"
 msgstr[2] " %lu лок. символів Таблиця символів: [%2u] «%s»\n"
 
-#: src/readelf.c:2571
+#: src/readelf.c:2881
 msgid "  Num:    Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  №№      Знач.   Роз. Тип     Зв’яз  Вид.         Інд Назва\n"
 
-#: src/readelf.c:2573
+#: src/readelf.c:2883
 msgid "  Num:            Value   Size Type    Bind   Vis          Ndx Name\n"
 msgstr "  №№              Знач.   Роз. Тип     Зв’яз  Вид.         Інд Назва\n"
 
-#: src/readelf.c:2593
-#, c-format
-msgid "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
-msgstr "%5u: %0*<PRIx64> %6<PRId64> %-7s %-6s %-9s %6s %s"
+#: src/readelf.c:3002
+msgid "Dynamic symbol information is not available for displaying symbols."
+msgstr ""
 
-#: src/readelf.c:2686
-#, c-format
-msgid "bad dynamic symbol"
-msgstr "помилковий динамічний символ"
-
-#: src/readelf.c:2771
+#: src/readelf.c:3102
 msgid "none"
 msgstr "немає"
 
-#: src/readelf.c:2788
+#: src/readelf.c:3119
 msgid "| <unknown>"
 msgstr "| <невідомо>"
 
-#: src/readelf.c:2818
+#: src/readelf.c:3149
 #, c-format
 msgid ""
 "\n"
@@ -5053,17 +5052,17 @@
 "Розділ потреби у версіях [%2u] «%s», що містить %d записів:\n"
 " Адр.: %#0*<PRIx64>  Зміщ.:  %#08<PRIx64>  Посилання на розділ: [%2u] «%s»\n"
 
-#: src/readelf.c:2839
+#: src/readelf.c:3170
 #, c-format
 msgid "  %#06x: Version: %hu  File: %s  Cnt: %hu\n"
 msgstr "  %#06x: Версія: %hu  Файл: %s  Кть: %hu\n"
 
-#: src/readelf.c:2852
+#: src/readelf.c:3183
 #, c-format
 msgid "  %#06x: Name: %s  Flags: %s  Version: %hu\n"
 msgstr "  %#06x: Назва: %s  Прап: %s  Версія: %hu\n"
 
-#: src/readelf.c:2894
+#: src/readelf.c:3225
 #, c-format
 msgid ""
 "\n"
@@ -5086,18 +5085,18 @@
 "Розділ визначення версії [%2u] «%s», що містить %d записів:\n"
 " Адр.: %#0*<PRIx64>  Зміщ.:  %#08<PRIx64>  Посилання на розділ: [%2u] «%s»\n"
 
-#: src/readelf.c:2922
+#: src/readelf.c:3253
 #, c-format
 msgid "  %#06x: Version: %hd  Flags: %s  Index: %hd  Cnt: %hd  Name: %s\n"
 msgstr "  %#06x: Версія:  %hd  Прап.: %s  Індекс: %hd К-ть: %hd Назва: %s\n"
 
-#: src/readelf.c:2937
+#: src/readelf.c:3268
 #, c-format
 msgid "  %#06x: Parent %d: %s\n"
 msgstr "  %#06x: батьківський %d: %s\n"
 
 #. Print the header.
-#: src/readelf.c:3197
+#: src/readelf.c:3528
 #, c-format
 msgid ""
 "\n"
@@ -5120,15 +5119,15 @@
 "Розділ символів версій [%2u] «%s», що містить %d записів:\n"
 " Адр.: %#0*<PRIx64>  Зміщ.:  %#08<PRIx64>  Посилання на розділ: [%2u] «%s»"
 
-#: src/readelf.c:3225
+#: src/readelf.c:3556
 msgid "   0 *local*                     "
 msgstr "   0 *локальний*                 "
 
-#: src/readelf.c:3230
+#: src/readelf.c:3561
 msgid "   1 *global*                    "
 msgstr "   1 *загальний*                 "
 
-#: src/readelf.c:3272
+#: src/readelf.c:3603
 #, c-format
 msgid ""
 "\n"
@@ -5156,22 +5155,22 @@
 "блоками):\n"
 " Адр.: %#0*<PRIx64>  Зміщ.: %#08<PRIx64>  Посилання на розділ: [%2u] «%s»\n"
 
-#: src/readelf.c:3294
+#: src/readelf.c:3625
 #, no-c-format
 msgid " Length  Number  % of total  Coverage\n"
 msgstr " Довжина Номер   % від загал. Покриття\n"
 
-#: src/readelf.c:3296
+#: src/readelf.c:3627
 #, c-format
 msgid "      0  %6<PRIu32>      %5.1f%%\n"
 msgstr "      0  %6<PRIu32>      %5.1f%%\n"
 
-#: src/readelf.c:3303
+#: src/readelf.c:3634
 #, c-format
 msgid "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 msgstr "%7d  %6<PRIu32>      %5.1f%%    %5.1f%%\n"
 
-#: src/readelf.c:3316
+#: src/readelf.c:3647
 #, c-format
 msgid ""
 " Average number of tests:   successful lookup: %f\n"
@@ -5180,37 +5179,37 @@
 " Середня кількість тестів:   успішний пошук: %f\n"
 "\t\t\t  неуспішний пошук: %f\n"
 
-#: src/readelf.c:3334 src/readelf.c:3398 src/readelf.c:3464
+#: src/readelf.c:3665 src/readelf.c:3729 src/readelf.c:3795
 #, c-format
 msgid "cannot get data for section %d: %s"
 msgstr "не вдалося отримати дані для розділу %d: %s"
 
-#: src/readelf.c:3342
+#: src/readelf.c:3673
 #, c-format
 msgid "invalid data in sysv.hash section %d"
 msgstr "некоректні дані у розділі sysv.hash %d"
 
-#: src/readelf.c:3371
+#: src/readelf.c:3702
 #, c-format
 msgid "invalid chain in sysv.hash section %d"
 msgstr "некоректний ланцюжок у розділі sysv.hash %d"
 
-#: src/readelf.c:3406
+#: src/readelf.c:3737
 #, c-format
 msgid "invalid data in sysv.hash64 section %d"
 msgstr "некоректні дані у розділі sysv.hash64 %d"
 
-#: src/readelf.c:3437
+#: src/readelf.c:3768
 #, c-format
 msgid "invalid chain in sysv.hash64 section %d"
 msgstr "некоректний ланцюжок у розділі sysv.hash64 %d"
 
-#: src/readelf.c:3473
+#: src/readelf.c:3804
 #, c-format
 msgid "invalid data in gnu.hash section %d"
 msgstr "некоректні дані у розділі gnu.hash %d"
 
-#: src/readelf.c:3539
+#: src/readelf.c:3870
 #, c-format
 msgid ""
 " Symbol Bias: %u\n"
@@ -5220,7 +5219,7 @@
 " Розмір бітової маски: %zu байтів  %<PRIuFAST32>%% встановлених бітів  зсув "
 "2-го хешу: %u\n"
 
-#: src/readelf.c:3624
+#: src/readelf.c:3955
 #, c-format
 msgid ""
 "\n"
@@ -5241,7 +5240,7 @@
 "Розділ списку бібліотек [%2zu] «%s» за зміщенням %#0<PRIx64> містить %d "
 "записів:\n"
 
-#: src/readelf.c:3638
+#: src/readelf.c:3969
 msgid ""
 "       Library                       Time Stamp          Checksum Version "
 "Flags"
@@ -5249,7 +5248,7 @@
 "       Бібліотека                    Часовий штамп       Версія суми      "
 "Прапорці"
 
-#: src/readelf.c:3698
+#: src/readelf.c:4029
 #, c-format
 msgid ""
 "\n"
@@ -5260,107 +5259,107 @@
 "Розділ атрибутів об’єктів [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:3715
+#: src/readelf.c:4046
 msgid "  Owner          Size\n"
 msgstr "  Власник        Розмір\n"
 
-#: src/readelf.c:3739
+#: src/readelf.c:4070
 #, c-format
 msgid "  %-13s  %4<PRIu32>\n"
 msgstr "  %-13s  %4<PRIu32>\n"
 
 #. Unknown subsection, print and skip.
-#: src/readelf.c:3778
+#: src/readelf.c:4109
 #, c-format
 msgid "    %-4u %12<PRIu32>\n"
 msgstr "    %-4u %12<PRIu32>\n"
 
 #. Tag_File
-#: src/readelf.c:3783
+#: src/readelf.c:4114
 #, c-format
 msgid "    File: %11<PRIu32>\n"
 msgstr "    Файл: %11<PRIu32>\n"
 
-#: src/readelf.c:3833
+#: src/readelf.c:4164
 #, c-format
 msgid "      %s: %<PRId64>, %s\n"
 msgstr "      %s: %<PRId64>, %s\n"
 
-#: src/readelf.c:3836
+#: src/readelf.c:4167
 #, c-format
 msgid "      %s: %<PRId64>\n"
 msgstr "      %s: %<PRId64>\n"
 
-#: src/readelf.c:3839
+#: src/readelf.c:4170
 #, c-format
 msgid "      %s: %s\n"
 msgstr "      %s: %s\n"
 
-#: src/readelf.c:3849
+#: src/readelf.c:4180
 #, c-format
 msgid "      %u: %<PRId64>\n"
 msgstr "      %u: %<PRId64>\n"
 
-#: src/readelf.c:3852
+#: src/readelf.c:4183
 #, c-format
 msgid "      %u: %s\n"
 msgstr "      %u: %s\n"
 
-#: src/readelf.c:3890
+#: src/readelf.c:4221
 #, fuzzy
 #| msgid "couldn't get shdr for group section: %s"
 msgid "Couldn't get data from section"
 msgstr "не вдалося отримати shdr для розділу груп: %s"
 
-#: src/readelf.c:3955
+#: src/readelf.c:4286
 msgid "sprintf failure"
 msgstr "помилка sprintf"
 
-#: src/readelf.c:4439
+#: src/readelf.c:4770
 msgid "empty block"
 msgstr "порожній блок"
 
-#: src/readelf.c:4442
+#: src/readelf.c:4773
 #, c-format
 msgid "%zu byte block:"
 msgstr "%zu-байтовий блок:"
 
-#: src/readelf.c:4920
+#: src/readelf.c:5251
 #, c-format
 msgid "%*s[%2<PRIuMAX>] %s  <TRUNCATED>\n"
 msgstr "%*s[%2<PRIuMAX>] %s  <ОБРІЗАНО>\n"
 
-#: src/readelf.c:5080
+#: src/readelf.c:5423
 #, c-format
 msgid "%s %#<PRIx64> used with different address sizes"
 msgstr "%s %#<PRIx64> використано з різними розмірами адрес"
 
-#: src/readelf.c:5087
+#: src/readelf.c:5430
 #, c-format
 msgid "%s %#<PRIx64> used with different offset sizes"
 msgstr "%s %#<PRIx64> використано з різними розмірами зміщень"
 
-#: src/readelf.c:5094
+#: src/readelf.c:5437
 #, c-format
 msgid "%s %#<PRIx64> used with different base addresses"
 msgstr "%s %#<PRIx64> використано з різними базовими адресами"
 
-#: src/readelf.c:5101
+#: src/readelf.c:5444
 #, c-format
 msgid "%s %#<PRIx64> used with different attribute %s and %s"
 msgstr "%s %#<PRIx64> використано з різними атрибутами, %s і %s"
 
-#: src/readelf.c:5201
+#: src/readelf.c:5544
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE IN REST OF SECTION>\n"
 msgstr " [%6tx]  <НЕВИКОРИСТОВУВАНІ ДАНІ У РЕШТІ РОЗДІЛУ>\n"
 
-#: src/readelf.c:5209
+#: src/readelf.c:5552
 #, c-format
 msgid " [%6tx]  <UNUSED GARBAGE> ... %<PRIu64> bytes ...\n"
 msgstr " [%6tx]  <НЕВИКОРИСТОВУВАНІ ДАНІ> ... %<PRIu64> байтів ...\n"
 
-#: src/readelf.c:5315
+#: src/readelf.c:5658
 #, c-format
 msgid ""
 "\n"
@@ -5371,7 +5370,7 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 " [ Код]\n"
 
-#: src/readelf.c:5323
+#: src/readelf.c:5666
 #, c-format
 msgid ""
 "\n"
@@ -5380,20 +5379,20 @@
 "\n"
 "Розділ скорочень за зміщенням %<PRIu64>:\n"
 
-#: src/readelf.c:5336
+#: src/readelf.c:5679
 #, c-format
 msgid " *** error while reading abbreviation: %s\n"
 msgstr " *** помилка під час читання скорочення: %s\n"
 
-#: src/readelf.c:5352
+#: src/readelf.c:5695
 #, c-format
 msgid " [%5u] offset: %<PRId64>, children: %s, tag: %s\n"
 msgstr " [%5u] зміщення: %<PRId64>, дочірній: %s, мітка: %s\n"
 
-#: src/readelf.c:5389 src/readelf.c:5682 src/readelf.c:5853 src/readelf.c:6224
-#: src/readelf.c:6850 src/readelf.c:8619 src/readelf.c:9361 src/readelf.c:9829
-#: src/readelf.c:10084 src/readelf.c:10246 src/readelf.c:10627
-#: src/readelf.c:10698
+#: src/readelf.c:5732 src/readelf.c:6025 src/readelf.c:6196 src/readelf.c:6567
+#: src/readelf.c:7193 src/readelf.c:8962 src/readelf.c:9704 src/readelf.c:10172
+#: src/readelf.c:10427 src/readelf.c:10589 src/readelf.c:10970
+#: src/readelf.c:11041
 #, c-format
 msgid ""
 "\n"
@@ -5402,49 +5401,49 @@
 "\n"
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 
-#: src/readelf.c:5492 src/readelf.c:5516 src/readelf.c:5889 src/readelf.c:9397
+#: src/readelf.c:5835 src/readelf.c:5859 src/readelf.c:6232 src/readelf.c:9740
 #, c-format
 msgid " Length:         %8<PRIu64>\n"
 msgstr " Довжина:        %8<PRIu64>\n"
 
-#: src/readelf.c:5494 src/readelf.c:5531 src/readelf.c:5902 src/readelf.c:9410
+#: src/readelf.c:5837 src/readelf.c:5874 src/readelf.c:6245 src/readelf.c:9753
 #, c-format
 msgid " DWARF version:  %8<PRIu16>\n"
 msgstr " версія DWARF:   %8<PRIu16>\n"
 
-#: src/readelf.c:5495 src/readelf.c:5540 src/readelf.c:5911 src/readelf.c:9419
+#: src/readelf.c:5838 src/readelf.c:5883 src/readelf.c:6254 src/readelf.c:9762
 #, c-format
 msgid " Address size:   %8<PRIu64>\n"
 msgstr " Розмір адреси:  %8<PRIu64>\n"
 
-#: src/readelf.c:5497 src/readelf.c:5550 src/readelf.c:5921 src/readelf.c:9429
+#: src/readelf.c:5840 src/readelf.c:5893 src/readelf.c:6264 src/readelf.c:9772
 #, c-format
 msgid " Segment size:   %8<PRIu64>\n"
 msgstr ""
 " Розмір сегмента: %8<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5535 src/readelf.c:5906 src/readelf.c:9414 src/readelf.c:10820
+#: src/readelf.c:5878 src/readelf.c:6249 src/readelf.c:9757 src/readelf.c:11163
 #, c-format
 msgid "Unknown version"
 msgstr "Невідома версія"
 
-#: src/readelf.c:5545 src/readelf.c:5752 src/readelf.c:5916 src/readelf.c:9424
+#: src/readelf.c:5888 src/readelf.c:6095 src/readelf.c:6259 src/readelf.c:9767
 #, c-format
 msgid "unsupported address size"
 msgstr "непідтримуваний розмір адреси"
 
-#: src/readelf.c:5556 src/readelf.c:5763 src/readelf.c:5926 src/readelf.c:9434
+#: src/readelf.c:5899 src/readelf.c:6106 src/readelf.c:6269 src/readelf.c:9777
 #, c-format
 msgid "unsupported segment size"
 msgstr "непідтримуваний розмір сегмента"
 
-#: src/readelf.c:5609
+#: src/readelf.c:5952
 #, c-format
 msgid "cannot get .debug_aranges content: %s"
 msgstr "не вдалося отримати дані get .debug_aranges: %s"
 
-#: src/readelf.c:5624
+#: src/readelf.c:5967
 #, c-format
 msgid ""
 "\n"
@@ -5462,12 +5461,12 @@
 "\n"
 "Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64> містить %zu записів:\n"
 
-#: src/readelf.c:5655
+#: src/readelf.c:5998
 #, c-format
 msgid " [%*zu] ???\n"
 msgstr " [%*zu] ???\n"
 
-#: src/readelf.c:5657
+#: src/readelf.c:6000
 #, c-format
 msgid ""
 " [%*zu] start: %0#*<PRIx64>, length: %5<PRIu64>, CU DIE offset: %6<PRId64>\n"
@@ -5475,7 +5474,7 @@
 " [%*zu] початок: %0#*<PRIx64>, довжина: %5<PRIu64>, зміщення CU DIE: "
 "%6<PRId64>\n"
 
-#: src/readelf.c:5695 src/readelf.c:8638
+#: src/readelf.c:6038 src/readelf.c:8981
 #, c-format
 msgid ""
 "\n"
@@ -5484,13 +5483,13 @@
 "\n"
 "Таблиця за зміщенням %zu:\n"
 
-#: src/readelf.c:5699 src/readelf.c:5870 src/readelf.c:6874 src/readelf.c:8649
-#: src/readelf.c:9378
+#: src/readelf.c:6042 src/readelf.c:6213 src/readelf.c:7217 src/readelf.c:8992
+#: src/readelf.c:9721
 #, c-format
 msgid "invalid data in section [%zu] '%s'"
 msgstr "некоректні дані у розділі [%zu] «%s»"
 
-#: src/readelf.c:5715
+#: src/readelf.c:6058
 #, c-format
 msgid ""
 "\n"
@@ -5499,27 +5498,27 @@
 "\n"
 " Довжина:       %6<PRIu64>\n"
 
-#: src/readelf.c:5727
+#: src/readelf.c:6070
 #, c-format
 msgid " DWARF version: %6<PRIuFAST16>\n"
 msgstr " версія DWARF:  %6<PRIuFAST16>\n"
 
-#: src/readelf.c:5731
+#: src/readelf.c:6074
 #, c-format
 msgid "unsupported aranges version"
 msgstr "непідтримувана версія aranges"
 
-#: src/readelf.c:5742
+#: src/readelf.c:6085
 #, c-format
 msgid " CU offset:     %6<PRIx64>\n"
 msgstr " зміщення CU:     %6<PRIx64>\n"
 
-#: src/readelf.c:5748
+#: src/readelf.c:6091
 #, c-format
 msgid " Address size:  %6<PRIu64>\n"
 msgstr " Розмір адреси:  %6<PRIu64>\n"
 
-#: src/readelf.c:5759
+#: src/readelf.c:6102
 #, c-format
 msgid ""
 " Segment size:  %6<PRIu64>\n"
@@ -5528,12 +5527,12 @@
 " Розмір сегмента:  %6<PRIu64>\n"
 "\n"
 
-#: src/readelf.c:5814
+#: src/readelf.c:6157
 #, c-format
 msgid "   %zu padding bytes\n"
 msgstr "   %zu байтів доповнення\n"
 
-#: src/readelf.c:5876 src/readelf.c:9384
+#: src/readelf.c:6219 src/readelf.c:9727
 #, c-format
 msgid ""
 "Table at Offset 0x%<PRIx64>:\n"
@@ -5542,42 +5541,42 @@
 "Таблиця за зміщенням 0x%<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:5931 src/readelf.c:9439
+#: src/readelf.c:6274 src/readelf.c:9782
 #, c-format
 msgid " Offset entries: %8<PRIu64>\n"
 msgstr " Записи зміщення: %8<PRIu64>\n"
 
-#: src/readelf.c:5947 src/readelf.c:9455
+#: src/readelf.c:6290 src/readelf.c:9798
 #, c-format
 msgid " Unknown CU base: "
 msgstr " Невідома основа CU: "
 
-#: src/readelf.c:5949 src/readelf.c:9457
+#: src/readelf.c:6292 src/readelf.c:9800
 #, c-format
 msgid " CU [%6<PRIx64>] base: "
 msgstr " Основа CU [%6<PRIx64>]: "
 
-#: src/readelf.c:5955 src/readelf.c:9463
+#: src/readelf.c:6298 src/readelf.c:9806
 #, c-format
 msgid " Not associated with a CU.\n"
 msgstr " Не пов'язано із CU.\n"
 
-#: src/readelf.c:5966 src/readelf.c:9474
+#: src/readelf.c:6309 src/readelf.c:9817
 #, c-format
 msgid "too many offset entries for unit length"
 msgstr "забагато записів зсуву для довжини модуля"
 
-#: src/readelf.c:5970 src/readelf.c:9478
+#: src/readelf.c:6313 src/readelf.c:9821
 #, c-format
 msgid "  Offsets starting at 0x%<PRIx64>:\n"
 msgstr "  Зміщення, що починаються з 0x%<PRIx64>:\n"
 
-#: src/readelf.c:6022
+#: src/readelf.c:6365
 #, c-format
 msgid "invalid range list data"
 msgstr "некоректні дані списку діапазонів"
 
-#: src/readelf.c:6207 src/readelf.c:9813
+#: src/readelf.c:6550 src/readelf.c:10156
 #, c-format
 msgid ""
 "   %zu padding bytes\n"
@@ -5586,7 +5585,7 @@
 "   %zu байтів доповнення\n"
 "\n"
 
-#: src/readelf.c:6255 src/readelf.c:9862
+#: src/readelf.c:6598 src/readelf.c:10205
 #, c-format
 msgid ""
 "\n"
@@ -5595,7 +5594,7 @@
 "\n"
 " Невідома основа CU: "
 
-#: src/readelf.c:6257 src/readelf.c:9864
+#: src/readelf.c:6600 src/readelf.c:10207
 #, c-format
 msgid ""
 "\n"
@@ -5604,31 +5603,31 @@
 "\n"
 " Основа CU [%6<PRIx64>]: "
 
-#: src/readelf.c:6266 src/readelf.c:9890 src/readelf.c:9916
+#: src/readelf.c:6609 src/readelf.c:10233 src/readelf.c:10259
 #, c-format
 msgid " [%6tx]  <INVALID DATA>\n"
 msgstr " [%6tx]  <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:6291 src/readelf.c:10000
+#: src/readelf.c:6634 src/readelf.c:10343
 #, fuzzy
 msgid "base address"
 msgstr " встановити адресу у значення "
 
-#: src/readelf.c:6301 src/readelf.c:10010
+#: src/readelf.c:6644 src/readelf.c:10353
 #, c-format
 msgid " [%6tx] empty list\n"
 msgstr " [%6tx] порожній список\n"
 
-#: src/readelf.c:6565
+#: src/readelf.c:6908
 msgid "         <INVALID DATA>\n"
 msgstr "         <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:6822
+#: src/readelf.c:7165
 #, c-format
 msgid "cannot get ELF: %s"
 msgstr "не вдалося отримати ELF: %s"
 
-#: src/readelf.c:6846
+#: src/readelf.c:7189
 #, c-format
 msgid ""
 "\n"
@@ -5637,7 +5636,7 @@
 "\n"
 "Розділ відомостей щодо вікна викликів [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
 
-#: src/readelf.c:6896
+#: src/readelf.c:7239
 #, c-format
 msgid ""
 "\n"
@@ -5646,65 +5645,65 @@
 "\n"
 " [%6tx] нульовий переривач\n"
 
-#: src/readelf.c:7000 src/readelf.c:7154
+#: src/readelf.c:7343 src/readelf.c:7497
 #, c-format
 msgid "invalid augmentation length"
 msgstr "некоректна довжина збільшення"
 
-#: src/readelf.c:7015
+#: src/readelf.c:7358
 msgid "FDE address encoding: "
 msgstr "Кодування адреси FDE: "
 
-#: src/readelf.c:7021
+#: src/readelf.c:7364
 msgid "LSDA pointer encoding: "
 msgstr "Кодування вказівника LSDA: "
 
-#: src/readelf.c:7131
+#: src/readelf.c:7474
 #, c-format
 msgid " (offset: %#<PRIx64>)"
 msgstr " (зміщення: %#<PRIx64>)"
 
-#: src/readelf.c:7138
+#: src/readelf.c:7481
 #, c-format
 msgid " (end offset: %#<PRIx64>)"
 msgstr " (зміщення від кінця: %#<PRIx64>)"
 
-#: src/readelf.c:7175
+#: src/readelf.c:7518
 #, c-format
 msgid "   %-26sLSDA pointer: %#<PRIx64>\n"
 msgstr "   %-26sвказівник LSDA: %#<PRIx64>\n"
 
-#: src/readelf.c:7260
+#: src/readelf.c:7603
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute code: %s"
 msgstr "DIE [%<PRIx64>] не вдалося отримати код атрибута: %s"
 
-#: src/readelf.c:7270
+#: src/readelf.c:7613
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute form: %s"
 msgstr "DIE [%<PRIx64>] не вдалося отримати форму атрибута: %s"
 
-#: src/readelf.c:7292
+#: src/readelf.c:7635
 #, c-format
 msgid "DIE [%<PRIx64>] cannot get attribute '%s' (%s) value: %s"
 msgstr "DIE [%<PRIx64>] не вдалося отримати значення атрибута «%s» (%s): %s"
 
-#: src/readelf.c:7622
+#: src/readelf.c:7965
 #, c-format
 msgid "invalid file (%<PRId64>): %s"
 msgstr "некоректний файл (%<PRId64>): %s"
 
-#: src/readelf.c:7626
+#: src/readelf.c:7969
 #, c-format
 msgid "no srcfiles for CU [%<PRIx64>]"
 msgstr "немає srcfiles для CU [%<PRIx64>]"
 
-#: src/readelf.c:7630
+#: src/readelf.c:7973
 #, c-format
 msgid "couldn't get DWARF CU: %s"
 msgstr "не вдалося отримати CU DWARF: %s"
 
-#: src/readelf.c:7952
+#: src/readelf.c:8295
 #, c-format
 msgid ""
 "\n"
@@ -5715,12 +5714,12 @@
 "Розділ DWARF [%2zu] «%s» за зміщенням %#<PRIx64>:\n"
 " [Зміщення]\n"
 
-#: src/readelf.c:8002
+#: src/readelf.c:8345
 #, c-format
 msgid "cannot get next unit: %s"
 msgstr "не вдалося отримати наступний модуль: %s"
 
-#: src/readelf.c:8022
+#: src/readelf.c:8365
 #, c-format
 msgid ""
 " Type unit at offset %<PRIu64>:\n"
@@ -5733,7 +5732,7 @@
 "%<PRIu8>, Розмір зміщення: %<PRIu8>\n"
 " Підпис типу: %#<PRIx64>, Зміщення типу: %#<PRIx64> [%<PRIx64>]\n"
 
-#: src/readelf.c:8034
+#: src/readelf.c:8377
 #, c-format
 msgid ""
 " Compilation unit at offset %<PRIu64>:\n"
@@ -5744,38 +5743,38 @@
 " Версія: %<PRIu16>, Зміщення розділу скорочень: %<PRIu64>, Адреса: %<PRIu8>, "
 "Зміщення: %<PRIu8>\n"
 
-#: src/readelf.c:8044 src/readelf.c:8205
+#: src/readelf.c:8387 src/readelf.c:8548
 #, c-format
 msgid " Unit type: %s (%<PRIu8>)"
 msgstr " Тип модуля: %s (%<PRIu8>)"
 
-#: src/readelf.c:8071
+#: src/readelf.c:8414
 #, c-format
 msgid "unknown version (%d) or unit type (%d)"
 msgstr "невідома версія (%d) або тип модуля (%d)"
 
-#: src/readelf.c:8100
+#: src/readelf.c:8443
 #, c-format
 msgid "cannot get DIE offset: %s"
 msgstr "не вдалося отримати зміщення DIE: %s"
 
-#: src/readelf.c:8109
+#: src/readelf.c:8452
 #, c-format
 msgid "cannot get tag of DIE at offset [%<PRIx64>] in section '%s': %s"
 msgstr ""
 "не вдалося отримати мітку DIE за зміщенням [%<PRIu64>] у розділі «%s»: %s"
 
-#: src/readelf.c:8145
+#: src/readelf.c:8488
 #, c-format
 msgid "cannot get next DIE: %s\n"
 msgstr "не вдалося визначити наступний DIE: %s\n"
 
-#: src/readelf.c:8153
+#: src/readelf.c:8496
 #, c-format
 msgid "cannot get next DIE: %s"
 msgstr "не вдалося визначити наступний DIE: %s"
 
-#: src/readelf.c:8197
+#: src/readelf.c:8540
 #, c-format
 msgid ""
 " Split compilation unit at offset %<PRIu64>:\n"
@@ -5786,7 +5785,7 @@
 " Версія: %<PRIu16>, Зміщення розділу скорочень: %<PRIu64>, Адреса: %<PRIu8>, "
 "Зміщення: %<PRIu8>\n"
 
-#: src/readelf.c:8249
+#: src/readelf.c:8592
 #, c-format
 msgid ""
 "\n"
@@ -5797,13 +5796,13 @@
 "Розділ DWARF [%2zu] «%s» зі зміщенням %#<PRIx64>:\n"
 "\n"
 
-#: src/readelf.c:8581
+#: src/readelf.c:8924
 #, c-format
 msgid "unknown form: %s"
 msgstr "невідома форма: %s"
 
 #. Print what we got so far.
-#: src/readelf.c:8729
+#: src/readelf.c:9072
 #, c-format
 msgid ""
 "\n"
@@ -5836,27 +5835,27 @@
 "\n"
 "Коди операцій:\n"
 
-#: src/readelf.c:8751
+#: src/readelf.c:9094
 #, c-format
 msgid "cannot handle .debug_line version: %u\n"
 msgstr "не вдалося обробити версію .debug_line: %u\n"
 
-#: src/readelf.c:8759
+#: src/readelf.c:9102
 #, c-format
 msgid "cannot handle address size: %u\n"
 msgstr "не вдалося обробити розмір адреси: %u\n"
 
-#: src/readelf.c:8767
+#: src/readelf.c:9110
 #, c-format
 msgid "cannot handle segment selector size: %u\n"
 msgstr "не вдалося обробити розмір селектора сегментів: %u\n"
 
-#: src/readelf.c:8777
+#: src/readelf.c:9120
 #, c-format
 msgid "invalid data at offset %tu in section [%zu] '%s'"
 msgstr "некоректні дані зі зміщенням %tu у розділі [%zu] «%s»"
 
-#: src/readelf.c:8792
+#: src/readelf.c:9135
 #, c-format
 msgid "  [%*<PRIuFAST8>]  %hhu argument\n"
 msgid_plural "  [%*<PRIuFAST8>]  %hhu arguments\n"
@@ -5864,7 +5863,7 @@
 msgstr[1] "  [%*<PRIuFAST8>]  %hhu аргументи\n"
 msgstr[2] "  [%*<PRIuFAST8>]  %hhu аргументів\n"
 
-#: src/readelf.c:8803
+#: src/readelf.c:9146
 msgid ""
 "\n"
 "Directory table:"
@@ -5872,12 +5871,12 @@
 "\n"
 "Таблиця каталогу:"
 
-#: src/readelf.c:8809 src/readelf.c:8886
+#: src/readelf.c:9152 src/readelf.c:9229
 #, c-format
 msgid "      ["
 msgstr "      ["
 
-#: src/readelf.c:8880
+#: src/readelf.c:9223
 msgid ""
 "\n"
 "File name table:"
@@ -5885,11 +5884,11 @@
 "\n"
 " Таблиця назв файлів:"
 
-#: src/readelf.c:8941
+#: src/readelf.c:9284
 msgid " Entry Dir   Time      Size      Name"
 msgstr " Запис Кат   Час       Розмір    Назва"
 
-#: src/readelf.c:8987
+#: src/readelf.c:9330
 #, fuzzy
 msgid ""
 "\n"
@@ -5898,7 +5897,7 @@
 "\n"
 "Оператори номерів рядків:"
 
-#: src/readelf.c:8991
+#: src/readelf.c:9334
 msgid ""
 "\n"
 "Line number statements:"
@@ -5906,129 +5905,129 @@
 "\n"
 "Оператори номерів рядків:"
 
-#: src/readelf.c:9006
+#: src/readelf.c:9349
 #, c-format
 msgid "invalid maximum operations per instruction is zero"
 msgstr "некоректну кількість операцій на інструкцію прирівняно до нуля"
 
-#: src/readelf.c:9040
+#: src/readelf.c:9383
 #, c-format
 msgid " special opcode %u: address+%u = "
 msgstr " спеціальний код операції %u: адреса+%u = "
 
-#: src/readelf.c:9044
+#: src/readelf.c:9387
 #, c-format
 msgid ", op_index = %u, line%+d = %zu\n"
 msgstr ", індекс_оп = %u, рядок%+d = %zu\n"
 
-#: src/readelf.c:9047
+#: src/readelf.c:9390
 #, c-format
 msgid ", line%+d = %zu\n"
 msgstr ", рядок%+d = %zu\n"
 
-#: src/readelf.c:9065
+#: src/readelf.c:9408
 #, c-format
 msgid " extended opcode %u: "
 msgstr " розширений код операції %u: "
 
-#: src/readelf.c:9070
+#: src/readelf.c:9413
 msgid " end of sequence"
 msgstr " кінець послідовності"
 
-#: src/readelf.c:9088
+#: src/readelf.c:9431
 #, c-format
 msgid " set address to "
 msgstr " встановити адресу у значення "
 
-#: src/readelf.c:9116
+#: src/readelf.c:9459
 #, 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:9130
+#: src/readelf.c:9473
 #, c-format
 msgid " set discriminator to %u\n"
 msgstr " встановити розрізнення для %u\n"
 
-#: src/readelf.c:9157
+#: src/readelf.c:9500
 #, c-format
 msgid " set inlined context %u, function name %s (0x%x)\n"
 msgstr ""
 
-#: src/readelf.c:9181
+#: src/readelf.c:9524
 #, fuzzy, c-format
 #| msgid "Also show function names"
 msgid " set function name %s (0x%x)\n"
 msgstr "Показувати також назви функцій"
 
 #. Unknown, ignore it.
-#: src/readelf.c:9188
+#: src/readelf.c:9531
 msgid " unknown opcode"
 msgstr " невідомий код операції"
 
 #. Takes no argument.
-#: src/readelf.c:9200
+#: src/readelf.c:9543
 msgid " copy"
 msgstr " копія"
 
-#: src/readelf.c:9211
+#: src/readelf.c:9554
 #, c-format
 msgid " advance address by %u to "
 msgstr " збільшення адреси на %u до "
 
-#: src/readelf.c:9215 src/readelf.c:9276
+#: src/readelf.c:9558 src/readelf.c:9619
 #, c-format
 msgid ", op_index to %u"
 msgstr ", op_index до %u"
 
-#: src/readelf.c:9227
+#: src/readelf.c:9570
 #, c-format
 msgid " advance line by constant %d to %<PRId64>\n"
 msgstr " просувати рядок на сталу %d до %<PRId64>\n"
 
-#: src/readelf.c:9237
+#: src/readelf.c:9580
 #, c-format
 msgid " set file to %<PRIu64>\n"
 msgstr " встановити файл у %<PRIu64>\n"
 
-#: src/readelf.c:9248
+#: src/readelf.c:9591
 #, c-format
 msgid " set column to %<PRIu64>\n"
 msgstr " встановити значення стовпчика %<PRIu64>\n"
 
-#: src/readelf.c:9255
+#: src/readelf.c:9598
 #, c-format
 msgid " set '%s' to %<PRIuFAST8>\n"
 msgstr " встановити «%s» у %<PRIuFAST8>\n"
 
 #. Takes no argument.
-#: src/readelf.c:9261
+#: src/readelf.c:9604
 msgid " set basic block flag"
 msgstr " встановити прапорець базового блоку"
 
-#: src/readelf.c:9272
+#: src/readelf.c:9615
 #, c-format
 msgid " advance address by constant %u to "
 msgstr " збільшити адресу на сталу величину %u до "
 
-#: src/readelf.c:9292
+#: src/readelf.c:9635
 #, c-format
 msgid " advance address by fixed value %u to \n"
 msgstr " збільшити адресу на фіксовану величину %u до \n"
 
 #. Takes no argument.
-#: src/readelf.c:9302
+#: src/readelf.c:9645
 msgid " set prologue end flag"
 msgstr " встановити прапорець кінця вступу"
 
 #. Takes no argument.
-#: src/readelf.c:9307
+#: src/readelf.c:9650
 msgid " set epilogue begin flag"
 msgstr " встановити прапорець початку епілогу"
 
-#: src/readelf.c:9317
+#: src/readelf.c:9660
 #, c-format
 msgid " set isa to %u\n"
 msgstr " встановити isa у %u\n"
@@ -6036,7 +6035,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:9326
+#: src/readelf.c:9669
 #, c-format
 msgid " unknown opcode with %<PRIu8> parameter:"
 msgid_plural " unknown opcode with %<PRIu8> parameters:"
@@ -6044,87 +6043,87 @@
 msgstr[1] " невідомий код операції з %<PRIu8> параметрами:"
 msgstr[2] " невідомий код операції з %<PRIu8> параметрами:"
 
-#: src/readelf.c:9527
+#: src/readelf.c:9870
 #, fuzzy, c-format
 msgid "    <INVALID DATA>\n"
 msgstr "   <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:9567
+#: src/readelf.c:9910
 #, c-format
 msgid "invalid loclists data"
 msgstr "некоректні дані loclists"
 
-#: src/readelf.c:10037 src/readelf.c:11082
+#: src/readelf.c:10380 src/readelf.c:11425
 msgid "   <INVALID DATA>\n"
 msgstr "   <НЕКОРЕКТНІ ДАНІ>\n"
 
-#: src/readelf.c:10168
+#: src/readelf.c:10511
 #, c-format
 msgid "%*s*** non-terminated string at end of section"
 msgstr "%*s*** незавершений рядок наприкінці розділу"
 
-#: src/readelf.c:10191
+#: src/readelf.c:10534
 #, c-format
 msgid "%*s*** missing DW_MACINFO_start_file argument at end of section"
 msgstr "%*s*** пропущено аргумент DW_MACINFO_start_file наприкінці розділу"
 
-#: src/readelf.c:10286
+#: src/readelf.c:10629
 #, c-format
 msgid " Offset:             0x%<PRIx64>\n"
 msgstr " Зміщення:           0x%<PRIx64>\n"
 
-#: src/readelf.c:10298
+#: src/readelf.c:10641
 #, c-format
 msgid " Version:            %<PRIu16>\n"
 msgstr " Версія:             %<PRIu16>\n"
 
-#: src/readelf.c:10304 src/readelf.c:11202
+#: src/readelf.c:10647 src/readelf.c:11546
 #, c-format
 msgid "  unknown version, cannot parse section\n"
 msgstr "  невідома версія, не вдалося обробити розділ\n"
 
-#: src/readelf.c:10311
+#: src/readelf.c:10654
 #, c-format
 msgid " Flag:               0x%<PRIx8>"
 msgstr " Прапорець:          0x%<PRIx8>"
 
-#: src/readelf.c:10340
+#: src/readelf.c:10683
 #, c-format
 msgid " Offset length:      %<PRIu8>\n"
 msgstr " Довжина зміщення:   %<PRIu8>\n"
 
-#: src/readelf.c:10348
+#: src/readelf.c:10691
 #, c-format
 msgid " .debug_line offset: 0x%<PRIx64>\n"
 msgstr " зміщення .debug_line: 0x%<PRIx64>\n"
 
-#: src/readelf.c:10373
+#: src/readelf.c:10716
 #, c-format
 msgid "  extension opcode table, %<PRIu8> items:\n"
 msgstr "  таблиця кодів операцій розширень, записів — %<PRIu8>:\n"
 
-#: src/readelf.c:10380
+#: src/readelf.c:10723
 #, c-format
 msgid "    [%<PRIx8>]"
 msgstr "    [%<PRIx8>]"
 
-#: src/readelf.c:10392
+#: src/readelf.c:10735
 #, c-format
 msgid " %<PRIu8> arguments:"
 msgstr " %<PRIu8> аргументів:"
 
-#: src/readelf.c:10407
+#: src/readelf.c:10750
 #, c-format
 msgid " no arguments."
 msgstr " немає аргументів."
 
-#: src/readelf.c:10608
+#: src/readelf.c:10951
 #, 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:10663
+#: src/readelf.c:11006
 #, c-format
 msgid ""
 "\n"
@@ -6136,37 +6135,37 @@
 " %*s  Рядок\n"
 
 #. TRANS: the debugstr| prefix makes the string unique.
-#: src/readelf.c:10668
+#: src/readelf.c:11011
 msgctxt "debugstr"
 msgid "Offset"
 msgstr ""
 
-#: src/readelf.c:10678
+#: src/readelf.c:11021
 #, c-format
 msgid " *** error, missing string terminator\n"
 msgstr " *** помилка, пропущено роздільник рядків\n"
 
-#: src/readelf.c:10800
+#: src/readelf.c:11143
 #, c-format
 msgid " Length:        %8<PRIu64>\n"
 msgstr " Довжина:       %8<PRIu64>\n"
 
-#: src/readelf.c:10802
+#: src/readelf.c:11145
 #, c-format
 msgid " Offset size:   %8<PRIu8>\n"
 msgstr " Розмір зсуву:   %8<PRIu8>\n"
 
-#: src/readelf.c:10816
+#: src/readelf.c:11159
 #, c-format
 msgid " DWARF version: %8<PRIu16>\n"
 msgstr " версія DWARF:  %8<PRIu16>\n"
 
-#: src/readelf.c:10825
+#: src/readelf.c:11168
 #, c-format
 msgid " Padding:       %8<PRIx16>\n"
 msgstr " Заповнення:     %8<PRIx16>\n"
 
-#: src/readelf.c:10879
+#: src/readelf.c:11222
 #, c-format
 msgid ""
 "\n"
@@ -6175,7 +6174,7 @@
 "\n"
 "Розділ таблиці пошуку вікон виклику [%2zu] '.eh_frame_hdr':\n"
 
-#: src/readelf.c:10981
+#: src/readelf.c:11324
 #, c-format
 msgid ""
 "\n"
@@ -6184,22 +6183,22 @@
 "\n"
 "Розділ таблиці обробки виключень [%2zu] '.gcc_except_table':\n"
 
-#: src/readelf.c:11004
+#: src/readelf.c:11347
 #, c-format
 msgid " LPStart encoding:    %#x "
 msgstr " Кодування LPStart:   %#x "
 
-#: src/readelf.c:11016
+#: src/readelf.c:11359
 #, c-format
 msgid " TType encoding:      %#x "
 msgstr " Кодування TType:     %#x "
 
-#: src/readelf.c:11033
+#: src/readelf.c:11376
 #, c-format
 msgid " Call site encoding:  %#x "
 msgstr " Кодування місця виклику:%#x "
 
-#: src/readelf.c:11048
+#: src/readelf.c:11391
 msgid ""
 "\n"
 " Call site table:"
@@ -6207,7 +6206,7 @@
 "\n"
 " Таблиця місця виклику:"
 
-#: src/readelf.c:11064
+#: src/readelf.c:11407
 #, c-format
 msgid ""
 " [%4u] Call site start:   %#<PRIx64>\n"
@@ -6220,12 +6219,12 @@
 "        Місце застосування:   %#<PRIx64>\n"
 "        Дія:                  %u\n"
 
-#: src/readelf.c:11137
+#: src/readelf.c:11480
 #, c-format
 msgid "invalid TType encoding"
 msgstr "некоректне кодування TType"
 
-#: src/readelf.c:11164
+#: src/readelf.c:11507
 #, c-format
 msgid ""
 "\n"
@@ -6234,37 +6233,43 @@
 "\n"
 "Розділ GDB [%2zu] «%s» за зміщенням %#<PRIx64> містить %<PRId64> байтів:\n"
 
-#: src/readelf.c:11193
+#: src/readelf.c:11536
 #, c-format
 msgid " Version:         %<PRId32>\n"
 msgstr " Версія:          %<PRId32>\n"
 
-#: src/readelf.c:11211
+#: src/readelf.c:11555
 #, c-format
 msgid " CU offset:       %#<PRIx32>\n"
 msgstr " зміщення CU:     %#<PRIx32>\n"
 
-#: src/readelf.c:11218
+#: src/readelf.c:11562
 #, c-format
 msgid " TU offset:       %#<PRIx32>\n"
 msgstr " зміщення TU:      %#<PRIx32>\n"
 
-#: src/readelf.c:11225
+#: src/readelf.c:11569
 #, c-format
 msgid " address offset:  %#<PRIx32>\n"
 msgstr " зміщення адреси: %#<PRIx32>\n"
 
-#: src/readelf.c:11232
+#: src/readelf.c:11576
 #, c-format
 msgid " symbol offset:   %#<PRIx32>\n"
 msgstr " зміщення символу: %#<PRIx32>\n"
 
-#: src/readelf.c:11239
+#: src/readelf.c:11586
+#, fuzzy, c-format
+#| msgid " constant offset: %#<PRIx32>\n"
+msgid " shortcut offset: %#<PRIx32>\n"
+msgstr " стале зміщення:  %#<PRIx32>\n"
+
+#: src/readelf.c:11594
 #, c-format
 msgid " constant offset: %#<PRIx32>\n"
 msgstr " стале зміщення:  %#<PRIx32>\n"
 
-#: src/readelf.c:11253
+#: src/readelf.c:11608
 #, c-format
 msgid ""
 "\n"
@@ -6273,7 +6278,7 @@
 "\n"
 " Список CU зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:11278
+#: src/readelf.c:11633
 #, c-format
 msgid ""
 "\n"
@@ -6282,7 +6287,7 @@
 "\n"
 " Список TU зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:11307
+#: src/readelf.c:11662
 #, c-format
 msgid ""
 "\n"
@@ -6291,7 +6296,7 @@
 "\n"
 " Список адрес зі зміщенням %#<PRIx32> містить %zu записів:\n"
 
-#: src/readelf.c:11339
+#: src/readelf.c:11705
 #, c-format
 msgid ""
 "\n"
@@ -6300,18 +6305,40 @@
 "\n"
 " Таблиця символів за зміщенням %#<PRIx32> містить %zu позицій:\n"
 
-#: src/readelf.c:11477
+#: src/readelf.c:11790
+#, fuzzy, c-format
+#| msgid ""
+#| "\n"
+#| " Symbol table at offset %#<PRIx32> contains %zu slots:\n"
+msgid ""
+"\n"
+"Shortcut table at offset %#<PRIx32> contains %zu slots:\n"
+msgstr ""
+"\n"
+" Таблиця символів за зміщенням %#<PRIx32> містить %zu позицій:\n"
+
+#: src/readelf.c:11802
+#, c-format
+msgid "Language of main: %s\n"
+msgstr ""
+
+#: src/readelf.c:11803
+#, c-format
+msgid "Name of main: "
+msgstr ""
+
+#: src/readelf.c:11886
 #, c-format
 msgid "cannot get debug context descriptor: %s"
 msgstr "не вдалося отримати дескриптор контексту зневаджування: %s"
 
-#: src/readelf.c:11843 src/readelf.c:12463 src/readelf.c:12573
-#: src/readelf.c:12630
+#: src/readelf.c:12252 src/readelf.c:12872 src/readelf.c:12982
+#: src/readelf.c:13039
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "не вдалося перетворити дані запису ядра: %s"
 
-#: src/readelf.c:12207
+#: src/readelf.c:12616
 #, c-format
 msgid ""
 "\n"
@@ -6320,21 +6347,21 @@
 "\n"
 "%*s... <повторюється %u разів> ..."
 
-#: src/readelf.c:12709
+#: src/readelf.c:13118
 msgid "  Owner          Data size  Type\n"
 msgstr "  Власник        Розм. даних Тип\n"
 
-#: src/readelf.c:12737
+#: src/readelf.c:13146
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12789
+#: src/readelf.c:13198
 #, c-format
 msgid "cannot get content of note: %s"
 msgstr "не вдалося отримати вміст нотатки: %s"
 
-#: src/readelf.c:12822
+#: src/readelf.c:13231
 #, c-format
 msgid ""
 "\n"
@@ -6344,7 +6371,7 @@
 "Розділ записів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12845
+#: src/readelf.c:13254
 #, c-format
 msgid ""
 "\n"
@@ -6353,7 +6380,7 @@
 "\n"
 "Сегмент записів з %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12892
+#: src/readelf.c:13301
 #, c-format
 msgid ""
 "\n"
@@ -6362,12 +6389,12 @@
 "\n"
 "У розділі [%zu] «%s» не міститься даних для створення дампу.\n"
 
-#: src/readelf.c:12919 src/readelf.c:12970
+#: src/readelf.c:13328 src/readelf.c:13379
 #, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "не вдалося отримати дані для розділу [%zu] «%s»: %s"
 
-#: src/readelf.c:12924
+#: src/readelf.c:13333
 #, c-format
 msgid ""
 "\n"
@@ -6376,7 +6403,7 @@
 "\n"
 "Шіст. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12929
+#: src/readelf.c:13338
 #, c-format
 msgid ""
 "\n"
@@ -6387,7 +6414,7 @@
 "Шіст. дамп розділу [%zu] «%s», %<PRIu64> байтів (%zd нестиснено) за "
 "зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12943
+#: src/readelf.c:13352
 #, c-format
 msgid ""
 "\n"
@@ -6396,7 +6423,7 @@
 "\n"
 "У розділі [%zu] «%s» не міститься рядків для створення дампу.\n"
 
-#: src/readelf.c:12975
+#: src/readelf.c:13384
 #, c-format
 msgid ""
 "\n"
@@ -6405,7 +6432,7 @@
 "\n"
 "Розділ рядків [%zu] «%s» містить %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12980
+#: src/readelf.c:13389
 #, c-format
 msgid ""
 "\n"
@@ -6416,7 +6443,7 @@
 "Рядок розділу [%zu] «%s» містить %<PRIu64> байти (%zd нестиснено) на "
 "зміщенні %#0<PRIx64>:\n"
 
-#: src/readelf.c:13028
+#: src/readelf.c:13437
 #, c-format
 msgid ""
 "\n"
@@ -6425,7 +6452,7 @@
 "\n"
 "розділу [%lu] не існує"
 
-#: src/readelf.c:13058
+#: src/readelf.c:13467
 #, c-format
 msgid ""
 "\n"
@@ -6434,12 +6461,12 @@
 "\n"
 "розділу «%s» не існує"
 
-#: src/readelf.c:13113
+#: src/readelf.c:13522
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "не вдалося отримати покажчик символів архіву «%s»: %s"
 
-#: src/readelf.c:13116
+#: src/readelf.c:13525
 #, c-format
 msgid ""
 "\n"
@@ -6448,7 +6475,7 @@
 "\n"
 "У архіві «%s» немає покажчика символів\n"
 
-#: src/readelf.c:13120
+#: src/readelf.c:13529
 #, c-format
 msgid ""
 "\n"
@@ -6457,12 +6484,12 @@
 "\n"
 "Покажчик архіву «%s» містить %zu записів:\n"
 
-#: src/readelf.c:13138
+#: src/readelf.c:13547
 #, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "не вдалося видобути елемент за зміщенням %zu у «%s»: %s"
 
-#: src/readelf.c:13143
+#: src/readelf.c:13552
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Елемент архіву «%s» містить:\n"
@@ -6979,7 +7006,7 @@
 msgid "%s: error while getting shdrstrndx: %s"
 msgstr "%s: помилка під час отримання shdrstrndx: %s"
 
-#: src/strip.c:1712 src/strip.c:2553
+#: src/strip.c:1712 src/strip.c:2552
 #, c-format
 msgid "%s: error updating shdrstrndx: %s"
 msgstr "%s: помилка під час оновлення shdrstrndx: %s"
@@ -7014,7 +7041,7 @@
 msgstr ""
 "Неможливо вилучити символ [%zd] з розміщеної у пам'яті таблиці символів [%zd]"
 
-#: src/strip.c:2469 src/strip.c:2577
+#: src/strip.c:2469 src/strip.c:2574
 #, c-format
 msgid "while writing '%s': %s"
 msgstr "під час запису «%s»: %s"
@@ -7034,22 +7061,22 @@
 msgid "%s: error while creating ELF header: %s"
 msgstr "%s: помилка під час створення заголовка ELF: %s"
 
-#: src/strip.c:2562
+#: src/strip.c:2560
 #, c-format
 msgid "%s: error while reading the file: %s"
 msgstr "%s: помилка під час читання файла: %s"
 
-#: src/strip.c:2602 src/strip.c:2622
+#: src/strip.c:2599 src/strip.c:2619
 #, c-format
 msgid "while writing '%s'"
 msgstr "під час спроби запису «%s»"
 
-#: src/strip.c:2659 src/strip.c:2666
+#: src/strip.c:2656 src/strip.c:2663
 #, c-format
 msgid "error while finishing '%s': %s"
 msgstr "помилка під час завершення «%s»: %s"
 
-#: src/strip.c:2683 src/strip.c:2759
+#: src/strip.c:2680 src/strip.c:2756
 #, c-format
 msgid "cannot set access and modification date of '%s'"
 msgstr "не вдалося встановити права доступу та дату зміни «%s»"
@@ -7542,7 +7569,7 @@
 "section PATH SECTION-NAME\n"
 msgstr ""
 
-#: tests/backtrace.c:483
+#: tests/backtrace.c:491
 msgid "Run executable"
 msgstr "Запустити виконуваний файл"
 
@@ -7555,6 +7582,11 @@
 msgstr "Вивести екземпляри вбудованих функцій"
 
 #, c-format
+#~ msgid "section [%2d] '%s': section entry size does not match ElfXX_Rela\n"
+#~ msgstr ""
+#~ "розділ [%2d] «%s»: розмірність запису розділу не відповідає ElfXX_Rela\n"
+
+#, c-format
 #~ msgid "cannot get .debug_addr section data: %s"
 #~ msgstr "не вдалося отримати дані розділу .debug_addr: %s"
 
diff --git a/src/.gitignore b/src/.gitignore
index f7252a4..83d43a2 100644
--- a/src/.gitignore
+++ b/src/.gitignore
@@ -11,6 +11,7 @@
 /ranlib
 /readelf
 /size
+/srcfiles
 /stack
 /strings
 /strip
diff --git a/src/ChangeLog b/src/ChangeLog
index c26dafd..ae62f4e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,19 @@
+2023-03-27  Di Chen  <dichen@redhat.com>
+
+	* readelf.c (options): Support dynamic symtab print with '-Ds'.
+	(process_symtab): New function.
+	(handle_dynamic_symtab): Likewise.
+	(handle_symtab): Return true if symtab was printed. Move printing
+	code to process_symtab and call that function.
+	(print_symtab): Call handle_dynamic_symtab for SHT_DYNSYM when
+	using dynamic segment.
+	(enum dyn_idx): Include i_symtab_shndx, i_verneednum and
+	i_verdefnum.
+	(process_elf_file): Only call print_symtab for SHT_SYMTAB when not
+	use_dynamic_segment.
+	(get_dynscn_addrs): Handle DT_VERDEFNUM, DT_VERNEEDNUM and
+	DT_SYMTAB_SHNDX.
+
 2023-03-03  Mark Wielaard  <mark@klomp.org>
 
 	* readelf (process_elf_file): ebl_closebackend only after
diff --git a/src/Makefile.am b/src/Makefile.am
index 6cc019d..d3d9d40 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -27,7 +27,7 @@
 
 bin_PROGRAMS = readelf nm size strip elflint findtextrel addr2line \
 	       elfcmp objdump ranlib strings ar unstrip stack elfcompress \
-	       elfclassify
+	       elfclassify srcfiles
 
 noinst_LIBRARIES = libar.a
 
@@ -42,7 +42,7 @@
 if BUILD_STATIC
 libasm = ../libasm/libasm.a
 libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) -ldl -lpthread
-libelf = ../libelf/libelf.a -lz
+libelf = ../libelf/libelf.a -lz $(zstd_LIBS)
 else
 libasm = ../libasm/libasm.so
 libdw = ../libdw/libdw.so
@@ -84,6 +84,8 @@
 stack_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD) $(demanglelib)
 elfcompress_LDADD = $(libebl) $(libelf) $(libdw) $(libeu) $(argp_LDADD)
 elfclassify_LDADD = $(libelf) $(libdw) $(libeu) $(argp_LDADD)
+srcfiles_SOURCES = srcfiles.cxx
+srcfiles_LDADD = $(libdw) $(libelf) $(libeu)  $(argp_LDADD)
 
 installcheck-binPROGRAMS: $(bin_PROGRAMS)
 	bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
diff --git a/src/elfcompress.c b/src/elfcompress.c
index 18ade66..f771b92 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -529,30 +529,33 @@
 		  }
 	    }
 
-	  if (shdr->sh_type != SHT_NOBITS
-	      && (shdr->sh_flags & SHF_ALLOC) == 0)
+	  if (force || type != schtype)
 	    {
-	      set_section (sections, ndx);
-	      /* Check if we might want to change this section name.  */
-	      if (! adjust_names
-		  && ((type != ZLIB_GNU
-		       && startswith (sname, ".zdebug"))
-		      || (type == ZLIB_GNU
-			  && startswith (sname, ".debug"))))
-		adjust_names = true;
-
-	      /* We need a buffer this large if we change the names.  */
-	      if (adjust_names)
+	      if (shdr->sh_type != SHT_NOBITS
+		  && (shdr->sh_flags & SHF_ALLOC) == 0)
 		{
-		  size_t slen = strlen (sname);
-		  if (slen > maxnamelen)
-		    maxnamelen = slen;
+		  set_section (sections, ndx);
+		  /* Check if we might want to change this section name.  */
+		  if (! adjust_names
+		      && ((type != ZLIB_GNU
+			   && startswith (sname, ".zdebug"))
+			  || (type == ZLIB_GNU
+			      && startswith (sname, ".debug"))))
+		    adjust_names = true;
+
+		  /* We need a buffer this large if we change the names.  */
+		  if (adjust_names)
+		    {
+		      size_t slen = strlen (sname);
+		      if (slen > maxnamelen)
+			maxnamelen = slen;
+		    }
 		}
+	      else
+		if (verbose >= 0)
+		  printf ("[%zd] %s ignoring %s section\n", ndx, sname,
+			  (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated"));
 	    }
-	  else
-	    if (verbose >= 0)
-	      printf ("[%zd] %s ignoring %s section\n", ndx, sname,
-		      (shdr->sh_type == SHT_NOBITS ? "no bits" : "allocated"));
 	}
 
       if (shdr->sh_type == SHT_SYMTAB)
diff --git a/src/elflint.c b/src/elflint.c
index dd42dcb..864de71 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -1,5 +1,6 @@
 /* Pedantic checking of ELF files compliance with gABI/psABI spec.
    Copyright (C) 2001-2015, 2017, 2018 Red Hat, Inc.
+   Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2001.
 
@@ -1291,10 +1292,20 @@
 
   size_t sh_entsize = gelf_fsize (ebl->elf, reltype, 1, EV_CURRENT);
   if (shdr->sh_entsize != sh_entsize)
-    ERROR (_(reltype == ELF_T_RELA ? "\
-section [%2d] '%s': section entry size does not match ElfXX_Rela\n" : "\
-section [%2d] '%s': section entry size does not match ElfXX_Rel\n"),
-	   idx, section_name (ebl, idx));
+    {
+      if (reltype == ELF_T_RELA)
+	ERROR ("\
+section [%2d] '%s': section entry size does not match ElfXX_Rela\n",
+	       idx, section_name (ebl, idx));
+      else if (reltype == ELF_T_REL)
+	ERROR ("\
+section [%2d] '%s': section entry size does not match ElfXX_Rel\n",
+	       idx, section_name (ebl, idx));
+      else
+	ERROR ("\
+section [%2d] '%s': section entry size does not match ElfXX_Relr\n",
+	       idx, section_name (ebl, idx));
+    }
 
   /* In preparation of checking whether relocations are text
      relocations or not we need to determine whether the file is
@@ -1590,6 +1601,32 @@
     }
 }
 
+static void
+check_relr (Ebl *ebl, GElf_Ehdr *ehdr, GElf_Shdr *shdr, int idx)
+{
+  Elf_Data *data = elf_getdata (elf_getscn (ebl->elf, idx), NULL);
+  if (data == NULL)
+    {
+      ERROR (_("section [%2d] '%s': cannot get section data\n"),
+	     idx, section_name (ebl, idx));
+      return;
+    }
+
+  /* Check the fields of the section header.  */
+  GElf_Shdr destshdr_mem;
+  GElf_Shdr *destshdr = NULL;
+  struct loaded_segment *loaded = NULL;
+  check_reloc_shdr (ebl, ehdr, shdr, idx, ELF_T_RELR, &destshdr,
+		    &destshdr_mem, &loaded);
+
+  /* Just throw them away.  */
+  while (loaded != NULL)
+    {
+      struct loaded_segment *old = loaded;
+      loaded = loaded->next;
+      free (old);
+    }
+}
 
 /* Number of dynamic sections.  */
 static int ndynamic;
@@ -1780,6 +1817,7 @@
 	case DT_PLTGOT:
 	case DT_REL:
 	case DT_RELA:
+	case DT_RELR:
 	case DT_SYMBOLIC:
 	case DT_SYMTAB:
 	case DT_VERDEF:
@@ -3660,6 +3698,7 @@
     { ".plt", 5, SHT_PROGBITS, unused, 0, 0 }, // XXX more tests
     { ".preinit_array", 15, SHT_PREINIT_ARRAY, exact, SHF_ALLOC | SHF_WRITE, 0 },
     { ".rela", 5, SHT_RELA, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests
+    { ".relr", 5, SHT_RELR, atleast, 0, SHF_ALLOC }, // XXX more tests
     { ".rel", 4, SHT_REL, atleast, 0, SHF_ALLOC | SHF_INFO_LINK }, // XXX more tests
     { ".rodata", 8, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS },
     { ".rodata1", 9, SHT_PROGBITS, atleast, SHF_ALLOC, SHF_MERGE | SHF_STRINGS },
@@ -4182,6 +4221,10 @@
 	  check_rel (ebl, ehdr, shdr, cnt);
 	  break;
 
+	case SHT_RELR:
+	  check_relr (ebl, ehdr, shdr, cnt);
+	  break;
+
 	case SHT_DYNAMIC:
 	  check_dynamic (ebl, ehdr, shdr, cnt);
 	  break;
diff --git a/src/readelf.c b/src/readelf.c
index 6950204..decfaf1 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -1,5 +1,6 @@
 /* Print information from ELF file in human-readable form.
    Copyright (C) 1999-2018 Red Hat, Inc.
+   Copyright (C) 2023 Mark J. Wielaard <mark@klomp.org>
    This file is part of elfutils.
 
    This file is free software; you can redistribute it and/or modify
@@ -301,13 +302,29 @@
 static void print_phdr (Ebl *ebl, GElf_Ehdr *ehdr);
 static void print_scngrp (Ebl *ebl);
 static void print_dynamic (Ebl *ebl);
-static void print_relocs (Ebl *ebl, GElf_Ehdr *ehdr);
+static void print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr);
 static void handle_relocs_rel (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
 			       GElf_Shdr *shdr);
 static void handle_relocs_rela (Ebl *ebl, GElf_Ehdr *ehdr, Elf_Scn *scn,
 				GElf_Shdr *shdr);
+static void handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn,
+				GElf_Shdr *shdr);
 static bool print_symtab (Ebl *ebl, int type);
-static void handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
+static bool handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
+static bool handle_dynamic_symtab (Ebl *ebl);
+static void
+process_symtab(
+	Ebl * ebl,
+	unsigned int nsyms,
+	Elf64_Word idx,
+	Elf32_Word verneed_stridx,
+	Elf32_Word verdef_stridx,
+	Elf_Data * symdata,
+	Elf_Data * versym_data,
+	Elf_Data * symstr_data,
+	Elf_Data * verneed_data,
+	Elf_Data * verdef_data,
+	Elf_Data * xndx_data);
 static void print_verinfo (Ebl *ebl);
 static void handle_verneed (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
 static void handle_verdef (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr);
@@ -322,12 +339,17 @@
 static void dump_strings (Ebl *ebl);
 static void print_strings (Ebl *ebl);
 static void dump_archive_index (Elf *, const char *);
+static void print_dwarf_addr (Dwfl_Module *dwflmod, int address_size,
+			      Dwarf_Addr address, Dwarf_Addr raw);
 
 enum dyn_idx
 {
+  i_symtab_shndx,
   i_strsz,
   i_verneed,
+  i_verneednum,
   i_verdef,
+  i_verdefnum,
   i_versym,
   i_symtab,
   i_strtab,
@@ -1035,14 +1057,14 @@
   if (print_dynamic_table)
     print_dynamic (ebl);
   if (print_relocations)
-    print_relocs (pure_ebl, ehdr);
+    print_relocs (pure_ebl, dwflmod, ehdr);
   if (print_histogram)
     handle_hash (ebl);
   if (print_symbol_table || print_dynsym_table)
     symtab_printed |= print_symtab (ebl, SHT_DYNSYM);
   if (print_version_info)
     print_verinfo (ebl);
-  if (print_symbol_table)
+  if (print_symbol_table && !use_dynamic_segment)
     symtab_printed |= print_symtab (ebl, SHT_SYMTAB);
 
   if ((print_symbol_table || print_dynsym_table)
@@ -1606,7 +1628,7 @@
 section_name (Ebl *ebl, GElf_Shdr *shdr)
 {
   size_t shstrndx;
-  if (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)
+  if (shdr == NULL || elf_getshdrstrndx (ebl->elf, &shstrndx) < 0)
     return "???";
   return elf_strptr (ebl->elf, shstrndx, shdr->sh_name) ?: "???";
 }
@@ -1954,9 +1976,11 @@
 	case DT_RELASZ:
 	case DT_STRSZ:
 	case DT_RELSZ:
+	case DT_RELRSZ:
 	case DT_RELAENT:
 	case DT_SYMENT:
 	case DT_RELENT:
+	case DT_RELRENT:
 	case DT_PLTPADSZ:
 	case DT_MOVEENT:
 	case DT_MOVESZ:
@@ -2032,7 +2056,7 @@
 
 /* Print relocations.  */
 static void
-print_relocs (Ebl *ebl, GElf_Ehdr *ehdr)
+print_relocs (Ebl *ebl, Dwfl_Module *mod, GElf_Ehdr *ehdr)
 {
   /* Find all relocation sections and handle them.  */
   Elf_Scn *scn = NULL;
@@ -2049,6 +2073,8 @@
 	    handle_relocs_rel (ebl, ehdr, scn, shdr);
 	  else if (shdr->sh_type == SHT_RELA)
 	    handle_relocs_rela (ebl, ehdr, scn, shdr);
+	  else if (shdr->sh_type == SHT_RELR)
+	    handle_relocs_relr (ebl, mod, scn, shdr);
 	}
     }
 }
@@ -2437,12 +2463,124 @@
     }
 }
 
+/* Handle a relocation section.  */
+static void
+handle_relocs_relr (Ebl *ebl, Dwfl_Module *mod, Elf_Scn *scn, GElf_Shdr *shdr)
+{
+  int class = gelf_getclass (ebl->elf);
+  size_t sh_entsize = gelf_fsize (ebl->elf, ELF_T_RELR, 1, EV_CURRENT);
+  int nentries = shdr->sh_size / sh_entsize;
+
+  /* Get the data of the section.  */
+  Elf_Data *data = elf_getdata (scn, NULL);
+  if (data == NULL)
+    return;
+
+  /* Get the section header string table index.  */
+  size_t shstrndx;
+  if (unlikely (elf_getshdrstrndx (ebl->elf, &shstrndx) < 0))
+    error_exit (0, _("cannot get section header string table index"));
+
+  /* A .relr.dyn section does not refer to a specific section.  */
+  printf (ngettext ("\
+\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entry:\n",
+		    "\
+\nRelocation section [%2u] '%s' at offset %#0" PRIx64 " contains %d entries:\n",
+		    nentries),
+	  (unsigned int) elf_ndxscn (scn),
+	  elf_strptr (ebl->elf, shstrndx, shdr->sh_name),
+	  shdr->sh_offset,
+	  nentries);
+
+  if (class == ELFCLASS32)
+    {
+      uint32_t base = 0;
+      for (int cnt = 0; cnt < nentries; ++cnt)
+	{
+	  Elf32_Word *words = data->d_buf;
+	  Elf32_Word entry = words[cnt];
+
+	  /* Just the raw entries?  */
+	  if (print_unresolved_addresses)
+            printf ("  %#010" PRIx32 "%s\n", entry,
+                    (entry & 1) == 0 ? " *" : "");
+	  else
+	    {
+	      /* A real address, also sets base.  */
+	      if ((entry & 1) == 0)
+		{
+		  printf ("  ");
+		  print_dwarf_addr (mod, 4, entry, entry);
+		  printf (" *\n");
+
+		  base = entry + 4;
+		}
+	      else
+		{
+		  /* Untangle address from base and bits.  */
+		  uint32_t addr;
+		  for (addr = base; (entry >>= 1) != 0; addr += 4)
+		    if ((entry & 1) != 0)
+		      {
+			printf ("  ");
+			print_dwarf_addr (mod, 4, addr, addr);
+			printf ("\n");
+		      }
+		  base += 4 * (4 * 8 - 1);
+		}
+	    }
+	}
+    }
+  else
+    {
+      uint64_t base = 0;
+      for (int cnt = 0; cnt < nentries; ++cnt)
+	{
+	  Elf64_Xword *xwords = data->d_buf;
+	  Elf64_Xword entry = xwords[cnt];
+
+	  /* Just the raw entries?  */
+	  if (print_unresolved_addresses)
+	    printf ("  %#018" PRIx64 "%s\n", entry,
+		    (entry & 1) == 0 ? " *" : "");
+	  else
+	    {
+	      /* A real address, also sets base.  */
+	      if ((entry & 1) == 0)
+		{
+		  printf ("  ");
+		  print_dwarf_addr (mod, 8, entry, entry);
+		  printf (" *\n");
+
+		  base = entry + 8;
+		}
+	      else
+		{
+		  /* Untangle address from base and bits.  */
+		  uint64_t addr;
+		  for (addr = base; (entry >>= 1) != 0; addr += 8)
+		    if ((entry & 1) != 0)
+		      {
+			printf ("  ");
+			print_dwarf_addr (mod, 8, addr, addr);
+			printf ("\n");
+		      }
+		  base += 8 * (8 * 8 - 1);
+		}
+	    }
+	}
+    }
+}
 
 /* Print the program header.  Return true if a symtab is printed,
    false otherwise.  */
 static bool
 print_symtab (Ebl *ebl, int type)
 {
+  /* Use the dynamic section info to display symbol tables.  */
+  if (use_dynamic_segment && type == SHT_DYNSYM)
+    return handle_dynamic_symtab(ebl);
+
   /* Find the symbol table(s).  For this we have to search through the
      section table.  */
   Elf_Scn *scn = NULL;
@@ -2481,8 +2619,7 @@
 			    _("cannot get section [%zd] header: %s"),
 			    elf_ndxscn (scn), elf_errmsg (-1));
 	    }
-	  handle_symtab (ebl, scn, shdr);
-	  symtab_printed = true;
+	  symtab_printed = handle_symtab (ebl, scn, shdr);
 	}
     }
 
@@ -2491,6 +2628,179 @@
 
 
 static void
+process_symtab (Ebl *ebl, unsigned int nsyms, Elf64_Word idx,
+                Elf32_Word verneed_stridx, Elf32_Word verdef_stridx,
+                Elf_Data *symdata, Elf_Data *versym_data,
+                Elf_Data *symstr_data, Elf_Data *verneed_data,
+                Elf_Data *verdef_data, Elf_Data *xndx_data)
+{
+  for (unsigned int cnt = 0; cnt < nsyms; ++cnt)
+    {
+      char typebuf[64];
+      char bindbuf[64];
+      char scnbuf[64];
+      Elf32_Word xndx;
+      GElf_Sym sym_mem;
+      GElf_Sym *sym
+          = gelf_getsymshndx (symdata, xndx_data, cnt, &sym_mem, &xndx);
+
+      if (unlikely (sym == NULL))
+        continue;
+
+      /* Determine the real section index.  */
+      if (likely (sym->st_shndx != SHN_XINDEX))
+        xndx = sym->st_shndx;
+
+      printf (_ ("\
+%5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"),
+              cnt, gelf_getclass (ebl->elf) == ELFCLASS32 ? 8 : 16,
+              sym->st_value, sym->st_size,
+              ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info), typebuf,
+                                    sizeof (typebuf)),
+              ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info),
+                                       bindbuf, sizeof (bindbuf)),
+              get_visibility_type (GELF_ST_VISIBILITY (sym->st_other)),
+              ebl_section_name (ebl, sym->st_shndx, xndx, scnbuf,
+                                sizeof (scnbuf), NULL, shnum),
+              use_dynamic_segment == true
+                  ? (char *)symstr_data->d_buf + sym->st_name
+                  : elf_strptr (ebl->elf, idx, sym->st_name));
+
+      if (versym_data != NULL)
+        {
+          /* Get the version information.  */
+          GElf_Versym versym_mem;
+          GElf_Versym *versym = gelf_getversym (versym_data, cnt, &versym_mem);
+
+          if (versym != NULL && ((*versym & 0x8000) != 0 || *versym > 1))
+            {
+              bool is_nobits = false;
+              bool check_def = xndx != SHN_UNDEF;
+
+              if (xndx < SHN_LORESERVE || sym->st_shndx == SHN_XINDEX)
+                {
+                  GElf_Shdr symshdr_mem;
+                  GElf_Shdr *symshdr = gelf_getshdr (
+                      elf_getscn (ebl->elf, xndx), &symshdr_mem);
+
+                  is_nobits
+                      = (symshdr != NULL && symshdr->sh_type == SHT_NOBITS);
+                }
+
+              if (is_nobits || !check_def)
+                {
+                  /* We must test both.  */
+                  GElf_Vernaux vernaux_mem;
+                  GElf_Vernaux *vernaux = NULL;
+                  size_t vn_offset = 0;
+
+                  GElf_Verneed verneed_mem;
+                  GElf_Verneed *verneed
+                      = gelf_getverneed (verneed_data, 0, &verneed_mem);
+                  while (verneed != NULL)
+                    {
+                      size_t vna_offset = vn_offset;
+
+                      vernaux = gelf_getvernaux (verneed_data,
+                                                 vna_offset += verneed->vn_aux,
+                                                 &vernaux_mem);
+                      while (vernaux != NULL && vernaux->vna_other != *versym
+                             && vernaux->vna_next != 0
+                             && (verneed_data->d_size - vna_offset
+                                 >= vernaux->vna_next))
+                        {
+                          /* Update the offset.  */
+                          vna_offset += vernaux->vna_next;
+
+                          vernaux = (vernaux->vna_next == 0
+                                         ? NULL
+                                         : gelf_getvernaux (verneed_data,
+                                                            vna_offset,
+                                                            &vernaux_mem));
+                        }
+
+                      /* Check whether we found the version.  */
+                      if (vernaux != NULL && vernaux->vna_other == *versym)
+                        /* Found it.  */
+                        break;
+
+                      if (verneed_data->d_size - vn_offset < verneed->vn_next)
+                        break;
+
+                      vn_offset += verneed->vn_next;
+                      verneed
+                          = (verneed->vn_next == 0
+                                 ? NULL
+                                 : gelf_getverneed (verneed_data, vn_offset,
+                                                    &verneed_mem));
+                    }
+
+                  if (vernaux != NULL && vernaux->vna_other == *versym)
+                    {
+                      printf ("@%s (%u)",
+                              use_dynamic_segment == true
+                                  ? (char *)symstr_data->d_buf
+                                        + vernaux->vna_name
+                                  : elf_strptr (ebl->elf, verneed_stridx,
+                                                vernaux->vna_name),
+                              (unsigned int)vernaux->vna_other);
+                      check_def = 0;
+                    }
+                  else if (unlikely (!is_nobits))
+                    error (0, 0, _ ("bad dynamic symbol"));
+                  else
+                    check_def = 1;
+                }
+
+              if (check_def && *versym != 0x8001)
+                {
+                  /* We must test both.  */
+                  size_t vd_offset = 0;
+
+                  GElf_Verdef verdef_mem;
+                  GElf_Verdef *verdef
+                      = gelf_getverdef (verdef_data, 0, &verdef_mem);
+                  while (verdef != NULL)
+                    {
+                      if (verdef->vd_ndx == (*versym & 0x7fff))
+                        /* Found the definition.  */
+                        break;
+
+                      if (verdef_data->d_size - vd_offset < verdef->vd_next)
+                        break;
+
+                      vd_offset += verdef->vd_next;
+                      verdef = (verdef->vd_next == 0
+                                    ? NULL
+                                    : gelf_getverdef (verdef_data, vd_offset,
+                                                      &verdef_mem));
+                    }
+
+                  if (verdef != NULL)
+                    {
+                      GElf_Verdaux verdaux_mem;
+                      GElf_Verdaux *verdaux = gelf_getverdaux (
+                          verdef_data, vd_offset + verdef->vd_aux,
+                          &verdaux_mem);
+
+                      if (verdaux != NULL)
+                        printf ((*versym & 0x8000) ? "@%s" : "@@%s",
+                                use_dynamic_segment == true
+                                    ? (char *)symstr_data->d_buf
+                                          + verdaux->vda_name
+                                    : elf_strptr (ebl->elf, verdef_stridx,
+                                                  verdaux->vda_name));
+                    }
+                }
+            }
+        }
+
+      putchar_unlocked ('\n');
+    }
+}
+
+
+static bool
 handle_symtab (Ebl *ebl, Elf_Scn *scn, GElf_Shdr *shdr)
 {
   Elf_Data *versym_data = NULL;
@@ -2504,7 +2814,7 @@
   /* Get the data of the section.  */
   Elf_Data *data = elf_getdata (scn, NULL);
   if (data == NULL)
-    return;
+    return false;
 
   /* Find out whether we have other sections we might need.  */
   Elf_Scn *runscn = NULL;
@@ -2574,163 +2884,184 @@
   Num:            Value   Size Type    Bind   Vis          Ndx Name\n"),
 		  stdout);
 
-  for (unsigned int cnt = 0; cnt < nsyms; ++cnt)
+	process_symtab(ebl, nsyms, shdr->sh_link, verneed_stridx, verdef_stridx,
+	data, versym_data, NULL, verneed_data, verdef_data, xndx_data);
+    return true;
+}
+
+
+static bool
+handle_dynamic_symtab (Ebl *ebl)
+{
+  GElf_Phdr phdr_mem;
+  GElf_Phdr *phdr = NULL;
+  /* phnum is a static variable which was already fetched in function
+     process_elf_file.  */
+  for (size_t i = 0; i < phnum; ++i)
     {
-      char typebuf[64];
-      char bindbuf[64];
-      char scnbuf[64];
-      Elf32_Word xndx;
-      GElf_Sym sym_mem;
-      GElf_Sym *sym = gelf_getsymshndx (data, xndx_data, cnt, &sym_mem, &xndx);
-
-      if (unlikely (sym == NULL))
-	continue;
-
-      /* Determine the real section index.  */
-      if (likely (sym->st_shndx != SHN_XINDEX))
-	xndx = sym->st_shndx;
-
-      printf (_("\
-%5u: %0*" PRIx64 " %6" PRId64 " %-7s %-6s %-9s %6s %s"),
-	      cnt,
-	      class == ELFCLASS32 ? 8 : 16,
-	      sym->st_value,
-	      sym->st_size,
-	      ebl_symbol_type_name (ebl, GELF_ST_TYPE (sym->st_info),
-				    typebuf, sizeof (typebuf)),
-	      ebl_symbol_binding_name (ebl, GELF_ST_BIND (sym->st_info),
-				       bindbuf, sizeof (bindbuf)),
-	      get_visibility_type (GELF_ST_VISIBILITY (sym->st_other)),
-	      ebl_section_name (ebl, sym->st_shndx, xndx, scnbuf,
-				sizeof (scnbuf), NULL, shnum),
-	      elf_strptr (ebl->elf, shdr->sh_link, sym->st_name));
-
-      if (versym_data != NULL)
-	{
-	  /* Get the version information.  */
-	  GElf_Versym versym_mem;
-	  GElf_Versym *versym = gelf_getversym (versym_data, cnt, &versym_mem);
-
-	  if (versym != NULL && ((*versym & 0x8000) != 0 || *versym > 1))
-	    {
-	      bool is_nobits = false;
-	      bool check_def = xndx != SHN_UNDEF;
-
-	      if (xndx < SHN_LORESERVE || sym->st_shndx == SHN_XINDEX)
-		{
-		  GElf_Shdr symshdr_mem;
-		  GElf_Shdr *symshdr =
-		    gelf_getshdr (elf_getscn (ebl->elf, xndx), &symshdr_mem);
-
-		  is_nobits = (symshdr != NULL
-			       && symshdr->sh_type == SHT_NOBITS);
-		}
-
-	      if (is_nobits || ! check_def)
-		{
-		  /* We must test both.  */
-		  GElf_Vernaux vernaux_mem;
-		  GElf_Vernaux *vernaux = NULL;
-		  size_t vn_offset = 0;
-
-		  GElf_Verneed verneed_mem;
-		  GElf_Verneed *verneed = gelf_getverneed (verneed_data, 0,
-							   &verneed_mem);
-		  while (verneed != NULL)
-		    {
-		      size_t vna_offset = vn_offset;
-
-		      vernaux = gelf_getvernaux (verneed_data,
-						 vna_offset += verneed->vn_aux,
-						 &vernaux_mem);
-		      while (vernaux != NULL
-			     && vernaux->vna_other != *versym
-			     && vernaux->vna_next != 0
-			     && (verneed_data->d_size - vna_offset
-				 >= vernaux->vna_next))
-			{
-			  /* Update the offset.  */
-			  vna_offset += vernaux->vna_next;
-
-			  vernaux = (vernaux->vna_next == 0
-				     ? NULL
-				     : gelf_getvernaux (verneed_data,
-							vna_offset,
-							&vernaux_mem));
-			}
-
-		      /* Check whether we found the version.  */
-		      if (vernaux != NULL && vernaux->vna_other == *versym)
-			/* Found it.  */
-			break;
-
-		      if (verneed_data->d_size - vn_offset < verneed->vn_next)
-			break;
-
-		      vn_offset += verneed->vn_next;
-		      verneed = (verneed->vn_next == 0
-				 ? NULL
-				 : gelf_getverneed (verneed_data, vn_offset,
-						    &verneed_mem));
-		    }
-
-		  if (vernaux != NULL && vernaux->vna_other == *versym)
-		    {
-		      printf ("@%s (%u)",
-			      elf_strptr (ebl->elf, verneed_stridx,
-					  vernaux->vna_name),
-			      (unsigned int) vernaux->vna_other);
-		      check_def = 0;
-		    }
-		  else if (unlikely (! is_nobits))
-		    error (0, 0, _("bad dynamic symbol"));
-		  else
-		    check_def = 1;
-		}
-
-	      if (check_def && *versym != 0x8001)
-		{
-		  /* We must test both.  */
-		  size_t vd_offset = 0;
-
-		  GElf_Verdef verdef_mem;
-		  GElf_Verdef *verdef = gelf_getverdef (verdef_data, 0,
-							&verdef_mem);
-		  while (verdef != NULL)
-		    {
-		      if (verdef->vd_ndx == (*versym & 0x7fff))
-			/* Found the definition.  */
-			break;
-
-		      if (verdef_data->d_size - vd_offset < verdef->vd_next)
-			break;
-
-		      vd_offset += verdef->vd_next;
-		      verdef = (verdef->vd_next == 0
-				? NULL
-				: gelf_getverdef (verdef_data, vd_offset,
-						  &verdef_mem));
-		    }
-
-		  if (verdef != NULL)
-		    {
-		      GElf_Verdaux verdaux_mem;
-		      GElf_Verdaux *verdaux
-			= gelf_getverdaux (verdef_data,
-					   vd_offset + verdef->vd_aux,
-					   &verdaux_mem);
-
-		      if (verdaux != NULL)
-			printf ((*versym & 0x8000) ? "@%s" : "@@%s",
-				elf_strptr (ebl->elf, verdef_stridx,
-					    verdaux->vda_name));
-		    }
-		}
-	    }
-	}
-
-      putchar_unlocked ('\n');
+      phdr = gelf_getphdr (ebl->elf, i, &phdr_mem);
+      if (phdr->p_type == PT_DYNAMIC)
+	break;
     }
+  if (phdr == NULL)
+    return false;
+
+  GElf_Addr addrs[i_max] = {
+    0,
+  };
+  GElf_Off offs[i_max] = {
+    0,
+  };
+  get_dynscn_addrs (ebl->elf, phdr, addrs);
+  find_offsets (ebl->elf, 0, i_max, addrs, offs);
+
+  size_t syments = 0;
+
+  GElf_Ehdr ehdr_mem;
+  GElf_Ehdr *ehdr = gelf_getehdr (ebl->elf, &ehdr_mem);
+
+  if (offs[i_hash] != 0)
+    {
+      /* In the original format, .hash says the size of .dynsym.  */
+
+      size_t entsz = SH_ENTSIZE_HASH (ehdr);
+      Elf_Data *data
+          = elf_getdata_rawchunk (ebl->elf, offs[i_hash] + entsz, entsz,
+                                  (entsz == 4 ? ELF_T_WORD : ELF_T_XWORD));
+      if (data != NULL)
+        syments = (entsz == 4 ? *(const GElf_Word *)data->d_buf
+                              : *(const GElf_Xword *)data->d_buf);
+    }
+  if (offs[i_gnu_hash] != 0 && syments == 0)
+    {
+      /* In the new format, we can derive it with some work.  */
+
+      const struct
+      {
+        Elf32_Word nbuckets;
+        Elf32_Word symndx;
+        Elf32_Word maskwords;
+        Elf32_Word shift2;
+      } * header;
+
+      Elf_Data *data = elf_getdata_rawchunk (ebl->elf, offs[i_gnu_hash],
+                                             sizeof *header, ELF_T_WORD);
+      if (data != NULL)
+        {
+          header = data->d_buf;
+          Elf32_Word nbuckets = header->nbuckets;
+          Elf32_Word symndx = header->symndx;
+          GElf_Off buckets_at
+              = (offs[i_gnu_hash] + sizeof *header
+                 + (gelf_getclass (ebl->elf) * sizeof (Elf32_Word)
+                    * header->maskwords));
+
+          // elf_getdata_rawchunk takes a size_t, make sure it
+          // doesn't overflow.
+#if SIZE_MAX <= UINT32_MAX
+          if (nbuckets > SIZE_MAX / sizeof (Elf32_Word))
+            data = NULL;
+          else
+#endif
+            data = elf_getdata_rawchunk (ebl->elf, buckets_at,
+                                         nbuckets * sizeof (Elf32_Word),
+                                         ELF_T_WORD);
+          if (data != NULL && symndx < nbuckets)
+            {
+              const Elf32_Word *const buckets = data->d_buf;
+              Elf32_Word maxndx = symndx;
+              for (Elf32_Word bucket = 0; bucket < nbuckets; ++bucket)
+                if (buckets[bucket] > maxndx)
+                  maxndx = buckets[bucket];
+
+              GElf_Off hasharr_at
+                  = (buckets_at + nbuckets * sizeof (Elf32_Word));
+              hasharr_at += (maxndx - symndx) * sizeof (Elf32_Word);
+              do
+                {
+                  data = elf_getdata_rawchunk (
+                      ebl->elf, hasharr_at, sizeof (Elf32_Word), ELF_T_WORD);
+                  if (data != NULL && (*(const Elf32_Word *)data->d_buf & 1u))
+                    {
+                      syments = maxndx + 1;
+                      break;
+                    }
+                  ++maxndx;
+                  hasharr_at += sizeof (Elf32_Word);
+                }
+              while (data != NULL);
+            }
+        }
+    }
+  if (offs[i_strtab] > offs[i_symtab] && syments == 0)
+    syments = ((offs[i_strtab] - offs[i_symtab])
+               / gelf_fsize (ebl->elf, ELF_T_SYM, 1, EV_CURRENT));
+
+  if (syments <= 0 || offs[i_strtab] == 0 || offs[i_symtab] == 0)
+    {
+      error_exit (0, _ ("Dynamic symbol information is not available for "
+                        "displaying symbols."));
+    }
+
+  /* All the data chunk initializaion.  */
+  Elf_Data *symdata = NULL;
+  Elf_Data *symstrdata = NULL;
+  Elf_Data *versym_data = NULL;
+  Elf_Data *verdef_data = NULL;
+  Elf_Data *verneed_data = NULL;
+
+  symdata = elf_getdata_rawchunk (
+      ebl->elf, offs[i_symtab],
+      gelf_fsize (ebl->elf, ELF_T_SYM, syments, EV_CURRENT), ELF_T_SYM);
+  symstrdata = elf_getdata_rawchunk (ebl->elf, offs[i_strtab], addrs[i_strsz],
+                                     ELF_T_BYTE);
+  versym_data = elf_getdata_rawchunk (
+      ebl->elf, offs[i_versym], syments * sizeof (Elf64_Half), ELF_T_HALF);
+
+  /* Get the verneed_data without vernaux.  */
+  verneed_data = elf_getdata_rawchunk (
+      ebl->elf, offs[i_verneed], addrs[i_verneednum] * sizeof (Elf64_Verneed),
+      ELF_T_VNEED);
+  size_t vernauxnum = 0;
+  size_t vn_next_offset = 0;
+
+  for (size_t i = 0; i < addrs[i_verneednum]; i++)
+    {
+      GElf_Verneed *verneed
+          = (GElf_Verneed *)(verneed_data->d_buf + vn_next_offset);
+      vernauxnum += verneed->vn_cnt;
+      vn_next_offset += verneed->vn_next;
+    }
+
+  /* Update the verneed_data to include the vernaux.  */
+  verneed_data = elf_getdata_rawchunk (
+      ebl->elf, offs[i_verneed],
+      (addrs[i_verneednum] + vernauxnum) * sizeof (GElf_Verneed), ELF_T_VNEED);
+
+  /* Get the verdef_data without verdaux.  */
+  verdef_data = elf_getdata_rawchunk (
+      ebl->elf, offs[i_verdef], addrs[i_verdefnum] * sizeof (Elf64_Verdef),
+      ELF_T_VDEF);
+  size_t verdauxnum = 0;
+  size_t vd_next_offset = 0;
+
+  for (size_t i = 0; i < addrs[i_verdefnum]; i++)
+    {
+      GElf_Verdef *verdef
+          = (GElf_Verdef *)(verdef_data->d_buf + vd_next_offset);
+      verdauxnum += verdef->vd_cnt;
+      vd_next_offset += verdef->vd_next;
+    }
+
+  /* Update the verdef_data to include the verdaux.  */
+  verdef_data = elf_getdata_rawchunk (
+      ebl->elf, offs[i_verdef],
+      (addrs[i_verdefnum] + verdauxnum) * sizeof (GElf_Verdef), ELF_T_VDEF);
+
+  unsigned int nsyms = (unsigned int)syments;
+  process_symtab (ebl, nsyms, 0, 0, 0, symdata, versym_data, symstrdata,
+                  verneed_data, verdef_data, NULL);
+  return true;
 }
 
 
@@ -3893,7 +4224,7 @@
   return elf_getdata (scn, NULL);
 }
 
-void
+static void
 print_dwarf_addr (Dwfl_Module *dwflmod,
 		  int address_size, Dwarf_Addr address, Dwarf_Addr raw)
 {
@@ -4990,13 +5321,25 @@
       addrs[i_verdef] = dyn->d_un.d_ptr;
       break;
 
+    case DT_VERDEFNUM:
+      addrs[i_verdefnum] = dyn->d_un.d_val;
+      break;
+
     case DT_VERNEED:
       addrs[i_verneed] = dyn->d_un.d_ptr;
       break;
 
+    case DT_VERNEEDNUM:
+      addrs[i_verneednum] = dyn->d_un.d_val;
+      break;
+
     case DT_STRSZ:
       addrs[i_strsz] = dyn->d_un.d_val;
       break;
+
+    case DT_SYMTAB_SHNDX:
+      addrs[i_symtab_shndx] = dyn->d_un.d_ptr;
+      break;
     }
   }
 }
@@ -11196,8 +11539,9 @@
   // hash used for generating the table.  Version 6 contains symbols
   // for inlined functions, older versions didn't.  Version 7 adds
   // symbol kinds.  Version 8 just indicates that it correctly includes
-  // TUs for symbols.
-  if (vers < 4 || vers > 8)
+  // TUs for symbols.  Version 9 adds shortcut table for information
+  // regarding the main function.
+  if (vers < 4 || vers > 9)
     {
       printf (_("  unknown version, cannot parse section\n"));
       return;
@@ -11235,6 +11579,17 @@
   if (unlikely (readp + 4 > dataend))
     goto invalid_data;
 
+  uint32_t shortcut_off = 0;
+  if (vers >= 9)
+    {
+      shortcut_off = read_4ubyte_unaligned (dbg, readp);
+      printf (_(" shortcut offset: %#" PRIx32 "\n"), shortcut_off);
+
+      readp += 4;
+      if (unlikely (readp + 4 > dataend))
+	goto invalid_data;
+    }
+
   uint32_t const_off = read_4ubyte_unaligned (dbg, readp);
   printf (_(" constant offset: %#" PRIx32 "\n"), const_off);
 
@@ -11332,8 +11687,19 @@
   if (const_off >= data->d_size)
     goto invalid_data;
 
+  const unsigned char *shortcut_start = NULL;
+  if (vers >= 9)
+    {
+      if (shortcut_off >= data->d_size)
+	goto invalid_data;
+
+      shortcut_start = data->d_buf + shortcut_off;
+      nextp = shortcut_start;
+    }
+  else
+    nextp = const_start;
+
   readp = data->d_buf + sym_off;
-  nextp = const_start;
   size_t sym_nr = (nextp - readp) / 8;
 
   printf (_("\n Symbol table at offset %#" PRIx32
@@ -11407,6 +11773,49 @@
 	}
       n++;
     }
+
+  if (vers < 9)
+    return;
+
+  if (unlikely (shortcut_start == NULL))
+    goto invalid_data;
+
+  readp = shortcut_start;
+  nextp = const_start;
+  size_t shortcut_nr = (nextp - readp) / 4;
+
+  if (unlikely (shortcut_nr != 2))
+    goto invalid_data;
+
+  printf (_("\nShortcut table at offset %#" PRIx32 " contains %zu slots:\n"),
+	  shortcut_off, shortcut_nr);
+
+  uint32_t lang = read_4ubyte_unaligned (dbg, readp);
+  readp += 4;
+
+  /* Include the hex number of LANG in the output if the language
+     is unknown.  */
+  const char *lang_str = dwarf_lang_string (lang);
+  lang_str = string_or_unknown (lang_str, lang, DW_LANG_lo_user,
+				DW_LANG_hi_user, true);
+
+  printf (_("Language of main: %s\n"), lang_str);
+  printf (_("Name of main: "));
+
+  if (lang != 0)
+    {
+      uint32_t name = read_4ubyte_unaligned (dbg, readp);
+      readp += 4;
+      const unsigned char *sym = const_start + name;
+
+      if (unlikely ((size_t) (dataend - const_start) < name
+		    || memchr (sym, '\0', dataend - sym) == NULL))
+	goto invalid_data;
+
+      printf ("%s\n", sym);
+    }
+  else
+    printf ("<unknown>\n");
 }
 
 /* Returns true and sets split DWARF CU id if there is a split compile
diff --git a/src/srcfiles.cxx b/src/srcfiles.cxx
new file mode 100644
index 0000000..3c7afdc
--- /dev/null
+++ b/src/srcfiles.cxx
@@ -0,0 +1,218 @@
+/* Print the source files of a given ELF file.
+   Copyright (C) 2023 Red Hat, Inc.
+   This file is part of elfutils.
+   Written by Housam Alamour <alamourh@redhat.com>.
+
+   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 "printversion.h"
+#include <dwarf.h>
+#include <argp.h>
+#include <cstring>
+#include <set>
+#include <string>
+#include <cassert>
+#include <config.h>
+
+#include <libdwfl.h>
+#include <fcntl.h>
+#include <iostream>
+#include <libdw.h>
+
+using namespace std;
+
+/* Name and version of program.  */
+ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
+
+/* Bug report address.  */
+ARGP_PROGRAM_BUG_ADDRESS_DEF = PACKAGE_BUGREPORT;
+
+/* Definitions of arguments for argp functions.  */
+static const struct argp_option options[] =
+{
+  { NULL, 0, NULL, OPTION_DOC, N_("Output options:"), 1 },
+  { "null", '0', NULL, 0,
+    N_ ("Separate items by a null instead of a newline."), 0 },
+  { "verbose", 'v', NULL, 0,
+    N_ ("Increase verbosity of logging messages."), 0 },
+  { "cu-only", 'c', NULL, 0, N_ ("Only list the CU names."), 0 },
+  { NULL, 0, NULL, 0, NULL, 0 }
+};
+
+/* Short description of program.  */
+static const char doc[] = N_("Lists the source files of a DWARF/ELF file. The default input is the file 'a.out'.");
+
+/* Strings for arguments in help texts.  */
+static const char args_doc[] = N_("INPUT");
+
+/* Prototype for option handler.  */
+static error_t parse_opt (int key, char *arg, struct argp_state *state);
+
+static struct argp_child argp_children[2]; /* [0] is set in main.  */
+
+/* Data structure to communicate with argp functions.  */
+static const struct argp argp =
+{
+  options, parse_opt, args_doc, doc, argp_children, NULL, NULL
+};
+
+/* Verbose message printing. */
+static bool verbose;
+/* Delimit the output with nulls. */
+static bool null_arg;
+/* Only print compilation unit names. */
+static bool CU_only;
+
+/* Handle program arguments. */
+static error_t
+parse_opt (int key, char *arg, struct argp_state *state)
+{
+  /* Suppress "unused parameter" warning. */
+  (void)arg;
+  switch (key)
+    {
+    case ARGP_KEY_INIT:
+      state->child_inputs[0] = state->input;
+      break;
+
+    case '0':
+      null_arg = true;
+      break;
+
+    case 'v':
+      verbose = true;
+      break;
+
+    case 'c':
+      CU_only = true;
+      break;
+
+    default:
+      return ARGP_ERR_UNKNOWN;
+    }
+  return 0;
+}
+
+
+/* Global list of collected source files.  Normally, it'll contain
+   the sources of just one named binary, but the '-K' option can cause
+   multiple dwfl modules to be loaded, thus listed.   */
+   set<string> debug_sourcefiles;
+
+static int
+collect_sourcefiles (Dwfl_Module *dwflmod,
+                     void **userdata __attribute__ ((unused)),
+                     const char *name __attribute__ ((unused)),
+                     Dwarf_Addr base __attribute__ ((unused)),
+                     void *arg __attribute__ ((unused)))
+{
+  Dwarf *dbg;
+  Dwarf_Addr bias; /* ignored - for addressing purposes only  */
+
+  dbg = dwfl_module_getdwarf (dwflmod, &bias);
+
+  Dwarf_Off offset = 0;
+  Dwarf_Off old_offset;
+  size_t hsize;
+
+  /* Traverse all CUs of this module.  */
+  while (dwarf_nextcu (dbg, old_offset = offset, &offset, &hsize, NULL, NULL, NULL) == 0)
+    {
+      Dwarf_Die cudie_mem;
+      Dwarf_Die *cudie = dwarf_offdie (dbg, old_offset + hsize, &cudie_mem);
+
+      if (cudie == NULL)
+        continue;
+
+      const char *cuname = dwarf_diename (cudie) ?: "<unknown>";
+      Dwarf_Files *files;
+      size_t nfiles;
+      if (dwarf_getsrcfiles (cudie, &files, &nfiles) != 0)
+        continue;
+
+      /* extract DW_AT_comp_dir to resolve relative file names  */
+      const char *comp_dir = "";
+      const char *const *dirs;
+      size_t ndirs;
+
+      if (dwarf_getsrcdirs (files, &dirs, &ndirs) == 0 && dirs[0] != NULL)
+        comp_dir = dirs[0];
+      if (comp_dir == NULL)
+        comp_dir = "";
+
+      if (verbose)
+        std::clog << "searching for sources for cu=" << cuname
+                  << " comp_dir=" << comp_dir << " #files=" << nfiles
+                  << " #dirs=" << ndirs << endl;
+
+      for (size_t f = 1; f < nfiles; f++)
+        {
+          const char *hat;
+          if (CU_only)
+          {
+            if (strcmp(cuname, "<unknown>") == 0 || strcmp(cuname, "<artificial>") == 0 )
+              continue;
+            hat = cuname;
+          }
+          else
+            hat = dwarf_filesrc (files, f, NULL, NULL);
+
+          if (hat == NULL)
+            continue;
+
+          if (string(hat).find("<built-in>")
+              != std::string::npos) /* gcc intrinsics, don't bother record  */
+            continue;
+
+          string waldo;
+          if (hat[0] == '/') /* absolute */
+            waldo = (string (hat));
+          else if (comp_dir[0] != '\0') /* comp_dir relative */
+            waldo = (string (comp_dir) + string ("/") + string (hat));
+          debug_sourcefiles.insert (waldo);
+        }
+    }
+
+  return DWARF_CB_OK;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+  int remaining;
+
+  /* Parse and process arguments.  This includes opening the modules.  */
+  argp_children[0].argp = dwfl_standard_argp ();
+  argp_children[0].group = 1;
+
+  Dwfl *dwfl = NULL;
+  (void) argp_parse (&argp, argc, argv, 0, &remaining, &dwfl);
+  assert (dwfl != NULL);
+  /* Process all loaded modules - probably just one, except if -K or -p is used. */
+  (void) dwfl_getmodules (dwfl, &collect_sourcefiles, NULL, 0);
+
+  if (!debug_sourcefiles.empty ())
+    for (const string &element : debug_sourcefiles)
+      {
+        std::cout << element;
+        if (null_arg)
+          std::cout << '\0';
+        else
+          std::cout << '\n';
+      }
+
+  dwfl_end (dwfl);
+  return 0;
+}
diff --git a/src/strip.c b/src/strip.c
index 2a2cc80..7f4788b 100644
--- a/src/strip.c
+++ b/src/strip.c
@@ -2543,8 +2543,7 @@
     {
       error (0, 0, _("%s: error while creating ELF header: %s"),
 	     output_fname ?: fname, elf_errmsg (-1));
-      cleanup_debug ();
-      return 1;
+      result = 1;
     }
 
   /* The new section header string table index.  */
@@ -2552,8 +2551,7 @@
     {
       error (0, 0, _("%s: error updating shdrstrndx: %s"),
 	     output_fname ?: fname, elf_errmsg (-1));
-      cleanup_debug ();
-      return 1;
+      result = 1;
     }
 
   /* We have everything from the old file.  */
@@ -2561,8 +2559,7 @@
     {
       error (0, 0, _("%s: error while reading the file: %s"),
 	     fname, elf_errmsg (-1));
-      cleanup_debug ();
-      return 1;
+      result = 1;
     }
 
   /* The ELF library better follows our layout when this is not a
diff --git a/tests/ChangeLog b/tests/ChangeLog
index eb3e111..d97749f 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,21 @@
+2023-09-27  Omar Sandoval  <osandov@fb.com>
+
+	* dwarf-getmacros.c (mac): Add DW_MACRO_define_sup,
+	DW_MACRO_define_strx, DW_MACRO_undef_sup, and DW_MACRO_undef_strx
+	cases to opcode switch statement.
+	(getmacros): New function.
+	(main): If second argument is empty, call getmacros on every unit.
+	Otherwise, call getmacros on given unit.
+
+2023-09-27  Omar Sandoval  <osandov@fb.com>
+
+	* run-varlocs.sh: Add entry PC to split units.
+
+2023-04-21  Frank Ch. Eigler <fche@redhat.com>
+
+	* run-debuginfod-IXr.sh: New test.
+	* Makefile.am: Run it, ship it.
+
 2023-02-10  Mark Wielaard  <mark@klomp.org>
 
 	* varlocs.c (print_expr): Handle DW_OP_GNU_uninit.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index fd58bf8..7fb8efb 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -61,7 +61,7 @@
 		  elfcopy addsections xlate_notes elfrdwrnop \
 		  dwelf_elf_e_machine_string \
 		  getphdrnum leb128 read_unaligned \
-		  msg_tst system-elf-libelf-test \
+		  msg_tst system-elf-libelf-test system-elf-gelf-test \
 		  nvidia_extended_linemap_libdw \
 		  $(asm_TESTS)
 
@@ -118,7 +118,9 @@
 	run-strip-test9.sh run-strip-test10.sh run-strip-test11.sh \
 	run-strip-test12.sh \
 	run-strip-nothing.sh run-strip-g.sh run-annobingroup.sh \
-	run-strip-groups.sh run-strip-reloc.sh run-strip-strmerge.sh \
+	run-strip-groups.sh run-strip-strmerge.sh \
+	run-strip-reloc-ko.sh run-strip-reloc-self.sh \
+	run-strip-reloc-ppc64.sh \
 	run-strip-nobitsalign.sh run-strip-remove-keep.sh \
 	run-unstrip-test.sh run-unstrip-test2.sh run-unstrip-test3.sh \
 	run-unstrip-test4.sh run-unstrip-M.sh run-elfstrmerge-test.sh \
@@ -129,6 +131,7 @@
 	run-find-prologues.sh run-allregs.sh run-addrcfi.sh \
 	run-dwarfcfi.sh run-nm-syms.sh \
 	run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
+	run-srcfiles-self.sh \
 	run-readelf-compressed.sh \
 	run-readelf-const-values.sh \
 	run-varlocs-self.sh run-exprlocs-self.sh \
@@ -193,7 +196,9 @@
 	run-reloc-bpf.sh \
 	run-next-cfi.sh run-next-cfi-self.sh \
 	run-reverse-sections.sh run-reverse-sections-self.sh \
-	run-copyadd-sections.sh run-copymany-sections.sh \
+	run-copyadd-sections.sh \
+	run-copymany-be32.sh run-copymany-le32.sh \
+	run-copymany-be64.sh run-copymany-le64.sh \
 	run-typeiter-many.sh run-strip-test-many.sh \
 	run-strip-version.sh run-xlate-note.sh \
 	run-readelf-discr.sh \
@@ -203,7 +208,7 @@
 	run-pt_gnu_prop-tests.sh \
 	run-getphdrnum.sh run-test-includes.sh \
 	leb128 read_unaligned \
-	msg_tst system-elf-libelf-test \
+	msg_tst system-elf-libelf-test system-elf-gelf-test \
 	$(asm_TESTS) run-disasm-bpf.sh run-low_high_pc-dw-form-indirect.sh \
 	run-nvidia-extended-linemap-libdw.sh run-nvidia-extended-linemap-readelf.sh \
 	run-readelf-dw-form-indirect.sh run-strip-largealign.sh \
@@ -261,7 +266,8 @@
          run-debuginfod-response-headers.sh \
          run-debuginfod-extraction-passive.sh \
 	 run-debuginfod-webapi-concurrency.sh \
-	 run-debuginfod-section.sh
+	 run-debuginfod-section.sh \
+	 run-debuginfod-IXr.sh
 endif
 if !OLD_LIBMICROHTTPD
 # Will crash on too old libmicrohttpd
@@ -301,7 +307,9 @@
 	     testfile-annobingroup-x86_64.o.bz2 \
 	     run-strip-strmerge.sh run-strip-nobitsalign.sh \
 	     testfile-nobitsalign.bz2 testfile-nobitsalign.strip.bz2 \
-	     run-strip-reloc.sh hello_i386.ko.bz2 hello_x86_64.ko.bz2 \
+	     run-strip-reloc-ko.sh run-strip-reloc-self.sh \
+	     run-strip-reloc-ppc64.sh strip-reloc-subr.sh \
+	     hello_i386.ko.bz2 hello_x86_64.ko.bz2 \
 	     hello_ppc64.ko.bz2 hello_s390.ko.bz2 hello_aarch64.ko.bz2 \
 	     hello_m68k.ko.bz2 hello_riscv64.ko.bz2 hello_csky.ko.bz2 \
 	     hello_arc_hs4.ko.bz2 \
@@ -316,7 +324,8 @@
 	     run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
 	     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-srcfiles-self.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 \
@@ -410,7 +419,8 @@
 	     run-readelf-Dd.sh \
 	     testfile-s390x-hash-both.bz2 \
 	     run-readelf-gdb_index.sh testfilegdbindex5.bz2 \
-	     testfilegdbindex7.bz2 \
+	     testfilegdbindex7.bz2 testfilegdbindex9.bz2 \
+	     testfilegdbindex9-no-maininfo.bz2 \
 	     run-readelf-s.sh testfilebazdbg.bz2 testfilebazdyn.bz2 \
 	     testfilebazmin.bz2 testfilebazdbg.debug.bz2 testfilebazmdb.bz2 \
 	     testfilebaztab.bz2 testfilebasmin.bz2 testfilebaxmin.bz2 \
@@ -538,7 +548,9 @@
 	     testfile-riscv64.bz2 testfile-riscv64-s.bz2 \
 	     testfile-riscv64-core.bz2 \
 	     run-reverse-sections.sh run-reverse-sections-self.sh \
-	     run-copyadd-sections.sh run-copymany-sections.sh \
+	     run-copyadd-sections.sh test-copymany-subr.sh \
+	     run-copymany-be32.sh run-copymany-le32.sh \
+	     run-copymany-be64.sh run-copymany-le64.sh \
 	     run-large-elf-file.sh \
 	     run-typeiter-many.sh run-strip-test-many.sh \
 	     testfile-debug-rel-ppc64-g.o.bz2 \
@@ -578,6 +590,7 @@
              run-debuginfod-extraction-passive.sh \
              run-debuginfod-webapi-concurrency.sh \
 	     run-debuginfod-section.sh \
+	     run-debuginfod-IXr.sh \
 	     debuginfod-rpms/fedora30/hello2-1.0-2.src.rpm \
 	     debuginfod-rpms/fedora30/hello2-1.0-2.x86_64.rpm \
 	     debuginfod-rpms/fedora30/hello2-debuginfo-1.0-2.x86_64.rpm \
@@ -664,7 +677,7 @@
 
 if BUILD_STATIC
 libdw = ../libdw/libdw.a -lz $(zip_LIBS) $(libelf) $(libebl) -ldl -lpthread
-libelf = ../libelf/libelf.a -lz
+libelf = ../libelf/libelf.a -lz $(zstd_LIBS)
 libasm = ../libasm/libasm.a
 else
 libdw = ../libdw/libdw.so
@@ -795,14 +808,22 @@
 read_unaligned_LDADD = $(libelf) $(libdw)
 nvidia_extended_linemap_libdw_LDADD = $(libelf) $(libdw)
 
-# We want to test the libelf header against the system elf.h header.
+# We want to test the libelf headers against the system elf.h header.
 # Don't include any -I CPPFLAGS. Except when we install our own elf.h.
+# For the gelf test we do want our own libelf.h, but nothing else.
+BUILT_SOURCES = libelf.h
+CLEANFILES += libelf.h
+libelf.h: $(top_srcdir)/libelf/libelf.h
+	cp $< $@
 if !INSTALL_ELFH
 system_elf_libelf_test_CPPFLAGS =
+system_elf_gelf_test_CPPFLAGS = -I.
 else
 system_elf_libelf_test_CPPFLAGS = -I$(top_srcdir)/libelf
+system_elf_gelf_test_CPPFLAGS = -I$(top_srcdir)/libelf
 endif
 system_elf_libelf_test_LDADD = $(libelf)
+system_elf_gelf_test_LDADD = $(libelf)
 
 # A lock file used to make sure only one test dumps core at a time
 CLEANFILES += core-dump-backtrace.lock
diff --git a/tests/addsections.c b/tests/addsections.c
index c1b0fa8..a4e4203 100644
--- a/tests/addsections.c
+++ b/tests/addsections.c
@@ -153,8 +153,8 @@
   size_t bufsz;
   if (sec_size == 0)
     {
-      buf = strdup ("extra");
-      bufsz = strlen ("extra") + 1;
+      buf = "";
+      bufsz = 1;
     }
   else
     {
@@ -293,7 +293,8 @@
       exit (1);
     }
 
-  free (buf);
+  if (sec_size != 0)
+    free (buf);
   free (new_shstrtab_buf);
 }
 
diff --git a/tests/backtrace.c b/tests/backtrace.c
index afc12fb..5555530 100644
--- a/tests/backtrace.c
+++ b/tests/backtrace.c
@@ -90,6 +90,14 @@
       return;
     }
   Dwfl_Module *mod;
+  /* Skip frames for which there isn't a function name.  */
+  static int nulls_seen = 0;
+  if (symname == NULL)
+    {
+      nulls_seen++;
+      return;
+    }
+  frameno -= nulls_seen;
   /* See case 4. Special case to help out simple frame pointer unwinders. */
   static bool duplicate_sigusr2 = false;
   if (duplicate_sigusr2)
diff --git a/tests/dwarf-getmacros.c b/tests/dwarf-getmacros.c
index ac70248..8381d42 100644
--- a/tests/dwarf-getmacros.c
+++ b/tests/dwarf-getmacros.c
@@ -82,6 +82,8 @@
 
     case DW_MACINFO_define:
     case DW_MACRO_define_strp:
+    case DW_MACRO_define_sup:
+    case DW_MACRO_define_strx:
       {
 	const char *value;
 	dwarf_macro_param2 (macro, NULL, &value);
@@ -91,6 +93,8 @@
 
     case DW_MACINFO_undef:
     case DW_MACRO_undef_strp:
+    case DW_MACRO_undef_sup:
+    case DW_MACRO_undef_strx:
       break;
 
     default:
@@ -117,26 +121,57 @@
       }
 }
 
+static void
+getmacros (Dwarf *dbg, Dwarf_Die *die, bool new_style)
+{
+  for (ptrdiff_t off = new_style ? DWARF_GETMACROS_START : 0;
+       (off = dwarf_getmacros (die, mac, dbg, off)); )
+    if (off == -1)
+      {
+	puts (dwarf_errmsg (-1));
+	break;
+      }
+}
+
 int
 main (int argc, char *argv[])
 {
   assert (argc >= 3);
   const char *name = argv[1];
-  ptrdiff_t cuoff = strtol (argv[2], NULL, 0);
   bool new_style = argc > 3;
 
   int fd = open (name, O_RDONLY);
   Dwarf *dbg = dwarf_begin (fd, DWARF_C_READ);
 
-  Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem);
-
-  for (ptrdiff_t off = new_style ? DWARF_GETMACROS_START : 0;
-       (off = dwarf_getmacros (cudie, mac, dbg, off)); )
-    if (off == -1)
-      {
-	puts (dwarf_errmsg (dwarf_errno ()));
-	break;
-      }
+  if (argv[2][0] == '\0')
+    {
+      Dwarf_CU *cu = NULL;
+      Dwarf_Die cudie, subdie;
+      uint8_t unit_type;
+      while (dwarf_get_units (dbg, cu, &cu, NULL,
+			      &unit_type, &cudie, &subdie) == 0)
+	{
+	  Dwarf_Die *die = (unit_type == DW_UT_skeleton
+			    ? &subdie : &cudie);
+	  if (! dwarf_hasattr (die, DW_AT_macro_info)
+	      && ! dwarf_hasattr (die, DW_AT_GNU_macros)
+	      && ! dwarf_hasattr (die, DW_AT_macros))
+	    continue;
+	  printf ("CU %s\n", dwarf_diename (die));
+	  getmacros (dbg, die, new_style);
+	}
+    }
+  else
+    {
+      ptrdiff_t cuoff = strtol (argv[2], NULL, 0);
+      Dwarf_Die cudie_mem, *cudie = dwarf_offdie (dbg, cuoff, &cudie_mem);
+      if (cudie == NULL)
+	{
+	  puts (dwarf_errmsg (-1));
+	  return 1;
+	}
+      getmacros (dbg, cudie, new_style);
+    }
 
   dwarf_end (dbg);
 
diff --git a/tests/run-copymany-be32.sh b/tests/run-copymany-be32.sh
new file mode 100755
index 0000000..dc32e7a
--- /dev/null
+++ b/tests/run-copymany-be32.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+. $srcdir/test-copymany-subr.sh
+
+# 32bit, big endian, rel
+testfiles testfile29
+test_copy_and_add testfile29
+test_copy_and_add testfile29.copy
+
+# 32bit, big endian, non-rel
+testfiles testfile26
+test_copy_and_add testfile26
+test_copy_and_add testfile26.copy
+
+exit 0
diff --git a/tests/run-copymany-be64.sh b/tests/run-copymany-be64.sh
new file mode 100755
index 0000000..1f06e07
--- /dev/null
+++ b/tests/run-copymany-be64.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+. $srcdir/test-copymany-subr.sh
+
+# 64bit, big endian, rel
+testfiles testfile23
+test_copy_and_add testfile23
+test_copy_and_add testfile23.copy
+
+# 64bit, big endian, non-rel
+testfiles testfile27
+test_copy_and_add testfile27
+test_copy_and_add testfile27.copy
+
+exit 0
diff --git a/tests/run-copymany-le32.sh b/tests/run-copymany-le32.sh
new file mode 100755
index 0000000..d47a90e
--- /dev/null
+++ b/tests/run-copymany-le32.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+. $srcdir/test-copymany-subr.sh
+
+# 32bit, little endian, rel
+testfiles testfile9
+test_copy_and_add testfile9
+test_copy_and_add testfile9.copy
+
+# 32bit, little endian, non-rel
+testfiles testfile
+test_copy_and_add testfile
+test_copy_and_add testfile.copy
+
+exit 0
diff --git a/tests/run-copymany-le64.sh b/tests/run-copymany-le64.sh
new file mode 100755
index 0000000..b563d9d
--- /dev/null
+++ b/tests/run-copymany-le64.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+. $srcdir/test-copymany-subr.sh
+
+# 64bit, little endian, rel
+testfiles testfile38
+test_copy_and_add testfile38
+test_copy_and_add testfile38.copy
+
+# 64bit, little endian, non-rel
+testfiles testfile10
+test_copy_and_add testfile10
+test_copy_and_add testfile10.copy
+
+exit 0
diff --git a/tests/run-debuginfod-IXr.sh b/tests/run-debuginfod-IXr.sh
new file mode 100755
index 0000000..631b7bb
--- /dev/null
+++ b/tests/run-debuginfod-IXr.sh
@@ -0,0 +1,94 @@
+#!/usr/bin/env bash
+#
+# Copyright (C) 2019-2023 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/debuginfod-subr.sh
+
+# for test case debugging, uncomment:
+set -x
+unset VALGRIND_CMD
+
+mkdir R Z
+# This variable is essential and ensures no time-race for claiming ports occurs
+# set base to a unique multiple of 100 not used in any other 'run-debuginfod-*' test
+base=10100
+get_ports
+
+DB=${PWD}/.debuginfod_tmp.sqlite
+tempfiles $DB
+export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache
+
+cp -rvp ${abs_srcdir}/debuginfod-rpms R
+
+if [ "$zstd" = "false" ]; then  # nuke the zstd fedora 31 ones
+    rm -vrf R/debuginfod-rpms/fedora31
+    rpms=0
+    tarxz=1
+    groomed=2
+else
+    rpms=6
+    tarxz=1
+    groomed=8
+fi
+
+cp -rvp ${abs_srcdir}/debuginfod-tars Z
+
+env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -X 'hello2' -I 'hello' -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v R Z > vlog$PORT1 2>&1 &
+PID1=$!
+tempfiles vlog$PORT1
+errfiles vlog$PORT1
+# Server must become ready
+wait_ready $PORT1 'ready' 1
+
+# Wait till both files are in the index and scan/index fully finished
+wait_ready $PORT1 'thread_work_total{role="traverse"}' 1
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+
+# Confirm that the hello3 files are excluded
+
+wait_ready $PORT1 'scanned_files_total{source=".rpm archive"}' $rpms
+wait_ready $PORT1 'scanned_files_total{source=".tar.xz archive"}' $tarxz
+
+
+kill $PID1
+wait $PID1
+PID1=0
+
+# Start second debuginfod, with exclusion of everything
+
+echo 'RERUN WITH -r and -X everything' >> vlog$PORT1
+
+env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -r -X '.*' -F -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v R Z >> vlog$PORT1 2>&1 &
+PID1=$!
+tempfiles vlog$PORT1
+errfiles vlog$PORT1
+# Server must become ready
+wait_ready $PORT1 'ready' 1
+
+wait_ready $PORT1 'thread_work_total{role="groom"}' 1
+wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
+wait_ready $PORT1 'thread_busy{role="scan"}' 0
+
+wait_ready $PORT1 'groomed_total{decision="stale"}' $groomed
+wait_ready $PORT1 'groom{statistic="files scanned (#)"}' 0
+
+kill $PID1
+wait $PID1
+PID1=0
+
+exit 0
diff --git a/tests/run-debuginfod-extraction.sh b/tests/run-debuginfod-extraction.sh
index 3ca31b8..da6b25c 100755
--- a/tests/run-debuginfod-extraction.sh
+++ b/tests/run-debuginfod-extraction.sh
@@ -32,7 +32,7 @@
 tempfiles $DB
 export DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache
 
-env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -F -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 -t0 -g0 -v R Z > vlog$PORT1 2>&1 &
+env LD_LIBRARY_PATH=$ldpath ${abs_builddir}/../debuginfod/debuginfod $VERBOSE -d $DB -F -R -Z .tar.xz -Z .tar.bz2=bzcat -p $PORT1 --scan-checkpoint=1 -t0 -g0 -v R Z > vlog$PORT1 2>&1 &
 PID1=$!
 tempfiles vlog$PORT1
 errfiles vlog$PORT1
@@ -61,6 +61,9 @@
 wait_ready $PORT1 'thread_work_pending{role="scan"}' 0
 wait_ready $PORT1 'thread_busy{role="scan"}' 0
 
+# Take a dump if possible
+type sqlite3 2>/dev/null && sqlite3 $DB '.d'
+
 ########################################################################
 # All rpms need to be in the index, except the dummy permission-000 one
 rpms=$(find R -name \*rpm | grep -v nothing | wc -l)
diff --git a/tests/run-debuginfod-federation-metrics.sh b/tests/run-debuginfod-federation-metrics.sh
index 3d71624..60fe69c 100755
--- a/tests/run-debuginfod-federation-metrics.sh
+++ b/tests/run-debuginfod-federation-metrics.sh
@@ -191,7 +191,8 @@
 # Use a file that hasn't been previously extracted in to make it
 # likely that even this test debuginfod will experience concurrency
 # and impose some "after-you" delays.
-(for i in `seq 100`; do
+maxreq=256
+(for i in `seq $maxreq`; do
     curl -s http://127.0.0.1:$PORT1/buildid/87c08d12c78174f1082b7c888b3238219b0eb265/executable >/dev/null &
  done;
  wait)
diff --git a/tests/run-debuginfod-federation-sqlite.sh b/tests/run-debuginfod-federation-sqlite.sh
index d932152..6b09007 100755
--- a/tests/run-debuginfod-federation-sqlite.sh
+++ b/tests/run-debuginfod-federation-sqlite.sh
@@ -157,7 +157,9 @@
 # Use a file that hasn't been previously extracted in to make it
 # likely that even this test debuginfod will experience concurrency
 # and impose some "after-you" delays.
-(for i in `seq 100`; do
+maxreq=$[$(nproc) * 4]
+maxreq=$(( $maxreq > 64 ? 64 : $maxreq ))
+(for i in `seq $maxreq`; do
     curl -s http://127.0.0.1:$PORT1/buildid/87c08d12c78174f1082b7c888b3238219b0eb265/executable >/dev/null &
  done;
  wait)
diff --git a/tests/run-debuginfod-query-retry.sh b/tests/run-debuginfod-query-retry.sh
index 2f551ff..d2cdfd6 100755
--- a/tests/run-debuginfod-query-retry.sh
+++ b/tests/run-debuginfod-query-retry.sh
@@ -26,7 +26,7 @@
 # set up tests for retrying failed queries.
 retry_attempts=`(testrun env DEBUGINFOD_URLS=http://255.255.255.255/JUNKJUNK DEBUGINFOD_RETRY_LIMIT=10 DEBUGINFOD_VERBOSE=1 DEBUGINFOD_CACHE_PATH=${PWD}/.client_cache \
     ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo \
-    ${abs_top_builddir}/debuginfod/libdebuginfod.so.1 || true) \
+    ${abs_top_builddir}/debuginfod/debuginfod-find || true) \
     2>&1 >/dev/null | grep -c 'Retry failed query'`
 if [ $retry_attempts -ne 10 ]; then
     echo "retry mechanism failed."
diff --git a/tests/run-debuginfod-response-headers.sh b/tests/run-debuginfod-response-headers.sh
index 8cb7b84..fbb6a48 100755
--- a/tests/run-debuginfod-response-headers.sh
+++ b/tests/run-debuginfod-response-headers.sh
@@ -78,8 +78,8 @@
 errfiles vlog-find$PORT1.1
 cat vlog-find$PORT1.1
 grep 'Headers:' vlog-find$PORT1.1
-grep -i 'X-DEBUGINFOD-FILE: prog' vlog-find$PORT1.1
-grep -i 'X-DEBUGINFOD-SIZE: '     vlog-find$PORT1.1
+grep -i 'X-DEBUGINFOD-FILE: .*/prog' vlog-find$PORT1.1
+grep -i 'X-DEBUGINFOD-SIZE: '        vlog-find$PORT1.1
 
 # Check to see if an executable file located in an archive prints the file's description and archive
 env DEBUGINFOD_URLS="http://127.0.0.1:"$PORT1 LD_LIBRARY_PATH=$ldpath ${abs_top_builddir}/debuginfod/debuginfod-find\
@@ -88,9 +88,9 @@
 errfiles vlog-find$PORT1.2
 cat vlog-find$PORT1.2
 grep 'Headers:'               vlog-find$PORT1.2
-grep -i 'X-DEBUGINFOD-FILE: '    vlog-find$PORT1.2
+grep -i 'X-DEBUGINFOD-FILE: .*/.*'    vlog-find$PORT1.2
 grep -i 'X-DEBUGINFOD-SIZE: '    vlog-find$PORT1.2
-grep -i 'X-DEBUGINFOD-ARCHIVE: ' vlog-find$PORT1.2
+grep -i 'X-DEBUGINFOD-ARCHIVE: .*/.*' vlog-find$PORT1.2
 
 # Check that X-DEBUGINFOD-SIZE matches the size of each file
 for file in vlog-find$PORT1.1 vlog-find$PORT1.2
diff --git a/tests/run-lfs-symbols.sh b/tests/run-lfs-symbols.sh
index 762a5d9..88c6270 100755
--- a/tests/run-lfs-symbols.sh
+++ b/tests/run-lfs-symbols.sh
@@ -42,13 +42,13 @@
 LFS=$(printf "$LFS_FORMAT" "${abs_srcdir}/lfs-symbols")
 
 makeprint() {
-  make print-$1 -C $2 |& awk -F= "/^$1=/{ print \$2 }"
+  make print-$1 -C $2 |& gawk -F= "/^$1=/{ print \$2 }"
 }
 
 testrun_lfs() {
   echo "checking $1"
   if [ -e "$1" ]; then
-    bad=$(testrun ${abs_top_builddir}/src/nm -u "$1" | awk "$LFS")
+    bad=$(testrun ${abs_top_builddir}/src/nm -u "$1" | gawk "$LFS")
     if [ -n "$bad" ]; then
       echo "$1 contains non-lfs symbols:" $bad
       exit_status=1
diff --git a/tests/run-native-test.sh b/tests/run-native-test.sh
index d19007f..042a51c 100755
--- a/tests/run-native-test.sh
+++ b/tests/run-native-test.sh
@@ -27,7 +27,8 @@
 # in all builds.
 
 tempfiles native.c native
-echo 'main () { while (1) pause (); }' > native.c
+printf '#include <unistd.h>\nint main (void) { while (1) pause (); }\n' \
+  > native.c
 
 native=0
 kill_native()
diff --git a/tests/run-readelf-gdb_index.sh b/tests/run-readelf-gdb_index.sh
index fcbc3c5..cd437f5 100755
--- a/tests/run-readelf-gdb_index.sh
+++ b/tests/run-readelf-gdb_index.sh
@@ -63,7 +63,7 @@
 # (gdb) save gdb-index .
 # objcopy --add-section .gdb_index=testfilegdbindex7.gdb-index --set-section-flags .gdb_index=readonly testfilegdbindex7 testfilegdbindex7
 
-testfiles testfilegdbindex5 testfilegdbindex7
+testfiles testfilegdbindex5 testfilegdbindex7 testfilegdbindex9 testfilegdbindex9-no-maininfo
 
 testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex5 <<\EOF
 
@@ -127,4 +127,97 @@
  [ 754] symbol: int, CUs: 0 (type:S)
 EOF
 
+# testfilegdbindex9-no-maininfo is built the same way as testfilegdbindex7.
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex9-no-maininfo <<\EOF
+
+GDB section [33] '.gdb_index' at offset 0x38e1 contains 8415 bytes :
+ Version:         9
+ CU offset:       0x1c
+ TU offset:       0x3c
+ address offset:  0x54
+ symbol offset:   0x7c
+ shortcut offset: 0x207c
+ constant offset: 0x2084
+
+ CU list at offset 0x1c contains 2 entries:
+ [   0] start: 0x00004c, length:   220
+ [   1] start: 0x000128, length:   214
+
+ TU list at offset 0x3c contains 1 entries:
+ [   0] CU offset:     0, type offset:    30, signature: 0x87e03f92cc37cdf0
+
+ Address list at offset 0x54 contains 2 entries:
+ [   0] 0x0000000000401106 <main>..0x000000000040113b <main+0x35>, CU index:     1
+ [   1] 0x000000000040113c <hello>..0x0000000000401173 <say+0x1c>, CU index:     2
+
+ Symbol table at offset 0x54 contains 1024 slots:
+ [ 123] symbol: global, CUs: 1 (var:G), 0T (var:G)
+ [ 489] symbol: main, CUs: 1 (func:G)
+ [ 518] symbol: char, CUs: 0 (type:S)
+ [ 661] symbol: foo, CUs: 0 (type:S)
+ [ 741] symbol: hello, CUs: 1 (var:S), 0T (func:S)
+ [ 746] symbol: say, CUs: 0T (func:G)
+ [ 754] symbol: int, CUs: 1 (type:S)
+
+Shortcut table at offset 0x207c contains 2 slots:
+Language of main: ??? (0)
+Name of main: <unknown>
+EOF
+
+# testfilegdbindex9.f90
+#
+# program repro
+#  type small_stride
+#     character*40 long_string
+#     integer      small_pad
+#  end type small_stride
+#  type(small_stride), dimension (20), target :: unpleasant
+#  character*40, pointer, dimension(:):: c40pt
+#  integer i
+#  do i = 0,19
+#     unpleasant(i+1)%small_pad = i+1
+#     unpleasant(i+1)%long_string = char (ichar('0') + i)
+#  end do
+#  c40pt => unpleasant%long_string
+#  print *, c40pt
+#end program repro
+
+# gfortran -g -o testfilegdbindex9 testfilegdbindex9.f90
+# gdb-add-index testfilegdbindex9
+
+testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=gdb_index testfilegdbindex9 <<\EOF
+
+GDB section [35] '.gdb_index' at offset 0x37d9 contains 8395 bytes :
+ Version:         9
+ CU offset:       0x1c
+ TU offset:       0x2c
+ address offset:  0x2c
+ symbol offset:   0x40
+ shortcut offset: 0x2040
+ constant offset: 0x2048
+
+ CU list at offset 0x1c contains 1 entries:
+ [   0] start: 00000000, length:   307
+
+ TU list at offset 0x2c contains 0 entries:
+
+ Address list at offset 0x2c contains 1 entries:
+ [   0] 0x0000000000401166 <MAIN__>..0x00000000004013f0 <main+0x3a>, CU index:     0
+
+ Symbol table at offset 0x2c contains 1024 slots:
+ [  61] symbol: small_stride, CUs: 0 (type:S)
+ [  71] symbol: integer(kind=8), CUs: 0 (type:S)
+ [ 161] symbol: character(kind=1), CUs: 0 (type:S)
+ [ 397] symbol: unpleasant, CUs: 0 (var:S)
+ [ 489] symbol: main, CUs: 0 (func:G)
+ [ 827] symbol: integer(kind=4), CUs: 0 (type:S)
+ [ 858] symbol: c40pt, CUs: 0 (var:S)
+ [ 965] symbol: repro, CUs: 0 (func:S)
+ [1016] symbol: i, CUs: 0 (var:S)
+
+Shortcut table at offset 0x2040 contains 2 slots:
+Language of main: Fortran08
+Name of main: repro
+EOF
+
 exit 0
diff --git a/tests/run-readelf-self.sh b/tests/run-readelf-self.sh
index f598459..de528d5 100755
--- a/tests/run-readelf-self.sh
+++ b/tests/run-readelf-self.sh
@@ -23,4 +23,4 @@
 fi
 
 # Just makes sure readelf doesn't crash
-testrun_on_self_quiet ${abs_top_builddir}/src/readelf -a -w
+testrun_on_self_quiet ${abs_top_builddir}/src/readelf -N -a -w
diff --git a/tests/run-srcfiles-self.sh b/tests/run-srcfiles-self.sh
new file mode 100755
index 0000000..0e64dd2
--- /dev/null
+++ b/tests/run-srcfiles-self.sh
@@ -0,0 +1,48 @@
+#! /bin/sh
+# Copyright (C) 2023 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
+
+# Test different command line combinations on the srcfiles binary itself.
+ET_EXEC="${abs_top_builddir}/src/srcfiles"
+ET_PID=$$
+
+SRC_NAME="srcfiles.cxx"
+
+# Ensure the output contains the expected source file srcfiles.cxx
+testrun $ET_EXEC -e $ET_EXEC | grep $SRC_NAME > /dev/null
+
+for null_arg in --null ""; do
+  for verbose_arg in --verbose ""; do
+    testrun $ET_EXEC $null_arg $verbose_arg -p $ET_PID > /dev/null
+
+    # Ensure that the output contains srclines.cxx
+    cu_only=$(testrun $ET_EXEC $null_arg $verbose_arg -c -e $ET_EXEC)
+    default=$(testrun $ET_EXEC $null_arg $verbose_arg -e $ET_EXEC)
+    result1=$(echo "$cu_only" | grep "$SRC_NAME")
+    result2=$(echo "$default" | grep "$SRC_NAME")
+
+    if [ -z "$result1" ] || [ -z "$result2" ]; then
+      exit 1
+    fi
+
+    # Ensure that the output with the cu-only option contains less source files
+    if [ $(echo "$cu_only" | wc -m) -gt $(echo "$default" | wc -m) ]; then
+      exit 1
+    fi
+  done
+done
diff --git a/tests/run-strip-reloc-ko.sh b/tests/run-strip-reloc-ko.sh
new file mode 100755
index 0000000..55fa74d
--- /dev/null
+++ b/tests/run-strip-reloc-ko.sh
@@ -0,0 +1,51 @@
+#! /bin/sh
+
+. $srcdir/strip-reloc-subr.sh
+
+testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko \
+	hello_aarch64.ko hello_m68k.ko hello_riscv64.ko hello_csky.ko \
+	hello_arc_hs4.ko
+
+# Most simple hello world kernel module for various architectures.
+# Make sure that it contains debuginfo with CONFIG_DEBUG_INFO=y.
+# ::::::::::::::
+# Makefile
+# ::::::::::::::
+# obj-m	:= hello.o
+# hello-y := init.o exit.o
+# 
+# all:
+# 	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \
+#		CONFIG_DEBUG_INFO=y modules
+# ::::::::::::::
+# init.c
+# ::::::::::::::
+# #include <linux/kernel.h>
+# #include <linux/module.h>
+# 
+# int init_module(void)
+# {
+#   printk(KERN_INFO "Hello, world!\n");
+#   return 0;
+# }
+# ::::::::::::::
+# exit.c
+# ::::::::::::::
+# #include <linux/kernel.h>
+# #include <linux/module.h>
+# 
+# void cleanup_module()
+# {
+#   printk(KERN_INFO "Goodbye, World!\n");
+# }
+runtest hello_i386.ko 1
+runtest hello_x86_64.ko 1
+runtest hello_ppc64.ko 1
+runtest hello_s390.ko 1
+runtest hello_aarch64.ko 1
+runtest hello_m68k.ko 1
+runtest hello_riscv64.ko 1
+runtest hello_csky.ko 1
+runtest hello_arc_hs4.ko 1
+
+exit $runtest_status
diff --git a/tests/run-strip-reloc-ppc64.sh b/tests/run-strip-reloc-ppc64.sh
new file mode 100755
index 0000000..239c34d
--- /dev/null
+++ b/tests/run-strip-reloc-ppc64.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+
+. $srcdir/strip-reloc-subr.sh
+
+# See run-readelf-zdebug-rel.sh
+testfiles testfile-debug-rel-ppc64.o
+runtest testfile-debug-rel-ppc64.o 1
+
+testfiles testfile-debug-rel-ppc64-z.o
+runtest testfile-debug-rel-ppc64-z.o 1
+
+testfiles testfile-debug-rel-ppc64-g.o
+runtest testfile-debug-rel-ppc64-g.o 1
+
+exit $runtest_status
diff --git a/tests/run-strip-reloc-self.sh b/tests/run-strip-reloc-self.sh
new file mode 100755
index 0000000..68ed4cc
--- /dev/null
+++ b/tests/run-strip-reloc-self.sh
@@ -0,0 +1,20 @@
+#! /bin/sh
+
+. $srcdir/strip-reloc-subr.sh
+
+# self test, shouldn't impact non-ET_REL files at all.
+runtest ${abs_top_builddir}/src/strip 0
+runtest ${abs_top_builddir}/src/strip.o 1
+
+# Copy ET_REL file for self-test and make sure to run with/without
+# elf section compression.
+tempfiles strip-uncompressed.o strip-compressed.o
+testrun ${abs_top_builddir}/src/elfcompress -o strip-uncompressed.o -t none \
+  ${abs_top_builddir}/src/strip.o
+testrun ${abs_top_builddir}/src/elfcompress -o strip-compressed.o -t zlib \
+  --force ${abs_top_builddir}/src/strip.o
+
+runtest strip-uncompressed.o 1
+runtest strip-compressed.o 1
+
+exit $runtest_status
diff --git a/tests/run-strip-reloc.sh b/tests/run-strip-reloc.sh
deleted file mode 100755
index 02e626a..0000000
--- a/tests/run-strip-reloc.sh
+++ /dev/null
@@ -1,156 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2011, 2013 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 test -n "$ELFUTILS_MEMORY_SANITIZER"; then
-  echo "binaries linked with memory sanitizer are too big"
-  exit 77
-fi
-
-testfiles hello_i386.ko hello_x86_64.ko hello_ppc64.ko hello_s390.ko \
-	hello_aarch64.ko hello_m68k.ko hello_riscv64.ko hello_csky.ko \
-	hello_arc_hs4.ko
-
-tempfiles readelf.out readelf.out1 readelf.out2
-tempfiles out.stripped1 out.debug1 out.stripped2 out.debug2
-
-status=0
-runtest() {
-  infile=$1
-  is_ET_REL=$2
-  outfile1=out.stripped1
-  debugfile1=out.debug1
-  outfile2=out.stripped2
-  debugfile2=out.debug2
-
-  echo "runtest $infile"
-
-  rm -f $outfile1 $debugfile1 $outfile2 $debugfile2
-
-  testrun ${abs_top_builddir}/src/strip -o $outfile1 -f $debugfile1 $infile ||
-  { echo "*** failure strip $infile"; status=1; }
-
-  testrun ${abs_top_builddir}/src/strip --reloc-debug-sections -o $outfile2 \
-	-f $debugfile2 $infile ||
-  { echo "*** failure strip --reloc-debug-sections $infile"; status=1; }
-
-  # shouldn't make any difference for stripped files.
-  testrun ${abs_top_builddir}/src/readelf -a $outfile1 > readelf.out ||
-  { echo "*** failure readelf -a outfile1 $infile"; status=1; }
-
-  testrun_compare ${abs_top_builddir}/src/readelf -a $outfile2 < readelf.out ||
-  { echo "*** failure compare stripped files $infile"; status=1; }
-
-  # debug files however should be smaller, when ET_REL.
-  SIZE1=$(stat -c%s $debugfile1)
-  SIZE2=$(stat -c%s $debugfile2)
-  test \( \( $is_ET_REL -eq 1 \) -a \( $SIZE1 -gt $SIZE2 \) \) \
-	-o \( \( $is_ET_REL -eq 0 \) -a \( $SIZE1 -eq $SIZE2 \) \) ||
-  { echo "*** failure --reloc-debug-sections not smaller $infile"; status=1; }
-
-  # Strip of DWARF section lines, offset will not match.
-  # Everything else should match.
-  testrun ${abs_top_builddir}/src/readelf -w $debugfile1 \
-	| grep -v ^DWARF\ section > readelf.out1 ||
-  { echo "*** failure readelf -w debugfile1 $infile"; status=1; }
-
-  testrun ${abs_top_builddir}/src/readelf -w $debugfile2 \
-	| grep -v ^DWARF\ section > readelf.out2 ||
-  { echo "*** failure readelf -w debugfile2 $infile"; status=1; }
-
-  testrun_compare cat readelf.out1 < readelf.out2 ||
-  { echo "*** failure readelf -w compare $infile"; status=1; }
-
-  testrun ${abs_top_builddir}/src/strip --reloc-debug-sections-only \
-	  $debugfile1 ||
-  { echo "*** failure strip --reloc-debug-sections-only $debugfile1"; \
-    status=1; }
-
-  cmp $debugfile1 $debugfile2 ||
-  { echo "*** failure --reloc-debug-sections[-only] $debugfile1 $debugfile2"; \
-    status=1; }
-}
-
-# Most simple hello world kernel module for various architectures.
-# Make sure that it contains debuginfo with CONFIG_DEBUG_INFO=y.
-# ::::::::::::::
-# Makefile
-# ::::::::::::::
-# obj-m	:= hello.o
-# hello-y := init.o exit.o
-# 
-# all:
-# 	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) \
-#		CONFIG_DEBUG_INFO=y modules
-# ::::::::::::::
-# init.c
-# ::::::::::::::
-# #include <linux/kernel.h>
-# #include <linux/module.h>
-# 
-# int init_module(void)
-# {
-#   printk(KERN_INFO "Hello, world!\n");
-#   return 0;
-# }
-# ::::::::::::::
-# exit.c
-# ::::::::::::::
-# #include <linux/kernel.h>
-# #include <linux/module.h>
-# 
-# void cleanup_module()
-# {
-#   printk(KERN_INFO "Goodbye, World!\n");
-# }
-runtest hello_i386.ko 1
-runtest hello_x86_64.ko 1
-runtest hello_ppc64.ko 1
-runtest hello_s390.ko 1
-runtest hello_aarch64.ko 1
-runtest hello_m68k.ko 1
-runtest hello_riscv64.ko 1
-runtest hello_csky.ko 1
-runtest hello_arc_hs4.ko 1
-
-# self test, shouldn't impact non-ET_REL files at all.
-runtest ${abs_top_builddir}/src/strip 0
-runtest ${abs_top_builddir}/src/strip.o 1
-
-# Copy ET_REL file for self-test and make sure to run with/without
-# elf section compression.
-tempfiles strip-uncompressed.o strip-compressed.o
-testrun ${abs_top_builddir}/src/elfcompress -o strip-uncompressed.o -t none \
-  ${abs_top_builddir}/src/strip.o
-testrun ${abs_top_builddir}/src/elfcompress -o strip-compressed.o -t zlib \
-  --force ${abs_top_builddir}/src/strip.o
-
-runtest strip-uncompressed.o 1
-runtest strip-compressed.o 1
-
-# See run-readelf-zdebug-rel.sh
-testfiles testfile-debug-rel-ppc64.o
-runtest testfile-debug-rel-ppc64.o 1
-
-testfiles testfile-debug-rel-ppc64-z.o
-runtest testfile-debug-rel-ppc64-z.o 1
-
-testfiles testfile-debug-rel-ppc64-g.o
-runtest testfile-debug-rel-ppc64-g.o 1
-
-exit $status
diff --git a/tests/run-varlocs.sh b/tests/run-varlocs.sh
index b262177..cbbcf6c 100755
--- a/tests/run-varlocs.sh
+++ b/tests/run-varlocs.sh
@@ -206,7 +206,7 @@
 testfiles testfile-ranges-hello5.dwo testfile-ranges-world5.dwo
 testrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfilesplitranges5.debug <<\EOF
 module 'testfilesplitranges5.debug'
-[14] CU 'hello.c'
+[14] CU 'hello.c'@0
   [1d] function 'no_say'@401160
     frame_base: {call_frame_cfa {...}}
     [33] parameter 'prefix'
@@ -236,7 +236,7 @@
     [111] parameter 'count'
       [401150,401160) {reg4}
 module 'testfilesplitranges5.debug'
-[14] CU 'world.c'
+[14] CU 'world.c'@401180
   [1d] function 'no_main'@4011d0
     frame_base: {call_frame_cfa {...}}
     [35] parameter 'argc'
@@ -282,7 +282,7 @@
 testfiles testfile-ranges-hello.dwo testfile-ranges-world.dwo
 testrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfilesplitranges4.debug <<\EOF
 module 'testfilesplitranges4.debug'
-[b] CU 'hello.c'
+[b] CU 'hello.c'@0
   [18] function 'no_say'@4004f0
     frame_base: {call_frame_cfa {...}}
     [2f] parameter 'prefix'
@@ -310,7 +310,7 @@
     [102] parameter 'count'
       [4004e0,4004f0) {reg4}
 module 'testfilesplitranges4.debug'
-[b] CU 'world.c'
+[b] CU 'world.c'@400500
   [18] function 'no_main'@400550
     frame_base: {call_frame_cfa {...}}
     [2f] parameter 'argc'
@@ -373,7 +373,7 @@
 testfiles testfile-addrx_constx-5 addrx_constx-5.dwo
 testrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-addrx_constx-5 <<\EOF
 module 'testfile-addrx_constx-5'
-[14] CU 'addrx_constx.c'
+[14] CU 'addrx_constx.c'@0
   producer (strx)
   language (data1)
   name (strx)
@@ -467,7 +467,7 @@
 testfiles testfile-addrx_constx-4 addrx_constx-4.dwo
 testrun_compare ${abs_top_builddir}/tests/varlocs --exprlocs -e testfile-addrx_constx-4 <<\EOF
 module 'testfile-addrx_constx-4'
-[b] CU 'addrx_constx.c'
+[b] CU 'addrx_constx.c'@0
   producer (GNU_str_index)
   language (data1)
   name (GNU_str_index)
@@ -565,7 +565,7 @@
 
 testrun_compare ${abs_top_builddir}/tests/varlocs --debug -e testfile-splitdwarf4-not-split4.debug <<\EOF
 module 'testfile-splitdwarf4-not-split4.debug'
-[b] CU 'splitdwarf4-not-split4.c'
+[b] CU 'splitdwarf4-not-split4.c'@0
   [18] function 'main'@401050
     frame_base: {call_frame_cfa {...}}
     [30] parameter 'argc'
diff --git a/tests/strip-reloc-subr.sh b/tests/strip-reloc-subr.sh
new file mode 100755
index 0000000..c4d55ce
--- /dev/null
+++ b/tests/strip-reloc-subr.sh
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2011, 2013 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 test -n "$ELFUTILS_MEMORY_SANITIZER"; then
+  echo "binaries linked with memory sanitizer are too big"
+  exit 77
+fi
+
+tempfiles readelf.out1 readelf.out2
+tempfiles out.stripped1 out.debug1 out.stripped2 out.debug2
+
+runtest_status=0
+runtest() {
+  infile=$1
+  is_ET_REL=$2
+  outfile1=out.stripped1
+  debugfile1=out.debug1
+  outfile2=out.stripped2
+  debugfile2=out.debug2
+
+  echo "runtest $infile"
+
+  rm -f $outfile1 $debugfile1 $outfile2 $debugfile2
+
+  testrun ${abs_top_builddir}/src/strip -o $outfile1 -f $debugfile1 $infile ||
+  { echo "*** failure strip $infile"; runtest_status=1; }
+
+  testrun ${abs_top_builddir}/src/strip --reloc-debug-sections -o $outfile2 \
+	-f $debugfile2 $infile ||
+  { echo "*** failure strip --reloc-debug-sections $infile"; runtest_status=1; }
+
+  testrun ${abs_top_builddir}/src/elfcmp $outfile1 $outfile2 ||
+  { echo "*** failure compare stripped files $infile"; runtest_status=1; }
+
+  # debug files however should be smaller, when ET_REL.
+  SIZE1=$(stat -c%s $debugfile1)
+  SIZE2=$(stat -c%s $debugfile2)
+  test \( \( $is_ET_REL -eq 1 \) -a \( $SIZE1 -gt $SIZE2 \) \) \
+	-o \( \( $is_ET_REL -eq 0 \) -a \( $SIZE1 -eq $SIZE2 \) \) ||
+  { echo "*** failure --reloc-debug-sections not smaller $infile"; runtest_status=1; }
+
+  # Strip of DWARF section lines, offset will not match.
+  # Everything else should match.
+  testrun ${abs_top_builddir}/src/readelf -N -w $debugfile1 \
+	| grep -v ^DWARF\ section > readelf.out1 ||
+  { echo "*** failure readelf -N -w debugfile1 $infile"; runtest_status=1; }
+
+  testrun ${abs_top_builddir}/src/readelf -N -w $debugfile2 \
+	| grep -v ^DWARF\ section > readelf.out2 ||
+  { echo "*** failure readelf -N -w debugfile2 $infile"; runtest_status=1; }
+
+  testrun_compare cat readelf.out1 < readelf.out2 ||
+  { echo "*** failure readelf -N -w compare $infile"; runtest_status=1; }
+
+  testrun ${abs_top_builddir}/src/strip --reloc-debug-sections-only \
+	  $debugfile1 ||
+  { echo "*** failure strip --reloc-debug-sections-only $debugfile1"; \
+    runtest_status=1; }
+
+  cmp $debugfile1 $debugfile2 ||
+  { echo "*** failure --reloc-debug-sections[-only] $debugfile1 $debugfile2"; \
+    runtest_status=1; }
+}
diff --git a/tests/system-elf-gelf-test.c b/tests/system-elf-gelf-test.c
new file mode 100644
index 0000000..5a0e4e7
--- /dev/null
+++ b/tests/system-elf-gelf-test.c
@@ -0,0 +1,36 @@
+/* Explicit test compiling with system elf.h header plus libelf/gelf headers.
+
+   Copyright (C) Mark J. Wielaard <mark@klomp.org>
+   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 <elf.h>
+#include <stddef.h>
+#include "../libelf/libelf.h"
+#include "../libelf/gelf.h"
+
+int
+main (void)
+{
+  /* Trivial test, this is really a compile test anyway.  */
+  if (elf_version (EV_CURRENT) == EV_NONE)
+    return -1;
+
+  /* This will obviously fail. It is just to check that gelf_getclass
+     available (both at compile time and runtime).  */
+  int cls = gelf_getclass (NULL);
+
+  return cls == ELFCLASSNONE ? 0 : -1;
+}
diff --git a/tests/run-copymany-sections.sh b/tests/test-copymany-subr.sh
similarity index 64%
rename from tests/run-copymany-sections.sh
rename to tests/test-copymany-subr.sh
index 84c052c..054103b 100755
--- a/tests/run-copymany-sections.sh
+++ b/tests/test-copymany-subr.sh
@@ -35,12 +35,13 @@
   testrun ${abs_top_builddir}/src/elfcmp ${in_file} ${out_file}
 
   # Can we add a section (in-place)?
-  testrun ${abs_builddir}/addsections 65535 ${out_file}
+  testrun ${abs_builddir}/addsections 32768 ${out_file}
   testrun ${abs_top_builddir}/src/readelf -S ${out_file} > readelf.out
   nr=$(grep '.extra' readelf.out | wc -l)
   # We try twice...
-  if test ${nr} != 65535 -a ${nr} != 131070; then
+  if test ${nr} != 32768 -a ${nr} != 65536; then
     # Show what went wrong
+    echo nr: ${nr}
     testrun ${abs_top_builddir}/src/readelf -S ${out_file}
     exit 1
   fi
@@ -54,46 +55,8 @@
 
 # A collection of random testfiles to test 32/64bit, little/big endian
 # and non-ET_REL (with phdrs)/ET_REL (without phdrs).
-# Try to add 0xffff sections twice.
+# Try to add 0x0fff sections twice.
 
-# 32bit, big endian, rel
-testfiles testfile29
-test_copy_and_add testfile29
-test_copy_and_add testfile29.copy
-
-# 64bit, big endian, rel
-testfiles testfile23
-test_copy_and_add testfile23
-test_copy_and_add testfile23.copy
-
-# 32bit, little endian, rel
-testfiles testfile9
-test_copy_and_add testfile9
-test_copy_and_add testfile9.copy
-
-# 64bit, little endian, rel
-testfiles testfile38
-test_copy_and_add testfile38
-test_copy_and_add testfile38.copy
-
-# 32bit, big endian, non-rel
-testfiles testfile26
-test_copy_and_add testfile26
-test_copy_and_add testfile26.copy
-
-# 64bit, big endian, non-rel
-testfiles testfile27
-test_copy_and_add testfile27
-test_copy_and_add testfile27.copy
-
-# 32bit, little endian, non-rel
-testfiles testfile
-test_copy_and_add testfile
-test_copy_and_add testfile.copy
-
-# 64bit, little endian, non-rel
-testfiles testfile10
-test_copy_and_add testfile10
-test_copy_and_add testfile10.copy
-
-exit 0
+# Separated out into subtests
+# run-copymany-be32.sh run-copymany-be64.sh
+# run-copymany-le32.sh run-copymany-le64.sh
diff --git a/tests/testfilegdbindex9-no-maininfo.bz2 b/tests/testfilegdbindex9-no-maininfo.bz2
new file mode 100755
index 0000000..043b8d3
--- /dev/null
+++ b/tests/testfilegdbindex9-no-maininfo.bz2
Binary files differ
diff --git a/tests/testfilegdbindex9.bz2 b/tests/testfilegdbindex9.bz2
new file mode 100755
index 0000000..9a2c189
--- /dev/null
+++ b/tests/testfilegdbindex9.bz2
Binary files differ
diff --git a/version.h b/version.h
index 5d86cd9..f3e0b00 100644
--- a/version.h
+++ b/version.h
@@ -30,7 +30,7 @@
 #ifndef _ELFUTILS_VERSION_H
 #define _ELFUTILS_VERSION_H	1
 
-#define _ELFUTILS_VERSION	189
+#define _ELFUTILS_VERSION	190
 
 #define _ELFUTILS_PREREQ(major, minor) \
   (_ELFUTILS_VERSION >= ((major) * 1000 + (minor)))