Author: emaste
Date: Sat Jun 29 15:27:18 2019
New Revision: 349544
URL: https://svnweb.freebsd.org/changeset/base/349544

Log:
  Import ELF Tool Chain snapshot at r3769
  
  From https://svn.code.sf.net/p/elftoolchain/code/

Added:
  vendor/elftoolchain/dist/.cirrus.yml
  vendor/elftoolchain/dist/libelf/os.Linux.mk   (contents, props changed)
  vendor/elftoolchain/dist/test/ar/tc/add-nonexistent/out/archive.a   
(contents, props changed)
  vendor/elftoolchain/dist/test/libelf/tset/common/ehdr-malformed-1.yaml
  vendor/elftoolchain/dist/test/libelf/tset/elf_begin/entry-too-large.ar   
(contents, props changed)
  vendor/elftoolchain/dist/test/libelf/tset/elf_rand/
  vendor/elftoolchain/dist/test/libelf/tset/elf_rand/Makefile   (contents, 
props changed)
  vendor/elftoolchain/dist/test/libelf/tset/elf_rand/empty-file.ar   (contents, 
props changed)
  vendor/elftoolchain/dist/test/libelf/tset/elf_rand/missing-file.ar   
(contents, props changed)
  vendor/elftoolchain/dist/test/libelf/tset/elf_rand/rand.m4
  vendor/elftoolchain/dist/test/libtest/driver/driver.c   (contents, props 
changed)
  vendor/elftoolchain/dist/test/libtest/driver/driver.h   (contents, props 
changed)
  vendor/elftoolchain/dist/test/libtest/driver/driver_main.c   (contents, props 
changed)
  vendor/elftoolchain/dist/test/libtest/driver/test_driver.1   (contents, props 
changed)
  vendor/elftoolchain/dist/test/libtest/lib/test_case.h   (contents, props 
changed)
Deleted:
  vendor/elftoolchain/dist/test/libtest/driver/test_main.c
  vendor/elftoolchain/dist/test/libtest/lib/test_runner.c
  vendor/elftoolchain/dist/test/libtest/lib/test_runner.h
Modified:
  vendor/elftoolchain/dist/README.rst
  vendor/elftoolchain/dist/addr2line/addr2line.c
  vendor/elftoolchain/dist/common/elfdefinitions.h
  vendor/elftoolchain/dist/common/native-elf-format
  vendor/elftoolchain/dist/documentation/libelf-by-example/libelf-by-example.tex
  vendor/elftoolchain/dist/documentation/libelf-by-example/prog3.txt
  vendor/elftoolchain/dist/documentation/libelf-by-example/prog4.txt
  vendor/elftoolchain/dist/documentation/libelf-by-example/prog6.txt
  vendor/elftoolchain/dist/elfcopy/ascii.c
  vendor/elftoolchain/dist/elfcopy/binary.c
  vendor/elftoolchain/dist/elfcopy/elfcopy.h
  vendor/elftoolchain/dist/elfcopy/main.c
  vendor/elftoolchain/dist/elfcopy/sections.c
  vendor/elftoolchain/dist/elfdump/elfdump.c
  vendor/elftoolchain/dist/libdwarf/dwarf.h
  vendor/elftoolchain/dist/libdwarf/dwarf_dump.c
  vendor/elftoolchain/dist/libdwarf/libdwarf_attr.c
  vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c
  vendor/elftoolchain/dist/libelf/_libelf.h
  vendor/elftoolchain/dist/libelf/_libelf_config.h
  vendor/elftoolchain/dist/libelf/elf.3
  vendor/elftoolchain/dist/libelf/elf_data.c
  vendor/elftoolchain/dist/libelf/elf_end.c
  vendor/elftoolchain/dist/libelf/elf_flagdata.3
  vendor/elftoolchain/dist/libelf/elf_getdata.3
  vendor/elftoolchain/dist/libelf/elf_getident.c
  vendor/elftoolchain/dist/libelf/elf_next.3
  vendor/elftoolchain/dist/libelf/elf_next.c
  vendor/elftoolchain/dist/libelf/elf_open.3
  vendor/elftoolchain/dist/libelf/elf_rand.c
  vendor/elftoolchain/dist/libelf/elf_rawfile.c
  vendor/elftoolchain/dist/libelf/elf_scn.c
  vendor/elftoolchain/dist/libelf/elf_update.3
  vendor/elftoolchain/dist/libelf/elf_update.c
  vendor/elftoolchain/dist/libelf/gelf.3
  vendor/elftoolchain/dist/libelf/gelf_cap.c
  vendor/elftoolchain/dist/libelf/gelf_dyn.c
  vendor/elftoolchain/dist/libelf/gelf_getcap.3
  vendor/elftoolchain/dist/libelf/gelf_getdyn.3
  vendor/elftoolchain/dist/libelf/gelf_getmove.3
  vendor/elftoolchain/dist/libelf/gelf_getrel.3
  vendor/elftoolchain/dist/libelf/gelf_getrela.3
  vendor/elftoolchain/dist/libelf/gelf_getsym.3
  vendor/elftoolchain/dist/libelf/gelf_getsyminfo.3
  vendor/elftoolchain/dist/libelf/gelf_getsymshndx.3
  vendor/elftoolchain/dist/libelf/gelf_move.c
  vendor/elftoolchain/dist/libelf/gelf_newehdr.3
  vendor/elftoolchain/dist/libelf/gelf_newphdr.3
  vendor/elftoolchain/dist/libelf/gelf_rel.c
  vendor/elftoolchain/dist/libelf/gelf_rela.c
  vendor/elftoolchain/dist/libelf/gelf_sym.c
  vendor/elftoolchain/dist/libelf/gelf_syminfo.c
  vendor/elftoolchain/dist/libelf/gelf_symshndx.c
  vendor/elftoolchain/dist/libelf/libelf_allocate.c
  vendor/elftoolchain/dist/libelf/libelf_ar.c
  vendor/elftoolchain/dist/libelf/libelf_convert.m4
  vendor/elftoolchain/dist/libelf/libelf_data.c
  vendor/elftoolchain/dist/libelf/libelf_ehdr.c
  vendor/elftoolchain/dist/libelf/libelf_extended.c
  vendor/elftoolchain/dist/libelf/libelf_memory.c
  vendor/elftoolchain/dist/libelf/libelf_msize.m4
  vendor/elftoolchain/dist/libelf/libelf_phdr.c
  vendor/elftoolchain/dist/libelf/libelf_xlate.c
  vendor/elftoolchain/dist/libelftc/elftc_bfd_find_target.3
  vendor/elftoolchain/dist/libelftc/elftc_reloc_type_str.c
  vendor/elftoolchain/dist/libelftc/elftc_string_table.c
  vendor/elftoolchain/dist/libelftc/elftc_string_table_create.3
  vendor/elftoolchain/dist/libelftc/libelftc.h
  vendor/elftoolchain/dist/libelftc/libelftc_bfdtarget.c
  vendor/elftoolchain/dist/libelftc/make-toolchain-version
  vendor/elftoolchain/dist/mk/elftoolchain.subdir.mk
  vendor/elftoolchain/dist/mk/elftoolchain.test.mk
  vendor/elftoolchain/dist/nm/nm.c
  vendor/elftoolchain/dist/readelf/readelf.1
  vendor/elftoolchain/dist/readelf/readelf.c
  vendor/elftoolchain/dist/test/libelf/tset/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/bin/elfc
  vendor/elftoolchain/dist/test/libelf/tset/common/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/common/ehdr_template.m4
  vendor/elftoolchain/dist/test/libelf/tset/elf32_getehdr/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/elf32_newehdr/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/elf64_getehdr/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/elf64_newehdr/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/elf_begin/Makefile
  vendor/elftoolchain/dist/test/libelf/tset/elf_begin/begin.m4
  vendor/elftoolchain/dist/test/libelf/tset/elf_getdata/getdata.m4
  vendor/elftoolchain/dist/test/libtest/Makefile
  vendor/elftoolchain/dist/test/libtest/README.rst
  vendor/elftoolchain/dist/test/libtest/bin/make-test-scaffolding
  vendor/elftoolchain/dist/test/libtest/driver/Makefile
  vendor/elftoolchain/dist/test/libtest/examples/minimal_example.c
  vendor/elftoolchain/dist/test/libtest/examples/simple_example.c
  vendor/elftoolchain/dist/test/libtest/lib/Makefile
  vendor/elftoolchain/dist/test/libtest/lib/test.3
  vendor/elftoolchain/dist/test/libtest/lib/test.h
  vendor/elftoolchain/dist/test/nm/ts/Makefile.tset
  vendor/elftoolchain/dist/test/tet/patches/configure.patch

