Snap for 6686656 from 197f13f7a0bdd4c7274032197329eac70d99bb61 to sdk-release

Change-Id: Iaa3c4d0736f22418c04338c503e9fd74e635e244
diff --git a/.gitignore b/.gitignore
index 43fb727..c979094 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,6 +33,7 @@
 /config/install-sh
 /config/libdw.pc
 /config/libelf.pc
+/config/libdebuginfod.pc
 /config/missing
 /config/test-driver
 /config/ylwrap
@@ -43,6 +44,8 @@
 /libcpu/*_gendis
 /libcpu/*_lex.c
 /libcpu/*_parse.[ch]
+/debuginfod/debuginfod
+/debuginfod/debuginfod-find
 /libdw/known-dwarf.h
 /po/*.gmo
 /po/*.pot
@@ -76,8 +79,10 @@
 /tests/*.trs
 /tests/addrcfi
 /tests/addrscopes
+/tests/addsections
 /tests/aggregate_size
 /tests/alldts
+/tests/all-dwarf-ranges
 /tests/allfcts
 /tests/allregs
 /tests/arextract
@@ -92,6 +97,7 @@
 /tests/asm-tst7
 /tests/asm-tst8
 /tests/asm-tst9
+/tests/attr-integrate-skel
 /tests/backtrace
 /tests/backtrace-child
 /tests/backtrace-child-biarch
@@ -99,28 +105,35 @@
 /tests/backtrace-dwarf
 /tests/buildid
 /tests/debugaltlink
+/tests/debuginfod_build_id_find
 /tests/debuglink
 /tests/deleted
+/tests/dwarfcfi
+/tests/dwarf_default_lower_bound
+/tests/dwarf-die-addr-die
 /tests/dwarf-getmacros
 /tests/dwarf-getstring
 /tests/dwarf-ranges
+/tests/dwelf_elf_e_machine_string
 /tests/dwelfgnucompressed
 /tests/dwfl-addr-sect
 /tests/dwfl-bug-addr-overflow
 /tests/dwfl-bug-fd-leak
 /tests/dwfl-bug-getmodules
 /tests/dwfl-bug-report
+/tests/dwfllines
+/tests/dwflmodtest
 /tests/dwfl-proc-attach
 /tests/dwfl-report-elf-align
 /tests/dwfl-report-segment-contiguous
-/tests/dwfllines
-/tests/dwflmodtest
 /tests/dwflsyms
 /tests/early-offscn
 /tests/ecp
+/tests/elfcopy
 /tests/elfgetchdr
 /tests/elfgetzdata
 /tests/elfputzdata
+/tests/elfrdwrnop
 /tests/elfshphehdr
 /tests/elfstrmerge
 /tests/elfstrtab
@@ -132,8 +145,11 @@
 /tests/get-aranges
 /tests/get-files
 /tests/get-lines
+/tests/getphdrnum
 /tests/get-pubnames
 /tests/getsrc_die
+/tests/get-units-invalid
+/tests/get-units-split
 /tests/hash
 /tests/line2addr
 /tests/low_high_pc
@@ -141,6 +157,9 @@
 /tests/newdata
 /tests/newfile
 /tests/newscn
+/tests/next_cfi
+/tests/next-files
+/tests/next-lines
 /tests/peel_type
 /tests/rdwrmmap
 /tests/rerequest_tag
@@ -157,12 +176,14 @@
 /tests/test-nlist
 /tests/typeiter
 /tests/typeiter2
+/tests/unit-info
 /tests/update1
 /tests/update2
 /tests/update3
 /tests/update4
 /tests/varlocs
-/tests/vendorelf
 /tests/vdsosyms
+/tests/vendorelf
+/tests/xlate_notes
 /tests/zstrptr
 /version.h
diff --git a/Android.bp b/Android.bp
index 375e36d..992122f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,3 +1,68 @@
+// Copyright (C) 2013 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_defaults {
+    name: "elfutils_defaults",
+    cflags: [
+        "-DHAVE_CONFIG_H",
+        "-D_GNU_SOURCE",
+        "-std=gnu99",
+        "-Werror",
+        // to suppress the "pointer of type ‘void *’ used in arithmetic" warning
+        "-Wno-pointer-arith",
+        "-Wno-typedef-redefinition",
+    ],
+    header_libs: [
+         "elfutils_headers",
+    ],
+    export_header_lib_headers: ["elfutils_headers"],
+}
+
+cc_library {
+    name: "libelf",
+    host_supported: true,
+    vendor_available: true,
+    defaults: ["elfutils_defaults"],
+
+    srcs:  ["libelf/*.c",],
+
+    static_libs: ["libz"],
+
+    export_include_dirs: ["libelf"],
+
+    target: {
+        darwin: {
+            enabled: false,
+        },
+        android: {
+            cflags: [
+                "-D_FILE_OFFSET_BITS=64",
+                "-include AndroidFixup.h",
+            ],
+            shared: {
+                enabled: false,
+            },
+        },
+    },
+
+    visibility: [
+        "//device/google/contexthub/util/nanoapp_postprocess",
+        "//external/igt-gpu-tools",
+        "//external/mesa3d",
+    ],
+}
+
 cc_library_headers {
     name: "elfutils_headers",
     host_supported: true,
@@ -15,4 +80,3 @@
     visibility: [":__subpackages__"],
 }
 
-subdirs = ["libelf"]
diff --git a/ChangeLog b/ChangeLog
index 854568e..763fa00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2020-06-11  Mark Wielaard  <mark@klomp.org>
+
+	* configure.ac: Set version to 0.180.
+	* NEWS: Add 0.180 section.
+	* .gitignore: Update with new generated file.
+
+2020-06-10  Mark Wielaard  <mark@klomp.org>
+
+	* configure.ac (MODVERSION): Remove.
+
 2020-03-30  Mark Wielaard  <mark@klomp.org>
 
 	* configure.ac: Set version to 0.179.
diff --git a/CleanSpec.mk b/CleanSpec.mk
deleted file mode 100644
index 20d1ae7..0000000
--- a/CleanSpec.mk
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2007 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# If you don't need to do a full clean build but would like to touch
-# a file or delete some intermediate files, add a clean step to the end
-# of the list.  These steps will only be run once, if they haven't been
-# run before.
-#
-# E.g.:
-#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
-#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
-#
-# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
-# files that are missing or have been moved.
-#
-# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
-# Use $(OUT_DIR) to refer to the "out" directory.
-#
-# If you need to re-do something that's already mentioned, just copy
-# the command and add it to the bottom of the list.  E.g., if a change
-# that you made last week required touching a file and a change you
-# made today requires touching the same file, just copy the old
-# touch step and add it to the end of the list.
-#
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
-
-# For example:
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
-#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
-#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
-#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
-
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libdw_intermediates)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libdwfl_intermediates)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libelf_intermediates)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libebl_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libdw_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libdwfl_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libelf_intermediates)
-$(call add-clean-step, rm -rf $(HOST_OUT)/obj/STATIC_LIBRARIES/libebl_intermediates)
-
-# ************************************************
-# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
-# ************************************************
diff --git a/NEWS b/NEWS
index d26dcce..3d097c6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,17 @@
+Version 0.180
+
+elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given.
+
+libdw, readelf: Handle GCC LTO .gnu.debuglto_ prefix.
+
+libdw: Use correct CU to resolve file names in dwarf_decl_file.
+
+libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo.
+
+size: Also obey radix printing for bsd format.
+
+nm: Explicitly print weak 'V' or 'T' and common 'C' symbols.
+
 Version 0.179
 
 debuginfod-client: When DEBUGINFOD_PROGRESS is set and the program doesn't
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 3f5f9bb..7d3578b 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,23 @@
+2020-06-10  Mark Wielard  <mark@klomp.org>
+
+	* aarch64_init.c (aarch64_init): Remove ehlen, return eh.
+	* alpha_init.c (alpha_init): Likewise.
+	* arm_init.c (arm_init): Likewise.
+	* bpf_init.c (bpf_init): Likewise.
+	* csky_init.c (csky_init): Likewise.
+	* i386_init.c (i386_init): Likewise.
+	* ia64_init.c (ia64_init): Likewise.
+	* m68k_init.c (m68k_init): Likewise.
+	* ppc64_init.c (ppc64_init): Likewise.
+	* ppc_init.c (ppc_init): Likewise.
+	* riscv_init.c (riscv_init): Likewise.
+	* s390_init.c (s390_init): Likewise.
+	* sh_init.c (sh_init): Likewise.
+	* sparc_init.c (sparc_init): Likewise.
+	* tilegx_init.c (tilegx_init): Likewise.
+	* x86_64_init.c (x86_64_init): Likewise.
+	* libebl_CPU.h (init): Adjust EBLHOOK signature.
+
 2019-07-05  Omar Sandoval  <osandov@fb.com>
 
 	* Makefile.am: Replace libcpu_{i386,x86_64,bpf}.a with libcpu.a.
diff --git a/backends/aarch64_init.c b/backends/aarch64_init.c
index 95268ae..66bfae9 100644
--- a/backends/aarch64_init.c
+++ b/backends/aarch64_init.c
@@ -38,16 +38,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 aarch64_init (Elf *elf __attribute__ ((unused)),
 	      GElf_Half machine __attribute__ ((unused)),
-	      Ebl *eh,
-	      size_t ehlen)
+	      Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   aarch64_init_reloc (eh);
   HOOK (eh, register_info);
@@ -65,5 +60,5 @@
   HOOK (eh, set_initial_registers_tid);
   HOOK (eh, unwind);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/alpha_init.c b/backends/alpha_init.c
index f66f40c..c69aec6 100644
--- a/backends/alpha_init.c
+++ b/backends/alpha_init.c
@@ -39,16 +39,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 alpha_init (Elf *elf __attribute__ ((unused)),
 	    GElf_Half machine __attribute__ ((unused)),
-	    Ebl *eh,
-	    size_t ehlen)
+	    Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   alpha_init_reloc (eh);
   HOOK (eh, dynamic_tag_name);
@@ -64,5 +59,5 @@
   HOOK (eh, auxv_info);
   eh->sysvhash_entrysize = sizeof (Elf64_Xword);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/arm_init.c b/backends/arm_init.c
index af023f0..edd53b7 100644
--- a/backends/arm_init.c
+++ b/backends/arm_init.c
@@ -39,16 +39,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 arm_init (Elf *elf __attribute__ ((unused)),
 	  GElf_Half machine __attribute__ ((unused)),
-	  Ebl *eh,
-	  size_t ehlen)
+	  Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   arm_init_reloc (eh);
   HOOK (eh, segment_type_name);
@@ -72,5 +67,5 @@
   /* Bit zero encodes whether an function address is THUMB or ARM. */
   eh->func_addr_mask = ~(GElf_Addr)1;
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/bpf_init.c b/backends/bpf_init.c
index d407d37..f20f339 100644
--- a/backends/bpf_init.c
+++ b/backends/bpf_init.c
@@ -39,20 +39,16 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 bpf_init (Elf *elf __attribute__ ((unused)),
 	  GElf_Half machine __attribute__ ((unused)),
-	  Ebl *eh, size_t ehlen)
+	  Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   bpf_init_reloc (eh);
   HOOK (eh, register_info);
   HOOK (eh, disasm);
   HOOK (eh, reloc_simple_type);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/csky_init.c b/backends/csky_init.c
index b34a03a..b2863ce 100644
--- a/backends/csky_init.c
+++ b/backends/csky_init.c
@@ -37,16 +37,11 @@
 /* This defines the common reloc hooks based on csky_reloc.def.  */
 #include "common-reloc.c"
 
-const char *
+Ebl *
 csky_init (Elf *elf __attribute__ ((unused)),
 	   GElf_Half machine __attribute__ ((unused)),
-	   Ebl *eh,
-	   size_t ehlen)
+	   Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   csky_init_reloc (eh);
   HOOK (eh, abi_cfi);
@@ -61,5 +56,5 @@
   /* gcc/config/ #define DWARF_FRAME_REGISTERS.  */
   eh->frame_nregs = 38;
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/i386_init.c b/backends/i386_init.c
index 67428b5..3f6b9ed 100644
--- a/backends/i386_init.c
+++ b/backends/i386_init.c
@@ -38,16 +38,11 @@
 /* This defines the common reloc hooks based on i386_reloc.def.  */
 #include "common-reloc.c"
 
-const char *
+Ebl *
 i386_init (Elf *elf __attribute__ ((unused)),
 	   GElf_Half machine __attribute__ ((unused)),
-	   Ebl *eh,
-	   size_t ehlen)
+	   Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   i386_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -66,5 +61,5 @@
   HOOK (eh, set_initial_registers_tid);
   HOOK (eh, unwind);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/ia64_init.c b/backends/ia64_init.c
index 2d1f43f..b46b35c 100644
--- a/backends/ia64_init.c
+++ b/backends/ia64_init.c
@@ -38,16 +38,11 @@
 /* This defines the common reloc hooks based on ia64_reloc.def.  */
 #include "common-reloc.c"
 
-const char *
+Ebl *
 ia64_init (Elf *elf __attribute__ ((unused)),
 	   GElf_Half machine __attribute__ ((unused)),
-	   Ebl *eh,
-	   size_t ehlen)
+	   Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   ia64_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -61,5 +56,5 @@
   HOOK (eh, return_value_location);
   HOOK (eh, check_reloc_target_type);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/libebl_CPU.h b/backends/libebl_CPU.h
index ef2b922..0e507bd 100644
--- a/backends/libebl_CPU.h
+++ b/backends/libebl_CPU.h
@@ -37,8 +37,7 @@
 #define EBLHOOK_2(a, b)	a##b
 
 /* Constructor.  */
-extern const char *EBLHOOK(init) (Elf *elf, GElf_Half machine,
-				  Ebl *eh, size_t ehlen);
+extern Ebl *EBLHOOK(init) (Elf *elf, GElf_Half machine, Ebl *eh);
 
 #include "ebl-hooks.h"
 
diff --git a/backends/m68k_init.c b/backends/m68k_init.c
index 05d544c..7b94f23 100644
--- a/backends/m68k_init.c
+++ b/backends/m68k_init.c
@@ -37,16 +37,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 m68k_init (Elf *elf __attribute__ ((unused)),
 	   GElf_Half machine __attribute__ ((unused)),
-	   Ebl *eh,
-	   size_t ehlen)
+	   Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   m68k_init_reloc (eh);
   HOOK (eh, gotpc_reloc_check);
@@ -59,5 +54,5 @@
   eh->frame_nregs = 25;
   HOOK (eh, set_initial_registers_tid);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/ppc64_init.c b/backends/ppc64_init.c
index c2e7043..f509aef 100644
--- a/backends/ppc64_init.c
+++ b/backends/ppc64_init.c
@@ -41,16 +41,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 ppc64_init (Elf *elf __attribute__ ((unused)),
 	    GElf_Half machine __attribute__ ((unused)),
-	    Ebl *eh,
-	    size_t ehlen)
+	    Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   ppc64_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -107,5 +102,5 @@
 	}
     }
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/ppc_init.c b/backends/ppc_init.c
index eb286c2..ac440ab 100644
--- a/backends/ppc_init.c
+++ b/backends/ppc_init.c
@@ -39,16 +39,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 ppc_init (Elf *elf __attribute__ ((unused)),
 	  GElf_Half machine __attribute__ ((unused)),
-	  Ebl *eh,
-	  size_t ehlen)
+	  Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   ppc_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -69,5 +64,5 @@
   HOOK (eh, set_initial_registers_tid);
   HOOK (eh, dwarf_to_regno);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/riscv_init.c b/backends/riscv_init.c
index 9be5c6f..551e7bb 100644
--- a/backends/riscv_init.c
+++ b/backends/riscv_init.c
@@ -43,16 +43,11 @@
 
 extern __typeof (EBLHOOK (core_note)) riscv64_core_note attribute_hidden;
 
-const char *
+Ebl *
 riscv_init (Elf *elf,
 	    GElf_Half machine __attribute__ ((unused)),
-	    Ebl *eh,
-	    size_t ehlen)
+	    Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   riscv_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -73,5 +68,5 @@
 	  == EF_RISCV_FLOAT_ABI_DOUBLE))
     eh->return_value_location = riscv_return_value_location_lp64d;
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/s390_init.c b/backends/s390_init.c
index b4f3e7f..fd79502 100644
--- a/backends/s390_init.c
+++ b/backends/s390_init.c
@@ -40,16 +40,11 @@
 extern __typeof (s390_core_note) s390x_core_note;
 
 
-const char *
+Ebl *
 s390_init (Elf *elf __attribute__ ((unused)),
 	   GElf_Half machine __attribute__ ((unused)),
-	   Ebl *eh,
-	   size_t ehlen)
+	   Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   s390_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -75,5 +70,5 @@
   if (eh->class == ELFCLASS64)
     eh->sysvhash_entrysize = sizeof (Elf64_Xword);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/sh_init.c b/backends/sh_init.c
index 24f4d4a..05cf8b1 100644
--- a/backends/sh_init.c
+++ b/backends/sh_init.c
@@ -39,16 +39,11 @@
 #include "common-reloc.c"
 
 
-const char *
+Ebl *
 sh_init (Elf *elf __attribute__ ((unused)),
 	 GElf_Half machine __attribute__ ((unused)),
-	 Ebl *eh,
-	 size_t ehlen)
+	 Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   sh_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -58,5 +53,5 @@
   HOOK (eh, register_info);
   HOOK (eh, return_value_location);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/sparc_init.c b/backends/sparc_init.c
index 6daff11..647a789 100644
--- a/backends/sparc_init.c
+++ b/backends/sparc_init.c
@@ -44,16 +44,11 @@
 
 extern __typeof (EBLHOOK (core_note)) sparc64_core_note attribute_hidden;
 
-const char *
+Ebl *
 sparc_init (Elf *elf __attribute__ ((unused)),
 	    GElf_Half machine __attribute__ ((unused)),
-	    Ebl *eh,
-	    size_t ehlen)
+	    Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   sparc_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -79,5 +74,5 @@
   eh->ra_offset = 8;
   HOOK (eh, set_initial_registers_tid);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/tilegx_init.c b/backends/tilegx_init.c
index 66df931..0f79542 100644
--- a/backends/tilegx_init.c
+++ b/backends/tilegx_init.c
@@ -37,16 +37,11 @@
 /* This defines the common reloc hooks based on tilegx_reloc.def.  */
 #include "common-reloc.c"
 
-const char *
+Ebl *
 tilegx_init (Elf *elf __attribute__ ((unused)),
 	     GElf_Half machine __attribute__ ((unused)),
-	     Ebl *eh,
-	     size_t ehlen)
+	     Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   tilegx_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -54,5 +49,5 @@
   HOOK (eh, register_info);
   HOOK (eh, core_note);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/backends/x86_64_init.c b/backends/x86_64_init.c
index 8abafb7..44c1ad2 100644
--- a/backends/x86_64_init.c
+++ b/backends/x86_64_init.c
@@ -41,16 +41,11 @@
 
 extern __typeof (EBLHOOK (core_note)) x32_core_note attribute_hidden;
 
-const char *
+Ebl *
 x86_64_init (Elf *elf __attribute__ ((unused)),
 	     GElf_Half machine __attribute__ ((unused)),
-	     Ebl *eh,
-	     size_t ehlen)
+	     Ebl *eh)
 {
-  /* Check whether the Elf_BH object has a sufficent size.  */
-  if (ehlen < sizeof (Ebl))
-    return NULL;
-
   /* We handle it.  */
   x86_64_init_reloc (eh);
   HOOK (eh, reloc_simple_type);
@@ -70,5 +65,5 @@
   HOOK (eh, set_initial_registers_tid);
   HOOK (eh, unwind);
 
-  return MODVERSION;
+  return eh;
 }
diff --git a/config.h b/config.h
index 4bfca0b..5fd047b 100644
--- a/config.h
+++ b/config.h
@@ -7,6 +7,12 @@
 /* Should ar and ranlib use -D behavior by default? */
 #define DEFAULT_AR_DETERMINISTIC false
 
+/* Build debuginfod */
+/* #undef ENABLE_DEBUGINFOD */
+
+/* define if the compiler supports basic C++11 syntax */
+#define HAVE_CXX11 1
+
 /* Define to 1 if you have the declaration of `mempcpy', and to 0 if you
    don't. */
 #define HAVE_DECL_MEMPCPY 1
@@ -24,7 +30,7 @@
 #define HAVE_DECL_RAWMEMCHR 1
 
 /* Defined if __attribute__((fallthrough)) is supported */
-/* #undef HAVE_FALLTHROUGH  */
+/* #undef HAVE_FALLTHROUGH */
 
 /* Defined if __attribute__((gcc_struct)) is supported */
 /* #undef HAVE_GCC_STRUCT */
@@ -38,6 +44,9 @@
 /* Define to 1 if you have the `process_vm_readv' function. */
 #define HAVE_PROCESS_VM_READV 1
 
+/* Define to 1 if `stdatomic.h` is provided by the system, 0 otherwise. */
+#define HAVE_STDATOMIC_H 1
+
 /* Define to 1 if you have the <stdint.h> header file. */
 #define HAVE_STDINT_H 1
 
@@ -65,12 +74,6 @@
 /* Defined if __attribute__((visibility())) is supported */
 #define HAVE_VISIBILITY 1
 
-/* $libdir subdirectory containing libebl modules. */
-#define LIBEBL_SUBDIR "elfutils"
-
-/* Identifier for modules in the build. */
-#define MODVERSION "Build for elfutils 173 x86_64-pc-linux-gnu"
-
 /* Name of package */
 #define PACKAGE "elfutils"
 
@@ -81,7 +84,7 @@
 #define PACKAGE_NAME "elfutils"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "elfutils 0.173"
+#define PACKAGE_STRING "elfutils 0.180"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "elfutils"
@@ -90,14 +93,10 @@
 #define PACKAGE_URL "http://elfutils.org/"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.173"
+#define PACKAGE_VERSION "0.180"
 
 /* The size of `long', as computed by sizeof. */
-#if __LP64__
 #define SIZEOF_LONG 8
-#else
-#define SIZEOF_LONG 4
-#endif
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
@@ -118,7 +117,7 @@
 #define USE_ZLIB 1
 
 /* Version number of package */
-#define VERSION "0.173"
+#define VERSION "0.180"
 
 /* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
    `char[]'. */
diff --git a/config/ChangeLog b/config/ChangeLog
index b8ac8bc..2ad9370 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,16 @@
+2020-06-11  Mark Wielaard  <mark@klomp.org>
+
+	* elfutils.spec.in: Update for 0.189.
+
+2020-04-21  Frank Ch. Eigler <fche@redhat.com>
+
+	* debuginfod.sysconfig (DEBUGINFOD_PATHS): Add /var/lib/pulp.
+
+2020-03-30  Mark Wielaard  <mark@klomp.org>
+
+	* upload-release.sh: chmod uploaded dir and files to make them
+	readable.
+
 2020-03-30  Mark Wielaard  <mark@klomp.org>
 
 	* elfutils.spec.in: Update for 0.179.
diff --git a/config/debuginfod.sysconfig b/config/debuginfod.sysconfig
index c56bcf3..4460387 100644
--- a/config/debuginfod.sysconfig
+++ b/config/debuginfod.sysconfig
@@ -3,7 +3,7 @@
 #DEBUGINFOD_VERBOSE="-v"
 
 # some common places to find trustworthy ELF/DWARF files and RPMs
-DEBUGINFOD_PATHS="-t43200 -F -R /usr/lib/debug /usr/bin /usr/libexec /usr/sbin /usr/lib /usr/lib64 /var/cache/yum /var/cache/dnf"
+DEBUGINFOD_PATHS="-t43200 -F -R /usr/lib/debug /usr/bin /usr/libexec /usr/sbin /usr/lib /usr/lib64 /var/cache/yum /var/cache/dnf /var/lib/pulp"
 
 # prefer reliability/durability over performance
 #DEBUGINFOD_PRAGMAS="-D 'pragma synchronous=full;'"
diff --git a/config/elfutils.spec.in b/config/elfutils.spec.in
index 9f61488..7388829 100644
--- a/config/elfutils.spec.in
+++ b/config/elfutils.spec.in
@@ -327,6 +327,14 @@
 %systemd_postun_with_restart debuginfod.service
 
 %changelog
+* Thu Jun 11 2020 Mark Wielaard <mark@klomp.org> 0.180-1
+- elflint: Allow SHF_EXCLUDE as generic section flag when --gnu is given.
+- libdw, readelf: Handle GCC LTO .gnu.debuglto_ prefix.
+- libdw: Use correct CU to resolve file names in dwarf_decl_file.
+- libdwfl: Handle debugaltlink in dwfl_standard_find_debuginfo.
+- size: Also obey radix printing for bsd format.
+- nm: Explicitly print weak 'V' or 'T' and common 'C' symbols.
+
 * Mon Mar 30 2020 Mark Wielaard <mark@klomp.org> 0.179-1
 - debuginfod-client: When DEBUGINFOD_PROGRESS is set and the program
   doesn't install its own debuginfod_progressfn_t show download
diff --git a/config/upload-release.sh b/config/upload-release.sh
index df5e3a0..b52642e 100755
--- a/config/upload-release.sh
+++ b/config/upload-release.sh
@@ -50,6 +50,8 @@
 # Upload
 scp -r $VERSION sourceware.org:/sourceware/ftp/pub/elfutils/
 ssh sourceware.org "(cd /sourceware/ftp/pub/elfutils \
+  && chmod go+rx $VERSION \
+  && chmod go+r  $VERSION/elfutils-$VERSION.tar.bz2* \
   && ln -sf $VERSION/elfutils-$VERSION.tar.bz2 elfutils-latest.tar.bz2 \
   && ln -sf $VERSION/elfutils-$VERSION.tar.bz2.sig elfutils-latest.tar.bz2.sig \
   && ls -lah elfutils-latest*)"
diff --git a/configure.ac b/configure.ac
index a39e800..74cc749 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@
 dnl
 dnl  You should have received a copy of the GNU General Public License
 dnl  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-AC_INIT([elfutils],[0.179],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
+AC_INIT([elfutils],[0.180],[https://sourceware.org/bugzilla],[elfutils],[http://elfutils.org/])
 
 dnl Workaround for older autoconf < 2.64
 m4_ifndef([AC_PACKAGE_URL],
@@ -41,7 +41,7 @@
 AC_CONFIG_AUX_DIR([config])
 AC_CONFIG_FILES([config/Makefile])
 
-AC_COPYRIGHT([Copyright (C) 1996-2018 The elfutils developers.])
+AC_COPYRIGHT([Copyright (C) 1996-2020 The elfutils developers.])
 AC_PREREQ(2.63)			dnl Minimum Autoconf version required.
 
 dnl We use GNU make extensions; automake 1.10 defaults to -Wportability.
@@ -627,12 +627,6 @@
 # Round up to the next release API (x.y) version.
 eu_version=$(( (eu_version + 999) / 1000 ))
 
-dnl Unique ID for this build.
-MODVERSION="Build for ${eu_version} ${ac_cv_build}"
-AC_SUBST([MODVERSION])
-AC_DEFINE_UNQUOTED(MODVERSION, "$MODVERSION")
-AH_TEMPLATE([MODVERSION], [Identifier for modules in the build.])
-
 AC_CHECK_SIZEOF(long)
 
 # On aarch64 before glibc 2.20 we would get the kernel user_pt_regs instead
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 51c7984..f4ab6d4 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,7 @@
+2020-06-11  Mark Wielaaard  <mark@klomp.org>
+
+	* printversion.c (print_version): Update copyright year.
+
 2019-08-25  Srđan Milaković  <sm108@rice.edu>
 
 	* dynamicsizehash_concurrent.{c,h}: New files.
diff --git a/lib/printversion.c b/lib/printversion.c
index 17832f4..28981d2 100644
--- a/lib/printversion.c
+++ b/lib/printversion.c
@@ -41,5 +41,5 @@
 Copyright (C) %s The elfutils developers <%s>.\n\
 This is free software; see the source for copying conditions.  There is NO\n\
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\
-"), "2018", PACKAGE_URL);
+"), "2020", PACKAGE_URL);
 }
diff --git a/libasm/ChangeLog b/libasm/ChangeLog
index 7b0d3df..2c092ab 100644
--- a/libasm/ChangeLog
+++ b/libasm/ChangeLog
@@ -1,3 +1,7 @@
+2020-04-25  Mark Wielaard  <mark@klomp.org>
+
+	* asm_end.c (text_end): Call fflush instead of fclose.
+
 2020-01-08  Mark Wielaard  <mark@klomp.org>
 
 	* libasm.h: Don't include libebl.h. Define an opaque Ebl handle.
diff --git a/libasm/asm_end.c b/libasm/asm_end.c
index 99e9501..3b8582f 100644
--- a/libasm/asm_end.c
+++ b/libasm/asm_end.c
@@ -47,7 +47,7 @@
 static int
 text_end (AsmCtx_t *ctx __attribute__ ((unused)))
 {
-  if (fclose (ctx->out.file) != 0)
+  if (fflush (ctx->out.file) != 0)
     {
       __libasm_seterrno (ASM_E_IOERROR);
       return -1;
diff --git a/libcpu/ChangeLog b/libcpu/ChangeLog
index 7079651..a342b7f 100644
--- a/libcpu/ChangeLog
+++ b/libcpu/ChangeLog
@@ -1,3 +1,12 @@
+2020-05-09  Mark Wielaard  <mark@klomp.org>
+
+	* i386_parse.y (new_bitfield): Call free newp on error.
+
+2020-04-16  Mark Wielaard  <mark@klomp.org>
+
+	* i386_disasm.c (i386_disasm): Replace assert with goto invalid_op
+	for bad prefix.
+
 2019-12-11  Omar Sandoval  <osandov@fb.com>
 
 	* Makefile.am (i386_lex_CFLAGS): Add -Wno-implicit-fallthrough.
diff --git a/libcpu/i386_disasm.c b/libcpu/i386_disasm.c
index 4422ffa..32df8cd 100644
--- a/libcpu/i386_disasm.c
+++ b/libcpu/i386_disasm.c
@@ -407,7 +407,8 @@
 
 	      ++curr;
 
-	      assert (last_prefix_bit != 0);
+	      if (last_prefix_bit == 0)
+		goto invalid_op;
 	      correct_prefix = last_prefix_bit;
 	    }
 
@@ -445,8 +446,8 @@
 	       the input data.  */
 	    goto do_ret;
 
-	  assert (correct_prefix == 0
-		  || (prefixes & correct_prefix) != 0);
+	  if (correct_prefix != 0 && (prefixes & correct_prefix) == 0)
+	    goto invalid_op;
 	  prefixes ^= correct_prefix;
 
 	  if (0)
@@ -473,7 +474,8 @@
 
 	      if (data == end)
 		{
-		  assert (prefixes != 0);
+		  if (prefixes == 0)
+		    goto invalid_op;
 		  goto print_prefix;
 		}
 
@@ -1125,6 +1127,7 @@
 	}
 
       /* Invalid (or at least unhandled) opcode.  */
+    invalid_op:
       if (prefixes != 0)
 	goto print_prefix;
       /* Make sure we get past the unrecognized opcode if we haven't yet.  */
diff --git a/libcpu/i386_parse.y b/libcpu/i386_parse.y
index 910d545..90c7bd9 100644
--- a/libcpu/i386_parse.y
+++ b/libcpu/i386_parse.y
@@ -579,6 +579,7 @@
       error (0, 0, "%d: duplicated definition of bitfield '%s'",
 	     i386_lineno, name);
       free (name);
+      free (newp);
       return;
     }
 
diff --git a/libdw/ChangeLog b/libdw/ChangeLog
index 59f33f9..c75b095 100644
--- a/libdw/ChangeLog
+++ b/libdw/ChangeLog
@@ -1,3 +1,24 @@
+2020-05-08  Mark Wielaard  <mark@klomp.org>
+
+	* libdw_visit_scopes.c (walk_children): Don't recurse into imported
+	DW_TAG_compile_units.
+
+2020-05-08  Mark Wielaard  <mark@klomp.org>
+
+	* dwarf_decl_file.c (dwarf_decl_file): Use attr CU instead of DIE
+	CU to resolve file name.
+	* dwarf_ranges.c(dwarf_ranges): Document which CU we use when.
+	* libdw.h (dwarf_attr_integrate): Extend documentation.
+
+2020-04-25  Mark Wielaard  <mark@klomp.org>
+
+	* libdw_alloc.c (__libdw_alloc_tail): Call Dwarf oom_handler()
+	when malloc fails.
+
+2020-04-17  Mark Wielaard  <mark@klomp.org>
+
+	* dwarf_begin_elf.c (check_section): Handle .gnu.debuglto_ prefix.
+
 2019-10-28  Aaron Merey  <amerey@redhat.com>
 
 	* Makefile.am (libdw_so_LDLIBS): Add -ldl for libdebuginfod.so dlopen.
diff --git a/libdw/dwarf_begin_elf.c b/libdw/dwarf_begin_elf.c
index 8534308..474ed13 100644
--- a/libdw/dwarf_begin_elf.c
+++ b/libdw/dwarf_begin_elf.c
@@ -137,6 +137,10 @@
 	  gnu_compressed = true;
 	  break;
 	}
+      else if (scnlen > 14 /* .gnu.debuglto_ prefix. */
+	       && strncmp (scnname, ".gnu.debuglto_", 14) == 0
+	       && strcmp (&scnname[14], dwarf_scnnames[cnt]) == 0)
+	break;
     }
 
   if (cnt >= ndwarf_scnnames)
