[llvm-commits] [126737] Fix the race condition where a dylib is used before it' s actually created.

bwendlin at apple.com bwendlin at apple.com
Mon Apr 30 12:14:36 PDT 2007


Revision: 126737
Author:   bwendlin
Date:     2007-04-30 12:14:35 -0700 (Mon, 30 Apr 2007)

Log Message:
-----------
Fix the race condition where a dylib is used before it's actually created.
Naming it a unique name for each stage will fix this.

Modified Paths:
--------------
    apple-local/branches/llvm/gcc/Makefile.in

Modified: apple-local/branches/llvm/gcc/Makefile.in
===================================================================
--- apple-local/branches/llvm/gcc/Makefile.in	2007-04-30 19:04:35 UTC (rev 126736)
+++ apple-local/branches/llvm/gcc/Makefile.in	2007-04-30 19:14:35 UTC (rev 126737)
@@ -1124,16 +1124,16 @@
 # llvm-linker-hack.cpp
 DYLIB_COMPILE_FLAGS := $(filter-out -mdynamic-no-pic, \
                              $(ALL_CXXFLAGS) $(ALL_CPPFLAGS))
-libllvmgcc.dylib: llvm-linker-hack.cpp $(LLVMLIBFILES)
+libllvmgcc$(LLVM_STAGE).dylib: llvm-linker-hack.cpp $(LLVMLIBFILES)
 	echo $(LLVMLIBFILES)
 	$(CXX) $(DYLIB_COMPILE_FLAGS) $(INCLUDES) -o $@ \
            $< $(LLVMLIBFILES)  -dynamiclib -single_module \
            -install_name @executable_path/$@
 
-LLVMBACKENDFILES := libllvmgcc.dylib
+LLVMBACKENDFILES := libllvmgcc$(LLVM_STAGE).dylib
 
 # Make sure that 'make install' knows about the dylib.
-EXTRA_PROGRAMS += libllvmgcc.dylib
+EXTRA_PROGRAMS += libllvmgcc$(LLVM_STAGE).dylib
 
 # APPLE LOCAL begin LLVM - set DYLD path
 SET_DYLIB_PATH=1
@@ -4073,7 +4073,8 @@
 	$(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" \
 		CFLAGS="$(STAGE1_CFLAGS) $(STAGE1_CHECKING)" \
 		MAKEINFO="$(MAKEINFO)" MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \
-		COVERAGE_FLAGS= OBJS-onestep="$(OBJS)"
+		COVERAGE_FLAGS= OBJS-onestep="$(OBJS)" \
+	        LLVM_STAGE="-stage1"
 	$(STAMP) stage1_build
 	echo stage1_build > stage_last
 
@@ -4083,13 +4084,11 @@
 	echo stage2_build > stage_last
 
 stage2_build: stage1_copy
-	if test "${SET_DYLIB_PATH}" = "1"; then \
-	  DYLD_LIBRARY_PATH="`${PWD_COMMAND}`/stage1"; \
-	fi; \
 	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \
 		 STAGE_PREFIX=stage1/ \
 		 $(POSTSTAGE1_FLAGS_TO_PASS) \
-		 $(STAGE2_FLAGS_TO_PASS)
+		 $(STAGE2_FLAGS_TO_PASS) \
+	         LLVM_STAGE="-stage2"
 	$(STAMP) stage2_build
 	echo stage2_build > stage_last
 
@@ -4099,13 +4098,11 @@
 	echo stage3_build > stage_last
 
 stageprofile_build: stage1_copy
-	if test "${SET_DYLIB_PATH}" = "1"; then \
-	  DYLD_LIBRARY_PATH="`${PWD_COMMAND}`/stage1"; \
-	fi; \
 	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \
 		 STAGE_PREFIX=stage1/ \
 		 $(POSTSTAGE1_FLAGS_TO_PASS) \
-		 $(STAGEPROFILE_FLAGS_TO_PASS)
+		 $(STAGEPROFILE_FLAGS_TO_PASS) \
+	         LLVM_STAGE="-stage_profile"
 	$(STAMP) stageprofile_build
 	echo stageprofile_build > stage_last
 
@@ -4115,24 +4112,20 @@
 	echo stagefeedback_build > stage_last
 
 stage3_build: stage2_copy
-	if test "${SET_DYLIB_PATH}" = "1"; then \
-	  DYLD_LIBRARY_PATH="`${PWD_COMMAND}`/stage2"; \
-	fi; \
 	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" \
 		 STAGE_PREFIX=stage2/ \
 		 $(POSTSTAGE1_FLAGS_TO_PASS) \
-		 $(STAGE2_FLAGS_TO_PASS)
+		 $(STAGE2_FLAGS_TO_PASS) \
+	         LLVM_STAGE=""
 	$(STAMP) stage3_build
 	echo stage3_build > stage_last
 
 stagefeedback_build: stageprofile_copy stage1_copy
-	if test "${SET_DYLIB_PATH}" = "1"; then \
-	  DYLD_LIBRARY_PATH="`${PWD_COMMAND}`/stage1"; \
-	fi; \
 	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \
 		 STAGE_PREFIX=stage1/ \
 		 $(POSTSTAGE1_FLAGS_TO_PASS) \
-		 $(STAGEFEEDBACK_FLAGS_TO_PASS)
+		 $(STAGEFEEDBACK_FLAGS_TO_PASS) \
+	         LLVM_STAGE="-stage_feedback"
 	$(STAMP) stagefeedback_build
 	echo stagefeedback_build > stage_last
 
@@ -4148,9 +4141,6 @@
 	echo stage4_build > stage_last
 
 stage4_build: stage3_copy
-	if test "${SET_DYLIB_PATH}" = "1"; then \
-	  DYLD_LIBRARY_PATH="`${PWD_COMMAND}`/stage3"; \
-	fi; \
 	$(MAKE) CC="$(STAGE_CC_WRAPPER) stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" \
 		 STAGE_PREFIX=stage3/ \
 		 $(POSTSTAGE1_FLAGS_TO_PASS) \





More information about the llvm-commits mailing list