Closed arichardson closed 6 years ago
Test case:
// RUN: not --crash %cheri_purecap_cc1 -fsyntax-only -ast-dump -std=c++1z -fdeprecated-macro -fmessage-length 121 -o - %s // REQUIRES: asserts int strncmp_c(__attribute__((cheri_capability)) const char *, __attribute__((cheri_capability)) const char *);
fails with the following assertion:
clang: /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp:490: void selectInterestingSourceRegion(std::string &, std::string &, std::string &, unsigned int, const (anonymous namespace)::SourceColumnMap &): Assertion `FrontColumnsRemoved+ColumnsKept+BackColumnsRemoved > Columns' failed.
Backtrace:
/local/scratch/alr48/cheri/llvm/tools/clang/test/Parser/cheri-attribute-crash.cpp:4:60: warning: use of __capability before the pointer type is deprecated int strncmp_c(__attribute__((cheri_capability)) const char *, __attribute__((cheri_capability)) const char *); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ __capability /local/scratch/alr48/cheri/llvm/tools/clang/test/Parser/cheri-attribute-crash.cpp:4:108: warning: use of __capability before the pointer type is deprecated clang: /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp:490: void selectInterestingSourceRegion(std::string &, std::string &, std::string &, unsigned int, const (anonymous namespace)::SourceColumnMap &): Assertion `FrontColumnsRemoved+ColumnsKept+BackColumnsRemoved > Columns' failed. #0 0x00007fbbb0b3fd29 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /local/scratch/alr48/cheri/llvm/lib/Support/Unix/Signals.inc:398:11 #1 0x00007fbbb0b3fed9 PrintStackTraceSignalHandler(void*) /local/scratch/alr48/cheri/llvm/lib/Support/Unix/Signals.inc:494:1 #2 0x00007fbbb0b3e483 llvm::sys::RunSignalHandlers() /local/scratch/alr48/cheri/llvm/lib/Support/Signals.cpp:0:5 #3 0x00007fbbb0b40234 SignalHandler(int) /local/scratch/alr48/cheri/llvm/lib/Support/Unix/Signals.inc:252:1 #4 0x00007fbbb006a390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390) #5 0x00007fbbadd9a428 gsignal /build/glibc-bfm8X4/glibc-2.23/signal/../sysdeps/unix/sysv/linux/raise.c:54:0 #6 0x00007fbbadd9c02a abort /build/glibc-bfm8X4/glibc-2.23/stdlib/abort.c:91:0 #7 0x00007fbbadd92bd7 __assert_fail_base /build/glibc-bfm8X4/glibc-2.23/assert/assert.c:92:0 #8 0x00007fbbadd92c82 (/lib/x86_64-linux-gnu/libc.so.6+0x2dc82) #9 0x00007fbbaee417d7 selectInterestingSourceRegion(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int, (anonymous namespace)::SourceColumnMap const&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp:494:7 #10 0x00007fbbaee3f3d6 clang::TextDiagnostic::emitSnippetAndCaret(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::SmallVectorImpl<clang::CharSourceRange>&, llvm::ArrayRef<clang::FixItHint>) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/TextDiagnostic.cpp:1237:9 #11 0x00007fbbaee43f38 clang::TextDiagnostic::emitCodeContext(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::SmallVectorImpl<clang::CharSourceRange>&, llvm::ArrayRef<clang::FixItHint>) /local/scratch/alr48/cheri/llvm/tools/clang/include/clang/Frontend/TextDiagnostic.h:91:3 #12 0x00007fbbaedc9e47 clang::DiagnosticRenderer::emitCaret(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::ArrayRef<clang::CharSourceRange>, llvm::ArrayRef<clang::FixItHint>) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/DiagnosticRenderer.cpp:400:3 #13 0x00007fbbaedc9639 clang::DiagnosticRenderer::emitDiagnostic(clang::FullSourceLoc, clang::DiagnosticsEngine::Level, llvm::StringRef, llvm::ArrayRef<clang::CharSourceRange>, llvm::ArrayRef<clang::FixItHint>, llvm::PointerUnion<clang::Diagnostic const*, clang::StoredDiagnostic const*>) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/DiagnosticRenderer.cpp:122:5 #14 0x00007fbbaee47739 clang::TextDiagnosticPrinter::HandleDiagnostic(clang::DiagnosticsEngine::Level, clang::Diagnostic const&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp:157:3 #15 0x00007fbbafe9d54c clang::DiagnosticIDs::EmitDiag(clang::DiagnosticsEngine&, clang::DiagnosticIDs::Level) const /local/scratch/alr48/cheri/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp:708:7 #16 0x00007fbbafe9d3da clang::DiagnosticIDs::ProcessDiag(clang::DiagnosticsEngine&) const /local/scratch/alr48/cheri/llvm/tools/clang/lib/Basic/DiagnosticIDs.cpp:700:3 #17 0x00007fbbafe90b3f clang::DiagnosticsEngine::ProcessDiag() /local/scratch/alr48/cheri/llvm/tools/clang/include/clang/Basic/Diagnostic.h:879:5 #18 0x00007fbbafe8c241 clang::DiagnosticsEngine::EmitCurrentDiagnostic(bool) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Basic/Diagnostic.cpp:419:13 #19 0x00007fbbaa581df9 clang::Sema::EmitCurrentDiagnostic(unsigned int) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Sema/Sema.cpp:1275:7 #20 0x00007fbbaa49020b clang::Sema::SemaDiagnosticBuilder::~SemaDiagnosticBuilder() /local/scratch/alr48/cheri/llvm/tools/clang/include/clang/Sema/Sema.h:1257:5 #21 0x00007fbbab1632c2 HandleCHERICapabilityAttr(clang::QualType&, (anonymous namespace)::TypeProcessingState&, TypeAttrLocation, clang::AttributeList&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Sema/SemaType.cpp:7141:25 #22 0x00007fbbab15eeb4 processTypeAttrs((anonymous namespace)::TypeProcessingState&, clang::QualType&, TypeAttrLocation, clang::AttributeList*) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Sema/SemaType.cpp:7460:7 #23 0x00007fbbab153dc3 GetFullTypeForDeclarator((anonymous namespace)::TypeProcessingState&, clang::QualType, clang::TypeSourceInfo*) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Sema/SemaType.cpp:4127:59 #24 0x00007fbbab14dbb6 clang::Sema::GetTypeForDeclarator(clang::Declarator&, clang::Scope*) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Sema/SemaType.cpp:4977:10 #25 0x00007fbbaa6ff25a clang::Sema::ActOnParamDeclarator(clang::Scope*, clang::Declarator&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Sema/SemaDecl.cpp:11820:19 #26 0x00007fbbab269f1d clang::Parser::ParseParameterDeclarationClause(clang::Declarator&, clang::ParsedAttributes&, llvm::SmallVectorImpl<clang::DeclaratorChunk::ParamInfo>&, clang::SourceLocation&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseDecl.cpp:6365:29 #27 0x00007fbbab26805a clang::Parser::ParseFunctionDeclarator(clang::Declarator&, clang::ParsedAttributes&, clang::BalancedDelimiterTracker&, bool, bool) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseDecl.cpp:6014:7 #28 0x00007fbbab2665db clang::Parser::ParseDirectDeclarator(clang::Declarator&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseDecl.cpp:5753:7 #29 0x00007fbbab26454d clang::Parser::ParseDeclaratorInternal(clang::Declarator&, void (clang::Parser::*)(clang::Declarator&)) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseDecl.cpp:5320:5 #30 0x00007fbbab2491e8 clang::Parser::ParseDeclarator(clang::Declarator&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseDecl.cpp:5191:1 #31 0x00007fbbab25b00c clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, unsigned int, clang::SourceLocation*, clang::Parser::ForRangeInit*) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseDecl.cpp:1904:3 #32 0x00007fbbab33f441 clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/Parser.cpp:979:10 #33 0x00007fbbab33eb80 clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*, clang::AccessSpecifier) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/Parser.cpp:995:12 #34 0x00007fbbab33e477 clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&, clang::ParsingDeclSpec*) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/Parser.cpp:845:12 #35 0x00007fbbab33d028 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/Parser.cpp:613:12 #36 0x00007fbbab33cade clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/Parser.cpp:535:8 #37 0x00007fbbab239322 clang::ParseAST(clang::Sema&, bool, bool) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Parse/ParseAST.cpp:146:13 #38 0x00007fbbaedd620c clang::ASTFrontendAction::ExecuteAction() /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:1000:1 #39 0x00007fbbaedd5c80 clang::FrontendAction::Execute() /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/FrontendAction.cpp:901:7 #40 0x00007fbbaed4e3ca clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /local/scratch/alr48/cheri/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp:992:7 #41 0x00007fbbae9fe846 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /local/scratch/alr48/cheri/llvm/tools/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:252:8 #42 0x000000000023b609 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /local/scratch/alr48/cheri/llvm/tools/clang/tools/driver/cc1_main.cpp:221:11 #43 0x000000000022e519 ExecuteCC1Tool(llvm::ArrayRef<char const*>, llvm::StringRef) /local/scratch/alr48/cheri/llvm/tools/clang/tools/driver/driver.cpp:309:5 #44 0x000000000022d21d main /local/scratch/alr48/cheri/llvm/tools/clang/tools/driver/driver.cpp:388:5 #45 0x00007fbbadd85830 __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:325:0 #46 0x000000000022c029 _start (/local/scratch/alr48/cheri/llvm/cmake-build-debug/bin/clang+0x22c029) Stack dump:
Test case:
fails with the following assertion:
Backtrace: