diff options
| author | Jan-Erik Rediger <janerik@fnordig.de> | 2016-07-21 11:24:35 +0200 |
|---|---|---|
| committer | Jan-Erik Rediger <janerik@fnordig.de> | 2016-07-29 10:29:44 +0200 |
| commit | dc7076b52e2464a703de7d87fa6c60b8fc98ada9 (patch) | |
| tree | 14ca8b5e5b4382e3c4de567e921b39d778d8ff62 | |
| parent | 2c92756dde884bbfa5efef9b4cbd846882a7d46e (diff) | |
| download | rust-dc7076b52e2464a703de7d87fa6c60b8fc98ada9.tar.gz rust-dc7076b52e2464a703de7d87fa6c60b8fc98ada9.zip | |
[LLVM-3.9] Pass correct relocation model flag
| -rwxr-xr-x | configure | 5 | ||||
| -rw-r--r-- | mk/platform.mk | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/configure b/configure index d2ec457a1c8..af29ef3d39c 100755 --- a/configure +++ b/configure @@ -1020,6 +1020,11 @@ then err "bad LLVM version: $LLVM_VERSION, need >=3.7" ;; esac + + if "$CFG_LLVM_ROOT/bin/llvm-mc" -help | grep "-relocation-model"; then + CFG_LLVM_MC_HAS_RELOCATION_MODEL=1 + putvar CFG_LLVM_MC_HAS_RELOCATION_MODEL + fi fi # Even when the user overrides the choice of CC, still try to detect diff --git a/mk/platform.mk b/mk/platform.mk index c2644621c57..d601cab7221 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -221,12 +221,19 @@ define CFG_MAKE_TOOLCHAIN LLVM_MC_RELOCATION_MODEL="default" endif + # LLVM changed this flag in 3.9 + ifdef CFG_LLVM_MC_HAS_RELOCATION_MODEL + LLVM_MC_RELOC_FLAG := -relocation-model=$$(LLVM_MC_RELOCATION_MODEL) + else + LLVM_MC_RELOC_FLAG := -position-independent + endif + # We're using llvm-mc as our assembler because it supports # .cfi pseudo-ops on mac CFG_ASSEMBLE_$(1)=$$(CPP_$(1)) -E $$(2) | \ $$(LLVM_MC_$$(CFG_BUILD)) \ -assemble \ - -relocation-model=$$(LLVM_MC_RELOCATION_MODEL) \ + $$(LLVM_MC_RELOC_FLAG) \ -filetype=obj \ -triple=$(1) \ -o=$$(1) |
