diff options
| author | Ralf Jung <post@ralfj.de> | 2020-05-09 13:36:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-09 13:36:32 +0200 |
| commit | ce05553c62689bd58184970cf58e59a663cc4658 (patch) | |
| tree | 836c9cb6fc1b58e02bffab0d1e1ab2b7e0d4a3fe /src/rustllvm/PassWrapper.cpp | |
| parent | 1704dca270e86f5d33c84e1952897c2c33ad5256 (diff) | |
| parent | 0e7d5be4b808bd7ccb1d45aa8f7e5026a15aee93 (diff) | |
| download | rust-ce05553c62689bd58184970cf58e59a663cc4658.tar.gz rust-ce05553c62689bd58184970cf58e59a663cc4658.zip | |
Rollup merge of #71234 - maurer:init-array, r=cuviper
rustllvm: Use .init_array rather than .ctors LLVM TargetMachines default to using the (now-legacy) .ctors representation of init functions. Mixing .ctors and .init_array representations can cause issues when linking with lld. This happens in practice for: * Our profiling runtime which is currently implicitly built with .init_array since it is built by clang, which sets this field. * External C/C++ code that may be linked into the same process. Fixes: #71233
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
| -rw-r--r-- | src/rustllvm/PassWrapper.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index e1d75418243..84bde9a52f7 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -447,7 +447,8 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine( bool Singlethread, bool AsmComments, bool EmitStackSizeSection, - bool RelaxELFRelocations) { + bool RelaxELFRelocations, + bool UseInitArray) { auto OptLevel = fromRust(RustOptLevel); auto RM = fromRust(RustReloc); @@ -473,6 +474,7 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine( Options.MCOptions.PreserveAsmComments = AsmComments; Options.MCOptions.ABIName = ABIStr; Options.RelaxELFRelocations = RelaxELFRelocations; + Options.UseInitArray = UseInitArray; if (TrapUnreachable) { // Tell LLVM to codegen `unreachable` into an explicit trap instruction. |
