llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.9k stars 11.51k forks source link

Compiling in 32 bits and sanitize cause "out of bounds" in compilation regcomp.c #38722

Open llvmbot opened 5 years ago

llvmbot commented 5 years ago
Bugzilla Link 39374
Version 7.0
OS Linux
Reporter LLVM Bugzilla Contributor
CC @efriedma-quic

Extended Description

Hi, i'm compiling llvm from github with some sanitizer obtions (in c++, c, and ld), and if we set LLVM_BUILD_32_BITS=ON the compilation phase fails.

I'm using Gentoo 64, GCC-7.3.0

Sanitizer obtions: -fsanitize=undefined -fsanitize=shift -fsanitize=shift-exponent -fsanitize=shift-base -fsanitize=integer-divide-by-zero -fsanitize=unreachable -fsanitize=vla-bound -fsanitize=null -fsanitize=return -fsanitize=signed-integer-overflow -fsanitize=bounds -fsanitize=bounds-strict -fsanitize=object-size -fsanitize=float-divide-by-zero -fsanitize=float-cast-overflow -fsanitize=nonnull-attribute -fsanitize=returns-nonnull-attribute -fsanitize=enum -fsanitize=vptr

Log:

[ 48%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/MIRPrinter.cpp.o [ 48%] Building CXX object lib/Transforms/Scalar/CMakeFiles/LLVMScalarOpts.dir/SpeculateAroundPHIs.cpp.o /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 48%] Building AArch64GenGlobalISel.inc... [ 48%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/LoopPass.cpp.o [ 48%] Building ARMGenMCCodeEmitter.inc... ... [ 48%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/MemoryDependenceAnalysis.cpp.o [ 48%] Linking CXX static library ../../libLLVMScalarOpts.a /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 48%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ParallelCG.cpp.o [ 48%] Built target LLVMScalarOpts [ 48%] Building ARMGenSystemRegister.inc... /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 48%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/PeepholeOptimizer.cpp.o [ 48%] Updating ARMGenAsmMatcher.inc... [ 48%] Updating ARMGenAsmWriter.inc... ... [ 50%] Updating LanaiGenSubtargetInfo.inc... [ 50%] Built target LanaiCommonTableGen /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 50%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/MustExecute.cpp.o [ 50%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/ProcessImplicitDefs.cpp.o ... [ 50%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocBase.cpp.o [ 50%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/PostDominators.cpp.o /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 50%] Building AMDGPUGenIntrinsicImpl.inc... [ 50%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegAllocBasic.cpp.o ... [ 50%] Building AMDGPUGenMCPseudoLowering.inc... [ 50%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/RegionPrinter.cpp.o /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 50%] Building HexagonGenMCCodeEmitter.inc... [ 50%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/ScalarEvolution.cpp.o ... [ 54%] Building R600GenAsmWriter.inc... [ 54%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/Trace.cpp.o /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 54%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/TypeBasedAliasAnalysis.cpp.o [ 54%] Building R600GenCallingConv.inc... ... warning: SubRegIndex SystemZ::subreg_h64 and SystemZ::subreg_h32 compose ambiguously as SystemZ::subreg_hh32 or SystemZ::subreg_h32 [ 54%] Building SystemZGenSubtargetInfo.inc... /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 54%] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/RegUsageInfoCollector.cpp.o [ 54%] Building PPCGenMCCodeEmitter.inc... ... [ 54%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/ValueLattice.cpp.o [ 54%] Building R600GenMCCodeEmitter.inc... /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 54%] Building CXX object lib/Analysis/CMakeFiles/LLVMAnalysis.dir/ValueLatticeUtils.cpp.o [ 54%] Building R600GenRegisterInfo.inc... ... [ 55%] Updating R600GenSubtargetInfo.inc... [ 55%] Built target AMDGPUCommonTableGen /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 55%] Updating PPCGenAsmMatcher.inc... [ 55%] Updating PPCGenAsmWriter.inc... ... [ 67%] Updating X86GenRegisterBank.inc... [ 67%] Updating X86GenRegisterInfo.inc... /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 67%] Updating X86GenSubtargetInfo.inc... /home/pipe/Documentos/git/llvm/lib/Support/regcomp.c:351:30: runtime error: index 128 out of bounds for type 'cat_t [1]' [ 67%] Updating X86GenInstrInfo.inc... [ 67%] Built target X86CommonTableGen

more and more and more....

Bye.

efriedma-quic commented 5 years ago

At first glance I don't think this indicates an actual bug; the regular expression library is taken from OpenBSD, and flexible array members were often written using "[1]" in old code. But patch welcome, I guess.

In general I would expect that -fsanitize=bounds-strict will find few, if any, real bugs.