diff --git a/libdw/dwarf_decl_file.c b/libdw/dwarf_decl_file.c
index 5657132..d4aa0a1 100644
--- a/libdw/dwarf_decl_file.c
+++ b/libdw/dwarf_decl_file.c
@@ -55,7 +55,7 @@
     }
 
   /* Get the array of source files for the CU.  */
-  struct Dwarf_CU *cu = die->cu;
+  struct Dwarf_CU *cu = attr_mem.cu;
   if (cu->lines == NULL)
     {
       Dwarf_Lines *lines;
diff --git a/libdw/dwarf_ranges.c b/libdw/dwarf_ranges.c
index f67d8a5..520f9ff 100644
--- a/libdw/dwarf_ranges.c
+++ b/libdw/dwarf_ranges.c
@@ -506,6 +506,11 @@
       Dwarf_Attribute attr_mem;
       Dwarf_Attribute *attr = INTUSE(dwarf_attr) (die, DW_AT_ranges,
 						  &attr_mem);
+      /* Note that above we use dwarf_attr, not dwarf_attr_integrate.
+	 The only case where the ranges can come from another DIE
+	 attribute are the split CU case. In that case we also have a
+	 different CU to check against. But that is already set up
+	 above using __libdw_find_split_unit.  */
       if (attr == NULL
 	  && is_cudie (die)
 	  && die->cu->unit_type == DW_UT_split_compile)
diff --git a/libdw/known-dwarf.h b/libdw/known-dwarf.h
deleted file mode 100644
index 364d7ca..0000000
--- a/libdw/known-dwarf.h
+++ /dev/null
@@ -1,633 +0,0 @@
-/* Generated by config/known-dwarf.awk from libdw/dwarf.h contents.  */
-
-#define DWARF_ALL_KNOWN_DW_ACCESS \
-  DWARF_ONE_KNOWN_DW_ACCESS (private, DW_ACCESS_private) \
-  DWARF_ONE_KNOWN_DW_ACCESS (protected, DW_ACCESS_protected) \
-  DWARF_ONE_KNOWN_DW_ACCESS (public, DW_ACCESS_public) \
-  /* End of DW_ACCESS_*.  */
-
-#define DWARF_ALL_KNOWN_DW_AT \
-  DWARF_ONE_KNOWN_DW_AT (GNU_all_call_sites, DW_AT_GNU_all_call_sites) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_all_source_call_sites, DW_AT_GNU_all_source_call_sites) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_all_tail_call_sites, DW_AT_GNU_all_tail_call_sites) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_call_site_data_value, DW_AT_GNU_call_site_data_value) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_call_site_target, DW_AT_GNU_call_site_target) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_call_site_target_clobbered, DW_AT_GNU_call_site_target_clobbered) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_call_site_value, DW_AT_GNU_call_site_value) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_deleted, DW_AT_GNU_deleted) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_exclusive_locks_required, DW_AT_GNU_exclusive_locks_required) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_guarded, DW_AT_GNU_guarded) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_guarded_by, DW_AT_GNU_guarded_by) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_locks_excluded, DW_AT_GNU_locks_excluded) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_macros, DW_AT_GNU_macros) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_odr_signature, DW_AT_GNU_odr_signature) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_pt_guarded, DW_AT_GNU_pt_guarded) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_pt_guarded_by, DW_AT_GNU_pt_guarded_by) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_shared_locks_required, DW_AT_GNU_shared_locks_required) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_tail_call, DW_AT_GNU_tail_call) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_template_name, DW_AT_GNU_template_name) \
-  DWARF_ONE_KNOWN_DW_AT (GNU_vector, DW_AT_GNU_vector) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_abstract_name, DW_AT_MIPS_abstract_name) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_allocatable_dopetype, DW_AT_MIPS_allocatable_dopetype) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_assumed_shape_dopetype, DW_AT_MIPS_assumed_shape_dopetype) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_assumed_size, DW_AT_MIPS_assumed_size) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_clone_origin, DW_AT_MIPS_clone_origin) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_epilog_begin, DW_AT_MIPS_epilog_begin) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_fde, DW_AT_MIPS_fde) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_has_inlines, DW_AT_MIPS_has_inlines) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_linkage_name, DW_AT_MIPS_linkage_name) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_loop_begin, DW_AT_MIPS_loop_begin) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_loop_unroll_factor, DW_AT_MIPS_loop_unroll_factor) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_ptr_dopetype, DW_AT_MIPS_ptr_dopetype) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_software_pipeline_depth, DW_AT_MIPS_software_pipeline_depth) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_stride, DW_AT_MIPS_stride) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_stride_byte, DW_AT_MIPS_stride_byte) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_stride_elem, DW_AT_MIPS_stride_elem) \
-  DWARF_ONE_KNOWN_DW_AT (MIPS_tail_loop_begin, DW_AT_MIPS_tail_loop_begin) \
-  DWARF_ONE_KNOWN_DW_AT (abstract_origin, DW_AT_abstract_origin) \
-  DWARF_ONE_KNOWN_DW_AT (accessibility, DW_AT_accessibility) \
-  DWARF_ONE_KNOWN_DW_AT (address_class, DW_AT_address_class) \
-  DWARF_ONE_KNOWN_DW_AT (allocated, DW_AT_allocated) \
-  DWARF_ONE_KNOWN_DW_AT (artificial, DW_AT_artificial) \
-  DWARF_ONE_KNOWN_DW_AT (associated, DW_AT_associated) \
-  DWARF_ONE_KNOWN_DW_AT (base_types, DW_AT_base_types) \
-  DWARF_ONE_KNOWN_DW_AT (binary_scale, DW_AT_binary_scale) \
-  DWARF_ONE_KNOWN_DW_AT (bit_offset, DW_AT_bit_offset) \
-  DWARF_ONE_KNOWN_DW_AT (bit_size, DW_AT_bit_size) \
-  DWARF_ONE_KNOWN_DW_AT (bit_stride, DW_AT_bit_stride) \
-  DWARF_ONE_KNOWN_DW_AT (body_begin, DW_AT_body_begin) \
-  DWARF_ONE_KNOWN_DW_AT (body_end, DW_AT_body_end) \
-  DWARF_ONE_KNOWN_DW_AT (byte_size, DW_AT_byte_size) \
-  DWARF_ONE_KNOWN_DW_AT (byte_stride, DW_AT_byte_stride) \
-  DWARF_ONE_KNOWN_DW_AT (call_column, DW_AT_call_column) \
-  DWARF_ONE_KNOWN_DW_AT (call_file, DW_AT_call_file) \
-  DWARF_ONE_KNOWN_DW_AT (call_line, DW_AT_call_line) \
-  DWARF_ONE_KNOWN_DW_AT (calling_convention, DW_AT_calling_convention) \
-  DWARF_ONE_KNOWN_DW_AT (common_reference, DW_AT_common_reference) \
-  DWARF_ONE_KNOWN_DW_AT (comp_dir, DW_AT_comp_dir) \
-  DWARF_ONE_KNOWN_DW_AT (const_expr, DW_AT_const_expr) \
-  DWARF_ONE_KNOWN_DW_AT (const_value, DW_AT_const_value) \
-  DWARF_ONE_KNOWN_DW_AT (containing_type, DW_AT_containing_type) \
-  DWARF_ONE_KNOWN_DW_AT (count, DW_AT_count) \
-  DWARF_ONE_KNOWN_DW_AT (data_bit_offset, DW_AT_data_bit_offset) \
-  DWARF_ONE_KNOWN_DW_AT (data_location, DW_AT_data_location) \
-  DWARF_ONE_KNOWN_DW_AT (data_member_location, DW_AT_data_member_location) \
-  DWARF_ONE_KNOWN_DW_AT (decimal_scale, DW_AT_decimal_scale) \
-  DWARF_ONE_KNOWN_DW_AT (decimal_sign, DW_AT_decimal_sign) \
-  DWARF_ONE_KNOWN_DW_AT (decl_column, DW_AT_decl_column) \
-  DWARF_ONE_KNOWN_DW_AT (decl_file, DW_AT_decl_file) \
-  DWARF_ONE_KNOWN_DW_AT (decl_line, DW_AT_decl_line) \
-  DWARF_ONE_KNOWN_DW_AT (declaration, DW_AT_declaration) \
-  DWARF_ONE_KNOWN_DW_AT (default_value, DW_AT_default_value) \
-  DWARF_ONE_KNOWN_DW_AT (description, DW_AT_description) \
-  DWARF_ONE_KNOWN_DW_AT (digit_count, DW_AT_digit_count) \
-  DWARF_ONE_KNOWN_DW_AT (discr, DW_AT_discr) \
-  DWARF_ONE_KNOWN_DW_AT (discr_list, DW_AT_discr_list) \
-  DWARF_ONE_KNOWN_DW_AT (discr_value, DW_AT_discr_value) \
-  DWARF_ONE_KNOWN_DW_AT (element_list, DW_AT_element_list) \
-  DWARF_ONE_KNOWN_DW_AT (elemental, DW_AT_elemental) \
-  DWARF_ONE_KNOWN_DW_AT (encoding, DW_AT_encoding) \
-  DWARF_ONE_KNOWN_DW_AT (endianity, DW_AT_endianity) \
-  DWARF_ONE_KNOWN_DW_AT (entry_pc, DW_AT_entry_pc) \
-  DWARF_ONE_KNOWN_DW_AT (enum_class, DW_AT_enum_class) \
-  DWARF_ONE_KNOWN_DW_AT (explicit, DW_AT_explicit) \
-  DWARF_ONE_KNOWN_DW_AT (extension, DW_AT_extension) \
-  DWARF_ONE_KNOWN_DW_AT (external, DW_AT_external) \
-  DWARF_ONE_KNOWN_DW_AT (frame_base, DW_AT_frame_base) \
-  DWARF_ONE_KNOWN_DW_AT (friend, DW_AT_friend) \
-  DWARF_ONE_KNOWN_DW_AT (high_pc, DW_AT_high_pc) \
-  DWARF_ONE_KNOWN_DW_AT (identifier_case, DW_AT_identifier_case) \
-  DWARF_ONE_KNOWN_DW_AT (import, DW_AT_import) \
-  DWARF_ONE_KNOWN_DW_AT (inline, DW_AT_inline) \
-  DWARF_ONE_KNOWN_DW_AT (is_optional, DW_AT_is_optional) \
-  DWARF_ONE_KNOWN_DW_AT (language, DW_AT_language) \
-  DWARF_ONE_KNOWN_DW_AT (linkage_name, DW_AT_linkage_name) \
-  DWARF_ONE_KNOWN_DW_AT (location, DW_AT_location) \
-  DWARF_ONE_KNOWN_DW_AT (low_pc, DW_AT_low_pc) \
-  DWARF_ONE_KNOWN_DW_AT (lower_bound, DW_AT_lower_bound) \
-  DWARF_ONE_KNOWN_DW_AT (mac_info, DW_AT_mac_info) \
-  DWARF_ONE_KNOWN_DW_AT (macro_info, DW_AT_macro_info) \
-  DWARF_ONE_KNOWN_DW_AT (main_subprogram, DW_AT_main_subprogram) \
-  DWARF_ONE_KNOWN_DW_AT (member, DW_AT_member) \
-  DWARF_ONE_KNOWN_DW_AT (mutable, DW_AT_mutable) \
-  DWARF_ONE_KNOWN_DW_AT (name, DW_AT_name) \
-  DWARF_ONE_KNOWN_DW_AT (namelist_item, DW_AT_namelist_item) \
-  DWARF_ONE_KNOWN_DW_AT (noreturn, DW_AT_noreturn) \
-  DWARF_ONE_KNOWN_DW_AT (object_pointer, DW_AT_object_pointer) \
-  DWARF_ONE_KNOWN_DW_AT (ordering, DW_AT_ordering) \
-  DWARF_ONE_KNOWN_DW_AT (picture_string, DW_AT_picture_string) \
-  DWARF_ONE_KNOWN_DW_AT (priority, DW_AT_priority) \
-  DWARF_ONE_KNOWN_DW_AT (producer, DW_AT_producer) \
-  DWARF_ONE_KNOWN_DW_AT (prototyped, DW_AT_prototyped) \
-  DWARF_ONE_KNOWN_DW_AT (pure, DW_AT_pure) \
-  DWARF_ONE_KNOWN_DW_AT (ranges, DW_AT_ranges) \
-  DWARF_ONE_KNOWN_DW_AT (recursive, DW_AT_recursive) \
-  DWARF_ONE_KNOWN_DW_AT (return_addr, DW_AT_return_addr) \
-  DWARF_ONE_KNOWN_DW_AT (segment, DW_AT_segment) \
-  DWARF_ONE_KNOWN_DW_AT (sf_names, DW_AT_sf_names) \
-  DWARF_ONE_KNOWN_DW_AT (sibling, DW_AT_sibling) \
-  DWARF_ONE_KNOWN_DW_AT (signature, DW_AT_signature) \
-  DWARF_ONE_KNOWN_DW_AT (small, DW_AT_small) \
-  DWARF_ONE_KNOWN_DW_AT (specification, DW_AT_specification) \
-  DWARF_ONE_KNOWN_DW_AT (src_coords, DW_AT_src_coords) \
-  DWARF_ONE_KNOWN_DW_AT (src_info, DW_AT_src_info) \
-  DWARF_ONE_KNOWN_DW_AT (start_scope, DW_AT_start_scope) \
-  DWARF_ONE_KNOWN_DW_AT (static_link, DW_AT_static_link) \
-  DWARF_ONE_KNOWN_DW_AT (stmt_list, DW_AT_stmt_list) \
-  DWARF_ONE_KNOWN_DW_AT (string_length, DW_AT_string_length) \
-  DWARF_ONE_KNOWN_DW_AT (subscr_data, DW_AT_subscr_data) \
-  DWARF_ONE_KNOWN_DW_AT (threads_scaled, DW_AT_threads_scaled) \
-  DWARF_ONE_KNOWN_DW_AT (trampoline, DW_AT_trampoline) \
-  DWARF_ONE_KNOWN_DW_AT (type, DW_AT_type) \
-  DWARF_ONE_KNOWN_DW_AT (upper_bound, DW_AT_upper_bound) \
-  DWARF_ONE_KNOWN_DW_AT (use_UTF8, DW_AT_use_UTF8) \
-  DWARF_ONE_KNOWN_DW_AT (use_location, DW_AT_use_location) \
-  DWARF_ONE_KNOWN_DW_AT (variable_parameter, DW_AT_variable_parameter) \
-  DWARF_ONE_KNOWN_DW_AT (virtuality, DW_AT_virtuality) \
-  DWARF_ONE_KNOWN_DW_AT (visibility, DW_AT_visibility) \
-  DWARF_ONE_KNOWN_DW_AT (vtable_elem_location, DW_AT_vtable_elem_location) \
-  /* End of DW_AT_*.  */
-
-#define DWARF_ALL_KNOWN_DW_ATE \
-  DWARF_ONE_KNOWN_DW_ATE (UTF, DW_ATE_UTF) \
-  DWARF_ONE_KNOWN_DW_ATE (address, DW_ATE_address) \
-  DWARF_ONE_KNOWN_DW_ATE (boolean, DW_ATE_boolean) \
-  DWARF_ONE_KNOWN_DW_ATE (complex_float, DW_ATE_complex_float) \
-  DWARF_ONE_KNOWN_DW_ATE (decimal_float, DW_ATE_decimal_float) \
-  DWARF_ONE_KNOWN_DW_ATE (edited, DW_ATE_edited) \
-  DWARF_ONE_KNOWN_DW_ATE (float, DW_ATE_float) \
-  DWARF_ONE_KNOWN_DW_ATE (imaginary_float, DW_ATE_imaginary_float) \
-  DWARF_ONE_KNOWN_DW_ATE (numeric_string, DW_ATE_numeric_string) \
-  DWARF_ONE_KNOWN_DW_ATE (packed_decimal, DW_ATE_packed_decimal) \
-  DWARF_ONE_KNOWN_DW_ATE (signed, DW_ATE_signed) \
-  DWARF_ONE_KNOWN_DW_ATE (signed_char, DW_ATE_signed_char) \
-  DWARF_ONE_KNOWN_DW_ATE (signed_fixed, DW_ATE_signed_fixed) \
-  DWARF_ONE_KNOWN_DW_ATE (unsigned, DW_ATE_unsigned) \
-  DWARF_ONE_KNOWN_DW_ATE (unsigned_char, DW_ATE_unsigned_char) \
-  DWARF_ONE_KNOWN_DW_ATE (unsigned_fixed, DW_ATE_unsigned_fixed) \
-  DWARF_ONE_KNOWN_DW_ATE (void, DW_ATE_void) \
-  /* End of DW_ATE_*.  */
-
-#define DWARF_ALL_KNOWN_DW_CC \
-  DWARF_ONE_KNOWN_DW_CC (nocall, DW_CC_nocall) \
-  DWARF_ONE_KNOWN_DW_CC (normal, DW_CC_normal) \
-  DWARF_ONE_KNOWN_DW_CC (program, DW_CC_program) \
-  /* End of DW_CC_*.  */
-
-#define DWARF_ALL_KNOWN_DW_CFA \
-  DWARF_ONE_KNOWN_DW_CFA (GNU_args_size, DW_CFA_GNU_args_size) \
-  DWARF_ONE_KNOWN_DW_CFA (GNU_negative_offset_extended, DW_CFA_GNU_negative_offset_extended) \
-  DWARF_ONE_KNOWN_DW_CFA (GNU_window_save, DW_CFA_GNU_window_save) \
-  DWARF_ONE_KNOWN_DW_CFA (MIPS_advance_loc8, DW_CFA_MIPS_advance_loc8) \
-  DWARF_ONE_KNOWN_DW_CFA (advance_loc, DW_CFA_advance_loc) \
-  DWARF_ONE_KNOWN_DW_CFA (advance_loc1, DW_CFA_advance_loc1) \
-  DWARF_ONE_KNOWN_DW_CFA (advance_loc2, DW_CFA_advance_loc2) \
-  DWARF_ONE_KNOWN_DW_CFA (advance_loc4, DW_CFA_advance_loc4) \
-  DWARF_ONE_KNOWN_DW_CFA (def_cfa, DW_CFA_def_cfa) \
-  DWARF_ONE_KNOWN_DW_CFA (def_cfa_expression, DW_CFA_def_cfa_expression) \
-  DWARF_ONE_KNOWN_DW_CFA (def_cfa_offset, DW_CFA_def_cfa_offset) \
-  DWARF_ONE_KNOWN_DW_CFA (def_cfa_offset_sf, DW_CFA_def_cfa_offset_sf) \
-  DWARF_ONE_KNOWN_DW_CFA (def_cfa_register, DW_CFA_def_cfa_register) \
-  DWARF_ONE_KNOWN_DW_CFA (def_cfa_sf, DW_CFA_def_cfa_sf) \
-  DWARF_ONE_KNOWN_DW_CFA (expression, DW_CFA_expression) \
-  DWARF_ONE_KNOWN_DW_CFA (extended, DW_CFA_extended) \
-  DWARF_ONE_KNOWN_DW_CFA (nop, DW_CFA_nop) \
-  DWARF_ONE_KNOWN_DW_CFA (offset, DW_CFA_offset) \
-  DWARF_ONE_KNOWN_DW_CFA (offset_extended, DW_CFA_offset_extended) \
-  DWARF_ONE_KNOWN_DW_CFA (offset_extended_sf, DW_CFA_offset_extended_sf) \
-  DWARF_ONE_KNOWN_DW_CFA (register, DW_CFA_register) \
-  DWARF_ONE_KNOWN_DW_CFA (remember_state, DW_CFA_remember_state) \
-  DWARF_ONE_KNOWN_DW_CFA (restore, DW_CFA_restore) \
-  DWARF_ONE_KNOWN_DW_CFA (restore_extended, DW_CFA_restore_extended) \
-  DWARF_ONE_KNOWN_DW_CFA (restore_state, DW_CFA_restore_state) \
-  DWARF_ONE_KNOWN_DW_CFA (same_value, DW_CFA_same_value) \
-  DWARF_ONE_KNOWN_DW_CFA (set_loc, DW_CFA_set_loc) \
-  DWARF_ONE_KNOWN_DW_CFA (undefined, DW_CFA_undefined) \
-  DWARF_ONE_KNOWN_DW_CFA (val_expression, DW_CFA_val_expression) \
-  DWARF_ONE_KNOWN_DW_CFA (val_offset, DW_CFA_val_offset) \
-  DWARF_ONE_KNOWN_DW_CFA (val_offset_sf, DW_CFA_val_offset_sf) \
-  /* End of DW_CFA_*.  */
-
-#define DWARF_ALL_KNOWN_DW_CHILDREN \
-  DWARF_ONE_KNOWN_DW_CHILDREN (no, DW_CHILDREN_no) \
-  DWARF_ONE_KNOWN_DW_CHILDREN (yes, DW_CHILDREN_yes) \
-  /* End of DW_CHILDREN_*.  */
-
-#define DWARF_ALL_KNOWN_DW_CIE_ID \
-  DWARF_ONE_KNOWN_DW_CIE_ID (32, DW_CIE_ID_32) \
-  DWARF_ONE_KNOWN_DW_CIE_ID (64, DW_CIE_ID_64) \
-  /* End of DW_CIE_ID_*.  */
-
-#define DWARF_ALL_KNOWN_DW_DS \
-  DWARF_ONE_KNOWN_DW_DS (leading_overpunch, DW_DS_leading_overpunch) \
-  DWARF_ONE_KNOWN_DW_DS (leading_separate, DW_DS_leading_separate) \
-  DWARF_ONE_KNOWN_DW_DS (trailing_overpunch, DW_DS_trailing_overpunch) \
-  DWARF_ONE_KNOWN_DW_DS (trailing_separate, DW_DS_trailing_separate) \
-  DWARF_ONE_KNOWN_DW_DS (unsigned, DW_DS_unsigned) \
-  /* End of DW_DS_*.  */
-
-#define DWARF_ALL_KNOWN_DW_DSC \
-  DWARF_ONE_KNOWN_DW_DSC (label, DW_DSC_label) \
-  DWARF_ONE_KNOWN_DW_DSC (range, DW_DSC_range) \
-  /* End of DW_DSC_*.  */
-
-#define DWARF_ALL_KNOWN_DW_EH_PE \
-  DWARF_ONE_KNOWN_DW_EH_PE (absptr, DW_EH_PE_absptr) \
-  DWARF_ONE_KNOWN_DW_EH_PE (aligned, DW_EH_PE_aligned) \
-  DWARF_ONE_KNOWN_DW_EH_PE (datarel, DW_EH_PE_datarel) \
-  DWARF_ONE_KNOWN_DW_EH_PE (funcrel, DW_EH_PE_funcrel) \
-  DWARF_ONE_KNOWN_DW_EH_PE (indirect, DW_EH_PE_indirect) \
-  DWARF_ONE_KNOWN_DW_EH_PE (omit, DW_EH_PE_omit) \
-  DWARF_ONE_KNOWN_DW_EH_PE (pcrel, DW_EH_PE_pcrel) \
-  DWARF_ONE_KNOWN_DW_EH_PE (sdata2, DW_EH_PE_sdata2) \
-  DWARF_ONE_KNOWN_DW_EH_PE (sdata4, DW_EH_PE_sdata4) \
-  DWARF_ONE_KNOWN_DW_EH_PE (sdata8, DW_EH_PE_sdata8) \
-  DWARF_ONE_KNOWN_DW_EH_PE (signed, DW_EH_PE_signed) \
-  DWARF_ONE_KNOWN_DW_EH_PE (sleb128, DW_EH_PE_sleb128) \
-  DWARF_ONE_KNOWN_DW_EH_PE (textrel, DW_EH_PE_textrel) \
-  DWARF_ONE_KNOWN_DW_EH_PE (udata2, DW_EH_PE_udata2) \
-  DWARF_ONE_KNOWN_DW_EH_PE (udata4, DW_EH_PE_udata4) \
-  DWARF_ONE_KNOWN_DW_EH_PE (udata8, DW_EH_PE_udata8) \
-  DWARF_ONE_KNOWN_DW_EH_PE (uleb128, DW_EH_PE_uleb128) \
-  /* End of DW_EH_PE_*.  */
-
-#define DWARF_ALL_KNOWN_DW_END \
-  DWARF_ONE_KNOWN_DW_END (big, DW_END_big) \
-  DWARF_ONE_KNOWN_DW_END (default, DW_END_default) \
-  DWARF_ONE_KNOWN_DW_END (little, DW_END_little) \
-  /* End of DW_END_*.  */
-
-#define DWARF_ALL_KNOWN_DW_FORM \
-  DWARF_ONE_KNOWN_DW_FORM (GNU_ref_alt, DW_FORM_GNU_ref_alt) \
-  DWARF_ONE_KNOWN_DW_FORM (GNU_strp_alt, DW_FORM_GNU_strp_alt) \
-  DWARF_ONE_KNOWN_DW_FORM (addr, DW_FORM_addr) \
-  DWARF_ONE_KNOWN_DW_FORM (block, DW_FORM_block) \
-  DWARF_ONE_KNOWN_DW_FORM (block1, DW_FORM_block1) \
-  DWARF_ONE_KNOWN_DW_FORM (block2, DW_FORM_block2) \
-  DWARF_ONE_KNOWN_DW_FORM (block4, DW_FORM_block4) \
-  DWARF_ONE_KNOWN_DW_FORM (data1, DW_FORM_data1) \
-  DWARF_ONE_KNOWN_DW_FORM (data2, DW_FORM_data2) \
-  DWARF_ONE_KNOWN_DW_FORM (data4, DW_FORM_data4) \
-  DWARF_ONE_KNOWN_DW_FORM (data8, DW_FORM_data8) \
-  DWARF_ONE_KNOWN_DW_FORM (exprloc, DW_FORM_exprloc) \
-  DWARF_ONE_KNOWN_DW_FORM (flag, DW_FORM_flag) \
-  DWARF_ONE_KNOWN_DW_FORM (flag_present, DW_FORM_flag_present) \
-  DWARF_ONE_KNOWN_DW_FORM (indirect, DW_FORM_indirect) \
-  DWARF_ONE_KNOWN_DW_FORM (ref1, DW_FORM_ref1) \
-  DWARF_ONE_KNOWN_DW_FORM (ref2, DW_FORM_ref2) \
-  DWARF_ONE_KNOWN_DW_FORM (ref4, DW_FORM_ref4) \
-  DWARF_ONE_KNOWN_DW_FORM (ref8, DW_FORM_ref8) \
-  DWARF_ONE_KNOWN_DW_FORM (ref_addr, DW_FORM_ref_addr) \
-  DWARF_ONE_KNOWN_DW_FORM (ref_sig8, DW_FORM_ref_sig8) \
-  DWARF_ONE_KNOWN_DW_FORM (ref_udata, DW_FORM_ref_udata) \
-  DWARF_ONE_KNOWN_DW_FORM (sdata, DW_FORM_sdata) \
-  DWARF_ONE_KNOWN_DW_FORM (sec_offset, DW_FORM_sec_offset) \
-  DWARF_ONE_KNOWN_DW_FORM (string, DW_FORM_string) \
-  DWARF_ONE_KNOWN_DW_FORM (strp, DW_FORM_strp) \
-  DWARF_ONE_KNOWN_DW_FORM (udata, DW_FORM_udata) \
-  /* End of DW_FORM_*.  */
-
-#define DWARF_ALL_KNOWN_DW_ID \
-  DWARF_ONE_KNOWN_DW_ID (case_insensitive, DW_ID_case_insensitive) \
-  DWARF_ONE_KNOWN_DW_ID (case_sensitive, DW_ID_case_sensitive) \
-  DWARF_ONE_KNOWN_DW_ID (down_case, DW_ID_down_case) \
-  DWARF_ONE_KNOWN_DW_ID (up_case, DW_ID_up_case) \
-  /* End of DW_ID_*.  */
-
-#define DWARF_ALL_KNOWN_DW_INL \
-  DWARF_ONE_KNOWN_DW_INL (declared_inlined, DW_INL_declared_inlined) \
-  DWARF_ONE_KNOWN_DW_INL (declared_not_inlined, DW_INL_declared_not_inlined) \
-  DWARF_ONE_KNOWN_DW_INL (inlined, DW_INL_inlined) \
-  DWARF_ONE_KNOWN_DW_INL (not_inlined, DW_INL_not_inlined) \
-  /* End of DW_INL_*.  */
-
-#define DWARF_ALL_KNOWN_DW_LANG \
-  DWARF_ONE_KNOWN_DW_LANG (Ada83, DW_LANG_Ada83) \
-  DWARF_ONE_KNOWN_DW_LANG (Ada95, DW_LANG_Ada95) \
-  DWARF_ONE_KNOWN_DW_LANG (C, DW_LANG_C) \
-  DWARF_ONE_KNOWN_DW_LANG (C11, DW_LANG_C11) \
-  DWARF_ONE_KNOWN_DW_LANG (C89, DW_LANG_C89) \
-  DWARF_ONE_KNOWN_DW_LANG (C99, DW_LANG_C99) \
-  DWARF_ONE_KNOWN_DW_LANG (C_plus_plus, DW_LANG_C_plus_plus) \
-  DWARF_ONE_KNOWN_DW_LANG (C_plus_plus_11, DW_LANG_C_plus_plus_11) \
-  DWARF_ONE_KNOWN_DW_LANG (C_plus_plus_14, DW_LANG_C_plus_plus_14) \
-  DWARF_ONE_KNOWN_DW_LANG (Cobol74, DW_LANG_Cobol74) \
-  DWARF_ONE_KNOWN_DW_LANG (Cobol85, DW_LANG_Cobol85) \
-  DWARF_ONE_KNOWN_DW_LANG (D, DW_LANG_D) \
-  DWARF_ONE_KNOWN_DW_LANG (Fortran03, DW_LANG_Fortran03) \
-  DWARF_ONE_KNOWN_DW_LANG (Fortran08, DW_LANG_Fortran08) \
-  DWARF_ONE_KNOWN_DW_LANG (Fortran77, DW_LANG_Fortran77) \
-  DWARF_ONE_KNOWN_DW_LANG (Fortran90, DW_LANG_Fortran90) \
-  DWARF_ONE_KNOWN_DW_LANG (Fortran95, DW_LANG_Fortran95) \
-  DWARF_ONE_KNOWN_DW_LANG (Go, DW_LANG_Go) \
-  DWARF_ONE_KNOWN_DW_LANG (Haskell, DW_LANG_Haskell) \
-  DWARF_ONE_KNOWN_DW_LANG (Java, DW_LANG_Java) \
-  DWARF_ONE_KNOWN_DW_LANG (Mips_Assembler, DW_LANG_Mips_Assembler) \
-  DWARF_ONE_KNOWN_DW_LANG (Modula2, DW_LANG_Modula2) \
-  DWARF_ONE_KNOWN_DW_LANG (ObjC, DW_LANG_ObjC) \
-  DWARF_ONE_KNOWN_DW_LANG (ObjC_plus_plus, DW_LANG_ObjC_plus_plus) \
-  DWARF_ONE_KNOWN_DW_LANG (PL1, DW_LANG_PL1) \
-  DWARF_ONE_KNOWN_DW_LANG (Pascal83, DW_LANG_Pascal83) \
-  DWARF_ONE_KNOWN_DW_LANG (Python, DW_LANG_Python) \
-  DWARF_ONE_KNOWN_DW_LANG (UPC, DW_LANG_UPC) \
-  /* End of DW_LANG_*.  */
-
-#define DWARF_ALL_KNOWN_DW_LNE \
-  DWARF_ONE_KNOWN_DW_LNE (define_file, DW_LNE_define_file) \
-  DWARF_ONE_KNOWN_DW_LNE (end_sequence, DW_LNE_end_sequence) \
-  DWARF_ONE_KNOWN_DW_LNE (set_address, DW_LNE_set_address) \
-  DWARF_ONE_KNOWN_DW_LNE (set_discriminator, DW_LNE_set_discriminator) \
-  /* End of DW_LNE_*.  */
-
-#define DWARF_ALL_KNOWN_DW_LNS \
-  DWARF_ONE_KNOWN_DW_LNS (advance_line, DW_LNS_advance_line) \
-  DWARF_ONE_KNOWN_DW_LNS (advance_pc, DW_LNS_advance_pc) \
-  DWARF_ONE_KNOWN_DW_LNS (const_add_pc, DW_LNS_const_add_pc) \
-  DWARF_ONE_KNOWN_DW_LNS (copy, DW_LNS_copy) \
-  DWARF_ONE_KNOWN_DW_LNS (fixed_advance_pc, DW_LNS_fixed_advance_pc) \
-  DWARF_ONE_KNOWN_DW_LNS (negate_stmt, DW_LNS_negate_stmt) \
-  DWARF_ONE_KNOWN_DW_LNS (set_basic_block, DW_LNS_set_basic_block) \
-  DWARF_ONE_KNOWN_DW_LNS (set_column, DW_LNS_set_column) \
-  DWARF_ONE_KNOWN_DW_LNS (set_epilogue_begin, DW_LNS_set_epilogue_begin) \
-  DWARF_ONE_KNOWN_DW_LNS (set_file, DW_LNS_set_file) \
-  DWARF_ONE_KNOWN_DW_LNS (set_isa, DW_LNS_set_isa) \
-  DWARF_ONE_KNOWN_DW_LNS (set_prologue_end, DW_LNS_set_prologue_end) \
-  /* End of DW_LNS_*.  */
-
-#define DWARF_ALL_KNOWN_DW_MACINFO \
-  DWARF_ONE_KNOWN_DW_MACINFO (define, DW_MACINFO_define) \
-  DWARF_ONE_KNOWN_DW_MACINFO (end_file, DW_MACINFO_end_file) \
-  DWARF_ONE_KNOWN_DW_MACINFO (start_file, DW_MACINFO_start_file) \
-  DWARF_ONE_KNOWN_DW_MACINFO (undef, DW_MACINFO_undef) \
-  DWARF_ONE_KNOWN_DW_MACINFO (vendor_ext, DW_MACINFO_vendor_ext) \
-  /* End of DW_MACINFO_*.  */
-
-#define DWARF_ALL_KNOWN_DW_MACRO_GNU \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (define, DW_MACRO_GNU_define) \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (define_indirect, DW_MACRO_GNU_define_indirect) \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (end_file, DW_MACRO_GNU_end_file) \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (start_file, DW_MACRO_GNU_start_file) \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (transparent_include, DW_MACRO_GNU_transparent_include) \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (undef, DW_MACRO_GNU_undef) \
-  DWARF_ONE_KNOWN_DW_MACRO_GNU (undef_indirect, DW_MACRO_GNU_undef_indirect) \
-  /* End of DW_MACRO_GNU_*.  */
-
-#define DWARF_ALL_KNOWN_DW_OP \
-  DWARF_ONE_KNOWN_DW_OP (GNU_const_type, DW_OP_GNU_const_type) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_convert, DW_OP_GNU_convert) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_deref_type, DW_OP_GNU_deref_type) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_encoded_addr, DW_OP_GNU_encoded_addr) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_entry_value, DW_OP_GNU_entry_value) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_implicit_pointer, DW_OP_GNU_implicit_pointer) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_parameter_ref, DW_OP_GNU_parameter_ref) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_push_tls_address, DW_OP_GNU_push_tls_address) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_regval_type, DW_OP_GNU_regval_type) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_reinterpret, DW_OP_GNU_reinterpret) \
-  DWARF_ONE_KNOWN_DW_OP (GNU_uninit, DW_OP_GNU_uninit) \
-  DWARF_ONE_KNOWN_DW_OP (abs, DW_OP_abs) \
-  DWARF_ONE_KNOWN_DW_OP (addr, DW_OP_addr) \
-  DWARF_ONE_KNOWN_DW_OP (and, DW_OP_and) \
-  DWARF_ONE_KNOWN_DW_OP (bit_piece, DW_OP_bit_piece) \
-  DWARF_ONE_KNOWN_DW_OP (bra, DW_OP_bra) \
-  DWARF_ONE_KNOWN_DW_OP (breg0, DW_OP_breg0) \
-  DWARF_ONE_KNOWN_DW_OP (breg1, DW_OP_breg1) \
-  DWARF_ONE_KNOWN_DW_OP (breg10, DW_OP_breg10) \
-  DWARF_ONE_KNOWN_DW_OP (breg11, DW_OP_breg11) \
-  DWARF_ONE_KNOWN_DW_OP (breg12, DW_OP_breg12) \
-  DWARF_ONE_KNOWN_DW_OP (breg13, DW_OP_breg13) \
-  DWARF_ONE_KNOWN_DW_OP (breg14, DW_OP_breg14) \
-  DWARF_ONE_KNOWN_DW_OP (breg15, DW_OP_breg15) \
-  DWARF_ONE_KNOWN_DW_OP (breg16, DW_OP_breg16) \
-  DWARF_ONE_KNOWN_DW_OP (breg17, DW_OP_breg17) \
-  DWARF_ONE_KNOWN_DW_OP (breg18, DW_OP_breg18) \
-  DWARF_ONE_KNOWN_DW_OP (breg19, DW_OP_breg19) \
-  DWARF_ONE_KNOWN_DW_OP (breg2, DW_OP_breg2) \
-  DWARF_ONE_KNOWN_DW_OP (breg20, DW_OP_breg20) \
-  DWARF_ONE_KNOWN_DW_OP (breg21, DW_OP_breg21) \
-  DWARF_ONE_KNOWN_DW_OP (breg22, DW_OP_breg22) \
-  DWARF_ONE_KNOWN_DW_OP (breg23, DW_OP_breg23) \
-  DWARF_ONE_KNOWN_DW_OP (breg24, DW_OP_breg24) \
-  DWARF_ONE_KNOWN_DW_OP (breg25, DW_OP_breg25) \
-  DWARF_ONE_KNOWN_DW_OP (breg26, DW_OP_breg26) \
-  DWARF_ONE_KNOWN_DW_OP (breg27, DW_OP_breg27) \
-  DWARF_ONE_KNOWN_DW_OP (breg28, DW_OP_breg28) \
-  DWARF_ONE_KNOWN_DW_OP (breg29, DW_OP_breg29) \
-  DWARF_ONE_KNOWN_DW_OP (breg3, DW_OP_breg3) \
-  DWARF_ONE_KNOWN_DW_OP (breg30, DW_OP_breg30) \
-  DWARF_ONE_KNOWN_DW_OP (breg31, DW_OP_breg31) \
-  DWARF_ONE_KNOWN_DW_OP (breg4, DW_OP_breg4) \
-  DWARF_ONE_KNOWN_DW_OP (breg5, DW_OP_breg5) \
-  DWARF_ONE_KNOWN_DW_OP (breg6, DW_OP_breg6) \
-  DWARF_ONE_KNOWN_DW_OP (breg7, DW_OP_breg7) \
-  DWARF_ONE_KNOWN_DW_OP (breg8, DW_OP_breg8) \
-  DWARF_ONE_KNOWN_DW_OP (breg9, DW_OP_breg9) \
-  DWARF_ONE_KNOWN_DW_OP (bregx, DW_OP_bregx) \
-  DWARF_ONE_KNOWN_DW_OP (call2, DW_OP_call2) \
-  DWARF_ONE_KNOWN_DW_OP (call4, DW_OP_call4) \
-  DWARF_ONE_KNOWN_DW_OP (call_frame_cfa, DW_OP_call_frame_cfa) \
-  DWARF_ONE_KNOWN_DW_OP (call_ref, DW_OP_call_ref) \
-  DWARF_ONE_KNOWN_DW_OP (const1s, DW_OP_const1s) \
-  DWARF_ONE_KNOWN_DW_OP (const1u, DW_OP_const1u) \
-  DWARF_ONE_KNOWN_DW_OP (const2s, DW_OP_const2s) \
-  DWARF_ONE_KNOWN_DW_OP (const2u, DW_OP_const2u) \
-  DWARF_ONE_KNOWN_DW_OP (const4s, DW_OP_const4s) \
-  DWARF_ONE_KNOWN_DW_OP (const4u, DW_OP_const4u) \
-  DWARF_ONE_KNOWN_DW_OP (const8s, DW_OP_const8s) \
-  DWARF_ONE_KNOWN_DW_OP (const8u, DW_OP_const8u) \
-  DWARF_ONE_KNOWN_DW_OP (consts, DW_OP_consts) \
-  DWARF_ONE_KNOWN_DW_OP (constu, DW_OP_constu) \
-  DWARF_ONE_KNOWN_DW_OP (deref, DW_OP_deref) \
-  DWARF_ONE_KNOWN_DW_OP (deref_size, DW_OP_deref_size) \
-  DWARF_ONE_KNOWN_DW_OP (div, DW_OP_div) \
-  DWARF_ONE_KNOWN_DW_OP (drop, DW_OP_drop) \
-  DWARF_ONE_KNOWN_DW_OP (dup, DW_OP_dup) \
-  DWARF_ONE_KNOWN_DW_OP (eq, DW_OP_eq) \
-  DWARF_ONE_KNOWN_DW_OP (fbreg, DW_OP_fbreg) \
-  DWARF_ONE_KNOWN_DW_OP (form_tls_address, DW_OP_form_tls_address) \
-  DWARF_ONE_KNOWN_DW_OP (ge, DW_OP_ge) \
-  DWARF_ONE_KNOWN_DW_OP (gt, DW_OP_gt) \
-  DWARF_ONE_KNOWN_DW_OP (implicit_value, DW_OP_implicit_value) \
-  DWARF_ONE_KNOWN_DW_OP (le, DW_OP_le) \
-  DWARF_ONE_KNOWN_DW_OP (lit0, DW_OP_lit0) \
-  DWARF_ONE_KNOWN_DW_OP (lit1, DW_OP_lit1) \
-  DWARF_ONE_KNOWN_DW_OP (lit10, DW_OP_lit10) \
-  DWARF_ONE_KNOWN_DW_OP (lit11, DW_OP_lit11) \
-  DWARF_ONE_KNOWN_DW_OP (lit12, DW_OP_lit12) \
-  DWARF_ONE_KNOWN_DW_OP (lit13, DW_OP_lit13) \
-  DWARF_ONE_KNOWN_DW_OP (lit14, DW_OP_lit14) \
-  DWARF_ONE_KNOWN_DW_OP (lit15, DW_OP_lit15) \
-  DWARF_ONE_KNOWN_DW_OP (lit16, DW_OP_lit16) \
-  DWARF_ONE_KNOWN_DW_OP (lit17, DW_OP_lit17) \
-  DWARF_ONE_KNOWN_DW_OP (lit18, DW_OP_lit18) \
-  DWARF_ONE_KNOWN_DW_OP (lit19, DW_OP_lit19) \
-  DWARF_ONE_KNOWN_DW_OP (lit2, DW_OP_lit2) \
-  DWARF_ONE_KNOWN_DW_OP (lit20, DW_OP_lit20) \
-  DWARF_ONE_KNOWN_DW_OP (lit21, DW_OP_lit21) \
-  DWARF_ONE_KNOWN_DW_OP (lit22, DW_OP_lit22) \
-  DWARF_ONE_KNOWN_DW_OP (lit23, DW_OP_lit23) \
-  DWARF_ONE_KNOWN_DW_OP (lit24, DW_OP_lit24) \
-  DWARF_ONE_KNOWN_DW_OP (lit25, DW_OP_lit25) \
-  DWARF_ONE_KNOWN_DW_OP (lit26, DW_OP_lit26) \
-  DWARF_ONE_KNOWN_DW_OP (lit27, DW_OP_lit27) \
-  DWARF_ONE_KNOWN_DW_OP (lit28, DW_OP_lit28) \
-  DWARF_ONE_KNOWN_DW_OP (lit29, DW_OP_lit29) \
-  DWARF_ONE_KNOWN_DW_OP (lit3, DW_OP_lit3) \
-  DWARF_ONE_KNOWN_DW_OP (lit30, DW_OP_lit30) \
-  DWARF_ONE_KNOWN_DW_OP (lit31, DW_OP_lit31) \
-  DWARF_ONE_KNOWN_DW_OP (lit4, DW_OP_lit4) \
-  DWARF_ONE_KNOWN_DW_OP (lit5, DW_OP_lit5) \
-  DWARF_ONE_KNOWN_DW_OP (lit6, DW_OP_lit6) \
-  DWARF_ONE_KNOWN_DW_OP (lit7, DW_OP_lit7) \
-  DWARF_ONE_KNOWN_DW_OP (lit8, DW_OP_lit8) \
-  DWARF_ONE_KNOWN_DW_OP (lit9, DW_OP_lit9) \
-  DWARF_ONE_KNOWN_DW_OP (lt, DW_OP_lt) \
-  DWARF_ONE_KNOWN_DW_OP (minus, DW_OP_minus) \
-  DWARF_ONE_KNOWN_DW_OP (mod, DW_OP_mod) \
-  DWARF_ONE_KNOWN_DW_OP (mul, DW_OP_mul) \
-  DWARF_ONE_KNOWN_DW_OP (ne, DW_OP_ne) \
-  DWARF_ONE_KNOWN_DW_OP (neg, DW_OP_neg) \
-  DWARF_ONE_KNOWN_DW_OP (nop, DW_OP_nop) \
-  DWARF_ONE_KNOWN_DW_OP (not, DW_OP_not) \
-  DWARF_ONE_KNOWN_DW_OP (or, DW_OP_or) \
-  DWARF_ONE_KNOWN_DW_OP (over, DW_OP_over) \
-  DWARF_ONE_KNOWN_DW_OP (pick, DW_OP_pick) \
-  DWARF_ONE_KNOWN_DW_OP (piece, DW_OP_piece) \
-  DWARF_ONE_KNOWN_DW_OP (plus, DW_OP_plus) \
-  DWARF_ONE_KNOWN_DW_OP (plus_uconst, DW_OP_plus_uconst) \
-  DWARF_ONE_KNOWN_DW_OP (push_object_address, DW_OP_push_object_address) \
-  DWARF_ONE_KNOWN_DW_OP (reg0, DW_OP_reg0) \
-  DWARF_ONE_KNOWN_DW_OP (reg1, DW_OP_reg1) \
-  DWARF_ONE_KNOWN_DW_OP (reg10, DW_OP_reg10) \
-  DWARF_ONE_KNOWN_DW_OP (reg11, DW_OP_reg11) \
-  DWARF_ONE_KNOWN_DW_OP (reg12, DW_OP_reg12) \
-  DWARF_ONE_KNOWN_DW_OP (reg13, DW_OP_reg13) \
-  DWARF_ONE_KNOWN_DW_OP (reg14, DW_OP_reg14) \
-  DWARF_ONE_KNOWN_DW_OP (reg15, DW_OP_reg15) \
-  DWARF_ONE_KNOWN_DW_OP (reg16, DW_OP_reg16) \
-  DWARF_ONE_KNOWN_DW_OP (reg17, DW_OP_reg17) \
-  DWARF_ONE_KNOWN_DW_OP (reg18, DW_OP_reg18) \
-  DWARF_ONE_KNOWN_DW_OP (reg19, DW_OP_reg19) \
-  DWARF_ONE_KNOWN_DW_OP (reg2, DW_OP_reg2) \
-  DWARF_ONE_KNOWN_DW_OP (reg20, DW_OP_reg20) \
-  DWARF_ONE_KNOWN_DW_OP (reg21, DW_OP_reg21) \
-  DWARF_ONE_KNOWN_DW_OP (reg22, DW_OP_reg22) \
-  DWARF_ONE_KNOWN_DW_OP (reg23, DW_OP_reg23) \
-  DWARF_ONE_KNOWN_DW_OP (reg24, DW_OP_reg24) \
-  DWARF_ONE_KNOWN_DW_OP (reg25, DW_OP_reg25) \
-  DWARF_ONE_KNOWN_DW_OP (reg26, DW_OP_reg26) \
-  DWARF_ONE_KNOWN_DW_OP (reg27, DW_OP_reg27) \
-  DWARF_ONE_KNOWN_DW_OP (reg28, DW_OP_reg28) \
-  DWARF_ONE_KNOWN_DW_OP (reg29, DW_OP_reg29) \
-  DWARF_ONE_KNOWN_DW_OP (reg3, DW_OP_reg3) \
-  DWARF_ONE_KNOWN_DW_OP (reg30, DW_OP_reg30) \
-  DWARF_ONE_KNOWN_DW_OP (reg31, DW_OP_reg31) \
-  DWARF_ONE_KNOWN_DW_OP (reg4, DW_OP_reg4) \
-  DWARF_ONE_KNOWN_DW_OP (reg5, DW_OP_reg5) \
-  DWARF_ONE_KNOWN_DW_OP (reg6, DW_OP_reg6) \
-  DWARF_ONE_KNOWN_DW_OP (reg7, DW_OP_reg7) \
-  DWARF_ONE_KNOWN_DW_OP (reg8, DW_OP_reg8) \
-  DWARF_ONE_KNOWN_DW_OP (reg9, DW_OP_reg9) \
-  DWARF_ONE_KNOWN_DW_OP (regx, DW_OP_regx) \
-  DWARF_ONE_KNOWN_DW_OP (rot, DW_OP_rot) \
-  DWARF_ONE_KNOWN_DW_OP (shl, DW_OP_shl) \
-  DWARF_ONE_KNOWN_DW_OP (shr, DW_OP_shr) \
-  DWARF_ONE_KNOWN_DW_OP (shra, DW_OP_shra) \
-  DWARF_ONE_KNOWN_DW_OP (skip, DW_OP_skip) \
-  DWARF_ONE_KNOWN_DW_OP (stack_value, DW_OP_stack_value) \
-  DWARF_ONE_KNOWN_DW_OP (swap, DW_OP_swap) \
-  DWARF_ONE_KNOWN_DW_OP (xderef, DW_OP_xderef) \
-  DWARF_ONE_KNOWN_DW_OP (xderef_size, DW_OP_xderef_size) \
-  DWARF_ONE_KNOWN_DW_OP (xor, DW_OP_xor) \
-  /* End of DW_OP_*.  */
-
-#define DWARF_ALL_KNOWN_DW_ORD \
-  DWARF_ONE_KNOWN_DW_ORD (col_major, DW_ORD_col_major) \
-  DWARF_ONE_KNOWN_DW_ORD (row_major, DW_ORD_row_major) \
-  /* End of DW_ORD_*.  */
-
-#define DWARF_ALL_KNOWN_DW_TAG \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_BINCL, DW_TAG_GNU_BINCL) \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_EINCL, DW_TAG_GNU_EINCL) \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_call_site, DW_TAG_GNU_call_site) \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_call_site_parameter, DW_TAG_GNU_call_site_parameter) \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_formal_parameter_pack, DW_TAG_GNU_formal_parameter_pack) \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_template_parameter_pack, DW_TAG_GNU_template_parameter_pack) \
-  DWARF_ONE_KNOWN_DW_TAG (GNU_template_template_param, DW_TAG_GNU_template_template_param) \
-  DWARF_ONE_KNOWN_DW_TAG (MIPS_loop, DW_TAG_MIPS_loop) \
-  DWARF_ONE_KNOWN_DW_TAG (access_declaration, DW_TAG_access_declaration) \
-  DWARF_ONE_KNOWN_DW_TAG (array_type, DW_TAG_array_type) \
-  DWARF_ONE_KNOWN_DW_TAG (atomic_type, DW_TAG_atomic_type) \
-  DWARF_ONE_KNOWN_DW_TAG (base_type, DW_TAG_base_type) \
-  DWARF_ONE_KNOWN_DW_TAG (catch_block, DW_TAG_catch_block) \
-  DWARF_ONE_KNOWN_DW_TAG (class_template, DW_TAG_class_template) \
-  DWARF_ONE_KNOWN_DW_TAG (class_type, DW_TAG_class_type) \
-  DWARF_ONE_KNOWN_DW_TAG (common_block, DW_TAG_common_block) \
-  DWARF_ONE_KNOWN_DW_TAG (common_inclusion, DW_TAG_common_inclusion) \
-  DWARF_ONE_KNOWN_DW_TAG (compile_unit, DW_TAG_compile_unit) \
-  DWARF_ONE_KNOWN_DW_TAG (condition, DW_TAG_condition) \
-  DWARF_ONE_KNOWN_DW_TAG (const_type, DW_TAG_const_type) \
-  DWARF_ONE_KNOWN_DW_TAG (constant, DW_TAG_constant) \
-  DWARF_ONE_KNOWN_DW_TAG (dwarf_procedure, DW_TAG_dwarf_procedure) \
-  DWARF_ONE_KNOWN_DW_TAG (entry_point, DW_TAG_entry_point) \
-  DWARF_ONE_KNOWN_DW_TAG (enumeration_type, DW_TAG_enumeration_type) \
-  DWARF_ONE_KNOWN_DW_TAG (enumerator, DW_TAG_enumerator) \
-  DWARF_ONE_KNOWN_DW_TAG (file_type, DW_TAG_file_type) \
-  DWARF_ONE_KNOWN_DW_TAG (formal_parameter, DW_TAG_formal_parameter) \
-  DWARF_ONE_KNOWN_DW_TAG (format_label, DW_TAG_format_label) \
-  DWARF_ONE_KNOWN_DW_TAG (friend, DW_TAG_friend) \
-  DWARF_ONE_KNOWN_DW_TAG (function_template, DW_TAG_function_template) \
-  DWARF_ONE_KNOWN_DW_TAG (imported_declaration, DW_TAG_imported_declaration) \
-  DWARF_ONE_KNOWN_DW_TAG (imported_module, DW_TAG_imported_module) \
-  DWARF_ONE_KNOWN_DW_TAG (imported_unit, DW_TAG_imported_unit) \
-  DWARF_ONE_KNOWN_DW_TAG (inheritance, DW_TAG_inheritance) \
-  DWARF_ONE_KNOWN_DW_TAG (inlined_subroutine, DW_TAG_inlined_subroutine) \
-  DWARF_ONE_KNOWN_DW_TAG (interface_type, DW_TAG_interface_type) \
-  DWARF_ONE_KNOWN_DW_TAG (label, DW_TAG_label) \
-  DWARF_ONE_KNOWN_DW_TAG (lexical_block, DW_TAG_lexical_block) \
-  DWARF_ONE_KNOWN_DW_TAG (member, DW_TAG_member) \
-  DWARF_ONE_KNOWN_DW_TAG (module, DW_TAG_module) \
-  DWARF_ONE_KNOWN_DW_TAG (namelist, DW_TAG_namelist) \
-  DWARF_ONE_KNOWN_DW_TAG (namelist_item, DW_TAG_namelist_item) \
-  DWARF_ONE_KNOWN_DW_TAG (namespace, DW_TAG_namespace) \
-  DWARF_ONE_KNOWN_DW_TAG (packed_type, DW_TAG_packed_type) \
-  DWARF_ONE_KNOWN_DW_TAG (partial_unit, DW_TAG_partial_unit) \
-  DWARF_ONE_KNOWN_DW_TAG (pointer_type, DW_TAG_pointer_type) \
-  DWARF_ONE_KNOWN_DW_TAG (ptr_to_member_type, DW_TAG_ptr_to_member_type) \
-  DWARF_ONE_KNOWN_DW_TAG (reference_type, DW_TAG_reference_type) \
-  DWARF_ONE_KNOWN_DW_TAG (restrict_type, DW_TAG_restrict_type) \
-  DWARF_ONE_KNOWN_DW_TAG (rvalue_reference_type, DW_TAG_rvalue_reference_type) \
-  DWARF_ONE_KNOWN_DW_TAG (set_type, DW_TAG_set_type) \
-  DWARF_ONE_KNOWN_DW_TAG (shared_type, DW_TAG_shared_type) \
-  DWARF_ONE_KNOWN_DW_TAG (string_type, DW_TAG_string_type) \
-  DWARF_ONE_KNOWN_DW_TAG (structure_type, DW_TAG_structure_type) \
-  DWARF_ONE_KNOWN_DW_TAG (subprogram, DW_TAG_subprogram) \
-  DWARF_ONE_KNOWN_DW_TAG (subrange_type, DW_TAG_subrange_type) \
-  DWARF_ONE_KNOWN_DW_TAG (subroutine_type, DW_TAG_subroutine_type) \
-  DWARF_ONE_KNOWN_DW_TAG (template_alias, DW_TAG_template_alias) \
-  DWARF_ONE_KNOWN_DW_TAG (template_type_parameter, DW_TAG_template_type_parameter) \
-  DWARF_ONE_KNOWN_DW_TAG (template_value_parameter, DW_TAG_template_value_parameter) \
-  DWARF_ONE_KNOWN_DW_TAG (thrown_type, DW_TAG_thrown_type) \
-  DWARF_ONE_KNOWN_DW_TAG (try_block, DW_TAG_try_block) \
-  DWARF_ONE_KNOWN_DW_TAG (type_unit, DW_TAG_type_unit) \
-  DWARF_ONE_KNOWN_DW_TAG (typedef, DW_TAG_typedef) \
-  DWARF_ONE_KNOWN_DW_TAG (union_type, DW_TAG_union_type) \
-  DWARF_ONE_KNOWN_DW_TAG (unspecified_parameters, DW_TAG_unspecified_parameters) \
-  DWARF_ONE_KNOWN_DW_TAG (unspecified_type, DW_TAG_unspecified_type) \
-  DWARF_ONE_KNOWN_DW_TAG (variable, DW_TAG_variable) \
-  DWARF_ONE_KNOWN_DW_TAG (variant, DW_TAG_variant) \
-  DWARF_ONE_KNOWN_DW_TAG (variant_part, DW_TAG_variant_part) \
-  DWARF_ONE_KNOWN_DW_TAG (volatile_type, DW_TAG_volatile_type) \
-  DWARF_ONE_KNOWN_DW_TAG (with_stmt, DW_TAG_with_stmt) \
-  /* End of DW_TAG_*.  */
-
-#define DWARF_ALL_KNOWN_DW_VIRTUALITY \
-  DWARF_ONE_KNOWN_DW_VIRTUALITY (none, DW_VIRTUALITY_none) \
-  DWARF_ONE_KNOWN_DW_VIRTUALITY (pure_virtual, DW_VIRTUALITY_pure_virtual) \
-  DWARF_ONE_KNOWN_DW_VIRTUALITY (virtual, DW_VIRTUALITY_virtual) \
-  /* End of DW_VIRTUALITY_*.  */
-
-#define DWARF_ALL_KNOWN_DW_VIS \
-  DWARF_ONE_KNOWN_DW_VIS (exported, DW_VIS_exported) \
-  DWARF_ONE_KNOWN_DW_VIS (local, DW_VIS_local) \
-  DWARF_ONE_KNOWN_DW_VIS (qualified, DW_VIS_qualified) \
-  /* End of DW_VIS_*.  */
diff --git a/libdw/libdw.h b/libdw/libdw.h
index e20961b..1a4e15a 100644
--- a/libdw/libdw.h
+++ b/libdw/libdw.h
@@ -474,7 +474,14 @@
 extern int dwarf_hasattr (Dwarf_Die *die, unsigned int search_name);
 
 /* These are the same as dwarf_attr and dwarf_hasattr, respectively,
-   but they resolve an indirect attribute through DW_AT_abstract_origin.  */
+   but they resolve an indirect attribute through
+   DW_AT_abstract_origin, DW_AT_specification or, if the DIE is a
+   top-level split CU, the skeleton DIE.  Note that the attribute
+   might come from a DIE in a different CU (possibly from a different
+   Dwarf file).  In that case all attribute information needs to be
+   resolved through the CU associated with the returned
+   Dwarf_Attribute.  The dwarf_form functions already do this
+   automatically.  */
 extern Dwarf_Attribute *dwarf_attr_integrate (Dwarf_Die *die,
 					      unsigned int search_name,
 					      Dwarf_Attribute *result)
