svn commit: r300311 - in head: contrib/elftoolchain/addr2line contrib/elftoolchain/brandelf contrib/elftoolchain/common contrib/elftoolchain/cxxfilt contrib/elftoolchain/elfcopy contrib/elftoolchai...

Ed Maste emaste at FreeBSD.org
Fri May 20 17:24:37 UTC 2016


Author: emaste
Date: Fri May 20 17:24:34 2016
New Revision: 300311
URL: https://svnweb.freebsd.org/changeset/base/300311

Log:
  Update to ELF Tool Chain r3475
  
  Improvements include:
  
   * Add support for reporting and handling a number of new constants in
     various tools, including:
      * CloudABI OSABI
      * DT_TLSDESC_*
      * i386, MIPS, SPARC and amd64 relocations
  
   * C++ demangler bug fixes
  
   * Man page updates
  
   * Improved input validation in several tools
  
  This update also reduces diffs against upstream as a number of fixes
  included in upstream were previously cherry-picked into FreeBSD.
  
  Sponsored by:	The FreeBSD Foundation

Added:
  head/contrib/elftoolchain/libelftc/elftc_reloc_type_str.3
     - copied unchanged from r300228, vendor/elftoolchain/dist/libelftc/elftc_reloc_type_str.3
  head/contrib/elftoolchain/libelftc/elftc_reloc_type_str.c
     - copied unchanged from r300228, vendor/elftoolchain/dist/libelftc/elftc_reloc_type_str.c
Modified:
  head/contrib/elftoolchain/addr2line/addr2line.c
  head/contrib/elftoolchain/brandelf/brandelf.c
  head/contrib/elftoolchain/common/_elftc.h
  head/contrib/elftoolchain/common/elfdefinitions.h
  head/contrib/elftoolchain/cxxfilt/cxxfilt.c
  head/contrib/elftoolchain/elfcopy/ascii.c
  head/contrib/elftoolchain/elfcopy/binary.c
  head/contrib/elftoolchain/elfcopy/elfcopy.1
  head/contrib/elftoolchain/elfcopy/elfcopy.h
  head/contrib/elftoolchain/elfcopy/main.c
  head/contrib/elftoolchain/elfcopy/sections.c
  head/contrib/elftoolchain/elfcopy/segments.c
  head/contrib/elftoolchain/elfcopy/symbols.c
  head/contrib/elftoolchain/elfdump/elfdump.c
  head/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c
  head/contrib/elftoolchain/libdwarf/libdwarf_elf_init.c
  head/contrib/elftoolchain/libelf/_libelf_config.h
  head/contrib/elftoolchain/libelf/elf_data.c
  head/contrib/elftoolchain/libelf/libelf_ar.c
  head/contrib/elftoolchain/libelf/libelf_convert.m4
  head/contrib/elftoolchain/libelftc/Makefile
  head/contrib/elftoolchain/libelftc/libelftc.h
  head/contrib/elftoolchain/libelftc/libelftc_dem_arm.c
  head/contrib/elftoolchain/libelftc/libelftc_dem_gnu2.c
  head/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c
  head/contrib/elftoolchain/libelftc/make-toolchain-version
  head/contrib/elftoolchain/libpe/libpe_section.c
  head/contrib/elftoolchain/libpe/pe.h
  head/contrib/elftoolchain/nm/nm.c
  head/contrib/elftoolchain/readelf/readelf.c
  head/contrib/elftoolchain/size/size.c
  head/contrib/elftoolchain/strings/strings.c
  head/lib/libelftc/Makefile
  head/lib/libelftc/elftc_version.c
Directory Properties:
  head/contrib/elftoolchain/   (props changed)
  head/contrib/elftoolchain/brandelf/   (props changed)
  head/contrib/elftoolchain/elfdump/   (props changed)

Modified: head/contrib/elftoolchain/addr2line/addr2line.c
==============================================================================
--- head/contrib/elftoolchain/addr2line/addr2line.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/addr2line/addr2line.c	Fri May 20 17:24:34 2016	(r300311)
@@ -40,7 +40,7 @@
 #include "uthash.h"
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: addr2line.c 3273 2015-12-11 21:38:57Z kaiwang27 $");
+ELFTC_VCSID("$Id: addr2line.c 3446 2016-05-03 01:31:17Z emaste $");
 
 struct Func {
 	char *name;
@@ -284,7 +284,7 @@ collect_func(Dwarf_Debug dbg, Dwarf_Die 
 		    &de) == DW_DLV_OK)
 			goto add_func;
 
-		/* Skip if no name assoicated with this DIE. */
+		/* Skip if no name associated with this DIE. */
 		goto cont_search;
 
 	add_func:

Modified: head/contrib/elftoolchain/brandelf/brandelf.c
==============================================================================
--- head/contrib/elftoolchain/brandelf/brandelf.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/brandelf/brandelf.c	Fri May 20 17:24:34 2016	(r300311)
@@ -44,7 +44,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: brandelf.c 3354 2016-01-18 21:50:15Z jkoshy $");
+ELFTC_VCSID("$Id: brandelf.c 3440 2016-04-07 14:51:47Z emaste $");
 
 static int elftype(const char *);
 static const char *iselftype(int);
