Skip to content

Commit a96c5f2

Browse files
jyasskingraydon
authored andcommitted
Make the build system run dsymutil so we can debug llvm-produced binaries on OSX.
1 parent ca95da8 commit a96c5f2

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*.orig
1111
*.cmo
1212
*.cmi
13+
*.dSYM
1314
*.d
1415
*.o
1516
*.aux

src/Makefile

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ CFG_VALGRIND :=
2626
CFG_LLVM_CONFIG ?= llvm-config
2727
CFG_BOOT_FLAGS := $(FLAGS)
2828

29+
# On Darwin, we need to run dsymutil so the debugging information ends
30+
# up in the right place. On other platforms, it automatically gets
31+
# embedded into the executable, so use a no-op command.
32+
DSYMUTIL := true
33+
2934
ifeq ($(CFG_OSTYPE), Linux)
3035
CFG_RUNTIME := librustrt.so
3136
CFG_STDLIB := libstd.so
@@ -56,6 +61,7 @@ ifeq ($(CFG_OSTYPE), Darwin)
5661
# approaches welcome!
5762
CFG_GCC_CFLAGS += -m32
5863
CFG_GCC_LINK_FLAGS += -m32
64+
DSYMUTIL := dsymutil
5965
endif
6066

6167
ifneq ($(findstring MINGW,$(CFG_OSTYPE)),)
@@ -651,9 +657,17 @@ test/bench/shootout/%.x86$(CFG_EXE_SUFFIX): test/bench/shootout/%.rs $(REQ)
651657
@$(call CFG_ECHO, compile [llvm]: $<)
652658
$(CFG_QUIET)$(LLC) $(CFG_LLC_CFLAGS) -o $@ $<
653659

654-
%.llvm$(CFG_EXE_SUFFIX): %.s $(CFG_RUNTIME)
655-
@$(call CFG_ECHO, compile [llvm]: $<)
660+
%.o: %.s
661+
@$(call CFG_ECHO, assemble [llvm]: $<)
662+
$(CFG_QUIET)gcc $(CFG_GCC_CFLAGS) -o $@ -c $<
663+
664+
%.llvm$(CFG_EXE_SUFFIX): %.o $(CFG_RUNTIME)
665+
@$(call CFG_ECHO, link [llvm]: $<)
656666
$(CFG_QUIET)gcc $(CFG_GCC_CFLAGS) -o $@ $< -L. -lrustrt
667+
@# dsymutil sometimes fails or prints a warning, but the
668+
@# program still runs. Since it simplifies debugging other
669+
@# programs, I\'ll live with the noise.
670+
-$(CFG_QUIET)$(DSYMUTIL) $@
657671

658672
test/run-pass/%.bc: test/run-pass/%.rc $(REQ)
659673
@$(call CFG_ECHO, compile [llvm]: $<)
@@ -802,6 +816,8 @@ clean:
802816
$(CFG_QUIET)rm -f $(TEST_RFAIL_EXES_LLVM) $(TEST_RFAIL_OUTS_LLVM)
803817
$(CFG_QUIET)rm -f $(TEST_CFAIL_EXES_X86) $(TEST_CFAIL_OUTS_X86)
804818
$(CFG_QUIET)rm -f $(TEST_CFAIL_EXES_LLVM) $(TEST_CFAIL_OUTS_LLVM)
819+
$(CFG_QUIET)rm -rf $(TEST_RPASS_EXES_LLVM:.llvm=.llvm.dSYM)
820+
$(CFG_QUIET)rm -rf $(TEST_RFAIL_EXES_LLVM:.llvm=.llvm.dSYM)
805821
$(CFG_QUIET)rm -Rf $(PKG_NAME)-*.tar.gz dist
806822
$(CFG_QUIET)rm -f $(foreach ext,cmx cmi cmo cma o a d exe,\
807823
$(wildcard boot/*/*.$(ext) boot/*/*/*.$(ext)))

0 commit comments

Comments
 (0)