diff --git a/libdw/libdw_alloc.c b/libdw/libdw_alloc.c
index e0281a3..b3e5334 100644
--- a/libdw/libdw_alloc.c
+++ b/libdw/libdw_alloc.c
@@ -87,6 +87,11 @@
   if (result == NULL)
     {
       result = malloc (dbg->mem_default_size);
+      if (result == NULL)
+	{
+	  pthread_rwlock_unlock (&dbg->mem_rwl);
+	  dbg->oom_handler();
+	}
       result->size = dbg->mem_default_size
                      - offsetof (struct libdw_memblock, mem);
       result->remaining = result->size;
diff --git a/libdw/libdw_visit_scopes.c b/libdw/libdw_visit_scopes.c
index eb892e1..7dfa5f6 100644
--- a/libdw/libdw_visit_scopes.c
+++ b/libdw/libdw_visit_scopes.c
@@ -125,8 +125,12 @@
 	  Dwarf_Attribute *attr = INTUSE(dwarf_attr) (&state->child.die,
 						      DW_AT_import,
 						      &attr_mem);
+	  /* Some gcc -flto versions imported other top-level compile units,
+	     skip those.  */
 	  if (INTUSE(dwarf_formref_die) (attr, &state->child.die) != NULL
-	      && INTUSE(dwarf_child) (&state->child.die, &state->child.die) == 0)
+	      && INTUSE(dwarf_tag) (&state->child.die) != DW_TAG_compile_unit
+	      && (INTUSE(dwarf_child) (&state->child.die, &state->child.die)
+		  == 0))
 	    {
 	      /* Checks the given DIE hasn't been imported yet
 	         to prevent cycles.  */
diff --git a/libdwelf/ChangeLog b/libdwelf/ChangeLog
index 5b48ed8..008bdeb 100644
--- a/libdwelf/ChangeLog
+++ b/libdwelf/ChangeLog
@@ -1,3 +1,8 @@
+2020-06-04  Mark Wielaard  <mark@klomp.org>
+
+	* dwelf_elf_e_machine_string.c (dwelf_elf_e_machine_string):
+	Rename EM_ARC_COMPACT2 to EM_ARCV2.
+
 2019-08-12  Mark Wielaard  <mark@klomp.org>
 
 	* libdwelf.h (dwelf_elf_begin): Update documentation.
diff --git a/libdwelf/dwelf_elf_e_machine_string.c b/libdwelf/dwelf_elf_e_machine_string.c
index de07b01..86fa752 100644
--- a/libdwelf/dwelf_elf_e_machine_string.c
+++ b/libdwelf/dwelf_elf_e_machine_string.c
@@ -340,8 +340,8 @@
       return "KIPO-KAIST Core-A 1st gen";
     case EM_COREA_2ND:
       return "KIPO-KAIST Core-A 2nd gen";
-    case EM_ARC_COMPACT2:
-      return "Synopsys ARCompact V2";
+    case EM_ARCV2:
+      return "Synopsys ARCv2 ISA";
     case EM_OPEN8:
       return "Open8 RISC";
     case EM_RL78:
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
index 0b95490..4f1ec9d 100644
--- a/libdwfl/ChangeLog
+++ b/libdwfl/ChangeLog
@@ -1,3 +1,29 @@
+2020-05-09  Mark Wielaard  <mark@klomp.org>
+
+	* find-debuginfo.c (dwfl_standard_find_debuginfo): Return failure
+	when mod is NULL.
+
+2020-05-08  Mark Wielaard  <mark@klomp.org>
+
+	* libdwfl/core-file.c (dwfl_core_file_report): Keep track of
+	new bool cleanup_user_core and cleanup dwfl->user_core in error
+	case.
+
+2020-04-30  Mark Wielaard  <mark@klomp.org>
+
+	* find-debuginfo.c (dwfl_standard_find_debuginfo): When mod->dw
+	is already set then try fetching debugaltlink.
+
+2020-04-25  Mark Wielaard  <mark@klomp.org>
+
+	* gzip.c (open_stream): Return DWFL_E_NOMEM instead of calling
+	zlib_fail.
+
+2020-04-16  Mark Wielaard  <mark@klomp.org>
+
+	* find-debuginfo.c (dwfl_standard_find_debuginfo): Initialize bits
+	to NULL.
+
 2020-01-24  Mark Wielaard  <mark@klomp.org>
 
 	* linux-kernel-modules.c (find_kernel_elf): Check release isn't NULL.
diff --git a/libdwfl/core-file.c b/libdwfl/core-file.c
index 01109f4..a0ccc9b 100644
--- a/libdwfl/core-file.c
+++ b/libdwfl/core-file.c
@@ -450,6 +450,7 @@
       return -1;
     }
 
