Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 2 Jan 2017 19:19:15 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r311125 - in vendor/lld/dist: . COFF ELF cmake/modules docs include/lld/Config include/lld/Core include/lld/Driver include/lld/ReaderWriter include/lld/Support lib/Config lib/Core lib/D...
Message-ID:  <201701021919.v02JJF97050651@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Mon Jan  2 19:19:15 2017
New Revision: 311125
URL: https://svnweb.freebsd.org/changeset/base/311125

Log:
  Vendor import of lld trunk r290819:
  https://llvm.org/svn/llvm-project/lld/trunk@290819

Added:
  vendor/lld/dist/COFF/Memory.h   (contents, props changed)
  vendor/lld/dist/COFF/PDB.h   (contents, props changed)
  vendor/lld/dist/COFF/Strings.cpp   (contents, props changed)
  vendor/lld/dist/COFF/Strings.h   (contents, props changed)
  vendor/lld/dist/ELF/GdbIndex.cpp   (contents, props changed)
  vendor/lld/dist/ELF/GdbIndex.h   (contents, props changed)
  vendor/lld/dist/ELF/Memory.h   (contents, props changed)
  vendor/lld/dist/ELF/Mips.cpp   (contents, props changed)
  vendor/lld/dist/ELF/SyntheticSections.cpp   (contents, props changed)
  vendor/lld/dist/ELF/SyntheticSections.h   (contents, props changed)
  vendor/lld/dist/ELF/Threads.h   (contents, props changed)
  vendor/lld/dist/cmake/modules/AddLLD.cmake
  vendor/lld/dist/include/lld/Core/Reproduce.h   (contents, props changed)
  vendor/lld/dist/include/lld/Support/
  vendor/lld/dist/include/lld/Support/Memory.h   (contents, props changed)
  vendor/lld/dist/lib/Core/Reproduce.cpp   (contents, props changed)
  vendor/lld/dist/lib/ReaderWriter/MachO/DebugInfo.h   (contents, props changed)
  vendor/lld/dist/lib/Support/
  vendor/lld/dist/test/COFF/Inputs/cl-gl.obj   (contents, props changed)
  vendor/lld/dist/test/COFF/Inputs/far-arm-thumb-abs.s   (contents, props changed)
  vendor/lld/dist/test/COFF/Inputs/lto-lazy-reference-dummy.ll
  vendor/lld/dist/test/COFF/Inputs/lto-lazy-reference-quadruple.ll
  vendor/lld/dist/test/COFF/arm-thumb-branch-error.s   (contents, props changed)
  vendor/lld/dist/test/COFF/cl-gl.test
  vendor/lld/dist/test/COFF/conflict-mangled.test
  vendor/lld/dist/test/COFF/dumppdb.test
  vendor/lld/dist/test/COFF/icf-associative.test
  vendor/lld/dist/test/COFF/linkrepro.test
  vendor/lld/dist/test/COFF/lto-lazy-reference.ll
  vendor/lld/dist/test/COFF/pdb.test
  vendor/lld/dist/test/COFF/rsds.test
  vendor/lld/dist/test/ELF/Inputs/arm-attributes1.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/arm-exidx-cantunwind.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/arm-shared.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/arm-tls-get-addr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/bad-archive.a   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/comment-gc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/conflict-debug.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/gdb-index-a.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/gdb-index-b.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/i386-tls-got.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/icf-non-mergeable.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/mips-concatenated-abiflags.o   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/mips-fnpic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/mips-fpic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/mips-gp0-non-zero.o   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/mips-n32-rels.o   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/relocatable-tls.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/relocation-relative-absolute.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/shared2-x86-64.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/shf-info-link.test
  vendor/lld/dist/test/ELF/Inputs/startstop-shared2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/uabs_label.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/undef-debug.s   (contents, props changed)
  vendor/lld/dist/test/ELF/Inputs/use-bar.s   (contents, props changed)
  vendor/lld/dist/test/ELF/aarch64-gnu-ifunc-plt.s   (contents, props changed)
  vendor/lld/dist/test/ELF/aarch64-got-reloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/aarch64-undefined-weak.s   (contents, props changed)
  vendor/lld/dist/test/ELF/abs-conflict.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-attributes.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-eabi-version.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-canunwind.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-gc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-link.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-order.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-output.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-relocatable.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-sentinel-norelocatable.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-sentinel-orphan.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-exidx-shared.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-gnu-ifunc-plt.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-pie-relative.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-static-defines.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-target1.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-target2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-thumb-interwork-thunk-range.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-thumb-no-undefined-thunk.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-thumb-undefined-weak.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-gd32.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-ie32.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-ldm32.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-le32.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-norelax-gd-ie.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-norelax-gd-le.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-norelax-ie-le.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-tls-norelax-ld-le.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-undefined-weak.s   (contents, props changed)
  vendor/lld/dist/test/ELF/arm-use-r-output.s   (contents, props changed)
  vendor/lld/dist/test/ELF/auxiliary.s   (contents, props changed)
  vendor/lld/dist/test/ELF/bad-archive.s   (contents, props changed)
  vendor/lld/dist/test/ELF/color-diagnostics.test
  vendor/lld/dist/test/ELF/comment-gc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/debug-gc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/defined-tls_get_addr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/dynamic-got-rela.s   (contents, props changed)
  vendor/lld/dist/test/ELF/dynamic-got.s   (contents, props changed)
  vendor/lld/dist/test/ELF/dynamic-list-extern.s   (contents, props changed)
  vendor/lld/dist/test/ELF/eh-frame-gc2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/ehdr_start.s   (contents, props changed)
  vendor/lld/dist/test/ELF/empty-pt-load.s   (contents, props changed)
  vendor/lld/dist/test/ELF/error-limit.test
  vendor/lld/dist/test/ELF/exclude.s   (contents, props changed)
  vendor/lld/dist/test/ELF/format-binary.test
  vendor/lld/dist/test/ELF/gc-debuginfo-tls.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gc-sections-alloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gc-sections-implicit-addend.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gc-sections-keep-shared-start.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gc-sections-non-alloc-to-merge.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gc-sections-synthetic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gdb-index.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gnu-ifunc-plt-i386.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gnu-ifunc-plt.s   (contents, props changed)
  vendor/lld/dist/test/ELF/gnu-ifunc-shared.s   (contents, props changed)
  vendor/lld/dist/test/ELF/i386-gotoff-shared.s   (contents, props changed)
  vendor/lld/dist/test/ELF/i386-pc16.test
  vendor/lld/dist/test/ELF/i386-tls-got.s   (contents, props changed)
  vendor/lld/dist/test/ELF/icf-non-mergeable.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/
  vendor/lld/dist/test/ELF/invalid/Inputs/
  vendor/lld/dist/test/ELF/invalid/Inputs/binding.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/broken-relaxation-x64.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/cie-version2.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/common-symbol-alignment.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/common-symbol-alignment2.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/data-encoding.a   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/dynamic-section-sh_size.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/file-class.a   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/invalid-e_shnum.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/invalid-relocation-x64.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/mips-invalid-options-descriptor.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/multiple-eh-relocs.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/section-alignment-notpow2.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/section-index.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/section-index2.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/shentsize-zero.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/sht-group.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/symbol-index.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/symbol-name-offset.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/symtab-sh_info.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/symtab-sh_info2.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/symtab-sh_info3.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/tls-symbol.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/Inputs/too-short.elf   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/broken-relaxation-x64.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/common-symbol-alignment.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/dynamic-section-size.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/eh-frame-hdr-no-out.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/invalid-e_shnum.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/invalid-elf.test
  vendor/lld/dist/test/ELF/invalid/invalid-relocation-x64.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/merge-invalid-size.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/mips-invalid-options-descriptor.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/section-alignment.test
  vendor/lld/dist/test/ELF/invalid/section-alignment2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/sht-group.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/symbol-index.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/symbol-name.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/symtab-sh-info.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/symtab-symbols.test
  vendor/lld/dist/test/ELF/invalid/tls-symbol.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/too-short.s   (contents, props changed)
  vendor/lld/dist/test/ELF/invalid/verdef-no-symtab.test
  vendor/lld/dist/test/ELF/linkerscript/
  vendor/lld/dist/test/ELF/linkerscript/Inputs/
  vendor/lld/dist/test/ELF/linkerscript/Inputs/comdat-gc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/exclude-multiple1.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/exclude-multiple2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/filename-spec.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/implicit-program-header.script
  vendor/lld/dist/test/ELF/linkerscript/Inputs/include.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/keep.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/libsearch-dyn.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/libsearch-st.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/merge-sections-reloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/notinclude.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/segment-start.script
  vendor/lld/dist/test/ELF/linkerscript/Inputs/shared.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/sort-nested.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/Inputs/sort.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/absolute-expr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/absolute.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/addr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/align-empty.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/align.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/alignof.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/alternate-sections.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/arm-exidx-phdrs.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/assert.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/at.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/comdat-gc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/common.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/data-commands.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/data-segment-relro.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/define.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/diagnostic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/discard-interp.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/discard-section.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/dot-is-not-abs.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/double-bss.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/dynamic-sym.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/dynamic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/edata-etext.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/eh-frame-hdr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/ehdr_start.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/empty-load.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/empty-tls.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/entry.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/exclude-multiple.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/excludefile.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/extend-pt-load.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/filename-spec.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/fill.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/group.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/header-addr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/implicit-program-header.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/input-order.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/input-sec-dup.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/linkerscript.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/loadaddr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/locationcounter.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/locationcountererr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/merge-sections-reloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/merge-sections.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/multi-sections-constraint.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/multiple-tbss.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/no-pt-load.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/no-space.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/non-alloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/numbers.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/openbsd-bootdata.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/openbsd-randomize.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/openbsd-wxneeded.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/orphan-align.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/orphan-first-cmd.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/orphan.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/orphans.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/ouputformat.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/outputarch.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/outsections-addr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/page-size-align.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/page-size.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/phdr-check.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/phdrs-flags.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/phdrs.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/repsection-symbol.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/repsection-va.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/rosegment.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/searchdir.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-constraint.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-constraint2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-constraint3.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-constraint4.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-constraint5.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-keep.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-padding.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections-sort.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sections.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/segment-start.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sizeof.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sizeofheaders.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sort-constructors.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sort-init.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sort-nested.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sort-non-script.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sort.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/sort2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/start-end.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/subalign.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/symbol-assignexpr.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/symbol-conflict.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/symbol-only.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/symbolreferenced.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/symbols-synthetic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/symbols.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/tbss.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/undef.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/va.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/visibility.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/wildcards.s   (contents, props changed)
  vendor/lld/dist/test/ELF/linkerscript/wildcards2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/lto/Inputs/common3.ll
  vendor/lld/dist/test/ELF/lto/Inputs/thin1.ll
  vendor/lld/dist/test/ELF/lto/Inputs/thin2.ll
  vendor/lld/dist/test/ELF/lto/Inputs/thinlto.ll
  vendor/lld/dist/test/ELF/lto/Inputs/unnamed-addr-drop.ll
  vendor/lld/dist/test/ELF/lto/bitcode-nodatalayout.ll
  vendor/lld/dist/test/ELF/lto/common3.ll
  vendor/lld/dist/test/ELF/lto/thin-archivecollision.ll
  vendor/lld/dist/test/ELF/lto/thinlto.ll
  vendor/lld/dist/test/ELF/lto/timepasses.ll
  vendor/lld/dist/test/ELF/lto/unnamed-addr-drop.ll
  vendor/lld/dist/test/ELF/merge-reloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/merge-string-empty.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-26-mask.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-call-hilo.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-elf-flags-err.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-got-hilo.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-got-page.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-gp-ext.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-gp-lowest.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-gprel32-relocs-gp0.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-higher-highest.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-merge-abiflags.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-n32-emul.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-n32-rels.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-no-objects.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-plt-r6.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-relocatable.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-sto-pic-flag.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-tls-static-64.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-tls-static.s   (contents, props changed)
  vendor/lld/dist/test/ELF/mips-xgot-order.s   (contents, props changed)
  vendor/lld/dist/test/ELF/no-merge.s   (contents, props changed)
  vendor/lld/dist/test/ELF/non-abs-reloc.s   (contents, props changed)
  vendor/lld/dist/test/ELF/oformat-binary-ttext.s   (contents, props changed)
  vendor/lld/dist/test/ELF/oformat-binary.s   (contents, props changed)
  vendor/lld/dist/test/ELF/openbsd-randomize.s   (contents, props changed)
  vendor/lld/dist/test/ELF/openbsd-wxneeded.s   (contents, props changed)
  vendor/lld/dist/test/ELF/relocatable-comment.s   (contents, props changed)
  vendor/lld/dist/test/ELF/relocatable-local-sym.s   (contents, props changed)
  vendor/lld/dist/test/ELF/relocatable-sections.s   (contents, props changed)
  vendor/lld/dist/test/ELF/relocatable-tls.s   (contents, props changed)
  vendor/lld/dist/test/ELF/relocatable-visibility.s   (contents, props changed)
  vendor/lld/dist/test/ELF/relocation-dtrace.test
  vendor/lld/dist/test/ELF/relro-omagic.s   (contents, props changed)
  vendor/lld/dist/test/ELF/reproduce-backslash.s   (contents, props changed)
  vendor/lld/dist/test/ELF/reproduce-windows2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/retain-symbols-file.s   (contents, props changed)
  vendor/lld/dist/test/ELF/section-symbols.test
  vendor/lld/dist/test/ELF/sectionstart.s   (contents, props changed)
  vendor/lld/dist/test/ELF/segments.s   (contents, props changed)
  vendor/lld/dist/test/ELF/shf-info-link.test
  vendor/lld/dist/test/ELF/sort-norosegment.s   (contents, props changed)
  vendor/lld/dist/test/ELF/startstop-shared2.s   (contents, props changed)
  vendor/lld/dist/test/ELF/symbol-ordering-file.s   (contents, props changed)
  vendor/lld/dist/test/ELF/synthetic-got.s   (contents, props changed)
  vendor/lld/dist/test/ELF/tls-relocatable.s   (contents, props changed)
  vendor/lld/dist/test/ELF/tls-weak-undef.s   (contents, props changed)
  vendor/lld/dist/test/ELF/ttext-tdata-tbss.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-complex-wildcards.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-extern-exact.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-extern-wildcards-anon.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-extern-wildcards.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-glob.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-locals-extern.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-locals.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-missing.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-script-no-warn.s   (contents, props changed)
  vendor/lld/dist/test/ELF/version-symbol-error.s   (contents, props changed)
  vendor/lld/dist/test/ELF/x86-64-relax-got-abs.s   (contents, props changed)
  vendor/lld/dist/test/ELF/zstack-size.s   (contents, props changed)
  vendor/lld/dist/test/mach-o/Inputs/arm64/
  vendor/lld/dist/test/mach-o/Inputs/arm64/libSystem.yaml
  vendor/lld/dist/test/mach-o/Inputs/armv7/
  vendor/lld/dist/test/mach-o/Inputs/armv7/libSystem.yaml
  vendor/lld/dist/test/mach-o/Inputs/x86/
  vendor/lld/dist/test/mach-o/Inputs/x86/libSystem.yaml
  vendor/lld/dist/test/mach-o/Inputs/x86_64/
  vendor/lld/dist/test/mach-o/Inputs/x86_64/libSystem.yaml
  vendor/lld/dist/test/mach-o/bind-opcodes.yaml
  vendor/lld/dist/test/mach-o/debug-syms.yaml
  vendor/lld/dist/test/mach-o/export-trie-order.yaml
  vendor/lld/dist/test/mach-o/lc_segment_filesize.yaml
  vendor/lld/dist/test/mach-o/string-table.yaml
  vendor/lld/dist/test/mach-o/use-dylib.yaml
