Date: Sat, 10 Oct 2015 01:29:50 +0000 (UTC) From: Garrett Cooper <ngie@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r289101 - in user/ngie/more-tests2: . contrib/elftoolchain/addr2line contrib/elftoolchain/ar contrib/elftoolchain/brandelf contrib/elftoolchain/common contrib/elftoolchain/elfcopy contr... Message-ID: <201510100129.t9A1ToVO084170@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: ngie Date: Sat Oct 10 01:29:50 2015 New Revision: 289101 URL: https://svnweb.freebsd.org/changeset/base/289101 Log: MFhead @ r289100 Added: user/ngie/more-tests2/contrib/llvm/patches/patch-07-undo-llvm-r240144-iostream-sigbus.diff - copied unchanged from r289100, head/contrib/llvm/patches/patch-07-undo-llvm-r240144-iostream-sigbus.diff user/ngie/more-tests2/libexec/dma/Makefile.inc - copied unchanged from r289100, head/libexec/dma/Makefile.inc user/ngie/more-tests2/libexec/dma/dma-mbox-create/ - copied from r289100, head/libexec/dma/dma-mbox-create/ user/ngie/more-tests2/libexec/dma/dmagent/ - copied from r289100, head/libexec/dma/dmagent/ user/ngie/more-tests2/share/mk/bsd.confs.mk - copied unchanged from r289100, head/share/mk/bsd.confs.mk user/ngie/more-tests2/sys/dev/xen/console/xen_console.c - copied unchanged from r289100, head/sys/dev/xen/console/xen_console.c user/ngie/more-tests2/usr.bin/kdump/utrace.c - copied unchanged from r289100, head/usr.bin/kdump/utrace.c user/ngie/more-tests2/usr.sbin/ppp/ppp.conf - copied unchanged from r289100, head/usr.sbin/ppp/ppp.conf Replaced: user/ngie/more-tests2/libexec/dma/Makefile - copied unchanged from r289100, head/libexec/dma/Makefile Deleted: user/ngie/more-tests2/etc/dma/ user/ngie/more-tests2/etc/ppp/ user/ngie/more-tests2/libexec/dma-mbox-create/ user/ngie/more-tests2/share/examples/dma/ user/ngie/more-tests2/sys/dev/xen/console/console.c user/ngie/more-tests2/sys/dev/xen/console/xencons_ring.c user/ngie/more-tests2/sys/dev/xen/console/xencons_ring.h Modified: user/ngie/more-tests2/Makefile user/ngie/more-tests2/Makefile.inc1 user/ngie/more-tests2/contrib/elftoolchain/addr2line/addr2line.c user/ngie/more-tests2/contrib/elftoolchain/ar/ar.1 user/ngie/more-tests2/contrib/elftoolchain/ar/ar.c user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.1 user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.c user/ngie/more-tests2/contrib/elftoolchain/common/_elftc.h user/ngie/more-tests2/contrib/elftoolchain/common/elfdefinitions.h user/ngie/more-tests2/contrib/elftoolchain/elfcopy/sections.c user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.1 user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.c user/ngie/more-tests2/contrib/elftoolchain/libdwarf/dwarf_sections.c user/ngie/more-tests2/contrib/elftoolchain/readelf/readelf.c user/ngie/more-tests2/contrib/elftoolchain/size/size.c user/ngie/more-tests2/contrib/libc++/include/__hash_table user/ngie/more-tests2/contrib/libc++/include/__std_stream user/ngie/more-tests2/contrib/libc++/include/functional user/ngie/more-tests2/contrib/libc++/include/memory user/ngie/more-tests2/contrib/libc++/include/string user/ngie/more-tests2/contrib/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp user/ngie/more-tests2/contrib/tzcode/stdtime/difftime.c user/ngie/more-tests2/contrib/tzcode/stdtime/localtime.c user/ngie/more-tests2/contrib/tzcode/stdtime/private.h user/ngie/more-tests2/contrib/unbound/Makefile.in user/ngie/more-tests2/contrib/unbound/acx_nlnetlabs.m4 user/ngie/more-tests2/contrib/unbound/config.h user/ngie/more-tests2/contrib/unbound/config.h.in user/ngie/more-tests2/contrib/unbound/configure user/ngie/more-tests2/contrib/unbound/configure.ac user/ngie/more-tests2/contrib/unbound/daemon/daemon.c user/ngie/more-tests2/contrib/unbound/daemon/remote.c user/ngie/more-tests2/contrib/unbound/doc/Changelog user/ngie/more-tests2/contrib/unbound/doc/README user/ngie/more-tests2/contrib/unbound/doc/example.conf user/ngie/more-tests2/contrib/unbound/doc/example.conf.in user/ngie/more-tests2/contrib/unbound/doc/libunbound.3 user/ngie/more-tests2/contrib/unbound/doc/libunbound.3.in user/ngie/more-tests2/contrib/unbound/doc/unbound-anchor.8 user/ngie/more-tests2/contrib/unbound/doc/unbound-anchor.8.in user/ngie/more-tests2/contrib/unbound/doc/unbound-checkconf.8 user/ngie/more-tests2/contrib/unbound/doc/unbound-checkconf.8.in user/ngie/more-tests2/contrib/unbound/doc/unbound-control.8 user/ngie/more-tests2/contrib/unbound/doc/unbound-control.8.in user/ngie/more-tests2/contrib/unbound/doc/unbound-host.1 user/ngie/more-tests2/contrib/unbound/doc/unbound-host.1.in user/ngie/more-tests2/contrib/unbound/doc/unbound.8 user/ngie/more-tests2/contrib/unbound/doc/unbound.8.in user/ngie/more-tests2/contrib/unbound/doc/unbound.conf.5 user/ngie/more-tests2/contrib/unbound/doc/unbound.conf.5.in user/ngie/more-tests2/contrib/unbound/iterator/iter_hints.c user/ngie/more-tests2/contrib/unbound/iterator/iterator.h user/ngie/more-tests2/contrib/unbound/libunbound/libunbound.c user/ngie/more-tests2/contrib/unbound/sldns/rrdef.h user/ngie/more-tests2/contrib/unbound/smallapp/unbound-anchor.c user/ngie/more-tests2/contrib/unbound/smallapp/unbound-control.c user/ngie/more-tests2/contrib/unbound/util/config_file.c user/ngie/more-tests2/contrib/unbound/util/config_file.h user/ngie/more-tests2/contrib/unbound/util/configlexer.lex user/ngie/more-tests2/contrib/unbound/util/configparser.y user/ngie/more-tests2/contrib/unbound/util/data/msgencode.c user/ngie/more-tests2/contrib/unbound/util/iana_ports.inc user/ngie/more-tests2/contrib/unbound/util/net_help.c user/ngie/more-tests2/contrib/unbound/validator/autotrust.c user/ngie/more-tests2/contrib/unbound/validator/val_sigcrypt.c user/ngie/more-tests2/contrib/unbound/validator/validator.c user/ngie/more-tests2/etc/Makefile user/ngie/more-tests2/etc/periodic/daily/480.status-ntpd user/ngie/more-tests2/gnu/usr.bin/binutils/ld/Makefile.depend.host user/ngie/more-tests2/lib/clang/libclangbasic/Makefile user/ngie/more-tests2/lib/libc/rpc/getpublickey.c user/ngie/more-tests2/lib/libc/rpc/key_call.c user/ngie/more-tests2/lib/libc/sys/ptrace.2 user/ngie/more-tests2/lib/libc/sys/utrace.2 user/ngie/more-tests2/lib/libstand/open.c user/ngie/more-tests2/lib/libxo/Makefile user/ngie/more-tests2/libexec/Makefile user/ngie/more-tests2/libexec/rtld-elf/powerpc64/reloc.c user/ngie/more-tests2/release/doc/en_US.ISO8859-1/relnotes/article.xml user/ngie/more-tests2/release/scripts/list-new-changesets.py user/ngie/more-tests2/sbin/rtsol/Makefile user/ngie/more-tests2/sbin/sysctl/sysctl.c user/ngie/more-tests2/share/examples/Makefile user/ngie/more-tests2/share/examples/bhyve/vmrun.sh user/ngie/more-tests2/share/man/man5/rc.conf.5 user/ngie/more-tests2/share/mk/bsd.README user/ngie/more-tests2/share/mk/bsd.incs.mk user/ngie/more-tests2/share/mk/bsd.lib.mk user/ngie/more-tests2/share/mk/bsd.man.mk user/ngie/more-tests2/share/mk/bsd.nls.mk user/ngie/more-tests2/share/mk/bsd.own.mk user/ngie/more-tests2/share/mk/bsd.prog.mk user/ngie/more-tests2/share/mk/bsd.progs.mk user/ngie/more-tests2/share/mk/bsd.subdir.mk user/ngie/more-tests2/share/mk/bsd.sys.mk user/ngie/more-tests2/share/mk/local.autodep.mk user/ngie/more-tests2/share/mk/local.init.mk user/ngie/more-tests2/share/mk/meta.stage.mk user/ngie/more-tests2/share/timedef/zh_CN.GB18030.src (contents, props changed) user/ngie/more-tests2/share/timedef/zh_CN.GB2312.src (contents, props changed) user/ngie/more-tests2/share/timedef/zh_CN.UTF-8.src (contents, props changed) user/ngie/more-tests2/share/timedef/zh_CN.eucCN.src (contents, props changed) user/ngie/more-tests2/share/timedef/zh_TW.Big5.src (contents, props changed) user/ngie/more-tests2/share/timedef/zh_TW.UTF-8.src (contents, props changed) user/ngie/more-tests2/sys/amd64/include/xen/hypercall.h user/ngie/more-tests2/sys/amd64/linux/linux_sysvec.c user/ngie/more-tests2/sys/arm/arm/vfp.c user/ngie/more-tests2/sys/arm/arm/vm_machdep.c user/ngie/more-tests2/sys/arm/freescale/imx/imx_i2c.c user/ngie/more-tests2/sys/arm/freescale/vybrid/vf_i2c.c user/ngie/more-tests2/sys/arm/include/md_var.h user/ngie/more-tests2/sys/arm/samsung/exynos/exynos5_i2c.c user/ngie/more-tests2/sys/arm/ti/files.ti user/ngie/more-tests2/sys/arm64/arm64/elf_machdep.c user/ngie/more-tests2/sys/arm64/conf/GENERIC user/ngie/more-tests2/sys/boot/i386/gptboot/gptldr.S user/ngie/more-tests2/sys/cam/ctl/ctl_backend_block.c user/ngie/more-tests2/sys/compat/cloudabi/cloudabi_syscalldefs.h user/ngie/more-tests2/sys/compat/linux/linux_fork.c user/ngie/more-tests2/sys/conf/Makefile.arm64 user/ngie/more-tests2/sys/conf/files user/ngie/more-tests2/sys/conf/files.arm user/ngie/more-tests2/sys/conf/kern.mk user/ngie/more-tests2/sys/conf/kern.post.mk user/ngie/more-tests2/sys/conf/kmod.mk user/ngie/more-tests2/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c user/ngie/more-tests2/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c user/ngie/more-tests2/sys/dev/iicbus/icee.c user/ngie/more-tests2/sys/dev/iicbus/iicoc.c user/ngie/more-tests2/sys/dev/iicbus/iiconf.c user/ngie/more-tests2/sys/dev/iicbus/iiconf.h user/ngie/more-tests2/sys/dev/otus/if_otusreg.h user/ngie/more-tests2/sys/dev/pcf/pcf.c user/ngie/more-tests2/sys/dev/sym/sym_hipd.c user/ngie/more-tests2/sys/dev/usb/controller/xhci_pci.c user/ngie/more-tests2/sys/dev/usb/usbdevs user/ngie/more-tests2/sys/dev/usb/wlan/if_run.c user/ngie/more-tests2/sys/dev/usb/wlan/if_urtwn.c user/ngie/more-tests2/sys/dev/wpi/if_wpi.c user/ngie/more-tests2/sys/dev/wpi/if_wpivar.h user/ngie/more-tests2/sys/i386/include/xen/hypercall.h user/ngie/more-tests2/sys/i386/linux/linux_sysvec.c user/ngie/more-tests2/sys/kern/kern_exit.c user/ngie/more-tests2/sys/kern/kern_fork.c user/ngie/more-tests2/sys/kern/uipc_mbuf.c user/ngie/more-tests2/sys/kern/vfs_mountroot.c user/ngie/more-tests2/sys/kern/vfs_vnops.c user/ngie/more-tests2/sys/modules/Makefile user/ngie/more-tests2/sys/net/if_lagg.c user/ngie/more-tests2/sys/netinet/if_ether.c user/ngie/more-tests2/sys/powerpc/mpc85xx/i2c.c user/ngie/more-tests2/sys/sys/elf_common.h user/ngie/more-tests2/sys/sys/kernel.h user/ngie/more-tests2/sys/sys/pmc.h user/ngie/more-tests2/sys/sys/systm.h user/ngie/more-tests2/sys/ufs/ffs/ffs_softdep.c user/ngie/more-tests2/sys/vm/vm_glue.c user/ngie/more-tests2/sys/xen/hypervisor.h user/ngie/more-tests2/tests/sys/kern/ptrace_test.c user/ngie/more-tests2/usr.bin/fortune/strfile/strfile.c user/ngie/more-tests2/usr.bin/kdump/Makefile user/ngie/more-tests2/usr.bin/kdump/kdump.c user/ngie/more-tests2/usr.bin/truss/Makefile user/ngie/more-tests2/usr.bin/truss/Makefile.depend.amd64 user/ngie/more-tests2/usr.bin/truss/amd64-cloudabi64.c user/ngie/more-tests2/usr.bin/truss/main.c user/ngie/more-tests2/usr.bin/truss/syscall.h user/ngie/more-tests2/usr.bin/truss/syscalls.c user/ngie/more-tests2/usr.bin/truss/truss.1 user/ngie/more-tests2/usr.bin/truss/truss.h user/ngie/more-tests2/usr.sbin/bhyveload/bhyveload.8 user/ngie/more-tests2/usr.sbin/bhyveload/bhyveload.c user/ngie/more-tests2/usr.sbin/freebsd-update/freebsd-update.8 user/ngie/more-tests2/usr.sbin/freebsd-update/freebsd-update.sh user/ngie/more-tests2/usr.sbin/iscsid/discovery.c user/ngie/more-tests2/usr.sbin/iscsid/pdu.c user/ngie/more-tests2/usr.sbin/pmcstat/pmcstat_log.c user/ngie/more-tests2/usr.sbin/ppp/Makefile user/ngie/more-tests2/usr.sbin/pw/pw.c user/ngie/more-tests2/usr.sbin/rtadvd/Makefile user/ngie/more-tests2/usr.sbin/rtadvd/rtadvd.c user/ngie/more-tests2/usr.sbin/rtsold/Makefile user/ngie/more-tests2/usr.sbin/rtsold/rtsold.c user/ngie/more-tests2/usr.sbin/watch/watch.c Directory Properties: user/ngie/more-tests2/ (props changed) user/ngie/more-tests2/contrib/elftoolchain/ (props changed) user/ngie/more-tests2/contrib/elftoolchain/ar/ (props changed) user/ngie/more-tests2/contrib/elftoolchain/brandelf/ (props changed) user/ngie/more-tests2/contrib/elftoolchain/elfdump/ (props changed) user/ngie/more-tests2/contrib/libc++/ (props changed) user/ngie/more-tests2/contrib/llvm/ (props changed) user/ngie/more-tests2/contrib/tzcode/stdtime/ (props changed) user/ngie/more-tests2/contrib/unbound/ (props changed) user/ngie/more-tests2/gnu/usr.bin/binutils/ (props changed) user/ngie/more-tests2/lib/libc/ (props changed) user/ngie/more-tests2/sbin/ (props changed) user/ngie/more-tests2/share/ (props changed) user/ngie/more-tests2/sys/ (props changed) user/ngie/more-tests2/sys/amd64/include/xen/ (props changed) user/ngie/more-tests2/sys/boot/ (props changed) user/ngie/more-tests2/sys/conf/ (props changed) user/ngie/more-tests2/usr.sbin/bhyveload/ (props changed) user/ngie/more-tests2/usr.sbin/rtadvd/ (props changed) user/ngie/more-tests2/usr.sbin/rtsold/ (props changed) Modified: user/ngie/more-tests2/Makefile ============================================================================== --- user/ngie/more-tests2/Makefile Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/Makefile Sat Oct 10 01:29:50 2015 (r289101) @@ -121,7 +121,7 @@ TGTS= all all-man buildenv buildenvvars _worldtmp _legacy _bootstrap-tools _cleanobj _obj \ _build-tools _cross-tools _includes _libraries _depend \ build32 builddtb distribute32 install32 xdev xdev-build xdev-install \ - xdev-links native-xtools \ + xdev-links native-xtools installconfig \ TGTS+= ${SUBDIR_TARGETS} Modified: user/ngie/more-tests2/Makefile.inc1 ============================================================================== --- user/ngie/more-tests2/Makefile.inc1 Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/Makefile.inc1 Sat Oct 10 01:29:50 2015 (r289101) @@ -996,10 +996,15 @@ redistribute: .MAKE DISTRIBUTION=lib32 .endif -distrib-dirs distribution: .MAKE +distrib-dirs: .MAKE cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ ${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET} +distribution: .MAKE + cd ${.CURDIR}/etc; ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ + ${IMAKE_INSTALL} ${IMAKE_MTREE} METALOG=${METALOG} ${.TARGET} + ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 installconfig + # # buildkernel and installkernel # Modified: user/ngie/more-tests2/contrib/elftoolchain/addr2line/addr2line.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/addr2line/addr2line.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/addr2line/addr2line.c Sat Oct 10 01:29:50 2015 (r289101) @@ -39,7 +39,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: addr2line.c 3197 2015-05-12 21:01:31Z emaste $"); +ELFTC_VCSID("$Id: addr2line.c 3249 2015-10-04 08:11:30Z kaiwang27 $"); static struct option longopts[] = { {"target" , required_argument, NULL, 'b'}, @@ -61,7 +61,7 @@ Usage: %s [options] hexaddress...\n\ Map program addresses to source file names and line numbers.\n\n\ Options:\n\ -b TGT | --target=TGT (Accepted but ignored).\n\ - -e EXE | --exec=EXE Use program \"EXE\" to translate addresses.\n\ + -e EXE | --exe=EXE Use program \"EXE\" to translate addresses.\n\ -f | --functions Display function names.\n\ -j NAME | --section=NAME Values are offsets into section \"NAME\".\n\ -s | --basename Only show the base name for each file name.\n\ @@ -123,8 +123,7 @@ handle_high_pc(Dwarf_Die die, Dwarf_Unsi } static void -search_func(Dwarf_Debug dbg, Dwarf_Die die, Dwarf_Addr addr, - const char **rlt_func) +search_func(Dwarf_Debug dbg, Dwarf_Die die, Dwarf_Addr addr, char **rlt_func) { Dwarf_Die ret_die, spec_die; Dwarf_Error de; @@ -133,10 +132,11 @@ search_func(Dwarf_Debug dbg, Dwarf_Die d Dwarf_Off ref; Dwarf_Attribute sub_at, spec_at; char *func0; + const char *func1; int ret; if (*rlt_func != NULL) - return; + goto done; if (dwarf_tag(die, &tag, &de)) { warnx("dwarf_tag: %s", dwarf_errmsg(de)); @@ -153,16 +153,19 @@ search_func(Dwarf_Debug dbg, Dwarf_Die d /* Found it! */ - *rlt_func = unknown; + if ((*rlt_func = strdup(unknown)) == NULL) + err(EXIT_FAILURE, "strdup"); ret = dwarf_attr(die, DW_AT_name, &sub_at, &de); if (ret == DW_DLV_ERROR) - return; + goto done; if (ret == DW_DLV_OK) { - if (dwarf_formstring(sub_at, &func0, &de)) - *rlt_func = unknown; - else - *rlt_func = func0; - return; + if (dwarf_formstring(sub_at, &func0, &de) == + DW_DLV_OK) { + free(*rlt_func); + if ((*rlt_func = strdup(func0)) == NULL) + err(EXIT_FAILURE, "strdup"); + } + goto done; } /* @@ -171,15 +174,19 @@ search_func(Dwarf_Debug dbg, Dwarf_Die d * referenced by DW_AT_specification. */ if (dwarf_attr(die, DW_AT_specification, &spec_at, &de)) - return; + goto done; if (dwarf_global_formref(spec_at, &ref, &de)) - return; + goto done; if (dwarf_offdie(dbg, ref, &spec_die, &de)) - return; - if (dwarf_attrval_string(spec_die, DW_AT_name, rlt_func, &de)) - *rlt_func = unknown; + goto done; + if (dwarf_attrval_string(spec_die, DW_AT_name, &func1, &de) == + DW_DLV_OK) { + free(*rlt_func); + if ((*rlt_func = strdup(func1)) == NULL) + err(EXIT_FAILURE, "strdup"); + } - return; + goto done; } cont_search: @@ -197,19 +204,22 @@ cont_search: errx(EXIT_FAILURE, "dwarf_siblingof: %s", dwarf_errmsg(de)); else if (ret == DW_DLV_OK) search_func(dbg, ret_die, addr, rlt_func); + +done: + dwarf_dealloc(dbg, die, DW_DLA_DIE); } static void translate(Dwarf_Debug dbg, const char* addrstr) { - Dwarf_Die die; + Dwarf_Die die, ret_die; Dwarf_Line *lbuf; Dwarf_Error de; Dwarf_Half tag; Dwarf_Unsigned lopc, hipc, addr, lineno, plineno; Dwarf_Signed lcount; Dwarf_Addr lineaddr, plineaddr; - const char *funcname; + char *funcname; char *file, *file0, *pfile; char demangled[1024]; int i, ret; @@ -218,23 +228,30 @@ translate(Dwarf_Debug dbg, const char* a addr += section_base; lineno = 0; file = unknown; + die = NULL; + lbuf = NULL; + lcount = 0; while ((ret = dwarf_next_cu_header(dbg, NULL, NULL, NULL, NULL, NULL, &de)) == DW_DLV_OK) { die = NULL; - while (dwarf_siblingof(dbg, die, &die, &de) == DW_DLV_OK) { + while (dwarf_siblingof(dbg, die, &ret_die, &de) == DW_DLV_OK) { + if (die != NULL) + dwarf_dealloc(dbg, die, DW_DLA_DIE); + die = ret_die; if (dwarf_tag(die, &tag, &de) != DW_DLV_OK) { warnx("dwarf_tag failed: %s", dwarf_errmsg(de)); - goto out; + goto next_cu; } + /* XXX: What about DW_TAG_partial_unit? */ if (tag == DW_TAG_compile_unit) break; } - if (die == NULL) { + if (ret_die == NULL) { warnx("could not find DW_TAG_compile_unit die"); - goto out; + goto next_cu; } if (!dwarf_attrval_unsigned(die, DW_AT_low_pc, &lopc, &de) && !dwarf_attrval_unsigned(die, DW_AT_high_pc, &hipc, &de)) { @@ -243,17 +260,17 @@ translate(Dwarf_Debug dbg, const char* a * this CU. */ if (handle_high_pc(die, lopc, &hipc) != DW_DLV_OK) - continue; + goto next_cu; if (addr < lopc || addr >= hipc) - continue; + goto next_cu; } switch (dwarf_srclines(die, &lbuf, &lcount, &de)) { case DW_DLV_OK: break; case DW_DLV_NO_ENTRY: - /* If one CU lacks debug info, just skip it. */ - continue; + /* If a CU lacks debug info, just skip it. */ + goto next_cu; default: warnx("dwarf_srclines: %s", dwarf_errmsg(de)); goto out; @@ -289,25 +306,37 @@ translate(Dwarf_Debug dbg, const char* a plineno = lineno; pfile = file; } + next_cu: + if (die != NULL) { + dwarf_dealloc(dbg, die, DW_DLA_DIE); + die = NULL; + } } out: funcname = NULL; - if (ret == DW_DLV_OK && func) + if (ret == DW_DLV_OK && func) { search_func(dbg, die, addr, &funcname); + die = NULL; + } if (func) { if (funcname == NULL) - funcname = unknown; + if ((funcname = strdup(unknown)) == NULL) + err(EXIT_FAILURE, "strdup"); if (demangle && !elftc_demangle(funcname, demangled, sizeof(demangled), 0)) printf("%s\n", demangled); else printf("%s\n", funcname); + free(funcname); } (void) printf("%s:%ju\n", base ? basename(file) : file, lineno); + if (die != NULL) + dwarf_dealloc(dbg, die, DW_DLA_DIE); + /* * Reset internal CU pointer, so we will start from the first CU * next round. Modified: user/ngie/more-tests2/contrib/elftoolchain/ar/ar.1 ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/ar/ar.1 Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/ar/ar.1 Sat Oct 10 01:29:50 2015 (r289101) @@ -21,9 +21,9 @@ .\" out of the use of this software, even if advised of the possibility of .\" such damage. .\" -.\" $Id: ar.1 3195 2015-05-12 17:22:19Z emaste $ +.\" $Id: ar.1 3230 2015-07-27 17:11:38Z emaste $ .\" -.Dd December 10, 2012 +.Dd July 27, 2015 .Os .Dt AR 1 .Sh NAME @@ -66,6 +66,7 @@ .Op Fl f .Op Fl F Ar flavor | Fl -flavor Ar flavor .Op Fl s | Fl S +.Op Fl U .Op Fl v .Op Fl z .Ar archive @@ -83,6 +84,7 @@ .Op Fl j .Op Fl s | Fl S .Op Fl u +.Op Fl U .Op Fl v .Op Fl z .Ar archive @@ -91,6 +93,7 @@ .Fl s .Op Fl D .Op Fl j +.Op Fl U .Op Fl z .Ar archive .Nm @@ -203,6 +206,11 @@ and 0644 instead of file mode from the m .Ar . This ensures that checksums on the resulting archives are reproducible when member contents are identical. +If multiple +.Fl D +and +.Fl U +options are specified on the command line, the final one takes precedence. .It Fl f Synonymous with option .Fl T . @@ -335,6 +343,19 @@ option, the members specified by argumen .Ar will be extracted only if they are newer than the corresponding files in the file system. +.It Fl U +When used in combination with the +.Fl r +or +.Fl q +option, insert the real mtime, uid and gid, and file mode values +from the members named by arguments +.Ar . +If multiple +.Fl D +and +.Fl U +options are specified on the command line, the final one takes precedence. .It Fl v Provide verbose output. When used with the Modified: user/ngie/more-tests2/contrib/elftoolchain/ar/ar.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/ar/ar.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/ar/ar.c Sat Oct 10 01:29:50 2015 (r289101) @@ -72,7 +72,7 @@ #include "ar.h" -ELFTC_VCSID("$Id: ar.c 3183 2015-04-10 16:18:42Z emaste $"); +ELFTC_VCSID("$Id: ar.c 3243 2015-08-31 19:28:45Z emaste $"); enum options { @@ -123,7 +123,7 @@ main(int argc, char **argv) len = strlen(bsdar->progname); if (len >= strlen("ranlib") && strcmp(bsdar->progname + len - strlen("ranlib"), "ranlib") == 0) { - while ((opt = getopt_long(argc, argv, "tDV", longopts, + while ((opt = getopt_long(argc, argv, "tDUV", longopts, NULL)) != -1) { switch(opt) { case 't': @@ -132,6 +132,9 @@ main(int argc, char **argv) case 'D': bsdar->options |= AR_D; break; + case 'U': + bsdar->options &= ~AR_D; + break; case 'V': bsdar_version(); break; @@ -148,7 +151,7 @@ main(int argc, char **argv) ranlib_usage(); bsdar->options |= AR_S; - for (;(bsdar->filename = *argv++) != NULL;) + while ((bsdar->filename = *argv++) != NULL) ar_write_archive(bsdar, 's'); exit(EXIT_SUCCESS); @@ -169,7 +172,7 @@ main(int argc, char **argv) } } - while ((opt = getopt_long(argc, argv, "abCcdDfF:ijlMmopqrSsTtuVvxz", + while ((opt = getopt_long(argc, argv, "abCcdDfF:ijlMmopqrSsTtUuVvxz", longopts, NULL)) != -1) { switch(opt) { case 'a': @@ -237,6 +240,9 @@ main(int argc, char **argv) case 't': set_mode(bsdar, opt); break; + case 'U': + bsdar->options &= ~AR_D; + break; case 'u': bsdar->options |= AR_U; break; @@ -400,7 +406,8 @@ Usage: %s <command> [options] archive fi -D Use fixed metadata, for consistent archive checksums.\n\ -F FORMAT | --flavor=FORMAT\n\ Create archives with the specified format.\n\ - -S Do not generate an archive symbol table.\n" + -S Do not generate an archive symbol table.\n\ + -U Use original metadata, for unique archive checksums.\n" static void bsdar_usage(void) @@ -415,6 +422,7 @@ Usage: %s [options] archive...\n\ Options:\n\ -t (This option is accepted, but ignored).\n\ -D Use fixed metadata, for consistent archive checksums.\n\ + -U Use original metadata, for unique archive checksums.\n\ -V Print a version identifier and exit.\n" static void Modified: user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.1 ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.1 Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.1 Sat Oct 10 01:29:50 2015 (r289101) @@ -1,5 +1,4 @@ -.\" Copyright (c) 1997 -.\" John-Mark Gurney. All rights reserved. +.\" Copyright 1997 John-Mark Gurney. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -9,11 +8,8 @@ .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the author nor the names of any co-contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. .\" -.\" THIS SOFTWARE IS PROVIDED BY John-Mark Gurney AND CONTRIBUTORS ``AS IS'' +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' .\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE @@ -26,7 +22,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD: src/usr.bin/brandelf/brandelf.1,v 1.17 2007/03/09 14:36:18 ru Exp $ -.\" $Id: brandelf.1 3195 2015-05-12 17:22:19Z emaste $ +.\" $Id: brandelf.1 3235 2015-07-31 16:44:47Z emaste $ .\" .Dd October 27, 2014 .Dt BRANDELF 1 @@ -148,4 +144,4 @@ manual page first appeared in .Fx 2.2 . .Sh AUTHORS This manual page was written by -.An John-Mark Gurney Aq Mt gurney_j@efn.org . +.An John-Mark Gurney Aq Mt jmg@FreeBSD.org . Modified: user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/brandelf/brandelf.c Sat Oct 10 01:29:50 2015 (r289101) @@ -1,7 +1,7 @@ /*- * Copyright (c) 2008 Hyogeol Lee * Copyright (c) 2000, 2001 David O'Brien - * Copyright (c) 1996 Søren Schmidt + * Copyright (c) 1996 Søren Schmidt * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -44,7 +44,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: brandelf.c 3174 2015-03-27 17:13:41Z emaste $"); +ELFTC_VCSID("$Id: brandelf.c 3234 2015-07-31 12:35:09Z emaste $"); static int elftype(const char *); static const char *iselftype(int); Modified: user/ngie/more-tests2/contrib/elftoolchain/common/_elftc.h ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/common/_elftc.h Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/common/_elftc.h Sat Oct 10 01:29:50 2015 (r289101) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: _elftc.h 3209 2015-05-17 13:40:46Z kaiwang27 $ + * $Id: _elftc.h 3244 2015-08-31 19:53:08Z emaste $ */ /** @@ -372,7 +372,8 @@ extern const char *__progname; #if defined(__APPLE__) -#include <machine/endian.h> +#include <libkern/OSByteOrder.h> +#define htobe32(x) OSSwapHostToBigInt32(x) #define roundup2 roundup #define ELFTC_BYTE_ORDER _BYTE_ORDER @@ -382,6 +383,7 @@ extern const char *__progname; #define ELFTC_HAVE_MMAP 1 #define ELFTC_HAVE_STRMODE 1 +#define ELFTC_NEED_BYTEORDER_EXTENSIONS 1 #endif /* __APPLE__ */ Modified: user/ngie/more-tests2/contrib/elftoolchain/common/elfdefinitions.h ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/common/elfdefinitions.h Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/common/elfdefinitions.h Sat Oct 10 01:29:50 2015 (r289101) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfdefinitions.h 3198 2015-05-14 18:36:19Z emaste $ + * $Id: elfdefinitions.h 3247 2015-09-22 16:57:51Z emaste $ */ /* @@ -860,6 +860,12 @@ enum { #define GRP_MASKPROC 0xf0000000 /* processor-specific flags */ /* + * Flags / mask for .gnu.versym sections. + */ +#define VERSYM_VERSION 0x7fff +#define VERSYM_HIDDEN 0x8000 + +/* * Flags used by program header table entries. */ @@ -1183,6 +1189,8 @@ _ELF_DEFINE_SHT(SHT_MIPS_XLATE_OLD, 0x7 "obsolete") \ _ELF_DEFINE_SHT(SHT_MIPS_PDR_EXCEPTION, 0x70000029UL, \ "runtime procedure descriptor table exception information") \ +_ELF_DEFINE_SHT(SHT_MIPS_ABIFLAGS, 0x7000002AUL, \ + "ABI flags") \ _ELF_DEFINE_SHT(SHT_SPARC_GOTDATA, 0x70000000UL, \ "SPARC-specific data") \ _ELF_DEFINE_SHT(SHT_AMD64_UNWIND, 0x70000001UL, \ @@ -1651,25 +1659,38 @@ _ELF_DEFINE_RELOC(R_IA_64_DTPREL64MSB, _ELF_DEFINE_RELOC(R_IA_64_DTPREL64LSB, 0xB7) \ _ELF_DEFINE_RELOC(R_IA_64_LTOFF_DTPREL22, 0xBA) -#define _ELF_DEFINE_MIPS_RELOCATIONS() \ -_ELF_DEFINE_RELOC(R_MIPS_NONE, 0) \ -_ELF_DEFINE_RELOC(R_MIPS_16, 1) \ -_ELF_DEFINE_RELOC(R_MIPS_32, 2) \ -_ELF_DEFINE_RELOC(R_MIPS_REL32, 3) \ -_ELF_DEFINE_RELOC(R_MIPS_26, 4) \ -_ELF_DEFINE_RELOC(R_MIPS_HI16, 5) \ -_ELF_DEFINE_RELOC(R_MIPS_LO16, 6) \ -_ELF_DEFINE_RELOC(R_MIPS_GPREL16, 7) \ -_ELF_DEFINE_RELOC(R_MIPS_LITERAL, 8) \ -_ELF_DEFINE_RELOC(R_MIPS_GOT16, 9) \ -_ELF_DEFINE_RELOC(R_MIPS_PC16, 10) \ -_ELF_DEFINE_RELOC(R_MIPS_CALL16, 11) \ -_ELF_DEFINE_RELOC(R_MIPS_GPREL32, 12) \ -_ELF_DEFINE_RELOC(R_MIPS_64, 18) \ -_ELF_DEFINE_RELOC(R_MIPS_GOTHI16, 21) \ -_ELF_DEFINE_RELOC(R_MIPS_GOTLO16, 22) \ -_ELF_DEFINE_RELOC(R_MIPS_CALLHI16, 30) \ -_ELF_DEFINE_RELOC(R_MIPS_CALLLO16, 31) +#define _ELF_DEFINE_MIPS_RELOCATIONS() \ +_ELF_DEFINE_RELOC(R_MIPS_NONE, 0) \ +_ELF_DEFINE_RELOC(R_MIPS_16, 1) \ +_ELF_DEFINE_RELOC(R_MIPS_32, 2) \ +_ELF_DEFINE_RELOC(R_MIPS_REL32, 3) \ +_ELF_DEFINE_RELOC(R_MIPS_26, 4) \ +_ELF_DEFINE_RELOC(R_MIPS_HI16, 5) \ +_ELF_DEFINE_RELOC(R_MIPS_LO16, 6) \ +_ELF_DEFINE_RELOC(R_MIPS_GPREL16, 7) \ +_ELF_DEFINE_RELOC(R_MIPS_LITERAL, 8) \ +_ELF_DEFINE_RELOC(R_MIPS_GOT16, 9) \ +_ELF_DEFINE_RELOC(R_MIPS_PC16, 10) \ +_ELF_DEFINE_RELOC(R_MIPS_CALL16, 11) \ +_ELF_DEFINE_RELOC(R_MIPS_GPREL32, 12) \ +_ELF_DEFINE_RELOC(R_MIPS_64, 18) \ +_ELF_DEFINE_RELOC(R_MIPS_GOTHI16, 21) \ +_ELF_DEFINE_RELOC(R_MIPS_GOTLO16, 22) \ +_ELF_DEFINE_RELOC(R_MIPS_CALLHI16, 30) \ +_ELF_DEFINE_RELOC(R_MIPS_CALLLO16, 31) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD32 38) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL32 39) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_DTPMOD64 40) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL64 41) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_GD 42) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_LDM 43) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL_HI16 44) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_DTPREL_LO16 45) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_GOTTPREL 46) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL32 47) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL64 48) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL_HI16 49) \ +_ELF_DEFINE_RELOC(R_MIPS_TLS_TPREL_LO16 50) #define _ELF_DEFINE_PPC32_RELOCATIONS() \ _ELF_DEFINE_RELOC(R_PPC_NONE, 0) \ @@ -1865,6 +1886,50 @@ _ELF_DEFINE_RELOC(R_PPC64_DTPREL16_HIGHE _ELF_DEFINE_RELOC(R_PPC64_TLSGD, 107) \ _ELF_DEFINE_RELOC(R_PPC64_TLSLD, 108) +#define _ELF_DEFINE_RISCV_RELOCATIONS() \ +_ELF_DEFINE_RELOC(R_RISCV_NONE, 0) \ +_ELF_DEFINE_RELOC(R_RISCV_32, 1) \ +_ELF_DEFINE_RELOC(R_RISCV_64, 2) \ +_ELF_DEFINE_RELOC(R_RISCV_RELATIVE, 3) \ +_ELF_DEFINE_RELOC(R_RISCV_COPY, 4) \ +_ELF_DEFINE_RELOC(R_RISCV_JUMP_SLOT, 5) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_DTPMOD32, 6) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_DTPMOD64, 7) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_DTPREL32, 8) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_DTPREL64, 9) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_TPREL32, 10) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_TPREL64, 11) \ +_ELF_DEFINE_RELOC(R_RISCV_BRANCH, 16) \ +_ELF_DEFINE_RELOC(R_RISCV_JAL, 17) \ +_ELF_DEFINE_RELOC(R_RISCV_CALL, 18) \ +_ELF_DEFINE_RELOC(R_RISCV_CALL_PLT, 19) \ +_ELF_DEFINE_RELOC(R_RISCV_GOT_HI20, 20) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_GOT_HI20, 21) \ +_ELF_DEFINE_RELOC(R_RISCV_TLS_GD_HI20, 22) \ +_ELF_DEFINE_RELOC(R_RISCV_PCREL_HI20, 23) \ +_ELF_DEFINE_RELOC(R_RISCV_PCREL_LO12_I, 24) \ +_ELF_DEFINE_RELOC(R_RISCV_PCREL_LO12_S, 25) \ +_ELF_DEFINE_RELOC(R_RISCV_HI20, 26) \ +_ELF_DEFINE_RELOC(R_RISCV_LO12_I, 27) \ +_ELF_DEFINE_RELOC(R_RISCV_LO12_S, 28) \ +_ELF_DEFINE_RELOC(R_RISCV_TPREL_HI20, 29) \ +_ELF_DEFINE_RELOC(R_RISCV_TPREL_LO12_I, 30) \ +_ELF_DEFINE_RELOC(R_RISCV_TPREL_LO12_S, 31) \ +_ELF_DEFINE_RELOC(R_RISCV_TPREL_ADD, 32) \ +_ELF_DEFINE_RELOC(R_RISCV_ADD8, 33) \ +_ELF_DEFINE_RELOC(R_RISCV_ADD16, 34) \ +_ELF_DEFINE_RELOC(R_RISCV_ADD32, 35) \ +_ELF_DEFINE_RELOC(R_RISCV_ADD64, 36) \ +_ELF_DEFINE_RELOC(R_RISCV_SUB8, 37) \ +_ELF_DEFINE_RELOC(R_RISCV_SUB16, 38) \ +_ELF_DEFINE_RELOC(R_RISCV_SUB32, 39) \ +_ELF_DEFINE_RELOC(R_RISCV_SUB64, 40) \ +_ELF_DEFINE_RELOC(R_RISCV_GNU_VTINHERIT, 41) \ +_ELF_DEFINE_RELOC(R_RISCV_GNU_VTENTRY, 42) \ +_ELF_DEFINE_RELOC(R_RISCV_ALIGN 43) \ +_ELF_DEFINE_RELOC(R_RISCV_RVC_BRANCH, 44) \ +_ELF_DEFINE_RELOC(R_RISCV_RVC_JUMP, 45) + #define _ELF_DEFINE_SPARC_RELOCATIONS() \ _ELF_DEFINE_RELOC(R_SPARC_NONE, 0) \ _ELF_DEFINE_RELOC(R_SPARC_8, 1) \ Modified: user/ngie/more-tests2/contrib/elftoolchain/elfcopy/sections.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/elfcopy/sections.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/elfcopy/sections.c Sat Oct 10 01:29:50 2015 (r289101) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: sections.c 3220 2015-05-24 23:42:39Z kaiwang27 $"); +ELFTC_VCSID("$Id: sections.c 3225 2015-06-06 02:35:23Z kaiwang27 $"); static void add_gnu_debuglink(struct elfcopy *ecp); static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc); Modified: user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.1 ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.1 Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.1 Sat Oct 10 01:29:50 2015 (r289101) @@ -23,7 +23,7 @@ .\" SUCH DAMAGE. .\" .\" $FreeBSD: src/usr.bin/elfdump/elfdump.1,v 1.6 2005/01/18 13:43:48 ru Exp $ -.\" $Id: elfdump.1 3195 2015-05-12 17:22:19Z emaste $ +.\" $Id: elfdump.1 3231 2015-07-30 13:47:56Z emaste $ .\" .Dd August 25, 2011 .Dt ELFDUMP 1 @@ -54,7 +54,7 @@ The options are as follows: .It Fl a Dump all information. .It Fl c -Dump shared headers. +Dump section headers. .It Fl d Dump dynamic symbols. .It Fl e Modified: user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/elfdump/elfdump.c Sat Oct 10 01:29:50 2015 (r289101) @@ -50,7 +50,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: elfdump.c 3198 2015-05-14 18:36:19Z emaste $"); +ELFTC_VCSID("$Id: elfdump.c 3250 2015-10-06 13:56:15Z emaste $"); #if defined(ELFTC_NEED_ELF_NOTE_DEFINITION) #include "native-elf-format.h" @@ -205,11 +205,11 @@ d_tags(uint64_t tag) case 0x6ffffef5: return "DT_GNU_HASH"; case 0x6ffffef8: return "DT_GNU_CONFLICT"; case 0x6ffffef9: return "DT_GNU_LIBLIST"; - case 0x6ffffefa: return "DT_SUNW_CONFIG"; - case 0x6ffffefb: return "DT_SUNW_DEPAUDIT"; - case 0x6ffffefc: return "DT_SUNW_AUDIT"; - case 0x6ffffefd: return "DT_SUNW_PLTPAD"; - case 0x6ffffefe: return "DT_SUNW_MOVETAB"; + case 0x6ffffefa: return "DT_CONFIG"; + case 0x6ffffefb: return "DT_DEPAUDIT"; + case 0x6ffffefc: return "DT_AUDIT"; + case 0x6ffffefd: return "DT_PLTPAD"; + case 0x6ffffefe: return "DT_MOVETAB"; case 0x6ffffeff: return "DT_SYMINFO (DT_ADDRRNGHI)"; case 0x6ffffff9: return "DT_RELACOUNT"; case 0x6ffffffa: return "DT_RELCOUNT"; @@ -244,11 +244,14 @@ e_machines(unsigned int mach) case EM_860: return "EM_860"; case EM_MIPS: return "EM_MIPS"; case EM_PPC: return "EM_PPC"; + case EM_PPC64: return "EM_PPC64"; case EM_ARM: return "EM_ARM"; case EM_ALPHA: return "EM_ALPHA (legacy)"; case EM_SPARCV9:return "EM_SPARCV9"; case EM_IA_64: return "EM_IA_64"; case EM_X86_64: return "EM_X86_64"; + case EM_AARCH64:return "EM_AARCH64"; + case EM_RISCV: return "EM_RISCV"; } snprintf(machdesc, sizeof(machdesc), "(unknown machine) -- type 0x%x", mach); @@ -271,11 +274,12 @@ static const char *ei_data[] = { "ELFDATANONE", "ELFDATA2LSB", "ELFDATA2MSB" }; -static const char *ei_abis[] = { +static const char *ei_abis[256] = { "ELFOSABI_NONE", "ELFOSABI_HPUX", "ELFOSABI_NETBSD", "ELFOSABI_LINUX", - "ELFOSABI_HURD", "ELFOSABI_86OPEN", "ELFOSABI_SOLARIS", - "ELFOSABI_MONTEREY", "ELFOSABI_IRIX", "ELFOSABI_FREEBSD", - "ELFOSABI_TRU64", "ELFOSABI_MODESTO", "ELFOSABI_OPENBSD" + "ELFOSABI_HURD", "ELFOSABI_86OPEN", "ELFOSABI_SOLARIS", "ELFOSABI_AIX", + "ELFOSABI_IRIX", "ELFOSABI_FREEBSD", "ELFOSABI_TRU64", + "ELFOSABI_MODESTO", "ELFOSABI_OPENBSD", + [255] = "ELFOSABI_STANDALONE" }; static const char *p_types[] = { @@ -330,6 +334,7 @@ sh_types(u_int64_t sht) { case 18: return "SHT_SYMTAB_SHNDX"; /* 0x60000000 - 0x6fffffff operating system-specific semantics */ case 0x6ffffff0: return "XXX:VERSYM"; + case 0x6ffffff4: return "SHT_SUNW_dof"; case 0x6ffffff6: return "SHT_GNU_HASH"; case 0x6ffffff7: return "SHT_GNU_LIBLIST"; case 0x6ffffffc: return "XXX:VERDEF"; @@ -818,6 +823,7 @@ static void elf_print_checksum(struct el static void find_gotrel(struct elfdump *ed, struct section *gs, struct rel_entry *got); static struct spec_name *find_name(struct elfdump *ed, const char *name); +static int get_ent_count(const struct section *s, int *ent_count); static const char *get_symbol_name(struct elfdump *ed, int symtab, int i); static const char *get_string(struct elfdump *ed, int strtab, size_t off); static void get_versym(struct elfdump *ed, int i, uint16_t **vs, int *nvs); @@ -1626,6 +1632,24 @@ elf_print_shdr(struct elfdump *ed) } /* + * Return number of entries in the given section. We'd prefer ent_count be a + * size_t, but libelf APIs already use int for section indices. + */ +static int +get_ent_count(const struct section *s, int *ent_count) +{ + if (s->entsize == 0) { + warnx("section %s has entry size 0", s->name); + return (0); + } else if (s->sz / s->entsize > INT_MAX) { + warnx("section %s has invalid section count", s->name); + return (0); + } + *ent_count = (int)(s->sz / s->entsize); + return (1); +} + +/* * Retrieve the content of the corresponding SHT_SUNW_versym section for * a symbol table section. */ @@ -1656,7 +1680,9 @@ get_versym(struct elfdump *ed, int i, ui } *vs = data->d_buf; - *nvs = data->d_size / s->entsize; + assert(data->d_size == s->sz); + if (!get_ent_count(s, nvs)) + *nvs = 0; } /* @@ -1687,7 +1713,9 @@ elf_print_symtab(struct elfdump *ed, int } vs = NULL; nvs = 0; - len = data->d_size / s->entsize; + assert(data->d_size == s->sz); + if (!get_ent_count(s, &len)) + return; if (ed->flags & SOLARIS_FMT) { if (ed->ec == ELFCLASS32) PRT(" index value "); @@ -1786,7 +1814,9 @@ elf_print_dynamic(struct elfdump *ed) warnx("elf_getdata failed: %s", elf_errmsg(elferr)); return; } - len = data->d_size / s->entsize; + assert(data->d_size == s->sz); + if (!get_ent_count(s, &len)) + return; for (i = 0; i < len; i++) { if (gelf_getdyn(data, i, &dyn) != &dyn) { warnx("gelf_getdyn failed: %s", elf_errmsg(-1)); @@ -1912,7 +1942,9 @@ elf_print_rela(struct elfdump *ed, struc } else PRT("\nrelocation with addend (%s):\n", s->name); r.type = SHT_RELA; - len = data->d_size / s->entsize; + assert(data->d_size == s->sz); + if (!get_ent_count(s, &len)) + return; for (j = 0; j < len; j++) { if (gelf_getrela(data, j, &r.u_r.rela) != &r.u_r.rela) { warnx("gelf_getrela failed: %s", @@ -1941,7 +1973,9 @@ elf_print_rel(struct elfdump *ed, struct } else PRT("\nrelocation (%s):\n", s->name); r.type = SHT_REL; - len = data->d_size / s->entsize; + assert(data->d_size == s->sz); + if (!get_ent_count(s, &len)) + return; for (j = 0; j < len; j++) { if (gelf_getrel(data, j, &r.u_r.rel) != &r.u_r.rel) { warnx("gelf_getrel failed: %s", elf_errmsg(-1)); @@ -2042,7 +2076,9 @@ find_gotrel(struct elfdump *ed, struct s } memset(&r, 0, sizeof(struct rel_entry)); r.type = s->type; - len = data->d_size / s->entsize; + assert(data->d_size == s->sz); + if (!get_ent_count(s, &len)) + return; for (j = 0; j < len; j++) { if (s->type == SHT_REL) { if (gelf_getrel(data, j, &r.u_r.rel) != @@ -2086,9 +2122,11 @@ elf_print_got_section(struct elfdump *ed return; } + if (!get_ent_count(s, &len)) + return; if (ed->flags & SOLARIS_FMT) - PRT("\nGlobal Offset Table Section: %s (%jd entries)\n", - s->name, s->sz / s->entsize); + PRT("\nGlobal Offset Table Section: %s (%d entries)\n", + s->name, len); else PRT("\nglobal offset table: %s\n", s->name); (void) elf_errno(); @@ -2115,7 +2153,7 @@ elf_print_got_section(struct elfdump *ed warnx("gelf_xlatetom failed: %s", elf_errmsg(-1)); return; } - len = dst.d_size / s->entsize; + assert(dst.d_size == s->sz); if (ed->flags & SOLARIS_FMT) { /* * In verbose/Solaris mode, we search the relocation sections @@ -2503,7 +2541,8 @@ elf_print_gnu_hash(struct elfdump *ed, s shift2 = buf[3]; buf += 4; ds = &ed->sl[s->link]; - dynsymcount = ds->sz / ds->entsize; + if (!get_ent_count(ds, &dynsymcount)) + return; nchain = dynsymcount - symndx; if (data->d_size != 4 * sizeof(uint32_t) + maskwords * (ed->ec == ELFCLASS32 ? sizeof(uint32_t) : sizeof(uint64_t)) + Modified: user/ngie/more-tests2/contrib/elftoolchain/libdwarf/dwarf_sections.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/libdwarf/dwarf_sections.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/libdwarf/dwarf_sections.c Sat Oct 10 01:29:50 2015 (r289101) @@ -26,7 +26,7 @@ #include "_libdwarf.h" -ELFTC_VCSID("$Id: dwarf_sections.c 3036 2014-05-05 19:19:31Z kaiwang27 $"); +ELFTC_VCSID("$Id: dwarf_sections.c 3226 2015-06-23 13:00:16Z emaste $"); #define SET(N, V) \ do { \ Modified: user/ngie/more-tests2/contrib/elftoolchain/readelf/readelf.c ============================================================================== --- user/ngie/more-tests2/contrib/elftoolchain/readelf/readelf.c Sat Oct 10 00:17:51 2015 (r289100) +++ user/ngie/more-tests2/contrib/elftoolchain/readelf/readelf.c Sat Oct 10 01:29:50 2015 (r289101) @@ -47,7 +47,7 @@ #include "_elftc.h" -ELFTC_VCSID("$Id: readelf.c 3223 2015-05-25 20:37:57Z emaste $"); +ELFTC_VCSID("$Id: readelf.c 3250 2015-10-06 13:56:15Z emaste $"); /* * readelf(1) options. @@ -1295,6 +1295,20 @@ r_type(unsigned int mach, unsigned int t case 22: return "R_MIPS_GOTLO16"; case 30: return "R_MIPS_CALLHI16"; case 31: return "R_MIPS_CALLLO16"; + case 38: return "R_MIPS_TLS_DTPMOD32"; + case 39: return "R_MIPS_TLS_DTPREL32"; + case 40: return "R_MIPS_TLS_DTPMOD64"; + case 41: return "R_MIPS_TLS_DTPREL64"; + case 42: return "R_MIPS_TLS_GD"; + case 43: return "R_MIPS_TLS_LDM"; + case 44: return "R_MIPS_TLS_DTPREL_HI16"; + case 45: return "R_MIPS_TLS_DTPREL_LO16"; + case 46: return "R_MIPS_TLS_GOTTPREL"; + case 47: return "R_MIPS_TLS_TPREL32"; + case 48: return "R_MIPS_TLS_TPREL64"; + case 49: return "R_MIPS_TLS_TPREL_HI16"; + case 50: return "R_MIPS_TLS_TPREL_LO16"; + default: return ""; } case EM_PPC: @@ -1378,6 +1392,51 @@ r_type(unsigned int mach, unsigned int t case 116: return "R_PPC_EMB_RELSDA"; default: return ""; } + case EM_RISCV: + switch(type) { + case 0: return "R_RISCV_NONE"; + case 1: return "R_RISCV_32"; + case 2: return "R_RISCV_64"; + case 3: return "R_RISCV_RELATIVE"; + case 4: return "R_RISCV_COPY"; + case 5: return "R_RISCV_JUMP_SLOT"; + case 6: return "R_RISCV_TLS_DTPMOD32"; + case 7: return "R_RISCV_TLS_DTPMOD64"; + case 8: return "R_RISCV_TLS_DTPREL32"; + case 9: return "R_RISCV_TLS_DTPREL64"; + case 10: return "R_RISCV_TLS_TPREL32"; + case 11: return "R_RISCV_TLS_TPREL64"; + case 16: return "R_RISCV_BRANCH"; + case 17: return "R_RISCV_JAL"; + case 18: return "R_RISCV_CALL"; + case 19: return "R_RISCV_CALL_PLT"; + case 20: return "R_RISCV_GOT_HI20"; + case 21: return "R_RISCV_TLS_GOT_HI20"; + case 22: return "R_RISCV_TLS_GD_HI20"; + case 23: return "R_RISCV_PCREL_HI20"; + case 24: return "R_RISCV_PCREL_LO12_I"; + case 25: return "R_RISCV_PCREL_LO12_S"; + case 26: return "R_RISCV_HI20"; + case 27: return "R_RISCV_LO12_I"; + case 28: return "R_RISCV_LO12_S"; + case 29: return "R_RISCV_TPREL_HI20"; + case 30: return "R_RISCV_TPREL_LO12_I"; + case 31: return "R_RISCV_TPREL_LO12_S"; + case 32: return "R_RISCV_TPREL_ADD"; + case 33: return "R_RISCV_ADD8"; + case 34: return "R_RISCV_ADD16"; + case 35: return "R_RISCV_ADD32"; + case 36: return "R_RISCV_ADD64"; + case 37: return "R_RISCV_SUB8"; + case 38: return "R_RISCV_SUB16"; + case 39: return "R_RISCV_SUB32"; + case 40: return "R_RISCV_SUB64"; + case 41: return "R_RISCV_GNU_VTINHERIT"; + case 42: return "R_RISCV_GNU_VTENTRY"; + case 43: return "R_RISCV_ALIGN"; + case 44: return "R_RISCV_RVC_BRANCH"; + case 45: return "R_RISCV_RVC_JUMP"; + } case EM_SPARC: case EM_SPARCV9: switch(type) { @@ -3179,6 +3238,9 @@ dump_rel(struct readelf *re, struct sect uint64_t symval; int i, len; + if (s->link >= re->shnum) + return; + #define REL_HDR "r_offset", "r_info", "r_type", "st_value", "st_name" #define REL_CT32 (uintmax_t)r.r_offset, (uintmax_t)r.r_info, \ r_type(re->ehdr.e_machine, ELF32_R_TYPE(r.r_info)), \ @@ -3204,10 +3266,6 @@ dump_rel(struct readelf *re, struct sect warnx("gelf_getrel failed: %s", elf_errmsg(-1)); continue; } - if (s->link >= re->shnum) { - warnx("invalid section link index %u", s->link); - continue; - } symname = get_symbol_name(re, s->link, GELF_R_SYM(r.r_info)); symval = get_symbol_value(re, s->link, GELF_R_SYM(r.r_info)); if (re->ec == ELFCLASS32) { @@ -3236,6 +3294,9 @@ dump_rela(struct readelf *re, struct sec uint64_t symval; int i, len; + if (s->link >= re->shnum) + return; + #define RELA_HDR "r_offset", "r_info", "r_type", "st_value", \ "st_name + r_addend" #define RELA_CT32 (uintmax_t)r.r_offset, (uintmax_t)r.r_info, \ @@ -3262,10 +3323,6 @@ dump_rela(struct readelf *re, struct sec warnx("gelf_getrel failed: %s", elf_errmsg(-1)); continue; } - if (s->link >= re->shnum) { - warnx("invalid section link index %u", s->link); - continue; - } symname = get_symbol_name(re, s->link, GELF_R_SYM(r.r_info)); symval = get_symbol_value(re, s->link, GELF_R_SYM(r.r_info)); if (re->ec == ELFCLASS32) { @@ -3321,9 +3378,13 @@ dump_symtab(struct readelf *re, int i) Elf_Data *d; GElf_Sym sym; const char *name; - int elferr, stab, j, len; + uint32_t stab; + int elferr, j, len; + uint16_t vs; s = &re->sl[i]; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201510100129.t9A1ToVO084170>