+  bool cleanup_user_core = false;
   if (dwfl->user_core != NULL)
     free (dwfl->user_core->executable_for_core);
   if (executable == NULL)
@@ -461,6 +462,7 @@
     {
       if (dwfl->user_core == NULL)
 	{
+	  cleanup_user_core = true;
 	  dwfl->user_core = calloc (1, sizeof (struct Dwfl_User_Core));
 	  if (dwfl->user_core == NULL)
 	    {
@@ -472,6 +474,11 @@
       dwfl->user_core->executable_for_core = strdup (executable);
       if (dwfl->user_core->executable_for_core == NULL)
 	{
+	  if (cleanup_user_core)
+	    {
+	      free (dwfl->user_core);
+	      dwfl->user_core = NULL;
+	    }
 	  __libdwfl_seterrno (DWFL_E_NOMEM);
 	  return -1;
 	}
@@ -481,7 +488,15 @@
   GElf_Phdr notes_phdr;
   int ndx = dwfl_report_core_segments (dwfl, elf, phnum, &notes_phdr);
   if (unlikely (ndx <= 0))
-    return ndx;
+    {
+      if (cleanup_user_core)
+	{
+	  free (dwfl->user_core->executable_for_core);
+	  free (dwfl->user_core);
+	  dwfl->user_core = NULL;
+	}
+      return ndx;
+    }
 
   /* Next, we should follow the chain from DT_DEBUG.  */
 
diff --git a/libdwfl/find-debuginfo.c b/libdwfl/find-debuginfo.c
index 4085764..eb68d54 100644
--- a/libdwfl/find-debuginfo.c
+++ b/libdwfl/find-debuginfo.c
@@ -355,9 +355,12 @@
 			      GElf_Word debuglink_crc,
 			      char **debuginfo_file_name)
 {
+  if (mod == NULL)
+    return -1;
+
   /* First try by build ID if we have one.  If that succeeds or fails
      other than just by finding nothing, that's all we do.  */
-  const unsigned char *bits;
+  const unsigned char *bits = NULL;
   GElf_Addr vaddr;
   int bits_len;
   if ((bits_len = INTUSE(dwfl_module_build_id) (mod, &bits, &vaddr)) > 0)
@@ -398,8 +401,27 @@
       free (canon);
     }
 
-  if (fd < 0 && bits_len > 0)
-    fd = __libdwfl_debuginfod_find_debuginfo (mod->dwfl, bits, bits_len);
+  /* Still nothing? Try if we can use the debuginfod client.
+     But note that we might be looking for the alt file.
+     We use the same trick as dwfl_build_id_find_debuginfo.
+     If the debug file (dw) is already set, then we must be
+     looking for the altfile. But we cannot use the actual
+     file/path name given as hint. We'll have to lookup the
+     alt file "build-id". Because the debuginfod client only
+     handles build-ids.  */
+  if (fd < 0)
+    {
+      if (mod->dw != NULL)
+	{
+	  const char *altname;
+	  bits_len = INTUSE(dwelf_dwarf_gnu_debugaltlink) (mod->dw, &altname,
+							   (const void **)
+							   &bits);
+	}
+
+      if (bits_len > 0)
+	fd = __libdwfl_debuginfod_find_debuginfo (mod->dwfl, bits, bits_len);
+    }
 
   return fd;
 }
diff --git a/libdwfl/gzip.c b/libdwfl/gzip.c
index 043d0b6..e9988cc 100644
--- a/libdwfl/gzip.c
+++ b/libdwfl/gzip.c
@@ -153,7 +153,7 @@
     if (unlikely (state->zf == NULL))
       {
 	close (d);
-	return zlib_fail (state, Z (MEM_ERROR));
+	return DWFL_E_NOMEM;
       }
 
     /* From here on, zlib will close D.  */
diff --git a/libebl/ChangeLog b/libebl/ChangeLog
index b328731..fa6dd03 100644
--- a/libebl/ChangeLog
+++ b/libebl/ChangeLog
@@ -1,3 +1,22 @@
+2020-06-10  Mark Wielaard  <mark@klomp.org>
+
+	* eblopenbackend.c (i386_init, sh_init, x86_64_init, ia64_init,
+	alpha_init, arm_init, aarch64_init, sparc_init, ppc_init,
+	ppc64_init, s390_init, tilegx_init, m68k_init, bpf_init,
+	riscv_init, csky_init): Adjust signature.
+	(openbackend): Call init without sizeof(Ebl).
+	* libeblP.h (ebl_bhinit_t): Adjust signature.
+
+2020-06-04  Mark Wielaard  <mark@klomp.org>
+
+	* eblsegmenttypename.c (ebl_segment_type_name): Remove
+	PT_GNU_PROPERTY define.
+
+2020-04-17  Mark Wielaard  <mark@klomp.org>
+
+	* eblopenbackend.c (default_debugscn_p): Handle .gnu.debuglto_
+	prefix.
+
 2020-02-08  Mark Wielaard  <mark@klomp.org>
 
 	* eblsegmenttypename.c (ebl_segment_type_name): Handle
diff --git a/libebl/eblopenbackend.c b/libebl/eblopenbackend.c
index 210b47e..b3b6fc0 100644
--- a/libebl/eblopenbackend.c
+++ b/libebl/eblopenbackend.c
@@ -41,22 +41,22 @@
 #include <system.h>
 #include <libeblP.h>
 
-const char *i386_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *sh_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *x86_64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *ia64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *alpha_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *arm_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *aarch64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *sparc_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *ppc_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *ppc64_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *s390_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *tilegx_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *m68k_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *bpf_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *riscv_init (Elf *, GElf_Half, Ebl *, size_t);
-const char *csky_init (Elf *, GElf_Half, Ebl *, size_t);
+Ebl *i386_init (Elf *, GElf_Half, Ebl *);
+Ebl *sh_init (Elf *, GElf_Half, Ebl *);
+Ebl *x86_64_init (Elf *, GElf_Half, Ebl *);
+Ebl *ia64_init (Elf *, GElf_Half, Ebl *);
+Ebl *alpha_init (Elf *, GElf_Half, Ebl *);
+Ebl *arm_init (Elf *, GElf_Half, Ebl *);
+Ebl *aarch64_init (Elf *, GElf_Half, Ebl *);
+Ebl *sparc_init (Elf *, GElf_Half, Ebl *);
+Ebl *ppc_init (Elf *, GElf_Half, Ebl *);
+Ebl *ppc64_init (Elf *, GElf_Half, Ebl *);
+Ebl *s390_init (Elf *, GElf_Half, Ebl *);
+Ebl *tilegx_init (Elf *, GElf_Half, Ebl *);
+Ebl *m68k_init (Elf *, GElf_Half, Ebl *);
+Ebl *bpf_init (Elf *, GElf_Half, Ebl *);
+Ebl *riscv_init (Elf *, GElf_Half, Ebl *);
+Ebl *csky_init (Elf *, GElf_Half, Ebl *);
 
 /* This table should contain the complete list of architectures as far
    as the ELF specification is concerned.  */
@@ -330,7 +330,7 @@
 	  }
 
         if (machines[cnt].init &&
-            machines[cnt].init (elf, machine, result, sizeof(Ebl)))
+            machines[cnt].init (elf, machine, result))
           {
             result->elf = elf;
             /* A few entries are mandatory.  */
@@ -621,7 +621,9 @@
   for (size_t cnt = 0; cnt < ndwarf_scn_names; ++cnt)
     if (strcmp (name, dwarf_scn_names[cnt]) == 0
 	|| (strncmp (name, ".zdebug", strlen (".zdebug")) == 0
-	    && strcmp (&name[2], &dwarf_scn_names[cnt][1]) == 0))
+	    && strcmp (&name[2], &dwarf_scn_names[cnt][1]) == 0)
+	|| (strncmp (name, ".gnu.debuglto_", strlen (".gnu.debuglto_")) == 0
+	    && strcmp (&name[14], dwarf_scn_names[cnt]) == 0))
       return true;
 
   return false;
diff --git a/libebl/eblsegmenttypename.c b/libebl/eblsegmenttypename.c
index c6bdff8..23a8548 100644
--- a/libebl/eblsegmenttypename.c
+++ b/libebl/eblsegmenttypename.c
@@ -56,10 +56,6 @@
 	  PTYPE (TLS)
 	};
 
-#ifndef PT_GNU_PROPERTY
-#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
-#endif
-
       /* Is it one of the standard segment types?  */
       if (segment >= PT_NULL && segment < PT_NUM)
 	res = ptypes[segment];
diff --git a/libebl/libeblP.h b/libebl/libeblP.h
index fd0fcc9..599f637 100644
--- a/libebl/libeblP.h
+++ b/libebl/libeblP.h
@@ -80,8 +80,10 @@
 };
 
 
-/* Type of the initialization functions in the backend modules.  */
-typedef const char *(*ebl_bhinit_t) (Elf *, GElf_Half, Ebl *, size_t);
+/* Type of the initialization functions in the backend modules.
+   The init function returns the given Ebl * or NULL if it couldn't
+   initialize for the given Elf or machine.  */
+typedef Ebl *(*ebl_bhinit_t) (Elf *, GElf_Half, Ebl *);
 
 
 /* gettext helper macros.  */
diff --git a/libelf/Android.bp b/libelf/Android.bp
deleted file mode 100644
index 1c7e647..0000000
--- a/libelf/Android.bp
+++ /dev/null
@@ -1,174 +0,0 @@
-// Copyright (C) 2013 The Android Open Source Project
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-cc_library {
-    name: "libelf",
-    host_supported: true,
-    vendor_available: true,
-
-    srcs:  [
-        "elf32_checksum.c",
-        "elf32_fsize.c",
-        "elf32_getchdr.c",
-        "elf32_getehdr.c",
-        "elf32_getphdr.c",
-        "elf32_getshdr.c",
-        "elf32_newehdr.c",
-        "elf32_newphdr.c",
-        "elf32_offscn.c",
-        "elf32_updatefile.c",
-        "elf32_updatenull.c",
-        "elf32_xlatetof.c",
-        "elf32_xlatetom.c",
-        "elf64_checksum.c",
-        "elf64_fsize.c",
-        "elf64_getchdr.c",
-        "elf64_getehdr.c",
-        "elf64_getphdr.c",
-        "elf64_getshdr.c",
-        "elf64_newehdr.c",
-        "elf64_newphdr.c",
-        "elf64_offscn.c",
-        "elf64_updatefile.c",
-        "elf64_updatenull.c",
-        "elf64_xlatetof.c",
-        "elf64_xlatetom.c",
-        "elf_begin.c",
-        "elf_clone.c",
-        "elf_cntl.c",
-        "elf_compress.c",
-        "elf_end.c",
-        "elf_error.c",
-        "elf_fill.c",
-        "elf_flagdata.c",
-        "elf_flagehdr.c",
-        "elf_flagelf.c",
-        "elf_flagphdr.c",
-        "elf_flagscn.c",
-        "elf_flagshdr.c",
-        "elf_getarhdr.c",
-        "elf_getaroff.c",
-        "elf_getarsym.c",
-        "elf_getbase.c",
-        "elf_getdata.c",
-        "elf_getdata_rawchunk.c",
-        "elf_getident.c",
-        "elf_getphdrnum.c",
-        "elf_getscn.c",
-        "elf_getshdrnum.c",
-        "elf_getshdrstrndx.c",
-        "elf_gnu_hash.c",
-        "elf_hash.c",
-        "elf_kind.c",
-        "elf_memory.c",
-        "elf_ndxscn.c",
-        "elf_newdata.c",
-        "elf_newscn.c",
-        "elf_next.c",
-        "elf_nextscn.c",
-        "elf_rand.c",
-        "elf_rawdata.c",
-        "elf_rawfile.c",
-        "elf_readall.c",
-        "elf_scnshndx.c",
-        "elf_strptr.c",
-        "elf_update.c",
-        "elf_version.c",
-        "gelf_checksum.c",
-        "gelf_fsize.c",
-        "gelf_getauxv.c",
-        "gelf_getchdr.c",
-        "gelf_getclass.c",
-        "gelf_getdyn.c",
-        "gelf_getehdr.c",
-        "gelf_getlib.c",
-        "gelf_getmove.c",
-        "gelf_getnote.c",
-        "gelf_getphdr.c",
-        "gelf_getrela.c",
-        "gelf_getrel.c",
-        "gelf_getshdr.c",
-        "gelf_getsym.c",
-        "gelf_getsyminfo.c",
-        "gelf_getsymshndx.c",
-        "gelf_getverdaux.c",
-        "gelf_getverdef.c",
-        "gelf_getvernaux.c",
-        "gelf_getverneed.c",
-        "gelf_getversym.c",
-        "gelf_newehdr.c",
-        "gelf_newphdr.c",
-        "gelf_offscn.c",
-        "gelf_update_auxv.c",
-        "gelf_update_dyn.c",
-        "gelf_update_ehdr.c",
-        "gelf_update_lib.c",
-        "gelf_update_move.c",
-        "gelf_update_phdr.c",
-        "gelf_update_rela.c",
-        "gelf_update_rel.c",
-        "gelf_update_shdr.c",
-        "gelf_update_sym.c",
-        "gelf_update_syminfo.c",
-        "gelf_update_symshndx.c",
-        "gelf_update_verdaux.c",
-        "gelf_update_verdef.c",
-        "gelf_update_vernaux.c",
-        "gelf_update_verneed.c",
-        "gelf_update_versym.c",
-        "gelf_xlate.c",
-        "gelf_xlatetof.c",
-        "gelf_xlatetom.c",
-        "libelf_crc32.c",
-        "libelf_next_prime.c",
-        "nlist.c",
-    ],
-
-    cflags: [
-        "-DHAVE_CONFIG_H",
-        "-std=gnu99",
-        "-D_GNU_SOURCE",
-        "-Werror",
-        // to suppress the "pointer of type ‘void *’ used in arithmetic" warning
-        "-Wno-pointer-arith",
-    ],
-
-    static_libs: ["libz"],
-
-    header_libs: ["elfutils_headers"],
-
-    export_header_lib_headers: ["elfutils_headers"],
-    export_include_dirs: ["."],
-
-    target: {
-        darwin: {
-            enabled: false,
-        },
-        android: {
-            cflags: [
-                "-D_FILE_OFFSET_BITS=64",
-                "-include AndroidFixup.h",
-            ],
-            shared: {
-                enabled: false,
-            },
-        },
-    },
-
-    visibility: [
-        "//device/google/contexthub/util/nanoapp_postprocess",
-        "//external/igt-gpu-tools",
-        "//external/mesa3d",
-    ],
-}
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index 8f79a62..8f6d2d2 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -1,3 +1,20 @@
+2020-06-04  Mark Wielaard  <mark@klomp.org>
+
+	* elf.h: Update from glibc.
+
+2020-05-08  Mark Wielaard  <mark@klomp.org>
+
+	* elf_strptr.c (elf_strptr): Check shdr is not NULL.
+
+2020-05-08  Mark Wielaard  <mark@klomp.org>
+
+	* elf_getdata.c (__libelf_set_rawdata_wrlock): Check
+	__gelf_getehdr_rdlock return value.
+
+2020-04-25  Mark Wielaard  <mark@klomp.org>
+
+	* elf_compress.c (__libelf_compress): Remove free (out_buf).
+
 2020-03-18  Omar Sandoval  <osandov@fb.com>
 
 	* elf_getphdrnum.c (__elf_getphdrnum_rdlock): Call
diff --git a/libelf/elf.h b/libelf/elf.h
index 01648bd..197b557 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-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2020 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
@@ -14,7 +14,7 @@
 
    You should have received a copy of the GNU Lesser General Public
    License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
+   <https://www.gnu.org/licenses/>.  */
 
 #ifndef _ELF_H
 #define	_ELF_H 1
@@ -330,7 +330,7 @@
 #define EM_CLOUDSHIELD	192	/* CloudShield */
 #define EM_COREA_1ST	193	/* KIPO-KAIST Core-A 1st gen. */
 #define EM_COREA_2ND	194	/* KIPO-KAIST Core-A 2nd gen. */
-#define EM_ARC_COMPACT2	195	/* Synopsys ARCompact V2 */
+#define EM_ARCV2	195	/* Synopsys ARCv2 ISA.  */
 #define EM_OPEN8	196	/* Open8 RISC */
 #define EM_RL78		197	/* Renesas RL78 */
 #define EM_VIDEOCORE5	198	/* Broadcom VideoCore V */
@@ -721,6 +721,7 @@
 #define PT_GNU_EH_FRAME	0x6474e550	/* GCC .eh_frame_hdr segment */
 #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_LOSUNW	0x6ffffffa
 #define PT_SUNWBSS	0x6ffffffa	/* Sun Specific segment */
 #define PT_SUNWSTACK	0x6ffffffb	/* Stack segment */
@@ -809,9 +810,16 @@
 #define NT_ARM_SYSTEM_CALL	0x404	/* ARM system call number */
 #define NT_ARM_SVE	0x405		/* ARM Scalable Vector Extension
 					   registers */
+#define NT_ARM_PAC_MASK	0x406		/* ARM pointer authentication
+					   code masks.  */
+#define NT_ARM_PACA_KEYS	0x407	/* ARM pointer authentication
+					   address keys.  */
+#define NT_ARM_PACG_KEYS	0x408	/* ARM pointer authentication
+					   generic key.  */
 #define NT_VMCOREDD	0x700		/* Vmcore Device Dump Note.  */
 #define NT_MIPS_DSP	0x800		/* MIPS DSP ASE registers.  */
 #define NT_MIPS_FP_MODE	0x801		/* MIPS floating-point mode.  */
+#define NT_MIPS_MSA	0x802		/* MIPS SIMD registers.  */
 
 /* Legal values for the note segment descriptor types for object files.  */
 
@@ -987,6 +995,9 @@
 #define	DF_1_SINGLETON	0x02000000	/* Singleton symbols are used.  */
 #define	DF_1_STUB	0x04000000
 #define	DF_1_PIE	0x08000000
+#define	DF_1_KMOD       0x10000000
+#define	DF_1_WEAKFILTER 0x20000000
+#define	DF_1_NOCOMMON   0x40000000
 
 /* Flags for the feature selection in DT_FEATURE_1.  */
 #define DTF_1_PARINIT	0x00000001
@@ -1308,6 +1319,12 @@
 /* Application-specific semantics, hi */
 #define GNU_PROPERTY_HIUSER			0xffffffff
 
+/* AArch64 specific GNU properties.  */
+#define GNU_PROPERTY_AARCH64_FEATURE_1_AND	0xc0000000
+
+#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI	(1U << 0)
+#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC	(1U << 1)
+
 /* The x86 instruction sets indicated by the corresponding bits are
    used in program.  Their support in the hardware is optional.  */
 #define GNU_PROPERTY_X86_ISA_1_USED		0xc0000000
@@ -1705,6 +1722,7 @@
 #define SHT_MIPS_EH_REGION	0x70000027
 #define SHT_MIPS_XLATE_OLD	0x70000028
 #define SHT_MIPS_PDR_EXCEPTION	0x70000029
+#define SHT_MIPS_XHASH		0x7000002b
 
 /* Legal values for sh_flags field of Elf32_Shdr.  */
 
@@ -1952,7 +1970,9 @@
    in a PIE as it stores a relative offset from the address of the tag
    rather than an absolute address.  */
 #define DT_MIPS_RLD_MAP_REL  0x70000035
-#define DT_MIPS_NUM	     0x36
+/* GNU-style hash table with xlat.  */
+#define DT_MIPS_XHASH	     0x70000036
+#define DT_MIPS_NUM	     0x37
 
 /* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry.  */
 
@@ -2854,6 +2874,13 @@
 #define R_AARCH64_TLSDESC      1031	/* TLS Descriptor.  */
 #define R_AARCH64_IRELATIVE	1032	/* STT_GNU_IFUNC relocation.  */
 
+/* AArch64 specific values for the Dyn d_tag field.  */
+#define DT_AARCH64_VARIANT_PCS	(DT_LOPROC + 5)
+#define DT_AARCH64_NUM		6
+
+/* AArch64 specific values for the st_other field.  */
+#define STO_AARCH64_VARIANT_PCS 0x80
+
 /* ARM relocs.  */
 
 #define R_ARM_NONE		0	/* No reloc */
@@ -3926,8 +3953,9 @@
 #define R_RISCV_SET16		55
 #define R_RISCV_SET32		56
 #define R_RISCV_32_PCREL	57
+#define R_RISCV_IRELATIVE	58
 
-#define R_RISCV_NUM		58
+#define R_RISCV_NUM		59
 
 /* BPF specific declarations.  */
 
@@ -4007,6 +4035,74 @@
 #define R_NDS32_TLS_TPOFF	102
 #define R_NDS32_TLS_DESC	119
 