Added: vendor/elftoolchain/dist/.cirrus.yml
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ vendor/elftoolchain/dist/.cirrus.yml        Sat Jun 29 15:27:18 2019        
(r349544)
@@ -0,0 +1,22 @@
+freebsd_11_task:
+  freebsd_instance:
+    image: freebsd-11-2-release-amd64
+  install_script: pkg install -y git py27-yaml
+  script:
+    - fetch 
http://tetworks.opengroup.org/downloads/38/software/Sources/3.8/tet3.8-src.tar.gz
+    - tar -x -C test/tet -f tet3.8-src.tar.gz
+    - make
+
+debian_stable_task:
+  container:
+    image: debian:stable
+  setup_script:
+    - apt-get update
+    - apt-get install -y
+      binutils bison bmake curl flex g++ gcc git
+      libarchive-dev libbsd-dev libc6-dev libexpat1-dev lsb-release
+      m4 perl python-yaml sharutils zlib1g-dev
+  script:
+    - curl -O 
http://tetworks.opengroup.org/downloads/38/software/Sources/3.8/tet3.8-src.tar.gz
+    - tar -x -C test/tet -z -f tet3.8-src.tar.gz
+    - bmake

Modified: vendor/elftoolchain/dist/README.rst
==============================================================================
--- vendor/elftoolchain/dist/README.rst Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/README.rst Sat Jun 29 15:27:18 2019        
(r349544)
@@ -62,12 +62,12 @@ The project uses subversion_ for its version control s
 The subversion branch for the current set of sources may be accessed
 at the following URL::
 
-    https://elftoolchain.svn.sourceforge.net/svnroot/elftoolchain/trunk
+    https://sourceforge.net/p/elftoolchain/code/HEAD/tree/trunk/
 
 The project's source tree may be checked out from its repository by
 using the ``svn checkout`` command::
 
-    % svn checkout 
https://elftoolchain.svn.sourceforge.net/svnroot/elftoolchain/trunk
+    % svn checkout https://svn.code.sf.net/p/elftoolchain/code/trunk
 
 Checked-out sources may be kept upto-date by running ``svn update``
 inside the source directory::
@@ -105,10 +105,10 @@ The project's developers may be contacted using the ma
 Reporting Bugs
 --------------
 
-Please use our `Trac instance`_ for viewing existing bug reports and
+Please use our `bug tracker`_ for viewing existing bug reports and
 for submitting new bug reports.
 
-.. _`Trac instance`: http://sourceforge.net/apps/trac/elftoolchain/report
+.. _`bug tracker`: https://sourceforge.net/p/elftoolchain/tickets/
 
 
 Additional Information