@@ -62,6 +62,7 @@ static struct ELFtypes elftypes[] = {
 	{ "AIX",	ELFOSABI_AIX },
 	{ "ARM",	ELFOSABI_ARM },
 	{ "AROS",	ELFOSABI_AROS },
+	{ "CloudABI",	ELFOSABI_CLOUDABI },
 	{ "FreeBSD",	ELFOSABI_FREEBSD },
 	{ "GNU",	ELFOSABI_GNU },
 	{ "HP/UX",	ELFOSABI_HPUX},

Modified: head/contrib/elftoolchain/common/_elftc.h
==============================================================================
--- head/contrib/elftoolchain/common/_elftc.h	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/common/_elftc.h	Fri May 20 17:24:34 2016	(r300311)
@@ -23,11 +23,11 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: _elftc.h 3244 2015-08-31 19:53:08Z emaste $
+ * $Id: _elftc.h 3446 2016-05-03 01:31:17Z emaste $
  */
 
 /**
- ** Miscellanous definitions needed by multiple components.
+ ** Miscellaneous definitions needed by multiple components.
  **/
 
 #ifndef	_ELFTC_H

Modified: head/contrib/elftoolchain/common/elfdefinitions.h
==============================================================================
--- head/contrib/elftoolchain/common/elfdefinitions.h	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/common/elfdefinitions.h	Fri May 20 17:24:34 2016	(r300311)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: elfdefinitions.h 3392 2016-02-05 19:51:22Z emaste $
+ * $Id: elfdefinitions.h 3455 2016-05-09 13:47:29Z emaste $
  */
 
 /*
@@ -184,6 +184,10 @@ _ELF_DEFINE_DT(DT_ADDRRNGLO,        0x6F
 	"start of range using the d_ptr field")				\
 _ELF_DEFINE_DT(DT_GNU_HASH,	    0x6FFFFEF5UL,			\
 	"GNU style hash tables")					\
+_ELF_DEFINE_DT(DT_TLSDESC_PLT,	    0x6FFFFEF6UL,			\
+	"location of PLT entry for TLS descriptor resolver calls")	\
+_ELF_DEFINE_DT(DT_TLSDESC_GOT,	    0x6FFFFEF7UL,			\
+	"location of GOT entry used by TLS descriptor resolver PLT entry") \
 _ELF_DEFINE_DT(DT_GNU_CONFLICT,     0x6FFFFEF8UL,			\
 	"address of conflict section")					\
 _ELF_DEFINE_DT(DT_GNU_LIBLIST,      0x6FFFFEF9UL,			\
@@ -269,7 +273,7 @@ _ELF_DEFINE_DT(DT_MIPS_DELTA_RELOC, 0x70
 _ELF_DEFINE_DT(DT_MIPS_DELTA_RELOC_NO, 0x7000001CUL,			\
 	"number of entries in DT_MIPS_DELTA_RELOC")			\
 _ELF_DEFINE_DT(DT_MIPS_DELTA_SYM,   0x7000001DUL,			\
-	"Delta symbols refered by Delta relocations")			\
+	"Delta symbols referred by Delta relocations")			\
 _ELF_DEFINE_DT(DT_MIPS_DELTA_SYM_NO, 0x7000001EUL,			\
 	"number of entries in DT_MIPS_DELTA_SYM")			\
 _ELF_DEFINE_DT(DT_MIPS_DELTA_CLASSSYM, 0x70000020UL,			\
@@ -540,6 +544,7 @@ _ELF_DEFINE_EABI(ELFOSABI_NSK,        14
 _ELF_DEFINE_EABI(ELFOSABI_AROS,       15, "Amiga Research OS")		\
 _ELF_DEFINE_EABI(ELFOSABI_FENIXOS,    16,				\
 	"The FenixOS highly scalable multi-core OS")			\
+_ELF_DEFINE_EABI(ELFOSABI_CLOUDABI,   17, "Nuxi CloudABI")		\
 _ELF_DEFINE_EABI(ELFOSABI_ARM_AEABI,  64,				\
 	"ARM specific symbol versioning extensions")			\
 _ELF_DEFINE_EABI(ELFOSABI_ARM,        97, "ARM ABI")			\
@@ -1193,7 +1198,7 @@ _ELF_DEFINE_SHT(SHT_MIPS_ABIFLAGS,   0x7
 	"ABI flags")							\
 _ELF_DEFINE_SHT(SHT_SPARC_GOTDATA,   0x70000000UL,			\
 	"SPARC-specific data")						\
-_ELF_DEFINE_SHT(SHT_AMD64_UNWIND,    0x70000001UL,			\
+_ELF_DEFINE_SHT(SHT_X86_64_UNWIND,   0x70000001UL,			\
 	"unwind tables for the AMD64")					\
 _ELF_DEFINE_SHT(SHT_ORDERED,         0x7FFFFFFFUL,			\
 	"sort entries in the section")					\
@@ -1212,6 +1217,7 @@ enum {
 };
 
 /* Aliases for section types. */
+#define	SHT_AMD64_UNWIND	SHT_X86_64_UNWIND
 #define	SHT_GNU_verdef		SHT_SUNW_verdef
 #define	SHT_GNU_verneed		SHT_SUNW_verneed
 #define	SHT_GNU_versym		SHT_SUNW_versym
@@ -1255,6 +1261,7 @@ _ELF_DEFINE_STT(STT_FILE,            4, 
 _ELF_DEFINE_STT(STT_COMMON,          5, "uninitialized common block")	\
 _ELF_DEFINE_STT(STT_TLS,             6, "thread local storage")		\
 _ELF_DEFINE_STT(STT_LOOS,            10, "start of OS-specific types")	\
+_ELF_DEFINE_STT(STT_GNU_IFUNC,       10, "indirect function")	\
 _ELF_DEFINE_STT(STT_HIOS,            12, "end of OS-specific types")	\
 _ELF_DEFINE_STT(STT_LOPROC,          13,				\
 	"start of processor-specific types")				\
@@ -1402,10 +1409,37 @@ _ELF_DEFINE_RELOC(R_386_RELATIVE,	8)	\
 _ELF_DEFINE_RELOC(R_386_GOTOFF,		9)	\
 _ELF_DEFINE_RELOC(R_386_GOTPC,		10)	\
 _ELF_DEFINE_RELOC(R_386_32PLT,		11)	\
+_ELF_DEFINE_RELOC(R_386_TLS_TPOFF,	14)	\
+_ELF_DEFINE_RELOC(R_386_TLS_IE,		15)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GOTIE,	16)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LE,		17)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GD,		18)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LDM,	19)	\
 _ELF_DEFINE_RELOC(R_386_16,		20)	\
 _ELF_DEFINE_RELOC(R_386_PC16,		21)	\
 _ELF_DEFINE_RELOC(R_386_8,		22)	\
-_ELF_DEFINE_RELOC(R_386_PC8,		23)
+_ELF_DEFINE_RELOC(R_386_PC8,		23)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GD_32,	24)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GD_PUSH,	25)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GD_CALL,	26)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GD_POP,	27)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LDM_32,	28)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LDM_PUSH,	29)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LDM_CALL,	30)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LDM_POP,	31)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LDO_32,	32)	\
+_ELF_DEFINE_RELOC(R_386_TLS_IE_32,	33)	\
+_ELF_DEFINE_RELOC(R_386_TLS_LE_32,	34)	\
+_ELF_DEFINE_RELOC(R_386_TLS_DTPMOD32,	35)	\
+_ELF_DEFINE_RELOC(R_386_TLS_DTPOFF32,	36)	\
+_ELF_DEFINE_RELOC(R_386_TLS_TPOFF32,	37)	\
+_ELF_DEFINE_RELOC(R_386_SIZE32,		38)	\
+_ELF_DEFINE_RELOC(R_386_TLS_GOTDESC,	39)	\
+_ELF_DEFINE_RELOC(R_386_TLS_DESC_CALL,	40)	\
+_ELF_DEFINE_RELOC(R_386_TLS_DESC,	41)	\
+_ELF_DEFINE_RELOC(R_386_IRELATIVE,	42)	\
+_ELF_DEFINE_RELOC(R_386_GOT32X,		43)
+
 
 /*
  */
@@ -1795,11 +1829,18 @@ _ELF_DEFINE_RELOC(R_MIPS_GOT16,			9)	\
 _ELF_DEFINE_RELOC(R_MIPS_PC16,			10)	\
 _ELF_DEFINE_RELOC(R_MIPS_CALL16,		11)	\
 _ELF_DEFINE_RELOC(R_MIPS_GPREL32,		12)	\
