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]"

Reply via email to