On Mon, Nov 08, 2010 at 02:48:11PM +0100, Emanuel Haupt wrote: > Warren Block <[email protected]> wrote: > > About a month ago, ccache began to pause in buildworld. The build > > doesn't halt or quit, it stays running but not doing anything: > > [snip] > > > > This is on 8-stable as of today, i386. The -march=prescott option > > comes from CPUTYPE?=core2 in make.conf, and removing that setting > > doesn't fix the problem. > > > > buildworld without ccache works fine, just takes more than twice as > > long. > > > > The kernel target works fine with or without ccache. > > > > Any ideas? > > I've just updated the ccache port to 3.1.1. > > Excerpt from the ChangeLog: > > * ccache now falls back to preprocessor mode when a non-regular include > file > (device, socket, etc) has been detected so that potential hanging due to > blocking reads is avoided. > * CRC errors are now detected when decompressing compressed files in the > cache. > * Fixed potential object file corruption race on NFS. > * Minor documentation corrections. > * Fixed configure detection of ar. > > After updating and zeroing the cache files the a build of RELENG_8_1 fails > with: > > CC='/usr/local/libexec/ccache/world-cc' mkdep -f .depend -a > -I/usr/src/lib/csu/i386-elf/../common > -I/usr/src/lib/csu/i386-elf/../../libc/include > /usr/src/lib/csu/i386-elf/crti.S /usr/src/lib/csu/i386-elf/crtn.S > /usr/local/libexec/ccache/world-cc -O2 -pipe > -I/usr/src/lib/csu/i386-elf/../common > -I/usr/src/lib/csu/i386-elf/../../libc/include -std=gnu99 -Wsystem-headers > -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual > -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter > -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls > -Wno-pointer-sign -c /usr/src/lib/csu/i386-elf/crti.S > /usr/local/libexec/ccache/world-cc -O2 -pipe > -I/usr/src/lib/csu/i386-elf/../common > -I/usr/src/lib/csu/i386-elf/../../libc/include -std=gnu99 -Wsystem-headers > -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual > -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter > -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls > -Wno-pointer-sign -c /usr/src/lib/csu/i386-elf/crtn.S > /usr/local/libexec/ccache/world-cc -O2 -pipe > -I/usr/src/lib/csu/i386-elf/../common > -I/usr/src/lib/csu/i386-elf/../../libc/include -std=gnu99 -Wsystem-headers > -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual > -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter > -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls > -Wno-pointer-sign -DGCRT -c -o gcrt1_c.o /usr/src/lib/csu/i386-elf/crt1_c.c > /usr/local/libexec/ccache/world-cc -O2 -pipe > -I/usr/src/lib/csu/i386-elf/../common > -I/usr/src/lib/csu/i386-elf/../../libc/include -std=gnu99 -Wsystem-headers > -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes > -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual > -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wunused-parameter > -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls > -Wno-pointer-sign -c /usr/src/lib/csu/i386-elf/crt1_s.S > /usr/src/lib/csu/i386-elf/crt1_s.S: Assembler messages: > /usr/src/lib/csu/i386-elf/crt1_s.S:34: Error: suffix or operands invalid for > `push' > /usr/src/lib/csu/i386-elf/crt1_s.S:37: Error: `8(%ebp)' is not a valid 64 bit > base/index expression > /usr/src/lib/csu/i386-elf/crt1_s.S:38: Error: suffix or operands invalid for > `push' > /usr/src/lib/csu/i386-elf/crt1_s.S:39: Error: `4(%ebp)' is not a valid 64 bit > base/index expression > /usr/src/lib/csu/i386-elf/crt1_s.S:40: Error: suffix or operands invalid for > `push' > *** Error code 1 > > Stop in /usr/src/lib/csu/i386-elf. > *** Error code 1 > > Stop in /usr/src. > *** Error code 1 > > Stop in /usr/src. > *** Error code 1 > > Stop in /usr/src. > *** Error code 1 > > Stop in /usr/src. > Just FYI, you would see exact the same problem if you try to compile i386 world on amd64-CURRENT with clang: ... /src/lib/csu/i386-elf/crt1_s.S: Assembler messages: /src/lib/csu/i386-elf/crt1_s.S:34: Error: suffix or operands invalid for `push' /src/lib/csu/i386-elf/crt1_s.S:37: Error: `8(%ebp)' is not a valid 64 bit base/index expression /src/lib/csu/i386-elf/crt1_s.S:38: Error: suffix or operands invalid for `push' /src/lib/csu/i386-elf/crt1_s.S:39: Error: `4(%ebp)' is not a valid 64 bit base/index expression /src/lib/csu/i386-elf/crt1_s.S:40: Error: suffix or operands invalid for `push' clang: error: assembler command failed with exit code 1 (use -v to see invocation) *** Error code 1 ...
As far as I understand this, there is no clang cross-compiler support at the moment. So compiler generates (somehow) i386 assembler code which amd64 assembler does not like. Looks like something similar happens here too... HTH, Alexey. _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[email protected]"

