[LLVMdev] clang build (Debug+Asserts) fails with Cygwin and Mingw (ASTContext.o: File too big)

Liviu Gheorghisan livghe at gmx.com
Fri May 2 13:11:29 PDT 2014


Hello,

After switching from a Linux development host to Windows7 with Cygwin, I 
notice the following problem when building clang (trunk, HEAD):
(also happens with Mingw)

...

llvm[4]: Compiling ParseInit.cpp for Debug+Asserts build
as: 
/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST/Debug+Asserts/ASTContext.o: 
too many sections (33066)
/tmp/ccmtDH7w.s: Assembler messages:
/tmp/ccmtDH7w.s: Fatal error: can't write 
/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST/Debug+Asserts/ASTContext.o: 
File too big
as: 
/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST/Debug+Asserts/ASTContext.o: 
too many sections (33066)
/tmp/ccmtDH7w.s: Fatal error: can't close 
/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST/Debug+Asserts/ASTContext.o: 
File too big
/cygdrive/d/Projects/Cpp/llvm/Makefile.rules:1509: recipe for target 
'/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST/Debug+Asserts/ASTContext.o' 
failed
make[4]: *** 
[/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST/Debug+Asserts/ASTContext.o] 
Error 1
make[4]: Leaving directory 
'/cygdrive/d/Projects/Cpp/llvm/cfgCygwin/tools/clang/lib/AST'
/cygdrive/d/Projects/Cpp/llvm/Makefile.rules:936: recipe for target 
'AST/.makeall' failed
make[3]: *** [AST/.makeall] Error 2

...


The reason for this seems to be that the COFF object format in Windows 
only supports a maximum of 2^15 sections (32768) for obj files.

To work around this issue, Microsoft's compiler cl has a flag called 
/bigobj that allocates 32 bits in order to store the number of sections 
(instead of 16 bits, as this standard specifies: 
http://msdn.microsoft.com/en-us/library/gg463119.aspx )

Also check this for /bigobj:
http://msdn.microsoft.com/en-us/library/ms173499.aspx

Anybody else having this problem with Mingw/Cygwin? If yes, how did you 
overcome it?

My Cygwin version is this:
$ uname -a
CYGWIN_NT-6.1 livghe-i5 1.7.29(0.272/5/3) 2014-04-07 13:46 x86_64 Cygwin

The only option I currently see is to split the mammoth cpp file 
(ASTContext.cpp)  in 2 parts, or to get rid of the debug info (not desired).


-- 
Best Regards,
-Liviu



More information about the llvm-dev mailing list