Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Feb 2015 14:34:11 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r278898 - in vendor/elftoolchain/dist: addr2line ar common elfcopy elfdump libdwarf libelf nm readelf
Message-ID:  <201502171434.t1HEYBXP047279@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Tue Feb 17 14:34:11 2015
New Revision: 278898
URL: https://svnweb.freebsd.org/changeset/base/278898

Log:
  Import elftoolchain rev 3163
  
  From svn.code.sf.net/p/elftoolchain/code

Modified:
  vendor/elftoolchain/dist/addr2line/addr2line.c
  vendor/elftoolchain/dist/ar/acplex.l
  vendor/elftoolchain/dist/ar/read.c
  vendor/elftoolchain/dist/common/_elftc.h
  vendor/elftoolchain/dist/common/elfdefinitions.h
  vendor/elftoolchain/dist/elfcopy/main.c
  vendor/elftoolchain/dist/elfcopy/sections.c
  vendor/elftoolchain/dist/elfdump/elfdump.c
  vendor/elftoolchain/dist/libdwarf/_libdwarf.h
  vendor/elftoolchain/dist/libdwarf/dwarf_attrval.c
  vendor/elftoolchain/dist/libdwarf/dwarf_get_AT_name.3
  vendor/elftoolchain/dist/libdwarf/dwarf_get_arange_info.3
  vendor/elftoolchain/dist/libdwarf/dwarf_get_section_max_offsets.3
  vendor/elftoolchain/dist/libdwarf/dwarf_hasattr.3
  vendor/elftoolchain/dist/libdwarf/dwarf_reloc.c
  vendor/elftoolchain/dist/libdwarf/dwarf_set_reloc_application.3
  vendor/elftoolchain/dist/libdwarf/dwarf_whatattr.3
  vendor/elftoolchain/dist/libdwarf/libdwarf.c
  vendor/elftoolchain/dist/libdwarf/libdwarf.h
  vendor/elftoolchain/dist/libdwarf/libdwarf_elf_init.c
  vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c
  vendor/elftoolchain/dist/libelf/_libelf_config.h
  vendor/elftoolchain/dist/libelf/elf.3
  vendor/elftoolchain/dist/libelf/elf_scn.c
  vendor/elftoolchain/dist/libelf/libelf_ar_util.c
  vendor/elftoolchain/dist/libelf/libelf_convert.m4
  vendor/elftoolchain/dist/nm/nm.1
  vendor/elftoolchain/dist/nm/nm.c
  vendor/elftoolchain/dist/readelf/readelf.c

Modified: vendor/elftoolchain/dist/addr2line/addr2line.c
==============================================================================
--- vendor/elftoolchain/dist/addr2line/addr2line.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/addr2line/addr2line.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -40,7 +40,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: addr2line.c 2185 2011-11-19 16:07:16Z jkoshy $");
+ELFTC_VCSID("$Id: addr2line.c 3148 2015-02-15 18:47:39Z emaste $");
 
 static struct option longopts[] = {
 	{"target" , required_argument, NULL, 'b'},
@@ -399,8 +399,10 @@ main(int argc, char **argv)
 		for (i = 0; i < argc; i++)
 			translate(dbg, argv[i]);
 	else
-		while (fgets(line, sizeof(line), stdin) != NULL)
+		while (fgets(line, sizeof(line), stdin) != NULL) {
 			translate(dbg, line);
+			fflush(stdout);
+		}
 
 	dwarf_finish(dbg, &de);
 

Modified: vendor/elftoolchain/dist/ar/acplex.l
==============================================================================
--- vendor/elftoolchain/dist/ar/acplex.l	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/ar/acplex.l	Tue Feb 17 14:34:11 2015	(r278898)
@@ -34,7 +34,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: acplex.l 2130 2011-11-10 06:56:46Z jkoshy $");
+ELFTC_VCSID("$Id: acplex.l 3162 2015-02-15 21:43:41Z emaste $");
 
 #include "acpyacc.h"
 
@@ -49,6 +49,7 @@ int	yylex(void);
 
 %}
 
+%option nounput
 %option noyywrap
 
 %%

Modified: vendor/elftoolchain/dist/ar/read.c
==============================================================================
--- vendor/elftoolchain/dist/ar/read.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/ar/read.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -39,7 +39,7 @@
 
 #include "ar.h"
 
-ELFTC_VCSID("$Id: read.c 3102 2014-10-29 21:09:01Z jkoshy $");
+ELFTC_VCSID("$Id: read.c 3163 2015-02-15 21:43:51Z emaste $");
 
 /*
  * Handle read modes: 'x', 't' and 'p'.
@@ -90,7 +90,8 @@ ar_read_archive(struct bsdar *bsdar, int
 		else
 			bsdar->options &= ~AR_BSD;
 
-		name = archive_entry_pathname(entry);
+		if ((name = archive_entry_pathname(entry)) == NULL)
+			break;
 
 		/* Skip pseudo members. */
 		if (bsdar_is_pseudomember(bsdar, name))

Modified: vendor/elftoolchain/dist/common/_elftc.h
==============================================================================
--- vendor/elftoolchain/dist/common/_elftc.h	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/common/_elftc.h	Tue Feb 17 14:34:11 2015	(r278898)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: _elftc.h 2922 2013-03-17 22:53:15Z kaiwang27 $
+ * $Id: _elftc.h 3139 2015-01-05 03:17:06Z kaiwang27 $
  */
 
 /**
@@ -76,10 +76,17 @@
  * SUCH DAMAGE.
  */
 