+/* ARCompact/ARCv2 specific relocs.  */
+#define R_ARC_NONE		0x0
+#define R_ARC_8			0x1
+#define R_ARC_16		0x2
+#define R_ARC_24		0x3
+#define R_ARC_32		0x4
+#define R_ARC_B26		0x5
+#define R_ARC_B22_PCREL		0x6
+#define R_ARC_H30		0x7
+#define R_ARC_N8		0x8
+#define R_ARC_N16		0x9
+#define R_ARC_N24		0xA
+#define R_ARC_N32		0xB
+#define R_ARC_SDA		0xC
+#define R_ARC_SECTOFF		0xD
+#define R_ARC_S21H_PCREL	0xE
+#define R_ARC_S21W_PCREL	0xF
+#define R_ARC_S25H_PCREL	0x10
+#define R_ARC_S25W_PCREL	0x11
+#define R_ARC_SDA32		0x12
+#define R_ARC_SDA_LDST		0x13
+#define R_ARC_SDA_LDST1		0x14
+#define R_ARC_SDA_LDST2		0x15
+#define R_ARC_SDA16_LD		0x16
+#define R_ARC_SDA16_LD1		0x17
+#define R_ARC_SDA16_LD2		0x18
+#define R_ARC_S13_PCREL		0x19
+#define R_ARC_W			0x1A
+#define R_ARC_32_ME		0x1B
+#define R_ARC_N32_ME		0x1C
+#define R_ARC_SECTOFF_ME	0x1D
+#define R_ARC_SDA32_ME		0x1E
+#define R_ARC_W_ME		0x1F
+#define R_ARC_H30_ME		0x20
+#define R_ARC_SECTOFF_U8	0x21
+#define R_ARC_SECTOFF_S9	0x22
+#define R_AC_SECTOFF_U8		0x23
+#define R_AC_SECTOFF_U8_1	0x24
+#define R_AC_SECTOFF_U8_2	0x25
+#define R_AC_SECTOFF_S9		0x26
+#define R_AC_SECTOFF_S9_1	0x27
+#define R_AC_SECTOFF_S9_2	0x28
+#define R_ARC_SECTOFF_ME_1	0x29
+#define R_ARC_SECTOFF_ME_2	0x2A
+#define R_ARC_SECTOFF_1		0x2B
+#define R_ARC_SECTOFF_2		0x2C
+#define R_ARC_PC32		0x32
+#define R_ARC_GOTPC32		0x33
+#define R_ARC_PLT32		0x34
+#define R_ARC_COPY		0x35
+#define R_ARC_GLOB_DAT		0x36
+#define R_ARC_JUMP_SLOT		0x37
+#define R_ARC_RELATIVE		0x38
+#define R_ARC_GOTOFF		0x39
+#define R_ARC_GOTPC		0x3A
+#define R_ARC_GOT32		0x3B
+
+#define R_ARC_TLS_DTPMOD	0x42
+#define R_ARC_TLS_DTPOFF	0x43
+#define R_ARC_TLS_TPOFF		0x44
+#define R_ARC_TLS_GD_GOT	0x45
+#define R_ARC_TLS_GD_LD	        0x46
+#define R_ARC_TLS_GD_CALL	0x47
+#define R_ARC_TLS_IE_GOT	0x48
+#define R_ARC_TLS_DTPOFF_S9	0x4a
+#define R_ARC_TLS_LE_S9		0x4a
+#define R_ARC_TLS_LE_32		0x4b
+
 __END_DECLS
 
 #endif	/* elf.h */
diff --git a/libelf/elf_compress.c b/libelf/elf_compress.c
index b1b8968..e5d3d2e 100644
--- a/libelf/elf_compress.c
+++ b/libelf/elf_compress.c
@@ -113,7 +113,6 @@
   int zrc = deflateInit (&z, Z_BEST_COMPRESSION);
   if (zrc != Z_OK)
     {
-      free (out_buf);
       __libelf_seterrno (ELF_E_COMPRESS_ERROR);
       return deflate_cleanup(NULL, NULL);
     }
diff --git a/libelf/elf_getdata.c b/libelf/elf_getdata.c
index 40fe169..0d8f8d2 100644
--- a/libelf/elf_getdata.c
+++ b/libelf/elf_getdata.c
@@ -271,6 +271,8 @@
 	{
 	  GElf_Ehdr ehdr_mem;
 	  GElf_Ehdr *ehdr = __gelf_getehdr_rdlock (elf, &ehdr_mem);
+	  if (unlikely (ehdr == NULL))
+	    return 1;
 	  entsize = SH_ENTSIZE_HASH (ehdr);
 	}
       else