+_ELF_DEFINE_RELOC(R_MIPS_SHIFT5,		16)	\
+_ELF_DEFINE_RELOC(R_MIPS_SHIFT6,		17)	\
 _ELF_DEFINE_RELOC(R_MIPS_64,			18)	\
-_ELF_DEFINE_RELOC(R_MIPS_GOTHI16,		21)	\
-_ELF_DEFINE_RELOC(R_MIPS_GOTLO16,		22)	\
+_ELF_DEFINE_RELOC(R_MIPS_GOT_DISP,		19)	\
+_ELF_DEFINE_RELOC(R_MIPS_GOT_PAGE,		20)	\
+_ELF_DEFINE_RELOC(R_MIPS_GOT_OFST,		21)	\
+_ELF_DEFINE_RELOC(R_MIPS_GOT_HI16,		22)	\
+_ELF_DEFINE_RELOC(R_MIPS_GOT_LO16,		23)	\
+_ELF_DEFINE_RELOC(R_MIPS_SUB,			24)	\
 _ELF_DEFINE_RELOC(R_MIPS_CALLHI16,		30)	\
 _ELF_DEFINE_RELOC(R_MIPS_CALLLO16,		31)	\
+_ELF_DEFINE_RELOC(R_MIPS_JALR,			37)	\
 _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD32,		38)	\
 _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL32,		39)	\
 _ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD64,		40)	\
@@ -2095,6 +2136,7 @@ _ELF_DEFINE_RELOC(R_SPARC_PC_HM10,	38)	\
 _ELF_DEFINE_RELOC(R_SPARC_PC_LM22,	39)	\
 _ELF_DEFINE_RELOC(R_SPARC_WDISP16,	40)	\
 _ELF_DEFINE_RELOC(R_SPARC_WDISP19,	41)	\
+_ELF_DEFINE_RELOC(R_SPARC_GLOB_JMP,	42)	\
 _ELF_DEFINE_RELOC(R_SPARC_7,		43)	\
 _ELF_DEFINE_RELOC(R_SPARC_5,		44)	\
 _ELF_DEFINE_RELOC(R_SPARC_6,		45)	\
@@ -2108,6 +2150,30 @@ _ELF_DEFINE_RELOC(R_SPARC_L44,		52)	\
 _ELF_DEFINE_RELOC(R_SPARC_REGISTER,	53)	\
 _ELF_DEFINE_RELOC(R_SPARC_UA64,		54)	\
 _ELF_DEFINE_RELOC(R_SPARC_UA16,		55)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_HI22,	56)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_LO10,	57)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_ADD,	58)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_GD_CALL,	59)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_HI22,	60)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_LO10,	61)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_ADD,	62)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDM_CALL,	63)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDO_HIX22, 64)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDO_LOX10, 65)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LDO_ADD,	66)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_HI22,	67)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_LO10,	68)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_LD,	69)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_LDX,	70)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_IE_ADD,	71)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LE_HIX22,	72)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_LE_LOX10,	73)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPMOD32,	74)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPMOD64,	75)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPOFF32,	76)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_DTPOFF64,	77)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_TPOFF32,	78)	\
+_ELF_DEFINE_RELOC(R_SPARC_TLS_TPOFF64,	79)	\
 _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_HIX22, 80)	\
 _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_LOX10, 81)	\
 _ELF_DEFINE_RELOC(R_SPARC_GOTDATA_OP_HIX22, 82)	\
@@ -2153,7 +2219,10 @@ _ELF_DEFINE_RELOC(R_X86_64_SIZE64,	33)	\
 _ELF_DEFINE_RELOC(R_X86_64_GOTPC32_TLSDESC, 34)	\
 _ELF_DEFINE_RELOC(R_X86_64_TLSDESC_CALL, 35)	\
 _ELF_DEFINE_RELOC(R_X86_64_TLSDESC,	36)	\
-_ELF_DEFINE_RELOC(R_X86_64_IRELATIVE,	37)
+_ELF_DEFINE_RELOC(R_X86_64_IRELATIVE,	37)	\
+_ELF_DEFINE_RELOC(R_X86_64_RELATIVE64,	38)	\
+_ELF_DEFINE_RELOC(R_X86_64_GOTPCRELX,	41)	\
+_ELF_DEFINE_RELOC(R_X86_64_REX_GOTPCRELX, 42)
 
 #define	_ELF_DEFINE_RELOCATIONS()		\
 _ELF_DEFINE_386_RELOCATIONS()			\
@@ -2424,7 +2493,7 @@ _ELF_DEFINE_ODK(ODK_HWOR,       8,      
 _ELF_DEFINE_ODK(ODK_GP_GROUP,   9,					\
 	"GP group to use for text/data sections")			\
 _ELF_DEFINE_ODK(ODK_IDENT,      10,     "ID information")		\
-_ELF_DEFINE_ODK(ODK_PAGESIZE,   11,     "page size infomation")
+_ELF_DEFINE_ODK(ODK_PAGESIZE,   11,     "page size information")
 
 #undef	_ELF_DEFINE_ODK
 #define	_ELF_DEFINE_ODK(N, V, DESCR)	N = V ,

Modified: head/contrib/elftoolchain/cxxfilt/cxxfilt.c
==============================================================================
--- head/contrib/elftoolchain/cxxfilt/cxxfilt.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/cxxfilt/cxxfilt.c	Fri May 20 17:24:34 2016	(r300311)
@@ -35,7 +35,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: cxxfilt.c 3356 2016-01-22 22:31:38Z jkoshy $");
+ELFTC_VCSID("$Id: cxxfilt.c 3454 2016-05-07 17:11:05Z kaiwang27 $");
 
 #define	STRBUFSZ	8192
 
@@ -112,35 +112,18 @@ find_format(const char *fstr)
 }
 
 static char *
-demangle(char *name, int strict, size_t *pos)
+demangle(char *name)
 {
 	static char dem[STRBUFSZ];
-	char nb[STRBUFSZ];
-	size_t p, t;
 
-	if (stripus && *name == '_') {
-		strncpy(nb, name + 1, sizeof(nb) - 1);
-		t = 1;
-	} else {
-		strncpy(nb, name, sizeof(nb) - 1);
-		t = 0;
-	}
-	nb[sizeof(nb) - 1] = '\0';
+	if (stripus && *name == '_')
+		name++;
 
-	p = strlen(nb);
-	if (p == 0)
-		return NULL;
-
-	while (elftc_demangle(nb, dem, sizeof(dem), (unsigned) format) < 0) {
-		if (!strict && p > 1) {
-			nb[--p] = '\0';
-			continue;
-		} else
-			return (NULL);
-	}
+	if (strlen(name) == 0)
+		return (NULL);
 
-	if (pos != NULL)
-		*pos = t ? p + 1 : p;
+	if (elftc_demangle(name, dem, sizeof(dem), (unsigned) format) < 0)
+		return (NULL);
 
 	return (dem);
 }