Deleted:
  vendor/lld/dist/ELF/SymbolListFile.cpp
  vendor/lld/dist/ELF/SymbolListFile.h
  vendor/lld/dist/test/ELF/Inputs/invalid-binding.elf
  vendor/lld/dist/test/ELF/Inputs/invalid-cie-version2.elf
  vendor/lld/dist/test/ELF/Inputs/invalid-data-encoding.a
  vendor/lld/dist/test/ELF/Inputs/invalid-file-class.a
  vendor/lld/dist/test/ELF/Inputs/invalid-multiple-eh-relocs.elf
  vendor/lld/dist/test/ELF/Inputs/invalid-section-index.elf
  vendor/lld/dist/test/ELF/Inputs/invalid-shentsize-zero.elf
  vendor/lld/dist/test/ELF/Inputs/invalid-shstrndx.so
  vendor/lld/dist/test/ELF/Inputs/invalid-symtab-sh_info.elf
  vendor/lld/dist/test/ELF/amdgpu-entry.s
  vendor/lld/dist/test/ELF/arm-attributes-remove.s
  vendor/lld/dist/test/ELF/duplicate-internal.s
  vendor/lld/dist/test/ELF/eh-frame-hdr-no-out.s
  vendor/lld/dist/test/ELF/invalid-elf.test
  vendor/lld/dist/test/ELF/linkerscript-align.s
  vendor/lld/dist/test/ELF/linkerscript-diagnostic.s
  vendor/lld/dist/test/ELF/linkerscript-locationcounter.s
  vendor/lld/dist/test/ELF/linkerscript-orphans.s
  vendor/lld/dist/test/ELF/linkerscript-ouputformat.s
  vendor/lld/dist/test/ELF/linkerscript-outputarch.s
  vendor/lld/dist/test/ELF/linkerscript-phdr-check.s
  vendor/lld/dist/test/ELF/linkerscript-repsection-va.s
  vendor/lld/dist/test/ELF/linkerscript-sections-keep.s
  vendor/lld/dist/test/ELF/linkerscript-sections-padding.s
  vendor/lld/dist/test/ELF/linkerscript-sections.s
  vendor/lld/dist/test/ELF/linkerscript-symbol-conflict.s
  vendor/lld/dist/test/ELF/linkerscript-symbols.s
  vendor/lld/dist/test/ELF/linkerscript-va.s
  vendor/lld/dist/test/ELF/linkerscript.s
  vendor/lld/dist/test/ELF/linkerscript2.s
  vendor/lld/dist/test/ELF/lto/invalid-bitcode.ll
  vendor/lld/dist/test/ELF/merge-invalid-size.s
  vendor/lld/dist/test/ELF/mips-gprel32-relocs-gp0.test
  vendor/lld/dist/test/ELF/wildcards.s
  vendor/lld/dist/test/mach-o/Inputs/libSystem.yaml