diff --git a/libelf/elf_strptr.c b/libelf/elf_strptr.c
index e72a3a3..c727170 100644
--- a/libelf/elf_strptr.c
+++ b/libelf/elf_strptr.c
@@ -145,7 +145,7 @@
   else
     {
       Elf64_Shdr *shdr = strscn->shdr.e64 ?: __elf64_getshdr_rdlock (strscn);
-      if (unlikely (shdr->sh_type != SHT_STRTAB))
+      if (unlikely (shdr == NULL || shdr->sh_type != SHT_STRTAB))
 	{
 	  /* This is no string section.  */
 	  __libelf_seterrno (ELF_E_INVALID_SECTION);
diff --git a/po/ChangeLog b/po/ChangeLog
index 61c97fd..620931e 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+2020-06-11  Mark Wielaard  <mark@klomp.org>
+
+	* *.po: Update for 0.180.
+
 2020-03-30  Mark Wielaard  <mark@klomp.org>
 
 	* *.po: Update for 0.179.
diff --git a/po/de.po b/po/de.po
index 528c8df..d58a734 100644
--- a/po/de.po
+++ b/po/de.po
@@ -11,7 +11,7 @@
 msgstr ""
 "Project-Id-Version: elfutils VERSION\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-03-30 12:56+0200\n"
+"POT-Creation-Date: 2020-06-11 15:50+0200\n"
 "PO-Revision-Date: 2009-06-29 15:15+0200\n"
 "Last-Translator: Michael Münch <micm@fedoraproject.org>\n"
 "Language-Team: German\n"
@@ -55,7 +55,7 @@
 "auch nicht für Marktgängigkeit oder Eignung für einen Bestimmten Zweck.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: src/readelf.c:11403 src/unstrip.c:2393 src/unstrip.c:2599
 #, c-format
 msgid "memory exhausted"
 msgstr "Kein Speicher mehr verfügbar"
@@ -533,7 +533,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
 #: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:85
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<Unbekannt>"
 
@@ -1673,7 +1673,7 @@
 
 #: 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:2936 src/elflint.c:3099
-#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4435
+#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4440
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr ""
@@ -2861,370 +2861,375 @@
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3926
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3933
+#: src/elflint.c:3938
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3941
+#: src/elflint.c:3946
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3951
+#: src/elflint.c:3956
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:3956
+#: src/elflint.c:3961
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/elflint.c:3962
+#: src/elflint.c:3967
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr ""
 
-#: src/elflint.c:3968
+#: src/elflint.c:3973
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3973
+#: src/elflint.c:3978
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:3980
+#: src/elflint.c:3985
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:3985
+#: src/elflint.c:3990
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:4004
+#: src/elflint.c:4009
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:4013
+#: src/elflint.c:4018
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr ""
 
-#: src/elflint.c:4020
+#: src/elflint.c:4025
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:4051
+#: src/elflint.c:4056
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
 "%d\n"
 msgstr ""
 
-#: src/elflint.c:4061
+#: src/elflint.c:4066
 #, 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:4087
+#: src/elflint.c:4092
 #, 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:4098
+#: src/elflint.c:4103
 #, 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:4109
+#: src/elflint.c:4114
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4119
+#: src/elflint.c:4124
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4129
+#: src/elflint.c:4134
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4140
 #, 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:4143
+#: src/elflint.c:4148
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:4194
+#: src/elflint.c:4199
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:4217
+#: src/elflint.c:4222
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:4228
+#: src/elflint.c:4233
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:4234
+#: src/elflint.c:4239
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:4245
+#: src/elflint.c:4250
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
 "exist\n"
 msgstr ""
 
-#: src/elflint.c:4258
+#: src/elflint.c:4263
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:4272
+#: src/elflint.c:4277
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:4321
+#: src/elflint.c:4326
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:4325
+#: src/elflint.c:4330
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4374
+#: src/elflint.c:4379
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
 "offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4379
+#: src/elflint.c:4384
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
 "'%s' at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4398
+#: src/elflint.c:4403
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4418
+#: src/elflint.c:4423
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4421
+#: src/elflint.c:4426
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4442
+#: src/elflint.c:4447
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4449
+#: src/elflint.c:4454
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4452
+#: src/elflint.c:4457
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4470
+#: src/elflint.c:4475
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4485
+#: src/elflint.c:4490
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4499
+#: src/elflint.c:4500
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4510
+#: src/elflint.c:4511
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4518
+#: src/elflint.c:4519
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4525
+#: src/elflint.c:4526
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4539
+#: src/elflint.c:4540
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4542
+#: src/elflint.c:4543
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4552
+#: src/elflint.c:4553
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4573
+#: src/elflint.c:4574
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4584
+#: src/elflint.c:4585
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4591
+#: src/elflint.c:4592
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4600 src/elflint.c:4623
+#: src/elflint.c:4601 src/elflint.c:4624
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4629
+#: src/elflint.c:4630
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4656
+#: src/elflint.c:4657
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4659
+#: src/elflint.c:4660
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4672
+#: src/elflint.c:4673
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4680
+#: src/elflint.c:4681
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4683
+#: src/elflint.c:4684
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4687
+#: src/elflint.c:4688
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4690
+#: src/elflint.c:4691
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4695
+#: src/elflint.c:4696
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4698
+#: src/elflint.c:4699
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4709
+#: src/elflint.c:4710
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4716
+#: src/elflint.c:4717
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4719
+#: src/elflint.c:4720
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
 "alignment\n"
 msgstr ""
 
-#: src/elflint.c:4732
+#: src/elflint.c:4733
 #, 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:4766
+#: src/elflint.c:4767
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4792
+#: src/elflint.c:4779
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "neue Datei konnte nicht angelegt werden"
+
+#: src/elflint.c:4800
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
@@ -3481,12 +3486,12 @@
 msgid "cannot create search tree"
 msgstr "Kann Suchbaum nicht erstellen"
 
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:635
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12420
+#: src/readelf.c:12631 src/readelf.c:12700 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3514,28 +3519,28 @@
 "\n"
 msgstr ""
 
-#: src/nm.c:1216
+#: src/nm.c:1250
 #, fuzzy, c-format
 msgid "%s: entry size in section %zd `%s' is not what we expect"
 msgstr "%s: entry size in section `%s' is not what we expect"
 
-#: src/nm.c:1221
+#: src/nm.c:1255
 #, fuzzy, c-format
 msgid "%s: size of section %zd `%s' is not multiple of entry size"
 msgstr "%s: entry size in section `%s' is not what we expect"
 
-#: src/nm.c:1300
+#: src/nm.c:1334
 #, fuzzy, c-format
 msgid "%s: entries (%zd) in section %zd `%s' is too large"
 msgstr "%s: entry size in section `%s' is not what we expect"
 
 #. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: Ungültige Operation"
 
-#: src/nm.c:1584
+#: src/nm.c:1620
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: keine Symbole"
@@ -3609,6 +3614,11 @@
 msgid "cannot disassemble"
 msgstr "Disassemblieren nicht möglich"
 
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "neue Datei konnte nicht angelegt werden"
+
 #. Short description of program.
 #: src/ranlib.c:63
 msgid "Generate an index to speed access to archives."
@@ -3798,7 +3808,7 @@
 msgid "cannot get section: %s"
 msgstr ""
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12651
 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
 #: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
 #: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
@@ -4170,8 +4180,8 @@
 msgid "<INVALID SECTION>"
 msgstr ""
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12522
+#: src/readelf.c:12529 src/readelf.c:12573 src/readelf.c:12580
 msgid "Couldn't uncompress section"
 msgstr ""
 
@@ -5449,67 +5459,67 @@
 msgid "cannot get debug context descriptor: %s"
 msgstr ""
 
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11454 src/readelf.c:12076 src/readelf.c:12187
+#: src/readelf.c:12245
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr ""
 
-#: src/readelf.c:11812
+#: src/readelf.c:11817
 #, c-format
 msgid ""
 "\n"
 "%*s... <repeats %u more times> ..."
 msgstr ""
 
-#: src/readelf.c:12319
+#: src/readelf.c:12324
 msgid "  Owner          Data size  Type\n"
 msgstr ""
 
-#: src/readelf.c:12348
+#: src/readelf.c:12353
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr ""
 
-#: src/readelf.c:12400
+#: src/readelf.c:12405
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "Konnte Inhalt von %s: %s nicht lesen"
 
-#: src/readelf.c:12434
+#: src/readelf.c:12439
 #, c-format
 msgid ""
 "\n"
 "Note section [%2zu] '%s' of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12457
+#: src/readelf.c:12462
 #, c-format
 msgid ""
 "\n"
 "Note segment of %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12504
+#: src/readelf.c:12509
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Section [%zu] '%s' has no data to dump.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12536 src/readelf.c:12587
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12536
+#: src/readelf.c:12541
 #, c-format
 msgid ""
 "\n"
 "Hex dump of section [%zu] '%s', %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12541
+#: src/readelf.c:12546
 #, c-format
 msgid ""
 "\n"
@@ -5517,21 +5527,21 @@
 "%#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12555
+#: src/readelf.c:12560
 #, fuzzy, c-format
 msgid ""
 "\n"
 "Section [%zu] '%s' has no strings to dump.\n"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/readelf.c:12587
+#: src/readelf.c:12592
 #, c-format
 msgid ""
 "\n"
 "String section [%zu] '%s' contains %<PRIu64> bytes at offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12592
+#: src/readelf.c:12597
 #, c-format
 msgid ""
 "\n"
@@ -5539,45 +5549,45 @@
 "offset %#0<PRIx64>:\n"
 msgstr ""
 
-#: src/readelf.c:12641
+#: src/readelf.c:12646
 #, c-format
 msgid ""
 "\n"
 "section [%lu] does not exist"
 msgstr ""
 
-#: src/readelf.c:12671
+#: src/readelf.c:12676
 #, c-format
 msgid ""
 "\n"
 "section '%s' does not exist"
 msgstr ""
 
-#: src/readelf.c:12728
+#: src/readelf.c:12733
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr ""
 
-#: src/readelf.c:12731
+#: src/readelf.c:12736
 #, c-format
 msgid ""
 "\n"
 "Archive '%s' has no symbol index\n"
 msgstr ""
 
-#: src/readelf.c:12735
+#: src/readelf.c:12740
 #, c-format
 msgid ""
 "\n"
 "Index of archive '%s' has %zu entries:\n"
 msgstr ""
 
-#: src/readelf.c:12753
+#: src/readelf.c:12758
 #, fuzzy, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "konnte Programm-Kopf nicht erstellen: %s"
 
-#: src/readelf.c:12758
+#: src/readelf.c:12763
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr ""
@@ -5640,7 +5650,7 @@
 msgid "%s: file format not recognized"
 msgstr ""
 
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
 #, c-format
 msgid " (ex %s)"
 msgstr ""
@@ -5650,7 +5660,7 @@
 msgid "cannot get section header"
 msgstr "konnte Abschnittsdaten nicht holen: %s"
 
-#: src/size.c:582
+#: src/size.c:585
 msgid "(TOTALS)\n"
 msgstr ""
 
diff --git a/po/es.po b/po/es.po
index ffb877b..c3558bd 100644
--- a/po/es.po
+++ b/po/es.po
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: elfutils.master.es\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-03-30 12:56+0200\n"
+"POT-Creation-Date: 2020-06-11 15:50+0200\n"
 "PO-Revision-Date: 2011-01-10 15:17-0300\n"
 "Last-Translator: Claudio Rodrigo Pereyra Diaz <claudiorodrigo@pereyradiaz."
 "com.ar>\n"
@@ -58,7 +58,7 @@
 "DETERMINADO.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: src/readelf.c:11403 src/unstrip.c:2393 src/unstrip.c:2599
 #, c-format
 msgid "memory exhausted"
 msgstr "memoria agotada"
@@ -531,7 +531,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
 #: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:85
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<desconocido>"
 
@@ -1692,7 +1692,7 @@
 
 #: 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:2936 src/elflint.c:3099
-#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4435
+#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4440
 #, 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"
@@ -3087,7 +3087,7 @@
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "sección [%2zu] '%s' tiene tipo %d incompatible \n"
 
-#: src/elflint.c:3926
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3095,76 +3095,76 @@
 "Sección [%2zu] '%s' contiene bandera(s) de procesador-específico inválidas "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3933
+#: src/elflint.c:3938
 #, 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:3941
+#: src/elflint.c:3946
 #, 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:3951
+#: src/elflint.c:3956
 #, 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:3956
+#: src/elflint.c:3961
 #, 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:3962
+#: src/elflint.c:3967
 #, 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:3968
+#: src/elflint.c:3973
 #, 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:3973
+#: src/elflint.c:3978
 #, 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:3980
+#: src/elflint.c:3985
 #, 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:3985
+#: src/elflint.c:3990
 #, 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:4004
+#: src/elflint.c:4009
 #, 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:4013
+#: src/elflint.c:4018
 #, 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:4020
+#: src/elflint.c:4025
 #, 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:4051
+#: src/elflint.c:4056
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3173,7 +3173,7 @@
 "Sección [%2zu] '%s' no contenida totalmente en segmento de entrada de "
 "encabezamiento de programa %d\n"
 
-#: src/elflint.c:4061
+#: src/elflint.c:4066
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3182,7 +3182,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:4087
+#: src/elflint.c:4092
 #, fuzzy, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3191,7 +3191,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:4098
+#: src/elflint.c:4103
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3200,18 +3200,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:4109
+#: src/elflint.c:4114
 #, 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:4119
+#: src/elflint.c:4124
 #, 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:4129
+#: src/elflint.c:4134
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3219,7 +3219,7 @@
 "Sección [%2zu] '%s': asignación de bandera establecida pero sección no en "
 "ningún segmento cargado\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4140
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3228,7 +3228,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:4143
+#: src/elflint.c:4148
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3236,32 +3236,32 @@
 "sección [%2zu] '%s': ficheros reubicables no pueden tener tablas de símbolos "
 "dinámicos\n"
 
-#: src/elflint.c:4194
+#: src/elflint.c:4199
 #, 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:4217
+#: src/elflint.c:4222
 #, 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:4228
+#: src/elflint.c:4233
 #, 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:4234
+#: src/elflint.c:4239
 #, 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:4245
+#: src/elflint.c:4250
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3270,26 +3270,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:4258
+#: src/elflint.c:4263
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "Duplicar índice de versión %d\n"
 
-#: src/elflint.c:4272
+#: src/elflint.c:4277
 #, 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:4321
+#: src/elflint.c:4326
 #, 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:4325
+#: src/elflint.c:4330
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3297,7 +3297,7 @@
 "Sección [%2d] '%s': tipo de nota de fichero core desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4374
+#: src/elflint.c:4379
 #, fuzzy, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3306,7 +3306,7 @@
 "phdr[%d]: tipo de nota de fichero objeto desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4379
+#: src/elflint.c:4384
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3315,40 +3315,40 @@
 "Sección [%2d] '%s': tipo de nota de fichero objeto desconocido %<PRIu32> en "
 "compensación %Zu\n"
 
-#: src/elflint.c:4398
+#: src/elflint.c:4403
 #, 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:4418
+#: src/elflint.c:4423
 #, 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:4421
+#: src/elflint.c:4426
 #, 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:4442
+#: src/elflint.c:4447
 #, 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:4449
+#: src/elflint.c:4454
 #, 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:4452
+#: src/elflint.c:4457
 #, 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:4470
+#: src/elflint.c:4475
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -3356,145 +3356,145 @@
 "Sólo ejecutables, objetos compartidos y ficheros core pueden tener "
 "encabezamientos de programas\n"
 
-#: src/elflint.c:4485
+#: src/elflint.c:4490
 #, 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:4499
+#: src/elflint.c:4500
 #, 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:4510
+#: src/elflint.c:4511
 #, 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:4518
+#: src/elflint.c:4519
 #, 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:4525
+#: src/elflint.c:4526
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "ejecutable estático no puede tener secciones dinámicas\n"
 
-#: src/elflint.c:4539
+#: src/elflint.c:4540
 #, 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:4542
+#: src/elflint.c:4543
 #, 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:4552
+#: src/elflint.c:4553
 #, 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:4573
+#: src/elflint.c:4574
 #, 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:4584
+#: src/elflint.c:4585
 #, 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:4591
+#: src/elflint.c:4592
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4600 src/elflint.c:4623
+#: src/elflint.c:4601 src/elflint.c:4624
 #, 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:4629
+#: src/elflint.c:4630
 #, 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:4656
+#: src/elflint.c:4657
 #, 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:4659
+#: src/elflint.c:4660
 #, 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:4672
+#: src/elflint.c:4673
 #, 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:4680
+#: src/elflint.c:4681
 #, 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:4683
+#: src/elflint.c:4684
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "sección [%2zu] '%s' debe ser asignada\n"
 
-#: src/elflint.c:4687
+#: src/elflint.c:4688
 #, 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:4690
+#: src/elflint.c:4691
 #, 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:4695
+#: src/elflint.c:4696
 #, 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:4698
+#: src/elflint.c:4699
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "sección [%2zu] '%s' no debe ser ejecutable\n"
 
-#: src/elflint.c:4709
+#: src/elflint.c:4710
 #, 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:4716
+#: src/elflint.c:4717
 #, 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:4719
+#: src/elflint.c:4720
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3503,7 +3503,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:4732
+#: src/elflint.c:4733
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3512,12 +3512,17 @@
 "ejecutable/DSO con sección .eh_frame_hdr no tiene una entrada de "
 "encabezamiento de programa PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4766
+#: src/elflint.c:4767
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "No se puede leer encabezamiento ELF: %s\n"
 
-#: src/elflint.c:4792
+#: src/elflint.c:4779
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "no sepuede crear fichero nuevo"
+
+#: src/elflint.c:4800
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr "Bandera de reubicación de texto establecida pero no necesaria\n"
@@ -3783,12 +3788,12 @@
 msgid "cannot create search tree"
 msgstr "No se puede crear el árbol de búsqueda"
 
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:635
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12420
+#: src/readelf.c:12631 src/readelf.c:12700 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3818,30 +3823,30 @@
 "%*s%-*s %-*s Clase  Tipo     %-*s %*s Sección\n"
 "\n"
 
-#: src/nm.c:1216
+#: src/nm.c:1250
 #, fuzzy, c-format
 msgid "%s: entry size in section %zd `%s' is not what we expect"
 msgstr ""
 "%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos "
 
-#: src/nm.c:1221
+#: src/nm.c:1255
 #, fuzzy, c-format
 msgid "%s: size of section %zd `%s' is not multiple of entry size"
 msgstr "%s: Tamaño de sección `%s' no es múltiplo de tamaño de entrada"
 
-#: src/nm.c:1300
+#: src/nm.c:1334
 #, fuzzy, c-format
 msgid "%s: entries (%zd) in section %zd `%s' is too large"
 msgstr ""
 "%s: el tamaño de la entrada en la sección `%s' no es el que esperábamos "
 
 #. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: Operación inválida"
 
-#: src/nm.c:1584
+#: src/nm.c:1620
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: No hay símbolos"
@@ -3918,6 +3923,11 @@
 msgid "cannot disassemble"
 msgstr "No se puede desensamblar"
 
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "no sepuede crear fichero nuevo"
+
 #. Short description of program.
 #: src/ranlib.c:63
 msgid "Generate an index to speed access to archives."
@@ -4111,7 +4121,7 @@
 msgid "cannot get section: %s"
 msgstr "No se puede encontrar la sección: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12651
 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
 #: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
 #: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
@@ -4512,8 +4522,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<SECCIÓN INVÁLIDA>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12522
+#: src/readelf.c:12529 src/readelf.c:12573 src/readelf.c:12580
 msgid "Couldn't uncompress section"
 msgstr ""
 
@@ -5958,13 +5968,13 @@
 msgid "cannot get debug context descriptor: %s"
 msgstr "no se puede depurar descriptor de contexto: %s"
 
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11454 src/readelf.c:12076 src/readelf.c:12187
+#: src/readelf.c:12245
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "no es posible convertir datos de la nota principal: %s"
 
-#: src/readelf.c:11812
+#: src/readelf.c:11817
 #, c-format
 msgid ""
 "\n"
@@ -5973,21 +5983,21 @@
 "\n"
 "%*s... <repeats %u more times> ..."
 
-#: src/readelf.c:12319
+#: src/readelf.c:12324
 msgid "  Owner          Data size  Type\n"
 msgstr "  Owner          Data size  Type\n"
 
-#: src/readelf.c:12348
+#: src/readelf.c:12353
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12400
+#: src/readelf.c:12405
 #, 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:12434
+#: src/readelf.c:12439
 #, c-format
 msgid ""
 "\n"
@@ -5996,7 +6006,7 @@
 "\n"
 "Sección de nota [%2zu] '%s' de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:12457
+#: src/readelf.c:12462
 #, c-format
 msgid ""
 "\n"
@@ -6005,7 +6015,7 @@
 "\n"
 "Segmento de nota de %<PRIu64> bytes en compensación %#0<PRIx64>:\n"
 
-#: src/readelf.c:12504
+#: src/readelf.c:12509
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6014,12 +6024,12 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12536 src/readelf.c:12587
 #, 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:12536
+#: src/readelf.c:12541
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6029,7 +6039,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12541
+#: src/readelf.c:12546
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6040,7 +6050,7 @@
 "Volcado Hex de sección [%Zu] '%s', %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12555
+#: src/readelf.c:12560
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6049,7 +6059,7 @@
 "\n"
 "Sección [%Zu] '%s' no tiene datos para volcar.\n"
 
-#: src/readelf.c:12587
+#: src/readelf.c:12592
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6059,7 +6069,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12592
+#: src/readelf.c:12597
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6070,7 +6080,7 @@
 "Sección de cadena [%Zu] '%s' contiene %<PRIu64> bytes en compensación "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12641
+#: src/readelf.c:12646
 #, c-format
 msgid ""
 "\n"
@@ -6079,7 +6089,7 @@
 "\n"
 "sección [%lu] no existe"
 
-#: src/readelf.c:12671
+#: src/readelf.c:12676
 #, c-format
 msgid ""
 "\n"
@@ -6088,12 +6098,12 @@
 "\n"
 "sección '%s' no existe"
 
-#: src/readelf.c:12728
+#: src/readelf.c:12733
 #, 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:12731
+#: src/readelf.c:12736
 #, c-format
 msgid ""
 "\n"
@@ -6102,7 +6112,7 @@
 "\n"
 "Archivo '%s' no tiene índice de símbolo\n"
 
-#: src/readelf.c:12735
+#: src/readelf.c:12740
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -6111,12 +6121,12 @@
 "\n"
 "Índice de archivo '%s' tiene %Zu entradas:\n"
 
-#: src/readelf.c:12753
+#: src/readelf.c:12758
 #, 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:12758
+#: src/readelf.c:12763
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Miembro de archivo contiene '%s':\n"
@@ -6183,7 +6193,7 @@
 msgid "%s: file format not recognized"
 msgstr "%s: No se reconoce el formato del fichero"
 
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
@@ -6193,7 +6203,7 @@
 msgid "cannot get section header"
 msgstr "no se puede obtener encabezamiento de sección\n"
 
-#: src/size.c:582
+#: src/size.c:585
 msgid "(TOTALS)\n"
 msgstr "(TOTALES)\n"
 
diff --git a/po/ja.po b/po/ja.po
index 97a529b..85c5683 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: ja\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-03-30 12:56+0200\n"
+"POT-Creation-Date: 2020-06-11 15:50+0200\n"
 "PO-Revision-Date: 2009-09-20 15:32+0900\n"
 "Last-Translator: Hyu_gabaru Ryu_ichi <hyu_gabaru@yahoo.co.jp>\n"
 "Language-Team: Japanese <jp@li.org>\n"
@@ -51,7 +51,7 @@
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: src/readelf.c:11403 src/unstrip.c:2393 src/unstrip.c:2599
 #, c-format
 msgid "memory exhausted"
 msgstr "メモリー消費済み"
@@ -530,7 +530,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
 #: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:85
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<不明>"
 
@@ -1679,7 +1679,7 @@
 
 #: 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:2936 src/elflint.c:3099
-#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4435
+#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4440
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
@@ -2942,370 +2942,375 @@
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr ""
 
-#: src/elflint.c:3926
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3933
+#: src/elflint.c:3938
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:3941
+#: src/elflint.c:3946
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 
-#: src/elflint.c:3951
+#: src/elflint.c:3956
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:3956
+#: src/elflint.c:3961
 #, fuzzy, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "セクション [%2d] '%s': セクションデータを得られません\n"
 
-#: src/elflint.c:3962
+#: src/elflint.c:3967
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr ""
 
-#: src/elflint.c:3968
+#: src/elflint.c:3973
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 
-#: src/elflint.c:3973
+#: src/elflint.c:3978
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 
-#: src/elflint.c:3980
+#: src/elflint.c:3985
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr ""
 
-#: src/elflint.c:3985
+#: src/elflint.c:3990
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 
-#: src/elflint.c:4004
+#: src/elflint.c:4009
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr ""
 
-#: src/elflint.c:4013
+#: src/elflint.c:4018
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr ""
 
-#: src/elflint.c:4020
+#: src/elflint.c:4025
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr ""
 
-#: src/elflint.c:4051
+#: src/elflint.c:4056
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
 "%d\n"
 msgstr ""
 
-#: src/elflint.c:4061
+#: src/elflint.c:4066
 #, 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:4087
+#: src/elflint.c:4092
 #, 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:4098
+#: src/elflint.c:4103
 #, 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:4109
+#: src/elflint.c:4114
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4119
+#: src/elflint.c:4124
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 
-#: src/elflint.c:4129
+#: src/elflint.c:4134
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4135
+#: src/elflint.c:4140
 #, 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:4143
+#: src/elflint.c:4148
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
 msgstr ""
 
-#: src/elflint.c:4194
+#: src/elflint.c:4199
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr ""
 
-#: src/elflint.c:4217
+#: src/elflint.c:4222
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr ""
 
-#: src/elflint.c:4228
+#: src/elflint.c:4233
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
 msgstr ""
 
-#: src/elflint.c:4234
+#: src/elflint.c:4239
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 
-#: src/elflint.c:4245
+#: src/elflint.c:4250
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
 "exist\n"
 msgstr ""
 
-#: src/elflint.c:4258
+#: src/elflint.c:4263
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr ""
 
-#: src/elflint.c:4272
+#: src/elflint.c:4277
 #, c-format
 msgid ".gnu.versym section present without .gnu.versym_d or .gnu.versym_r\n"
 msgstr ""
 
-#: src/elflint.c:4321
+#: src/elflint.c:4326
 #, c-format
 msgid "phdr[%d]: unknown core file note type %<PRIu32> at offset %<PRIu64>\n"
 msgstr ""
 
-#: src/elflint.c:4325
+#: src/elflint.c:4330
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4374
+#: src/elflint.c:4379
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
 "offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4379
+#: src/elflint.c:4384
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
 "'%s' at offset %zu\n"
 msgstr ""
 
-#: src/elflint.c:4398
+#: src/elflint.c:4403
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4418
+#: src/elflint.c:4423
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr ""
 
-#: src/elflint.c:4421
+#: src/elflint.c:4426
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4442
+#: src/elflint.c:4447
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 
-#: src/elflint.c:4449
+#: src/elflint.c:4454
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr ""
 
-#: src/elflint.c:4452
+#: src/elflint.c:4457
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 
-#: src/elflint.c:4470
+#: src/elflint.c:4475
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
 msgstr ""
 
-#: src/elflint.c:4485
+#: src/elflint.c:4490
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr ""
 
-#: src/elflint.c:4499
+#: src/elflint.c:4500
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 
-#: src/elflint.c:4510
+#: src/elflint.c:4511
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4518
+#: src/elflint.c:4519
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4525
+#: src/elflint.c:4526
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr ""
 
-#: src/elflint.c:4539
+#: src/elflint.c:4540
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4542
+#: src/elflint.c:4543
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4552
+#: src/elflint.c:4553
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr ""
 
-#: src/elflint.c:4573
+#: src/elflint.c:4574
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 
-#: src/elflint.c:4584
+#: src/elflint.c:4585
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4591
+#: src/elflint.c:4592
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
 msgstr ""
 
-#: src/elflint.c:4600 src/elflint.c:4623
+#: src/elflint.c:4601 src/elflint.c:4624
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr ""
 
-#: src/elflint.c:4629
+#: src/elflint.c:4630
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr ""
 
-#: src/elflint.c:4656
+#: src/elflint.c:4657
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 
-#: src/elflint.c:4659
+#: src/elflint.c:4660
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 
-#: src/elflint.c:4672
+#: src/elflint.c:4673
 #, c-format
 msgid "PT_GNU_EH_FRAME present but no .eh_frame_hdr section\n"
 msgstr ""
 
-#: src/elflint.c:4680
+#: src/elflint.c:4681
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4683
+#: src/elflint.c:4684
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr ""
 
-#: src/elflint.c:4687
+#: src/elflint.c:4688
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4690
+#: src/elflint.c:4691
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr ""
 
-#: src/elflint.c:4695
+#: src/elflint.c:4696
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4698
+#: src/elflint.c:4699
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr ""
 
-#: src/elflint.c:4709
+#: src/elflint.c:4710
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr ""
 
-#: src/elflint.c:4716
+#: src/elflint.c:4717
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr ""
 
-#: src/elflint.c:4719
+#: src/elflint.c:4720
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
 "alignment\n"
 msgstr ""
 
-#: src/elflint.c:4732
+#: src/elflint.c:4733
 #, 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:4766
+#: src/elflint.c:4767
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr ""
 
-#: src/elflint.c:4792
+#: src/elflint.c:4779
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "新しいファイルを生成できません"
+
+#: src/elflint.c:4800
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
@@ -3560,12 +3565,12 @@
 msgid "cannot create search tree"
 msgstr "検索ツリーを生成できません"
 
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:635
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12420
+#: src/readelf.c:12631 src/readelf.c:12700 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3595,28 +3600,28 @@
 "%*s%-*s %-*s クラス タイプ   %-*s %*s セクション\n"
 "\n"
 
-#: src/nm.c:1216
+#: src/nm.c:1250
 #, fuzzy, c-format
 msgid "%s: entry size in section %zd `%s' is not what we expect"
 msgstr "%s: セクションの項目の大きさ `%s' は予期したものとは異なります"
 
-#: src/nm.c:1221
+#: src/nm.c:1255
 #, fuzzy, c-format
 msgid "%s: size of section %zd `%s' is not multiple of entry size"
 msgstr "%s: セクション `%s' の大きさは項目の大きさの整数倍ではありません"
 
-#: src/nm.c:1300
+#: src/nm.c:1334
 #, fuzzy, c-format
 msgid "%s: entries (%zd) in section %zd `%s' is too large"
 msgstr "%s: セクションの項目の大きさ `%s' は予期したものとは異なります"
 
 #. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: 不当な操作"
 
-#: src/nm.c:1584
+#: src/nm.c:1620
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: シンボルがありません"
@@ -3690,6 +3695,11 @@
 msgid "cannot disassemble"
 msgstr ""
 
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "新しいファイルを生成できません"
+
 #. Short description of program.
 #: src/ranlib.c:63
 msgid "Generate an index to speed access to archives."
@@ -3883,7 +3893,7 @@
 msgid "cannot get section: %s"
 msgstr "セクションを得られません: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12651
 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
 #: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
 #: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
@@ -4279,8 +4289,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<不当なセクション>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12522
+#: src/readelf.c:12529 src/readelf.c:12573 src/readelf.c:12580
 msgid "Couldn't uncompress section"
 msgstr ""
 
@@ -5679,13 +5689,13 @@
 msgid "cannot get debug context descriptor: %s"
 msgstr "デバッグ内容記述子を得られません: %s"
 
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11454 src/readelf.c:12076 src/readelf.c:12187
+#: src/readelf.c:12245
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "コアノートデータの変換ができません: %s"
 
-#: src/readelf.c:11812
+#: src/readelf.c:11817
 #, c-format
 msgid ""
 "\n"
@@ -5694,21 +5704,21 @@
 "\n"
 "%*s... < %u 回の繰返し> ..."
 
-#: src/readelf.c:12319
+#: src/readelf.c:12324
 msgid "  Owner          Data size  Type\n"
 msgstr "  所有者         データ大きさタイプ\n"
 
-#: src/readelf.c:12348
+#: src/readelf.c:12353
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12400
+#: src/readelf.c:12405
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "ノートセクションの内容を得られません: %s"
 
-#: src/readelf.c:12434
+#: src/readelf.c:12439
 #, c-format
 msgid ""
 "\n"
@@ -5718,7 +5728,7 @@
 "オフセット %4$#0<PRIx64> の %3$<PRIu64> バイトのノートセクション [%1$2zu] "
 "'%2$s':\n"
 
-#: src/readelf.c:12457
+#: src/readelf.c:12462
 #, c-format
 msgid ""
 "\n"
@@ -5727,7 +5737,7 @@
 "\n"
 "オフセット %2$#0<PRIx64> の %1$<PRIu64> バイトのノートセグメント:\n"
 
-#: src/readelf.c:12504
+#: src/readelf.c:12509
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5736,12 +5746,12 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12536 src/readelf.c:12587
 #, fuzzy, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "セクション [%Zu] '%s' からデータが得られません: %s"
 
-#: src/readelf.c:12536
+#: src/readelf.c:12541
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5751,7 +5761,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:12541
+#: src/readelf.c:12546
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5762,7 +5772,7 @@
 "オフセット %4$#0<PRIx64> のセクション [%1$Zu] '%2$s' の16進ダン"
 "プ、%3$<PRIu64> バイト:\n"
 
-#: src/readelf.c:12555
+#: src/readelf.c:12560
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5771,7 +5781,7 @@
 "\n"
 "セクション [%Zu] '%s' にはダンプすべきデータがありません。\n"
 
-#: src/readelf.c:12587
+#: src/readelf.c:12592
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5781,7 +5791,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:12592
+#: src/readelf.c:12597
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5792,7 +5802,7 @@
 "オフセット %4$#0<PRIx64> 文字列セクション [%1$Zu] '%2$s' には %3$<PRIu64> バ"
 "イトあります:\n"
 
-#: src/readelf.c:12641
+#: src/readelf.c:12646
 #, c-format
 msgid ""
 "\n"
@@ -5801,7 +5811,7 @@
 "\n"
 "セクション [%lu] がありません"
 
-#: src/readelf.c:12671
+#: src/readelf.c:12676
 #, c-format
 msgid ""
 "\n"
@@ -5810,12 +5820,12 @@
 "\n"
 "セクション '%s' がありません"
 
-#: src/readelf.c:12728
+#: src/readelf.c:12733
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "アーカイブのシンボル索引 '%s' を得られません: %s"
 
-#: src/readelf.c:12731
+#: src/readelf.c:12736
 #, c-format
 msgid ""
 "\n"
@@ -5824,7 +5834,7 @@
 "\n"
 "アーカイブ '%s' にはシンボル索引がありません\n"
 
-#: src/readelf.c:12735
+#: src/readelf.c:12740
 #, fuzzy, c-format
 msgid ""
 "\n"
@@ -5833,12 +5843,12 @@
 "\n"
 "アーカイブ '%s' の索引には %Zu 項目あります:\n"
 
-#: src/readelf.c:12753
+#: src/readelf.c:12758
 #, fuzzy, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "'%2$s' の オフセット %1$Zu のメンバーを抽出できません: %3$s"
 
-#: src/readelf.c:12758
+#: src/readelf.c:12763
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "アーカイブメンバー '%s' には以下があります:\n"
@@ -5903,7 +5913,7 @@
 msgid "%s: file format not recognized"
 msgstr "%s: ファイル形式を認識できません"
 
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
@@ -5913,7 +5923,7 @@
 msgid "cannot get section header"
 msgstr "セクションヘッダーを得られません: %s"
 
-#: src/size.c:582
+#: src/size.c:585
 msgid "(TOTALS)\n"
 msgstr "(合計)\n"
 
diff --git a/po/pl.po b/po/pl.po
index 63e09a3..5d47add 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: elfutils\n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-03-30 12:56+0200\n"
+"POT-Creation-Date: 2020-06-11 15:50+0200\n"
 "PO-Revision-Date: 2016-12-29 17:48+0100\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <trans-pl@lists.fedoraproject.org>\n"
@@ -60,7 +60,7 @@
 "HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: src/readelf.c:11403 src/unstrip.c:2393 src/unstrip.c:2599
 #, c-format
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
@@ -526,7 +526,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
 #: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:85
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<nieznany>"
 
@@ -1675,7 +1675,7 @@
 
 #: 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:2936 src/elflint.c:3099
-#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4435
+#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4440
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "sekcja [%2d] „%s”: nie można uzyskać danych sekcji\n"
@@ -3032,7 +3032,7 @@
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "sekcja [%2zu] „%s” ma nieobsługiwany typ %d\n"
 
-#: src/elflint.c:3926
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3040,74 +3040,74 @@
 "sekcja [%2zu] „%s” zawiera nieprawidłowe flagi dla konkretnego procesora "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3933
+#: src/elflint.c:3938
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr "sekcja [%2zu] „%s” zawiera nieznane flagi %#<PRIx64>\n"
 
-#: src/elflint.c:3941
+#: src/elflint.c:3946
 #, 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:3951
+#: src/elflint.c:3956
 #, 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:3956
+#: src/elflint.c:3961
 #, 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:3962
+#: src/elflint.c:3967
 #, 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:3968
+#: src/elflint.c:3973
 #, 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:3973
+#: src/elflint.c:3978
 #, 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:3980
+#: src/elflint.c:3985
 #, 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:3985
+#: src/elflint.c:3990
 #, 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:4004
+#: src/elflint.c:4009
 #, 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:4013
+#: src/elflint.c:4018
 #, 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:4020
+#: src/elflint.c:4025
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr "sekcja [%2zu] „%s” jest wykonywalne i zapisywalne\n"
 
-#: src/elflint.c:4051
+#: src/elflint.c:4056
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3116,7 +3116,7 @@
 "sekcja [%2zu] „%s” nie jest w całości zawarta w segmencie wpisu %d nagłówka "
 "programu\n"
 
-#: src/elflint.c:4061
+#: src/elflint.c:4066
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3125,7 +3125,7 @@
 "sekcja [%2zu] „%s” ma typ NOBITS, a jest odczytywana z pliku w segmencie "
 "wpisu %d nagłówka programu\n"
 
-#: src/elflint.c:4087
+#: src/elflint.c:4092
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3134,7 +3134,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:4098
+#: src/elflint.c:4103
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3143,17 +3143,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:4109
+#: src/elflint.c:4114
 #, 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:4119
+#: src/elflint.c:4124
 #, 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:4129
+#: src/elflint.c:4134
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3161,7 +3161,7 @@
 "sekcja [%2zu] „%s”: ma flagę alloc, ale sekcja nie jest w żadnym segmencie "
 "wczytywalnym\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4140
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3170,7 +3170,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:4143
+#: src/elflint.c:4148
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3178,17 +3178,17 @@
 "sekcja [%2zu] „%s”: pliki relokowalne nie mogą mieć tabeli symboli "
 "dynamicznych\n"
 
-#: src/elflint.c:4194
+#: src/elflint.c:4199
 #, 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:4217
+#: src/elflint.c:4222
 #, 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:4228
+#: src/elflint.c:4233
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
@@ -3196,14 +3196,14 @@
 "wczytywalny segment [%u] jest wykonywalny, ale nie zawiera wykonywalnych "
 "sekcji\n"
 
-#: src/elflint.c:4234
+#: src/elflint.c:4239
 #, 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:4245
+#: src/elflint.c:4250
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3212,23 +3212,23 @@
 "brak sekcji .gnu.versym, ale istnieje sekcja .gnu.versym_d lub .gnu."
 "versym_r\n"
 
-#: src/elflint.c:4258
+#: src/elflint.c:4263
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "powtórzony indeks wersji %d\n"
 
-#: src/elflint.c:4272
+#: src/elflint.c:4277
 #, 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:4321
+#: src/elflint.c:4326
 #, 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:4325
+#: src/elflint.c:4330
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3236,7 +3236,7 @@
 "sekcja [%2d]: „%s”: nieznany typ notatki pliku core %<PRIu32> pod offsetem "
 "%zu\n"
 
-#: src/elflint.c:4374
+#: src/elflint.c:4379
 #, fuzzy, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3244,7 +3244,7 @@
 msgstr ""
 "phdr[%d]: nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem %zu\n"
 
-#: src/elflint.c:4379
+#: src/elflint.c:4384
 #, fuzzy, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3253,37 +3253,37 @@
 "sekcja [%2d] „%s”: nieznany typ notatki pliku obiektu %<PRIu32> pod offsetem "
 "%zu\n"
 
-#: src/elflint.c:4398
+#: src/elflint.c:4403
 #, 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:4418
+#: src/elflint.c:4423
 #, 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:4421
+#: src/elflint.c:4426
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr "phdr[%d]: dodatkowe %<PRIu64> bajtów po ostatniej notatce\n"
 
-#: src/elflint.c:4442
+#: src/elflint.c:4447
 #, 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:4449
+#: src/elflint.c:4454
 #, 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:4452
+#: src/elflint.c:4457
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr "sekcja [%2d] „%s”: dodatkowe %<PRIu64> bajtów po ostatniej notatce\n"
 
-#: src/elflint.c:4470
+#: src/elflint.c:4475
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -3291,135 +3291,135 @@
 "tylko pliki wykonywalne, obiekty współdzielone i pliki core mogą mieć "
 "nagłówki programu\n"
 
-#: src/elflint.c:4485
+#: src/elflint.c:4490
 #, 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:4499
+#: src/elflint.c:4500
 #, 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:4510
+#: src/elflint.c:4511
 #, 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:4518
+#: src/elflint.c:4519
 #, 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:4525
+#: src/elflint.c:4526
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "statyczny plik wykonywalny nie może mieć sekcji dynamicznych\n"
 
-#: src/elflint.c:4539
+#: src/elflint.c:4540
 #, 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:4542
+#: src/elflint.c:4543
 #, 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:4552
+#: src/elflint.c:4553
 #, 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:4573
+#: src/elflint.c:4574
 #, 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:4584
+#: src/elflint.c:4585
 #, 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:4591
+#: src/elflint.c:4592
 #, 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:4600 src/elflint.c:4623
+#: src/elflint.c:4601 src/elflint.c:4624
 #, 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:4629
+#: src/elflint.c:4630
 #, 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:4656
+#: src/elflint.c:4657
 #, 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:4659
+#: src/elflint.c:4660
 #, 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:4672
+#: src/elflint.c:4673
 #, 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:4680
+#: src/elflint.c:4681
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr "tabela wyszukiwania ramki wywołania musi być przydzielona\n"
 
-#: src/elflint.c:4683
+#: src/elflint.c:4684
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "sekcja [%2zu] „%s”: musi być przydzielona\n"
 
-#: src/elflint.c:4687
+#: src/elflint.c:4688
 #, 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:4690
+#: src/elflint.c:4691
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr "sekcja [%2zu] „%s” nie może być zapisywalna\n"
 
-#: src/elflint.c:4695
+#: src/elflint.c:4696
 #, 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:4698
+#: src/elflint.c:4699
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "sekcja [%2zu] „%s” nie może być wykonywalna\n"
 
-#: src/elflint.c:4709
+#: src/elflint.c:4710
 #, 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:4716
+#: src/elflint.c:4717
 #, 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:4719
+#: src/elflint.c:4720
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3428,7 +3428,7 @@
 "wpis nagłówka programu %d: offset w pliku i adres wirtualny nie są "
 "wielokrotnością wyrównania\n"
 
-#: src/elflint.c:4732
+#: src/elflint.c:4733
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3437,12 +3437,17 @@
 "plik wykonywalny/DSO z sekcją .eh_frame_hdr nie ma wpisu nagłówka programu "
 "PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4766
+#: src/elflint.c:4767
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "nie można odczytać nagłówka ELF: %s\n"
 
-#: src/elflint.c:4792
+#: src/elflint.c:4779
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "nie można utworzyć nowego pliku"
+
+#: src/elflint.c:4800
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr "flaga relokacji tekstu jest ustawiona, ale niepotrzebna\n"
@@ -3699,12 +3704,12 @@
 msgid "cannot create search tree"
 msgstr "nie można utworzyć drzewa wyszukiwania"
 
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:635
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12420
+#: src/readelf.c:12631 src/readelf.c:12700 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3734,28 +3739,28 @@
 "%*s%-*s %-*s Klasa  Typ      %-*s %*s Sekcja\n"
 "\n"
 
-#: src/nm.c:1216
+#: src/nm.c:1250
 #, c-format
 msgid "%s: entry size in section %zd `%s' is not what we expect"
 msgstr "%s: rozmiar wpisu w sekcji %zd „%s” nie jest tym, czego oczekiwano"
 
-#: src/nm.c:1221
+#: src/nm.c:1255
 #, c-format
 msgid "%s: size of section %zd `%s' is not multiple of entry size"
 msgstr "%s: rozmiar sekcji %zd „%s” nie jest wielokrotnością rozmiaru wpisu"
 
-#: src/nm.c:1300
+#: src/nm.c:1334
 #, c-format
 msgid "%s: entries (%zd) in section %zd `%s' is too large"
 msgstr "%s: wpisy (%zd) w sekcji %zd „%s” są za duże"
 
 #. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: nieprawidłowe działanie"
 
-#: src/nm.c:1584
+#: src/nm.c:1620
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: brak symboli"
@@ -3831,6 +3836,11 @@
 msgid "cannot disassemble"
 msgstr "nie można deasemblować"
 
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "nie można utworzyć nowego pliku"
+
 #. Short description of program.
 #: src/ranlib.c:63
 msgid "Generate an index to speed access to archives."
@@ -4024,7 +4034,7 @@
 msgid "cannot get section: %s"
 msgstr "nie można uzyskać sekcji: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12651
 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
 #: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
 #: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
@@ -4431,8 +4441,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<NIEPRAWIDŁOWY SEKCJA>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12522
+#: src/readelf.c:12529 src/readelf.c:12573 src/readelf.c:12580
 msgid "Couldn't uncompress section"
 msgstr "Nie można dekompresować sekcji"
 
@@ -5925,13 +5935,13 @@
 msgid "cannot get debug context descriptor: %s"
 msgstr "nie można uzyskać deskryptora kontekstu debugowania: %s"
 
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11454 src/readelf.c:12076 src/readelf.c:12187
+#: src/readelf.c:12245
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "nie można konwertować danych notatki core: %s"
 
-#: src/readelf.c:11812
+#: src/readelf.c:11817
 #, c-format
 msgid ""
 "\n"
@@ -5940,21 +5950,21 @@
 "\n"
 "%*s… <powtarza się jeszcze %u razy>…"
 
-#: src/readelf.c:12319
+#: src/readelf.c:12324
 msgid "  Owner          Data size  Type\n"
 msgstr "  Właściciel     Rozmiar danych  Typ\n"
 
-#: src/readelf.c:12348
+#: src/readelf.c:12353
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12400
+#: src/readelf.c:12405
 #, fuzzy, c-format
 msgid "cannot get content of note: %s"
 msgstr "nie można uzyskać zawartości sekcji notatki: %s"
 
-#: src/readelf.c:12434
+#: src/readelf.c:12439
 #, c-format
 msgid ""
 "\n"
@@ -5964,7 +5974,7 @@
 "Segment notatki [%2zu] „%s” o długości %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12457
+#: src/readelf.c:12462
 #, c-format
 msgid ""
 "\n"
@@ -5973,7 +5983,7 @@
 "\n"
 "Segment notatki o długości %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12504
+#: src/readelf.c:12509
 #, c-format
 msgid ""
 "\n"
@@ -5982,12 +5992,12 @@
 "\n"
 "Sekcja [%zu] „%s” nie ma danych do zrzucenia.\n"
 
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12536 src/readelf.c:12587
 #, 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:12536
+#: src/readelf.c:12541
 #, c-format
 msgid ""
 "\n"
@@ -5997,7 +6007,7 @@
 "Segment zrzutu szesnastkowego [%zu] „%s”, %<PRIu64> bajtów pod offsetem "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12541
+#: src/readelf.c:12546
 #, c-format
 msgid ""
 "\n"
@@ -6008,7 +6018,7 @@
 "Zrzut szesnastkowy sekcji [%zu] „%s”, %<PRIu64> bajtów (%zd "
 "nieskompresowanych) pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12555
+#: src/readelf.c:12560
 #, c-format
 msgid ""
 "\n"
@@ -6017,7 +6027,7 @@
 "\n"
 "Sekcja [%zu] „%s” nie ma ciągów do zrzucenia.\n"
 
-#: src/readelf.c:12587
+#: src/readelf.c:12592
 #, c-format
 msgid ""
 "\n"
@@ -6026,7 +6036,7 @@
 "\n"
 "Sekcja ciągów [%zu] „%s” zawiera %<PRIu64> bajtów pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12592
+#: src/readelf.c:12597
 #, c-format
 msgid ""
 "\n"
@@ -6037,7 +6047,7 @@
 "Sekcja ciągów [%zu] „%s” zawiera %<PRIu64> bajtów (%zd nieskompresowanych) "
 "pod offsetem %#0<PRIx64>:\n"
 
-#: src/readelf.c:12641
+#: src/readelf.c:12646
 #, c-format
 msgid ""
 "\n"
@@ -6046,7 +6056,7 @@
 "\n"
 "sekcja [%lu] nie istnieje"
 
-#: src/readelf.c:12671
+#: src/readelf.c:12676
 #, c-format
 msgid ""
 "\n"
@@ -6055,12 +6065,12 @@
 "\n"
 "sekcja „%s” nie istnieje"
 
-#: src/readelf.c:12728
+#: src/readelf.c:12733
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "nie można uzyskać indeksu symboli archiwum „%s”: %s"
 
-#: src/readelf.c:12731
+#: src/readelf.c:12736
 #, c-format
 msgid ""
 "\n"
@@ -6069,7 +6079,7 @@
 "\n"
 "Archiwum „%s” nie ma indeksu symboli\n"
 
-#: src/readelf.c:12735
+#: src/readelf.c:12740
 #, c-format
 msgid ""
 "\n"
@@ -6078,12 +6088,12 @@
 "\n"
 "Indeks archiwum „%s” ma %zu wpisów:\n"
 
-#: src/readelf.c:12753
+#: src/readelf.c:12758
 #, 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:12758
+#: src/readelf.c:12763
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Element archiwum „%s” zawiera:\n"
@@ -6147,7 +6157,7 @@
 msgid "%s: file format not recognized"
 msgstr "%s: nie rozpoznano formatu pliku"
 
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
 #, c-format
 msgid " (ex %s)"
 msgstr " (ex %s)"
@@ -6157,7 +6167,7 @@
 msgid "cannot get section header"
 msgstr "nie można uzyskać nagłówka sekcji\n"
 
-#: src/size.c:582
+#: src/size.c:585
 msgid "(TOTALS)\n"
 msgstr "(CAŁKOWITE)\n"
 
diff --git a/po/uk.po b/po/uk.po
index 051cc0b..a712550 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,7 +7,7 @@
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
-"POT-Creation-Date: 2020-03-30 12:56+0200\n"
+"POT-Creation-Date: 2020-06-11 15:50+0200\n"
 "PO-Revision-Date: 2020-03-28 14:59+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <kde-i18n-uk@kde.org>\n"
@@ -59,7 +59,7 @@
 "гарантій, зокрема гарантій працездатності або придатності для певної мети.\n"
 
 #: lib/xmalloc.c:52 lib/xmalloc.c:65 lib/xmalloc.c:77 src/readelf.c:3449
-#: src/readelf.c:11398 src/unstrip.c:2393 src/unstrip.c:2599
+#: src/readelf.c:11403 src/unstrip.c:2393 src/unstrip.c:2599
 #, c-format
 msgid "memory exhausted"
 msgstr "пам’ять вичерпано"
@@ -517,7 +517,7 @@
 #: libebl/eblcorenotetypename.c:100 libebl/eblobjnotetypename.c:77
 #: libebl/eblobjnotetypename.c:109 libebl/eblobjnotetypename.c:130
 #: libebl/eblosabiname.c:73 libebl/eblsectionname.c:83
-#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:85
+#: libebl/eblsectiontypename.c:115 libebl/eblsegmenttypename.c:81
 msgid "<unknown>"
 msgstr "<невідомо>"
 
@@ -1675,7 +1675,7 @@
 
 #: 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:2936 src/elflint.c:3099
-#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4435
+#: src/elflint.c:3247 src/elflint.c:3437 src/elflint.c:4440
 #, c-format
 msgid "section [%2d] '%s': cannot get section data\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати дані розділу\n"
@@ -3063,7 +3063,7 @@
 msgid "section [%2zu] '%s' has unsupported type %d\n"
 msgstr "розділ [%2zu] «%s» належить до непідтримуваного типу %d\n"
 
-#: src/elflint.c:3926
+#: src/elflint.c:3931
 #, c-format
 msgid ""
 "section [%2zu] '%s' contains invalid processor-specific flag(s) %#<PRIx64>\n"
@@ -3071,74 +3071,74 @@
 "розділ [%2zu] «%s» містить некоректні специфічні для процесора прапорці "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:3933
+#: src/elflint.c:3938
 #, c-format
 msgid "section [%2zu] '%s' contains unknown flag(s) %#<PRIx64>\n"
 msgstr "розділ [%2zu] «%s» містить невідомі прапорці %#<PRIx64>\n"
 
-#: src/elflint.c:3941
+#: src/elflint.c:3946
 #, c-format
 msgid "section [%2zu] '%s': thread-local data sections address not zero\n"
 msgstr ""
 "розділ [%2zu] «%s»: адреса розділів локальних даних потоків не є нульовою\n"
 
-#: src/elflint.c:3951
+#: src/elflint.c:3956
 #, c-format
 msgid "section [%2zu] '%s': allocated section cannot be compressed\n"
 msgstr ""
 "розділ [%2zu] «%s»: розміщений у пам'яті розділ не може бути стиснений\n"
 
-#: src/elflint.c:3956
+#: src/elflint.c:3961
 #, c-format
 msgid "section [%2zu] '%s': nobits section cannot be compressed\n"
 msgstr "розділ [%2zu] «%s»: розділ nobits не може бути стиснений\n"
 
-#: src/elflint.c:3962
+#: src/elflint.c:3967
 #, c-format
 msgid ""
 "section [%2zu] '%s': compressed section with no compression header: %s\n"
 msgstr "розділ [%2zu] «%s»: стиснений розділ без заголовка стиснення: %s\n"
 
-#: src/elflint.c:3968
+#: src/elflint.c:3973
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in link value\n"
 msgstr ""
 "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні компонування\n"
 
-#: src/elflint.c:3973
+#: src/elflint.c:3978
 #, c-format
 msgid "section [%2zu] '%s': invalid section reference in info value\n"
 msgstr ""
 "розділ [%2zu] «%s»: некоректне посилання на розділ у значенні відомостей\n"
 
-#: src/elflint.c:3980
+#: src/elflint.c:3985
 #, c-format
 msgid "section [%2zu] '%s': strings flag set without merge flag\n"
 msgstr "розділ [%2zu] «%s»: встановлено прапорець strings без прапорця merge\n"
 
-#: src/elflint.c:3985
+#: src/elflint.c:3990
 #, c-format
 msgid "section [%2zu] '%s': merge flag set but entry size is zero\n"
 msgstr ""
 "розділ [%2zu] «%s»: встановлено прапорець merge, але розмір запису є "
 "нульовим\n"
 
-#: src/elflint.c:4004
+#: src/elflint.c:4009
 #, c-format
 msgid "section [%2zu] '%s' has unexpected type %d for an executable section\n"
 msgstr "розділ [%2zu] «%s» має неочікуваний тип %d для виконуваного розділу\n"
 
-#: src/elflint.c:4013
+#: src/elflint.c:4018
 #, c-format
 msgid "section [%2zu] '%s' must be of type NOBITS in debuginfo files\n"
 msgstr "розділ [%2zu] «%s» у файлах debuginfo має належати до типу NOBITS\n"
 
-#: src/elflint.c:4020
+#: src/elflint.c:4025
 #, c-format
 msgid "section [%2zu] '%s' is both executable and writable\n"
 msgstr "розділ [%2zu] «%s» є одночасно виконуваним і придатним до запису\n"
 
-#: src/elflint.c:4051
+#: src/elflint.c:4056
 #, c-format
 msgid ""
 "section [%2zu] '%s' not fully contained in segment of program header entry "
@@ -3147,7 +3147,7 @@
 "розділ [%2zu] «%s» не повністю міститься у сегменті запису заголовка "
 "програми %d\n"
 
-#: src/elflint.c:4061
+#: src/elflint.c:4066
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3156,7 +3156,7 @@
 "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з "
 "файла у сегментів запису заголовка програми %d\n"
 
-#: src/elflint.c:4087
+#: src/elflint.c:4092
 #, c-format
 msgid ""
 "section [%2zu] '%s' has type NOBITS but is read from the file in segment of "
@@ -3165,7 +3165,7 @@
 "розділ [%2zu] «%s» належить до типу NOBITS, але його читання виконується з "
 "файла у сегментів запису заголовка програми %d, а вміст файла є ненульовим\n"
 
-#: src/elflint.c:4098
+#: src/elflint.c:4103
 #, c-format
 msgid ""
 "section [%2zu] '%s' has not type NOBITS but is not read from the file in "
@@ -3174,19 +3174,19 @@
 "розділ [%2zu] «%s» не належить до типу NOBITS, але його читання не "
 "виконується з файла у сегментів запису заголовка програми %d\n"
 
-#: src/elflint.c:4109
+#: src/elflint.c:4114
 #, c-format
 msgid "section [%2zu] '%s' is executable in nonexecutable segment %d\n"
 msgstr "розділ [%2zu] «%s» є виконуваним у невиконуваному сегменті %d\n"
 
-#: src/elflint.c:4119
+#: src/elflint.c:4124
 #, c-format
 msgid "section [%2zu] '%s' is writable in unwritable segment %d\n"
 msgstr ""
 "розділ [%2zu] «%s» є придатним до запису у непридатному до запису сегменті "
 "%d\n"
 
-#: src/elflint.c:4129
+#: src/elflint.c:4134
 #, c-format
 msgid ""
 "section [%2zu] '%s': alloc flag set but section not in any loaded segment\n"
@@ -3194,7 +3194,7 @@
 "розділ [%2zu] «%s»: встановлено прапорець alloc, але розділ не перебуває у "
 "жодному завантаженому сегменті\n"
 
-#: src/elflint.c:4135
+#: src/elflint.c:4140
 #, c-format
 msgid ""
 "section [%2zu] '%s': ELF header says this is the section header string table "
@@ -3203,7 +3203,7 @@
 "розділ [%2zu] «%s»: заголовок ELF повідомляє про те, що це таблиця рядків "
 "заголовка розділу, але ця таблиця не належить до типу SHT_TYPE\n"
 
-#: src/elflint.c:4143
+#: src/elflint.c:4148
 #, c-format
 msgid ""
 "section [%2zu] '%s': relocatable files cannot have dynamic symbol tables\n"
@@ -3211,17 +3211,17 @@
 "розділ [%2zu] «%s»: придатні до пересування файли не можуть містити "
 "динамічних таблиць символів\n"
 
-#: src/elflint.c:4194
+#: src/elflint.c:4199
 #, c-format
 msgid "more than one version symbol table present\n"
 msgstr "виявлено більше за одну таблицю символів версій\n"
 
-#: src/elflint.c:4217
+#: src/elflint.c:4222
 #, c-format
 msgid "INTERP program header entry but no .interp section\n"
 msgstr "існує запис заголовка програми INTERP, але не розділ .interp\n"
 
-#: src/elflint.c:4228
+#: src/elflint.c:4233
 #, c-format
 msgid ""
 "loadable segment [%u] is executable but contains no executable sections\n"
@@ -3229,14 +3229,14 @@
 "придатний до завантаження сегмент [%u] є виконуваним, але не містить "
 "виконуваних розділів\n"
 
-#: src/elflint.c:4234
+#: src/elflint.c:4239
 #, c-format
 msgid "loadable segment [%u] is writable but contains no writable sections\n"
 msgstr ""
 "придатний до завантаження розділ [%u] є придатним до запису, але не містить "
 "придатних до запису розділів\n"
 
-#: src/elflint.c:4245
+#: src/elflint.c:4250
 #, c-format
 msgid ""
 "no .gnu.versym section present but .gnu.versym_d or .gnu.versym_r section "
@@ -3245,24 +3245,24 @@
 "немає розділу .gnu.versym, хоча існує розділ .gnu.versym_d або .gnu."
 "versym_r\n"
 
-#: src/elflint.c:4258
+#: src/elflint.c:4263
 #, c-format
 msgid "duplicate version index %d\n"
 msgstr "дублікат індексу версії %d\n"
 
-#: src/elflint.c:4272
+#: src/elflint.c:4277
 #, 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:4321
+#: src/elflint.c:4326
 #, 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:4325
+#: src/elflint.c:4330
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown core file note type %<PRIu32> at offset %zu\n"
@@ -3270,7 +3270,7 @@
 "розділ [%2d] «%s»: невідомий тип нотатки файла core %<PRIu32> за зміщенням "
 "%zu\n"
 
-#: src/elflint.c:4374
+#: src/elflint.c:4379
 #, c-format
 msgid ""
 "phdr[%d]: unknown object file note type %<PRIu32> with owner name '%s' at "
@@ -3279,7 +3279,7 @@
 "phdr[%d]: невідомий тип нотатки у файлі об'єктів, %<PRIu32>, із іменем "
 "власника «%s» за зміщенням %zu\n"
 
-#: src/elflint.c:4379
+#: src/elflint.c:4384
 #, c-format
 msgid ""
 "section [%2d] '%s': unknown object file note type %<PRIu32> with owner name "
@@ -3288,39 +3288,39 @@
 "розділ [%2d] «%s»: невідомий тип нотатки у файлі об'єктів, %<PRIu32>, із "
 "іменем власника «%s» за зміщенням %zu\n"
 
-#: src/elflint.c:4398
+#: src/elflint.c:4403
 #, c-format
 msgid "phdr[%d]: no note entries defined for the type of file\n"
 msgstr "phdr[%d]: для цього типу файлів не визначено записів нотаток\n"
 
-#: src/elflint.c:4418
+#: src/elflint.c:4423
 #, c-format
 msgid "phdr[%d]: cannot get content of note section: %s\n"
 msgstr "phdr[%d]: не вдалося отримати вміст розділу нотаток: %s\n"
 
-#: src/elflint.c:4421
+#: src/elflint.c:4426
 #, c-format
 msgid "phdr[%d]: extra %<PRIu64> bytes after last note\n"
 msgstr "phdr[%d]: зайві %<PRIu64> байтів після останнього запису нотатки\n"
 
-#: src/elflint.c:4442
+#: src/elflint.c:4447
 #, c-format
 msgid "section [%2d] '%s': no note entries defined for the type of file\n"
 msgstr ""
 "розділ [%2d] «%s»: для цього типу файлів не визначено записів нотаток\n"
 
-#: src/elflint.c:4449
+#: src/elflint.c:4454
 #, c-format
 msgid "section [%2d] '%s': cannot get content of note section\n"
 msgstr "розділ [%2d] «%s»: не вдалося отримати вміст розділу нотаток\n"
 
-#: src/elflint.c:4452
+#: src/elflint.c:4457
 #, c-format
 msgid "section [%2d] '%s': extra %<PRIu64> bytes after last note\n"
 msgstr ""
 "розділ [%2d] «%s»: додаткові %<PRIu64> байтів після останньої нотатки\n"
 
-#: src/elflint.c:4470
+#: src/elflint.c:4475
 #, c-format
 msgid ""
 "only executables, shared objects, and core files can have program headers\n"
@@ -3328,66 +3328,66 @@
 "заголовки програм можуть бути лише у виконуваних файлів, об’єктних файлів "
 "спільного використання або файлів core\n"
 
-#: src/elflint.c:4485
+#: src/elflint.c:4490
 #, c-format
 msgid "cannot get program header entry %d: %s\n"
 msgstr "не вдалося отримати запис заголовка програми %d: %s\n"
 
-#: src/elflint.c:4499
+#: src/elflint.c:4500
 #, c-format
 msgid "program header entry %d: unknown program header entry type %#<PRIx64>\n"
 msgstr ""
 "запис заголовка програми %d: невідомий тип запису заголовка програми "
 "%#<PRIx64>\n"
 
-#: src/elflint.c:4510
+#: src/elflint.c:4511
 #, c-format
 msgid "more than one INTERP entry in program header\n"
 msgstr "більше за один запис INTERP у заголовку програми\n"
 
-#: src/elflint.c:4518
+#: src/elflint.c:4519
 #, c-format
 msgid "more than one TLS entry in program header\n"
 msgstr "більше за один запис TLS у заголовку програми\n"
 
-#: src/elflint.c:4525
+#: src/elflint.c:4526
 #, c-format
 msgid "static executable cannot have dynamic sections\n"
 msgstr "у статичному виконуваному файлі не може бути динамічних розділів\n"
 
-#: src/elflint.c:4539
+#: src/elflint.c:4540
 #, c-format
 msgid "dynamic section reference in program header has wrong offset\n"
 msgstr ""
 "посилання на динамічний розділ у заголовку програми має помилкове зміщення\n"
 
-#: src/elflint.c:4542
+#: src/elflint.c:4543
 #, c-format
 msgid "dynamic section size mismatch in program and section header\n"
 msgstr ""
 "розміри динамічного розділу у заголовку програми та у заголовку розділу не "
 "збігаються\n"
 
-#: src/elflint.c:4552
+#: src/elflint.c:4553
 #, c-format
 msgid "more than one GNU_RELRO entry in program header\n"
 msgstr "більше за один запис GNU_RELRO у заголовку програми\n"
 
-#: src/elflint.c:4573
+#: src/elflint.c:4574
 #, c-format
 msgid "loadable segment GNU_RELRO applies to is not writable\n"
 msgstr ""
 "придатний до завантаження сегмент, до якого звертається GNU_RELRO, "
 "непридатний до запису\n"
 
-#: src/elflint.c:4584
+#: src/elflint.c:4585
 #, c-format
 msgid "loadable segment [%u] flags do not match GNU_RELRO [%u] flags\n"
 msgstr ""
 "прапорці придатного до завантаження сегмента [%u] не відповідають прапорцям "
 "GNU_RELRO [%u]\n"
 
-#: src/elflint.c:4591
+#: src/elflint.c:4592
 #, c-format
 msgid ""
 "GNU_RELRO [%u] flags are not a subset of the loadable segment [%u] flags\n"
@@ -3395,76 +3395,76 @@
 "прапорці GNU_RELRO [%u] не є підмножиною прапорців завантажуваного сегмента "
 "[%u]\n"
 
-#: src/elflint.c:4600 src/elflint.c:4623
+#: src/elflint.c:4601 src/elflint.c:4624
 #, c-format
 msgid "%s segment not contained in a loaded segment\n"
 msgstr "сегмент %s не міститься у завантаженому сегменті\n"
 
-#: src/elflint.c:4629
+#: src/elflint.c:4630
 #, c-format
 msgid "program header offset in ELF header and PHDR entry do not match"
 msgstr "зміщення заголовка програми у заголовку ELF і запис PHDR не збігаються"
 
-#: src/elflint.c:4656
+#: src/elflint.c:4657
 #, c-format
 msgid "call frame search table reference in program header has wrong offset\n"
 msgstr ""
 "посилання на таблицю вікон викликів у заголовку програми має помилкове "
 "зміщення\n"
 
-#: src/elflint.c:4659
+#: src/elflint.c:4660
 #, c-format
 msgid "call frame search table size mismatch in program and section header\n"
 msgstr ""
 "розміри таблиці пошуку вікон виклику у заголовку програми та у заголовку "
 "розділу не збігаються\n"
 
-#: src/elflint.c:4672
+#: src/elflint.c:4673
 #, 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:4680
+#: src/elflint.c:4681
 #, c-format
 msgid "call frame search table must be allocated\n"
 msgstr "таблицю пошуку вікон викликів має бути розміщено у пам’яті\n"
 
-#: src/elflint.c:4683
+#: src/elflint.c:4684
 #, c-format
 msgid "section [%2zu] '%s' must be allocated\n"
 msgstr "розділ [%2zu] «%s» має бути розміщено у пам’яті\n"
 
-#: src/elflint.c:4687
+#: src/elflint.c:4688
 #, c-format
 msgid "call frame search table must not be writable\n"
 msgstr "таблиця пошуку вікон викликів не повинна бути придатною до запису\n"
 
-#: src/elflint.c:4690
+#: src/elflint.c:4691
 #, c-format
 msgid "section [%2zu] '%s' must not be writable\n"
 msgstr "розділ [%2zu] «%s» не повинен бути придатним до запису\n"
 
-#: src/elflint.c:4695
+#: src/elflint.c:4696
 #, c-format
 msgid "call frame search table must not be executable\n"
 msgstr "таблиця пошуку вікон викликів не повинна бути придатною до виконання\n"
 
-#: src/elflint.c:4698
+#: src/elflint.c:4699
 #, c-format
 msgid "section [%2zu] '%s' must not be executable\n"
 msgstr "розділ [%2zu] «%s» не повинен бути придатним до виконання\n"
 
-#: src/elflint.c:4709
+#: src/elflint.c:4710
 #, c-format
 msgid "program header entry %d: file size greater than memory size\n"
 msgstr "запис заголовка програми %d: розмір файла перевищує об’єм пам’яті\n"
 
-#: src/elflint.c:4716
+#: src/elflint.c:4717
 #, c-format
 msgid "program header entry %d: alignment not a power of 2\n"
 msgstr "запис заголовка програми %d: значення вирівнювання не є степенем 2\n"
 
-#: src/elflint.c:4719
+#: src/elflint.c:4720
 #, c-format
 msgid ""
 "program header entry %d: file offset and virtual address not module of "
@@ -3473,7 +3473,7 @@
 "запис заголовка програми %d: зміщення у файлі і віртуальна адреса не "
 "співвідносяться з вирівнюванням\n"
 
-#: src/elflint.c:4732
+#: src/elflint.c:4733
 #, c-format
 msgid ""
 "executable/DSO with .eh_frame_hdr section does not have a PT_GNU_EH_FRAME "
@@ -3482,12 +3482,17 @@
 "виконуваний модуль/DSO з розділом .eh_frame_hdr не містить запису заголовка "
 "програми PT_GNU_EH_FRAME"
 
-#: src/elflint.c:4766
+#: src/elflint.c:4767
 #, c-format
 msgid "cannot read ELF header: %s\n"
 msgstr "не вдалося прочитати заголовок ELF: %s\n"
 
-#: src/elflint.c:4792
+#: src/elflint.c:4779
+#, fuzzy, c-format
+msgid "cannot create backend for ELF file\n"
+msgstr "не вдалося створити файл"
+
+#: src/elflint.c:4800
 #, c-format
 msgid "text relocation flag set but not needed\n"
 msgstr ""
@@ -3748,12 +3753,12 @@
 msgid "cannot create search tree"
 msgstr "не вдалося створити дерево пошуку"
 
-#: src/nm.c:746 src/nm.c:1205 src/objdump.c:779 src/readelf.c:635
+#: src/nm.c:746 src/nm.c:1239 src/objdump.c:782 src/readelf.c:635
 #: src/readelf.c:1447 src/readelf.c:1598 src/readelf.c:1799 src/readelf.c:2005
 #: src/readelf.c:2195 src/readelf.c:2373 src/readelf.c:2449 src/readelf.c:2707
 #: src/readelf.c:2783 src/readelf.c:2870 src/readelf.c:3468 src/readelf.c:3518
-#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12415
-#: src/readelf.c:12626 src/readelf.c:12695 src/size.c:398 src/size.c:470
+#: src/readelf.c:3581 src/readelf.c:11230 src/readelf.c:12420
+#: src/readelf.c:12631 src/readelf.c:12700 src/size.c:398 src/size.c:470
 #: src/strip.c:1038
 #, c-format
 msgid "cannot get section header string table index"
@@ -3783,28 +3788,28 @@
 "%*s%-*s %-*s Клас   Тип      %-*s %*s Розділ\n"
 "\n"
 
-#: src/nm.c:1216
+#: src/nm.c:1250
 #, c-format
 msgid "%s: entry size in section %zd `%s' is not what we expect"
 msgstr "%s: розмір запису у розділі %zd «%s» не є очікуваним"
 
-#: src/nm.c:1221
+#: src/nm.c:1255
 #, c-format
 msgid "%s: size of section %zd `%s' is not multiple of entry size"
 msgstr "%s: розмір розділу %zd «%s» не є кратним до розміру запису"
 
-#: src/nm.c:1300
+#: src/nm.c:1334
 #, c-format
 msgid "%s: entries (%zd) in section %zd `%s' is too large"
 msgstr "%s: записи (%zd) у розділі %zd, «%s» є завеликим"
 
 #. XXX Add machine specific object file types.
-#: src/nm.c:1527
+#: src/nm.c:1570
 #, c-format
 msgid "%s%s%s%s: Invalid operation"
 msgstr "%s%s%s%s: некоректна дія"
 
-#: src/nm.c:1584
+#: src/nm.c:1620
 #, c-format
 msgid "%s%s%s: no symbols"
 msgstr "%s%s%s: немає символів"
@@ -3880,6 +3885,11 @@
 msgid "cannot disassemble"
 msgstr "не вдалося дизасемблювати"
 
+#: src/objdump.c:760
+#, fuzzy, c-format
+msgid "cannot create backend for elf file"
+msgstr "не вдалося створити файл"
+
 #. Short description of program.
 #: src/ranlib.c:63
 msgid "Generate an index to speed access to archives."
@@ -4071,7 +4081,7 @@
 msgid "cannot get section: %s"
 msgstr "не вдалося отримати розділ: %s"
 
-#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12646
+#: src/readelf.c:653 src/readelf.c:1270 src/readelf.c:1479 src/readelf.c:12651
 #: src/unstrip.c:395 src/unstrip.c:426 src/unstrip.c:485 src/unstrip.c:604
 #: src/unstrip.c:625 src/unstrip.c:665 src/unstrip.c:881 src/unstrip.c:1212
 #: src/unstrip.c:1339 src/unstrip.c:1363 src/unstrip.c:1419 src/unstrip.c:1483
@@ -4477,8 +4487,8 @@
 msgid "<INVALID SECTION>"
 msgstr "<НЕКОРЕКТНИЙ РОЗДІЛ>"
 
-#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12517
-#: src/readelf.c:12524 src/readelf.c:12568 src/readelf.c:12575
+#: src/readelf.c:1656 src/readelf.c:2383 src/readelf.c:3484 src/readelf.c:12522
+#: src/readelf.c:12529 src/readelf.c:12573 src/readelf.c:12580
 msgid "Couldn't uncompress section"
 msgstr "Не вдалося розпакувати розділ"
 
@@ -5959,13 +5969,13 @@
 msgid "cannot get debug context descriptor: %s"
 msgstr "не вдалося отримати дескриптор контексту зневаджування: %s"
 
-#: src/readelf.c:11449 src/readelf.c:12071 src/readelf.c:12182
-#: src/readelf.c:12240
+#: src/readelf.c:11454 src/readelf.c:12076 src/readelf.c:12187
+#: src/readelf.c:12245
 #, c-format
 msgid "cannot convert core note data: %s"
 msgstr "не вдалося перетворити дані запису ядра: %s"
 
-#: src/readelf.c:11812
+#: src/readelf.c:11817
 #, c-format
 msgid ""
 "\n"
@@ -5974,21 +5984,21 @@
 "\n"
 "%*s... <повторюється %u разів> ..."
 
-#: src/readelf.c:12319
+#: src/readelf.c:12324
 msgid "  Owner          Data size  Type\n"
 msgstr "  Власник        Розм. даних Тип\n"
 
-#: src/readelf.c:12348
+#: src/readelf.c:12353
 #, c-format
 msgid "  %-13.*s  %9<PRId32>  %s\n"
 msgstr "  %-13.*s  %9<PRId32>  %s\n"
 
-#: src/readelf.c:12400
+#: src/readelf.c:12405
 #, c-format
 msgid "cannot get content of note: %s"
 msgstr "не вдалося отримати вміст нотатки: %s"
 
-#: src/readelf.c:12434
+#: src/readelf.c:12439
 #, c-format
 msgid ""
 "\n"
@@ -5998,7 +6008,7 @@
 "Розділ записів (note) [%2zu] «%s» з %<PRIu64> байтів за зміщенням "
 "%#0<PRIx64>:\n"
 
-#: src/readelf.c:12457
+#: src/readelf.c:12462
 #, c-format
 msgid ""
 "\n"
@@ -6007,7 +6017,7 @@
 "\n"
 "Сегмент записів з %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12504
+#: src/readelf.c:12509
 #, c-format
 msgid ""
 "\n"
@@ -6016,12 +6026,12 @@
 "\n"
 "У розділі [%zu] «%s» не міститься даних для створення дампу.\n"
 
-#: src/readelf.c:12531 src/readelf.c:12582
+#: src/readelf.c:12536 src/readelf.c:12587
 #, c-format
 msgid "cannot get data for section [%zu] '%s': %s"
 msgstr "не вдалося отримати дані для розділу [%zu] «%s»: %s"
 
-#: src/readelf.c:12536
+#: src/readelf.c:12541
 #, c-format
 msgid ""
 "\n"
@@ -6030,7 +6040,7 @@
 "\n"
 "Шіст. дамп розділу [%zu] «%s», %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12541
+#: src/readelf.c:12546
 #, c-format
 msgid ""
 "\n"
@@ -6041,7 +6051,7 @@
 "Шіст. дамп розділу [%zu] «%s», %<PRIu64> байтів (%zd нестиснено) за "
 "зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12555
+#: src/readelf.c:12560
 #, c-format
 msgid ""
 "\n"
@@ -6050,7 +6060,7 @@
 "\n"
 "У розділі [%zu] «%s» не міститься рядків для створення дампу.\n"
 
-#: src/readelf.c:12587
+#: src/readelf.c:12592
 #, c-format
 msgid ""
 "\n"
@@ -6059,7 +6069,7 @@
 "\n"
 "Розділ рядків [%zu] «%s» містить %<PRIu64> байтів за зміщенням %#0<PRIx64>:\n"
 
-#: src/readelf.c:12592
+#: src/readelf.c:12597
 #, c-format
 msgid ""
 "\n"
@@ -6070,7 +6080,7 @@
 "Рядок розділу [%zu] «%s» містить %<PRIu64> байти (%zd нестиснено) на "
 "зміщенні %#0<PRIx64>:\n"
 
-#: src/readelf.c:12641
+#: src/readelf.c:12646
 #, c-format
 msgid ""
 "\n"
@@ -6079,7 +6089,7 @@
 "\n"
 "розділу [%lu] не існує"
 
-#: src/readelf.c:12671
+#: src/readelf.c:12676
 #, c-format
 msgid ""
 "\n"
@@ -6088,12 +6098,12 @@
 "\n"
 "розділу «%s» не існує"
 
-#: src/readelf.c:12728
+#: src/readelf.c:12733
 #, c-format
 msgid "cannot get symbol index of archive '%s': %s"
 msgstr "не вдалося отримати покажчик символів архіву «%s»: %s"
 
-#: src/readelf.c:12731
+#: src/readelf.c:12736
 #, c-format
 msgid ""
 "\n"
@@ -6102,7 +6112,7 @@
 "\n"
 "У архіві «%s» немає покажчика символів\n"
 
-#: src/readelf.c:12735
+#: src/readelf.c:12740
 #, c-format
 msgid ""
 "\n"
@@ -6111,12 +6121,12 @@
 "\n"
 "Покажчик архіву «%s» містить %zu записів:\n"
 
-#: src/readelf.c:12753
+#: src/readelf.c:12758
 #, c-format
 msgid "cannot extract member at offset %zu in '%s': %s"
 msgstr "не вдалося видобути елемент за зміщенням %zu у «%s»: %s"
 
-#: src/readelf.c:12758
+#: src/readelf.c:12763
 #, c-format
 msgid "Archive member '%s' contains:\n"
 msgstr "Елемент архіву «%s» містить:\n"
@@ -6183,7 +6193,7 @@
 msgid "%s: file format not recognized"
 msgstr "%s: не вдалося розпізнати формат файла"
 
-#: src/size.c:418 src/size.c:557
+#: src/size.c:418 src/size.c:560
 #, c-format
 msgid " (ex %s)"
 msgstr " (прикл. %s)"
@@ -6193,7 +6203,7 @@
 msgid "cannot get section header"
 msgstr "не вдалося отримати заголовок розділу"
 
-#: src/size.c:582
+#: src/size.c:585
 msgid "(TOTALS)\n"
 msgstr "(ЗАГАЛОМ)\n"
 
diff --git a/post_update.sh b/post_update.sh
new file mode 100755
index 0000000..04572bc
--- /dev/null
+++ b/post_update.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# $1 Path to the new version.
+# $2 Path to the old version.
+
+set -x
+set -e
+
+# if called from the external_updater, change to the new dir first
+if [ "$1" != "" ]; then
+    cd $1
+fi
+
+autoreconf -i && ./configure --enable-maintainer-mode --disable-debuginfod --without-lzma --without-bzlib
+
+# if called from the external_updater, do not apply any patches as it will do
+# that for us
+if [ "$2" == "" ]; then
+    git apply patches/*
+fi
diff --git a/src/ChangeLog b/src/ChangeLog
index e11fe79..512d7b5 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,45 @@
+2020-06-07  Mark Wielaard  <mark@klomp.org>
+
+	* nm.c (sort_by_name_strtab): Replace by...
+	(sort_by_name_elf): New static Elf pointer and ...
+	(sort_by_name_ndx): New static size_t index.
+	(sort_by_name): Use elf_strptr to get symbol string.
+	(show_symbols): Set sort_by_name_elf and sort_by_name_ndx.
+
+2020-06-06  Mark Wielaard  <mark@klomp.org>
+
+	* nm.c (show_symbols_sysv): Skip no name and STT_FILE symbols.
+	When not printing address and size pad strings. Strip "GNU_"
+	prefix from binding name.
+	(class_type_char): Use 'V' for weak symbols, 'C' for common
+	symbols and 'T' for weak functions.
+	(show_symbols_posix): Skip STT_FILE symbols. Don't print value and
+	size when undefined.
+
+2020-06-04  Mark Wielaard  <mark@klomp.org>
+
+	* elflint.c (check_program_header): Remove PT_GNU_PROPERTY define.
+
+2020-05-14  Mark Wielaard  <mark@klomp.org>
+
+	* size.c (show_bsd): Set printf format based on radix.
+
+2020-05-09  Mark Wielaard  <mark@klomp.org>
+
+	* elflint.c (process_elf_file): Error out if ebl_openbackend fails.
+	* objdump.c (handle_elf): Likewise.
+	* nm.c (handle_elf): Likewise. Move full name string construction
+	forward, so it can be used in the error message.
+
+2020-04-17  Mark Wielaard  <mark@klomp.org>
+
+	* readelf.c (print_debug): Check .gnu.debuglto_ prefix.
+
+2020-04-16  Mark Wielaard  <mark@klomp.org>
+
+	* elflint.c (check_sections): Mask out SHF_EXCLUDE from processor
+	specific section flags when --gnu is given.
+
 2020-02-08  Mark Wielaard  <mark@klomp.org>
 
 	* elflint.c (check_program_header): Handle PT_GNU_PROPERTY.
diff --git a/src/elflint.c b/src/elflint.c
index 480d84b..72584de 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -3921,6 +3921,11 @@
 	  GElf_Xword sh_flags = shdr->sh_flags & ~(GElf_Xword) ALL_SH_FLAGS;
 	  if (sh_flags & SHF_MASKPROC)
 	    {
+	      /* Strictly speaking SHF_EXCLUDE is a processor specific
+		 section flag, but it is used generically in the GNU
+		 toolchain.  */
+	      if (gnuld)
+		sh_flags &= ~(GElf_Xword) SHF_EXCLUDE;
 	      if (!ebl_machine_section_flag_check (ebl,
 						   sh_flags & SHF_MASKPROC))
 		ERROR (gettext ("section [%2zu] '%s'"
@@ -4487,10 +4492,6 @@
 	  continue;
 	}
 
-#ifndef PT_GNU_PROPERTY
-#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
-#endif
-
       if (phdr->p_type >= PT_NUM && phdr->p_type != PT_GNU_EH_FRAME
 	  && phdr->p_type != PT_GNU_STACK && phdr->p_type != PT_GNU_RELRO
 	  && phdr->p_type != PT_GNU_PROPERTY
@@ -4770,7 +4771,14 @@
   ebl = ebl_openbackend (elf);
   /* If there is no appropriate backend library we cannot test
      architecture and OS specific features.  Any encountered extension
-     is an error.  */
+     is an error.  Often we'll get a "dummy" ebl, except if something
+     really bad happen, like a totally corrupted ELF file or out of
+     memory situation.  */
+  if (ebl == NULL)
+    {
+      ERROR (gettext ("cannot create backend for ELF file\n"));
+      return;
+    }
 
   /* Go straight by the gABI, check all the parts in turn.  */
   check_elf_header (ebl, ehdr, size);
diff --git a/src/nm.c b/src/nm.c
index b7c2aed..a633474 100644
--- a/src/nm.c
+++ b/src/nm.c
@@ -1,5 +1,5 @@
 /* Print symbol information from ELF file in human-readable form.
-   Copyright (C) 2000-2008, 2009, 2011, 2012, 2014, 2015 Red Hat, Inc.
+   Copyright (C) 2000-2008, 2009, 2011, 2012, 2014, 2015, 2020 Red Hat, Inc.
    This file is part of elfutils.
    Written by Ulrich Drepper <drepper@redhat.com>, 2000.
 
@@ -797,6 +797,16 @@
       const char *symstr = sym_name (ebl->elf, strndx, syms[cnt].sym.st_name,
 				     symstrbuf, sizeof symstrbuf);
 
+      /* Printing entries with a zero-length name makes the output
+	 not very well parseable.  Since these entries don't carry
+	 much information we leave them out.  */
+      if (symstr[0] == '\0')
+	continue;
+
+      /* We do not print the entries for files.  */
+      if (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_FILE)
+	continue;
+
 #ifdef USE_DEMANGLE
       /* Demangle if necessary.  Require GNU v3 ABI by the "_Z" prefix.  */
       if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
@@ -825,7 +835,10 @@
 
       /* Covert the address.  */
       if (syms[cnt].sym.st_shndx == SHN_UNDEF)
-	addressbuf[0] = sizebuf[0] = '\0';
+	{
+	  sprintf (addressbuf, "%*c", digits, ' ');
+	  sprintf (sizebuf, "%*c", digits, ' ');
+	}
       else
 	{
 	  snprintf (addressbuf, sizeof (addressbuf),
@@ -841,11 +854,14 @@
 	}
 
       /* Print the actual string.  */
+      const char *bind;
+      bind = ebl_symbol_binding_name (ebl,
+				      GELF_ST_BIND (syms[cnt].sym.st_info),
+				      symbindbuf, sizeof (symbindbuf));
+      if (bind != NULL && strncmp (bind, "GNU_", strlen ("GNU_")) == 0)
+	bind += strlen ("GNU_");
       printf ("%-*s|%s|%-6s|%-8s|%s|%*s|%s\n",
-	      longest_name, symstr, addressbuf,
-	      ebl_symbol_binding_name (ebl,
-				       GELF_ST_BIND (syms[cnt].sym.st_info),
-				       symbindbuf, sizeof (symbindbuf)),
+	      longest_name, symstr, addressbuf, bind,
 	      ebl_symbol_type_name (ebl, GELF_ST_TYPE (syms[cnt].sym.st_info),
 				    symtypebuf, sizeof (symtypebuf)),
 	      sizebuf, longest_where, syms[cnt].where,
@@ -884,6 +900,10 @@
       if (ehdr->e_ident[EI_OSABI] == ELFOSABI_LINUX
 	  && GELF_ST_BIND (sym->st_info) == STB_GNU_UNIQUE)
 	result = 'u';
+      else if (GELF_ST_BIND (sym->st_info) == STB_WEAK)
+	result = 'V';
+      else if (sym->st_shndx == SHN_COMMON)
+	result = 'C';
       else
 	{
 	  GElf_Shdr shdr_mem;
@@ -898,6 +918,11 @@
 	    }
 	}
     }
+  else if (result == 'T')
+    {
+      if (GELF_ST_BIND (sym->st_info) == STB_WEAK)
+	result = 'W';
+    }
 
   return local_p ? tolower (result) : result;
 }
@@ -1063,6 +1088,10 @@
       if (symstr[0] == '\0')
 	continue;
 
+      /* We do not print the entries for files.  */
+      if (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_FILE)
+	continue;
+
 #ifdef USE_DEMANGLE
       /* Demangle if necessary.  Require GNU v3 ABI by the "_Z" prefix.  */
       if (demangle && symstr[0] == '_' && symstr[1] == 'Z')
@@ -1084,21 +1113,23 @@
 	  putchar_unlocked (' ');
 	}
 
-      printf ((radix == radix_hex
-	       ? "%s %c%s %0*" PRIx64 " %0*" PRIx64 "\n"
-	       : (radix == radix_decimal
-		  ? "%s %c%s %*" PRId64 " %*" PRId64 "\n"
-		  : "%s %c%s %0*" PRIo64 " %0*" PRIo64 "\n")),
-	      symstr,
+      printf ("%s %c%s", symstr,
 	      class_type_char (elf, ehdr, &syms[cnt].sym),
 	      mark_special
 	      ? (GELF_ST_TYPE (syms[cnt].sym.st_info) == STT_TLS
 		 ? "@"
 		 : (GELF_ST_BIND (syms[cnt].sym.st_info) == STB_WEAK
 		    ? "*" : " "))
-	      : "",
-	      digits, syms[cnt].sym.st_value,
-	      digits, syms[cnt].sym.st_size);
+	      : "");
+      if (syms[cnt].sym.st_shndx != SHN_UNDEF)
+	printf ((radix == radix_hex
+		 ? " %0*" PRIx64 " %0*" PRIx64
+		 : (radix == radix_decimal
+		    ? " %*" PRId64 " %*" PRId64
+		    : " %0*" PRIo64 " %0*" PRIo64)),
+		digits, syms[cnt].sym.st_value,
+		digits, syms[cnt].sym.st_size);
+      putchar ('\n');
     }
 
 #ifdef USE_DEMANGLE
@@ -1122,7 +1153,8 @@
   return reverse_sort ? -result : result;
 }
 