@@ -119,7 +119,7 @@ website`_.
 
 .. _project website:  http://elftoolchain.sourceforge.net/
 
-.. $Id: README.rst 3656 2018-12-26 09:46:24Z jkoshy $
+.. $Id: README.rst 3677 2019-02-11 09:37:09Z jkoshy $
 
 .. Local Variables:
 .. mode: rst

Modified: vendor/elftoolchain/dist/addr2line/addr2line.c
==============================================================================
--- vendor/elftoolchain/dist/addr2line/addr2line.c      Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/addr2line/addr2line.c      Sat Jun 29 15:27:18 
2019        (r349544)
@@ -40,7 +40,7 @@
 #include "uthash.h"
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: addr2line.c 3544 2017-06-05 14:51:44Z emaste $");
+ELFTC_VCSID("$Id: addr2line.c 3499 2016-11-25 16:06:29Z emaste $");
 
 struct Func {
        char *name;

Modified: vendor/elftoolchain/dist/common/elfdefinitions.h
==============================================================================
--- vendor/elftoolchain/dist/common/elfdefinitions.h    Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/common/elfdefinitions.h    Sat Jun 29 15:27:18 
2019        (r349544)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: elfdefinitions.h 3515 2017-01-24 22:04:22Z emaste $
+ * $Id: elfdefinitions.h 3769 2019-06-29 15:15:02Z emaste $
  */
 
 /*
@@ -72,7 +72,39 @@ _ELF_DEFINE_DF(DF_TEXTREL,          0x4,                     
\
 _ELF_DEFINE_DF(DF_BIND_NOW,         0x8,                       \
        "process relocation entries at load time")              \
 _ELF_DEFINE_DF(DF_STATIC_TLS,       0x10,                      \
-       "uses static thread-local storage")
+       "uses static thread-local storage")                     \
+_ELF_DEFINE_DF(DF_1_BIND_NOW,       0x1,                       \
+       "process relocation entries at load time")              \
+_ELF_DEFINE_DF(DF_1_GLOBAL,         0x2,                       \
+       "unused")                                               \
+_ELF_DEFINE_DF(DF_1_GROUP,          0x4,                       \
+       "object is a member of a group")                        \
+_ELF_DEFINE_DF(DF_1_NODELETE,       0x8,                       \
+       "object cannot be deleted from a process")              \
+_ELF_DEFINE_DF(DF_1_LOADFLTR,       0x10,                      \
+       "immediate load filtees")                               \
+_ELF_DEFINE_DF(DF_1_INITFIRST,      0x20,                      \
+       "initialize object first")                              \
+_ELF_DEFINE_DF(DF_1_NOOPEN,         0x40,                      \
+       "disallow dlopen()")                                    \
+_ELF_DEFINE_DF(DF_1_ORIGIN,         0x80,                      \
+       "object being loaded may refer to $ORIGIN")             \
+_ELF_DEFINE_DF(DF_1_DIRECT,         0x100,                     \
+       "direct bindings enabled")                              \
+_ELF_DEFINE_DF(DF_1_INTERPOSE,      0x400,                     \
+       "object is interposer")                                 \
+_ELF_DEFINE_DF(DF_1_NODEFLIB,       0x800,                     \
+       "ignore default library search path")                   \
+_ELF_DEFINE_DF(DF_1_NODUMP,         0x1000,                    \
+       "disallow dldump()")                                    \
+_ELF_DEFINE_DF(DF_1_CONFALT,        0x2000,                    \
+       "object is a configuration alternative")                \
+_ELF_DEFINE_DF(DF_1_ENDFILTEE,      0x4000,                    \
+       "filtee terminates filter search")                      \
+_ELF_DEFINE_DF(DF_1_DISPRELDNE,     0x8000,                    \
+       "displacement relocation done")                         \
+_ELF_DEFINE_DF(DF_1_DISPRELPND,     0x10000,                   \
+       "displacement relocation pending")
 #undef _ELF_DEFINE_DF
 #define        _ELF_DEFINE_DF(N, V, DESCR)     N = V ,
 enum {
@@ -2448,7 +2480,10 @@ _ELF_DEFINE_NT(NT_PSTATUS,       10,     "Linux process 
status")
 _ELF_DEFINE_NT(NT_FPREGS,      12,     "Linux floating point regset")  \
 _ELF_DEFINE_NT(NT_PSINFO,      13,     "Linux process information")    \
 _ELF_DEFINE_NT(NT_LWPSTATUS,   16,     "Linux lwpstatus_t type")       \
-_ELF_DEFINE_NT(NT_LWPSINFO,    17,     "Linux lwpinfo_t type")
+_ELF_DEFINE_NT(NT_LWPSINFO,    17,     "Linux lwpinfo_t type")         \
+_ELF_DEFINE_NT(NT_FREEBSD_NOINIT_TAG,  2,      "FreeBSD no .init tag") \
+_ELF_DEFINE_NT(NT_FREEBSD_ARCH_TAG,    3,      "FreeBSD arch tag")     \
+_ELF_DEFINE_NT(NT_FREEBSD_FEATURE_CTL, 4,      "FreeBSD feature control")
 
 #undef _ELF_DEFINE_NT
 #define        _ELF_DEFINE_NT(N, V, DESCR)     N = V ,
@@ -2806,7 +2841,8 @@ typedef struct {
 
 #define ELF64_R_SYM(I)         ((I) >> 32)
 #define ELF64_R_TYPE(I)                ((I) & 0xFFFFFFFFUL)
-#define ELF64_R_INFO(S,T)      (((S) << 32) + ((T) & 0xFFFFFFFFUL))
+#define ELF64_R_INFO(S,T)      \
+       (((Elf64_Xword) (S) << 32) + ((T) & 0xFFFFFFFFUL))
 
 /*
  * Symbol versioning structures.

Modified: vendor/elftoolchain/dist/common/native-elf-format
==============================================================================
--- vendor/elftoolchain/dist/common/native-elf-format   Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/common/native-elf-format   Sat Jun 29 15:27:18 
2019        (r349544)
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# $Id: native-elf-format 3650 2018-11-25 12:06:28Z jkoshy $
+# $Id: native-elf-format 3735 2019-04-25 19:44:47Z jkoshy $
 #
 # Find the native ELF format for a host platform by compiling a
 # test object and examining the resulting object.
@@ -37,6 +37,8 @@ $1 ~ "Machine:" {
             elfarch = "EM_MIPS";
         } else if (match($0, ".*[xX]86[-_]64")) {
             elfarch = "EM_X86_64";
+        } else if (match($0, "PowerPC64")) {
+            elfarch = "EM_PPC64";
         } else {
             elfarch = "unknown";
         }

Modified: 
vendor/elftoolchain/dist/documentation/libelf-by-example/libelf-by-example.tex
==============================================================================
--- 
vendor/elftoolchain/dist/documentation/libelf-by-example/libelf-by-example.tex  
    Sat Jun 29 14:55:53 2019        (r349543)
+++ 
vendor/elftoolchain/dist/documentation/libelf-by-example/libelf-by-example.tex  
    Sat Jun 29 15:27:18 2019        (r349544)
@@ -24,7 +24,7 @@
 % out of the use of this software, even if advised of the possibility of
 % such damage.
 %
-% $Id: libelf-by-example.tex 2457 2012-03-09 14:38:10Z jkoshy $
+% $Id: libelf-by-example.tex 3699 2019-02-28 06:34:53Z jkoshy $
 %
 \documentclass[a4paper,pdftex]{book}
 
@@ -2700,6 +2700,12 @@ typedef struct {
     \emph{parent} archive descriptor (referenced by
     variable \parameter{ar} in this example) to return the next
     archive member on the next call to function \function{elf\_begin}.
+
+    The \function{elf\_next} function ordinarily returns the value
+    \constant{ELF\_C\_READ}, allowing the traversal of the archive to
+    continue normally. In the event of an error the function
+    returns the value \constant{ELF\_C\_NULL}, which causes the function
+    \function{elf\_begin} to stop archive traversal.
   \item[\coref{6}] It is good programming practice to call
     \function{elf\_end} on descriptors that are no longer needed.
   \end{description}

Modified: vendor/elftoolchain/dist/documentation/libelf-by-example/prog3.txt
==============================================================================
--- vendor/elftoolchain/dist/documentation/libelf-by-example/prog3.txt  Sat Jun 
29 14:55:53 2019        (r349543)
+++ vendor/elftoolchain/dist/documentation/libelf-by-example/prog3.txt  Sat Jun 
29 15:27:18 2019        (r349544)
@@ -1,7 +1,7 @@
 /*
  * Print the ELF Program Header Table in an ELF object.
  *
- * $Id: prog3.txt 2133 2011-11-10 08:28:22Z jkoshy $
+ * $Id: prog3.txt 3686 2019-02-22 07:54:47Z jkoshy $
  */
 
 #include <err.h>
@@ -11,7 +11,6 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <vis.h>
 
 void
 print_ptype(size_t pt) @\co{7}@

Modified: vendor/elftoolchain/dist/documentation/libelf-by-example/prog4.txt
==============================================================================
--- vendor/elftoolchain/dist/documentation/libelf-by-example/prog4.txt  Sat Jun 
29 14:55:53 2019        (r349543)
+++ vendor/elftoolchain/dist/documentation/libelf-by-example/prog4.txt  Sat Jun 
29 15:27:18 2019        (r349544)
@@ -1,7 +1,7 @@
 /*
  * Print the names of ELF sections.
  *
- * $Id: prog4.txt 2133 2011-11-10 08:28:22Z jkoshy $
+ * $Id: prog4.txt 3687 2019-02-22 07:55:09Z jkoshy $
  */
 
 #include <err.h>
@@ -18,11 +18,11 @@ main(int argc, char **argv)
 {
     int fd;
     Elf *e;
-    char *name, *p, pc[4*sizeof(char)];
     Elf_Scn *scn;
     Elf_Data *data;
     GElf_Shdr shdr;
     size_t n, shstrndx, sz;
+    char *name, *p, pc[(4 * sizeof(char)) + 1];
 
     if (argc != 2)
         errx(EXIT_FAILURE, "usage: %s file-name", argv[0]);

Modified: vendor/elftoolchain/dist/documentation/libelf-by-example/prog6.txt
==============================================================================
--- vendor/elftoolchain/dist/documentation/libelf-by-example/prog6.txt  Sat Jun 
29 14:55:53 2019        (r349543)
+++ vendor/elftoolchain/dist/documentation/libelf-by-example/prog6.txt  Sat Jun 
29 15:27:18 2019        (r349544)
@@ -1,7 +1,7 @@
 /*
  * Iterate through an ar(1) archive.
  *
- * $Id: prog6.txt 2135 2011-11-10 08:59:47Z jkoshy $
+ * $Id: prog6.txt 3699 2019-02-28 06:34:53Z jkoshy $
  */
 
 #include <err.h>
@@ -16,6 +16,7 @@ main(int argc, char **argv)
 {
     int fd;
     Elf *ar, *e;
+    Elf_Cmd cmd;
     Elf_Arhdr *arh;
 
     if (argc != 2)
@@ -39,7 +40,8 @@ main(int argc, char **argv)
         errx(EXIT_FAILURE, "%s is not an ar(1) archive.",
             argv[1]);
 
-    while ((e = elf_begin(fd, ELF_C_READ, ar)) != NULL) { @\co{3}@
+    cmd = ELF_C_READ;
+    while ((e = elf_begin(fd, cmd, ar)) != NULL) { @\co{3}@
         if ((arh = elf_getarhdr(e)) == NULL) @\co{4}@
             errx(EXIT_FAILURE, "elf_getarhdr() failed: %s.",
                 elf_errmsg(-1));
@@ -47,7 +49,7 @@ main(int argc, char **argv)
         (void) printf("%20s %zd\n", arh->ar_name,
             arh->ar_size);
 
-        (void) elf_next(e); @\co{5}@
+        cmd = elf_next(e); @\co{5}@
         (void) elf_end(e); @\co{6}@
     }
 

Modified: vendor/elftoolchain/dist/elfcopy/ascii.c
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/ascii.c    Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/elfcopy/ascii.c    Sat Jun 29 15:27:18 2019        
(r349544)
@@ -36,7 +36,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: ascii.c 3487 2016-08-24 18:12:08Z emaste $");
+ELFTC_VCSID("$Id: ascii.c 3757 2019-06-28 01:15:28Z emaste $");
 
 static void append_data(struct section *s, const void *buf, size_t sz);
 static char hex_digit(uint8_t n);
@@ -378,9 +378,6 @@ done:
                errx(EXIT_FAILURE, "gelf_update_ehdr() failed: %s",
                    elf_errmsg(-1));
 
-       /* Generate section name string table (.shstrtab). */
-       set_shstrtab(ecp);
-
        /* Update sh_name pointer for each section header entry. */
        update_shdr(ecp, 0);
 
@@ -604,9 +601,6 @@ done:
        if (gelf_update_ehdr(ecp->eout, &oeh) == 0)
                errx(EXIT_FAILURE, "gelf_update_ehdr() failed: %s",
                    elf_errmsg(-1));
-
-       /* Generate section name string table (.shstrtab). */
-       set_shstrtab(ecp);
 
        /* Update sh_name pointer for each section header entry. */
        update_shdr(ecp, 0);

Modified: vendor/elftoolchain/dist/elfcopy/binary.c
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/binary.c   Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/elfcopy/binary.c   Sat Jun 29 15:27:18 2019        
(r349544)
@@ -36,7 +36,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: binary.c 3611 2018-04-16 21:35:18Z jkoshy $");
+ELFTC_VCSID("$Id: binary.c 3757 2019-06-28 01:15:28Z emaste $");
 
 /*
  * Convert ELF object to `binary'. Sections with SHF_ALLOC flag set