Modified:
  vendor/lld/dist/CMakeLists.txt
  vendor/lld/dist/COFF/CMakeLists.txt
  vendor/lld/dist/COFF/Chunks.cpp
  vendor/lld/dist/COFF/Chunks.h
  vendor/lld/dist/COFF/Config.h
  vendor/lld/dist/COFF/DLL.cpp
  vendor/lld/dist/COFF/Driver.cpp
  vendor/lld/dist/COFF/Driver.h
  vendor/lld/dist/COFF/DriverUtils.cpp
  vendor/lld/dist/COFF/Error.cpp
  vendor/lld/dist/COFF/Error.h
  vendor/lld/dist/COFF/ICF.cpp
  vendor/lld/dist/COFF/InputFiles.cpp
  vendor/lld/dist/COFF/InputFiles.h
  vendor/lld/dist/COFF/Librarian.cpp
  vendor/lld/dist/COFF/MarkLive.cpp
  vendor/lld/dist/COFF/ModuleDef.cpp
  vendor/lld/dist/COFF/Options.td
  vendor/lld/dist/COFF/PDB.cpp
  vendor/lld/dist/COFF/SymbolTable.cpp
  vendor/lld/dist/COFF/SymbolTable.h
  vendor/lld/dist/COFF/Symbols.cpp
  vendor/lld/dist/COFF/Symbols.h
  vendor/lld/dist/COFF/Writer.cpp
  vendor/lld/dist/COFF/Writer.h
  vendor/lld/dist/ELF/CMakeLists.txt
  vendor/lld/dist/ELF/Config.h
  vendor/lld/dist/ELF/Driver.cpp
  vendor/lld/dist/ELF/Driver.h
  vendor/lld/dist/ELF/DriverUtils.cpp
  vendor/lld/dist/ELF/EhFrame.cpp
  vendor/lld/dist/ELF/EhFrame.h
  vendor/lld/dist/ELF/Error.cpp
  vendor/lld/dist/ELF/Error.h
  vendor/lld/dist/ELF/ICF.cpp
  vendor/lld/dist/ELF/InputFiles.cpp
  vendor/lld/dist/ELF/InputFiles.h
  vendor/lld/dist/ELF/InputSection.cpp
  vendor/lld/dist/ELF/InputSection.h
  vendor/lld/dist/ELF/LTO.cpp
  vendor/lld/dist/ELF/LTO.h
  vendor/lld/dist/ELF/LinkerScript.cpp
  vendor/lld/dist/ELF/LinkerScript.h
  vendor/lld/dist/ELF/MarkLive.cpp
  vendor/lld/dist/ELF/Options.td
  vendor/lld/dist/ELF/OutputSections.cpp
  vendor/lld/dist/ELF/OutputSections.h
  vendor/lld/dist/ELF/Relocations.cpp
  vendor/lld/dist/ELF/Relocations.h
  vendor/lld/dist/ELF/ScriptParser.cpp
  vendor/lld/dist/ELF/ScriptParser.h
  vendor/lld/dist/ELF/Strings.cpp
  vendor/lld/dist/ELF/Strings.h
  vendor/lld/dist/ELF/SymbolTable.cpp
  vendor/lld/dist/ELF/SymbolTable.h
  vendor/lld/dist/ELF/Symbols.cpp
  vendor/lld/dist/ELF/Symbols.h
  vendor/lld/dist/ELF/Target.cpp
  vendor/lld/dist/ELF/Target.h
  vendor/lld/dist/ELF/Thunks.cpp
  vendor/lld/dist/ELF/Writer.cpp
  vendor/lld/dist/ELF/Writer.h
  vendor/lld/dist/docs/Driver.rst
  vendor/lld/dist/docs/NewLLD.rst
  vendor/lld/dist/docs/ReleaseNotes.rst
  vendor/lld/dist/docs/conf.py
  vendor/lld/dist/docs/windows_support.rst
  vendor/lld/dist/include/lld/Config/Version.h
  vendor/lld/dist/include/lld/Config/Version.inc.in
  vendor/lld/dist/include/lld/Core/Atom.h
  vendor/lld/dist/include/lld/Core/DefinedAtom.h
  vendor/lld/dist/include/lld/Core/LinkingContext.h
  vendor/lld/dist/include/lld/Core/Node.h
  vendor/lld/dist/include/lld/Core/Parallel.h
  vendor/lld/dist/include/lld/Core/Pass.h
  vendor/lld/dist/include/lld/Core/PassManager.h
  vendor/lld/dist/include/lld/Core/Reader.h
  vendor/lld/dist/include/lld/Core/Reference.h
  vendor/lld/dist/include/lld/Core/Simple.h
  vendor/lld/dist/include/lld/Core/SymbolTable.h
  vendor/lld/dist/include/lld/Driver/Driver.h
  vendor/lld/dist/include/lld/ReaderWriter/MachOLinkingContext.h
  vendor/lld/dist/lib/Config/Version.cpp
  vendor/lld/dist/lib/Core/CMakeLists.txt
  vendor/lld/dist/lib/Core/DefinedAtom.cpp
  vendor/lld/dist/lib/Core/Error.cpp
  vendor/lld/dist/lib/Core/File.cpp
  vendor/lld/dist/lib/Core/LinkingContext.cpp
  vendor/lld/dist/lib/Core/Reader.cpp
  vendor/lld/dist/lib/Core/Resolver.cpp
  vendor/lld/dist/lib/Core/SymbolTable.cpp
  vendor/lld/dist/lib/Core/Writer.cpp
  vendor/lld/dist/lib/Driver/DarwinLdDriver.cpp
  vendor/lld/dist/lib/ReaderWriter/FileArchive.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/ArchHandler_arm.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/ArchHandler_arm64.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/ArchHandler_x86.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/ArchHandler_x86_64.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/CMakeLists.txt
  vendor/lld/dist/lib/ReaderWriter/MachO/CompactUnwindPass.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/File.h
  vendor/lld/dist/lib/ReaderWriter/MachO/GOTPass.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/LayoutPass.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFile.h
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFileBinaryUtils.h
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFileToAtoms.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/MachONormalizedFileYAML.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/ObjCPass.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/ShimPass.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/StubsPass.cpp
  vendor/lld/dist/lib/ReaderWriter/MachO/TLVPass.cpp
  vendor/lld/dist/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
  vendor/lld/dist/test/CMakeLists.txt
  vendor/lld/dist/test/COFF/common.test
  vendor/lld/dist/test/COFF/conflict.test
  vendor/lld/dist/test/COFF/delayimports32.test
  vendor/lld/dist/test/COFF/dll.test
  vendor/lld/dist/test/COFF/export-exe.test
  vendor/lld/dist/test/COFF/export.test
  vendor/lld/dist/test/COFF/export32.test
  vendor/lld/dist/test/COFF/include2.test
  vendor/lld/dist/test/COFF/lldmap.test
  vendor/lld/dist/test/COFF/noentry.test
  vendor/lld/dist/test/COFF/order.test
  vendor/lld/dist/test/COFF/reloc-arm.test
  vendor/lld/dist/test/COFF/symtab.test
  vendor/lld/dist/test/ELF/Inputs/symbol-override.s
  vendor/lld/dist/test/ELF/Inputs/verdef-defaultver.s
  vendor/lld/dist/test/ELF/aarch64-abs16.s
  vendor/lld/dist/test/ELF/aarch64-abs32.s
  vendor/lld/dist/test/ELF/aarch64-condb-reloc.s
  vendor/lld/dist/test/ELF/aarch64-copy.s
  vendor/lld/dist/test/ELF/aarch64-copy2.s
  vendor/lld/dist/test/ELF/aarch64-data-relocs.s
  vendor/lld/dist/test/ELF/aarch64-fpic-abs16.s
  vendor/lld/dist/test/ELF/aarch64-fpic-add_abs_lo12_nc.s
  vendor/lld/dist/test/ELF/aarch64-fpic-adr_prel_lo21.s
  vendor/lld/dist/test/ELF/aarch64-fpic-adr_prel_pg_hi21.s
  vendor/lld/dist/test/ELF/aarch64-fpic-ldst32_abs_lo12_nc.s
  vendor/lld/dist/test/ELF/aarch64-fpic-ldst64_abs_lo12_nc.s
  vendor/lld/dist/test/ELF/aarch64-fpic-ldst8_abs_lo12_nc.s
  vendor/lld/dist/test/ELF/aarch64-fpic-prel16.s
  vendor/lld/dist/test/ELF/aarch64-fpic-prel32.s
  vendor/lld/dist/test/ELF/aarch64-fpic-prel64.s
  vendor/lld/dist/test/ELF/aarch64-gnu-ifunc.s
  vendor/lld/dist/test/ELF/aarch64-prel16.s
  vendor/lld/dist/test/ELF/aarch64-prel32.s
  vendor/lld/dist/test/ELF/aarch64-relocs.s
  vendor/lld/dist/test/ELF/aarch64-tls-gdie.s
  vendor/lld/dist/test/ELF/aarch64-tls-gdle.s
  vendor/lld/dist/test/ELF/aarch64-tls-ie.s
  vendor/lld/dist/test/ELF/aarch64-tls-iele.s
  vendor/lld/dist/test/ELF/aarch64-tls-le.s
  vendor/lld/dist/test/ELF/aarch64-tls-static.s
  vendor/lld/dist/test/ELF/aarch64-tlsdesc.s
  vendor/lld/dist/test/ELF/aarch64-tstbr14-reloc.s
  vendor/lld/dist/test/ELF/abs-hidden.s
  vendor/lld/dist/test/ELF/allow-multiple-definition.s
  vendor/lld/dist/test/ELF/amdgpu-globals.s
  vendor/lld/dist/test/ELF/amdgpu-relocs.s
  vendor/lld/dist/test/ELF/arm-blx.s
  vendor/lld/dist/test/ELF/arm-branch.s
  vendor/lld/dist/test/ELF/arm-data-prel.s
  vendor/lld/dist/test/ELF/arm-gnu-ifunc.s
  vendor/lld/dist/test/ELF/arm-got-relative.s
  vendor/lld/dist/test/ELF/arm-thumb-blx.s
  vendor/lld/dist/test/ELF/arm-thumb-branch.s
  vendor/lld/dist/test/ELF/arm-thumb-interwork-thunk.s
  vendor/lld/dist/test/ELF/arm-thumb-narrow-branch-check.s
  vendor/lld/dist/test/ELF/avoid-empty-program-headers.s
  vendor/lld/dist/test/ELF/basic-aarch64.s
  vendor/lld/dist/test/ELF/basic-mips.s
  vendor/lld/dist/test/ELF/basic-ppc.s
  vendor/lld/dist/test/ELF/basic.s
  vendor/lld/dist/test/ELF/basic32.s
  vendor/lld/dist/test/ELF/basic64be.s
  vendor/lld/dist/test/ELF/bss.s
  vendor/lld/dist/test/ELF/bsymbolic-undef.s
  vendor/lld/dist/test/ELF/bsymbolic.s
  vendor/lld/dist/test/ELF/build-id.s
  vendor/lld/dist/test/ELF/comdat.s
  vendor/lld/dist/test/ELF/common.s
  vendor/lld/dist/test/ELF/compressed-debug-input.s
  vendor/lld/dist/test/ELF/conflict.s
  vendor/lld/dist/test/ELF/copy-errors.s
  vendor/lld/dist/test/ELF/copy-in-shared.s
  vendor/lld/dist/test/ELF/copy-rel-corrupted.s
  vendor/lld/dist/test/ELF/copy-rel-pie-error.s
  vendor/lld/dist/test/ELF/discard-locals.s
  vendor/lld/dist/test/ELF/discard-none.s
  vendor/lld/dist/test/ELF/dont-export-hidden.s
  vendor/lld/dist/test/ELF/driver.test
  vendor/lld/dist/test/ELF/dynamic-list.s
  vendor/lld/dist/test/ELF/dynamic-reloc-in-ro.s
  vendor/lld/dist/test/ELF/dynamic-reloc-index.s
  vendor/lld/dist/test/ELF/dynamic-reloc.s
  vendor/lld/dist/test/ELF/dynamic.s
  vendor/lld/dist/test/ELF/edata-etext.s
  vendor/lld/dist/test/ELF/eh-align-cie.s
  vendor/lld/dist/test/ELF/eh-frame-dyn-rel.s
  vendor/lld/dist/test/ELF/eh-frame-hdr-abs-fde.s
  vendor/lld/dist/test/ELF/eh-frame-hdr-augmentation.s
  vendor/lld/dist/test/ELF/eh-frame-hdr-icf.s
  vendor/lld/dist/test/ELF/eh-frame-hdr.s
  vendor/lld/dist/test/ELF/eh-frame-marker.s
  vendor/lld/dist/test/ELF/eh-frame-merge.s
  vendor/lld/dist/test/ELF/ehframe-relocation.s
  vendor/lld/dist/test/ELF/empty-ver.s
  vendor/lld/dist/test/ELF/emulation.s
  vendor/lld/dist/test/ELF/end-update.s
  vendor/lld/dist/test/ELF/end.s
  vendor/lld/dist/test/ELF/entry.s
  vendor/lld/dist/test/ELF/gc-sections-lsda.s
  vendor/lld/dist/test/ELF/gc-sections-shared.s
  vendor/lld/dist/test/ELF/gc-sections.s
  vendor/lld/dist/test/ELF/gnu-ifunc-gotpcrel.s
  vendor/lld/dist/test/ELF/gnu-ifunc-i386.s
  vendor/lld/dist/test/ELF/gnu-ifunc.s
  vendor/lld/dist/test/ELF/got-aarch64.s
  vendor/lld/dist/test/ELF/got.s
  vendor/lld/dist/test/ELF/gotpc-relax-nopic.s
  vendor/lld/dist/test/ELF/gotpc-relax.s
  vendor/lld/dist/test/ELF/i386-gotpc.s
  vendor/lld/dist/test/ELF/i386-tls-ie-shared.s
  vendor/lld/dist/test/ELF/icf4.s
  vendor/lld/dist/test/ELF/icf5.s
  vendor/lld/dist/test/ELF/icf7.s
  vendor/lld/dist/test/ELF/image-base.s
  vendor/lld/dist/test/ELF/incompatible-ar-first.s
  vendor/lld/dist/test/ELF/incompatible.s
  vendor/lld/dist/test/ELF/invalid-cie-length.s
  vendor/lld/dist/test/ELF/invalid-cie-length2.s
  vendor/lld/dist/test/ELF/invalid-cie-length3.s
  vendor/lld/dist/test/ELF/invalid-cie-length4.s
  vendor/lld/dist/test/ELF/invalid-dynamic-list.test
  vendor/lld/dist/test/ELF/invalid-linkerscript.test
  vendor/lld/dist/test/ELF/libsearch.s
  vendor/lld/dist/test/ELF/local-dynamic.s
  vendor/lld/dist/test/ELF/local-got-pie.s
  vendor/lld/dist/test/ELF/local-got-shared.s
  vendor/lld/dist/test/ELF/local-got.s
  vendor/lld/dist/test/ELF/local.s
  vendor/lld/dist/test/ELF/lto/archive-3.ll
  vendor/lld/dist/test/ELF/lto/archive.ll
  vendor/lld/dist/test/ELF/lto/asmundef.ll
  vendor/lld/dist/test/ELF/lto/available-externally.ll
  vendor/lld/dist/test/ELF/lto/combined-lto-object-name.ll
  vendor/lld/dist/test/ELF/lto/common2.ll
  vendor/lld/dist/test/ELF/lto/discard-value-names.ll
  vendor/lld/dist/test/ELF/lto/drop-debug-info.ll
  vendor/lld/dist/test/ELF/lto/drop-linkage.ll
  vendor/lld/dist/test/ELF/lto/duplicated.ll
  vendor/lld/dist/test/ELF/lto/dynsym.ll
  vendor/lld/dist/test/ELF/lto/internalize-basic.ll
  vendor/lld/dist/test/ELF/lto/internalize-exportdyn.ll
  vendor/lld/dist/test/ELF/lto/internalize-llvmused.ll
  vendor/lld/dist/test/ELF/lto/internalize-undef.ll
  vendor/lld/dist/test/ELF/lto/internalize-version-script.ll
  vendor/lld/dist/test/ELF/lto/irmover-error.ll
  vendor/lld/dist/test/ELF/lto/linkonce-odr.ll
  vendor/lld/dist/test/ELF/lto/linkonce.ll
  vendor/lld/dist/test/ELF/lto/ltopasses-basic.ll
  vendor/lld/dist/test/ELF/lto/ltopasses-custom.ll
  vendor/lld/dist/test/ELF/lto/metadata.ll
  vendor/lld/dist/test/ELF/lto/parallel-internalize.ll
  vendor/lld/dist/test/ELF/lto/parallel.ll
  vendor/lld/dist/test/ELF/lto/save-temps.ll
  vendor/lld/dist/test/ELF/lto/shlib-undefined.ll
  vendor/lld/dist/test/ELF/lto/type-merge.ll
  vendor/lld/dist/test/ELF/lto/type-merge2.ll
  vendor/lld/dist/test/ELF/lto/undefined-puts.ll
  vendor/lld/dist/test/ELF/lto/unnamed-addr-comdat.ll
  vendor/lld/dist/test/ELF/lto/unnamed-addr-lib.ll
  vendor/lld/dist/test/ELF/lto/unnamed-addr.ll
  vendor/lld/dist/test/ELF/lto/version-script.ll
  vendor/lld/dist/test/ELF/merge-string-error.s
  vendor/lld/dist/test/ELF/merge-string.s
  vendor/lld/dist/test/ELF/merge.s
  vendor/lld/dist/test/ELF/mips-32.s
  vendor/lld/dist/test/ELF/mips-64-disp.s
  vendor/lld/dist/test/ELF/mips-64-got.s
  vendor/lld/dist/test/ELF/mips-64-gprel-so.s
  vendor/lld/dist/test/ELF/mips-64-rels.s
  vendor/lld/dist/test/ELF/mips-align-err.s
  vendor/lld/dist/test/ELF/mips-elf-flags.s
  vendor/lld/dist/test/ELF/mips-got-and-copy.s
  vendor/lld/dist/test/ELF/mips-got-redundant.s
  vendor/lld/dist/test/ELF/mips-got-relocs.s
  vendor/lld/dist/test/ELF/mips-got16.s
  vendor/lld/dist/test/ELF/mips-gp-disp.s
  vendor/lld/dist/test/ELF/mips-gp-local.s
  vendor/lld/dist/test/ELF/mips-gprel32-relocs.s
  vendor/lld/dist/test/ELF/mips-hilo-gp-disp.s
  vendor/lld/dist/test/ELF/mips-npic-call-pic.s
  vendor/lld/dist/test/ELF/mips-options-r.test
  vendor/lld/dist/test/ELF/mips-options.s
  vendor/lld/dist/test/ELF/mips-tls-64.s
  vendor/lld/dist/test/ELF/mips-tls.s
  vendor/lld/dist/test/ELF/no-inhibit-exec.s
  vendor/lld/dist/test/ELF/no-obj.s
  vendor/lld/dist/test/ELF/noplt-pie.s
  vendor/lld/dist/test/ELF/phdr-align.s
  vendor/lld/dist/test/ELF/pie.s
  vendor/lld/dist/test/ELF/plt-aarch64.s
  vendor/lld/dist/test/ELF/plt.s
  vendor/lld/dist/test/ELF/ppc-relocs.s
  vendor/lld/dist/test/ELF/pre_init_fini_array.s
  vendor/lld/dist/test/ELF/pre_init_fini_array_missing.s
  vendor/lld/dist/test/ELF/program-header-layout.s
  vendor/lld/dist/test/ELF/relative-dynamic-reloc-ppc64.s
  vendor/lld/dist/test/ELF/relative-dynamic-reloc.s
  vendor/lld/dist/test/ELF/relocatable-symbols.s
  vendor/lld/dist/test/ELF/relocatable.s
  vendor/lld/dist/test/ELF/relocation-common.s
  vendor/lld/dist/test/ELF/relocation-copy-flags.s
  vendor/lld/dist/test/ELF/relocation-copy.s
  vendor/lld/dist/test/ELF/relocation-i686.s
  vendor/lld/dist/test/ELF/relocation-local.s
  vendor/lld/dist/test/ELF/relocation-past-merge-end.s
  vendor/lld/dist/test/ELF/relocation-relative-absolute.s
  vendor/lld/dist/test/ELF/relocation-size-shared.s
  vendor/lld/dist/test/ELF/relocation-size.s
  vendor/lld/dist/test/ELF/relocation-undefined-weak.s
  vendor/lld/dist/test/ELF/relocation.s
  vendor/lld/dist/test/ELF/relro.s
  vendor/lld/dist/test/ELF/reproduce-windows.s
  vendor/lld/dist/test/ELF/reproduce.s
  vendor/lld/dist/test/ELF/resolution.s
  vendor/lld/dist/test/ELF/section-name.s
  vendor/lld/dist/test/ELF/shared-be.s
  vendor/lld/dist/test/ELF/shared.s
  vendor/lld/dist/test/ELF/startstop-gccollect.s
  vendor/lld/dist/test/ELF/startstop-shared.s
  vendor/lld/dist/test/ELF/startstop.s
  vendor/lld/dist/test/ELF/string-gc.s
  vendor/lld/dist/test/ELF/string-table.s
  vendor/lld/dist/test/ELF/symbol-override.s
  vendor/lld/dist/test/ELF/symbols.s
  vendor/lld/dist/test/ELF/sysroot.s
  vendor/lld/dist/test/ELF/tls-got.s
  vendor/lld/dist/test/ELF/tls-mismatch.s
  vendor/lld/dist/test/ELF/tls-offset.s
  vendor/lld/dist/test/ELF/tls-opt-gdie.s
  vendor/lld/dist/test/ELF/tls-opt-local.s
  vendor/lld/dist/test/ELF/tls-opt.s
  vendor/lld/dist/test/ELF/tls-static.s
  vendor/lld/dist/test/ELF/tls.s
  vendor/lld/dist/test/ELF/undef-shared.s
  vendor/lld/dist/test/ELF/undef-start.s
  vendor/lld/dist/test/ELF/undef-version-script.s
  vendor/lld/dist/test/ELF/undef-with-plt-addr.s
  vendor/lld/dist/test/ELF/undef.s
  vendor/lld/dist/test/ELF/undefined-opt.s
  vendor/lld/dist/test/ELF/unresolved-symbols.s
  vendor/lld/dist/test/ELF/verdef-defaultver.s
  vendor/lld/dist/test/ELF/verdef-dependency.s
  vendor/lld/dist/test/ELF/verdef.s
  vendor/lld/dist/test/ELF/verneed-local.s
  vendor/lld/dist/test/ELF/verneed.s
  vendor/lld/dist/test/ELF/version-script-err.s
  vendor/lld/dist/test/ELF/version-script-extern.s
  vendor/lld/dist/test/ELF/version-script-noundef.s
  vendor/lld/dist/test/ELF/version-script.s
  vendor/lld/dist/test/ELF/version-wildcard.test
  vendor/lld/dist/test/ELF/visibility.s
  vendor/lld/dist/test/ELF/weak-undef-shared.s
  vendor/lld/dist/test/ELF/weak-undef.s
  vendor/lld/dist/test/ELF/writable-merge.s
  vendor/lld/dist/test/ELF/x86-64-dyn-rel-error.s
  vendor/lld/dist/test/ELF/x86-64-dyn-rel-error2.s
  vendor/lld/dist/test/ELF/x86-64-reloc-32-fpic.s
  vendor/lld/dist/test/ELF/x86-64-reloc-error.s
  vendor/lld/dist/test/ELF/x86-64-reloc-pc32-fpic.s
  vendor/lld/dist/test/ELF/x86-64-reloc-range.s
  vendor/lld/dist/test/ELF/zdefs.s
  vendor/lld/dist/test/lit.cfg
  vendor/lld/dist/test/mach-o/arm-interworking-movw.yaml
  vendor/lld/dist/test/mach-o/arm-interworking.yaml
  vendor/lld/dist/test/mach-o/arm-shims.yaml
  vendor/lld/dist/test/mach-o/arm64-reloc-negDelta32-fixup.yaml
  vendor/lld/dist/test/mach-o/arm64-relocs-errors-delta64-offset.yaml
  vendor/lld/dist/test/mach-o/data-in-code-load-command.yaml
  vendor/lld/dist/test/mach-o/data-only-dylib.yaml
  vendor/lld/dist/test/mach-o/dead-strip-globals.yaml
  vendor/lld/dist/test/mach-o/demangle.yaml
  vendor/lld/dist/test/mach-o/dso_handle.yaml
  vendor/lld/dist/test/mach-o/dylib-install-names.yaml
  vendor/lld/dist/test/mach-o/eh-frame-relocs-arm64.yaml
  vendor/lld/dist/test/mach-o/exe-offsets.yaml
  vendor/lld/dist/test/mach-o/exe-segment-overlap.yaml
  vendor/lld/dist/test/mach-o/executable-exports.yaml
  vendor/lld/dist/test/mach-o/exported_symbols_list-dylib.yaml
  vendor/lld/dist/test/mach-o/exported_symbols_list-undef.yaml
  vendor/lld/dist/test/mach-o/fat-archive.yaml
  vendor/lld/dist/test/mach-o/flat_namespace_undef_error.yaml
  vendor/lld/dist/test/mach-o/flat_namespace_undef_suppress.yaml
  vendor/lld/dist/test/mach-o/force_load-dylib.yaml
  vendor/lld/dist/test/mach-o/force_load-x86_64.yaml
  vendor/lld/dist/test/mach-o/function-starts-load-command.yaml
  vendor/lld/dist/test/mach-o/gcc_except_tab-got-arm64.yaml
  vendor/lld/dist/test/mach-o/got-order.yaml
  vendor/lld/dist/test/mach-o/hello-world-arm64.yaml
  vendor/lld/dist/test/mach-o/image-base.yaml
  vendor/lld/dist/test/mach-o/interposing-section.yaml
  vendor/lld/dist/test/mach-o/lazy-bind-x86_64.yaml
  vendor/lld/dist/test/mach-o/library-order.yaml
  vendor/lld/dist/test/mach-o/library-rescan.yaml
  vendor/lld/dist/test/mach-o/linker-as-ld.yaml
  vendor/lld/dist/test/mach-o/lit.local.cfg
  vendor/lld/dist/test/mach-o/mh_bundle_header.yaml
  vendor/lld/dist/test/mach-o/mh_dylib_header.yaml
  vendor/lld/dist/test/mach-o/objc-category-list-atom.yaml
  vendor/lld/dist/test/mach-o/objc_export_list.yaml
  vendor/lld/dist/test/mach-o/order_file-basic.yaml
  vendor/lld/dist/test/mach-o/parse-data-in-code-armv7.yaml
  vendor/lld/dist/test/mach-o/parse-data-relocs-x86_64.yaml
  vendor/lld/dist/test/mach-o/rpath.yaml
  vendor/lld/dist/test/mach-o/run-tlv-pass-x86-64.yaml
  vendor/lld/dist/test/mach-o/sectalign.yaml
  vendor/lld/dist/test/mach-o/sectattrs.yaml
  vendor/lld/dist/test/mach-o/source-version.yaml
  vendor/lld/dist/test/mach-o/stack-size.yaml
  vendor/lld/dist/test/mach-o/twolevel_namespace_undef_dynamic_lookup.yaml
  vendor/lld/dist/test/mach-o/twolevel_namespace_undef_warning_suppress.yaml
  vendor/lld/dist/test/mach-o/unwind-info-simple-arm64.yaml
  vendor/lld/dist/test/mach-o/unwind-info-simple-x86_64.yaml
  vendor/lld/dist/test/mach-o/upward-dylib-load-command.yaml
  vendor/lld/dist/test/mach-o/version-min-load-command.yaml
  vendor/lld/dist/tools/lld/CMakeLists.txt
  vendor/lld/dist/tools/lld/lld.cpp
  vendor/lld/dist/unittests/CMakeLists.txt
  vendor/lld/dist/unittests/MachOTests/MachONormalizedFileBinaryWriterTests.cpp
