From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6405 invoked from network); 24 Dec 1996 11:35:25 -0000 Received: from euclid.skiles.gatech.edu (list@130.207.146.50) by coral.primenet.com.au with SMTP; 24 Dec 1996 11:35:25 -0000 Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id GAA02015; Tue, 24 Dec 1996 06:34:45 -0500 (EST) Resent-Date: Tue, 24 Dec 1996 06:34:45 -0500 (EST) From: Zefram Message-Id: <23693.199612241135@stone.dcs.warwick.ac.uk> Subject: object filename clashes To: zsh-workers@math.gatech.edu (Z Shell workers mailing list) Date: Tue, 24 Dec 1996 11:35:45 +0000 (GMT) X-Patch: 159 X-Loop: zefram@dcs.warwick.ac.uk X-Stardate: [-31]8622.41 X-US-Congress: Moronic fuckers Content-Type: text Resent-Message-ID: <"8xK7r3.0.NV.J_xlo"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/2632 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu -----BEGIN PGP SIGNED MESSAGE----- When a module is being linked in when dynamic module loading is available, it is still built as a module. (This is a feature.) Both the normal zsh build process and the module build process try to use the same filenames for the intermediate object files. This can cause object files compiled with the wrong flags to be used, and in a parallel make two compiles could try to write to the same file at the same time. This patch makes the object files for modules use a different set of names. The trick I use -- a suffix of `..o' instead of `.o' -- is portable as far as I know, and causes no extra overhead. -zefram *** configure.in 1996/12/22 04:50:02 1.26 --- configure.in 1996/12/24 05:03:53 *************** *** 774,780 **** solaris*|sysv4*|esix*) DLCFLAGS="${DLCFLAGS=-Kpic}" ;; esac fi - DLCFLAGS="-DMODULE $DLCFLAGS" case "$host_os" in hpux*) DLLDFLAGS="${DLLDFLAGS=-b}" ;; linux*|irix*) DLLDFLAGS="${DLLDFLAGS=-shared}" ;; --- 774,779 ---- *** Src/Makefile.in 1996/12/24 03:45:30 1.22 --- Src/Makefile.in 1996/12/24 05:07:30 *************** *** 77,110 **** MODBINS = modules-bltin - DLEXT=.$(DL_EXT) - NLEXT=._foobarbaz_ - KNR_OBJ=.o KNROBJ=._foo_ ANSIOBJ=.o ANSI_OBJ=._foo_ - KNR_DOBJ=$(@D@LEXT) - KNRDOBJ=._bar_ - - ANSIDOBJ=$(@D@LEXT) - ANSI_DOBJ=._bar_ - .SUFFIXES: ! .SUFFIXES: .c $(ANSI@U@DOBJ) $(KNR@U@DOBJ) $(ANSI@U@OBJ) $(KNR@U@OBJ) .pro ! ! .c$(ANSI@U@DOBJ): ! $(COMPILE) $(DLCFLAGS) -o $@.o $< ! $(DLLD) $(LDFLAGS) $(DLLDFLAGS) -o $@ $@.o ! rm -f $@.o ! ! .c$(KNR@U@DOBJ): ! ./ansi2knr $< > $@.c ! $(COMPILE) $(DLCFLAGS) -o $@.o $@.c ! $(DLLD) $(LDFLAGS) $(DLLDFLAGS) -o $@ $@.o ! rm -f $@.[oc] .c$(ANSI@U@OBJ): $(COMPILE) -o $@ $< --- 77,90 ---- MODBINS = modules-bltin KNR_OBJ=.o KNROBJ=._foo_ ANSIOBJ=.o ANSI_OBJ=._foo_ .SUFFIXES: ! .SUFFIXES: .c .o ._foo_ .pro .c$(ANSI@U@OBJ): $(COMPILE) -o $@ $< *** Src/Modules/Makefile.in 1996/12/24 03:27:34 1.9 --- Src/Modules/Makefile.in 1996/12/24 05:04:35 *************** *** 55,62 **** INCLUDES = -I../.. -I. -I.. -I$(srcdir) -I$(srcdir)/.. ! COMPILE = $(CC) -c $(INCLUDES) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(DLCFLAGS) ! LINK = $(DLLD) $(LDFLAGS) $(DLLDFLAGS) -o $@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ --- 55,63 ---- INCLUDES = -I../.. -I. -I.. -I$(srcdir) -I$(srcdir)/.. ! COMPILE = $(CC) -c $(INCLUDES) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(D@L@CFLAGS) ! DLCOMPILE = $(CC) -c $(INCLUDES) $(CPPFLAGS) $(DEFS) -DMODULE $(CFLAGS) $(DLCFLAGS) ! DLLINK = $(DLLD) $(LDFLAGS) $(DLLDFLAGS) -o $@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ *************** *** 70,76 **** ANSI_OBJ=._foo_ .SUFFIXES: ! .SUFFIXES: .c .$(DL_EXT) $(ANSI@U@OBJ) $(KNR@U@OBJ) .pro .c$(ANSI@U@OBJ): $(COMPILE) -o $@ $< --- 71,77 ---- ANSI_OBJ=._foo_ .SUFFIXES: ! .SUFFIXES: .c .$(DL_EXT) ..o .._foo_ .o ._foo_ .pro .c$(ANSI@U@OBJ): $(COMPILE) -o $@ $< *************** *** 80,87 **** $(COMPILE) -o $@ $@.c rm -f $@.c ! .o.$(DL_EXT): ! $(LINK) $< .c.pro: $(SED) -n -f $(srcdir)/../makepro.sed $< > $@ --- 81,96 ---- $(COMPILE) -o $@ $@.c rm -f $@.c ! .c.$(ANSI@U@OBJ): ! $(DLCOMPILE) -o $@ $< ! ! .c.$(KNR@U@OBJ): ! ../ansi2knr $< > $@.c ! $(DLCOMPILE) -o $@ $@.c ! rm -f $@.c ! ! ..o.$(DL_EXT): ! $(DLLINK) $< .c.pro: $(SED) -n -f $(srcdir)/../makepro.sed $< > $@ *** Src/Zle/Makefile.in 1996/12/24 03:27:34 1.8 --- Src/Zle/Makefile.in 1996/12/24 05:04:59 *************** *** 55,62 **** INCLUDES = -I../.. -I. -I.. -I$(srcdir) -I$(srcdir)/.. ! COMPILE = $(CC) -c $(INCLUDES) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(DLCFLAGS) ! LINK = $(DLLD) $(LDFLAGS) $(DLLDFLAGS) -o $@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ --- 55,63 ---- INCLUDES = -I../.. -I. -I.. -I$(srcdir) -I$(srcdir)/.. ! COMPILE = $(CC) -c $(INCLUDES) $(CPPFLAGS) $(DEFS) $(CFLAGS) $(D@L@CFLAGS) ! DLCOMPILE = $(CC) -c $(INCLUDES) $(CPPFLAGS) $(DEFS) -DMODULE $(CFLAGS) $(DLCFLAGS) ! DLLINK = $(DLLD) $(LDFLAGS) $(DLLDFLAGS) -o $@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ *************** *** 70,76 **** ANSI_OBJ=._foo_ .SUFFIXES: ! .SUFFIXES: .c .$(DL_EXT) $(ANSI@U@OBJ) $(KNR@U@OBJ) .pro .c$(ANSI@U@OBJ): $(COMPILE) -o $@ $< --- 71,77 ---- ANSI_OBJ=._foo_ .SUFFIXES: ! .SUFFIXES: .c .$(DL_EXT) ..o .._foo_ .o ._foo_ .pro .c$(ANSI@U@OBJ): $(COMPILE) -o $@ $< *************** *** 80,87 **** $(COMPILE) -o $@ $@.c rm -f $@.c ! .o.$(DL_EXT): ! $(LINK) $< .c.pro: $(SED) -n -f $(srcdir)/../makepro.sed $< > $@ --- 81,96 ---- $(COMPILE) -o $@ $@.c rm -f $@.c ! .c.$(ANSI@U@OBJ): ! $(DLCOMPILE) -o $@ $< ! ! .c.$(KNR@U@OBJ): ! ../ansi2knr $< > $@.c ! $(DLCOMPILE) -o $@ $@.c ! rm -f $@.c ! ! ..o.$(DL_EXT): ! $(DLLINK) $< .c.pro: $(SED) -n -f $(srcdir)/../makepro.sed $< > $@ *************** *** 94,101 **** # object files ZLEOBJS = zle_bindings.o zle_hist.o zle_main.o zle_misc.o zle_move.o \ zle_refresh.o zle_tricky.o zle_utils.o zle_vi.o zle_word.o ! OBJS = $(ZLEOBJS) compctl.o deltochar.o HDRS = zle.h # target modules --- 103,114 ---- # object files ZLEOBJS = zle_bindings.o zle_hist.o zle_main.o zle_misc.o zle_move.o \ zle_refresh.o zle_tricky.o zle_utils.o zle_vi.o zle_word.o + ZLEDOBJS = zle_bindings..o zle_hist..o zle_main..o zle_misc..o zle_move..o \ + zle_refresh..o zle_tricky..o zle_utils..o zle_vi..o zle_word..o + OTHEROBJS = compctl.o deltochar.o + OTHERDOBJS = compctl..o deltochar..o ! ALLOBJS = $(ZLEOBJS) $(OTHEROBJS) $(ZLEDOBJS) $(OTHERDOBJS) HDRS = zle.h # target modules *************** *** 109,118 **** modules: proto @$(MAKE) $(MAKEDEFS) $(MODULES) ! zle.so: $(ZLEOBJS) ! $(LINK) $(ZLEOBJS) ! $(OBJS): $(HDRS) proto: $(PROTO) --- 122,131 ---- modules: proto @$(MAKE) $(MAKEDEFS) $(MODULES) ! zle.so: $(ZLEDOBJS) ! $(DLLINK) $(ZLEDOBJS) ! $(ALLOBJS): $(HDRS) proto: $(PROTO) -----BEGIN PGP SIGNATURE----- Version: 2.6.2 iQCVAwUBMr9qNXD/+HJTpU/hAQFmZQP9Gtax8ZE/2RmZLJXBfpGFl3W4lCo7oZFg sWpS4c1DRW/FLC6pheohYrFe1KDu+qJqbs9XEVpXvrOm4Y3WM4rWye3VC5HRNYDA aDylHz/iQ2M5scfKEuEFwCtnjsdHax9T0M/7W7bY5pxsBDtcxHK16rgIgRfXhN1B NSbM6f7yOHs= =7zy5 -----END PGP SIGNATURE-----