Date: Tue, 30 Dec 2014 20:23:04 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r276421 - in projects/clang350-import: . bin/ln cddl/contrib/opensolaris/cmd/zpool contrib/elftoolchain/common contrib/elftoolchain/elfcopy contrib/elftoolchain/libdwarf contrib/elftool... Message-ID: <201412302023.sBUKN4p6038875@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Tue Dec 30 20:23:03 2014 New Revision: 276421 URL: https://svnweb.freebsd.org/changeset/base/276421 Log: Merge ^/head r274961 through r276418. Added: projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_attroffset.3 - copied unchanged from r276418, head/contrib/elftoolchain/libdwarf/dwarf_attroffset.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_get_die_infotypes_flag.3 - copied unchanged from r276418, head/contrib/elftoolchain/libdwarf/dwarf_get_die_infotypes_flag.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_get_section_max_offsets.3 - copied unchanged from r276418, head/contrib/elftoolchain/libdwarf/dwarf_get_section_max_offsets.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_next_types_section.3 - copied unchanged from r276418, head/contrib/elftoolchain/libdwarf/dwarf_next_types_section.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_sections.c - copied unchanged from r276418, head/contrib/elftoolchain/libdwarf/dwarf_sections.c projects/clang350-import/sys/arm/arm/locore-v4.S - copied unchanged from r276418, head/sys/arm/arm/locore-v4.S projects/clang350-import/sys/arm/arm/locore-v6.S - copied unchanged from r276418, head/sys/arm/arm/locore-v6.S Replaced: projects/clang350-import/sys/arm/arm/locore.S - copied unchanged from r276418, head/sys/arm/arm/locore.S Modified: projects/clang350-import/Makefile.inc1 projects/clang350-import/bin/ln/symlink.7 projects/clang350-import/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 projects/clang350-import/contrib/elftoolchain/common/Makefile projects/clang350-import/contrib/elftoolchain/common/elfdefinitions.h projects/clang350-import/contrib/elftoolchain/elfcopy/archive.c projects/clang350-import/contrib/elftoolchain/elfcopy/elfcopy.h projects/clang350-import/contrib/elftoolchain/elfcopy/main.c projects/clang350-import/contrib/elftoolchain/elfcopy/sections.c projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c projects/clang350-import/contrib/elftoolchain/elfcopy/symbols.c projects/clang350-import/contrib/elftoolchain/libdwarf/Makefile projects/clang350-import/contrib/elftoolchain/libdwarf/Version.map projects/clang350-import/contrib/elftoolchain/libdwarf/_libdwarf.h projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf.h projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_attr.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_attr.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_attrval.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_attrval_signed.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_child.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_cu.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_die.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_dieoffset.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_dump.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_errmsg.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_frame.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_highpc.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_lineno.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_loclist.c projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_loclist_from_expr.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_next_cu_header.3 projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf_ranges.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf.h projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_abbrev.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_arange.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_attr.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_die.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_frame.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_info.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_init.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_lineno.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_loc.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_loclist.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_nametbl.c projects/clang350-import/contrib/elftoolchain/libdwarf/libdwarf_sections.c projects/clang350-import/contrib/elftoolchain/libelf/_libelf.h projects/clang350-import/contrib/elftoolchain/libelf/_libelf_ar.h projects/clang350-import/contrib/elftoolchain/libelf/elf.3 projects/clang350-import/contrib/elftoolchain/libelf/elf_data.c projects/clang350-import/contrib/elftoolchain/libelf/elf_errmsg.c projects/clang350-import/contrib/elftoolchain/libelf/elf_flag.c projects/clang350-import/contrib/elftoolchain/libelf/elf_memory.c projects/clang350-import/contrib/elftoolchain/libelf/elf_next.c projects/clang350-import/contrib/elftoolchain/libelf/elf_open.c projects/clang350-import/contrib/elftoolchain/libelf/elf_rand.c projects/clang350-import/contrib/elftoolchain/libelf/elf_rawfile.c projects/clang350-import/contrib/elftoolchain/libelf/elf_scn.c projects/clang350-import/contrib/elftoolchain/libelf/elf_strptr.c projects/clang350-import/contrib/elftoolchain/libelf/elf_update.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_cap.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_dyn.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_ehdr.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_move.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_phdr.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_rel.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_rela.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_shdr.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_sym.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_syminfo.c projects/clang350-import/contrib/elftoolchain/libelf/gelf_symshndx.c projects/clang350-import/contrib/elftoolchain/libelf/libelf.h projects/clang350-import/contrib/elftoolchain/libelf/libelf_align.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_ar.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_ar_util.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_checksum.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_convert.m4 projects/clang350-import/contrib/elftoolchain/libelf/libelf_data.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_ehdr.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_extended.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_memory.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_open.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_phdr.c projects/clang350-import/contrib/elftoolchain/libelf/libelf_xlate.c projects/clang350-import/contrib/elftoolchain/libelftc/elftc_copyfile.c projects/clang350-import/contrib/elftoolchain/libelftc/elftc_demangle.c projects/clang350-import/contrib/elftoolchain/libelftc/libelftc.h projects/clang350-import/contrib/elftoolchain/libelftc/libelftc_dem_gnu3.c projects/clang350-import/contrib/elftoolchain/nm/nm.c projects/clang350-import/contrib/elftoolchain/readelf/readelf.1 projects/clang350-import/contrib/elftoolchain/readelf/readelf.c projects/clang350-import/contrib/elftoolchain/strings/strings.c projects/clang350-import/contrib/libcxxrt/atomic.h projects/clang350-import/contrib/libcxxrt/cxxabi.h projects/clang350-import/contrib/libcxxrt/dwarf_eh.h projects/clang350-import/contrib/libcxxrt/dynamic_cast.cc projects/clang350-import/contrib/libcxxrt/exception.cc projects/clang350-import/contrib/libcxxrt/guard.cc projects/clang350-import/contrib/libcxxrt/stdexcept.cc projects/clang350-import/contrib/libcxxrt/stdexcept.h projects/clang350-import/contrib/libcxxrt/typeinfo.cc projects/clang350-import/contrib/libcxxrt/unwind-arm.h projects/clang350-import/contrib/libcxxrt/unwind.h projects/clang350-import/lib/libc/regex/re_format.7 projects/clang350-import/lib/libdwarf/Makefile projects/clang350-import/lib/libelftc/elftc_version.c projects/clang350-import/lib/libgssapi/gss_acquire_cred.3 projects/clang350-import/lib/libgssapi/gss_add_cred.3 projects/clang350-import/lib/libgssapi/gss_add_oid_set_member.3 projects/clang350-import/lib/libgssapi/gss_create_empty_oid_set.3 projects/clang350-import/lib/libgssapi/gss_delete_sec_context.3 projects/clang350-import/lib/libgssapi/gss_get_mic.3 projects/clang350-import/lib/libgssapi/gss_import_sec_context.3 projects/clang350-import/lib/libgssapi/gss_inquire_context.3 projects/clang350-import/lib/libgssapi/gss_process_context_token.3 projects/clang350-import/lib/libgssapi/gss_test_oid_set_member.3 projects/clang350-import/lib/libgssapi/gss_unwrap.3 projects/clang350-import/lib/libgssapi/gss_wrap.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_get_error.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_get_mech_info.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_get_principal_name.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_get_versions.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_getcred.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_is_installed.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_max_data_length.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_qop_to_num.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_seccreate.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_set_callback.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_set_defaults.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_set_svc_name.3 projects/clang350-import/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 projects/clang350-import/lib/librpcsec_gss/rpcsec_gss.3 projects/clang350-import/lib/libstand/cd9660.c projects/clang350-import/lib/msun/man/lgamma.3 projects/clang350-import/release/Makefile projects/clang350-import/sbin/bsdlabel/bsdlabel.8 projects/clang350-import/sbin/camcontrol/camcontrol.8 projects/clang350-import/sbin/geom/class/label/glabel.8 projects/clang350-import/sbin/ipfw/ipfw.8 projects/clang350-import/sbin/iscontrol/iscontrol.8 projects/clang350-import/sbin/mount_nfs/mount_nfs.8 projects/clang350-import/sbin/routed/routed.8 projects/clang350-import/share/man/man4/ada.4 projects/clang350-import/share/man/man7/crypto.7 projects/clang350-import/share/man/man7/hier.7 projects/clang350-import/sys/amd64/vmm/amd/svm.c (contents, props changed) projects/clang350-import/sys/amd64/vmm/amd/vmcb.h (contents, props changed) projects/clang350-import/sys/arm/arm/cpu_asm-v6.S projects/clang350-import/sys/arm/arm/genassym.c projects/clang350-import/sys/arm/arm/mp_machdep.c projects/clang350-import/sys/boot/common/loader.8 projects/clang350-import/sys/conf/WITHOUT_SOURCELESS_UCODE projects/clang350-import/sys/conf/options.arm projects/clang350-import/sys/dev/usb/controller/xhci.c projects/clang350-import/sys/dev/usb/controller/xhci.h projects/clang350-import/sys/dev/virtio/mmio/virtio_mmio.c projects/clang350-import/sys/dev/virtio/network/if_vtnet.c projects/clang350-import/sys/dev/vt/hw/efifb/efifb.c projects/clang350-import/sys/dev/vt/hw/vga/vt_vga.c projects/clang350-import/sys/i386/conf/PAE projects/clang350-import/sys/i386/conf/XEN projects/clang350-import/sys/kern/subr_module.c projects/clang350-import/usr.bin/soeliminate/soeliminate.1 projects/clang350-import/usr.sbin/bsdinstall/bsdinstall.8 projects/clang350-import/usr.sbin/kbdcontrol/kbdcontrol.1 Directory Properties: projects/clang350-import/ (props changed) projects/clang350-import/cddl/ (props changed) projects/clang350-import/cddl/contrib/opensolaris/ (props changed) projects/clang350-import/contrib/elftoolchain/ (props changed) projects/clang350-import/contrib/libcxxrt/ (props changed) projects/clang350-import/lib/libc/ (props changed) projects/clang350-import/sbin/ (props changed) projects/clang350-import/sbin/ipfw/ (props changed) projects/clang350-import/share/ (props changed) projects/clang350-import/share/man/man4/ (props changed) projects/clang350-import/sys/ (props changed) projects/clang350-import/sys/amd64/vmm/ (props changed) projects/clang350-import/sys/amd64/vmm/amd/npt.c (props changed) projects/clang350-import/sys/amd64/vmm/amd/npt.h (props changed) projects/clang350-import/sys/amd64/vmm/amd/svm.h (props changed) projects/clang350-import/sys/amd64/vmm/amd/svm_genassym.c (props changed) projects/clang350-import/sys/amd64/vmm/amd/svm_msr.c (props changed) projects/clang350-import/sys/amd64/vmm/amd/svm_msr.h (props changed) projects/clang350-import/sys/amd64/vmm/amd/svm_softc.h (props changed) projects/clang350-import/sys/amd64/vmm/amd/svm_support.S (props changed) projects/clang350-import/sys/amd64/vmm/amd/vmcb.c (props changed) projects/clang350-import/sys/boot/ (props changed) projects/clang350-import/sys/conf/ (props changed) Modified: projects/clang350-import/Makefile.inc1 ============================================================================== --- projects/clang350-import/Makefile.inc1 Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/Makefile.inc1 Tue Dec 30 20:23:03 2014 (r276421) @@ -1440,8 +1440,10 @@ _kgzip= usr.sbin/kgzip .endif # If we're given an XAS, don't build binutils. -.if ${XAS:M/*} == "" && ${MK_BINUTILS_BOOTSTRAP} != "no" +.if ${XAS:M/*} == "" +.if ${MK_BINUTILS_BOOTSTRAP} != "no" _binutils= gnu/usr.bin/binutils +.endif .if ${MK_ELFTOOLCHAIN_TOOLS} != "no" _elftctools= lib/libelftc \ usr.bin/addr2line \ Modified: projects/clang350-import/bin/ln/symlink.7 ============================================================================== --- projects/clang350-import/bin/ln/symlink.7 Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/bin/ln/symlink.7 Tue Dec 30 20:23:03 2014 (r276421) @@ -29,7 +29,7 @@ .\" @(#)symlink.7 8.3 (Berkeley) 3/31/94 .\" $FreeBSD$ .\" -.Dd April 25, 2010 +.Dd December 29, 2014 .Dt SYMLINK 7 .Os .Sh NAME @@ -219,7 +219,7 @@ would change the ownership of .Dq Li slink itself. .Pp -There are four exceptions to this rule. +There are five exceptions to this rule. The .Xr mv 1 and @@ -262,13 +262,12 @@ a file tree.) .Pp The .Xr file 1 -command is also an exception to this rule. -The -.Xr file 1 -command does not follow symbolic links named as argument by default. -The -.Xr file 1 -command does follow symbolic links named as argument if +and +.Xr stat 1 +commands are also exceptions to this rule. +These +commands do not follow symbolic links named as argument by default, +but do follow symbolic links named as argument if the .Fl L option is specified. .Pp Modified: projects/clang350-import/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 ============================================================================== --- projects/clang350-import/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 Tue Dec 30 20:23:03 2014 (r276421) @@ -443,7 +443,7 @@ This feature becomes .Sy active once a .Sy recordsize -property has been set larger than 128KB, and will return to being +property has been set larger than 128KB, and will return to being .Sy enabled once all filesystems that have ever had their recordsize larger than 128KB are destroyed. Modified: projects/clang350-import/contrib/elftoolchain/common/Makefile ============================================================================== --- projects/clang350-import/contrib/elftoolchain/common/Makefile Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/common/Makefile Tue Dec 30 20:23:03 2014 (r276421) @@ -1,4 +1,4 @@ -# $Id: Makefile 2606 2012-10-02 17:52:57Z jkoshy $ +# $Id: Makefile 3022 2014-04-17 18:05:58Z jkoshy $ TOP= .. @@ -12,4 +12,7 @@ all depend obj: clean clobber: rm -f ${CLEANFILES} +cleandepend: + rm -f .depend + .include "${TOP}/mk/elftoolchain.inc.mk" Modified: projects/clang350-import/contrib/elftoolchain/common/elfdefinitions.h ============================================================================== --- projects/clang350-import/contrib/elftoolchain/common/elfdefinitions.h Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/common/elfdefinitions.h Tue Dec 30 20:23:03 2014 (r276421) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfdefinitions.h 2950 2013-06-15 13:36:02Z jkoshy $ + * $Id: elfdefinitions.h 3110 2014-12-20 08:32:46Z kaiwang27 $ */ /* @@ -821,7 +821,8 @@ enum { EM__LAST__ }; -/* Older synonyms. */ +/* Other synonyms. */ +#define EM_AMD64 EM_X86_64 #define EM_ARC_A5 EM_ARC_COMPACT /* @@ -2114,11 +2115,11 @@ typedef struct { /* 64-bit entry. */ typedef struct { - Elf64_Word l_name; - Elf64_Word l_time_stamp; - Elf64_Word l_checksum; - Elf64_Word l_version; - Elf64_Word l_flags; + Elf64_Word l_name; /* The name of a shared object. */ + Elf64_Word l_time_stamp; /* 32-bit timestamp. */ + Elf64_Word l_checksum; /* Checksum of visible symbols, sizes. */ + Elf64_Word l_version; /* Interface version string index. */ + Elf64_Word l_flags; /* Flags (LL_*). */ } Elf64_Lib; #define _ELF_DEFINE_LL_FLAGS() \ @@ -2366,12 +2367,12 @@ typedef struct { /* 64 bit PHDR entry. */ typedef struct { Elf64_Word p_type; /* Type of segment. */ - Elf64_Word p_flags; /* File offset to segment. */ - Elf64_Off p_offset; /* Virtual address in memory. */ - Elf64_Addr p_vaddr; /* Physical address (if relevant). */ - Elf64_Addr p_paddr; /* Size of segment in file. */ - Elf64_Xword p_filesz; /* Size of segment in memory. */ - Elf64_Xword p_memsz; /* Segment flags. */ + Elf64_Word p_flags; /* Segment flags. */ + Elf64_Off p_offset; /* File offset to segment. */ + Elf64_Addr p_vaddr; /* Virtual address in memory. */ + Elf64_Addr p_paddr; /* Physical address (if relevant). */ + Elf64_Xword p_filesz; /* Size of segment in file. */ + Elf64_Xword p_memsz; /* Size of segment in memory. */ Elf64_Xword p_align; /* Alignment constraints. */ } Elf64_Phdr; @@ -2455,11 +2456,11 @@ typedef struct { typedef struct { Elf64_Word st_name; /* index of symbol's name */ - unsigned char st_info; /* value for the symbol */ - unsigned char st_other; /* size of associated data */ - Elf64_Half st_shndx; /* type and binding attributes */ - Elf64_Addr st_value; /* visibility */ - Elf64_Xword st_size; /* index of related section */ + unsigned char st_info; /* type and binding attributes */ + unsigned char st_other; /* visibility */ + Elf64_Half st_shndx; /* index of related section */ + Elf64_Addr st_value; /* value for the symbol */ + Elf64_Xword st_size; /* size of associated data */ } Elf64_Sym; #define ELF32_ST_BIND(I) ((I) >> 4) Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/archive.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/archive.c Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/archive.c Tue Dec 30 20:23:03 2014 (r276421) @@ -40,7 +40,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: archive.c 2370 2011-12-29 12:48:12Z jkoshy $"); +ELFTC_VCSID("$Id: archive.c 3102 2014-10-29 21:09:01Z jkoshy $"); #define _ARMAG_LEN 8 /* length of ar magic string */ #define _ARHDR_LEN 60 /* length of ar header */ @@ -350,7 +350,6 @@ ac_detect_ar(int ifd) r = -1; if ((a = archive_read_new()) == NULL) return (0); - archive_read_support_filter_none(a); archive_read_support_format_ar(a); if (archive_read_open_fd(a, ifd, 10240) == ARCHIVE_OK) r = archive_read_next_header(a, &entry); @@ -386,7 +385,6 @@ ac_read_objs(struct elfcopy *ecp, int if err(EXIT_FAILURE, "lseek failed"); if ((a = archive_read_new()) == NULL) errx(EXIT_FAILURE, "%s", archive_error_string(a)); - archive_read_support_filter_none(a); archive_read_support_format_ar(a); AC(archive_read_open_fd(a, ifd, 10240)); for(;;) { @@ -449,7 +447,6 @@ ac_write_objs(struct elfcopy *ecp, int o if ((a = archive_write_new()) == NULL) errx(EXIT_FAILURE, "%s", archive_error_string(a)); archive_write_set_format_ar_svr4(a); - archive_write_add_filter_none(a); AC(archive_write_open_fd(a, ofd)); /* Write the archive symbol table, even if it's empty. */ Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/elfcopy.h ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/elfcopy.h Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/elfcopy.h Tue Dec 30 20:23:03 2014 (r276421) @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: elfcopy.h 2970 2013-12-01 15:22:12Z kaiwang27 $ + * $Id: elfcopy.h 3134 2014-12-23 10:43:59Z kaiwang27 $ */ #include <sys/queue.h> @@ -115,6 +115,7 @@ struct segment; /* Internal data structure for sections. */ struct section { struct segment *seg; /* containing segment */ + struct segment *seg_tls; /* tls segment */ const char *name; /* section name */ char *newname; /* new section name */ Elf_Scn *is; /* input scn */ Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/main.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/main.c Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/main.c Tue Dec 30 20:23:03 2014 (r276421) @@ -40,7 +40,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: main.c 2970 2013-12-01 15:22:12Z kaiwang27 $"); +ELFTC_VCSID("$Id: main.c 3111 2014-12-20 08:33:01Z kaiwang27 $"); enum options { Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/sections.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/sections.c Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/sections.c Tue Dec 30 20:23:03 2014 (r276421) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2007-2011 Kai Wang + * Copyright (c) 2007-2011,2014 Kai Wang * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -35,7 +35,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: sections.c 2358 2011-12-19 18:22:32Z kaiwang27 $"); +ELFTC_VCSID("$Id: sections.c 3134 2014-12-23 10:43:59Z kaiwang27 $"); static void add_gnu_debuglink(struct elfcopy *ecp); static uint32_t calc_crc32(const char *p, size_t len, uint32_t crc); @@ -372,6 +372,14 @@ create_scn(struct elfcopy *ecp) is_remove_reloc_sec(ecp, ish.sh_info)) continue; + /* + * Section groups should be removed if symbol table will + * be removed. (section group's signature stored in symbol + * table) + */ + if (ish.sh_type == SHT_GROUP && ecp->strip == STRIP_ALL) + continue; + /* Get section flags set by user. */ sec_flags = get_section_flags(ecp, name); @@ -477,7 +485,10 @@ insert_shtab(struct elfcopy *ecp, int ta if ((shtab = calloc(1, sizeof(*shtab))) == NULL) errx(EXIT_FAILURE, "calloc failed"); if (!tail) { - /* shoff of input object is used as a hint. */ + /* + * "shoff" of input object is used as a hint for section + * resync later. + */ if (gelf_getehdr(ecp->ein, &ieh) == NULL) errx(EXIT_FAILURE, "gelf_getehdr() failed: %s", elf_errmsg(-1)); @@ -756,6 +767,15 @@ resync_sections(struct elfcopy *ecp) first = 0; } + /* + * Ignore TLS sections with load address 0 and without + * content. We don't need to adjust their file offset or + * VMA, only the size matters. + */ + if (s->seg_tls != NULL && s->type == SHT_NOBITS && + s->off == 0) + continue; + /* Align section offset. */ if (off <= s->off) { if (!s->loadable) @@ -1042,6 +1062,17 @@ copy_data(struct section *s) od->d_size = id->d_size; od->d_version = id->d_version; } + + /* + * Alignment Fixup. libelf does not allow the alignment for + * Elf_Data descriptor to be set to 0. In this case we workaround + * it by setting the alignment to 1. + * + * According to the ELF ABI, alignment 0 and 1 has the same + * meaning: the section has no alignment constraints. + */ + if (od->d_align == 0) + od->d_align = 1; } struct section * Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/segments.c Tue Dec 30 20:23:03 2014 (r276421) @@ -35,7 +35,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: segments.c 2542 2012-08-12 16:14:15Z kaiwang27 $"); +ELFTC_VCSID("$Id: segments.c 3134 2014-12-23 10:43:59Z kaiwang27 $"); static void insert_to_inseg_list(struct segment *seg, struct section *sec); @@ -73,17 +73,21 @@ add_to_inseg_list(struct elfcopy *ecp, s */ loadable = 0; STAILQ_FOREACH(seg, &ecp->v_seg, seg_list) { - if (s->off < seg->off) + if (s->off < seg->off || (s->vma < seg->addr && !s->pseudo)) continue; if (s->off + s->sz > seg->off + seg->fsz && s->type != SHT_NOBITS) continue; if (s->off + s->sz > seg->off + seg->msz) continue; + if (s->vma + s->sz > seg->addr + seg->msz) + continue; insert_to_inseg_list(seg, s); if (seg->type == PT_LOAD) s->seg = seg; + else if (seg->type == PT_TLS) + s->seg_tls = seg; s->lma = seg->addr + (s->off - seg->off); loadable = 1; } @@ -97,7 +101,7 @@ adjust_addr(struct elfcopy *ecp) struct section *s, *s0; struct segment *seg; struct sec_action *sac; - uint64_t dl, lma, old_vma, start, end; + uint64_t dl, lma, start, end; int found, i; /* @@ -114,8 +118,6 @@ adjust_addr(struct elfcopy *ecp) s->lma += ecp->change_addr; if (!s->pseudo) { - old_vma = s->vma; - /* Apply global VMA adjustment. */ if (ecp->change_addr != 0) s->vma += ecp->change_addr; Modified: projects/clang350-import/contrib/elftoolchain/elfcopy/symbols.c ============================================================================== --- projects/clang350-import/contrib/elftoolchain/elfcopy/symbols.c Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/elfcopy/symbols.c Tue Dec 30 20:23:03 2014 (r276421) @@ -34,7 +34,7 @@ #include "elfcopy.h" -ELFTC_VCSID("$Id: symbols.c 2971 2013-12-01 15:22:21Z kaiwang27 $"); +ELFTC_VCSID("$Id: symbols.c 3135 2014-12-24 08:22:43Z kaiwang27 $"); /* Symbol table buffer structure. */ struct symbuf { @@ -46,12 +46,25 @@ struct symbuf { size_t gcap, lcap; /* buffer capacities. */ }; +struct sthash { + LIST_ENTRY(sthash) sh_next; + size_t sh_off; +}; +typedef LIST_HEAD(,sthash) hash_head; +#define STHASHSIZE 65536 + +struct strimpl { + char *buf; /* string table */ + size_t sz; /* entries */ + size_t cap; /* buffer capacity */ + hash_head hash[STHASHSIZE]; +}; + + /* String table buffer structure. */ struct strbuf { - char *l; /* local symbol string table */ - char *g; /* global symbol string table */ - size_t lsz, gsz; /* size of each kind */ - size_t gcap, lcap; /* buffer capacities. */ + struct strimpl l; /* local symbols */ + struct strimpl g; /* global symbols */ }; static int is_debug_symbol(unsigned char st_info); @@ -62,10 +75,12 @@ static int is_needed_symbol(struct elfco static int is_remove_symbol(struct elfcopy *ecp, size_t sc, int i, GElf_Sym *s, const char *name); static int is_weak_symbol(unsigned char st_info); -static int lookup_exact_string(const char *buf, size_t sz, const char *s); +static int lookup_exact_string(hash_head *hash, const char *buf, + const char *s); static int generate_symbols(struct elfcopy *ecp); static void mark_symbols(struct elfcopy *ecp, size_t sc); static int match_wildcard(const char *name, const char *pattern); +uint32_t str_hash(const char *s); /* Convenient bit vector operation macros. */ #define BIT_SET(v, n) (v[(n)>>3] |= 1U << ((n) & 7)) @@ -300,7 +315,7 @@ generate_symbols(struct elfcopy *ecp) GElf_Sym sym; Elf_Data* id; Elf_Scn *is; - size_t ishstrndx, namelen, ndx, nsyms, sc, symndx; + size_t ishstrndx, namelen, ndx, sc, symndx; int ec, elferr, i; if (elf_getshstrndx(ecp->ein, &ishstrndx) == 0) @@ -316,11 +331,10 @@ generate_symbols(struct elfcopy *ecp) if ((st_buf = calloc(1, sizeof(*st_buf))) == NULL) err(EXIT_FAILURE, "calloc failed"); sy_buf->gcap = sy_buf->lcap = 64; - st_buf->gcap = 256; - st_buf->lcap = 64; - st_buf->lsz = 1; /* '\0' at start. */ - st_buf->gsz = 0; - nsyms = 0; + st_buf->g.cap = 256; + st_buf->l.cap = 64; + st_buf->l.sz = 1; /* '\0' at start. */ + st_buf->g.sz = 0; ecp->symtab->sz = 0; ecp->strtab->sz = 0; @@ -542,10 +556,10 @@ generate_symbols(struct elfcopy *ecp) /* Update st_name. */ if (ec == ELFCLASS32) sy_buf->g32[ecp->symndx[i]].st_name += - st_buf->lsz; + st_buf->l.sz; else sy_buf->g64[ecp->symndx[i]].st_name += - st_buf->lsz; + st_buf->l.sz; /* Update index map. */ ecp->symndx[i] += sy_buf->nls; @@ -634,6 +648,8 @@ free_symtab(struct elfcopy *ecp) { struct symbuf *sy_buf; struct strbuf *st_buf; + struct sthash *sh, *shtmp; + int i; if (ecp->symtab != NULL && ecp->symtab->buf != NULL) { sy_buf = ecp->symtab->buf; @@ -649,10 +665,22 @@ free_symtab(struct elfcopy *ecp) if (ecp->strtab != NULL && ecp->strtab->buf != NULL) { st_buf = ecp->strtab->buf; - if (st_buf->l != NULL) - free(st_buf->l); - if (st_buf->g != NULL) - free(st_buf->g); + if (st_buf->l.buf != NULL) + free(st_buf->l.buf); + if (st_buf->g.buf != NULL) + free(st_buf->g.buf); + for (i = 0; i < STHASHSIZE; i++) { + LIST_FOREACH_SAFE(sh, &st_buf->l.hash[i], sh_next, + shtmp) { + LIST_REMOVE(sh, sh_next); + free(sh); + } + LIST_FOREACH_SAFE(sh, &st_buf->g.hash[i], sh_next, + shtmp) { + LIST_REMOVE(sh, sh_next); + free(sh); + } + } } } @@ -690,10 +718,10 @@ create_external_symtab(struct elfcopy *e if ((st_buf = calloc(1, sizeof(*st_buf))) == NULL) err(EXIT_FAILURE, "calloc failed"); sy_buf->gcap = sy_buf->lcap = 64; - st_buf->gcap = 256; - st_buf->lcap = 64; - st_buf->lsz = 1; /* '\0' at start. */ - st_buf->gsz = 0; + st_buf->g.cap = 256; + st_buf->l.cap = 64; + st_buf->l.sz = 1; /* '\0' at start. */ + st_buf->g.sz = 0; ecp->symtab->sz = 0; ecp->strtab->sz = 0; @@ -730,6 +758,8 @@ add_to_symtab(struct elfcopy *ecp, const { struct symbuf *sy_buf; struct strbuf *st_buf; + struct sthash *sh; + uint32_t hash; int pos; /* @@ -762,32 +792,39 @@ add_to_symtab(struct elfcopy *ecp, const else \ sy_buf->B##SZ[sy_buf->n##B##s].st_shndx = \ ecp->secndx[st_shndx]; \ - if (st_buf->B == NULL) { \ - st_buf->B = calloc(st_buf->B##cap, sizeof(*st_buf->B)); \ - if (st_buf->B == NULL) \ + if (st_buf->B.buf == NULL) { \ + st_buf->B.buf = calloc(st_buf->B.cap, \ + sizeof(*st_buf->B.buf)); \ + if (st_buf->B.buf == NULL) \ err(EXIT_FAILURE, "malloc failed"); \ } \ if (name != NULL && *name != '\0') { \ - pos = lookup_exact_string(st_buf->B, \ - st_buf->B##sz, name); \ + pos = lookup_exact_string(st_buf->B.hash, st_buf->B.buf,\ + name); \ if (pos != -1) \ sy_buf->B##SZ[sy_buf->n##B##s].st_name = pos; \ else { \ sy_buf->B##SZ[sy_buf->n##B##s].st_name = \ - st_buf->B##sz; \ - while (st_buf->B##sz + strlen(name) >= \ - st_buf->B##cap - 1) { \ - st_buf->B##cap *= 2; \ - st_buf->B = realloc(st_buf->B, \ - st_buf->B##cap); \ - if (st_buf->B == NULL) \ + st_buf->B.sz; \ + while (st_buf->B.sz + strlen(name) >= \ + st_buf->B.cap - 1) { \ + st_buf->B.cap *= 2; \ + st_buf->B.buf = realloc(st_buf->B.buf, \ + st_buf->B.cap); \ + if (st_buf->B.buf == NULL) \ err(EXIT_FAILURE, \ "realloc failed"); \ } \ - strncpy(&st_buf->B[st_buf->B##sz], name, \ + if ((sh = malloc(sizeof(*sh))) == NULL) \ + err(EXIT_FAILURE, "malloc failed"); \ + sh->sh_off = st_buf->B.sz; \ + hash = str_hash(name); \ + LIST_INSERT_HEAD(&st_buf->B.hash[hash], sh, \ + sh_next); \ + strncpy(&st_buf->B.buf[st_buf->B.sz], name, \ strlen(name)); \ - st_buf->B[st_buf->B##sz + strlen(name)] = '\0'; \ - st_buf->B##sz += strlen(name) + 1; \ + st_buf->B.buf[st_buf->B.sz + strlen(name)] = '\0'; \ + st_buf->B.sz += strlen(name) + 1; \ } \ } else \ sy_buf->B##SZ[sy_buf->n##B##s].st_name = 0; \ @@ -812,7 +849,7 @@ add_to_symtab(struct elfcopy *ecp, const /* Update section size. */ ecp->symtab->sz = (sy_buf->nls + sy_buf->ngs) * (ecp->oec == ELFCLASS32 ? sizeof(Elf32_Sym) : sizeof(Elf64_Sym)); - ecp->strtab->sz = st_buf->lsz + st_buf->gsz; + ecp->strtab->sz = st_buf->l.sz + st_buf->g.sz; #undef _ADDSYM } @@ -832,9 +869,9 @@ finalize_external_symtab(struct elfcopy st_buf = ecp->strtab->buf; for (i = 0; (size_t) i < sy_buf->ngs; i++) { if (ecp->oec == ELFCLASS32) - sy_buf->g32[i].st_name += st_buf->lsz; + sy_buf->g32[i].st_name += st_buf->l.sz; else - sy_buf->g64[i].st_name += st_buf->lsz; + sy_buf->g64[i].st_name += st_buf->l.sz; } } @@ -921,19 +958,19 @@ create_symtab_data(struct elfcopy *ecp) elf_errmsg(-1)); lstdata->d_align = 1; lstdata->d_off = 0; - lstdata->d_buf = st_buf->l; - lstdata->d_size = st_buf->lsz; + lstdata->d_buf = st_buf->l.buf; + lstdata->d_size = st_buf->l.sz; lstdata->d_type = ELF_T_BYTE; lstdata->d_version = EV_CURRENT; - if (st_buf->gsz > 0) { + if (st_buf->g.sz > 0) { if ((gstdata = elf_newdata(st->os)) == NULL) errx(EXIT_FAILURE, "elf_newdata() failed: %s.", elf_errmsg(-1)); gstdata->d_align = 1; gstdata->d_off = lstdata->d_size; - gstdata->d_buf = st_buf->g; - gstdata->d_size = st_buf->gsz; + gstdata->d_buf = st_buf->g.buf; + gstdata->d_size = st_buf->g.sz; gstdata->d_type = ELF_T_BYTE; gstdata->d_version = EV_CURRENT; } @@ -1023,18 +1060,25 @@ lookup_symop_list(struct elfcopy *ecp, c } static int -lookup_exact_string(const char *buf, size_t sz, const char *s) +lookup_exact_string(hash_head *buckets, const char *buf, const char *s) { - const char *b; - size_t slen; - - slen = strlen(s); - for (b = buf; b < buf + sz; b += strlen(b) + 1) { - if (strlen(b) != slen) - continue; - if (!strcmp(b, s)) - return (b - buf); - } + struct sthash *sh; + uint32_t hash; + hash = str_hash(s); + LIST_FOREACH(sh, &buckets[hash], sh_next) + if (strcmp(buf + sh->sh_off, s) == 0) + return sh->sh_off; return (-1); } + +uint32_t +str_hash(const char *s) +{ + uint32_t hash; + + for (hash = 2166136261; *s; s++) + hash = (hash ^ *s) * 16777619; + + return (hash & (STHASHSIZE - 1)); +} Modified: projects/clang350-import/contrib/elftoolchain/libdwarf/Makefile ============================================================================== --- projects/clang350-import/contrib/elftoolchain/libdwarf/Makefile Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/libdwarf/Makefile Tue Dec 30 20:23:03 2014 (r276421) @@ -1,4 +1,4 @@ -# $Id: Makefile 2937 2013-04-27 04:48:23Z jkoshy $ +# $Id: Makefile 3097 2014-09-02 22:10:18Z kaiwang27 $ TOP= ${.CURDIR}/.. @@ -42,6 +42,7 @@ SRCS= \ dwarf_pubtypes.c \ dwarf_ranges.c \ dwarf_reloc.c \ + dwarf_sections.c \ dwarf_seterror.c \ dwarf_str.c \ dwarf_types.c \ @@ -115,6 +116,7 @@ MAN= dwarf.3 dwarf_add_weakname.3 \ dwarf_attr.3 \ dwarf_attrlist.3 \ + dwarf_attroffset.3 \ dwarf_attrval_signed.3 \ dwarf_child.3 \ dwarf_dealloc.3 \ @@ -154,6 +156,7 @@ MAN= dwarf.3 dwarf_get_cie_info.3 \ dwarf_get_cie_of_fde.3 \ dwarf_get_cu_die_offset.3 \ + dwarf_get_die_infotypes_flag.3 \ dwarf_get_elf.3 \ dwarf_get_fde_at_pc.3 \ dwarf_get_fde_info_for_all_regs.3 \ @@ -175,6 +178,7 @@ MAN= dwarf.3 dwarf_get_relocation_info.3 \ dwarf_get_relocation_info_count.3 \ dwarf_get_section_bytes.3 \ + dwarf_get_section_max_offsets.3 \ dwarf_get_str.3 \ dwarf_get_types.3 \ dwarf_get_vars.3 \ @@ -192,6 +196,7 @@ MAN= dwarf.3 dwarf_new_expr.3 \ dwarf_new_fde.3 \ dwarf_next_cu_header.3 \ + dwarf_next_types_section.3 \ dwarf_object_init.3 \ dwarf_producer_init.3 \ dwarf_producer_set_isa.3 \ @@ -220,7 +225,9 @@ MLINKS+= \ dwarf_attrval_signed.3 dwarf_attrval_string.3 \ dwarf_attrval_signed.3 dwarf_attrval_unsigned.3 \ dwarf_child.3 dwarf_offdie.3 \ + dwarf_child.3 dwarf_offdie_b.3 \ dwarf_child.3 dwarf_siblingof.3 \ + dwarf_child.3 dwarf_siblingof_b.3 \ dwarf_dealloc.3 dwarf_fde_cie_list_dealloc.3 \ dwarf_dealloc.3 dwarf_funcs_dealloc.3 \ dwarf_dealloc.3 dwarf_globals_dealloc.3 \ @@ -234,6 +241,7 @@ MLINKS+= \ dwarf_dieoffset.3 dwarf_die_CU_offset.3 \ dwarf_dieoffset.3 dwarf_die_CU_offset_range.3 \ dwarf_dieoffset.3 dwarf_get_cu_die_offset_given_cu_header_offset.3 \ + dwarf_dieoffset.3 dwarf_get_cu_die_offset_given_cu_header_offset_b.3 \ dwarf_finish.3 dwarf_object_finish.3 \ dwarf_formref.3 dwarf_global_formref.3 \ dwarf_formudata.3 dwarf_formsdata.3 \ @@ -273,6 +281,7 @@ MLINKS+= \ dwarf_get_pubtypes.3 dwarf_pubtype_name_offsets.3 \ dwarf_get_pubtypes.3 dwarf_pubtypename.3 \ dwarf_get_ranges.3 dwarf_get_ranges_a.3 \ + dwarf_get_section_max_offsets.3 dwarf_get_section_max_offsets_b.3 \ dwarf_get_types.3 dwarf_type_die_offset.3 \ dwarf_get_types.3 dwarf_type_cu_offset.3 \ dwarf_get_types.3 dwarf_type_name_offsets.3 \ @@ -291,6 +300,7 @@ MLINKS+= \ dwarf_highpc.3 dwarf_bitoffset.3 \ dwarf_highpc.3 dwarf_bitsize.3 \ dwarf_highpc.3 dwarf_bytesize.3 \ + dwarf_highpc.3 dwarf_highpc_b.3 \ dwarf_highpc.3 dwarf_lowpc.3 \ dwarf_highpc.3 dwarf_srclang.3 \ dwarf_lineno.3 dwarf_lineaddr.3 \ @@ -302,6 +312,9 @@ MLINKS+= \ dwarf_lineno.3 dwarf_line_srcfileno.3 \ dwarf_loclist.3 dwarf_loclist_n.3 \ dwarf_loclist_from_expr.3 dwarf_loclist_from_expr_a.3 \ + dwarf_loclist_from_expr.3 dwarf_loclist_from_expr_b.3 \ + dwarf_next_cu_header.3 dwarf_next_cu_header_b.3 \ + dwarf_next_cu_header.3 dwarf_next_cu_header_c.3 \ dwarf_producer_init.3 dwarf_producer_init_b.3 \ dwarf_seterrarg.3 dwarf_seterrhand.3 \ dwarf_set_frame_cfa_value.3 dwarf_set_frame_rule_initial_value.3 \ Modified: projects/clang350-import/contrib/elftoolchain/libdwarf/Version.map ============================================================================== --- projects/clang350-import/contrib/elftoolchain/libdwarf/Version.map Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/libdwarf/Version.map Tue Dec 30 20:23:03 2014 (r276421) @@ -1,4 +1,4 @@ -/* $Id: Version.map 2576 2012-09-13 09:16:11Z jkoshy $ */ +/* $Id: Version.map 3085 2014-09-02 22:08:23Z kaiwang27 $ */ R1.0 { global: @@ -39,6 +39,7 @@ global: dwarf_arrayorder; dwarf_attr; dwarf_attrlist; + dwarf_attroffset; dwarf_attrval_flag; dwarf_attrval_signed; dwarf_attrval_string; @@ -116,6 +117,8 @@ global: dwarf_get_cie_of_fde; dwarf_get_cu_die_offset; dwarf_get_cu_die_offset_given_cu_header_offset; + dwarf_get_cu_die_offset_given_cu_header_offset_b; + dwarf_get_die_infotypes_flag; dwarf_get_elf; dwarf_get_fde_at_pc; dwarf_get_fde_info_for_all_regs3; @@ -139,6 +142,8 @@ global: dwarf_get_relocation_info; dwarf_get_relocation_info_count; dwarf_get_section_bytes; + dwarf_get_section_max_offsets; + dwarf_get_section_max_offsets_b; dwarf_get_str; dwarf_get_types; dwarf_get_vars; @@ -152,6 +157,7 @@ global: dwarf_hasattr; dwarf_hasform; dwarf_highpc; + dwarf_highpc_b; dwarf_init; dwarf_line_srcfileno; dwarf_lineaddr; @@ -166,6 +172,7 @@ global: dwarf_loclist; dwarf_loclist_from_expr; dwarf_loclist_from_expr_a; + dwarf_loclist_from_expr_b; dwarf_loclist_n; dwarf_lowpc; dwarf_new_die; @@ -173,9 +180,12 @@ global: dwarf_new_fde; dwarf_next_cu_header; dwarf_next_cu_header_b; + dwarf_next_cu_header_c; + dwarf_next_types_section; dwarf_object_finish; dwarf_object_init; dwarf_offdie; + dwarf_offdie_b; dwarf_producer_finish; dwarf_producer_init; dwarf_producer_init_b; @@ -196,6 +206,7 @@ global: dwarf_seterrarg; dwarf_seterrhand; dwarf_siblingof; + dwarf_siblingof_b; dwarf_srcfiles; dwarf_srclang; dwarf_srclines; Modified: projects/clang350-import/contrib/elftoolchain/libdwarf/_libdwarf.h ============================================================================== --- projects/clang350-import/contrib/elftoolchain/libdwarf/_libdwarf.h Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/libdwarf/_libdwarf.h Tue Dec 30 20:23:03 2014 (r276421) @@ -1,6 +1,6 @@ /*- * Copyright (c) 2007 John Birrell (jb@freebsd.org) - * Copyright (c) 2009-2011 Kai Wang + * Copyright (c) 2009-2014 Kai Wang * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: _libdwarf.h 2075 2011-10-27 03:47:28Z jkoshy $ + * $Id: _libdwarf.h 3106 2014-12-19 16:00:58Z kaiwang27 $ */ #ifndef __LIBDWARF_H_ @@ -89,6 +89,7 @@ extern struct _libdwarf_globals _libdwar goto gen_fail; \ } while(0) +typedef struct _Dwarf_CU *Dwarf_CU; struct _Dwarf_AttrDef { uint64_t ad_attrib; /* DW_AT_XXX */ @@ -147,14 +148,6 @@ struct _Dwarf_Die { STAILQ_ENTRY(_Dwarf_Die) die_pro_next; /* Next die in pro-die list. */ }; -struct _Dwarf_Loclist { - Dwarf_Locdesc **ll_ldlist; /* Array of Locdesc pointer. */ - int ll_ldlen; /* Number of Locdesc. */ - Dwarf_Unsigned ll_offset; /* Offset in .debug_loc section. */ - Dwarf_Unsigned ll_length; /* Length (in bytes) of the loclist. */ - TAILQ_ENTRY(_Dwarf_Loclist) ll_next; /* Next loclist in list. */ -}; - struct _Dwarf_P_Expr_Entry { Dwarf_Loc ee_loc; /* Location expression. */ Dwarf_Unsigned ee_sym; /* Optional related reloc sym index. */ @@ -265,6 +258,8 @@ struct _Dwarf_Cie { Dwarf_Half cie_version; /* CIE version. */ uint8_t *cie_augment; /* CIE augmentation (UTF-8). */ Dwarf_Unsigned cie_ehdata; /* Optional EH Data. */ + uint8_t cie_addrsize; /* Address size. (DWARF4) */ + uint8_t cie_segmentsize; /* Segment size. (DWARF4) */ Dwarf_Unsigned cie_caf; /* Code alignment factor. */ Dwarf_Signed cie_daf; /* Data alignment factor. */ Dwarf_Unsigned cie_ra; /* Return address register. */ @@ -333,11 +328,14 @@ struct _Dwarf_CU { uint64_t cu_lineno_offset; /* Offset into .debug_lineno. */ uint8_t cu_pointer_size;/* Number of bytes in pointer. */ uint8_t cu_dwarf_size; /* CU section dwarf size. */ + Dwarf_Sig8 cu_type_sig; /* Type unit's signature. */ + uint64_t cu_type_offset; /* Type unit's type offset. */ Dwarf_Off cu_next_offset; /* Offset to the next CU. */ uint64_t cu_1st_offset; /* First DIE offset. */ int cu_pass2; /* Two pass DIE traverse. */ Dwarf_LineInfo cu_lineinfo; /* Ptr to Dwarf_LineInfo. */ Dwarf_Abbrev cu_abbrev_hash; /* Abbrev hash table. */ + Dwarf_Bool cu_is_info; /* Compilation/type unit flag. */ STAILQ_ENTRY(_Dwarf_CU) cu_next; /* Next compilation unit. */ }; @@ -399,17 +397,21 @@ struct _Dwarf_Debug { Dwarf_Section *dbg_section; /* Dwarf section list. */ Dwarf_Section *dbg_info_sec; /* Pointer to info section. */ Dwarf_Off dbg_info_off; /* Current info section offset. */ + Dwarf_Section *dbg_types_sec; /* Pointer to type section. */ + Dwarf_Off dbg_types_off; /* Current types section offset. */ Dwarf_Unsigned dbg_seccnt; /* Total number of dwarf sections. */ int dbg_mode; /* Access mode. */ int dbg_pointer_size; /* Object address size. */ int dbg_offset_size; /* DWARF offset size. */ int dbg_info_loaded; /* Flag indicating all CU loaded. */ + int dbg_types_loaded; /* Flag indicating all TU loaded. */ Dwarf_Half dbg_machine; /* ELF machine architecture. */ Dwarf_Handler dbg_errhand; /* Error handler. */ Dwarf_Ptr dbg_errarg; /* Argument to the error handler. */ STAILQ_HEAD(, _Dwarf_CU) dbg_cu;/* List of compilation units. */ + STAILQ_HEAD(, _Dwarf_CU) dbg_tu;/* List of type units. */ Dwarf_CU dbg_cu_current; /* Ptr to the current CU. */ - TAILQ_HEAD(, _Dwarf_Loclist) dbg_loclist; /* List of location list. */ + Dwarf_CU dbg_tu_current; /* Ptr to the current TU. */ Dwarf_NameSec dbg_globals; /* Ptr to pubnames lookup section. */ Dwarf_NameSec dbg_pubtypes; /* Ptr to pubtypes lookup section. */ Dwarf_NameSec dbg_weaks; /* Ptr to weaknames lookup section. */ @@ -532,13 +534,15 @@ int _dwarf_elf_get_section_info(void *, Dwarf_Obj_Access_Section *, int *); void _dwarf_expr_cleanup(Dwarf_P_Debug); int _dwarf_expr_into_block(Dwarf_P_Expr, Dwarf_Error *); +Dwarf_Section *_dwarf_find_next_types_section(Dwarf_Debug, Dwarf_Section *); Dwarf_Section *_dwarf_find_section(Dwarf_Debug, const char *); void _dwarf_frame_cleanup(Dwarf_Debug); int _dwarf_frame_fde_add_inst(Dwarf_P_Fde, Dwarf_Small, Dwarf_Unsigned, Dwarf_Unsigned, Dwarf_Error *); int _dwarf_frame_gen(Dwarf_P_Debug, Dwarf_Error *); -int _dwarf_frame_get_fop(Dwarf_Debug, uint8_t *, Dwarf_Unsigned, - Dwarf_Frame_Op **, Dwarf_Signed *, Dwarf_Error *); +int _dwarf_frame_get_fop(Dwarf_Debug, uint8_t, uint8_t *, + Dwarf_Unsigned, Dwarf_Frame_Op **, Dwarf_Signed *, + Dwarf_Error *); int _dwarf_frame_get_internal_table(Dwarf_Fde, Dwarf_Addr, Dwarf_Regtable3 **, Dwarf_Addr *, Dwarf_Error *); int _dwarf_frame_interal_table_init(Dwarf_Debug, Dwarf_Error *); @@ -553,9 +557,12 @@ Dwarf_Unsigned _dwarf_get_reloc_type(Dwa int _dwarf_get_reloc_size(Dwarf_Debug, Dwarf_Unsigned); void _dwarf_info_cleanup(Dwarf_Debug); int _dwarf_info_first_cu(Dwarf_Debug, Dwarf_Error *); +int _dwarf_info_first_tu(Dwarf_Debug, Dwarf_Error *); int _dwarf_info_gen(Dwarf_P_Debug, Dwarf_Error *); -int _dwarf_info_load(Dwarf_Debug, int, Dwarf_Error *); +int _dwarf_info_load(Dwarf_Debug, Dwarf_Bool, Dwarf_Bool, + Dwarf_Error *); int _dwarf_info_next_cu(Dwarf_Debug, Dwarf_Error *); +int _dwarf_info_next_tu(Dwarf_Debug, Dwarf_Error *); void _dwarf_info_pro_cleanup(Dwarf_P_Debug); int _dwarf_init(Dwarf_Debug, Dwarf_Unsigned, Dwarf_Handler, Dwarf_Ptr, Dwarf_Error *); @@ -563,20 +570,19 @@ int _dwarf_lineno_gen(Dwarf_P_Debug, Dw int _dwarf_lineno_init(Dwarf_Die, uint64_t, Dwarf_Error *); void _dwarf_lineno_cleanup(Dwarf_LineInfo); void _dwarf_lineno_pro_cleanup(Dwarf_P_Debug); -int _dwarf_loc_fill_locdesc(Dwarf_Debug, Dwarf_Locdesc *, uint8_t *, - uint64_t, uint8_t, Dwarf_Error *); +int _dwarf_loc_fill_locdesc(Dwarf_Debug, Dwarf_Locdesc *, + uint8_t *, uint64_t, uint8_t, uint8_t, uint8_t, + Dwarf_Error *); int _dwarf_loc_fill_locexpr(Dwarf_Debug, Dwarf_Locdesc **, - uint8_t *, uint64_t, uint8_t, Dwarf_Error *); + uint8_t *, uint64_t, uint8_t, uint8_t, uint8_t, + Dwarf_Error *); int _dwarf_loc_add(Dwarf_Die, Dwarf_Attribute, Dwarf_Error *); int _dwarf_loc_expr_add_atom(Dwarf_Debug, uint8_t *, uint8_t *, Dwarf_Small, Dwarf_Unsigned, Dwarf_Unsigned, int *, Dwarf_Error *); int _dwarf_loclist_find(Dwarf_Debug, Dwarf_CU, uint64_t, - Dwarf_Loclist *, Dwarf_Error *); -void _dwarf_loclist_cleanup(Dwarf_Debug); -void _dwarf_loclist_free(Dwarf_Loclist); -int _dwarf_loclist_add(Dwarf_Debug, Dwarf_CU, uint64_t, - Dwarf_Loclist *, Dwarf_Error *); + Dwarf_Locdesc ***, Dwarf_Signed *, Dwarf_Unsigned *, + Dwarf_Error *); void _dwarf_macinfo_cleanup(Dwarf_Debug); int _dwarf_macinfo_gen(Dwarf_P_Debug, Dwarf_Error *); int _dwarf_macinfo_init(Dwarf_Debug, Dwarf_Error *); @@ -633,6 +639,7 @@ void _dwarf_strtab_cleanup(Dwarf_Debug) int _dwarf_strtab_gen(Dwarf_P_Debug, Dwarf_Error *); char *_dwarf_strtab_get_table(Dwarf_Debug); int _dwarf_strtab_init(Dwarf_Debug, Dwarf_Error *); +void _dwarf_type_unit_cleanup(Dwarf_Debug); void _dwarf_write_block(void *, uint64_t *, uint8_t *, uint64_t); int _dwarf_write_block_alloc(uint8_t **, uint64_t *, uint64_t *, uint8_t *, uint64_t, Dwarf_Error *); Modified: projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf.3 ============================================================================== --- projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf.3 Tue Dec 30 20:22:43 2014 (r276420) +++ projects/clang350-import/contrib/elftoolchain/libdwarf/dwarf.3 Tue Dec 30 20:23:03 2014 (r276421) @@ -21,9 +21,9 @@ .\" out of the use of this software, even if advised of the possibility of .\" such damage. .\" -.\" $Id: dwarf.3 2075 2011-10-27 03:47:28Z jkoshy $ +.\" $Id: dwarf.3 3130 2014-12-21 20:06:29Z jkoshy $ .\" -.Dd September 17, 2011 +.Dd December 21, 2014 .Os .Dt DWARF 3 .Sh NAME @@ -217,6 +217,8 @@ attribute. Retrieve an attribute descriptor. .It Fn dwarf_attrlist Retrieve attribute descriptors for a debugging information entry. +.It Fn dwarf_attroffset +Retrieve the section-relative offset of an attribute descriptor. .It Fn dwarf_attrval_flag Retrieve a .Dv DW_AT_FORM_flag @@ -309,10 +311,17 @@ Retrieve range information from an FDE d .El .It Compilation Units .Bl -tag -compact -.It Fn dwarf_get_cu_die_offset_given_cu_header_offset +.It Xo +.Fn dwarf_get_cu_die_offset_given_cu_header_offset , +.Fn dwarf_get_cu_die_offset_given_cu_header_offset_b +.Xc Retrieve the offset of the debugging information entry for a -compilation unit. -.It Fn dwarf_next_cu_header , Fn dwarf_next_cu_header_b +compilation or type unit. +.It Xo +.Fn dwarf_next_cu_header , *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412302023.sBUKN4p6038875>