https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67627
Bug ID: 67627 Summary: libatomic parallel build failure Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: other Assignee: unassigned at gcc dot gnu.org Reporter: nsz at gcc dot gnu.org Target Milestone: --- hard to reproduce, but the failure is make[5]: Entering directory `/XX/obj/gcc4/arm-none-linux-gnueabihf/libatomic' .deps/fsub_8_.lo.Ppo:87: *** missing separator. Stop. and the cause is that .deps/fsub_8_.lo.Ppo is a makefile fragment generated by a compilation step that is run concurrently with another make reading this file. some relevant bits from libatomic/Makefile.in: ### begin LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES) toolexeclib_LTLIBRARIES = libatomic.la noinst_LTLIBRARIES = libatomic_convenience.la libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep) libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \ _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \ $(am__append_3) M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo libatomic.la: $(libatomic_la_OBJECTS) $(libatomic_la_DEPENDENCIES) $(EXTRA_libatomic_la_DEPENDENCIES). $(libatomic_la_LINK) -rpath $(toolexeclibdir) $(libatomic_la_OBJECTS) $(libatomic_la_LIBADD) $(LIBS) all-multi: $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) all-am: Makefile $(LTLIBRARIES) all-multi auto-config.h -include $(wildcard $(DEPDIR)/*.Ppo) %_.lo: Makefile $(LTCOMPILE) $(M_DEPS) $(M_SIZE) $(M_IFUNC) -c -o $@ $(M_SRC) ### end when all-am is built, building $(LTLIBRARIES) (the *_.lo targets) can run in parallel with all-multi. the all-multi target rereads the Makefile so reevaluates "-include $(wildcard $(DEPDIR)/*.Ppo)", but those files are generated in a non-atomic way by gcc -MF during the build of *_.lo targets.