svn commit: r349544 - in vendor/elftoolchain/dist: . addr2line common documentation/libelf-by-example elfcopy elfdump libdwarf libelf libelftc mk nm readelf test/ar/tc/add-nonexistent/out test/libe...
Ed Maste
emaste at FreeBSD.org
Sat Jun 29 15:27:24 UTC 2019
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 ***
More information about the svn-src-all
mailing list