+#ifndef	LIST_FOREACH_SAFE
+#define	LIST_FOREACH_SAFE(var, head, field, tvar)		\
+	for ((var) = LIST_FIRST((head));			\
+	    (var) && ((tvar) = LIST_NEXT((var), field), 1);	\
+	    (var) = (tvar))
+#endif
+
 #ifndef	SLIST_FOREACH_SAFE
-#define	SLIST_FOREACH_SAFE(var, head, field, tvar)			\
-	for ((var) = SLIST_FIRST((head));				\
-	    (var) && ((tvar) = SLIST_NEXT((var), field), 1);		\
+#define	SLIST_FOREACH_SAFE(var, head, field, tvar)		\
+	for ((var) = SLIST_FIRST((head));			\
+	    (var) && ((tvar) = SLIST_NEXT((var), field), 1);	\
 	    (var) = (tvar))
 #endif
 

Modified: vendor/elftoolchain/dist/common/elfdefinitions.h
==============================================================================
--- vendor/elftoolchain/dist/common/elfdefinitions.h	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/common/elfdefinitions.h	Tue Feb 17 14:34:11 2015	(r278898)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: elfdefinitions.h 3110 2014-12-20 08:32:46Z kaiwang27 $
+ * $Id: elfdefinitions.h 3149 2015-02-15 19:00:06Z emaste $
  */
 
 /*
@@ -1396,6 +1396,12 @@ _ELF_DEFINE_RELOC(R_386_8,		22)	\
 _ELF_DEFINE_RELOC(R_386_PC8,		23)
 
 /*
+ */
+#define	_ELF_DEFINE_AARCH64_RELOCATIONS()		\
+_ELF_DEFINE_RELOC(R_AARCH64_ABS64,		257)	\
+_ELF_DEFINE_RELOC(R_AARCH64_ABS32,		258)	\
+
+/*
  * These are the symbols used in the Sun ``Linkers and Loaders
  * Guide'', Document No: 817-1984-17.  See the X86_64 relocations list
  * below for the spellings used in the ELF specification.
@@ -1948,14 +1954,21 @@ _ELF_DEFINE_RELOC(R_X86_64_TPOFF32,	23)	
 _ELF_DEFINE_RELOC(R_X86_64_PC64,	24)	\
 _ELF_DEFINE_RELOC(R_X86_64_GOTOFF64,	25)	\
 _ELF_DEFINE_RELOC(R_X86_64_GOTPC32,	26)	\
+_ELF_DEFINE_RELOC(R_X86_64_GOT64,	27)	\
+_ELF_DEFINE_RELOC(R_X86_64_GOTPCREL64,	28)	\
+_ELF_DEFINE_RELOC(R_X86_64_GOTPC64,	29)	\
+_ELF_DEFINE_RELOC(R_X86_64_GOTPLT64,	30)	\
+_ELF_DEFINE_RELOC(R_X86_64_PLTOFF64,	31)	\
 _ELF_DEFINE_RELOC(R_X86_64_SIZE32,	32)	\
 _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_TLSDESC,	36)	\
+_ELF_DEFINE_RELOC(R_X86_64_IRELATIVE,	37)
 
 #define	_ELF_DEFINE_RELOCATIONS()		\
 _ELF_DEFINE_386_RELOCATIONS()			\
+_ELF_DEFINE_AARCH64_RELOCATIONS()		\
 _ELF_DEFINE_AMD64_RELOCATIONS()			\
 _ELF_DEFINE_ARM_RELOCATIONS()			\
 _ELF_DEFINE_IA64_RELOCATIONS()			\

Modified: vendor/elftoolchain/dist/elfcopy/main.c
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/main.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/elfcopy/main.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -40,7 +40,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: main.c 3111 2014-12-20 08:33:01Z kaiwang27 $");
+ELFTC_VCSID("$Id: main.c 3156 2015-02-15 21:40:01Z emaste $");
 
 enum options
 {
@@ -210,7 +210,7 @@ static struct {
 };
 
 static int	copy_from_tempfile(const char *src, const char *dst,
-    int infd, int *outfd);
+    int infd, int *outfd, int in_place);
 static void	create_file(struct elfcopy *ecp, const char *src,
     const char *dst);
 static void	elfcopy_main(struct elfcopy *ecp, int argc, char **argv);
@@ -523,33 +523,39 @@ create_tempfile(char **fn, int *fd)
 #undef _TEMPFILEPATH
 }
 
+/*
+ * Copy temporary file with path src and file descriptor infd to path dst.
+ * If in_place is set act as if editing the file in place, avoiding rename()
+ * to preserve hard and symbolic links. Output file remains open, with file
+ * descriptor returned in outfd.
+ */
 static int
-copy_from_tempfile(const char *src, const char *dst, int infd, int *outfd)
+copy_from_tempfile(const char *src, const char *dst, int infd, int *outfd,
+    int in_place)
 {
 	int tmpfd;
 
 	/*
 	 * First, check if we can use rename().
 	 */
-	if (rename(src, dst) >= 0) {
-		*outfd = infd;
-		return (0);
-	} else if (errno != EXDEV)
-		return (-1);
-
-	/*
-	 * If the rename() failed due to 'src' and 'dst' residing in
-	 * two different file systems, invoke a helper function in
-	 * libelftc to do the copy.
-	 */
-
-	if (unlink(dst) < 0)
-		return (-1);
+	if (in_place == 0) {
+		if (rename(src, dst) >= 0) {
+			*outfd = infd;
+			return (0);
+		} else if (errno != EXDEV)
+			return (-1);
+	
+		/*
+		 * If the rename() failed due to 'src' and 'dst' residing in
+		 * two different file systems, invoke a helper function in
+		 * libelftc to do the copy.
+		 */
 
-	if ((tmpfd = open(dst, O_CREAT | O_WRONLY, 0755)) < 0)
-		return (-1);
+		if (unlink(dst) < 0)
+			return (-1);
+	}
 
-	if (lseek(infd, 0, SEEK_SET) < 0)
+	if ((tmpfd = open(dst, O_CREAT | O_TRUNC | O_WRONLY, 0755)) < 0)
 		return (-1);
 
 	if (elftc_copyfile(infd, tmpfd) < 0)
@@ -578,6 +584,7 @@ create_file(struct elfcopy *ecp, const c
 	struct stat	 sb;
 	char		*tempfile, *elftemp;
 	int		 efd, ifd, ofd, ofd0, tfd;
+	int		 in_place;
 
 	tempfile = NULL;
 
@@ -718,10 +725,15 @@ copy_done:
 #endif
 
 	if (tempfile != NULL) {
-		if (dst == NULL)
+		in_place = 0;
+		if (dst == NULL) {
 			dst = src;
+			if (lstat(dst, &sb) != -1 &&
+			    (sb.st_nlink > 1 || S_ISLNK(sb.st_mode)))
+				in_place = 1;
+		}
 
-		if (copy_from_tempfile(tempfile, dst, ofd, &tfd) < 0)
+		if (copy_from_tempfile(tempfile, dst, ofd, &tfd, in_place) < 0)
 			err(EXIT_FAILURE, "creation of %s failed", dst);
 
 		free(tempfile);

Modified: vendor/elftoolchain/dist/elfcopy/sections.c
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/sections.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/elfcopy/sections.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -35,7 +35,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: sections.c 3134 2014-12-23 10:43:59Z kaiwang27 $");
+ELFTC_VCSID("$Id: sections.c 3150 2015-02-15 19:07:46Z emaste $");
 
 static void	add_gnu_debuglink(struct elfcopy *ecp);
 static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc);
@@ -777,6 +777,8 @@ resync_sections(struct elfcopy *ecp)
 			continue;
 
 		/* Align section offset. */
+		if (s->align == 0)
+			s->align = 1;
 		if (off <= s->off) {
 			if (!s->loadable)
 				s->off = roundup(off, s->align);

Modified: vendor/elftoolchain/dist/elfdump/elfdump.c
==============================================================================
--- vendor/elftoolchain/dist/elfdump/elfdump.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/elfdump/elfdump.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -51,7 +51,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: elfdump.c 2728 2012-12-09 16:54:28Z kaiwang27 $");
+ELFTC_VCSID("$Id: elfdump.c 3146 2015-02-15 18:20:03Z emaste $");
 
 #if defined(ELFTC_NEED_ELF_NOTE_DEFINITION)
 #include "native-elf-format.h"
@@ -975,12 +975,11 @@ ac_detect_ar(int fd)
 	r = -1;
 	if ((a = archive_read_new()) == NULL)
 		return (0);
-	archive_read_support_compression_none(a);
 	archive_read_support_format_ar(a);
 	if (archive_read_open_fd(a, fd, 10240) == ARCHIVE_OK)
 		r = archive_read_next_header(a, &entry);
 	archive_read_close(a);
-	archive_read_finish(a);
+	archive_read_free(a);
 
 	return (r == ARCHIVE_OK);
 }
@@ -1005,7 +1004,6 @@ ac_print_ar(struct elfdump *ed, int fd)
 		err(EXIT_FAILURE, "lseek failed");
 	if ((a = archive_read_new()) == NULL)
 		errx(EXIT_FAILURE, "%s", archive_error_string(a));
-	archive_read_support_compression_none(a);
 	archive_read_support_format_ar(a);
 	AC(archive_read_open_fd(a, fd, 10240));
 	for(;;) {
@@ -1082,7 +1080,7 @@ ac_print_ar(struct elfdump *ed, int fd)
 			/* No need to continue if we only dump ARSYM. */
 			if (ed->flags & ONLY_ARSYM) {
 				AC(archive_read_close(a));
-				AC(archive_read_finish(a));
+				AC(archive_read_free(a));
 				return;
 			}
 			continue;
@@ -1102,7 +1100,7 @@ ac_print_ar(struct elfdump *ed, int fd)
 		free(buff);
 	}
 	AC(archive_read_close(a));
-	AC(archive_read_finish(a));
+	AC(archive_read_free(a));
 }
 
 #else  /* USE_LIBARCHIVE_AR */

Modified: vendor/elftoolchain/dist/libdwarf/_libdwarf.h
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/_libdwarf.h	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/_libdwarf.h	Tue Feb 17 14:34:11 2015	(r278898)
@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: _libdwarf.h 3106 2014-12-19 16:00:58Z kaiwang27 $
+ * $Id: _libdwarf.h 3161 2015-02-15 21:43:36Z emaste $
  */
 
 #ifndef	__LIBDWARF_H_
@@ -49,7 +49,7 @@
 struct _libdwarf_globals {
 	Dwarf_Handler	errhand;
 	Dwarf_Ptr	errarg;
-	int		applyrela;
+	int		applyreloc;
 };
 
 extern struct _libdwarf_globals _libdwarf;

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_attrval.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_attrval.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_attrval.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -26,7 +26,7 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: dwarf_attrval.c 2977 2014-01-21 20:13:31Z kaiwang27 $");
+ELFTC_VCSID("$Id: dwarf_attrval.c 3159 2015-02-15 21:43:27Z emaste $");
 
 int
 dwarf_attrval_flag(Dwarf_Die die, Dwarf_Half attr, Dwarf_Bool *valp, Dwarf_Error *err)
@@ -125,6 +125,7 @@ dwarf_attrval_signed(Dwarf_Die die, Dwar
 		break;
 	case DW_FORM_data4:
 		*valp = (int32_t) at->u[0].s64;
+		break;
 	case DW_FORM_data8:
 	case DW_FORM_sdata:
 		*valp = at->u[0].s64;

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_get_AT_name.3
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_get_AT_name.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_get_AT_name.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: dwarf_get_AT_name.3 2071 2011-10-27 03:20:00Z jkoshy $
+.\" $Id: dwarf_get_AT_name.3 3142 2015-01-29 23:11:14Z jkoshy $
 .\"
 .Dd April 22, 2011
 .Os
@@ -247,6 +247,7 @@ constants.
 .It Fn dwarf_get_VIS_name
 .Dv DW_VIS_*
 constants.
+.El
 .Sh RETURN VALUES
 These functions return
 .Dv DW_DLV_OK on success.

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_get_arange_info.3
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_get_arange_info.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_get_arange_info.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: dwarf_get_arange_info.3 2134 2011-11-10 08:40:14Z jkoshy $
+.\" $Id: dwarf_get_arange_info.3 3142 2015-01-29 23:11:14Z jkoshy $
 .\"
 .Dd April 16, 2011
 .Os
@@ -102,6 +102,7 @@ One of the arguments
 or
 .Ar cu_die_offset
 was NULL.
+.El
 .Sh EXAMPLE
 To loop through all the address lookup table entries, use:
 .Bd -literal -offset indent

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_get_section_max_offsets.3
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_get_section_max_offsets.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_get_section_max_offsets.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,9 +22,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: dwarf_get_section_max_offsets.3 3098 2014-09-02 22:18:29Z kaiwang27 $
+.\" $Id: dwarf_get_section_max_offsets.3 3141 2015-01-29 23:11:10Z jkoshy $
 .\"
-.Dd July 27, 2014
+.Dd December 21, 2014
 .Os
 .Dt DWARF_GET_SECTION_MAX_OFFSETS
 .Sh NAME
@@ -101,7 +101,7 @@ is identical to function
 .Fn dwarf_get_section_max_offsets_b
 except that it does not provide argument
 .Ar debug_types ,
-thus it can not retrieve the size of the
+and thus cannot return the size of the
 .Dq \&.debug_types
 section.
 .Sh RETURN VALUES

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_hasattr.3
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_hasattr.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_hasattr.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: dwarf_hasattr.3 2073 2011-10-27 03:30:47Z jkoshy $
+.\" $Id: dwarf_hasattr.3 3142 2015-01-29 23:11:14Z jkoshy $
 .\"
 .Dd April 17, 2010
 .Os
@@ -85,6 +85,7 @@ Either of argument
 or
 .Va ret_bool
 was NULL.
+.El
 .Sh SEE ALSO
 .Xr dwarf 3 ,
 .Xr dwarf_attr 3 ,

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_reloc.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_reloc.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_reloc.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -26,15 +26,15 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: dwarf_reloc.c 2075 2011-10-27 03:47:28Z jkoshy $");
+ELFTC_VCSID("$Id: dwarf_reloc.c 3161 2015-02-15 21:43:36Z emaste $");
 
 int
 dwarf_set_reloc_application(int apply)
 {
 	int oldapply;
 
-	oldapply = _libdwarf.applyrela;
-	_libdwarf.applyrela = apply;
+	oldapply = _libdwarf.applyreloc;
+	_libdwarf.applyreloc = apply;
 
 	return (oldapply);
 }

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_set_reloc_application.3
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_set_reloc_application.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_set_reloc_application.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,9 +22,9 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: dwarf_set_reloc_application.3 2075 2011-10-27 03:47:28Z jkoshy $
+.\" $Id: dwarf_set_reloc_application.3 3161 2015-02-15 21:43:36Z emaste $
 .\"
-.Dd June 26, 2011
+.Dd February 11, 2015
 .Os
 .Dt DWARF_SET_RELOC_APPLICATION 3
 .Sh NAME
@@ -47,6 +47,8 @@ handled by the DWARF(3) library.
 If the argument
 .Ar apply
 holds a non-zero value, the library will process all the relevant
+.Dq ".rel"
+and
 .Dq ".rela"
 relocation sections and will apply the relocation records found to
 their corresponding DWARF sections.

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_whatattr.3
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_whatattr.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_whatattr.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $Id: dwarf_whatattr.3 2075 2011-10-27 03:47:28Z jkoshy $
+.\" $Id: dwarf_whatattr.3 3142 2015-01-29 23:11:14Z jkoshy $
 .\"
 .Dd May 22, 2010
 .Os
@@ -72,6 +72,7 @@ Either of argument
 or
 .Va retcode
 was NULL.
+.El
 .Sh SEE ALSO
 .Xr dwarf 3 ,
 .Xr dwarf_attr 3 ,

Modified: vendor/elftoolchain/dist/libdwarf/libdwarf.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/libdwarf.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/libdwarf.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -26,10 +26,10 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: libdwarf.c 2070 2011-10-27 03:05:32Z jkoshy $");
+ELFTC_VCSID("$Id: libdwarf.c 3161 2015-02-15 21:43:36Z emaste $");
 
 struct _libdwarf_globals _libdwarf = {
 	.errhand	= NULL,
 	.errarg		= NULL,
-	.applyrela	= 1
+	.applyreloc	= 1
 };

Modified: vendor/elftoolchain/dist/libdwarf/libdwarf.h
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/libdwarf.h	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/libdwarf.h	Tue Feb 17 14:34:11 2015	(r278898)
@@ -24,7 +24,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: libdwarf.h 3064 2014-06-06 19:35:55Z kaiwang27 $
+ * $Id: libdwarf.h 3149 2015-02-15 19:00:06Z emaste $
  */
 
 #ifndef	_LIBDWARF_H_
@@ -439,6 +439,7 @@ enum Dwarf_ISA {
 	DW_ISA_SPARC,
 	DW_ISA_X86,
 	DW_ISA_X86_64,
+	DW_ISA_AARCH64,
 	DW_ISA_MAX
 };
 

Modified: vendor/elftoolchain/dist/libdwarf/libdwarf_elf_init.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/libdwarf_elf_init.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/libdwarf_elf_init.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -26,7 +26,7 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: libdwarf_elf_init.c 2972 2013-12-23 06:46:04Z kaiwang27 $");
+ELFTC_VCSID("$Id: libdwarf_elf_init.c 3161 2015-02-15 21:43:36Z emaste $");
 
 static const char *debug_name[] = {
 	".debug_abbrev",
@@ -50,32 +50,46 @@ static const char *debug_name[] = {
 };
 
 static void
-_dwarf_elf_apply_reloc(Dwarf_Debug dbg, void *buf, Elf_Data *rel_data,
-    Elf_Data *symtab_data, int endian)
+_dwarf_elf_write_reloc(Dwarf_Debug dbg, Elf_Data *symtab_data, int endian,
+    void *buf, uint64_t offset, GElf_Xword r_info, GElf_Sxword r_addend)
 {
-	Dwarf_Unsigned type;
-	GElf_Rela rela;
 	GElf_Sym sym;
-	size_t symndx;
-	uint64_t offset;
-	int size, j;
+	int size;
 
-	j = 0;
-	while (gelf_getrela(rel_data, j++, &rela) != NULL) {
-		symndx = GELF_R_SYM(rela.r_info);
-		type = GELF_R_TYPE(rela.r_info);
+	if (gelf_getsym(symtab_data, GELF_R_SYM(r_info), &sym) == NULL)
+		return;
+	if ((size = _dwarf_get_reloc_size(dbg, GELF_R_TYPE(r_info))) == 0)
+		return; /* Unknown or non-absolute relocation. */
+	if (endian == ELFDATA2MSB)
+		_dwarf_write_msb(buf, &offset, sym.st_value + r_addend, size);
+	else
+		_dwarf_write_lsb(buf, &offset, sym.st_value + r_addend, size);
+}
 
-		if (gelf_getsym(symtab_data, symndx, &sym) == NULL)
-			continue;
+static void
+_dwarf_elf_apply_rel_reloc(Dwarf_Debug dbg, void *buf, Elf_Data *rel_data,
+    Elf_Data *symtab_data, int endian)
+{
+	GElf_Rel rel;
+	int j;
 
-		offset = rela.r_offset;
-		size = _dwarf_get_reloc_size(dbg, type);
+	j = 0;
+	while (gelf_getrel(rel_data, j++, &rel) != NULL)
+		_dwarf_elf_write_reloc(dbg, symtab_data, endian, buf,
+		     rel.r_offset, rel.r_info, 0);
+}
 
-		if (endian == ELFDATA2MSB)
-			_dwarf_write_msb(buf, &offset, rela.r_addend, size);
-		else
-			_dwarf_write_lsb(buf, &offset, rela.r_addend, size);
-	}
+static void
+_dwarf_elf_apply_rela_reloc(Dwarf_Debug dbg, void *buf, Elf_Data *rel_data,
+    Elf_Data *symtab_data, int endian)
+{
+	GElf_Rela rela;
+	int j;
+
+	j = 0;
+	while (gelf_getrela(rel_data, j++, &rela) != NULL)
+		_dwarf_elf_write_reloc(dbg, symtab_data, endian, buf,
+		    rela.r_offset, rela.r_info, rela.r_addend);
 }
 
 static int
@@ -104,7 +118,8 @@ _dwarf_elf_relocate(Dwarf_Debug dbg, Elf
 			return (DW_DLE_ELF);
 		}
 
-		if (sh.sh_type != SHT_RELA || sh.sh_size == 0)
+		if ((sh.sh_type != SHT_REL && sh.sh_type != SHT_RELA) ||
+		     sh.sh_size == 0)
 			continue;
 
 		if (sh.sh_info == shndx && sh.sh_link == symtab) {
@@ -125,8 +140,12 @@ _dwarf_elf_relocate(Dwarf_Debug dbg, Elf
 			}
 			memcpy(ed->ed_alloc, ed->ed_data->d_buf,
 			    ed->ed_data->d_size);
-			_dwarf_elf_apply_reloc(dbg, ed->ed_alloc, rel,
-			    symtab_data, eh.e_ident[EI_DATA]);
+			if (sh.sh_type == SHT_REL)
+				_dwarf_elf_apply_rel_reloc(dbg, ed->ed_alloc,
+				    rel, symtab_data, eh.e_ident[EI_DATA]);
+			else
+				_dwarf_elf_apply_rela_reloc(dbg, ed->ed_alloc,
+				    rel, symtab_data, eh.e_ident[EI_DATA]);
 
 			return (DW_DLE_NONE);
 		}
@@ -282,7 +301,7 @@ _dwarf_elf_init(Dwarf_Debug dbg, Elf *el
 				}
 			}
 
-			if (_libdwarf.applyrela) {
+			if (_libdwarf.applyreloc) {
 				if (_dwarf_elf_relocate(dbg, elf,
 				    &e->eo_data[j], elf_ndxscn(scn), symtab_ndx,
 				    symtab_data, error) != DW_DLE_NONE)

Modified: vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -26,7 +26,7 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: libdwarf_reloc.c 2948 2013-05-30 21:25:52Z kaiwang27 $");
+ELFTC_VCSID("$Id: libdwarf_reloc.c 3149 2015-02-15 19:00:06Z emaste $");
 
 Dwarf_Unsigned
 _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64)
@@ -35,6 +35,8 @@ _dwarf_get_reloc_type(Dwarf_P_Debug dbg,
 	assert(dbg != NULL);
 
 	switch (dbg->dbgp_isa) {
+	case DW_ISA_AARCH64:
+		return (is64 ? R_AARCH64_ABS64 : R_AARCH64_ABS32);
 	case DW_ISA_X86:
 		return (R_386_32);
 	case DW_ISA_X86_64:
@@ -62,6 +64,12 @@ _dwarf_get_reloc_size(Dwarf_Debug dbg, D
 	switch (dbg->dbg_machine) {
 	case EM_NONE:
 		break;
+	case EM_AARCH64:
+		if (rel_type == R_AARCH64_ABS32)
+			return (4);
+		else if (rel_type == R_AARCH64_ABS64)
+			return (8);
+		break;
 	case EM_ARM:
 		if (rel_type == R_ARM_ABS32)
 			return (4);

Modified: vendor/elftoolchain/dist/libelf/_libelf_config.h
==============================================================================
--- vendor/elftoolchain/dist/libelf/_libelf_config.h	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libelf/_libelf_config.h	Tue Feb 17 14:34:11 2015	(r278898)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: _libelf_config.h 2287 2011-12-04 06:45:47Z jkoshy $
+ * $Id: _libelf_config.h 3143 2015-02-15 17:57:38Z emaste $
  */
 
 #ifdef	__DragonFly__
@@ -53,6 +53,12 @@
 #define	LIBELF_BYTEORDER	ELFDATA2LSB
 #define	LIBELF_CLASS		ELFCLASS64
 
+#elif	defined(__aarch64__)
+
+#define	LIBELF_ARCH		EM_AARCH64
+#define	LIBELF_BYTEORDER	ELFDATA2LSB
+#define	LIBELF_CLASS		ELFCLASS64
+
 #elif	defined(__arm__)
 
 #define	LIBELF_ARCH		EM_ARM

Modified: vendor/elftoolchain/dist/libelf/elf.3
==============================================================================
--- vendor/elftoolchain/dist/libelf/elf.3	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libelf/elf.3	Tue Feb 17 14:34:11 2015	(r278898)
@@ -21,7 +21,7 @@
 .\" out of the use of this software, even if advised of the possibility of
 .\" such damage.
 .\"
-.\" $Id: elf.3 3082 2014-07-28 09:13:33Z jkoshy $
+.\" $Id: elf.3 3142 2015-01-29 23:11:14Z jkoshy $
 .\"
 .Dd July 28, 2014
 .Os
@@ -413,7 +413,6 @@ Section types in the range
 .Dv SHT_HIUSER ]
 are otherwise considered to be of type
 .Dv ELF_T_BYTE .
-.TE
 .Ss Functional Grouping
 This section contains a brief overview of the available functionality
 in the ELF library.

Modified: vendor/elftoolchain/dist/libelf/elf_scn.c
==============================================================================
--- vendor/elftoolchain/dist/libelf/elf_scn.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libelf/elf_scn.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -36,7 +36,7 @@
 
 #include "_libelf.h"
 
-ELFTC_VCSID("$Id: elf_scn.c 3013 2014-03-23 06:16:59Z jkoshy $");
+ELFTC_VCSID("$Id: elf_scn.c 3147 2015-02-15 18:45:23Z emaste $");
 
 /*
  * Load an ELF section table and create a list of Elf_Scn structures.
@@ -59,8 +59,10 @@ _libelf_load_section_headers(Elf *e, voi
 	assert((e->e_flags & LIBELF_F_SHDRS_LOADED) == 0);
 
 #define	CHECK_EHDR(E,EH)	do {				\
-		if (fsz != (EH)->e_shentsize ||			\
-		    shoff + fsz * shnum > e->e_rawsize) {	\
+		if (shoff > e->e_rawsize ||			\
+		    fsz != (EH)->e_shentsize ||			\
+		    shnum > SIZE_MAX / fsz ||			\
+		    fsz * shnum > e->e_rawsize - shoff) {	\
 			LIBELF_SET_ERROR(HEADER, 0);		\
 			return (0);				\
 		}						\

Modified: vendor/elftoolchain/dist/libelf/libelf_ar_util.c
==============================================================================
--- vendor/elftoolchain/dist/libelf/libelf_ar_util.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libelf/libelf_ar_util.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -34,7 +34,7 @@
 #include "_libelf.h"
 #include "_libelf_ar.h"
 
-ELFTC_VCSID("$Id: libelf_ar_util.c 3013 2014-03-23 06:16:59Z jkoshy $");
+ELFTC_VCSID("$Id: libelf_ar_util.c 3157 2015-02-15 21:42:02Z emaste $");
 
 /*
  * Convert a string bounded by `start' and `start+sz' (exclusive) to a
@@ -278,8 +278,8 @@ _libelf_ar_open(Elf *e, int reporterror)
 	 * Handle special archive members for the SVR4 format.
 	 */
 	if (arh.ar_name[0] == '/') {
-
-		assert(sz > 0);
+		if (sz == 0)
+			goto error;
 
 		e->e_flags |= LIBELF_F_AR_VARIANT_SVR4;
 

Modified: vendor/elftoolchain/dist/libelf/libelf_convert.m4
==============================================================================
--- vendor/elftoolchain/dist/libelf/libelf_convert.m4	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/libelf/libelf_convert.m4	Tue Feb 17 14:34:11 2015	(r278898)
@@ -32,7 +32,7 @@
 
 #include "_libelf.h"
 
-ELFTC_VCSID("$Id: libelf_convert.m4 3009 2014-03-23 01:49:59Z jkoshy $");
+ELFTC_VCSID("$Id: libelf_convert.m4 3158 2015-02-15 21:42:07Z emaste $");
 
 /* WARNING: GENERATED FROM __file__. */
 
@@ -1007,6 +1007,11 @@ _libelf_cvt_NOTE_tof(unsigned char *dst,
 		descsz = en->n_descsz;
 		type = en->n_type;
 
+		sz = namesz;
+		ROUNDUP2(sz, 4U);
+		sz += descsz;
+		ROUNDUP2(sz, 4U);
+
 		SWAP_WORD(namesz);
 		SWAP_WORD(descsz);
 		SWAP_WORD(type);
@@ -1017,11 +1022,6 @@ _libelf_cvt_NOTE_tof(unsigned char *dst,
 
 		src += sizeof(Elf_Note);
 
-		ROUNDUP2(namesz, 4U);
-		ROUNDUP2(descsz, 4U);
-
-		sz = namesz + descsz;
-
 		if (count < sz)
 			sz = count;
 

Modified: vendor/elftoolchain/dist/nm/nm.1
==============================================================================
--- vendor/elftoolchain/dist/nm/nm.1	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/nm/nm.1	Tue Feb 17 14:34:11 2015	(r278898)
@@ -22,9 +22,9 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $Id: nm.1 2377 2012-01-03 07:10:59Z jkoshy $
+.\" $Id: nm.1 3145 2015-02-15 18:04:37Z emaste $
 .\"
-.Dd January 3, 2012
+.Dd February 15, 2015
 .Os
 .Dt NM 1
 .Sh NAME
@@ -36,6 +36,7 @@
 .Op Fl -defined-only
 .Op Fl -demangle Ns Op = Ns style
 .Op Fl -dynamic
+.Op Fl -extern-only
 .Op Fl -help
 .Op Fl -line-numbers
 .Op Fl -no-demangle
@@ -107,6 +108,8 @@ is not specified, it is taken to be
 .It Fl -dynamic
 Only display dynamic symbols.
 This option is only meaningful for shared libraries.
+.It Fl -extern-only
+Only display information about global (external) symbols.
 .It Fl -help
 Display a help message and exit.
 .It Fl -format Ns = Ns Ar format
@@ -200,7 +203,8 @@ Only display information for global and 
 .It Fl f
 Produce full output (default).
 .It Fl g
-Only display information about global (external) symbols.
+Equivalent to specifying option
+.Fl -extern-only .
 .It Fl h
 Equivalent to specifying option
 .Fl -help .

Modified: vendor/elftoolchain/dist/nm/nm.c
==============================================================================
--- vendor/elftoolchain/dist/nm/nm.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/nm/nm.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -48,7 +48,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: nm.c 3124 2014-12-21 05:46:28Z kaiwang27 $");
+ELFTC_VCSID("$Id: nm.c 3145 2015-02-15 18:04:37Z emaste $");
 
 /* symbol information list */
 STAILQ_HEAD(sym_head, sym_entry);
@@ -248,6 +248,7 @@ static const struct option nm_longopts[]
 	{ "defined-only",	no_argument,		&nm_opts.def_only, 1},
 	{ "demangle",		optional_argument,	NULL,		'C' },
 	{ "dynamic",		no_argument,		NULL,		'D' },
+	{ "extern-only",	no_argument,		NULL,		'g' },
 	{ "format",		required_argument,	NULL,		'F' },
 	{ "help",		no_argument,		NULL,		'h' },
 	{ "line-numbers",	no_argument,		NULL,		'l' },
@@ -2042,7 +2043,7 @@ usage(int exitcode)
 \n  -f                        Produce full output (default).\
 \n      --format=format       Display output in specific format.  Allowed\
 \n                            formats are: \"bsd\", \"posix\" and \"sysv\".\
-\n  -g                        Display only global symbol information.\
+\n  -g, --extern-only         Display only global symbol information.\
 \n  -h, --help                Show this help message.\
 \n  -l, --line-numbers        Display filename and linenumber using\
 \n                            debugging information.\

Modified: vendor/elftoolchain/dist/readelf/readelf.c
==============================================================================
--- vendor/elftoolchain/dist/readelf/readelf.c	Tue Feb 17 14:33:51 2015	(r278897)
+++ vendor/elftoolchain/dist/readelf/readelf.c	Tue Feb 17 14:34:11 2015	(r278898)
@@ -46,7 +46,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: readelf.c 3110 2014-12-20 08:32:46Z kaiwang27 $");
+ELFTC_VCSID("$Id: readelf.c 3155 2015-02-15 19:15:57Z emaste $");
 
 /*
  * readelf(1) options.
@@ -320,8 +320,15 @@ static const char *get_symbol_name(struc
 static uint64_t get_symbol_value(struct readelf *re, int symtab, int i);
 static void load_sections(struct readelf *re);
 static const char *mips_abi_fp(uint64_t fp);
-static const char *note_type(unsigned int osabi, unsigned int et,
+static const char *note_type(const char *note_name, unsigned int et,
     unsigned int nt);
+static const char *note_type_freebsd(unsigned int nt);
+static const char *note_type_freebsd_core(unsigned int nt);
+static const char *note_type_linux_core(unsigned int nt);
+static const char *note_type_gnu(unsigned int nt);
+static const char *note_type_netbsd(unsigned int nt);
+static const char *note_type_openbsd(unsigned int nt);
+static const char *note_type_unknown(unsigned int nt);
 static const char *option_kind(uint8_t kind);
 static const char *phdr_type(unsigned int ptype);
 static const char *ppc_abi_fp(uint64_t fp);
@@ -1472,6 +1479,20 @@ r_type(unsigned int mach, unsigned int t
 		case 21: return "R_X86_64_DTPOFF32";
 		case 22: return "R_X86_64_GOTTPOFF";
 		case 23: return "R_X86_64_TPOFF32";
+		case 24: return "R_X86_64_PC64";
+		case 25: return "R_X86_64_GOTOFF64";
+		case 26: return "R_X86_64_GOTPC32";
+		case 27: return "R_X86_64_GOT64";
+		case 28: return "R_X86_64_GOTPCREL64";
+		case 29: return "R_X86_64_GOTPC64";
+		case 30: return "R_X86_64_GOTPLT64";
+		case 31: return "R_X86_64_PLTOFF64";
+		case 32: return "R_X86_64_SIZE32";
+		case 33: return "R_X86_64_SIZE64";
+		case 34: return "R_X86_64_GOTPC32_TLSDESC";
+		case 35: return "R_X86_64_TLSDESC_CALL";
+		case 36: return "R_X86_64_TLSDESC";
+		case 37: return "R_X86_64_IRELATIVE";
 		default: return "";
 		}
 	default: return "";
@@ -1479,62 +1500,130 @@ r_type(unsigned int mach, unsigned int t
 }
 
 static const char *
-note_type(unsigned int osabi, unsigned int et, unsigned int nt)
+note_type(const char *name, unsigned int et, unsigned int nt)
 {
-	static char s_nt[32];
+	if ((strcmp(name, "CORE") == 0 || strcmp(name, "LINUX") == 0) &&
+	    et == ET_CORE)
+		return note_type_linux_core(nt);
+	else if (strcmp(name, "FreeBSD") == 0)
+		if (et == ET_CORE)
+			return note_type_freebsd_core(nt);
+		else
+			return note_type_freebsd(nt);
+	else if (strcmp(name, "GNU") == 0 && et != ET_CORE)
+		return note_type_gnu(nt);
+	else if (strcmp(name, "NetBSD") == 0 && et != ET_CORE)
+		return note_type_netbsd(nt);
+	else if (strcmp(name, "OpenBSD") == 0 && et != ET_CORE)
+		return note_type_openbsd(nt);
+	return note_type_unknown(nt);
+}
 
-	if (et == ET_CORE) {
-		switch (nt) {
-		case NT_PRSTATUS:
-			return "NT_PRSTATUS (Process status)";
-		case NT_FPREGSET:
-			return "NT_FPREGSET (Floating point information)";
-		case NT_PRPSINFO:
-			return "NT_PRPSINFO (Process information)";
-		case NT_AUXV:
-			return "NT_AUXV (Auxiliary vector)";
-		case NT_PRXFPREG:
-			return "NT_PRXFPREG (Linux user_xfpregs structure)";
-		case NT_PSTATUS:
-			return "NT_PSTATUS (Linux process status)";
-		case NT_FPREGS:
-			return "NT_FPREGS (Linux floating point regset)";
-		case NT_PSINFO:
-			return "NT_PSINFO (Linux process information)";
-		case NT_LWPSTATUS:
-			return "NT_LWPSTATUS (Linux lwpstatus_t type)";
-		case NT_LWPSINFO:
-			return "NT_LWPSINFO (Linux lwpinfo_t type)";
-		default:
-			snprintf(s_nt, sizeof(s_nt), "<unknown: %u>", nt);
-			return (s_nt);
-		}
-	} else {
-		switch (nt) {
-		case NT_ABI_TAG:
-			switch (osabi) {
-			case ELFOSABI_FREEBSD:
-				return "NT_FREEBSD_ABI_TAG";
-			case ELFOSABI_NETBSD:
-				return "NT_NETBSD_IDENT";
-			case ELFOSABI_OPENBSD:
-				return "NT_OPENBSD_IDENT";
-			default:
-				return "NT_GNU_ABI_TAG";
-			}
-		case NT_GNU_HWCAP:
-			return "NT_GNU_HWCAP (Hardware capabilities)";
-		case NT_GNU_BUILD_ID:
-			return "NT_GNU_BUILD_ID (Build id set by ld(1))";
-		case NT_GNU_GOLD_VERSION:
-			return "NT_GNU_GOLD_VERSION (GNU gold version)";
-		default:
-			snprintf(s_nt, sizeof(s_nt), "<unknown: %u>", nt);
-			return (s_nt);
-		}
+static const char *
+note_type_freebsd(unsigned int nt)
+{
+	switch (nt) {
+	case 1: return "NT_FREEBSD_ABI_TAG";
+	case 2: return "NT_FREEBSD_NOINIT_TAG";

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502171434.t1HEYBXP047279>