Blob Blame History Raw
From cd2a24f2b66ad51294fad0b08a4d037b2d966d21 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Tue, 6 Aug 2019 18:39:46 +0200
Subject: [PATCH] dwelf_elf_e_machine_string backport for 0.176 - eu-readelf
 only.

---
 libdwelf/dwelf_elf_e_machine_string.c   | 404 ++++++++++++++++++++++++
 src/Makefile.am                         |   2 +
 src/readelf.c                           |   9 +-
 tests/Makefile.am                       |  11 +-
 tests/dwelf_elf_e_machine_string_test.c |  66 ++++
 tests/run-dwelf_elf_e_machine_string.sh |  31 ++
 6 files changed, 519 insertions(+), 4 deletions(-)
 create mode 100644 libdwelf/dwelf_elf_e_machine_string.c
 create mode 100644 tests/dwelf_elf_e_machine_string_test.c
 create mode 100755 tests/run-dwelf_elf_e_machine_string.sh

diff --git a/libdwelf/dwelf_elf_e_machine_string.c b/libdwelf/dwelf_elf_e_machine_string.c
new file mode 100644
index 00000000..20f33173
--- /dev/null
+++ b/libdwelf/dwelf_elf_e_machine_string.c
@@ -0,0 +1,404 @@
+/* Returns a human readable description of an ELF header e_machine value.
+   Copyright (C) 2019 Red Hat, Inc.
+   This file is part of elfutils.
+
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of either
+
+     * the GNU Lesser General Public License as published by the Free
+       Software Foundation; either version 3 of the License, or (at
+       your option) any later version
+
+   or
+
+     * the GNU General Public License as published by the Free
+       Software Foundation; either version 2 of the License, or (at
+       your option) any later version
+
+   or both in parallel, as here.
+
+   elfutils is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received copies of the GNU General Public License and
+   the GNU Lesser General Public License along with this program.  If
+   not, see <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "libdwelf.h"
+
+
+const char *
+dwelf_elf_e_machine_string (int machine)
+{
+  switch (machine)
+    {
+    case EM_NONE:
+      return "None";
+    case EM_M32:
+      return "WE32100";
+    case EM_SPARC:
+      return "SPARC";
+    case EM_386:
+      return "Intel 80386";
+    case EM_68K:
+      return "M68K";
+    case EM_88K:
+      return "M88K";
+    case EM_IAMCU:
+      return "Intel MCU";
+    case EM_860:
+      return "Intel 80860";
+    case EM_MIPS:
+      return "MIPS R3000";
+    case EM_S370:
+      return "IBM System/370";
+    case EM_MIPS_RS3_LE:
+      return "MIPS R3000";
+    case EM_PARISC:
+      return "HPPA";
+    case EM_VPP500:
+      return "Fujitsu VPP500";
+    case EM_SPARC32PLUS:
+      return "SPARC v8+";
+    case EM_960:
+      return "Intel 80960";
+    case EM_PPC:
+      return "PowerPC";
+    case EM_PPC64:
+      return "PowerPC64";
+    case EM_S390:
+      return "IBM S/390";
+    case EM_SPU:
+      return "IBM SPU/SPC";
+    case EM_V800:
+      return "NEC V800";
+    case EM_FR20:
+      return "Fujitsu FR20";
+    case EM_RH32:
+      return "TRW RH-32";
+    case EM_RCE:
+      return "Motorola RCE";
+    case EM_ARM:
+      return "ARM";
+    case EM_FAKE_ALPHA:
+      return "Digital Alpha";
+    case EM_SH:
+      return "SH";
+    case EM_SPARCV9:
+      return "SPARC v9";
+    case EM_TRICORE:
+      return "Siemens Tricore";
+    case EM_ARC:
+      return "ARC";
+    case EM_H8_300:
+      return "H8/300";
+    case EM_H8_300H:
+      return "H8/300H";
+    case EM_H8S:
+      return "H8S";
+    case EM_H8_500:
+      return "H8/500";
+    case EM_IA_64:
+      return "Intel IA-64";
+    case EM_MIPS_X:
+      return "Stanford MIPS-X";
+    case EM_COLDFIRE:
+      return "Motorola Coldfire";
+    case EM_68HC12:
+      return "Motorola M68HC12";
+    case EM_MMA:
+      return "Fujitsu MMA Multimedia Accelerator";
+    case EM_PCP:
+      return "Siemens PCP";
+    case EM_NCPU:
+      return "Sony nCPU embeded RISC";
+    case EM_NDR1:
+      return "Denso NDR1 microprocessor";
+    case EM_STARCORE:
+      return "Motorola Star*Core processor";
+    case EM_ME16:
+      return "Toyota ME16 processor";
+    case EM_ST100:
+      return "STMicroelectronic ST100";
+    case EM_TINYJ:
+      return "Advanced Logic Corporation Tinyj";
+    case EM_X86_64:
+      return "AMD x86-64";
+    case EM_PDSP:
+      return "Sony DSP Processor";
+    case EM_PDP10:
+      return "Digital PDP-10";
+    case EM_PDP11:
+      return "Digital PDP-11";
+    case EM_FX66:
+      return "Siemens FX66 microcontroller";
+    case EM_ST9PLUS:
+      return "STMicroelectronics ST9+";
+    case EM_ST7:
+      return "STMicroelectronics ST7";
+    case EM_68HC16:
+      return "Motorola MC68HC16 microcontroller";
+    case EM_68HC11:
+      return "Motorola MC68HC11 microcontroller";
+    case EM_68HC08:
+      return "Motorola MC68HC08 microcontroller";
+    case EM_68HC05:
+      return "Motorola MC68HC05 microcontroller";
+    case EM_SVX:
+      return "Silicon Graphics SVx";
+    case EM_ST19:
+      return "STMicroelectronics ST19";
+    case EM_VAX:
+      return "Digital VAX";
+    case EM_CRIS:
+      return "Axis Communications 32-bit embedded processor";
+    case EM_JAVELIN:
+      return "Infineon Technologies 32-bit embedded processor";
+    case EM_FIREPATH:
+      return "Element 14 64-bit DSP Processor";
+    case EM_ZSP:
+      return "LSI Logic 16-bit DSP Processor";
+    case EM_MMIX:
+      return "Donald Knuth's educational 64-bit processor";
+    case EM_HUANY:
+      return "Harvard University machine-independent object";
+    case EM_PRISM:
+      return "SiTera Prism";
+    case EM_AVR:
+      return "Atmel AVR 8-bit microcontroller";
+    case EM_FR30:
+      return "Fujitsu FR30";
+    case EM_D10V:
+      return "Mitsubishi D10V";
+    case EM_D30V:
+      return "Mitsubishi D30V";
+    case EM_V850:
+      return "NEC v850";
+    case EM_M32R:
+      return "Mitsubishi M32R";
+    case EM_MN10300:
+      return "Matsushita MN10300";
+    case EM_MN10200:
+      return "Matsushita MN10200";
+    case EM_PJ:
+      return "picoJava";
+    case EM_OPENRISC:
+      return "OpenRISC";
+    case EM_ARC_COMPACT:
+      return "ARC International ARCompact";
+    case EM_XTENSA:
+      return "Tensilica Xtensa Architecture";
+    case EM_VIDEOCORE:
+      return "Alphamosaic VideoCore";
+    case EM_TMM_GPP:
+      return "Thompson Multimedia General Purpose Processor";
+    case EM_NS32K:
+      return "National Semiconductor 32000";
+    case EM_TPC:
+      return "Tenor Network TPC";
+    case EM_SNP1K:
+      return "Trebia SNP 1000";
+    case EM_ST200:
+      return "STMicroelectronics ST200";
+    case EM_IP2K:
+      return "Ubicom IP2xxx";
+    case EM_MAX:
+      return "MAX processor";
+    case EM_CR:
+      return "National Semiconductor CompactRISC";
+    case EM_F2MC16:
+      return "Fujitsu F2MC16";
+    case EM_MSP430:
+      return "Texas Instruments msp430";
+    case EM_BLACKFIN:
+      return "Analog Devices Blackfin DSP";
+    case EM_SE_C33:
+      return "Seiko Epson S1C33";
+    case EM_SEP:
+      return "Sharp embedded microprocessor";
+    case EM_ARCA:
+      return "Arca RISC";
+    case EM_UNICORE:
+      return "Unicore";
+    case EM_EXCESS:
+      return "eXcess configurable CPU";
+    case EM_DXP:
+      return "Icera Semiconductor Deep Execution Processor";
+    case EM_ALTERA_NIOS2:
+      return "Altera Nios II";
+    case EM_CRX:
+      return "National Semiconductor CompactRISC CRX";
+    case EM_XGATE:
+      return "Motorola XGATE";
+    case EM_C166:
+      return "Infineon C16x/XC16x";
+    case EM_M16C:
+      return "Renesas M16C";
+    case EM_DSPIC30F:
+      return "Microchip Technology dsPIC30F";
+    case EM_CE:
+      return "Freescale Communication Engine RISC";
+    case EM_M32C:
+      return "Renesas M32C";
+    case EM_TSK3000:
+      return "Altium TSK3000";
+    case EM_RS08:
+      return "Freescale RS08";
+    case EM_SHARC:
+      return "Analog Devices SHARC";
+    case EM_ECOG2:
+      return "Cyan Technology eCOG2";
+    case EM_SCORE7:
+      return "Sunplus S+core7 RISC";
+    case EM_DSP24:
+      return "New Japan Radio (NJR) 24-bit DSP";
+    case EM_VIDEOCORE3:
+      return "Broadcom VideoCore III";
+    case EM_LATTICEMICO32:
+      return "RISC for Lattice FPGA";
+    case EM_SE_C17:
+      return "Seiko Epson C17";
+    case EM_TI_C6000:
+      return "Texas Instruments TMS320C6000 DSP";
+    case EM_TI_C2000:
+      return "Texas Instruments TMS320C2000 DSP";
+    case EM_TI_C5500:
+      return "Texas Instruments TMS320C55x DSP";
+    case EM_TI_ARP32:
+      return "Texas Instruments Application Specific RISC";
+    case EM_TI_PRU:
+      return "Texas Instruments Programmable Realtime Unit";
+    case EM_MMDSP_PLUS:
+      return "STMicroelectronics 64bit VLIW DSP";
+    case EM_CYPRESS_M8C:
+      return "Cypress M8C";
+    case EM_R32C:
+      return "Renesas R32C";
+    case EM_TRIMEDIA:
+      return "NXP Semiconductors TriMedia";
+    case EM_QDSP6:
+      return "QUALCOMM DSP6";
+    case EM_8051:
+      return "Intel 8051 and variants";
+    case EM_STXP7X:
+      return "STMicroelectronics STxP7x";
+    case EM_NDS32:
+      return "Andes Technology compact code size embeded RISC";
+    case EM_ECOG1X:
+      return "Cyan Technology eCOG1X";
+    case EM_MAXQ30:
+      return "Dallas Semicondutor MAXQ30";
+    case EM_XIMO16:
+      return "New Japan Radio (NJR) 16-bit DSP";
+    case EM_MANIK:
+      return "M2000 Reconfigurable RISC";
+    case EM_CRAYNV2:
+      return "Cray NV2 vector architecture";
+    case EM_RX:
+      return "Renesas RX";
+    case EM_METAG:
+      return "Imagination Technologies META";
+    case EM_MCST_ELBRUS:
+      return "MCST Elbrus";
+    case EM_ECOG16:
+      return "Cyan Technology eCOG16";
+    case EM_CR16:
+      return "National Semiconductor CompactRISC";
+    case EM_ETPU:
+      return "Freescale Extended Time Processing Unit";
+    case EM_SLE9X:
+      return "Infineon Technologies SLE9X";
+    case EM_L10M:
+      return "Intel L10M";
+    case EM_K10M:
+      return "Intel K10M";
+    case EM_AARCH64:
+      return "AARCH64";
+    case EM_AVR32:
+      return "Amtel AVR32";
+    case EM_STM8:
+      return "STMicroelectronics STM8";
+    case EM_TILE64:
+      return "Tilera TILE64";
+    case EM_TILEPRO:
+      return "Tilera TILEPro";
+    case EM_MICROBLAZE:
+      return "Xilinx MicroBlaze";
+    case EM_CUDA:
+      return "NVIDIA CUDA";
+    case EM_TILEGX:
+      return "Tilera TILE-Gx";
+    case EM_CLOUDSHIELD:
+      return "CloudShield";
+    case EM_COREA_1ST:
+      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_OPEN8:
+      return "Open8 RISC";
+    case EM_RL78:
+      return "Renesas RL78";
+    case EM_VIDEOCORE5:
+      return "Broadcom VideoCore V";
+    case EM_78KOR:
+      return "Renesas 78KOR";
+    case EM_56800EX:
+      return "Freescale 56800EX DSC";
+    case EM_BA1:
+      return "Beyond BA1";
+    case EM_BA2:
+      return "Beyond BA2";
+    case EM_XCORE:
+      return "XMOS xCORE";
+    case EM_MCHP_PIC:
+      return "Microchip 8-bit PIC";
+    case EM_KM32:
+      return "KM211 KM32";
+    case EM_KMX32:
+      return "KM211 KMX32";
+    case EM_EMX16:
+      return "KM211 KMX16";
+    case EM_EMX8:
+      return "KM211 KMX8";
+    case EM_KVARC:
+      return "KM211 KVARC";
+    case EM_CDP:
+      return "Paneve CDP";
+    case EM_COGE:
+      return "Cognitive Smart Memory Processor";
+    case EM_COOL:
+      return "Bluechip CoolEngine";
+    case EM_NORC:
+      return "Nanoradio Optimized RISC";
+    case EM_CSR_KALIMBA:
+      return "CSR Kalimba";
+    case EM_Z80:
+      return "Zilog Z80";
+    case EM_VISIUM:
+      return "CDS VISIUMcore";
+    case EM_FT32:
+      return "FTDI Chip FT32";
+    case EM_MOXIE:
+      return "Moxie";
+    case EM_AMDGPU:
+      return "AMD GPU";
+    case EM_RISCV:
+      return "RISC-V";
+    case EM_BPF:
+      return "BPF";
+
+    case EM_ALPHA:
+      return "Alpha";
+
+    default:
+      return NULL;
+    }
+}
diff --git a/src/Makefile.am b/src/Makefile.am
index 2b1c0dcb..0bb20804 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -67,6 +67,8 @@ ranlib_no_Wstack_usage = yes
 ar_no_Wstack_usage = yes
 unstrip_no_Wstack_usage = yes
 
+readelf_SOURCES = readelf.c ../libdwelf/dwelf_elf_e_machine_string.c
+
 readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
 nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl \
 	   $(demanglelib)
diff --git a/src/readelf.c b/src/readelf.c
index 33706bde..1db88393 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -57,6 +57,8 @@
 
 #include "../libdw/known-dwarf.h"
 
+extern const char *dwelf_elf_e_machine_string (int machine);
+
 #ifdef __linux__
 #define CORE_SIGILL  SIGILL
 #define CORE_SIGBUS  SIGBUS
@@ -1070,7 +1072,12 @@ print_ehdr (Ebl *ebl, GElf_Ehdr *ehdr)
   fputs_unlocked (gettext ("  Type:                              "), stdout);
   print_file_type (ehdr->e_type);
 
-  printf (gettext ("  Machine:                           %s\n"), ebl->name);
+  const char *machine = dwelf_elf_e_machine_string (ehdr->e_machine);
+  if (machine != NULL)
+    printf (gettext ("  Machine:                           %s\n"), machine);
+  else
+    printf (gettext ("  Machine:                           <unknown>: 0x%x\n"),
+	    ehdr->e_machine);
 
   printf (gettext ("  Version:                           %d %s\n"),
 	  ehdr->e_version,
diff --git a/tests/dwelf_elf_e_machine_string_test.c b/tests/dwelf_elf_e_machine_string_test.c
new file mode 100644
index 00000000..2f14d704
--- /dev/null
+++ b/tests/dwelf_elf_e_machine_string_test.c
@@ -0,0 +1,66 @@
+/* Test program for dwelf_elf_e_machine_string
+   Copyright (C) 2019 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/>.  */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <assert.h>
+#include <errno.h>
+#include <inttypes.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <string.h>
+#include <unistd.h>
+
+#include ELFUTILS_HEADER(dwelf)
+
+extern const char *dwelf_elf_e_machine_string (int machine);
+
+int
+main (int argc, char **argv)
+{
+  int i;
+  for (i = 1; i < argc; i++)
+    {
+      long val;
+      int em;
+      const char *machine;
+
+      if (strncmp ("0x", argv[i], 2) == 0)
+	val = strtol (&argv[i][2], NULL, 16);
+      else
+	val = strtol (argv[i], NULL, 10);
+
+      if ((errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
+           || (errno != 0 && val == 0))
+	{
+          perror ("strtol");
+          exit (EXIT_FAILURE);
+	}
+
+      em = val;
+      assert (em == val);
+
+      machine = dwelf_elf_e_machine_string (em);
+      printf ("0x%x %s\n", em, machine);
+      assert (machine != NULL);
+    }
+
+  return 0;
+}
diff --git a/tests/run-dwelf_elf_e_machine_string.sh b/tests/run-dwelf_elf_e_machine_string.sh
new file mode 100755
index 00000000..ba6d0e63
--- /dev/null
+++ b/tests/run-dwelf_elf_e_machine_string.sh
@@ -0,0 +1,31 @@
+#! /bin/bash
+# Test to make sure all EM values in elf.h are recognized
+# Copyright (C) 2019 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
+
+# Get all known EM values from elf.h and pass them through the
+# preprocessor to get the numbers. Call dwelf_elf_e_machine_string on
+# all of them.
+EM_VALUES=$(grep ^\#define\ EM_ ${abs_srcdir}/../libelf/elf.h \
+            | cut -f2 -d\  | cut -f1 | grep -v ^EM_NUM$ | xargs echo)
+# echo "EM_VALUES: $EM_VALUES"
+EM_NUMBERS=$((cat ${abs_srcdir}/../libelf/elf.h; echo "$EM_VALUES") \
+             | gcc -E - | tail -1)
+# echo "EM_NUMBERS: $EM_NUMBERS"
+
+testrun ${abs_top_builddir}/tests/dwelf_elf_e_machine_string $EM_NUMBERS
-- 
2.18.1

--- elfutils-0.176/src/Makefile.in	2019-02-15 16:46:53.000000000 +0100
+++ elfutils-0.176.e_machine/src/Makefile.in	2019-08-06 18:47:51.447720727 +0200
@@ -165,8 +165,9 @@
 ranlib_OBJECTS = ranlib.$(OBJEXT)
 ranlib_DEPENDENCIES = libar.a $(am__DEPENDENCIES_2) $(libeu) \
 	$(am__DEPENDENCIES_1)
-readelf_SOURCES = readelf.c
-readelf_OBJECTS = readelf.$(OBJEXT)
+am_readelf_OBJECTS = readelf.$(OBJEXT) \
+	dwelf_elf_e_machine_string.$(OBJEXT)
+readelf_OBJECTS = $(am_readelf_OBJECTS)
 readelf_DEPENDENCIES = $(am__DEPENDENCIES_3) $(libebl) \
 	$(am__DEPENDENCIES_2) $(libeu) $(am__DEPENDENCIES_1)
 size_SOURCES = size.c
@@ -235,14 +236,19 @@
 am__maybe_remake_depfiles = depfiles
 am__depfiles_remade = ./$(DEPDIR)/addr2line.Po ./$(DEPDIR)/ar.Po \
 	./$(DEPDIR)/arlib-argp.Po ./$(DEPDIR)/arlib.Po \
-	./$(DEPDIR)/arlib2.Po ./$(DEPDIR)/elfcmp.Po \
-	./$(DEPDIR)/elfcompress.Po ./$(DEPDIR)/elflint.Po \
-	./$(DEPDIR)/findtextrel.Po ./$(DEPDIR)/nm.Po \
-	./$(DEPDIR)/objdump.Po ./$(DEPDIR)/ranlib.Po \
+	./$(DEPDIR)/arlib2.Po \
+	./$(DEPDIR)/dwelf_elf_e_machine_string.Po \
+	./$(DEPDIR)/elfcmp.Po ./$(DEPDIR)/elfcompress.Po \
+	./$(DEPDIR)/elflint.Po ./$(DEPDIR)/findtextrel.Po \
+	./$(DEPDIR)/nm.Po ./$(DEPDIR)/objdump.Po ./$(DEPDIR)/ranlib.Po \
 	./$(DEPDIR)/readelf.Po ./$(DEPDIR)/size.Po \
 	./$(DEPDIR)/stack.Po ./$(DEPDIR)/strings.Po \
 	./$(DEPDIR)/strip.Po ./$(DEPDIR)/unstrip.Po
 am__mv = mv -f
+AM_V_lt = $(am__v_lt_@AM_V@)
+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+am__v_lt_0 = --silent
+am__v_lt_1 = 
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
 AM_V_CC = $(am__v_CC_@AM_V@)
@@ -256,11 +262,11 @@
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
 SOURCES = $(libar_a_SOURCES) addr2line.c ar.c elfcmp.c elfcompress.c \
-	elflint.c findtextrel.c nm.c objdump.c ranlib.c readelf.c \
-	size.c stack.c strings.c strip.c unstrip.c
+	elflint.c findtextrel.c nm.c objdump.c ranlib.c \
+	$(readelf_SOURCES) size.c stack.c strings.c strip.c unstrip.c
 DIST_SOURCES = $(libar_a_SOURCES) addr2line.c ar.c elfcmp.c \
 	elfcompress.c elflint.c findtextrel.c nm.c objdump.c ranlib.c \
-	readelf.c size.c stack.c strings.c strip.c unstrip.c
+	$(readelf_SOURCES) size.c stack.c strings.c strip.c unstrip.c
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -490,6 +496,7 @@
 ranlib_no_Wstack_usage = yes
 ar_no_Wstack_usage = yes
 unstrip_no_Wstack_usage = yes
+readelf_SOURCES = readelf.c ../libdwelf/dwelf_elf_e_machine_string.c
 readelf_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl
 nm_LDADD = $(libdw) $(libebl) $(libelf) $(libeu) $(argp_LDADD) -ldl \
 	   $(demanglelib)
@@ -713,6 +720,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arlib-argp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arlib.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arlib2.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelf_elf_e_machine_string.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfcmp.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfcompress.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elflint.Po@am__quote@ # am--include-marker
@@ -747,6 +755,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
+dwelf_elf_e_machine_string.o: ../libdwelf/dwelf_elf_e_machine_string.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dwelf_elf_e_machine_string.o -MD -MP -MF $(DEPDIR)/dwelf_elf_e_machine_string.Tpo -c -o dwelf_elf_e_machine_string.o `test -f '../libdwelf/dwelf_elf_e_machine_string.c' || echo '$(srcdir)/'`../libdwelf/dwelf_elf_e_machine_string.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/dwelf_elf_e_machine_string.Tpo $(DEPDIR)/dwelf_elf_e_machine_string.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libdwelf/dwelf_elf_e_machine_string.c' object='dwelf_elf_e_machine_string.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dwelf_elf_e_machine_string.o `test -f '../libdwelf/dwelf_elf_e_machine_string.c' || echo '$(srcdir)/'`../libdwelf/dwelf_elf_e_machine_string.c
+
+dwelf_elf_e_machine_string.obj: ../libdwelf/dwelf_elf_e_machine_string.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dwelf_elf_e_machine_string.obj -MD -MP -MF $(DEPDIR)/dwelf_elf_e_machine_string.Tpo -c -o dwelf_elf_e_machine_string.obj `if test -f '../libdwelf/dwelf_elf_e_machine_string.c'; then $(CYGPATH_W) '../libdwelf/dwelf_elf_e_machine_string.c'; else $(CYGPATH_W) '$(srcdir)/../libdwelf/dwelf_elf_e_machine_string.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/dwelf_elf_e_machine_string.Tpo $(DEPDIR)/dwelf_elf_e_machine_string.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libdwelf/dwelf_elf_e_machine_string.c' object='dwelf_elf_e_machine_string.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dwelf_elf_e_machine_string.obj `if test -f '../libdwelf/dwelf_elf_e_machine_string.c'; then $(CYGPATH_W) '../libdwelf/dwelf_elf_e_machine_string.c'; else $(CYGPATH_W) '$(srcdir)/../libdwelf/dwelf_elf_e_machine_string.c'; fi`
+
 ID: $(am__tagged_files)
 	$(am__define_uniq_tagged_files); mkid -fID $$unique
 tags: tags-am
@@ -881,6 +903,7 @@
 	-rm -f ./$(DEPDIR)/arlib-argp.Po
 	-rm -f ./$(DEPDIR)/arlib.Po
 	-rm -f ./$(DEPDIR)/arlib2.Po
+	-rm -f ./$(DEPDIR)/dwelf_elf_e_machine_string.Po
 	-rm -f ./$(DEPDIR)/elfcmp.Po
 	-rm -f ./$(DEPDIR)/elfcompress.Po
 	-rm -f ./$(DEPDIR)/elflint.Po
@@ -944,6 +967,7 @@
 	-rm -f ./$(DEPDIR)/arlib-argp.Po
 	-rm -f ./$(DEPDIR)/arlib.Po
 	-rm -f ./$(DEPDIR)/arlib2.Po
+	-rm -f ./$(DEPDIR)/dwelf_elf_e_machine_string.Po
 	-rm -f ./$(DEPDIR)/elfcmp.Po
 	-rm -f ./$(DEPDIR)/elfcompress.Po
 	-rm -f ./$(DEPDIR)/elflint.Po
diff -ur elfutils-0.176/tests/Makefile.am elfutils-0.176.e_machine/tests/Makefile.am
--- elfutils-0.176/tests/Makefile.am	2019-08-06 18:55:16.684204039 +0200
+++ elfutils-0.176.e_machine/tests/Makefile.am	2019-08-06 18:46:41.154676407 +0200
@@ -60,7 +60,8 @@
 		  fillfile dwarf_default_lower_bound dwarf-die-addr-die \
 		  get-units-invalid get-units-split attr-integrate-skel \
 		  all-dwarf-ranges unit-info next_cfi \
-		  elfcopy addsections xlate_notes elfrdwrnop
+		  elfcopy addsections xlate_notes elfrdwrnop \
+		  dwelf_elf_e_machine_string
 
 asm_TESTS = asm-tst1 asm-tst2 asm-tst3 asm-tst4 asm-tst5 \
 	    asm-tst6 asm-tst7 asm-tst8 asm-tst9
@@ -160,7 +161,8 @@
 	run-reverse-sections.sh run-reverse-sections-self.sh \
 	run-copyadd-sections.sh run-copymany-sections.sh \
 	run-typeiter-many.sh run-strip-test-many.sh \
-	run-strip-version.sh run-xlate-note.sh
+	run-strip-version.sh run-xlate-note.sh \
+	run-dwelf_elf_e_machine_string.sh
 
 if !BIARCH
 export ELFUTILS_DISABLE_BIARCH = 1
@@ -426,7 +428,8 @@
 	     testfile-debug-rel-ppc64-z.o.bz2 \
 	     testfile-debug-rel-ppc64.o.bz2 \
 	     run-strip-version.sh testfile-version.bz2 \
-	     run-xlate-note.sh
+	     run-xlate-note.sh \
+	     run-dwelf_elf_e_machine_string.sh
 
 if USE_VALGRIND
 valgrind_cmd='valgrind -q --leak-check=full --error-exitcode=1'
@@ -599,6 +602,10 @@
 xlate_notes_LDADD = $(libelf)
 elfrdwrnop_LDADD = $(libelf)
 
+dwelf_elf_e_machine_string_SOURCES = dwelf_elf_e_machine_string_test.c \
+	../libdwelf/dwelf_elf_e_machine_string.c
+dwelf_elf_e_machine_string_LDADD = $(libelf) $(libdw)
+
 # We want to test the libelf header against the system elf.h header.
 # Don't include any -I CPPFLAGS. Except when we install our own elf.h.
 if !INSTALL_ELFH
diff -ur elfutils-0.176/tests/Makefile.in elfutils-0.176.e_machine/tests/Makefile.in
--- elfutils-0.176/tests/Makefile.in	2019-08-06 18:55:16.689203989 +0200
+++ elfutils-0.176.e_machine/tests/Makefile.in	2019-08-06 18:47:51.876714894 +0200
@@ -132,7 +132,8 @@
 	attr-integrate-skel$(EXEEXT) all-dwarf-ranges$(EXEEXT) \
 	unit-info$(EXEEXT) next_cfi$(EXEEXT) elfcopy$(EXEEXT) \
 	addsections$(EXEEXT) xlate_notes$(EXEEXT) elfrdwrnop$(EXEEXT) \
-	$(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_4)
+	dwelf_elf_e_machine_string$(EXEEXT) $(am__EXEEXT_1) \
+	$(am__EXEEXT_2) $(am__EXEEXT_4)
 @BIARCH_TRUE@am__append_5 = backtrace-child-biarch
 TESTS = run-arextract.sh run-arsymtest.sh run-ar.sh newfile$(EXEEXT) \
 	test-nlist$(EXEEXT) update1$(EXEEXT) update2$(EXEEXT) \
@@ -213,7 +214,8 @@
 	run-reverse-sections-self.sh run-copyadd-sections.sh \
 	run-copymany-sections.sh run-typeiter-many.sh \
 	run-strip-test-many.sh run-strip-version.sh run-xlate-note.sh \
-	$(am__EXEEXT_2) $(am__append_8) $(am__EXEEXT_5)
+	run-dwelf_elf_e_machine_string.sh $(am__EXEEXT_2) \
+	$(am__append_8) $(am__EXEEXT_5)
 @STANDALONE_FALSE@am__append_6 = msg_tst system-elf-libelf-test
 @STANDALONE_FALSE@am__append_7 = msg_tst system-elf-libelf-test
 @LZMA_TRUE@am__append_8 = run-readelf-s.sh run-dwflsyms.sh
@@ -389,6 +391,13 @@
 dwarfcfi_SOURCES = dwarfcfi.c
 dwarfcfi_OBJECTS = dwarfcfi.$(OBJEXT)
 dwarfcfi_DEPENDENCIES = $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_2)
+am_dwelf_elf_e_machine_string_OBJECTS =  \
+	dwelf_elf_e_machine_string_test.$(OBJEXT) \
+	dwelf_elf_e_machine_string.$(OBJEXT)
+dwelf_elf_e_machine_string_OBJECTS =  \
+	$(am_dwelf_elf_e_machine_string_OBJECTS)
+dwelf_elf_e_machine_string_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+	$(am__DEPENDENCIES_4)
 dwelfgnucompressed_SOURCES = dwelfgnucompressed.c
 dwelfgnucompressed_OBJECTS = dwelfgnucompressed.$(OBJEXT)
 dwelfgnucompressed_DEPENDENCIES = $(am__DEPENDENCIES_2) \
@@ -653,7 +662,10 @@
 	./$(DEPDIR)/dwarf-getmacros.Po ./$(DEPDIR)/dwarf-getstring.Po \
 	./$(DEPDIR)/dwarf-ranges.Po \
 	./$(DEPDIR)/dwarf_default_lower_bound.Po \
-	./$(DEPDIR)/dwarfcfi.Po ./$(DEPDIR)/dwelfgnucompressed.Po \
+	./$(DEPDIR)/dwarfcfi.Po \
+	./$(DEPDIR)/dwelf_elf_e_machine_string.Po \
+	./$(DEPDIR)/dwelf_elf_e_machine_string_test.Po \
+	./$(DEPDIR)/dwelfgnucompressed.Po \
 	./$(DEPDIR)/dwfl-addr-sect.Po \
 	./$(DEPDIR)/dwfl-bug-addr-overflow.Po \
 	./$(DEPDIR)/dwfl-bug-fd-leak.Po \
@@ -717,15 +729,15 @@
 	backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
 	deleted.c deleted-lib.c dwarf-die-addr-die.c dwarf-getmacros.c \
 	dwarf-getstring.c dwarf-ranges.c dwarf_default_lower_bound.c \
-	dwarfcfi.c dwelfgnucompressed.c dwfl-addr-sect.c \
-	dwfl-bug-addr-overflow.c dwfl-bug-fd-leak.c \
-	dwfl-bug-getmodules.c dwfl-bug-report.c dwfl-proc-attach.c \
-	dwfl-report-elf-align.c dwfllines.c dwflmodtest.c dwflsyms.c \
-	early-offscn.c ecp.c elfcopy.c elfgetchdr.c elfgetzdata.c \
-	elfputzdata.c elfrdwrnop.c elfshphehdr.c elfstrmerge.c \
-	elfstrtab.c emptyfile.c fillfile.c find-prologues.c \
-	funcretval.c funcscopes.c get-aranges.c get-files.c \
-	get-lines.c get-pubnames.c get-units-invalid.c \
+	dwarfcfi.c $(dwelf_elf_e_machine_string_SOURCES) \
+	dwelfgnucompressed.c dwfl-addr-sect.c dwfl-bug-addr-overflow.c \
+	dwfl-bug-fd-leak.c dwfl-bug-getmodules.c dwfl-bug-report.c \
+	dwfl-proc-attach.c dwfl-report-elf-align.c dwfllines.c \
+	dwflmodtest.c dwflsyms.c early-offscn.c ecp.c elfcopy.c \
+	elfgetchdr.c elfgetzdata.c elfputzdata.c elfrdwrnop.c \
+	elfshphehdr.c elfstrmerge.c elfstrtab.c emptyfile.c fillfile.c \
+	find-prologues.c funcretval.c funcscopes.c get-aranges.c \
+	get-files.c get-lines.c get-pubnames.c get-units-invalid.c \
 	get-units-split.c getsrc_die.c hash.c line2addr.c \
 	low_high_pc.c msg_tst.c newdata.c newfile.c newscn.c \
 	next-files.c next-lines.c next_cfi.c peel_type.c rdwrmmap.c \
@@ -744,15 +756,15 @@
 	backtrace-dwarf.c buildid.c debugaltlink.c debuglink.c \
 	deleted.c deleted-lib.c dwarf-die-addr-die.c dwarf-getmacros.c \
 	dwarf-getstring.c dwarf-ranges.c dwarf_default_lower_bound.c \
-	dwarfcfi.c dwelfgnucompressed.c dwfl-addr-sect.c \
-	dwfl-bug-addr-overflow.c dwfl-bug-fd-leak.c \
-	dwfl-bug-getmodules.c dwfl-bug-report.c dwfl-proc-attach.c \
-	dwfl-report-elf-align.c dwfllines.c dwflmodtest.c dwflsyms.c \
-	early-offscn.c ecp.c elfcopy.c elfgetchdr.c elfgetzdata.c \
-	elfputzdata.c elfrdwrnop.c elfshphehdr.c elfstrmerge.c \
-	elfstrtab.c emptyfile.c fillfile.c find-prologues.c \
-	funcretval.c funcscopes.c get-aranges.c get-files.c \
-	get-lines.c get-pubnames.c get-units-invalid.c \
+	dwarfcfi.c $(dwelf_elf_e_machine_string_SOURCES) \
+	dwelfgnucompressed.c dwfl-addr-sect.c dwfl-bug-addr-overflow.c \
+	dwfl-bug-fd-leak.c dwfl-bug-getmodules.c dwfl-bug-report.c \
+	dwfl-proc-attach.c dwfl-report-elf-align.c dwfllines.c \
+	dwflmodtest.c dwflsyms.c early-offscn.c ecp.c elfcopy.c \
+	elfgetchdr.c elfgetzdata.c elfputzdata.c elfrdwrnop.c \
+	elfshphehdr.c elfstrmerge.c elfstrtab.c emptyfile.c fillfile.c \
+	find-prologues.c funcretval.c funcscopes.c get-aranges.c \
+	get-files.c get-lines.c get-pubnames.c get-units-invalid.c \
 	get-units-split.c getsrc_die.c hash.c line2addr.c \
 	low_high_pc.c msg_tst.c newdata.c newfile.c newscn.c \
 	next-files.c next-lines.c next_cfi.c peel_type.c rdwrmmap.c \
@@ -1416,7 +1428,8 @@
 	     testfile-debug-rel-ppc64-z.o.bz2 \
 	     testfile-debug-rel-ppc64.o.bz2 \
 	     run-strip-version.sh testfile-version.bz2 \
-	     run-xlate-note.sh
+	     run-xlate-note.sh \
+	     run-dwelf_elf_e_machine_string.sh
 
 @USE_VALGRIND_TRUE@valgrind_cmd = 'valgrind -q --leak-check=full --error-exitcode=1'
 installed_TESTS_ENVIRONMENT = libdir=$(DESTDIR)$(libdir); \
@@ -1572,6 +1585,10 @@
 addsections_LDADD = $(libelf)
 xlate_notes_LDADD = $(libelf)
 elfrdwrnop_LDADD = $(libelf)
+dwelf_elf_e_machine_string_SOURCES = dwelf_elf_e_machine_string_test.c \
+	../libdwelf/dwelf_elf_e_machine_string.c
+
+dwelf_elf_e_machine_string_LDADD = $(libelf) $(libdw)
 
 # We want to test the libelf header against the system elf.h header.
 # Don't include any -I CPPFLAGS. Except when we install our own elf.h.
@@ -1760,6 +1777,10 @@
 	@rm -f dwarfcfi$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dwarfcfi_OBJECTS) $(dwarfcfi_LDADD) $(LIBS)
 
+dwelf_elf_e_machine_string$(EXEEXT): $(dwelf_elf_e_machine_string_OBJECTS) $(dwelf_elf_e_machine_string_DEPENDENCIES) $(EXTRA_dwelf_elf_e_machine_string_DEPENDENCIES) 
+	@rm -f dwelf_elf_e_machine_string$(EXEEXT)
+	$(AM_V_CCLD)$(LINK) $(dwelf_elf_e_machine_string_OBJECTS) $(dwelf_elf_e_machine_string_LDADD) $(LIBS)
+
 dwelfgnucompressed$(EXEEXT): $(dwelfgnucompressed_OBJECTS) $(dwelfgnucompressed_DEPENDENCIES) $(EXTRA_dwelfgnucompressed_DEPENDENCIES) 
 	@rm -f dwelfgnucompressed$(EXEEXT)
 	$(AM_V_CCLD)$(LINK) $(dwelfgnucompressed_OBJECTS) $(dwelfgnucompressed_LDADD) $(LIBS)
@@ -2079,6 +2100,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf-ranges.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarf_default_lower_bound.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwarfcfi.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelf_elf_e_machine_string.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelf_elf_e_machine_string_test.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwelfgnucompressed.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-addr-sect.Po@am__quote@ # am--include-marker
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwfl-bug-addr-overflow.Po@am__quote@ # am--include-marker
@@ -2211,6 +2234,20 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(deleted_lib_so_CFLAGS) $(CFLAGS) -c -o deleted_lib_so-deleted-lib.obj `if test -f 'deleted-lib.c'; then $(CYGPATH_W) 'deleted-lib.c'; else $(CYGPATH_W) '$(srcdir)/deleted-lib.c'; fi`
 
+dwelf_elf_e_machine_string.o: ../libdwelf/dwelf_elf_e_machine_string.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dwelf_elf_e_machine_string.o -MD -MP -MF $(DEPDIR)/dwelf_elf_e_machine_string.Tpo -c -o dwelf_elf_e_machine_string.o `test -f '../libdwelf/dwelf_elf_e_machine_string.c' || echo '$(srcdir)/'`../libdwelf/dwelf_elf_e_machine_string.c
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/dwelf_elf_e_machine_string.Tpo $(DEPDIR)/dwelf_elf_e_machine_string.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libdwelf/dwelf_elf_e_machine_string.c' object='dwelf_elf_e_machine_string.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dwelf_elf_e_machine_string.o `test -f '../libdwelf/dwelf_elf_e_machine_string.c' || echo '$(srcdir)/'`../libdwelf/dwelf_elf_e_machine_string.c
+
+dwelf_elf_e_machine_string.obj: ../libdwelf/dwelf_elf_e_machine_string.c
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dwelf_elf_e_machine_string.obj -MD -MP -MF $(DEPDIR)/dwelf_elf_e_machine_string.Tpo -c -o dwelf_elf_e_machine_string.obj `if test -f '../libdwelf/dwelf_elf_e_machine_string.c'; then $(CYGPATH_W) '../libdwelf/dwelf_elf_e_machine_string.c'; else $(CYGPATH_W) '$(srcdir)/../libdwelf/dwelf_elf_e_machine_string.c'; fi`
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/dwelf_elf_e_machine_string.Tpo $(DEPDIR)/dwelf_elf_e_machine_string.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='../libdwelf/dwelf_elf_e_machine_string.c' object='dwelf_elf_e_machine_string.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dwelf_elf_e_machine_string.obj `if test -f '../libdwelf/dwelf_elf_e_machine_string.c'; then $(CYGPATH_W) '../libdwelf/dwelf_elf_e_machine_string.c'; else $(CYGPATH_W) '$(srcdir)/../libdwelf/dwelf_elf_e_machine_string.c'; fi`
+
 system_elf_libelf_test-system-elf-libelf-test.o: system-elf-libelf-test.c
 @am__fastdepCC_TRUE@	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(system_elf_libelf_test_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system_elf_libelf_test-system-elf-libelf-test.o -MD -MP -MF $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Tpo -c -o system_elf_libelf_test-system-elf-libelf-test.o `test -f 'system-elf-libelf-test.c' || echo '$(srcdir)/'`system-elf-libelf-test.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Tpo $(DEPDIR)/system_elf_libelf_test-system-elf-libelf-test.Po
@@ -3776,6 +3813,13 @@
 	--log-file $$b.log --trs-file $$b.trs \
 	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
 	"$$tst" $(AM_TESTS_FD_REDIRECT)
+run-dwelf_elf_e_machine_string.sh.log: run-dwelf_elf_e_machine_string.sh
+	@p='run-dwelf_elf_e_machine_string.sh'; \
+	b='run-dwelf_elf_e_machine_string.sh'; \
+	$(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+	--log-file $$b.log --trs-file $$b.trs \
+	$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+	"$$tst" $(AM_TESTS_FD_REDIRECT)
 msg_tst.log: msg_tst$(EXEEXT)
 	@p='msg_tst$(EXEEXT)'; \
 	b='msg_tst'; \
@@ -4005,6 +4049,8 @@
 	-rm -f ./$(DEPDIR)/dwarf-ranges.Po
 	-rm -f ./$(DEPDIR)/dwarf_default_lower_bound.Po
 	-rm -f ./$(DEPDIR)/dwarfcfi.Po
+	-rm -f ./$(DEPDIR)/dwelf_elf_e_machine_string.Po
+	-rm -f ./$(DEPDIR)/dwelf_elf_e_machine_string_test.Po
 	-rm -f ./$(DEPDIR)/dwelfgnucompressed.Po
 	-rm -f ./$(DEPDIR)/dwfl-addr-sect.Po
 	-rm -f ./$(DEPDIR)/dwfl-bug-addr-overflow.Po
@@ -4156,6 +4202,8 @@
 	-rm -f ./$(DEPDIR)/dwarf-ranges.Po
 	-rm -f ./$(DEPDIR)/dwarf_default_lower_bound.Po
 	-rm -f ./$(DEPDIR)/dwarfcfi.Po
+	-rm -f ./$(DEPDIR)/dwelf_elf_e_machine_string.Po
+	-rm -f ./$(DEPDIR)/dwelf_elf_e_machine_string_test.Po
 	-rm -f ./$(DEPDIR)/dwelfgnucompressed.Po
 	-rm -f ./$(DEPDIR)/dwfl-addr-sect.Po
 	-rm -f ./$(DEPDIR)/dwfl-bug-addr-overflow.Po