-static Elf_Data *sort_by_name_strtab;
+static Elf *sort_by_name_elf;
+static size_t sort_by_name_ndx;
 
 static int
 sort_by_name (const void *p1, const void *p2)
@@ -1130,8 +1162,10 @@
   GElf_SymX *s1 = (GElf_SymX *) p1;
   GElf_SymX *s2 = (GElf_SymX *) p2;
 
-  const char *n1 = sort_by_name_strtab->d_buf + s1->sym.st_name;
-  const char *n2 = sort_by_name_strtab->d_buf + s2->sym.st_name;
+  const char *n1 = elf_strptr (sort_by_name_elf, sort_by_name_ndx,
+			       s1->sym.st_name) ?: "";
+  const char *n2 = elf_strptr (sort_by_name_elf, sort_by_name_ndx,
+			       s2->sym.st_name) ?: "";
 
   int result = strcmp (n1, n2);
 
@@ -1444,8 +1478,8 @@
   /* Sort the entries according to the users wishes.  */
   if (sort == sort_name)
     {
-      sort_by_name_strtab = elf_getdata (elf_getscn (ebl->elf, shdr->sh_link),
-					 NULL);
+      sort_by_name_elf = ebl->elf;
+      sort_by_name_ndx = shdr->sh_link;
       qsort (sym_mem, nentries, sizeof (GElf_SymX), sort_by_name);
     }
   else if (sort == sort_numeric)