@@ -250,11 +250,8 @@ create_elf_from_binary(struct elfcopy *ecp, int ifd, c
                errx(EXIT_FAILURE, "gelf_update_ehdr() failed: %s",
                    elf_errmsg(-1));
 
-       /* Generate section name string table (.shstrtab). */
-       ecp->flags |= SYMTAB_EXIST;
-       set_shstrtab(ecp);
-
        /* Update sh_name pointer for each section header entry. */
+       ecp->flags |= SYMTAB_EXIST;
        update_shdr(ecp, 0);
 
        /* Properly set sh_link field of .symtab section. */

Modified: vendor/elftoolchain/dist/elfcopy/elfcopy.h
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/elfcopy.h  Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/elfcopy/elfcopy.h  Sat Jun 29 15:27:18 2019        
(r349544)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: elfcopy.h 3615 2018-05-17 04:12:24Z kaiwang27 $
+ * $Id: elfcopy.h 3757 2019-06-28 01:15:28Z emaste $
  */
 
 #include <sys/queue.h>
@@ -135,9 +135,13 @@ struct section {
        int              pseudo;
        int              nocopy;
 
+       Elftc_String_Table *strtab;
+
        TAILQ_ENTRY(section) sec_list;  /* next section */
 };
 
+TAILQ_HEAD(sectionlist, section);
+
 /* Internal data structure for segments. */
 struct segment {
        uint64_t        vaddr;  /* virtual addr (VMA) */
@@ -311,7 +315,6 @@ struct sec_action *lookup_sec_act(struct elfcopy *_ecp
 struct symop *lookup_symop_list(struct elfcopy *_ecp, const char *_name,
     unsigned int _op);
 void   resync_sections(struct elfcopy *_ecp);
-void   set_shstrtab(struct elfcopy *_ecp);
 void   setup_phdr(struct elfcopy *_ecp);
 void   update_shdr(struct elfcopy *_ecp, int _update_link);
 

Modified: vendor/elftoolchain/dist/elfcopy/main.c
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/main.c     Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/elfcopy/main.c     Sat Jun 29 15:27:18 2019        
(r349544)
@@ -39,7 +39,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: main.c 3577 2017-09-14 02:19:42Z emaste $");
+ELFTC_VCSID("$Id: main.c 3757 2019-06-28 01:15:28Z emaste $");
 
 enum options
 {
@@ -388,9 +388,6 @@ create_elf(struct elfcopy *ecp)
                errx(EXIT_FAILURE, "gelf_update_ehdr() failed: %s",
                    elf_errmsg(-1));
 
-       /* Generate section name string table (.shstrtab). */
-       set_shstrtab(ecp);
-
        /*
         * Second processing of output sections: Update section headers.
         * At this stage we set name string index, update st_link and st_info
@@ -486,6 +483,9 @@ free_elf(struct elfcopy *ecp)
        /* Free symbol table buffers. */
        free_symtab(ecp);
 
+       /* Free section name string table. */
+       elftc_string_table_destroy(ecp->shstrtab->strtab);
+
        /* Free internal section list. */
        if (!TAILQ_EMPTY(&ecp->v_sec)) {
                TAILQ_FOREACH_SAFE(sec, &ecp->v_sec, sec_list, sec_temp) {
@@ -1565,7 +1565,6 @@ main(int argc, char **argv)
        ecp = calloc(1, sizeof(*ecp));
        if (ecp == NULL)
                err(EXIT_FAILURE, "calloc failed");
-       memset(ecp, 0, sizeof(*ecp));
 
        ecp->itf = ecp->otf = ETF_ELF;
        ecp->iec = ecp->oec = ELFCLASSNONE;

Modified: vendor/elftoolchain/dist/elfcopy/sections.c
==============================================================================
--- vendor/elftoolchain/dist/elfcopy/sections.c Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/elfcopy/sections.c Sat Jun 29 15:27:18 2019        
(r349544)
@@ -34,7 +34,7 @@
 
 #include "elfcopy.h"
 
-ELFTC_VCSID("$Id: sections.c 3646 2018-10-27 02:25:39Z emaste $");
+ELFTC_VCSID("$Id: sections.c 3758 2019-06-28 01:16:50Z emaste $");
 
 static void    add_gnu_debuglink(struct elfcopy *ecp);
 static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc);
@@ -42,19 +42,18 @@ static void check_section_rename(struct elfcopy *ecp, 
 static void    filter_reloc(struct elfcopy *ecp, struct section *s);
 static int     get_section_flags(struct elfcopy *ecp, const char *name);
 static void    insert_sections(struct elfcopy *ecp);
-static void    insert_to_strtab(struct section *t, const char *s);
 static int     is_append_section(struct elfcopy *ecp, const char *name);
 static int     is_compress_section(struct elfcopy *ecp, const char *name);
 static int     is_debug_section(const char *name);
 static int     is_dwo_section(const char *name);
 static int     is_modify_section(struct elfcopy *ecp, const char *name);
 static int     is_print_section(struct elfcopy *ecp, const char *name);
-static int     lookup_string(struct section *t, const char *s);
 static void    modify_section(struct elfcopy *ecp, struct section *s);
 static void    pad_section(struct elfcopy *ecp, struct section *s);
 static void    print_data(const char *d, size_t sz);
 static void    print_section(struct section *s);
 static void    *read_section(struct section *s, size_t *size);
+static void    set_shstrtab(struct elfcopy *ecp);
 static void    update_reloc(struct elfcopy *ecp, struct section *s);
 static void    update_section_group(struct elfcopy *ecp, struct section *s);
 
@@ -119,21 +118,19 @@ is_remove_reloc_sec(struct elfcopy *ecp, uint32_t sh_i
                errx(EXIT_FAILURE, "elf_getshstrndx failed: %s",
                    elf_errmsg(-1));
 
-       is = NULL;
-       while ((is = elf_nextscn(ecp->ein, is)) != NULL) {
-               if (sh_info == elf_ndxscn(is)) {
-                       if (gelf_getshdr(is, &ish) == NULL)
-                               errx(EXIT_FAILURE, "gelf_getshdr failed: %s",
-                                   elf_errmsg(-1));
-                       if ((name = elf_strptr(ecp->ein, indx, ish.sh_name)) ==
-                           NULL)
-                               errx(EXIT_FAILURE, "elf_strptr failed: %s",
-                                   elf_errmsg(-1));
-                       if (is_remove_section(ecp, name))
-                               return (1);
-                       else
-                               return (0);
-               }
+       is = elf_getscn(ecp->ein, sh_info);
+       if (is != NULL) {
+               if (gelf_getshdr(is, &ish) == NULL)
+                       errx(EXIT_FAILURE, "gelf_getshdr failed: %s",
+                           elf_errmsg(-1));
+               if ((name = elf_strptr(ecp->ein, indx, ish.sh_name)) ==
+                   NULL)
+                       errx(EXIT_FAILURE, "elf_strptr failed: %s",
+                           elf_errmsg(-1));
+               if (is_remove_section(ecp, name))
+                       return (1);
+               else
+                       return (0);
        }
        elferr = elf_errno();
        if (elferr != 0)
@@ -314,18 +311,18 @@ insert_to_sec_list(struct elfcopy *ecp, struct section
 {
        struct section *s;
 
-       if (!tail) {
+       if (tail || TAILQ_EMPTY(&ecp->v_sec) ||
+           TAILQ_LAST(&ecp->v_sec, sectionlist)->off <= sec->off) {
+               TAILQ_INSERT_TAIL(&ecp->v_sec, sec, sec_list);
+       } else {
                TAILQ_FOREACH(s, &ecp->v_sec, sec_list) {
                        if (sec->off < s->off) {
                                TAILQ_INSERT_BEFORE(s, sec, sec_list);
-                               goto inc_nos;
+                               break;
                        }
                }
        }
 
-       TAILQ_INSERT_TAIL(&ecp->v_sec, sec, sec_list);
-
-inc_nos:
        if (sec->pseudo == 0)
                ecp->nos++;
 }
@@ -711,13 +708,13 @@ filter_reloc(struct elfcopy *ecp, struct section *s)
 #define        COPYREL(REL, SZ) do {                                   \
        if (nrels == 0) {                                       \
                if ((REL##SZ = malloc(cap *                     \
-                   sizeof(Elf##SZ##_Rel))) == NULL)            \
+                   sizeof(*REL##SZ))) == NULL)                 \
                        err(EXIT_FAILURE, "malloc failed");     \
        }                                                       \
        if (nrels >= cap) {                                     \
                cap *= 2;                                       \
                if ((REL##SZ = realloc(REL##SZ, cap *           \
-                   sizeof(Elf##SZ##_Rel))) == NULL)            \
+                   sizeof(*REL##SZ))) == NULL)                 \
                        err(EXIT_FAILURE, "realloc failed");    \
        }                                                       \
        REL##SZ[nrels].r_offset = REL.r_offset;                 \
@@ -1335,10 +1332,9 @@ insert_sections(struct elfcopy *ecp)
 void
 add_to_shstrtab(struct elfcopy *ecp, const char *name)
 {
-       struct section *s;
 
-       s = ecp->shstrtab;
-       insert_to_strtab(s, name);
+       if (elftc_string_table_insert(ecp->shstrtab->strtab, name) == 0)
+               errx(EXIT_FAILURE, "elftc_string_table_insert failed");
 }
 
 void
@@ -1348,6 +1344,9 @@ update_shdr(struct elfcopy *ecp, int update_link)
        GElf_Shdr        osh;
        int              elferr;
 
+       /* Finalize the section name string table (.shstrtab). */
+       set_shstrtab(ecp);
+
        TAILQ_FOREACH(s, &ecp->v_sec, sec_list) {
                if (s->pseudo)
                        continue;
@@ -1357,7 +1356,8 @@ update_shdr(struct elfcopy *ecp, int update_link)
                            elf_errmsg(-1));
 
                /* Find section name in string table and set sh_name. */
-               osh.sh_name = lookup_string(ecp->shstrtab, s->name);
+               osh.sh_name = elftc_string_table_lookup(ecp->shstrtab->strtab,
+                   s->name);
 
                /*
                 * sh_link needs to be updated, since the index of the
@@ -1395,8 +1395,24 @@ update_shdr(struct elfcopy *ecp, int update_link)
 void
 init_shstrtab(struct elfcopy *ecp)
 {
+       Elf_Scn *shstrtab;
+       GElf_Shdr shdr;
        struct section *s;
+       size_t indx, sizehint;
 
+       if (elf_getshstrndx(ecp->ein, &indx) != 0) {
+               shstrtab = elf_getscn(ecp->ein, indx);
+               if (shstrtab == NULL)
+                       errx(EXIT_FAILURE, "elf_getscn failed: %s",
+                           elf_errmsg(-1));
+               if (gelf_getshdr(shstrtab, &shdr) != &shdr)
+                       errx(EXIT_FAILURE, "gelf_getshdr failed: %s",
+                           elf_errmsg(-1));
+               sizehint = shdr.sh_size;
+       } else {
+               sizehint = 0;
+       }
+
        if ((ecp->shstrtab = calloc(1, sizeof(*ecp->shstrtab))) == NULL)
                err(EXIT_FAILURE, "calloc failed");
        s = ecp->shstrtab;
@@ -1407,19 +1423,22 @@ init_shstrtab(struct elfcopy *ecp)
        s->loadable = 0;
        s->type = SHT_STRTAB;
        s->vma = 0;
+       s->strtab = elftc_string_table_create(sizehint);
 
-       insert_to_strtab(s, "");
-       insert_to_strtab(s, ".symtab");
-       insert_to_strtab(s, ".strtab");
-       insert_to_strtab(s, ".shstrtab");
+       add_to_shstrtab(ecp, "");
+       add_to_shstrtab(ecp, ".symtab");
+       add_to_shstrtab(ecp, ".strtab");
+       add_to_shstrtab(ecp, ".shstrtab");
 }
 
-void
+static void
 set_shstrtab(struct elfcopy *ecp)
 {
        struct section  *s;
        Elf_Data        *data;
        GElf_Shdr        sh;
+       const char      *image;
+       size_t           sz;
 
        s = ecp->shstrtab;
 
@@ -1452,19 +1471,21 @@ set_shstrtab(struct elfcopy *ecp)
         * which are reserved for this in the beginning of shstrtab.
         */
        if (!(ecp->flags & SYMTAB_EXIST)) {
-               s->sz -= sizeof(".symtab\0.strtab");
-               memmove(s->buf, (char *)s->buf + sizeof(".symtab\0.strtab"),
-                   s->sz);
+               elftc_string_table_remove(s->strtab, ".symtab");
+               elftc_string_table_remove(s->strtab, ".strtab");
        }
 
-       sh.sh_size      = s->sz;
+       image = elftc_string_table_image(s->strtab, &sz);
+       s->sz = sz;
+
+       sh.sh_size      = sz;
        if (!gelf_update_shdr(s->os, &sh))
                errx(EXIT_FAILURE, "gelf_update_shdr() failed: %s",
                    elf_errmsg(-1));
 
        data->d_align   = 1;
-       data->d_buf     = s->buf;
-       data->d_size    = s->sz;
+       data->d_buf     = (void *)(uintptr_t)image;
+       data->d_size    = sz;
        data->d_off     = 0;
        data->d_type    = ELF_T_BYTE;
        data->d_version = EV_CURRENT;
@@ -1588,73 +1609,6 @@ add_gnu_debuglink(struct elfcopy *ecp)
 
        STAILQ_INSERT_TAIL(&ecp->v_sadd, sa, sadd_list);
        ecp->flags |= SEC_ADD;
-}
-
-static void
-insert_to_strtab(struct section *t, const char *s)
-{
-       const char      *r;
-       char            *b, *c;
-       size_t           len, slen;
-       int              append;
-
-       if (t->sz == 0) {
-               t->cap = 512;
-               if ((t->buf = malloc(t->cap)) == NULL)
-                       err(EXIT_FAILURE, "malloc failed");
-       }
-
-       slen = strlen(s);
-       append = 0;
-       b = t->buf;
-       for (c = b; c < b + t->sz;) {
-               len = strlen(c);
-               if (!append && len >= slen) {
-                       r = c + (len - slen);
-                       if (strcmp(r, s) == 0)
-                               return;
-               } else if (len < slen && len != 0) {
-                       r = s + (slen - len);
-                       if (strcmp(c, r) == 0) {
-                               t->sz -= len + 1;
-                               memmove(c, c + len + 1, t->sz - (c - b));
-                               append = 1;
-                               continue;
-                       }
-               }
-               c += len + 1;
-       }
-
-       while (t->sz + slen + 1 >= t->cap) {
-               t->cap *= 2;
-               if ((t->buf = realloc(t->buf, t->cap)) == NULL)
-                       err(EXIT_FAILURE, "realloc failed");
-       }
-       b = t->buf;
-       strncpy(&b[t->sz], s, slen);
-       b[t->sz + slen] = '\0';
-       t->sz += slen + 1;
-}
-
-static int
-lookup_string(struct section *t, const char *s)
-{
-       const char      *b, *c, *r;
-       size_t           len, slen;
-
-       slen = strlen(s);
-       b = t->buf;
-       for (c = b; c < b + t->sz;) {
-               len = strlen(c);
-               if (len >= slen) {
-                       r = c + (len - slen);
-                       if (strcmp(r, s) == 0)
-                               return (r - b);
-               }
-               c += len + 1;
-       }
-
-       return (-1);
 }
 
 static uint32_t crctable[256] =

Modified: vendor/elftoolchain/dist/elfdump/elfdump.c
==============================================================================
--- vendor/elftoolchain/dist/elfdump/elfdump.c  Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/elfdump/elfdump.c  Sat Jun 29 15:27:18 2019        
(r349544)
@@ -50,7 +50,7 @@
 
 #include "_elftc.h"
 
-ELFTC_VCSID("$Id: elfdump.c 3584 2017-11-05 20:51:43Z jkoshy $");
+ELFTC_VCSID("$Id: elfdump.c 3762 2019-06-28 21:06:24Z emaste $");
 
 #if defined(ELFTC_NEED_ELF_NOTE_DEFINITION)
 #include "native-elf-format.h"
@@ -343,17 +343,20 @@ 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";
+       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";
+       case PT_OPENBSD_RANDOMIZE:      return "PT_OPENBSD_RANDOMIZE";
+       case PT_OPENBSD_WXNEEDED:       return "PT_OPENBSD_WXNEEDED";
+       case PT_OPENBSD_BOOTDATA:       return "PT_OPENBSD_BOOTDATA";
        }
        snprintf(s_type, sizeof(s_type), "<unknown: %#x>", type);
        return (s_type);

Modified: vendor/elftoolchain/dist/libdwarf/dwarf.h
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf.h   Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/libdwarf/dwarf.h   Sat Jun 29 15:27:18 2019        
(r349544)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: dwarf.h 3494 2016-09-20 17:16:13Z emaste $
+ * $Id: dwarf.h 3749 2019-06-28 01:10:44Z emaste $
  */
 
 #ifndef        _DWARF_H_
@@ -523,6 +523,24 @@
 #define DW_LANG_ObjC_plus_plus         0x0011
 #define DW_LANG_UPC                    0x0012
 #define DW_LANG_D                      0x0013
+#define DW_LANG_Python                 0x0014
+#define DW_LANG_OpenCL                 0x0015
+#define DW_LANG_Go                     0x0016
+#define DW_LANG_Modula3                        0x0017
+#define DW_LANG_Haskell                        0x0018
+#define DW_LANG_C_plus_plus_03         0x0019
+#define DW_LANG_C_plus_plus_11         0x001a
+#define DW_LANG_OCaml                  0x001b
+#define DW_LANG_Rust                   0x001c
+#define DW_LANG_C11                    0x001d
+#define DW_LANG_Swift                  0x001e
+#define DW_LANG_Julia                  0x001f
+#define DW_LANG_Dylan                  0x0020
+#define DW_LANG_C_plus_plus_14         0x0021
+#define DW_LANG_Fortran03              0x0022
+#define DW_LANG_Fortran08              0x0023
+#define DW_LANG_RenderScript           0x0024
+#define DW_LANG_BLISS                  0x0025
 #define DW_LANG_lo_user                        0x8000
 #define DW_LANG_Mips_Assembler         0x8001
 #define DW_LANG_hi_user                        0xffff

Modified: vendor/elftoolchain/dist/libdwarf/dwarf_dump.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/dwarf_dump.c      Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/libdwarf/dwarf_dump.c      Sat Jun 29 15:27:18 
2019        (r349544)
@@ -27,7 +27,7 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: dwarf_dump.c 3494 2016-09-20 17:16:13Z emaste $");
+ELFTC_VCSID("$Id: dwarf_dump.c 3749 2019-06-28 01:10:44Z emaste $");
 
 int
 dwarf_get_ACCESS_name(unsigned access, const char **s)
@@ -605,7 +605,7 @@ dwarf_get_DS_name(unsigned ds, const char **s)
        case DW_DS_leading_separate:
                *s = "DW_DS_leading_separate"; break;
        case DW_DS_trailing_separate:
-               *s = "DW_DS_trailing_separate";
+               *s = "DW_DS_trailing_separate"; break;
        default:
                return (DW_DLV_NO_ENTRY);
        }
@@ -788,6 +788,42 @@ dwarf_get_LANG_name(unsigned lang, const char **s)
                *s = "DW_LANG_UPC"; break;
        case DW_LANG_D:
                *s = "DW_LANG_D"; break;
+       case DW_LANG_Python:
+               *s = "DW_LANG_Python"; break;
+       case DW_LANG_OpenCL:
+               *s = "DW_LANG_OpenCL"; break;
+       case DW_LANG_Go:
+               *s = "DW_LANG_Go"; break;
+       case DW_LANG_Modula3:
+               *s = "DW_LANG_Modula3"; break;
+       case DW_LANG_Haskell:
+               *s = "DW_LANG_Haskell"; break;
+       case DW_LANG_C_plus_plus_03:
+               *s = "DW_LANG_C_plus_plus_03"; break;
+       case DW_LANG_C_plus_plus_11:
+               *s = "DW_LANG_C_plus_plus_11"; break;
+       case DW_LANG_OCaml:
+               *s = "DW_LANG_OCaml"; break;
+       case DW_LANG_Rust:
+               *s = "DW_LANG_Rust"; break;
+       case DW_LANG_C11:
+               *s = "DW_LANG_C11"; break;
+       case DW_LANG_Swift:
+               *s = "DW_LANG_Swift"; break;
+       case DW_LANG_Julia:
+               *s = "DW_LANG_Julia"; break;
+       case DW_LANG_Dylan:
+               *s = "DW_LANG_Dylan"; break;
+       case DW_LANG_C_plus_plus_14:
+               *s = "DW_LANG_C_plus_plus_14"; break;
+       case DW_LANG_Fortran03:
+               *s = "DW_LANG_Fortran03"; break;
+       case DW_LANG_Fortran08:
+               *s = "DW_LANG_Fortran08"; break;
+       case DW_LANG_RenderScript:
+               *s = "DW_LANG_RenderScript"; break;
+       case DW_LANG_BLISS:
+               *s = "DW_LANG_BLISS"; break;
        case DW_LANG_lo_user:
                *s = "DW_LANG_lo_user"; break;
        case DW_LANG_Mips_Assembler:

Modified: vendor/elftoolchain/dist/libdwarf/libdwarf_attr.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/libdwarf_attr.c   Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/libdwarf/libdwarf_attr.c   Sat Jun 29 15:27:18 
2019        (r349544)
@@ -27,7 +27,7 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: libdwarf_attr.c 3064 2014-06-06 19:35:55Z kaiwang27 $");
+ELFTC_VCSID("$Id: libdwarf_attr.c 3748 2019-06-28 01:11:13Z emaste $");
 
 int
 _dwarf_attr_alloc(Dwarf_Die die, Dwarf_Attribute *atp, Dwarf_Error *error)
@@ -100,7 +100,6 @@ _dwarf_attr_init(Dwarf_Debug dbg, Dwarf_Section *ds, u
     uint64_t form, int indirect, Dwarf_Error *error)
 {
        struct _Dwarf_Attribute atref;
-       Dwarf_Section *str;
        int ret;
 
        ret = DW_DLE_NONE;
@@ -183,9 +182,7 @@ _dwarf_attr_init(Dwarf_Debug dbg, Dwarf_Section *ds, u
                break;
        case DW_FORM_strp:
                atref.u[0].u64 = dbg->read(ds->ds_data, offsetp, dwarf_size);
-               str = _dwarf_find_section(dbg, ".debug_str");
-               assert(str != NULL);
-               atref.u[1].s = (char *) str->ds_data + atref.u[0].u64;
+               atref.u[1].s = _dwarf_strtab_get_table(dbg) + atref.u[0].u64;
                break;
        case DW_FORM_ref_sig8:
                atref.u[0].u64 = 8;

Modified: vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c
==============================================================================
--- vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c  Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/libdwarf/libdwarf_reloc.c  Sat Jun 29 15:27:18 
2019        (r349544)
@@ -26,7 +26,7 @@
 
 #include "_libdwarf.h"
 
-ELFTC_VCSID("$Id: libdwarf_reloc.c 3578 2017-09-14 02:21:28Z emaste $");
+ELFTC_VCSID("$Id: libdwarf_reloc.c 3741 2019-06-07 06:32:01Z jkoshy $");
 
 Dwarf_Unsigned
 _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64)
@@ -44,7 +44,7 @@ _dwarf_get_reloc_type(Dwarf_P_Debug dbg, int is64)
        case DW_ISA_SPARC:
                return (is64 ? R_SPARC_UA64 : R_SPARC_UA32);
        case DW_ISA_PPC:
-               return (R_PPC_ADDR32);
+               return (is64 ? R_PPC64_ADDR64 : R_PPC_ADDR32);
        case DW_ISA_ARM:
                return (R_ARM_ABS32);
        case DW_ISA_MIPS:
@@ -96,6 +96,12 @@ _dwarf_get_reloc_size(Dwarf_Debug dbg, Dwarf_Unsigned 
        case EM_PPC:
                if (rel_type == R_PPC_ADDR32)
                        return (4);
+               break;
+       case EM_PPC64:
+               if (rel_type == R_PPC_ADDR32)
+                       return (4);
+               else if (rel_type == R_PPC64_ADDR64)
+                       return (8);
                break;
        case EM_MIPS:
                if (rel_type == R_MIPS_32)

Modified: vendor/elftoolchain/dist/libelf/_libelf.h
==============================================================================
--- vendor/elftoolchain/dist/libelf/_libelf.h   Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/libelf/_libelf.h   Sat Jun 29 15:27:18 2019        
(r349544)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: _libelf.h 3632 2018-10-10 21:12:43Z jkoshy $
+ * $Id: _libelf.h 3738 2019-05-05 21:49:06Z jkoshy $
  */
 
 #ifndef        __LIBELF_H_
@@ -90,7 +90,7 @@ struct _Elf {
        Elf_Kind        e_kind;         /* ELF_K_* */
        Elf             *e_parent;      /* non-NULL for archive members */
        unsigned char   *e_rawfile;     /* uninterpreted bytes */
-       size_t          e_rawsize;      /* size of uninterpreted bytes */
+       off_t           e_rawsize;      /* size of uninterpreted bytes */
        unsigned int    e_version;      /* file version */
 
        /*
@@ -226,7 +226,7 @@ size_t      _libelf_msize(Elf_Type _t, int _elfclass, unsig
 void   *_libelf_newphdr(Elf *_e, int _elfclass, size_t _count);
 Elf    *_libelf_open_object(int _fd, Elf_Cmd _c, int _reporterror);
 struct _Libelf_Data *_libelf_release_data(struct _Libelf_Data *_d);
-Elf    *_libelf_release_elf(Elf *_e);
+void   _libelf_release_elf(Elf *_e);
 Elf_Scn        *_libelf_release_scn(Elf_Scn *_s);
 int    _libelf_setphnum(Elf *_e, void *_eh, int _elfclass, size_t _phnum);
 int    _libelf_setshnum(Elf *_e, void *_eh, int _elfclass, size_t _shnum);

Modified: vendor/elftoolchain/dist/libelf/_libelf_config.h
==============================================================================
--- vendor/elftoolchain/dist/libelf/_libelf_config.h    Sat Jun 29 14:55:53 
2019        (r349543)
+++ vendor/elftoolchain/dist/libelf/_libelf_config.h    Sat Jun 29 15:27:18 
2019        (r349544)
@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: _libelf_config.h 3566 2017-08-31 02:28:40Z emaste $
+ * $Id: _libelf_config.h 3764 2019-06-28 21:44:46Z emaste $
  */
 
 #if defined(__APPLE__) || defined(__DragonFly__)
@@ -98,6 +98,12 @@
 #define        LIBELF_CLASS            ELFCLASS32
 
 #elif  defined(__riscv) && (__riscv_xlen == 64)
+
+#define        LIBELF_ARCH             EM_RISCV
+#define        LIBELF_BYTEORDER        ELFDATA2LSB
+#define        LIBELF_CLASS            ELFCLASS64
+
+#elif  defined(__riscv64)
 
 #define        LIBELF_ARCH             EM_RISCV
 #define        LIBELF_BYTEORDER        ELFDATA2LSB

Modified: vendor/elftoolchain/dist/libelf/elf.3
==============================================================================
--- vendor/elftoolchain/dist/libelf/elf.3       Sat Jun 29 14:55:53 2019        
(r349543)
+++ vendor/elftoolchain/dist/libelf/elf.3       Sat Jun 29 15:27:18 2019        
(r349544)
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2006-2008,2011 Joseph Koshy.  All rights reserved.
+.\" Copyright (c) 2006-2008,2011,2019 Joseph Koshy.  All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
@@ -21,9 +21,9 @@
 .\" out of the use of this software, even if advised of the possibility of
 .\" such damage.
 .\"
-.\" $Id: elf.3 3643 2018-10-14 21:09:24Z jkoshy $
+.\" $Id: elf.3 3743 2019-06-12 19:36:30Z jkoshy $
 .\"
-.Dd October 10, 2018
+.Dd June 12, 2019
 .Dt ELF 3
 .Os
 .Sh NAME
@@ -266,36 +266,43 @@ The operating version for the data in this buffer.
 .El
 .Pp
 .Vt Elf_Data
-descriptors are usually associated with
+descriptors are usually used in conjunction with
 .Vt Elf_Scn
 descriptors.
-Existing data descriptors associated with an ELF section may be
-structures are retrieved using the
-.Fn elf_getdata
-and
-.Fn elf_rawdata
-functions.
-The
-.Fn elf_newdata
-function may be used to attach new data descriptors to an ELF section.
 .It Vt Elf_Scn
 .Vt Elf_Scn
-descriptors represent a section in an ELF object.
+descriptors represent sections in an ELF object.
+These descriptors are opaque and contain no application modifiable
+fields.
 .Pp
-They are retrieved using the
+The
+.Vt Elf_Scn

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to