[MC, COFF] Support link /incremental conditionally
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 21 Dec 2015 22:09:27 +0000 (22:09 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 21 Dec 2015 22:09:27 +0000 (22:09 +0000)
commit56afa6e6600151858649d12e4360746918a7978b
tree0b855fb243390fc8279bc76976b319b8b1a98266
parente7f0062250d0fb97a6e685f729859bb031fe67b1
[MC, COFF] Support link /incremental conditionally

Today, we always take into account the possibility that object files
produced by MC may be consumed by an incremental linker.  This results
in us initialing fields which vary with time (TimeDateStamp) which harms
hermetic builds (e.g. verifying a self-host went well) and produces
sub-optimal code because we cannot assume anything about the relative
position of functions within a section (call sites can get redirected
through incremental linker thunks).

Let's provide an MCTargetOption which controls this behavior so that we
can disable this functionality if we know a-priori that the build will
not rely on /incremental.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@256203 91177308-0d34-0410-b5e6-96231b3b80d8
18 files changed:
include/llvm/MC/MCAssembler.h
include/llvm/MC/MCTargetOptions.h
include/llvm/MC/MCTargetOptionsCommandFlags.h
include/llvm/Support/TargetRegistry.h
lib/CodeGen/LLVMTargetMachine.cpp
lib/MC/MCAssembler.cpp
lib/MC/MCTargetOptions.cpp
lib/MC/WinCOFFObjectWriter.cpp
lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h
lib/Target/ARM/MCTargetDesc/ARMWinCOFFStreamer.cpp
lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
lib/Target/X86/MCTargetDesc/X86WinCOFFStreamer.cpp
test/MC/ARM/Windows/invalid-relocation.s
test/MC/COFF/simple-fixups.s
test/MC/COFF/timestamp.s
tools/dsymutil/DwarfLinker.cpp
tools/llvm-dwp/llvm-dwp.cpp
tools/llvm-mc/llvm-mc.cpp