@@ -1510,8 +1544,17 @@
   GElf_Ehdr *ehdr;
   Ebl *ebl;
 
+  /* Create the full name of the file.  */
+  if (prefix != NULL)
+    cp = mempcpy (cp, prefix, prefix_len);
+  cp = mempcpy (cp, fname, fname_len);
+  if (suffix != NULL)
+    memcpy (cp - 1, suffix, suffix_len + 1);
+
   /* Get the backend for this object file type.  */
   ebl = ebl_openbackend (elf);
+  if (ebl == NULL)
+    INTERNAL_ERROR (fullname);
 
   /* We need the ELF header in a few places.  */
   ehdr = gelf_getehdr (elf, &ehdr_mem);
@@ -1530,13 +1573,6 @@
       goto out;
     }
 
-  /* Create the full name of the file.  */
-  if (prefix != NULL)
-    cp = mempcpy (cp, prefix, prefix_len);
-  cp = mempcpy (cp, fname, fname_len);
-  if (suffix != NULL)
-    memcpy (cp - 1, suffix, suffix_len + 1);
-
   /* Find the symbol table.
 
      XXX Can there be more than one?  Do we print all?  Currently we do.  */
diff --git a/src/objdump.c b/src/objdump.c
index a619674..82d7bcf 100644
--- a/src/objdump.c
+++ b/src/objdump.c
@@ -755,6 +755,9 @@
 
   /* Get the backend for this object file type.  */
   Ebl *ebl = ebl_openbackend (elf);
+  if (ebl == NULL)
+    error (EXIT_FAILURE, 0,
+	   gettext ("cannot create backend for elf file"));
 
   printf ("%s: elf%d-%s\n\n",
 	  fname, gelf_getclass (elf) == ELFCLASS32 ? 32 : 64,
diff --git a/src/readelf.c b/src/readelf.c
index cbb519d..685d0b1 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -11253,7 +11253,8 @@
 	      if (strcmp (name, ".debug_info") == 0
 		  || strcmp (name, ".debug_info.dwo") == 0
 		  || strcmp (name, ".zdebug_info") == 0
-		  || strcmp (name, ".zdebug_info.dwo") == 0)
+		  || strcmp (name, ".zdebug_info.dwo") == 0
+		  || strcmp (name, ".gnu.debuglto_.debug_info") == 0)
 		{
 		  print_debug_info_section (dwflmod, ebl, ehdr,
 					    scn, shdr, dbg);
@@ -11339,7 +11340,11 @@
 				  dbglen - 1) == 0
 		      && (scnlen == dbglen + 1
 			  || (scnlen == dbglen + 5
-			      && strstr (name, ".dwo") == name + dbglen + 1))))
+			      && strstr (name, ".dwo") == name + dbglen + 1)))
+		  || (scnlen > 14 /* .gnu.debuglto_ prefix. */
+		      && strncmp (name, ".gnu.debuglto_", 14) == 0
+		      && strcmp (&name[14], debug_sections[n].name) == 0)
+)
 		{
 		  if ((print_debug_sections | implicit_debug_sections)
 		      & debug_sections[n].bitmask)
diff --git a/src/size.c b/src/size.c
index a25d447..e49b64b 100644
--- a/src/size.c
+++ b/src/size.c
@@ -545,8 +545,11 @@
 	datasize += shdr->sh_size;
     }
 
-  printf ("%*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRId64 " %*"
-	  PRIx64 " %s",
+  printf (radix == radix_decimal
+          ? "%*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRId64 " %*" PRIx64 " %s"
+	  : radix == radix_hex
+	  ? "%#*" PRIx64 " %#*" PRIx64 " %#*" PRIx64 " %*" PRId64 " %*" PRIx64 " %s"
+	  : "%#*" PRIo64 " %#*" PRIo64 " %#*" PRIo64 " %*" PRId64 " %*" PRIx64 " %s",
 	  ddigits - 2, textsize,
 	  ddigits - 2, datasize,
 	  ddigits - 2, bsssize,
diff --git a/tests/ChangeLog b/tests/ChangeLog
index 96e0642..99f9da9 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,44 @@
+2020-06-06  Mark Wielaard  <mark@klomp.org>
+
+	* testfilesyms32.bz2: New test file.
+	* testfilesyms64.bz2: Likewise.
+	* run-nm-syms.sh: New test.
+	* Makefile.am (TESTS): Add run-nm-syms.sh.
+	(EXTRA_DIST): run-nm-syms.sh, testfilesyms32.bz2 and
+	testfilesyms64.bz2
+
+2020-05-08  Mark Wielaard  <mark@klomp.org>
+
+	* elfputzdata.c (main): Explicitly check orig_buf is not NULL
+	before calling memcmp.
+
+2020-05-05  Mark Wielaard  <mark@klomp.org>
+
+	* testfile-lto-gcc8.bz2: New test file.
+	* testfile-lto-gcc9.bz2: Likewise.
+	* Makefile.am (EXTRA_DIST): Add testfile-lto-gcc8.bz2 and
+	testfile-lto-gcc9.bz2.
+	* run-allfcts.sh: Add testfile-lto-gcc9 and testfile-lto-gcc8
+	tests.
+
+2020-05-05  Mark Wielaard  <mark@klomp.org>
+
+	* testfile-lto-gcc10.bz2: New test file.
+	* Makefile.am (EXTRA_DIST): Add testfile-lto-gcc10.bz2.
+	* run-allfcts.sh: Add testfile-lto-gcc10 test.
+
+2020-04-17  Mark Wielaard  <mark@klomp.org>
+
+	* test-subr.sh (testrun_on_self_obj): New function.
+	* run-varlocs-self.sh: Run testrun_on_self_exe and
+	testrun_on_self_lib with -e, run testrun_on_self_obj with
+	--exprlocs -e.
+
+2020-04-17  Mark Wielaard  <mark@klomp.org>
+
+	* Makefile.am (test-nlist$): New goal with minimal CFLAGS.
+	(test_nlist_CFLAGS): New variable.
+
 2020-03-28  Frank Ch. Eigler  <fche@redhat.com>
 
 	* run-debuginfod-find.sh: Test timestamps of archive-origin files.
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 40b1c00..7db7db1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -80,6 +80,14 @@
 		     $(AM_LDFLAGS) $(LDFLAGS) $(backtrace_child_LDFLAGS) \
 		     -o $@ $<
 
+# test_nlist checks its own symbol table, and expects various symbols
+# to be in the order as specified in the source file. Explicitly set
+# minimal CFLAGS
+test-nlist$(EXEEXT): test-nlist.c
+	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	  $(AM_CPPFLAGS) $(CPPFLAGS) \
+	  $(test_nlist_CFLAGS) $(test_nlist_LDADD) -o $@ $<
+
 TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile test-nlist \
 	update1 update2 update3 update4 \
 	run-show-die-info.sh run-get-files.sh run-get-lines.sh \
@@ -102,7 +110,7 @@
 	run-ranlib-test2.sh run-ranlib-test3.sh run-ranlib-test4.sh \
 	run-addrscopes.sh run-strings-test.sh run-funcscopes.sh \
 	run-find-prologues.sh run-allregs.sh run-addrcfi.sh \
-	run-dwarfcfi.sh \
+	run-dwarfcfi.sh run-nm-syms.sh \
 	run-nm-self.sh run-readelf-self.sh run-readelf-info-plus.sh \
 	run-readelf-compressed.sh \
 	run-readelf-const-values.sh \
@@ -210,6 +218,8 @@
 	     testfile9.bz2 testfile10.bz2 testfile11.bz2 testfile12.bz2 \
 	     testfile13.bz2 run-strip-test3.sh run-allfcts.sh \
 	     testfile_class_func.bz2 testfile_nested_funcs.bz2 \
+	     testfile-lto-gcc10.bz2 \
+	     testfile-lto-gcc9.bz2 testfile-lto-gcc8.bz2 \
 	     run-line2addr.sh run-elflint-test.sh testfile14.bz2 \
 	     run-strip-test4.sh run-strip-test5.sh run-strip-test6.sh \
 	     run-strip-test7.sh run-strip-test8.sh run-strip-groups.sh \
@@ -233,6 +243,7 @@
 	     run-elflint-self.sh run-ranlib-test.sh run-ranlib-test2.sh \
 	     run-ranlib-test3.sh run-ranlib-test4.sh \
 	     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-readelf-const-values.sh testfile-const-values.debug.bz2 \
@@ -557,6 +568,7 @@
 sectiondump_LDADD = $(libelf)
 showptable_LDADD = $(libelf)
 hash_LDADD = $(libelf)
+test_nlist_CFLAGS =-g -O0
 test_nlist_LDADD = $(libelf)
 msg_tst_LDADD = $(libelf)
 newscn_LDADD = $(libelf)
diff --git a/tests/elfputzdata.c b/tests/elfputzdata.c
index 66ab77b..0d9c020 100644
--- a/tests/elfputzdata.c
+++ b/tests/elfputzdata.c
@@ -105,14 +105,17 @@
 		  printf ("Unexpected data size for orig section %zd\n", idx);
 		  return -1;
 		}
-	      char *orig_buf = malloc (d->d_size);
-	      if (orig_size > 0 && orig_buf == NULL)
-		{
-		  printf ("No memory to copy section %zd data\n", idx);
-		  return -1;
-		}
+	      char *orig_buf = NULL;
 	      if (orig_size > 0)
-		memcpy (orig_buf, d->d_buf, orig_size);
+		{
+		  orig_buf = malloc (d->d_size);
+		  if (orig_buf == NULL)
+		    {
+		      printf ("No memory to copy section %zd data\n", idx);
+		      return -1;
+		    }
+		  memcpy (orig_buf, d->d_buf, orig_size);
+		}
 
 	      bool forced = false;
 	      if (gnu)
@@ -175,7 +178,8 @@
 		}
 
 	      if (new_size == orig_size
-		  && memcmp (orig_buf, d->d_buf, orig_size) == 0)
+		  && (orig_buf == NULL
+		      || memcmp (orig_buf, d->d_buf, orig_size) == 0))
 		{
 		  printf ("section %zd didn't compress\n", idx);
 		  return -1;
@@ -211,7 +215,8 @@
 		  return -1;
 		}
 	      if (newer_size != orig_size
-		  && memcmp (orig_buf, d->d_buf, orig_size) != 0)
+		  && (orig_buf == NULL
+		      || memcmp (orig_buf, d->d_buf, orig_size) != 0))
 		{
 		  printf ("section %zd didn't correctly uncompress\n", idx);
 		  return -1;
diff --git a/tests/run-allfcts.sh b/tests/run-allfcts.sh
index 6eaf13c..9c0a55d 100755
--- a/tests/run-allfcts.sh
+++ b/tests/run-allfcts.sh
@@ -91,4 +91,83 @@
 /home/mark/src/tests/nested/class_func.cxx:13:main
 EOF
 
+# = testfile-lto.h =
+# struct t
+# {
+#   int *p;
+#   int c;
+# };
+#
+# extern int foo (int i, struct t *t);
+
+# = testfile-lto-func.c =
+# #include "testfile-lto.h"
+#
+# int
+# foo (int i, struct t *t)
+# {
+#   int j, res = 0;
+#   for (j = 0; j < i && j < t->c; j++)
+#     res += t->p[j];
+#
+#   return res;
+# }
+
+# = testfile-lto-main.c =
+# #include "testfile-lto.h"
+#
+# static struct t g;
+#
+# int
+# main (int argc, char **argv)
+# {
+#   int i;
+#   int j[argc];
+#   g.c = argc;
+#   g.p = j;
+#   for (i = 0; i < argc; i++)
+#     j[i] = (int) argv[i][0];
+#   return foo (3, &g);
+# }
+
+# Using gcc (GCC) 10.0.1 20200430 (Red Hat 10.0.1-0.13)
+# gcc -g -O2 -flto -c testfile-lto-func.c
+# gcc -g -O2 -flto -c testfile-lto-main.c
+# gcc -g -O2 -flto -o testfile-lto-gcc10 testfile-lto-func.o testfile-lto-main.o
+
+testfiles testfile-lto-gcc10
+
+testrun_compare ${abs_builddir}/allfcts testfile-lto-gcc10 <<\EOF
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+/home/mark/src/tests/testfile-lto-main.c:6:main
+EOF
+
+# Using gcc (GCC) 8.3.1 20190311 (Red Hat 8.3.1-3)
+# gcc -g -O2 -flto -c testfile-lto-func.c
+# gcc -g -O2 -flto -c testfile-lto-main.c
+# gcc -g -O2 -flto -o testfile-lto-gcc8 testfile-lto-func.o testfile-lto-main.o
+
+testfiles testfile-lto-gcc8
+
+testrun_compare ${abs_builddir}/allfcts testfile-lto-gcc8 <<\EOF
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+EOF
+
+# gcc (GCC) 9.1.1 20190605 (Red Hat 9.1.1-2)
+# gcc -g -O2 -flto -c testfile-lto-func.c
+# gcc -g -O2 -flto -c testfile-lto-main.c
+# gcc -g -O2 -flto -o testfile-lto-gcc9 testfile-lto-func.o testfile-lto-main.o
+
+testfiles testfile-lto-gcc9
+
+testrun_compare ${abs_builddir}/allfcts testfile-lto-gcc9 <<\EOF
+/home/mark/src/tests/testfile-lto-main.c:6:main
+/home/mark/src/tests/testfile-lto-func.c:4:foo
+/home/mark/src/tests/testfile-lto-main.c:6:main
+EOF
+
 exit 0
diff --git a/tests/run-nm-syms.sh b/tests/run-nm-syms.sh
new file mode 100755
index 0000000..ddf0922
--- /dev/null
+++ b/tests/run-nm-syms.sh
@@ -0,0 +1,166 @@
+#! /bin/sh
+# Copyright (C) 2020 Red Hat, Inc.
+# This file is part of elfutils.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# elfutils is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+. $srcdir/test-subr.sh
+
+# void *SYM1;
+# void *SYM2 = 0;
+# extern void *SYM3;
+# static void *SYM4;
+#
+# void *SYM6 = &SYM3;
+# static void *SYM7 = &SYM3;
+#
+# void *SYM8 __attribute__((__weak__));
+#
+# void FUN1 (void) { }
+# static void FUN2 (void) { }
+# extern void FUN3 (void);
+#
+# void *FREF = FUN3;
+#
+# void __attribute__((__weak__)) FUN4 (void) { };
+#
+# int NUM0 = 0; __asm__(".type NUM0,%gnu_unique_object");
+# int __thread NUM1 = 1;
+#
+# gcc -m64 -c syms.c -o testfilesyms64
+# gcc -m32 -c syms.c -o testfilesyms32
+
+testfiles testfilesyms32 testfilesyms64
+
+testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms32 <<\EOF
+00000008 D FREF
+00000000 T FUN1
+00000010 t FUN2
+         U FUN3
+00000020 W FUN4
+00000008 u NUM0
+00000000 D NUM1
+00000004 C SYM1
+00000000 B SYM2
+         U SYM3
+0000000c b SYM4
+00000000 D SYM6
+00000004 d SYM7
+00000004 V SYM8
+         U _GLOBAL_OFFSET_TABLE_
+00000000 T __x86.get_pc_thunk.ax
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms32 <<\EOF
+FREF D 00000008 00000004
+FUN1 T 00000000 00000010
+FUN2 t 00000010 00000010
+FUN3 U
+FUN4 W 00000020 00000010
+NUM0 u 00000008 00000004
+NUM1 D 00000000 00000004
+SYM1 C 00000004 00000004
+SYM2 B 00000000 00000004
+SYM3 U
+SYM4 b 0000000c 00000004
+SYM6 D 00000000 00000004
+SYM7 d 00000004 00000004
+SYM8 V 00000004 00000004
+_GLOBAL_OFFSET_TABLE_ U
+__x86.get_pc_thunk.ax T 00000000 00000000
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms32 <<\EOF
+
+
+Symbols from testfilesyms32:
+
+Name                  Value    Class  Type     Size     Line Section
+
+FREF                 |00000008|GLOBAL|OBJECT  |00000004|    |.data.rel
+FUN1                 |00000000|GLOBAL|FUNC    |00000010|    |.text
+FUN2                 |00000010|LOCAL |FUNC    |00000010|    |.text
+FUN3                 |        |GLOBAL|NOTYPE  |        |    |UNDEF
+FUN4                 |00000020|WEAK  |FUNC    |00000010|    |.text
+NUM0                 |00000008|UNIQUE|OBJECT  |00000004|    |.bss
+NUM1                 |00000000|GLOBAL|TLS     |00000004|    |.tdata
+SYM1                 |00000004|GLOBAL|OBJECT  |00000004|    |COMMON
+SYM2                 |00000000|GLOBAL|OBJECT  |00000004|    |.bss
+SYM3                 |        |GLOBAL|NOTYPE  |        |    |UNDEF
+SYM4                 |0000000c|LOCAL |OBJECT  |00000004|    |.bss
+SYM6                 |00000000|GLOBAL|OBJECT  |00000004|    |.data.rel
+SYM7                 |00000004|LOCAL |OBJECT  |00000004|    |.data.rel
+SYM8                 |00000004|WEAK  |OBJECT  |00000004|    |.bss
+_GLOBAL_OFFSET_TABLE_|        |GLOBAL|NOTYPE  |        |    |UNDEF
+__x86.get_pc_thunk.ax|00000000|GLOBAL|FUNC    |00000000|    |.text.__x86.get_pc_thunk.ax
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=bsd testfilesyms64 <<\EOF
+0000000000000010 D FREF
+0000000000000000 T FUN1
+0000000000000007 t FUN2
+                 U FUN3
+000000000000000e W FUN4
+0000000000000010 u NUM0
+0000000000000000 D NUM1
+0000000000000008 C SYM1
+0000000000000000 B SYM2
+                 U SYM3
+0000000000000018 b SYM4
+0000000000000000 D SYM6
+0000000000000008 d SYM7
+0000000000000008 V SYM8
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=posix testfilesyms64 <<\EOF
+FREF D 0000000000000010 0000000000000008
+FUN1 T 0000000000000000 0000000000000007
+FUN2 t 0000000000000007 0000000000000007
+FUN3 U
+FUN4 W 000000000000000e 0000000000000007
+NUM0 u 0000000000000010 0000000000000004
+NUM1 D 0000000000000000 0000000000000004
+SYM1 C 0000000000000008 0000000000000008
+SYM2 B 0000000000000000 0000000000000008
+SYM3 U
+SYM4 b 0000000000000018 0000000000000008
+SYM6 D 0000000000000000 0000000000000008
+SYM7 d 0000000000000008 0000000000000008
+SYM8 V 0000000000000008 0000000000000008
+EOF
+
+testrun_compare ${abs_top_builddir}/src/nm --format=sysv testfilesyms64 <<\EOF
+
+
+Symbols from testfilesyms64:
+
+Name   Value            Class  Type     Size             Line Section
+
+FREF  |0000000000000010|GLOBAL|OBJECT  |0000000000000008|    |.data.rel
+FUN1  |0000000000000000|GLOBAL|FUNC    |0000000000000007|    |.text
+FUN2  |0000000000000007|LOCAL |FUNC    |0000000000000007|    |.text
+FUN3  |                |GLOBAL|NOTYPE  |                |    |UNDEF
+FUN4  |000000000000000e|WEAK  |FUNC    |0000000000000007|    |.text
+NUM0  |0000000000000010|UNIQUE|OBJECT  |0000000000000004|    |.bss
+NUM1  |0000000000000000|GLOBAL|TLS     |0000000000000004|    |.tdata
+SYM1  |0000000000000008|GLOBAL|OBJECT  |0000000000000008|    |COMMON
+SYM2  |0000000000000000|GLOBAL|OBJECT  |0000000000000008|    |.bss
+SYM3  |                |GLOBAL|NOTYPE  |                |    |UNDEF
+SYM4  |0000000000000018|LOCAL |OBJECT  |0000000000000008|    |.bss
+SYM6  |0000000000000000|GLOBAL|OBJECT  |0000000000000008|    |.data.rel
+SYM7  |0000000000000008|LOCAL |OBJECT  |0000000000000008|    |.data.rel
+SYM8  |0000000000000008|WEAK  |OBJECT  |0000000000000008|    |.bss
+EOF
+
+exit 0
diff --git a/tests/run-varlocs-self.sh b/tests/run-varlocs-self.sh
index 54b6a8d..5454fc7 100755
--- a/tests/run-varlocs-self.sh
+++ b/tests/run-varlocs-self.sh
@@ -19,4 +19,6 @@
 
 # Make sure varlocs doesn't crash, doesn't trigger self-check/asserts
 # or leaks running under valgrind.
-testrun_on_self_quiet ${abs_top_builddir}/tests/varlocs -e
+testrun_on_self_exe ${abs_top_builddir}/tests/varlocs -e
+testrun_on_self_lib ${abs_top_builddir}/tests/varlocs -e
+testrun_on_self_obj ${abs_top_builddir}/tests/varlocs --exprlocs -e
diff --git a/tests/test-subr.sh b/tests/test-subr.sh
index e768c1e..411e5f2 100644
--- a/tests/test-subr.sh
+++ b/tests/test-subr.sh
@@ -168,6 +168,19 @@
   if test $exit_status != 0; then exit $exit_status; fi
 }
 
+testrun_on_self_obj()
+{
+  exit_status=0
+
+  for file in $self_test_files_obj; do
+      testrun $* $file \
+	  || { echo "*** failure in $* $file"; exit_status=1; }
+  done
+
+  # Only exit if something failed
+  if test $exit_status != 0; then exit $exit_status; fi
+}
+
 # Compress the files first. Compress both debug sections and symtab.
 testrun_on_self_compressed()
 {
diff --git a/tests/testfile-lto-gcc10.bz2 b/tests/testfile-lto-gcc10.bz2
new file mode 100755
index 0000000..e8ef621
--- /dev/null
+++ b/tests/testfile-lto-gcc10.bz2
Binary files differ
diff --git a/tests/testfile-lto-gcc8.bz2 b/tests/testfile-lto-gcc8.bz2
new file mode 100755
index 0000000..cf744d9
--- /dev/null
+++ b/tests/testfile-lto-gcc8.bz2
Binary files differ
diff --git a/tests/testfile-lto-gcc9.bz2 b/tests/testfile-lto-gcc9.bz2
new file mode 100755
index 0000000..df50361
--- /dev/null
+++ b/tests/testfile-lto-gcc9.bz2
Binary files differ
diff --git a/tests/testfilesyms32.bz2 b/tests/testfilesyms32.bz2
new file mode 100644
index 0000000..b3b7812
--- /dev/null
+++ b/tests/testfilesyms32.bz2
Binary files differ
diff --git a/tests/testfilesyms64.bz2 b/tests/testfilesyms64.bz2
new file mode 100644
index 0000000..cdec381
--- /dev/null
+++ b/tests/testfilesyms64.bz2
Binary files differ
diff --git a/version.h b/version.h
index 651f9fb..afcb80d 100644
--- a/version.h
+++ b/version.h
@@ -30,7 +30,7 @@
 #ifndef _ELFUTILS_VERSION_H
 #define _ELFUTILS_VERSION_H	1
 
-#define _ELFUTILS_VERSION	173
+#define _ELFUTILS_VERSION	180
 
 #define _ELFUTILS_PREREQ(major, minor) \
   (_ELFUTILS_VERSION >= ((major) * 1000 + (minor)))