Directory Properties:
  vendor/lld/dist/test/Driver/Inputs/libtest.a   (props changed)
  vendor/lld/dist/test/Driver/Inputs/usr/lib/i386/libtest.a   (props changed)
  vendor/lld/dist/test/Driver/Inputs/usr/lib/libtest.a   (props changed)
  vendor/lld/dist/test/ELF/Inputs/discard-merge-unnamed.o   (props changed)
  vendor/lld/dist/test/ELF/Inputs/mips-gp-disp.so   (props changed)
  vendor/lld/dist/test/ELF/Inputs/no-symtab.o   (props changed)
  vendor/lld/dist/test/mach-o/Inputs/lib-search-paths/usr/lib/libmystatic.a   (props changed)
  vendor/lld/dist/test/mach-o/Inputs/lib-search-paths/usr/local/lib/file.o   (props changed)
  vendor/lld/dist/test/mach-o/Inputs/libbar.a   (props changed)
  vendor/lld/dist/test/mach-o/Inputs/libfoo.a   (props changed)

Modified: vendor/lld/dist/CMakeLists.txt
==============================================================================
--- vendor/lld/dist/CMakeLists.txt	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/CMakeLists.txt	Mon Jan  2 19:19:15 2017	(r311125)
@@ -1,3 +1,54 @@
+# Check if lld is built as a standalone project.
+if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+  project(lld)
+  cmake_minimum_required(VERSION 3.4.3)
+
+  set(CMAKE_INCLUDE_CURRENT_DIR ON)
+  set(LLD_BUILT_STANDALONE TRUE)
+
+  find_program(LLVM_CONFIG_PATH "llvm-config" DOC "Path to llvm-config binary")
+  if(NOT LLVM_CONFIG_PATH)
+    message(FATAL_ERROR "llvm-config not found: specify LLVM_CONFIG_PATH")
+  endif()
+
+  execute_process(COMMAND "${LLVM_CONFIG_PATH}" "--obj-root" "--includedir"
+                  RESULT_VARIABLE HAD_ERROR
+                  OUTPUT_VARIABLE LLVM_CONFIG_OUTPUT
+                  OUTPUT_STRIP_TRAILING_WHITESPACE)
+  if(HAD_ERROR)
+    message(FATAL_ERROR "llvm-config failed with status ${HAD_ERROR}")
+  endif()
+
+  string(REGEX REPLACE "[ \t]*[\r\n]+[ \t]*" ";" LLVM_CONFIG_OUTPUT "${LLVM_CONFIG_OUTPUT}")
+
+  list(GET LLVM_CONFIG_OUTPUT 0 OBJ_ROOT)
+  list(GET LLVM_CONFIG_OUTPUT 1 MAIN_INCLUDE_DIR)
+
+  set(LLVM_OBJ_ROOT ${OBJ_ROOT} CACHE PATH "path to LLVM build tree")
+  set(LLVM_MAIN_INCLUDE_DIR ${MAIN_INCLUDE_DIR} CACHE PATH "path to llvm/include")
+
+  file(TO_CMAKE_PATH ${LLVM_OBJ_ROOT} LLVM_BINARY_DIR)
+  set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
+
+  if(NOT EXISTS "${LLVM_CMAKE_PATH}/LLVMConfig.cmake")
+    message(FATAL_ERROR "LLVMConfig.cmake not found")
+  endif()
+  include("${LLVM_CMAKE_PATH}/LLVMConfig.cmake")
+
+  list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
+
+  set(PACKAGE_VERSION "${LLVM_PACKAGE_VERSION}")
+  include_directories("${LLVM_BINARY_DIR}/include" ${LLVM_INCLUDE_DIRS})
+  link_directories(${LLVM_LIBRARY_DIRS})
+
+  set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
+  find_program(LLVM_TABLEGEN_EXE "llvm-tblgen" ${LLVM_TOOLS_BINARY_DIR} NO_DEFAULT_PATH)
+
+  include(AddLLVM)
+  include(TableGen)
+  include(HandleLLVMOptions)
+endif()
+
 set(LLD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
 set(LLD_INCLUDE_DIR ${LLD_SOURCE_DIR}/include )
 set(LLD_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
@@ -55,6 +106,8 @@ endif()
 
 list (APPEND CMAKE_MODULE_PATH "${LLD_SOURCE_DIR}/cmake/modules")
 
+include(AddLLD)
+
 option(LLD_USE_VTUNE
        "Enable VTune user task tracking."
        OFF)
@@ -67,6 +120,8 @@ if (LLD_USE_VTUNE)
   endif()
 endif()
 
+option(LLD_BUILD_TOOLS
+  "Build the lld tools. If OFF, just generate build targets." ON)
 
 if (MSVC)
   add_definitions(-wd4530) # Suppress 'warning C4530: C++ exception handler used, but unwind semantics are not enabled.'
@@ -87,12 +142,6 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
     )
 endif()
 
-macro(add_lld_library name)
-  add_llvm_library(${name} ${ARGN})
-  set_target_properties(${name} PROPERTIES FOLDER "lld libraries")
-endmacro(add_lld_library)
-
-
 add_subdirectory(lib)
 add_subdirectory(tools/lld)
 

Modified: vendor/lld/dist/COFF/CMakeLists.txt
==============================================================================
--- vendor/lld/dist/COFF/CMakeLists.txt	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/COFF/CMakeLists.txt	Mon Jan  2 19:19:15 2017	(r311125)
@@ -2,6 +2,10 @@ set(LLVM_TARGET_DEFINITIONS Options.td)
 tablegen(LLVM Options.inc -gen-opt-parser-defs)
 add_public_tablegen_target(COFFOptionsTableGen)
 
+if(NOT LLD_BUILT_STANDALONE)
+  set(tablegen_deps intrinsics_gen)
+endif()
+
 add_lld_library(lldCOFF
   Chunks.cpp
   DLL.cpp
@@ -14,6 +18,7 @@ add_lld_library(lldCOFF
   MarkLive.cpp
   ModuleDef.cpp
   PDB.cpp
+  Strings.cpp
   SymbolTable.cpp
   Symbols.cpp
   Writer.cpp
@@ -21,6 +26,9 @@ add_lld_library(lldCOFF
   LINK_COMPONENTS
   ${LLVM_TARGETS_TO_BUILD}
   Core
+  DebugInfoCodeView
+  DebugInfoMSF
+  DebugInfoPDB
   LTO
   LibDriver
   Object
@@ -30,7 +38,11 @@ add_lld_library(lldCOFF
   Option
   Support
 
-  LINK_LIBS ${PTHREAD_LIB}
-  )
+  LINK_LIBS
+  lldCore
+  ${PTHREAD_LIB}
 
-add_dependencies(lldCOFF COFFOptionsTableGen intrinsics_gen)
+  DEPENDS
+  COFFOptionsTableGen
+  ${tablegen_deps}
+  )

Modified: vendor/lld/dist/COFF/Chunks.cpp
==============================================================================
--- vendor/lld/dist/COFF/Chunks.cpp	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/COFF/Chunks.cpp	Mon Jan  2 19:19:15 2017	(r311125)
@@ -28,7 +28,7 @@ namespace lld {
 namespace coff {
 
 SectionChunk::SectionChunk(ObjectFile *F, const coff_section *H)
-    : Chunk(SectionKind), Repl(this), File(F), Header(H),
+    : Chunk(SectionKind), Repl(this), Header(H), File(F),
       Relocs(File->getCOFFObj()->getRelocations(Header)),
       NumRelocs(std::distance(Relocs.begin(), Relocs.end())) {
   // Initialize SectionName.
@@ -81,11 +81,23 @@ void SectionChunk::applyRelX86(uint8_t *
 }
 
 static void applyMOV(uint8_t *Off, uint16_t V) {
-  or16(Off, ((V & 0x800) >> 1) | ((V >> 12) & 0xf));
-  or16(Off + 2, ((V & 0x700) << 4) | (V & 0xff));
+  write16le(Off, (read16le(Off) & 0xfbf0) | ((V & 0x800) >> 1) | ((V >> 12) & 0xf));
+  write16le(Off + 2, (read16le(Off + 2) & 0x8f00) | ((V & 0x700) << 4) | (V & 0xff));
+}
+
+static uint16_t readMOV(uint8_t *Off) {
+  uint16_t Opcode1 = read16le(Off);
+  uint16_t Opcode2 = read16le(Off + 2);
+  uint16_t Imm = (Opcode2 & 0x00ff) | ((Opcode2 >> 4) & 0x0700);
+  Imm |= ((Opcode1 << 1) & 0x0800) | ((Opcode1 & 0x000f) << 12);
+  return Imm;
 }
 
 static void applyMOV32T(uint8_t *Off, uint32_t V) {
+  uint16_t ImmW = readMOV(Off);     // read MOVW operand
+  uint16_t ImmT = readMOV(Off + 4); // read MOVT operand
+  uint32_t Imm = ImmW | (ImmT << 16);
+  V += Imm;                         // add the immediate offset
   applyMOV(Off, V);           // set MOVW operand
   applyMOV(Off + 4, V >> 16); // set MOVT operand
 }
@@ -99,11 +111,14 @@ static void applyBranch20T(uint8_t *Off,
 }
 
 static void applyBranch24T(uint8_t *Off, int32_t V) {
+  if (!isInt<25>(V))
+    fatal("relocation out of range");
   uint32_t S = V < 0 ? 1 : 0;
   uint32_t J1 = ((~V >> 23) & 1) ^ S;
   uint32_t J2 = ((~V >> 22) & 1) ^ S;
   or16(Off, (S << 10) | ((V >> 12) & 0x3ff));
-  or16(Off + 2, (J1 << 13) | (J2 << 11) | ((V >> 1) & 0x7ff));
+  // Clear out the J1 and J2 bits which may be set.
+  write16le(Off + 2, (read16le(Off + 2) & 0xd000) | (J1 << 13) | (J2 << 11) | ((V >> 1) & 0x7ff));
 }
 
 void SectionChunk::applyRelARM(uint8_t *Off, uint16_t Type, Defined *Sym,
@@ -119,6 +134,7 @@ void SectionChunk::applyRelARM(uint8_t *
   case IMAGE_REL_ARM_BRANCH20T: applyBranch20T(Off, S - P - 4); break;
   case IMAGE_REL_ARM_BRANCH24T: applyBranch24T(Off, S - P - 4); break;
   case IMAGE_REL_ARM_BLX23T:    applyBranch24T(Off, S - P - 4); break;
+  case IMAGE_REL_ARM_SECREL:    add32(Off, Sym->getSecrel()); break;
   default:
     fatal("unsupported relocation type");
   }
@@ -134,7 +150,7 @@ void SectionChunk::writeTo(uint8_t *Buf)
   // Apply relocations.
   for (const coff_relocation &Rel : Relocs) {
     uint8_t *Off = Buf + OutputSectionOff + Rel.VirtualAddress;
-    SymbolBody *Body = File->getSymbolBody(Rel.SymbolTableIndex)->repl();
+    SymbolBody *Body = File->getSymbolBody(Rel.SymbolTableIndex);
     Defined *Sym = cast<Defined>(Body);
     uint64_t P = RVA + Rel.VirtualAddress;
     switch (Config->Machine) {
@@ -187,7 +203,7 @@ void SectionChunk::getBaserels(std::vect
     uint8_t Ty = getBaserelType(Rel);
     if (Ty == IMAGE_REL_BASED_ABSOLUTE)
       continue;
-    SymbolBody *Body = File->getSymbolBody(Rel.SymbolTableIndex)->repl();
+    SymbolBody *Body = File->getSymbolBody(Rel.SymbolTableIndex);
     if (isa<DefinedAbsolute>(Body))
       continue;
     Res->emplace_back(RVA + Rel.VirtualAddress, Ty);
@@ -210,7 +226,7 @@ void SectionChunk::printDiscardedMessage
   // Removed by dead-stripping. If it's removed by ICF, ICF already
   // printed out the name, so don't repeat that here.
   if (Sym && this == Repl)
-    llvm::outs() << "Discarded " << Sym->getName() << "\n";
+    outs() << "Discarded " << Sym->getName() << "\n";
 }
 
 StringRef SectionChunk::getDebugName() {
@@ -233,7 +249,7 @@ void SectionChunk::replace(SectionChunk 
 CommonChunk::CommonChunk(const COFFSymbolRef S) : Sym(S) {
   // Common symbols are aligned on natural boundaries up to 32 bytes.
   // This is what MSVC link.exe does.
-  Align = std::min(uint64_t(32), NextPowerOf2(Sym.getValue()));
+  Align = std::min(uint64_t(32), PowerOf2Ceil(Sym.getValue()));
 }
 
 uint32_t CommonChunk::getPermissions() const {

Modified: vendor/lld/dist/COFF/Chunks.h
==============================================================================
--- vendor/lld/dist/COFF/Chunks.h	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/COFF/Chunks.h	Mon Jan  2 19:19:15 2017	(r311125)
@@ -17,7 +17,6 @@
 #include "llvm/ADT/iterator.h"
 #include "llvm/ADT/iterator_range.h"
 #include "llvm/Object/COFF.h"
-#include <atomic>
 #include <utility>
 #include <vector>
 
@@ -29,7 +28,6 @@ using llvm::object::COFFSymbolRef;
 using llvm::object::SectionRef;
 using llvm::object::coff_relocation;
 using llvm::object::coff_section;
-using llvm::sys::fs::file_magic;
 
 class Baserel;
 class Defined;
@@ -187,11 +185,12 @@ public:
   // Auxiliary Format 5: Section Definitions. Used for ICF.
   uint32_t Checksum = 0;
 
+  const coff_section *Header;
+
 private:
   // A file this chunk was created from.
   ObjectFile *File;
 
-  const coff_section *Header;
   StringRef SectionName;
   std::vector<SectionChunk *> AssocChildren;
   llvm::iterator_range<const coff_relocation *> Relocs;
@@ -202,7 +201,7 @@ private:
 
   // Used for ICF (Identical COMDAT Folding)
   void replace(SectionChunk *Other);
-  std::atomic<uint64_t> GroupID = { 0 };
+  uint32_t Color[2] = {0, 0};
 
   // Sym points to a section symbol if this is a COMDAT chunk.
   DefinedRegular *Sym = nullptr;

Modified: vendor/lld/dist/COFF/Config.h
==============================================================================
--- vendor/lld/dist/COFF/Config.h	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/COFF/Config.h	Mon Jan  2 19:19:15 2017	(r311125)
@@ -26,7 +26,8 @@ using llvm::StringRef;
 class DefinedAbsolute;
 class DefinedRelative;
 class StringChunk;
-class Undefined;
+struct Symbol;
+class SymbolBody;
 
 // Short aliases.
 static const auto AMD64 = llvm::COFF::IMAGE_FILE_MACHINE_AMD64;
@@ -37,7 +38,7 @@ static const auto I386 = llvm::COFF::IMA
 struct Export {
   StringRef Name;       // N in /export:N or /export:E=N
   StringRef ExtName;    // E in /export:E=N
-  Undefined *Sym = nullptr;
+  SymbolBody *Sym = nullptr;
   uint16_t Ordinal = 0;
   bool Noname = false;
   bool Data = false;
@@ -61,6 +62,13 @@ struct Export {
   }
 };
 
+enum class DebugType {
+  None  = 0x0,
+  CV    = 0x1,  /// CodeView
+  PData = 0x2,  /// Procedure Data
+  Fixup = 0x4,  /// Relocation Table
+};
+
 // Global configuration.
 struct Configuration {
   enum ManifestKind { SideBySide, Embed, No };
@@ -69,7 +77,7 @@ struct Configuration {
   llvm::COFF::MachineTypes Machine = IMAGE_FILE_MACHINE_UNKNOWN;
   bool Verbose = false;
   WindowsSubsystem Subsystem = llvm::COFF::IMAGE_SUBSYSTEM_UNKNOWN;
-  Undefined *Entry = nullptr;
+  SymbolBody *Entry = nullptr;
   bool NoEntry = false;
   std::string OutputFile;
   bool DoGC = true;
@@ -78,9 +86,11 @@ struct Configuration {
   bool Force = false;
   bool Debug = false;
   bool WriteSymtab = true;
+  unsigned DebugTypes = static_cast<unsigned>(DebugType::None);
+  StringRef PDBPath;
 
   // Symbols in this set are considered as live by the garbage collector.
-  std::set<Undefined *> GCRoot;
+  std::set<SymbolBody *> GCRoot;
 
   std::set<StringRef> NoDefaultLibs;
   bool NoDefaultLibAll = false;
@@ -91,11 +101,11 @@ struct Configuration {
   std::vector<Export> Exports;
   std::set<std::string> DelayLoads;
   std::map<std::string, int> DLLOrder;
-  Undefined *DelayLoadHelper = nullptr;
+  SymbolBody *DelayLoadHelper = nullptr;
 
   // Used for SafeSEH.
-  DefinedRelative *SEHTable = nullptr;
-  DefinedAbsolute *SEHCount = nullptr;
+  Symbol *SEHTable = nullptr;
+  Symbol *SEHCount = nullptr;
 
   // Used for /opt:lldlto=N
   unsigned LTOOptLevel = 2;
@@ -141,6 +151,10 @@ struct Configuration {
   bool TerminalServerAware = true;
   bool LargeAddressAware = false;
   bool HighEntropyVA = false;
+
+  // This is for debugging.
+  bool DebugPdb = false;
+  bool DumpPdb = false;
 };
 
 extern Configuration *Config;

Modified: vendor/lld/dist/COFF/DLL.cpp
==============================================================================
--- vendor/lld/dist/COFF/DLL.cpp	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/COFF/DLL.cpp	Mon Jan  2 19:19:15 2017	(r311125)
@@ -324,7 +324,7 @@ public:
       if (E.ForwardChunk) {
         write32le(P, E.ForwardChunk->getRVA());
       } else {
-        write32le(P, cast<Defined>(E.Sym->repl())->getRVA());
+        write32le(P, cast<Defined>(E.Sym)->getRVA());
       }
     }
   }

Modified: vendor/lld/dist/COFF/Driver.cpp
==============================================================================
--- vendor/lld/dist/COFF/Driver.cpp	Mon Jan  2 19:19:07 2017	(r311124)
+++ vendor/lld/dist/COFF/Driver.cpp	Mon Jan  2 19:19:15 2017	(r311125)
@@ -7,15 +7,17 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "Config.h"
 #include "Driver.h"
+#include "Config.h"
 #include "Error.h"
 #include "InputFiles.h"
+#include "Memory.h"
 #include "SymbolTable.h"
 #include "Symbols.h"
 #include "Writer.h"
 #include "lld/Driver/Driver.h"
 #include "llvm/ADT/Optional.h"
+#include "llvm/ADT/StringSwitch.h"
 #include "llvm/LibDriver/LibDriver.h"
 #include "llvm/Option/Arg.h"
 #include "llvm/Option/ArgList.h"
@@ -28,6 +30,13 @@
 #include <algorithm>
 #include <memory>
 
+#ifdef _MSC_VER
+// <future> depends on <eh.h> for __uncaught_exception.
+#include <eh.h>
+#endif
+
+#include <future>
+
 using namespace llvm;
 using namespace llvm::COFF;
 using llvm::sys::Process;
@@ -41,11 +50,13 @@ namespace coff {
 Configuration *Config;
 LinkerDriver *Driver;
 
-bool link(llvm::ArrayRef<const char *> Args) {
-  Configuration C;
-  LinkerDriver D;
-  Config = &C;
-  Driver = &D;
+BumpPtrAllocator BAlloc;
+StringSaver Saver{BAlloc};
+std::vector<SpecificAllocBase *> SpecificAllocBase::Instances;
+
+bool link(ArrayRef<const char *> Args) {
+  Config = make<Configuration>();
+  Driver = make<LinkerDriver>();
   Driver->link(Args);
   return true;
 }
@@ -58,26 +69,123 @@ static std::string getOutputPath(StringR
   return (S.substr(0, S.rfind('.')) + E).str();
 }
 
-// Opens a file. Path has to be resolved already.
-// Newly created memory buffers are owned by this driver.
-MemoryBufferRef LinkerDriver::openFile(StringRef Path) {
-  std::unique_ptr<MemoryBuffer> MB =
-      check(MemoryBuffer::getFile(Path), "could not open " + Path);
-  MemoryBufferRef MBRef = MB->getMemBufferRef();
-  OwningMBs.push_back(std::move(MB)); // take ownership
+// ErrorOr is not default constructible, so it cannot be used as the type
+// parameter of a future.
+// FIXME: We could open the file in createFutureForFile and avoid needing to
+// return an error here, but for the moment that would cost us a file descriptor
+// (a limited resource on Windows) for the duration that the future is pending.
+typedef std::pair<std::unique_ptr<MemoryBuffer>, std::error_code> MBErrPair;
+
+// Create a std::future that opens and maps a file using the best strategy for
+// the host platform.
+static std::future<MBErrPair> createFutureForFile(std::string Path) {
+#if LLVM_ON_WIN32
+  // On Windows, file I/O is relatively slow so it is best to do this
+  // asynchronously.
+  auto Strategy = std::launch::async;
+#else
+  auto Strategy = std::launch::deferred;
+#endif
+  return std::async(Strategy, [=]() {
+    auto MBOrErr = MemoryBuffer::getFile(Path);
+    if (!MBOrErr)
+      return MBErrPair{nullptr, MBOrErr.getError()};
+    return MBErrPair{std::move(*MBOrErr), std::error_code()};
+  });
+}
+
+MemoryBufferRef LinkerDriver::takeBuffer(std::unique_ptr<MemoryBuffer> MB) {
+  MemoryBufferRef MBRef = *MB;
+  OwningMBs.push_back(std::move(MB));
+
+  if (Driver->Cpio)
+    Driver->Cpio->append(relativeToRoot(MBRef.getBufferIdentifier()),
+                         MBRef.getBuffer());
+
   return MBRef;
 }
 
-static std::unique_ptr<InputFile> createFile(MemoryBufferRef MB) {
+void LinkerDriver::addBuffer(std::unique_ptr<MemoryBuffer> MB) {
+  MemoryBufferRef MBRef = takeBuffer(std::move(MB));
+
   // File type is detected by contents, not by file extension.
-  file_magic Magic = identify_magic(MB.getBuffer());
+  file_magic Magic = identify_magic(MBRef.getBuffer());
+  if (Magic == file_magic::windows_resource) {
+    Resources.push_back(MBRef);
+    return;
+  }
+
+  FilePaths.push_back(MBRef.getBufferIdentifier());
   if (Magic == file_magic::archive)
-    return std::unique_ptr<InputFile>(new ArchiveFile(MB));
+    return Symtab.addFile(make<ArchiveFile>(MBRef));
   if (Magic == file_magic::bitcode)
-    return std::unique_ptr<InputFile>(new BitcodeFile(MB));
+    return Symtab.addFile(make<BitcodeFile>(MBRef));
+  if (Magic == file_magic::coff_cl_gl_object)
+    fatal(MBRef.getBufferIdentifier() + ": is not a native COFF file. "
+          "Recompile without /GL");
+  Symtab.addFile(make<ObjectFile>(MBRef));
+}
+
+void LinkerDriver::enqueuePath(StringRef Path) {
+  auto Future =
+      std::make_shared<std::future<MBErrPair>>(createFutureForFile(Path));
+  std::string PathStr = Path;
+  enqueueTask([=]() {
+    auto MBOrErr = Future->get();
+    if (MBOrErr.second)
+      fatal(MBOrErr.second, "could not open " + PathStr);
+    Driver->addBuffer(std::move(MBOrErr.first));
+  });
+
   if (Config->OutputFile == "")
-    Config->OutputFile = getOutputPath(MB.getBufferIdentifier());
-  return std::unique_ptr<InputFile>(new ObjectFile(MB));
+    Config->OutputFile = getOutputPath(Path);
+}
+
+void LinkerDriver::addArchiveBuffer(MemoryBufferRef MB, StringRef SymName,
+                                    StringRef ParentName) {
+  file_magic Magic = identify_magic(MB.getBuffer());
+  if (Magic == file_magic::coff_import_library) {
+    Symtab.addFile(make<ImportFile>(MB));
+    return;
+  }
+
+  InputFile *Obj;
+  if (Magic == file_magic::coff_object)
+    Obj = make<ObjectFile>(MB);
+  else if (Magic == file_magic::bitcode)
+    Obj = make<BitcodeFile>(MB);
+  else
+    fatal("unknown file type: " + MB.getBufferIdentifier());
+
+  Obj->ParentName = ParentName;
+  Symtab.addFile(Obj);
+  if (Config->Verbose)
+    outs() << "Loaded " << toString(Obj) << " for " << SymName << "\n";
+}
+
+void LinkerDriver::enqueueArchiveMember(const Archive::Child &C,
+                                        StringRef SymName,
+                                        StringRef ParentName) {
+  if (!C.getParent()->isThin()) {
+    MemoryBufferRef MB = check(
+        C.getMemoryBufferRef(),
+        "could not get the buffer for the member defining symbol " + SymName);
+    enqueueTask([=]() { Driver->addArchiveBuffer(MB, SymName, ParentName); });
+    return;
+  }
+
+  auto Future = std::make_shared<std::future<MBErrPair>>(createFutureForFile(
+      check(C.getFullName(),
+            "could not get the filename for the member defining symbol " +
+                SymName)));
+  enqueueTask([=]() {
+    auto MBOrErr = Future->get();
+    if (MBOrErr.second)
+      fatal(MBOrErr.second,
+            "could not get the buffer for the member defining " + SymName);
+    Driver->addArchiveBuffer(takeBuffer(std::move(MBOrErr.first)), SymName,
+                             ParentName);
+  });
 }
 
 static bool isDecorated(StringRef Sym) {
@@ -87,7 +195,7 @@ static bool isDecorated(StringRef Sym) {
 // Parses .drectve section contents and returns a list of files
 // specified by /defaultlib.
 void LinkerDriver::parseDirectives(StringRef S) {
-  llvm::opt::InputArgList Args = Parser.parse(S);
+  opt::InputArgList Args = Parser.parse(S);
 
   for (auto *Arg : Args) {
     switch (Arg->getOption().getID()) {
@@ -95,10 +203,8 @@ void LinkerDriver::parseDirectives(Strin
       parseAlternateName(Arg->getValue());
       break;
     case OPT_defaultlib:
-      if (Optional<StringRef> Path = findLib(Arg->getValue())) {
-        MemoryBufferRef MB = openFile(*Path);
-        Symtab.addFile(createFile(MB));
-      }
+      if (Optional<StringRef> Path = findLib(Arg->getValue()))
+        enqueuePath(*Path);
       break;
     case OPT_export: {
       Export E = parseExport(Arg->getValue());
@@ -135,19 +241,19 @@ void LinkerDriver::parseDirectives(Strin
 // Find file from search paths. You can omit ".obj", this function takes
 // care of that. Note that the returned path is not guaranteed to exist.
 StringRef LinkerDriver::doFindFile(StringRef Filename) {
-  bool hasPathSep = (Filename.find_first_of("/\\") != StringRef::npos);
-  if (hasPathSep)
+  bool HasPathSep = (Filename.find_first_of("/\\") != StringRef::npos);
+  if (HasPathSep)
     return Filename;
-  bool hasExt = (Filename.find('.') != StringRef::npos);
+  bool HasExt = (Filename.find('.') != StringRef::npos);
   for (StringRef Dir : SearchPaths) {
     SmallString<128> Path = Dir;
-    llvm::sys::path::append(Path, Filename);
-    if (llvm::sys::fs::exists(Path.str()))
-      return Alloc.save(Path.str());
-    if (!hasExt) {
+    sys::path::append(Path, Filename);
+    if (sys::fs::exists(Path.str()))
+      return Saver.save(Path.str());
+    if (!HasExt) {
       Path.append(".obj");
-      if (llvm::sys::fs::exists(Path.str()))
-        return Alloc.save(Path.str());
+      if (sys::fs::exists(Path.str()))
+        return Saver.save(Path.str());
     }
   }
   return Filename;
@@ -166,9 +272,9 @@ Optional<StringRef> LinkerDriver::findFi
 // Find library file from search path.
 StringRef LinkerDriver::doFindLib(StringRef Filename) {
   // Add ".lib" to Filename if that has no file extension.
-  bool hasExt = (Filename.find('.') != StringRef::npos);
-  if (!hasExt)
-    Filename = Alloc.save(Filename + ".lib");
+  bool HasExt = (Filename.find('.') != StringRef::npos);
+  if (!HasExt)
+    Filename = Saver.save(Filename + ".lib");
   return doFindFile(Filename);
 }
 
@@ -178,11 +284,12 @@ StringRef LinkerDriver::doFindLib(String
 Optional<StringRef> LinkerDriver::findLib(StringRef Filename) {
   if (Config->NoDefaultLibAll)
     return None;
+  if (!VisitedLibs.insert(Filename.lower()).second)
+    return None;
   StringRef Path = doFindLib(Filename);
   if (Config->NoDefaultLibs.count(Path))
     return None;
-  bool Seen = !VisitedFiles.insert(Path.lower()).second;
-  if (Seen)
+  if (!VisitedFiles.insert(Path.lower()).second)
     return None;
   return Path;
 }
@@ -192,7 +299,7 @@ void LinkerDriver::addLibSearchPaths() {
   Optional<std::string> EnvOpt = Process::GetEnv("LIB");
   if (!EnvOpt.hasValue())
     return;
-  StringRef Env = Alloc.save(*EnvOpt);
+  StringRef Env = Saver.save(*EnvOpt);
   while (!Env.empty()) {
     StringRef Path;
     std::tie(Path, Env) = Env.split(';');
@@ -200,17 +307,17 @@ void LinkerDriver::addLibSearchPaths() {
   }
 }
 
-Undefined *LinkerDriver::addUndefined(StringRef Name) {
-  Undefined *U = Symtab.addUndefined(Name);
-  Config->GCRoot.insert(U);
-  return U;
+SymbolBody *LinkerDriver::addUndefined(StringRef Name) {
+  SymbolBody *B = Symtab.addUndefined(Name);
+  Config->GCRoot.insert(B);
+  return B;
 }
 
 // Symbol names are mangled by appending "_" prefix on x86.
 StringRef LinkerDriver::mangle(StringRef Sym) {
   assert(Config->Machine != IMAGE_FILE_MACHINE_UNKNOWN);
   if (Config->Machine == I386)
-    return Alloc.save("_" + Sym);
+    return Saver.save("_" + Sym);
   return Sym;
 }
 
@@ -225,7 +332,7 @@ StringRef LinkerDriver::findDefaultEntry
   };
   for (auto E : Entries) {
     StringRef Entry = Symtab.findMangle(mangle(E[0]));
-    if (!Entry.empty() && !isa<Undefined>(Symtab.find(Entry)->Body))
+    if (!Entry.empty() && !isa<Undefined>(Symtab.find(Entry)->body()))
       return mangle(E[1]);
   }
   return "";
@@ -247,7 +354,83 @@ static uint64_t getDefaultImageBase() {
   return Config->DLL ? 0x10000000 : 0x400000;
 }
 
-void LinkerDriver::link(llvm::ArrayRef<const char *> ArgsArr) {
+static std::string createResponseFile(const opt::InputArgList &Args,
+                                      ArrayRef<StringRef> FilePaths,
+                                      ArrayRef<StringRef> SearchPaths) {
+  SmallString<0> Data;
+  raw_svector_ostream OS(Data);
+
+  for (auto *Arg : Args) {
+    switch (Arg->getOption().getID()) {
+    case OPT_linkrepro:
+    case OPT_INPUT:
+    case OPT_defaultlib:
+    case OPT_libpath:
+      break;
+    default:
+      OS << stringize(Arg) << "\n";
+    }
+  }
+
+  for (StringRef Path : SearchPaths) {
+    std::string RelPath = relativeToRoot(Path);
+    OS << "/libpath:" << quote(RelPath) << "\n";
+  }
+
+  for (StringRef Path : FilePaths)
+    OS << quote(relativeToRoot(Path)) << "\n";
+
+  return Data.str();
+}
+
+static unsigned getDefaultDebugType(const opt::InputArgList &Args) {
+  unsigned DebugTypes = static_cast<unsigned>(DebugType::CV);
+  if (Args.hasArg(OPT_driver))
+    DebugTypes |= static_cast<unsigned>(DebugType::PData);
+  if (Args.hasArg(OPT_profile))
+    DebugTypes |= static_cast<unsigned>(DebugType::Fixup);
+  return DebugTypes;
+}
+
+static unsigned parseDebugType(StringRef Arg) {
+  SmallVector<StringRef, 3> Types;
+  Arg.split(Types, ',', /*KeepEmpty=*/false);
+
+  unsigned DebugTypes = static_cast<unsigned>(DebugType::None);
+  for (StringRef Type : Types)
+    DebugTypes |= StringSwitch<unsigned>(Type.lower())
+                      .Case("cv", static_cast<unsigned>(DebugType::CV))
+                      .Case("pdata", static_cast<unsigned>(DebugType::PData))
+                      .Case("fixup", static_cast<unsigned>(DebugType::Fixup));
+  return DebugTypes;
+}
+
+static std::string getMapFile(const opt::InputArgList &Args) {
+  auto *Arg = Args.getLastArg(OPT_lldmap, OPT_lldmap_file);
+  if (!Arg)
+    return "";
+  if (Arg->getOption().getID() == OPT_lldmap_file)
+    return Arg->getValue();
+
+  assert(Arg->getOption().getID() == OPT_lldmap);
+  StringRef OutFile = Config->OutputFile;
+  return (OutFile.substr(0, OutFile.rfind('.')) + ".map").str();
+}
+
+void LinkerDriver::enqueueTask(std::function<void()> Task) {
+  TaskQueue.push_back(std::move(Task));
+}
+
+bool LinkerDriver::run() {
+  bool DidWork = !TaskQueue.empty();
+  while (!TaskQueue.empty()) {
+    TaskQueue.front()();
+    TaskQueue.pop_front();
+  }
+  return DidWork;
+}
+
+void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
   // If the first command line argument is "/lib", link.exe acts like lib.exe.
   // We call our own implementation of lib.exe that understands bitcode files.
   if (ArgsArr.size() > 1 && StringRef(ArgsArr[1]).equals_lower("/lib")) {
@@ -257,15 +440,15 @@ void LinkerDriver::link(llvm::ArrayRef<c
   }
 
   // Needed for LTO.
-  llvm::InitializeAllTargetInfos();
-  llvm::InitializeAllTargets();
-  llvm::InitializeAllTargetMCs();
-  llvm::InitializeAllAsmParsers();
-  llvm::InitializeAllAsmPrinters();
-  llvm::InitializeAllDisassemblers();
+  InitializeAllTargetInfos();
+  InitializeAllTargets();
+  InitializeAllTargetMCs();
+  InitializeAllAsmParsers();
+  InitializeAllAsmPrinters();
+  InitializeAllDisassemblers();
 
   // Parse command line options.
-  llvm::opt::InputArgList Args = Parser.parseLINK(ArgsArr.slice(1));
+  opt::InputArgList Args = Parser.parseLINK(ArgsArr.slice(1));
 
   // Handle /help
   if (Args.hasArg(OPT_help)) {
@@ -273,6 +456,17 @@ void LinkerDriver::link(llvm::ArrayRef<c
     return;
   }
 
+  if (auto *Arg = Args.getLastArg(OPT_linkrepro)) {
+    SmallString<64> Path = StringRef(Arg->getValue());
+    sys::path::append(Path, "repro");
+    ErrorOr<CpioFile *> F = CpioFile::create(Path);
+    if (F)
+      Cpio.reset(*F);
+    else
+      errs() << "/linkrepro: failed to open " << Path
+             << ".cpio: " << F.getError().message() << '\n';
+  }
+
   if (Args.filtered_begin(OPT_INPUT) == Args.filtered_end())
     fatal("no input files");
 
@@ -295,8 +489,17 @@ void LinkerDriver::link(llvm::ArrayRef<c
     Config->Force = true;
 
   // Handle /debug
-  if (Args.hasArg(OPT_debug))
+  if (Args.hasArg(OPT_debug)) {
     Config->Debug = true;
+    Config->DebugTypes =
+        Args.hasArg(OPT_debugtype)
+            ? parseDebugType(Args.getLastArg(OPT_debugtype)->getValue())
+            : getDefaultDebugType(Args);
+  }
+
+  // Create a dummy PDB file to satisfy build sytem rules.
+  if (auto *Arg = Args.getLastArg(OPT_pdb))
+    Config->PDBPath = Arg->getValue();
 
   // Handle /noentry
   if (Args.hasArg(OPT_noentry)) {
@@ -447,72 +650,43 @@ void LinkerDriver::link(llvm::ArrayRef<c
     Config->TerminalServerAware = false;
   if (Args.hasArg(OPT_nosymtab))
     Config->WriteSymtab = false;
+  Config->DumpPdb = Args.hasArg(OPT_dumppdb);
+  Config->DebugPdb = Args.hasArg(OPT_debugpdb);
 
   // Create a list of input files. Files can be given as arguments
   // for /defaultlib option.
-  std::vector<StringRef> Paths;
   std::vector<MemoryBufferRef> MBs;
   for (auto *Arg : Args.filtered(OPT_INPUT))
     if (Optional<StringRef> Path = findFile(Arg->getValue()))
-      Paths.push_back(*Path);
+      enqueuePath(*Path);
   for (auto *Arg : Args.filtered(OPT_defaultlib))
     if (Optional<StringRef> Path = findLib(Arg->getValue()))
-      Paths.push_back(*Path);
-  for (StringRef Path : Paths)
-    MBs.push_back(openFile(Path));
+      enqueuePath(*Path);
 
   // Windows specific -- Create a resource file containing a manifest file.
-  if (Config->Manifest == Configuration::Embed) {
-    std::unique_ptr<MemoryBuffer> MB = createManifestRes();
-    MBs.push_back(MB->getMemBufferRef());
-    OwningMBs.push_back(std::move(MB)); // take ownership
+  if (Config->Manifest == Configuration::Embed)
+    addBuffer(createManifestRes());
+
+  // Read all input files given via the command line.
+  run();
+
+  // We should have inferred a machine type by now from the input files, but if
+  // not we assume x64.
+  if (Config->Machine == IMAGE_FILE_MACHINE_UNKNOWN) {
+    errs() << "warning: /machine is not specified. x64 is assumed.\n";
+    Config->Machine = AMD64;
   }
 
   // Windows specific -- Input files can be Windows resource files (.res files).
   // We invoke cvtres.exe to convert resource files to a regular COFF file
   // then link the result file normally.
-  std::vector<MemoryBufferRef> Resources;
-  auto NotResource = [](MemoryBufferRef MB) {
-    return identify_magic(MB.getBuffer()) != file_magic::windows_resource;
-  };
-  auto It = std::stable_partition(MBs.begin(), MBs.end(), NotResource);
-  if (It != MBs.end()) {
-    Resources.insert(Resources.end(), It, MBs.end());
-    MBs.erase(It, MBs.end());
-  }
-
-  // Read all input files given via the command line. Note that step()
-  // doesn't read files that are specified by directive sections.
-  for (MemoryBufferRef MB : MBs)
-    Symtab.addFile(createFile(MB));
-  Symtab.step();
-
-  // Determine machine type and check if all object files are
-  // for the same CPU type. Note that this needs to be done before
-  // any call to mangle().
-  for (std::unique_ptr<InputFile> &File : Symtab.getFiles()) {
-    MachineTypes MT = File->getMachineType();
-    if (MT == IMAGE_FILE_MACHINE_UNKNOWN)
-      continue;
-    if (Config->Machine == IMAGE_FILE_MACHINE_UNKNOWN) {
-      Config->Machine = MT;
-      continue;
-    }
-    if (Config->Machine != MT)
-      fatal(File->getShortName() + ": machine type " + machineToStr(MT) +
-            " conflicts with " + machineToStr(Config->Machine));
-  }
-  if (Config->Machine == IMAGE_FILE_MACHINE_UNKNOWN) {
-    llvm::errs() << "warning: /machine is not specified. x64 is assumed.\n";
-    Config->Machine = AMD64;
-  }
+  if (!Resources.empty())
+    addBuffer(convertResToCOFF(Resources));
 
-  // Windows specific -- Convert Windows resource files to a COFF file.
-  if (!Resources.empty()) {
-    std::unique_ptr<MemoryBuffer> MB = convertResToCOFF(Resources);
-    Symtab.addFile(createFile(MB->getMemBufferRef()));
-    OwningMBs.push_back(std::move(MB)); // take ownership
-  }
+  if (Cpio)
+    Cpio->append("response.txt",
+                 createResponseFile(Args, FilePaths,
+                                    ArrayRef<StringRef>(SearchPaths).slice(1)));
 
   // Handle /largeaddressaware
   if (Config->is64() || Args.hasArg(OPT_largeaddressaware))
@@ -537,7 +711,7 @@ void LinkerDriver::link(llvm::ArrayRef<c
       fatal("entry point must be defined");
     Config->Entry = addUndefined(S);
     if (Config->Verbose)
-      llvm::outs() << "Entry name inferred: " << S << "\n";
+      outs() << "Entry name inferred: " << S << "\n";
   }
 
   // Handle /export
@@ -545,18 +719,19 @@ void LinkerDriver::link(llvm::ArrayRef<c
     Export E = parseExport(Arg->getValue());
     if (Config->Machine == I386) {
       if (!isDecorated(E.Name))
-        E.Name = Alloc.save("_" + E.Name);
+        E.Name = Saver.save("_" + E.Name);
       if (!E.ExtName.empty() && !isDecorated(E.ExtName))
-        E.ExtName = Alloc.save("_" + E.ExtName);
+        E.ExtName = Saver.save("_" + E.ExtName);
     }
     Config->Exports.push_back(E);
   }
 
   // Handle /def
   if (auto *Arg = Args.getLastArg(OPT_deffile)) {
-    MemoryBufferRef MB = openFile(Arg->getValue());
     // parseModuleDefs mutates Config object.
-    parseModuleDefs(MB, &Alloc);
+    parseModuleDefs(
+        takeBuffer(check(MemoryBuffer::getFile(Arg->getValue()),
+                         Twine("could not open ") + Arg->getValue())));
   }
 
   // Handle /delayload
@@ -585,14 +760,10 @@ void LinkerDriver::link(llvm::ArrayRef<c
   Symtab.addAbsolute(mangle("__guard_fids_count"), 0);
   Symtab.addAbsolute(mangle("__guard_flags"), 0x100);
 
-  // Read as much files as we can from directives sections.
-  Symtab.run();
-
-  // Resolve auxiliary symbols until we get a convergence.
-  // (Trying to resolve a symbol may trigger a Lazy symbol to load a new file.
-  // A new file may contain a directive section to add new command line options.
-  // That's why we have to repeat until converge.)
-  for (;;) {
+  // This code may add new undefined symbols to the link, which may enqueue more
+  // symbol resolution tasks, so we need to continue executing tasks until we
+  // converge.
+  do {
     // Windows specific -- if entry point is not found,
     // search for its mangled names.
     if (Config->Entry)
@@ -615,7 +786,7 @@ void LinkerDriver::link(llvm::ArrayRef<c
       Symbol *Sym = Symtab.find(From);
       if (!Sym)
         continue;
-      if (auto *U = dyn_cast<Undefined>(Sym->Body))
+      if (auto *U = dyn_cast<Undefined>(Sym->body()))
         if (!U->WeakAlias)
           U->WeakAlias = Symtab.addUndefined(To);
     }
@@ -623,18 +794,15 @@ void LinkerDriver::link(llvm::ArrayRef<c
     // Windows specific -- if __load_config_used can be resolved, resolve it.
     if (Symtab.findUnderscore("_load_config_used"))
       addUndefined(mangle("_load_config_used"));
-
-    if (Symtab.queueEmpty())
-      break;
-    Symtab.run();
-  }
+  } while (run());
 
   // Do LTO by compiling bitcode input files to a set of native COFF files then
   // link those files.
   Symtab.addCombinedLTOObjects();
+  run();
 
   // Make sure we have resolved all symbols.
-  Symtab.reportRemainingUndefines(/*Resolve=*/true);
+  Symtab.reportRemainingUndefines();
 
   // Windows specific -- if no /subsystem is given, we need to infer
   // that from entry point name.
@@ -662,10 +830,6 @@ void LinkerDriver::link(llvm::ArrayRef<c

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



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