diff options
| author | Rafael Ávila de Espíndola <[email protected]> | 2011-04-15 19:29:13 -0400 |
|---|---|---|
| committer | Rafael Ávila de Espíndola <[email protected]> | 2011-04-15 19:29:13 -0400 |
| commit | 099e09476577aca9c7365d99e69ccde29aec9940 (patch) | |
| tree | 6c4acb78cecbf8793816bba56b14d464ec43b3e8 | |
| parent | rustc: Remove the "boxed" check, and make the static_size_of_tag recursion-el... (diff) | |
| download | rust-099e09476577aca9c7365d99e69ccde29aec9940.tar.xz rust-099e09476577aca9c7365d99e69ccde29aec9940.zip | |
Produce PIC code and use -S in the Makefile.
| -rw-r--r-- | Makefile.in | 70 | ||||
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 1 |
2 files changed, 25 insertions, 46 deletions
diff --git a/Makefile.in b/Makefile.in index 0b613d12..fbd102c2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -149,8 +149,6 @@ CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt) CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm) CFG_STDLIB :=$(call CFG_LIB_NAME,std) -CFG_LLC_CFLAGS := -march=x86 -relocation-model=pic - ifdef CFG_GCC CFG_INFO := $(info cfg: using gcc) CFG_GCC_CFLAGS += -Wall -Werror -fno-rtti -fno-exceptions -g @@ -465,27 +463,27 @@ boot/$(CFG_STDLIB): $(STDLIB_CRATE) $(STDLIB_INPUTS) \ @$(call E, compile: $@) $(BOOT) -shared -o $@ $< -stage0/std.bc: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage0/rustc$(X) $(MKFILES) +stage0/std.s: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage0/rustc$(X) $(MKFILES) @$(call E, compile: $@) - $(STAGE0) -shared -o $@ $< + $(STAGE0) -S -shared -o $@ $< stage0/$(CFG_STDLIB): stage0/std.o stage0/glue.o @$(call E, link: $@) $(Q)gcc $(CFG_GCC_CFLAGS) stage0/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \ -Lstage0 -Lrt -lrustrt -stage1/std.bc: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage1/rustc$(X) $(MKFILES) +stage1/std.s: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage1/rustc$(X) $(MKFILES) @$(call E, compile: $@) - $(STAGE1) -shared -o $@ $< + $(STAGE1) -S -shared -o $@ $< stage1/$(CFG_STDLIB): stage1/std.o stage1/glue.o @$(call E, link: $@) $(Q)gcc $(CFG_GCC_CFLAGS) stage1/glue.o $(CFG_GCC_LINK_FLAGS) -o $@ $< \ -Lstage1 -Lrt -lrustrt -stage2/std.bc: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage2/rustc$(X) $(MKFILES) +stage2/std.s: $(STDLIB_CRATE) $(STDLIB_INPUTS) stage2/rustc$(X) $(MKFILES) @$(call E, compile: $@) - $(STAGE2) -shared -o $@ $< + $(STAGE2) -S -shared -o $@ $< stage2/$(CFG_STDLIB): stage2/std.o stage2/glue.o @$(call E, link: $@) @@ -511,20 +509,20 @@ stage2/rustc$(X): $(COMPILER_CRATE) $(COMPILER_INPUTS) $(SREQ1) -stage0/glue.bc: stage0/rustc$(X) boot/$(CFG_STDLIB) \ +stage0/glue.s: stage0/rustc$(X) boot/$(CFG_STDLIB) \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) - $(STAGE0) -o $@ -glue + $(STAGE0) -S -o $@ -glue -stage1/glue.bc: stage1/rustc$(X) stage0/$(CFG_STDLIB) \ +stage1/glue.s: stage1/rustc$(X) stage0/$(CFG_STDLIB) \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) - $(STAGE1) -o $@ -glue + $(STAGE1) -S -o $@ -glue -stage2/glue.bc: stage2/rustc$(X) stage1/$(CFG_STDLIB) \ +stage2/glue.s: stage2/rustc$(X) stage1/$(CFG_STDLIB) \ rustllvm/$(CFG_RUSTLLVM) rt/$(CFG_RUNTIME) @$(call E, generate: $@) - $(STAGE2) -o $@ -glue + $(STAGE2) -S -o $@ -glue # Due to make not wanting to run the same implicit rules twice on the same # rule tree (implicit-rule recursion prevention, see "Chains of Implicit @@ -536,26 +534,14 @@ stage0/%.o: stage0/%.s @$(call E, assemble [llvm]: $@) $(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $< -stage0/%.s: stage0/%.bc - @$(call E, compile [llvm]: $@) - $(Q)$(CFG_LLVM_BINDIR)/llc $(CFG_LLC_CFLAGS) -o $@ $< - stage1/%.o: stage1/%.s @$(call E, assemble [llvm]: $@) $(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $< -stage1/%.s: stage1/%.bc - @$(call E, compile [llvm]: $@) - $(Q)$(CFG_LLVM_BINDIR)/llc $(CFG_LLC_CFLAGS) -o $@ $< - stage2/%.o: stage2/%.s @$(call E, assemble [llvm]: $@) $(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $< -stage2/%.s: stage2/%.bc - @$(call E, compile [llvm]: $@) - $(Q)$(CFG_LLVM_BINDIR)/llc $(CFG_LLC_CFLAGS) -o $@ $< - ###################################################################### @@ -803,29 +789,29 @@ compile-check: tidy \ @$(call E, compile [boot]: $@) $(BOOT) -o $@ $< -%.stage0.bc: %.rc $(SREQ0) +%.stage0.s: %.rc $(SREQ0) @$(call E, compile [stage0]: $@) - $(STAGE0) -o $@ $< + $(STAGE0) -S -o $@ $< -%.stage0.bc: %.rs $(SREQ0) +%.stage0.s: %.rs $(SREQ0) @$(call E, compile [stage0]: $@) - $(STAGE0) -o $@ $< + $(STAGE0) -S -o $@ $< -%.stage1.bc: %.rc $(SREQ1) +%.stage1.s: %.rc $(SREQ1) @$(call E, compile [stage1]: $@) - $(STAGE1) -o $@ $< + $(STAGE1) -S -o $@ $< -%.stage1.bc: %.rs $(SREQ1) +%.stage1.s: %.rs $(SREQ1) @$(call E, compile [stage1]: $@) - $(STAGE1) -o $@ $< + $(STAGE1) -S -o $@ $< -%.stage2.bc: %.rc $(SREQ2) +%.stage2.s: %.rc $(SREQ2) @$(call E, compile [stage2]: $@) - $(STAGE2) -o $@ $< + $(STAGE2) -S -o $@ $< -%.stage2.bc: %.rs $(SREQ2) +%.stage2.s: %.rs $(SREQ2) @$(call E, compile [stage2]: $@) - $(STAGE2) -o $@ $< + $(STAGE2) -S -o $@ $< @@ -833,14 +819,6 @@ compile-check: tidy \ @$(call E, assemble [llvm]: $@) $(Q)gcc $(CFG_GCC_CFLAGS) -o $@ -c $< -%.ll: %.bc - @$(call E, dis [llvm]: $@) - $(Q)$(CFG_LLVM_BINDIR)/llvm-dis -o $@ $< - -%.s: %.bc - @$(call E, compile [llvm]: $@) - $(Q)$(CFG_LLVM_BINDIR)/llc $(CFG_LLC_CFLAGS) -o $@ $< - # Cancel the implicit .out rule in GNU make. %.out: % diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 81b8cbc9..b2dcd065 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -46,6 +46,7 @@ extern "C" void LLVMRustWriteAssembly(LLVMPassManagerRef PMR, LLVMModuleRef M, const char *triple, const char *path) { InitializeAllTargets(); InitializeAllAsmPrinters(); + TargetMachine::setRelocationModel(Reloc::PIC_); std::string Err; const Target *TheTarget = TargetRegistry::lookupTarget(triple, Err); std::string FeaturesStr; |