This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug bootstrap/18532] New: libgcc.mk isn't parallel build safe for multilib


With multilib, libgcc.mk has

crtendS.o: stmp-dirs
        $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
          AR_FOR_TARGET="$(AR_FOR_TARGET)" \
          AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
          AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \
          AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
          CC="$(CC)" CFLAGS="$(CFLAGS)" \
          BUILD_PREFIX="$(BUILD_PREFIX)" \
          BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
          LANGUAGES="$(LANGUAGES)" \
          LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) "  \
          MULTILIB_CFLAGS="" T= crtendS.o
32/crtendS.o: stmp-dirs
        $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
          AR_FOR_TARGET="$(AR_FOR_TARGET)" \
          AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
          AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \
          AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
          CC="$(CC)" CFLAGS="$(CFLAGS)" \
          BUILD_PREFIX="$(BUILD_PREFIX)" \
          BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
          LANGUAGES="$(LANGUAGES)" \
          LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) -m32 "  \
          MULTILIB_CFLAGS=" -m32" T=32/ 32/crtendS.o
crtbeginT.o: stmp-dirs
        $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
          AR_FOR_TARGET="$(AR_FOR_TARGET)" \
          AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
          AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \
          AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
          CC="$(CC)" CFLAGS="$(CFLAGS)" \
          BUILD_PREFIX="$(BUILD_PREFIX)" \
          BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
          LANGUAGES="$(LANGUAGES)" \
          LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) "  \
          MULTILIB_CFLAGS="" T= crtbeginT.o
32/crtbeginT.o: stmp-dirs
        $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
          AR_FOR_TARGET="$(AR_FOR_TARGET)" \
          AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
          AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \
          AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
          CC="$(CC)" CFLAGS="$(CFLAGS)" \
          BUILD_PREFIX="$(BUILD_PREFIX)" \
          BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
          LANGUAGES="$(LANGUAGES)" \
          LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) -m32 "  \
          MULTILIB_CFLAGS=" -m32" T=32/ 32/crtbeginT.o
                                                                               
                                                                               
       
all: stmp-dirs ./libgcc.a ./libgcov.a ./libgcc_eh.a ./libgcc_s.so 32/libgcc.a
32/libgcov.a 32/libgcc_eh.a 32/libgcc_s_32.so crtbegin.o 32/crtbegin.o crtend.o
32/crtend.o crtbeginS.o 32/crtbeginS.o crtendS.o 32/crtendS.o crtbeginT.o
32/crtbeginT.o

When we do "make -j N" on a SMP machine, we may get

make GCC_FOR_TARGET=" ./xgcc -B./ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/
-isystem /usr/gcc-4.0/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/sys-include
-L/export/build/gnu/gcc/build-x86_64-linux/gcc/../ld" \
  AR_FOR_TARGET="ar" \
  AR_CREATE_FOR_TARGET="ar  rc" \
  AR_EXTRACT_FOR_TARGET="ar  x" \
  AR_FLAGS_FOR_TARGET="" \
  CC="stage1/xgcc -Bstage1/ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/"
CFLAGS="-g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition -Werror  " \
  BUILD_PREFIX="" \
  BUILD_PREFIX_1="loser-" \
  LANGUAGES="c gcov gcov-dump c++ java objc" \
  LIBGCC2_CFLAGS="-O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -g
-DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -m32 "  \
  MULTILIB_CFLAGS=" -m32" T=32/ 32/crtbegin.o
make GCC_FOR_TARGET=" ./xgcc -B./ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/
-isystem /usr/gcc-4.0/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/sys-include
-L/export/build/gnu/gcc/build-x86_64-linux/gcc/../ld" \
  AR_FOR_TARGET="ar" \
  AR_CREATE_FOR_TARGET="ar  rc" \
  AR_EXTRACT_FOR_TARGET="ar  x" \
  AR_FLAGS_FOR_TARGET="" \
  CC="stage1/xgcc -Bstage1/ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/"
CFLAGS="-g -O2 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes
-pedantic -Wno-long-long -Wno-variadic-macros -Wold-style-definition -Werror  " \
  BUILD_PREFIX="" \
  BUILD_PREFIX_1="loser-" \
  LANGUAGES="c gcov gcov-dump c++ java objc" \
  LIBGCC2_CFLAGS="-O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -g
-DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -m32 "  \
  MULTILIB_CFLAGS=" -m32" T=32/ 32/crtend.o
make[6]: Entering directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
make[6]: Entering directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
echo | ./xgcc -B./ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/ -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/sys-include
-L/export/build/gnu/gcc/build-x86_64-linux/gcc/../ld -E -dM - | \
  sed -n 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p ; \
        s/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
  sort -u > tmp-macro_list
echo | ./xgcc -B./ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/ -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/sys-include
-L/export/build/gnu/gcc/build-x86_64-linux/gcc/../ld -E -dM - | \
  sed -n 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p ; \
        s/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \
  sort -u > tmp-macro_list
/bin/sh /net/gnu/export/gnu/src/gcc/gcc/gcc/../move-if-change tmp-macro_list
macro_list
/bin/sh /net/gnu/export/gnu/src/gcc/gcc/gcc/../move-if-change tmp-macro_list
macro_list
macro_list is unchanged
./xgcc -B./ -B/usr/gcc-4.0/x86_64-unknown-linux-gnu/bin/ -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/include -isystem
/usr/gcc-4.0/x86_64-unknown-linux-gnu/sys-include
-L/export/build/gnu/gcc/build-x86_64-linux/gcc/../ld -O2 -DIN_GCC    -W -Wall
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition
 -isystem ./include  -I. -I32 -I/net/gnu/export/gnu/src/gcc/gcc/gcc
-I/net/gnu/export/gnu/src/gcc/gcc/gcc/32
-I/net/gnu/export/gnu/src/gcc/gcc/gcc/../include
-I/net/gnu/export/gnu/src/gcc/gcc/gcc/../libcpp/include  -m32 -g0
-finhibit-size-directive -fno-inline-functions -fno-exceptions
-fno-zero-initialized-in-bss -fno-unit-at-a-time -fno-omit-frame-pointer
-fno-asynchronous-unwind-tables \
   -c /net/gnu/export/gnu/src/gcc/gcc/gcc/crtstuff.c -DCRT_END \
  -o 32/crtend.o
cmp: tmp-macro_list: No such file or directory
mv: cannot stat `tmp-macro_list': No such file or directory
make[6]: *** [macro_list] Error 1
make[6]: Leaving directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
make[5]: *** [32/crtbegin.o] Error 2
make[5]: *** Waiting for unfinished jobs....
make[6]: Leaving directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
make[5]: Leaving directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
make[4]: *** [stmp-multilib] Error 2
make[4]: Leaving directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
make[3]: *** [stage2_build] Error 2
make[3]: Leaving directory `/export/build/gnu/gcc/build-x86_64-linux/gcc'
make[2]: *** [bootstrap] Error 2

Basically, we can't have more than one "make xxx" if xxx have common
dependencies.

-- 
           Summary: libgcc.mk isn't parallel build safe for multilib
           Product: gcc
           Version: 3.4.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: bootstrap
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: hjl at lucon dot org
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18532


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]