@@ -149,7 +132,7 @@ int
 main(int argc, char **argv)
 {
 	char *dem, buf[STRBUFSZ];
-	size_t i, p, s;
+	size_t p;
 	int c, n, opt;
 
 	while ((opt = getopt_long(argc, argv, "_nps:V", longopts, NULL)) !=
@@ -184,8 +167,8 @@ main(int argc, char **argv)
 
 	if (*argv != NULL) {
 		for (n = 0; n < argc; n++) {
-			if ((dem = demangle(argv[n], 1, NULL)) == NULL)
-				fprintf(stderr, "Failed: %s\n", argv[n]);
+			if ((dem = demangle(argv[n])) == NULL)
+				printf("%s\n", argv[n]);
 			else
 				printf("%s\n", dem);
 		}
@@ -193,23 +176,18 @@ main(int argc, char **argv)
 		p = 0;
 		for (;;) {
 			c = fgetc(stdin);
-			if (c == EOF || !isprint(c) || strchr(" \t\n", c)) {
+			if (c == EOF || !(isalnum(c) || strchr(".$_", c))) {
 				if (p > 0) {
 					buf[p] = '\0';
-					if ((dem = demangle(buf, 0, &s)) ==
-					    NULL)
+					if ((dem = demangle(buf)) == NULL)
 						printf("%s", buf);
-					else {
+					else
 						printf("%s", dem);
-						for (i = s; i < p; i++)
-							putchar(buf[i]);
-					}
 					p = 0;
 				}
 				if (c == EOF)
 					break;
-				if (isprint(c) || strchr(" \t\n", c))
-					putchar(c);
+				putchar(c);
 			} else {
 				if ((size_t) p >= sizeof(buf) - 1)
 					warnx("buffer overflowed");

Modified: head/contrib/elftoolchain/elfcopy/ascii.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/ascii.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/ascii.c	Fri May 20 17:24:34 2016	(r300311)
@@ -36,7 +36,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: ascii.c 3177 2015-03-30 18:19:41Z emaste $");
+ELFTC_VCSID("$Id: ascii.c 3446 2016-05-03 01:31:17Z emaste $");
 
 static void append_data(struct section *s, const void *buf, size_t sz);
 static char hex_digit(uint8_t n);
@@ -187,7 +187,7 @@ create_srec(struct elfcopy *ecp, int ifd
 	if (elferr != 0)
 		warnx("elf_nextscn failed: %s", elf_errmsg(elferr));
 
-	/* Generate S{7,8,9} end of block recrod. */
+	/* Generate S{7,8,9} end of block record. */
 	if (gelf_getehdr(e, &eh) == NULL)
 		errx(EXIT_FAILURE, "gelf_getehdr() failed: %s",
 		    elf_errmsg(-1));

Modified: head/contrib/elftoolchain/elfcopy/binary.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/binary.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/binary.c	Fri May 20 17:24:34 2016	(r300311)
@@ -36,7 +36,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: binary.c 3270 2015-12-11 18:48:56Z emaste $");
+ELFTC_VCSID("$Id: binary.c 3445 2016-04-20 19:08:30Z emaste $");
 
 /*
  * Convert ELF object to `binary'. Sections with SHF_ALLOC flag set

Modified: head/contrib/elftoolchain/elfcopy/elfcopy.1
==============================================================================
--- head/contrib/elftoolchain/elfcopy/elfcopy.1	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/elfcopy.1	Fri May 20 17:24:34 2016	(r300311)
@@ -21,9 +21,9 @@
 .\" out of the use of this software, even if advised of the possibility of
 .\" such damage.
 .\"
-.\" $Id: elfcopy.1 3381 2016-01-30 19:39:47Z jkoshy $
+.\" $Id: elfcopy.1 3426 2016-03-05 13:32:28Z emaste $
 .\"
-.Dd January 29, 2016
+.Dd March 5, 2016
 .Os
 .Dt ELFCOPY 1
 .Sh NAME
@@ -67,7 +67,10 @@
 .Op Fl -change-section-vma Ar section Ns {+|-|=} Ns Ar val
 .Op Fl -extract-dwo
 .Op Fl -gap-fill Ns = Ns Ar val
+.Op Fl -globalize-symbol Ns = Ns ar symbolname
+.Op Fl -globalize-symbols Ns = Ns Ar filename
 .Op Fl -localize-hidden
+.Op Fl -localize-symbols Ns = Ns Ar filename
 .Op Fl -no-adjust-warnings | Fl -no-change-warnings
 .Op Fl -only-keep-debug
 .Op Fl -pad-to Ns = Ns Ar address
@@ -239,9 +242,21 @@ Copy only .dwo debug sections to the out
 Fill the gaps between sections with the byte value specified by
 the argument
 .Ar val .
+.It Fl -globalize-symbol Ns = Ns Ar symbolname
+Make the symbol named by argument
+.Ar symbolname
+global, so that it is visible outside of the file in which it is defined.
+.It Fl -globalize-symbols Ns = Ns Ar filename
+Make each symbol listed in the file specified by
+.Ar filename
+global.
 .It Fl -localize-hidden
 Make all hidden symbols local to the output file.
 This includes symbols with internal visiblity.
+.It Fl -localize-symbols Ns = Ns Ar filename
+Make each symbol listed in the file specified by
+.Ar filename
+local to the output file.
 .It Fl -no-adjust-warnings | Fl -no-change-warnings
 Do not issue a warning if the section specified by the options
 .Fl -change-section-address ,

Modified: head/contrib/elftoolchain/elfcopy/elfcopy.h
==============================================================================
--- head/contrib/elftoolchain/elfcopy/elfcopy.h	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/elfcopy.h	Fri May 20 17:24:34 2016	(r300311)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: elfcopy.h 3310 2016-01-10 09:10:54Z kaiwang27 $
+ * $Id: elfcopy.h 3446 2016-05-03 01:31:17Z emaste $
  */
 
 #include <sys/queue.h>
@@ -178,7 +178,7 @@ struct elfcopy {
 	Elftc_Bfd_Target_Flavor otf; /* flavour of output object */
 	const char	*otgt;	/* output target name */
 	int		 oec;	/* elfclass of output object */
-	unsigned char	 oed;	/* endianess of output object */
+	unsigned char	 oed;	/* endianness of output object */
 	int		 oem;	/* EM_XXX of output object */
 	int		 abi;	/* OSABI of output object */
 	Elf		*ein;	/* ELF descriptor of input object */
@@ -238,7 +238,7 @@ struct elfcopy {
 	uint64_t	*secndx;	/* section index map. */
 	uint64_t	*symndx;	/* symbol index map. */
 	unsigned char	*v_rel;		/* symbols needed by relocation. */
-	unsigned char	*v_grp;		/* symbols refered by section group. */
+	unsigned char	*v_grp;		/* symbols referred by section group. */
 	unsigned char	*v_secsym;	/* sections with section symbol. */
 	STAILQ_HEAD(, segment) v_seg;	/* list of segments. */
 	STAILQ_HEAD(, sec_action) v_sac;/* list of section operations. */

Modified: head/contrib/elftoolchain/elfcopy/main.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/main.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/main.c	Fri May 20 17:24:34 2016	(r300311)
@@ -39,7 +39,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: main.c 3399 2016-02-12 18:07:56Z emaste $");
+ELFTC_VCSID("$Id: main.c 3446 2016-05-03 01:31:17Z emaste $");
 
 enum options
 {
@@ -209,6 +209,7 @@ static struct {
 	{"openbsd", ELFOSABI_OPENBSD},
 	{"openvms", ELFOSABI_OPENVMS},
 	{"nsk", ELFOSABI_NSK},
+	{"cloudabi", ELFOSABI_CLOUDABI},
 	{"arm", ELFOSABI_ARM},
 	{"standalone", ELFOSABI_STANDALONE},
 	{NULL, 0}
@@ -235,7 +236,7 @@ static void	strip_main(struct elfcopy *e
 static void	strip_usage(void);
 
 /*
- * An ELF object usually has a sturcture described by the
+ * An ELF object usually has a structure described by the
  * diagram below.
  *  _____________
  * |             |
@@ -1446,7 +1447,7 @@ Usage: %s [options] infile [outfile]\n\
                                sections.\n\
   --only-keep-debug            Copy only debugging information.\n\
   --output-target=FORMAT       Use the specified format for the output.\n\
-  --pad-to=ADDRESS             Pad the output object upto the given address.\n\
+  --pad-to=ADDRESS             Pad the output object up to the given address.\n\
   --prefix-alloc-sections=STRING\n\
                                Prefix the section names of all the allocated\n\
                                sections with STRING.\n\

Modified: head/contrib/elftoolchain/elfcopy/sections.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/sections.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/sections.c	Fri May 20 17:24:34 2016	(r300311)
@@ -34,7 +34,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: sections.c 3346 2016-01-17 20:09:15Z kaiwang27 $");
+ELFTC_VCSID("$Id: sections.c 3443 2016-04-15 18:57:54Z kaiwang27 $");
 
 static void	add_gnu_debuglink(struct elfcopy *ecp);
 static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc);

Modified: head/contrib/elftoolchain/elfcopy/segments.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/segments.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/segments.c	Fri May 20 17:24:34 2016	(r300311)
@@ -34,7 +34,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: segments.c 3397 2016-02-12 14:35:19Z emaste $");
+ELFTC_VCSID("$Id: segments.c 3449 2016-05-03 13:59:29Z emaste $");
 
 static void	insert_to_inseg_list(struct segment *seg, struct section *sec);
 
@@ -468,8 +468,7 @@ setup_phdr(struct elfcopy *ecp)
 {
 	struct segment	*seg;
 	GElf_Phdr	 iphdr;
-	size_t		 iphnum;
-	int		 i;
+	size_t		 iphnum, i;
 
 	if (elf_getphnum(ecp->ein, &iphnum) == 0)
 		errx(EXIT_FAILURE, "elf_getphnum failed: %s",
@@ -485,7 +484,7 @@ setup_phdr(struct elfcopy *ecp)
 		return;
 	}
 
-	for (i = 0; (size_t)i < iphnum; i++) {
+	for (i = 0; i < iphnum; i++) {
 		if (gelf_getphdr(ecp->ein, i, &iphdr) != &iphdr)
 			errx(EXIT_FAILURE, "gelf_getphdr failed: %s",
 			    elf_errmsg(-1));

Modified: head/contrib/elftoolchain/elfcopy/symbols.c
==============================================================================
--- head/contrib/elftoolchain/elfcopy/symbols.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfcopy/symbols.c	Fri May 20 17:24:34 2016	(r300311)
@@ -34,7 +34,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: symbols.c 3376 2016-01-26 18:41:39Z emaste $");
+ELFTC_VCSID("$Id: symbols.c 3446 2016-05-03 01:31:17Z emaste $");
 
 /* Backwards compatibility for systems with older ELF definitions. */
 #ifndef STB_GNU_UNIQUE
@@ -168,7 +168,7 @@ is_needed_symbol(struct elfcopy *ecp, in
 	if (BIT_ISSET(ecp->v_rel, i))
 		return (1);
 
-	/* Symbols refered by COMDAT sections are needed. */
+	/* Symbols referred by COMDAT sections are needed. */
 	if (BIT_ISSET(ecp->v_grp, i))
 		return (1);
 
@@ -258,7 +258,7 @@ is_remove_symbol(struct elfcopy *ecp, si
 }
 
 /*
- * Mark symbols refered by relocation entries.
+ * Mark symbols referred by relocation entries.
  */
 static void
 mark_reloc_symbols(struct elfcopy *ecp, size_t sc)
@@ -1165,7 +1165,7 @@ lookup_symop_list(struct elfcopy *ecp, c
 		if ((s->op & op) == 0)
 			continue;
 		if (name == NULL || !strcmp(name, s->name))
-				return (s);
+			return (s);
 		if ((ecp->flags & WILDCARD) == 0)
 			continue;
 

Modified: head/contrib/elftoolchain/elfdump/elfdump.c
==============================================================================
--- head/contrib/elftoolchain/elfdump/elfdump.c	Fri May 20 16:20:08 2016	(r300310)
+++ head/contrib/elftoolchain/elfdump/elfdump.c	Fri May 20 17:24:34 2016	(r300311)
@@ -50,7 +50,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: elfdump.c 3391 2016-02-05 19:43:01Z emaste $");
+ELFTC_VCSID("$Id: elfdump.c 3474 2016-05-17 20:44:53Z emaste $");
 
 #if defined(ELFTC_NEED_ELF_NOTE_DEFINITION)
 #include "native-elf-format.h"
@@ -263,34 +263,99 @@ e_machines(unsigned int mach)
 	return (machdesc);
 }
 
-static const char *e_types[] = {
-	"ET_NONE", "ET_REL", "ET_EXEC", "ET_DYN", "ET_CORE"
-};
+static const char *
+elf_type_str(unsigned int type)
+{
+	static char s_type[32];
 
-static const char *ei_versions[] = {
-	"EV_NONE", "EV_CURRENT"
-};
+	switch (type)
+	{
+	case ET_NONE:	return "ET_NONE";
+	case ET_REL:	return "ET_REL";
+	case ET_EXEC:	return "ET_EXEC";
+	case ET_DYN:	return "ET_DYN";
+	case ET_CORE:	return "ET_CORE";
+	}
+	if (type >= ET_LOPROC)
+		snprintf(s_type, sizeof(s_type), "<proc: %#x>", type);
+	else if (type >= ET_LOOS && type <= ET_HIOS)
+		snprintf(s_type, sizeof(s_type), "<os: %#x>", type);
+	else
+		snprintf(s_type, sizeof(s_type), "<unknown: %#x", type);
+	return (s_type);
+}
 
-static const char *ei_classes[] = {
-	"ELFCLASSNONE", "ELFCLASS32", "ELFCLASS64"
-};
+static const char *
+elf_version_str(unsigned int ver)
+{
+	static char s_ver[32];
 
-static const char *ei_data[] = {
-	"ELFDATANONE", "ELFDATA2LSB", "ELFDATA2MSB"
-};
+	switch (ver) {
+	case EV_NONE:		return "EV_NONE";
+	case EV_CURRENT:	return "EV_CURRENT";
+	}
+	snprintf(s_ver, sizeof(s_ver), "<unknown: %#x>", ver);
+	return (s_ver);
+}
+
+static const char *
+elf_class_str(unsigned int class)
+{
+	static char s_class[32];
+
+	switch (class) {
+	case ELFCLASSNONE:	return "ELFCLASSNONE";
+	case ELFCLASS32:	return "ELFCLASS32";
+	case ELFCLASS64:	return "ELFCLASS64";
+	}
+	snprintf(s_class, sizeof(s_class), "<unknown: %#x>", class);
+	return (s_class);
+}
+
+static const char *
+elf_data_str(unsigned int data)
+{
+	static char s_data[32];
+
+	switch (data) {
+	case ELFDATANONE:	return "ELFDATANONE";
+	case ELFDATA2LSB:	return "ELFDATA2LSB";
+	case ELFDATA2MSB:	return "ELFDATA2MSB";
+	}
+	snprintf(s_data, sizeof(s_data), "<unknown: %#x>", data);
+	return (s_data);
+}
 
 static const char *ei_abis[256] = {
 	"ELFOSABI_NONE", "ELFOSABI_HPUX", "ELFOSABI_NETBSD", "ELFOSABI_LINUX",
 	"ELFOSABI_HURD", "ELFOSABI_86OPEN", "ELFOSABI_SOLARIS", "ELFOSABI_AIX",
 	"ELFOSABI_IRIX", "ELFOSABI_FREEBSD", "ELFOSABI_TRU64",
 	"ELFOSABI_MODESTO", "ELFOSABI_OPENBSD",
+	[17] = "ELFOSABI_CLOUDABI",
 	[255] = "ELFOSABI_STANDALONE"
 };
 
-static const char *p_types[] = {
-	"PT_NULL", "PT_LOAD", "PT_DYNAMIC", "PT_INTERP", "PT_NOTE",
-	"PT_SHLIB", "PT_PHDR", "PT_TLS"
-};
+static const char *
+elf_phdr_type_str(unsigned int type)
+{
+	static char s_type[32];
+
+	switch (type) {
+	case PT_NULL:		return "PT_NULL";
+	case PT_LOAD:		return "PT_LOAD";
+	case PT_DYNAMIC:	return "PT_DYNAMIC";
+	case PT_INTERP:		return "PT_INTERP";
+	case PT_NOTE:		return "PT_NOTE";
+	case PT_SHLIB:		return "PT_SHLIB";
+	case PT_PHDR:		return "PT_PHDR";
+	case PT_TLS:		return "PT_TLS";
+	case PT_GNU_EH_FRAME:	return "PT_GNU_EH_FRAME";
+	case PT_GNU_STACK:	return "PT_GNU_STACK";
+	case PT_GNU_RELRO:	return "PT_GNU_RELRO";
+	}
+	snprintf(s_type, sizeof(s_type), "<unknown: %#x>", type);
+	return (s_type);
+}
 
 static const char *p_flags[] = {
 	"", "PF_X", "PF_W", "PF_X|PF_W", "PF_R", "PF_X|PF_R", "PF_W|PF_R",
@@ -407,7 +472,8 @@ sh_types(uint64_t mach, uint64_t sht) {
 	DEFINE_SHF(LINK_ORDER)			\
 	DEFINE_SHF(OS_NONCONFORMING)		\
 	DEFINE_SHF(GROUP)			\
-	DEFINE_SHF(TLS)
+	DEFINE_SHF(TLS)				\
+	DEFINE_SHF(COMPRESSED)
 
 #undef	DEFINE_SHF
 #define	DEFINE_SHF(F) "SHF_" #F "|"
@@ -518,387 +584,6 @@ static unsigned char st_others[] = {
 	'D', 'I', 'H', 'P'
 };
 
-static const char *
-r_type(unsigned int mach, unsigned int type)
-{
-	switch(mach) {
-	case EM_NONE: return "";
-	case EM_386:
-	case EM_IAMCU:
-		switch(type) {
-		case 0: return "R_386_NONE";
-		case 1: return "R_386_32";
-		case 2: return "R_386_PC32";
-		case 3: return "R_386_GOT32";
-		case 4: return "R_386_PLT32";
-		case 5: return "R_386_COPY";
-		case 6: return "R_386_GLOB_DAT";
-		case 7: return "R_386_JUMP_SLOT";
-		case 8: return "R_386_RELATIVE";
-		case 9: return "R_386_GOTOFF";
-		case 10: return "R_386_GOTPC";
-		case 14: return "R_386_TLS_TPOFF";
-		case 15: return "R_386_TLS_IE";
-		case 16: return "R_386_TLS_GOTIE";
-		case 17: return "R_386_TLS_LE";
-		case 18: return "R_386_TLS_GD";
-		case 19: return "R_386_TLS_LDM";
-		case 24: return "R_386_TLS_GD_32";
-		case 25: return "R_386_TLS_GD_PUSH";
-		case 26: return "R_386_TLS_GD_CALL";
-		case 27: return "R_386_TLS_GD_POP";
-		case 28: return "R_386_TLS_LDM_32";
-		case 29: return "R_386_TLS_LDM_PUSH";
-		case 30: return "R_386_TLS_LDM_CALL";
-		case 31: return "R_386_TLS_LDM_POP";
-		case 32: return "R_386_TLS_LDO_32";
-		case 33: return "R_386_TLS_IE_32";
-		case 34: return "R_386_TLS_LE_32";
-		case 35: return "R_386_TLS_DTPMOD32";
-		case 36: return "R_386_TLS_DTPOFF32";
-		case 37: return "R_386_TLS_TPOFF32";
-		default: return "";
-		}
-	case EM_ARM:
-		switch(type) {
-		case 0: return "R_ARM_NONE";
-		case 1: return "R_ARM_PC24";
-		case 2: return "R_ARM_ABS32";
-		case 3: return "R_ARM_REL32";
-		case 4: return "R_ARM_PC13";
-		case 5: return "R_ARM_ABS16";
-		case 6: return "R_ARM_ABS12";
-		case 7: return "R_ARM_THM_ABS5";
-		case 8: return "R_ARM_ABS8";
-		case 9: return "R_ARM_SBREL32";
-		case 10: return "R_ARM_THM_PC22";
-		case 11: return "R_ARM_THM_PC8";
-		case 12: return "R_ARM_AMP_VCALL9";
-		case 13: return "R_ARM_SWI24";
-		case 14: return "R_ARM_THM_SWI8";
-		case 15: return "R_ARM_XPC25";
-		case 16: return "R_ARM_THM_XPC22";
-		case 20: return "R_ARM_COPY";
-		case 21: return "R_ARM_GLOB_DAT";
-		case 22: return "R_ARM_JUMP_SLOT";
-		case 23: return "R_ARM_RELATIVE";
-		case 24: return "R_ARM_GOTOFF";
-		case 25: return "R_ARM_GOTPC";
-		case 26: return "R_ARM_GOT32";
-		case 27: return "R_ARM_PLT32";
-		case 100: return "R_ARM_GNU_VTENTRY";
-		case 101: return "R_ARM_GNU_VTINHERIT";
-		case 250: return "R_ARM_RSBREL32";
-		case 251: return "R_ARM_THM_RPC22";
-		case 252: return "R_ARM_RREL32";
-		case 253: return "R_ARM_RABS32";
-		case 254: return "R_ARM_RPC24";
-		case 255: return "R_ARM_RBASE";
-		default: return "";
-		}
-	case EM_IA_64:
-		switch(type) {
-		case 0: return "R_IA_64_NONE";
-		case 33: return "R_IA_64_IMM14";
-		case 34: return "R_IA_64_IMM22";
-		case 35: return "R_IA_64_IMM64";
-		case 36: return "R_IA_64_DIR32MSB";
-		case 37: return "R_IA_64_DIR32LSB";
-		case 38: return "R_IA_64_DIR64MSB";
-		case 39: return "R_IA_64_DIR64LSB";
-		case 42: return "R_IA_64_GPREL22";
-		case 43: return "R_IA_64_GPREL64I";
-		case 44: return "R_IA_64_GPREL32MSB";
-		case 45: return "R_IA_64_GPREL32LSB";
-		case 46: return "R_IA_64_GPREL64MSB";
-		case 47: return "R_IA_64_GPREL64LSB";
-		case 50: return "R_IA_64_LTOFF22";
-		case 51: return "R_IA_64_LTOFF64I";
-		case 58: return "R_IA_64_PLTOFF22";
-		case 59: return "R_IA_64_PLTOFF64I";
-		case 62: return "R_IA_64_PLTOFF64MSB";
-		case 63: return "R_IA_64_PLTOFF64LSB";
-		case 67: return "R_IA_64_FPTR64I";
-		case 68: return "R_IA_64_FPTR32MSB";
-		case 69: return "R_IA_64_FPTR32LSB";
-		case 70: return "R_IA_64_FPTR64MSB";
-		case 71: return "R_IA_64_FPTR64LSB";
-		case 72: return "R_IA_64_PCREL60B";
-		case 73: return "R_IA_64_PCREL21B";
-		case 74: return "R_IA_64_PCREL21M";
-		case 75: return "R_IA_64_PCREL21F";
-		case 76: return "R_IA_64_PCREL32MSB";
-		case 77: return "R_IA_64_PCREL32LSB";
-		case 78: return "R_IA_64_PCREL64MSB";
-		case 79: return "R_IA_64_PCREL64LSB";
-		case 82: return "R_IA_64_LTOFF_FPTR22";
-		case 83: return "R_IA_64_LTOFF_FPTR64I";
-		case 84: return "R_IA_64_LTOFF_FPTR32MSB";
-		case 85: return "R_IA_64_LTOFF_FPTR32LSB";
-		case 86: return "R_IA_64_LTOFF_FPTR64MSB";
-		case 87: return "R_IA_64_LTOFF_FPTR64LSB";
-		case 92: return "R_IA_64_SEGREL32MSB";
-		case 93: return "R_IA_64_SEGREL32LSB";
-		case 94: return "R_IA_64_SEGREL64MSB";
-		case 95: return "R_IA_64_SEGREL64LSB";
-		case 100: return "R_IA_64_SECREL32MSB";
-		case 101: return "R_IA_64_SECREL32LSB";
-		case 102: return "R_IA_64_SECREL64MSB";
-		case 103: return "R_IA_64_SECREL64LSB";
-		case 108: return "R_IA_64_REL32MSB";
-		case 109: return "R_IA_64_REL32LSB";
-		case 110: return "R_IA_64_REL64MSB";
-		case 111: return "R_IA_64_REL64LSB";
-		case 116: return "R_IA_64_LTV32MSB";
-		case 117: return "R_IA_64_LTV32LSB";
-		case 118: return "R_IA_64_LTV64MSB";
-		case 119: return "R_IA_64_LTV64LSB";
-		case 121: return "R_IA_64_PCREL21BI";
-		case 122: return "R_IA_64_PCREL22";
-		case 123: return "R_IA_64_PCREL64I";
-		case 128: return "R_IA_64_IPLTMSB";
-		case 129: return "R_IA_64_IPLTLSB";
-		case 133: return "R_IA_64_SUB";
-		case 134: return "R_IA_64_LTOFF22X";
-		case 135: return "R_IA_64_LDXMOV";
-		case 145: return "R_IA_64_TPREL14";
-		case 146: return "R_IA_64_TPREL22";
-		case 147: return "R_IA_64_TPREL64I";
-		case 150: return "R_IA_64_TPREL64MSB";
-		case 151: return "R_IA_64_TPREL64LSB";
-		case 154: return "R_IA_64_LTOFF_TPREL22";
-		case 166: return "R_IA_64_DTPMOD64MSB";
-		case 167: return "R_IA_64_DTPMOD64LSB";
-		case 170: return "R_IA_64_LTOFF_DTPMOD22";
-		case 177: return "R_IA_64_DTPREL14";
-		case 178: return "R_IA_64_DTPREL22";
-		case 179: return "R_IA_64_DTPREL64I";
-		case 180: return "R_IA_64_DTPREL32MSB";
-		case 181: return "R_IA_64_DTPREL32LSB";
-		case 182: return "R_IA_64_DTPREL64MSB";
-		case 183: return "R_IA_64_DTPREL64LSB";
-		case 186: return "R_IA_64_LTOFF_DTPREL22";
-		default: return "";
-		}
-	case EM_MIPS:
-		switch(type) {
-		case 0: return "R_MIPS_NONE";
-		case 1: return "R_MIPS_16";
-		case 2: return "R_MIPS_32";
-		case 3: return "R_MIPS_REL32";
-		case 4: return "R_MIPS_26";
-		case 5: return "R_MIPS_HI16";
-		case 6: return "R_MIPS_LO16";
-		case 7: return "R_MIPS_GPREL16";
-		case 8: return "R_MIPS_LITERAL";
-		case 9: return "R_MIPS_GOT16";
-		case 10: return "R_MIPS_PC16";
-		case 11: return "R_MIPS_CALL16";
-		case 12: return "R_MIPS_GPREL32";
-		case 21: return "R_MIPS_GOTHI16";
-		case 22: return "R_MIPS_GOTLO16";
-		case 30: return "R_MIPS_CALLHI16";
-		case 31: return "R_MIPS_CALLLO16";
-		default: return "";
-		}
-	case EM_PPC:
-		switch(type) {
-		case 0: return "R_PPC_NONE";
-		case 1: return "R_PPC_ADDR32";
-		case 2: return "R_PPC_ADDR24";
-		case 3: return "R_PPC_ADDR16";
-		case 4: return "R_PPC_ADDR16_LO";
-		case 5: return "R_PPC_ADDR16_HI";
-		case 6: return "R_PPC_ADDR16_HA";
-		case 7: return "R_PPC_ADDR14";
-		case 8: return "R_PPC_ADDR14_BRTAKEN";
-		case 9: return "R_PPC_ADDR14_BRNTAKEN";
-		case 10: return "R_PPC_REL24";
-		case 11: return "R_PPC_REL14";
-		case 12: return "R_PPC_REL14_BRTAKEN";
-		case 13: return "R_PPC_REL14_BRNTAKEN";
-		case 14: return "R_PPC_GOT16";
-		case 15: return "R_PPC_GOT16_LO";
-		case 16: return "R_PPC_GOT16_HI";
-		case 17: return "R_PPC_GOT16_HA";
-		case 18: return "R_PPC_PLTREL24";
-		case 19: return "R_PPC_COPY";
-		case 20: return "R_PPC_GLOB_DAT";
-		case 21: return "R_PPC_JMP_SLOT";
-		case 22: return "R_PPC_RELATIVE";
-		case 23: return "R_PPC_LOCAL24PC";
-		case 24: return "R_PPC_UADDR32";
-		case 25: return "R_PPC_UADDR16";
-		case 26: return "R_PPC_REL32";
-		case 27: return "R_PPC_PLT32";
-		case 28: return "R_PPC_PLTREL32";
-		case 29: return "R_PPC_PLT16_LO";
-		case 30: return "R_PPC_PLT16_HI";
-		case 31: return "R_PPC_PLT16_HA";
-		case 32: return "R_PPC_SDAREL16";
-		case 33: return "R_PPC_SECTOFF";
-		case 34: return "R_PPC_SECTOFF_LO";
-		case 35: return "R_PPC_SECTOFF_HI";
-		case 36: return "R_PPC_SECTOFF_HA";
-		case 67: return "R_PPC_TLS";
-		case 68: return "R_PPC_DTPMOD32";
-		case 69: return "R_PPC_TPREL16";
-		case 70: return "R_PPC_TPREL16_LO";
-		case 71: return "R_PPC_TPREL16_HI";
-		case 72: return "R_PPC_TPREL16_HA";
-		case 73: return "R_PPC_TPREL32";
-		case 74: return "R_PPC_DTPREL16";
-		case 75: return "R_PPC_DTPREL16_LO";
-		case 76: return "R_PPC_DTPREL16_HI";
-		case 77: return "R_PPC_DTPREL16_HA";
-		case 78: return "R_PPC_DTPREL32";
-		case 79: return "R_PPC_GOT_TLSGD16";
-		case 80: return "R_PPC_GOT_TLSGD16_LO";
-		case 81: return "R_PPC_GOT_TLSGD16_HI";
-		case 82: return "R_PPC_GOT_TLSGD16_HA";
-		case 83: return "R_PPC_GOT_TLSLD16";
-		case 84: return "R_PPC_GOT_TLSLD16_LO";
-		case 85: return "R_PPC_GOT_TLSLD16_HI";
-		case 86: return "R_PPC_GOT_TLSLD16_HA";
-		case 87: return "R_PPC_GOT_TPREL16";
-		case 88: return "R_PPC_GOT_TPREL16_LO";
-		case 89: return "R_PPC_GOT_TPREL16_HI";
-		case 90: return "R_PPC_GOT_TPREL16_HA";
-		case 101: return "R_PPC_EMB_NADDR32";
-		case 102: return "R_PPC_EMB_NADDR16";
-		case 103: return "R_PPC_EMB_NADDR16_LO";
-		case 104: return "R_PPC_EMB_NADDR16_HI";
-		case 105: return "R_PPC_EMB_NADDR16_HA";
-		case 106: return "R_PPC_EMB_SDAI16";
-		case 107: return "R_PPC_EMB_SDA2I16";
-		case 108: return "R_PPC_EMB_SDA2REL";
-		case 109: return "R_PPC_EMB_SDA21";
-		case 110: return "R_PPC_EMB_MRKREF";
-		case 111: return "R_PPC_EMB_RELSEC16";
-		case 112: return "R_PPC_EMB_RELST_LO";
-		case 113: return "R_PPC_EMB_RELST_HI";
-		case 114: return "R_PPC_EMB_RELST_HA";
-		case 115: return "R_PPC_EMB_BIT_FLD";
-		case 116: return "R_PPC_EMB_RELSDA";
-		default: return "";
-		}
-	case EM_SPARC:
-	case EM_SPARCV9:
-		switch(type) {
-		case 0: return "R_SPARC_NONE";
-		case 1: return "R_SPARC_8";
-		case 2: return "R_SPARC_16";
-		case 3: return "R_SPARC_32";
-		case 4: return "R_SPARC_DISP8";
-		case 5: return "R_SPARC_DISP16";
-		case 6: return "R_SPARC_DISP32";
-		case 7: return "R_SPARC_WDISP30";
-		case 8: return "R_SPARC_WDISP22";
-		case 9: return "R_SPARC_HI22";
-		case 10: return "R_SPARC_22";
-		case 11: return "R_SPARC_13";
-		case 12: return "R_SPARC_LO10";
-		case 13: return "R_SPARC_GOT10";
-		case 14: return "R_SPARC_GOT13";
-		case 15: return "R_SPARC_GOT22";
-		case 16: return "R_SPARC_PC10";
-		case 17: return "R_SPARC_PC22";
-		case 18: return "R_SPARC_WPLT30";
-		case 19: return "R_SPARC_COPY";
-		case 20: return "R_SPARC_GLOB_DAT";
-		case 21: return "R_SPARC_JMP_SLOT";
-		case 22: return "R_SPARC_RELATIVE";
-		case 23: return "R_SPARC_UA32";
-		case 24: return "R_SPARC_PLT32";
-		case 25: return "R_SPARC_HIPLT22";
-		case 26: return "R_SPARC_LOPLT10";
-		case 27: return "R_SPARC_PCPLT32";

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-head mailing list