From db14469e21facf6754e24aea5fbb5de7e0c03e99 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Thu, 22 Aug 2013 20:43:50 -0400 Subject: [PATCH 1/2] make: rm LLVM_BUILD_ENV using this to turn off the frame pointers isn't needed, and doesn't actually work right now because the reference to it omits the target triple --- mk/llvm.mk | 2 +- mk/platform.mk | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/mk/llvm.mk b/mk/llvm.mk index 12ccc55d4fa..896718be6c4 100644 --- a/mk/llvm.mk +++ b/mk/llvm.mk @@ -26,7 +26,7 @@ ifeq ($(CFG_LLVM_ROOT),) $$(LLVM_CONFIG_$(1)): $$(LLVM_DEPS) @$$(call E, make: llvm) - $$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) $$(CFG_LLVM_BUILD_ENV) + $$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) $$(Q)touch $$(LLVM_CONFIG_$(1)) endif diff --git a/mk/platform.mk b/mk/platform.mk index 6ee5420664d..9fde6475535 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -153,7 +153,6 @@ CFG_GCCISH_POST_LIB_FLAGS_x86_64-unknown-linux-gnu := -Wl,-no-whole-archive CFG_DEF_SUFFIX_x86_64-unknown-linux-gnu := .linux.def CFG_INSTALL_NAME_x86_64-unknown-linux-gnu = CFG_LIBUV_LINK_FLAGS_x86_64-unknown-linux-gnu = -CFG_LLVM_BUILD_ENV_x86_64-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" CFG_EXE_SUFFIX_x86_64-unknown-linux-gnu = CFG_WINDOWSY_x86_64-unknown-linux-gnu := CFG_UNIXY_x86_64-unknown-linux-gnu := 1 @@ -179,7 +178,6 @@ CFG_GCCISH_POST_LIB_FLAGS_i686-unknown-linux-gnu := -Wl,-no-whole-archive CFG_DEF_SUFFIX_i686-unknown-linux-gnu := .linux.def CFG_INSTALL_NAME_i686-unknown-linux-gnu = CFG_LIBUV_LINK_FLAGS_i686-unknown-linux-gnu = -CFG_LLVM_BUILD_ENV_i686-unknown-linux-gnu="CXXFLAGS=-fno-omit-frame-pointer" CFG_EXE_SUFFIX_i686-unknown-linux-gnu = CFG_WINDOWSY_i686-unknown-linux-gnu := CFG_UNIXY_i686-unknown-linux-gnu := 1 From 0ac02e7c4fcdda35940eccba385001e8b882c63e Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Thu, 22 Aug 2013 20:46:20 -0400 Subject: [PATCH 2/2] make: stop disabling frame pointer elimination We currently have no need for the frame pointers on any platform. They may eventually be needed on platforms without an equivalent to the DWARF call frame information to walk the stack in the garbage collector. Closes #7477 --- mk/platform.mk | 5 +---- src/rustllvm/RustWrapper.cpp | 2 -- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/mk/platform.mk b/mk/platform.mk index 9fde6475535..3e7ad914dab 100644 --- a/mk/platform.mk +++ b/mk/platform.mk @@ -26,10 +26,7 @@ endef $(foreach t,$(CFG_TARGET_TRIPLES),$(eval $(call DEF_OSTYPE_VAR,$(t)))) $(foreach t,$(CFG_TARGET_TRIPLES),$(info cfg: os for $(t) is $(OSTYPE_$(t)))) -# FIXME: no-omit-frame-pointer is just so that task_start_wrapper -# has a frame pointer and the stack walker can understand it. Turning off -# frame pointers everywhere is overkill -CFG_GCCISH_CFLAGS += -fno-omit-frame-pointer -DUSE_UTF8 +CFG_GCCISH_CFLAGS += -DUSE_UTF8 # On Darwin, we need to run dsymutil so the debugging information ends # up in the right place. On other platforms, it automatically gets diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 1a4b7f32329..7e9a790e215 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -342,7 +342,6 @@ LLVMRustBuildJIT(void* mem, std::string Err; TargetOptions Options; Options.JITEmitDebugInfo = true; - Options.NoFramePointerElim = true; Options.EnableSegmentedStacks = EnableSegmentedStacks; RustMCJITMemoryManager* MM = (RustMCJITMemoryManager*) mem; assert(MM); @@ -393,7 +392,6 @@ LLVMRustWriteOutputFile(LLVMPassManagerRef PMR, } TargetOptions Options; - Options.NoFramePointerElim = true; Options.EnableSegmentedStacks = EnableSegmentedStacks; Options.FixedStackSegmentSize = 2 * 1024 * 1024; // XXX: This is too big.