aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/NaCl/PNaClABIVerifyModule.cpp
AgeCommit message (Collapse)Author
2013-02-06Store bitcode verifier errors rather than dumping to stderrDerek Schuff
This allows properly implementing the analysis pass print() method, and in the future will allow the error message to be sent somewhere useful R=jvoung@chromium.org,eliben@chromium.org,mseaborn@chromium.org BUG= https://code.google.com/p/nativeclient/issues/detail?id=2309 Review URL: https://codereview.chromium.org/12220028
2013-01-30Merge commit 'a662a9862501fc86904e90054f7c1519101d9126'Derek Schuff
Conflicts: include/llvm/CodeGen/IntrinsicLowering.h include/llvm/MC/MCAssembler.h include/llvm/MC/MCObjectStreamer.h lib/LLVMBuild.txt lib/Linker/LinkArchives.cpp lib/MC/MCAssembler.cpp lib/MC/MCELFStreamer.cpp lib/MC/MCParser/AsmParser.cpp lib/MC/MCPureStreamer.cpp lib/MC/WinCOFFStreamer.cpp lib/Makefile lib/Support/Unix/Memory.inc lib/Support/Unix/Process.inc lib/Support/Unix/Program.inc lib/Target/ARM/ARM.h lib/Target/ARM/ARMFastISel.cpp lib/Target/ARM/ARMISelLowering.cpp lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp lib/Target/Mips/MipsInstrFPU.td lib/Target/X86/CMakeLists.txt lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86TargetMachine.cpp lib/Target/X86/X86TargetObjectFile.cpp lib/Transforms/InstCombine/InstCombineCalls.cpp test/CodeGen/X86/fast-isel-x86-64.ll tools/llc/llc.cpp tools/lto/LTOModule.cpp utils/TableGen/EDEmitter.cpp
2013-01-25ABI verifier: Verify types of global variables and initializers.Derek Schuff
Loosely based on lib/VMCore/TypeFinder.cpp but I can't use that directly because it's not streaming-friendly. constexprs in initializers are also supported. R=jvoung@chromium.org,eliben@chromium.org,mseaborn@chromium.org BUG= https://code.google.com/p/nativeclient/issues/detail?id=2196 TEST=llvm regression Review URL: https://codereview.chromium.org/12038079
2013-01-18Move ABI verifier pass declaration to lib/Analysis and add testsDerek Schuff
This fixes the move of the verifier passes from lib/Transforms to lib/Analysis, and adds tests of the current verifier checks. No new functionality. R=jvoung@chromium.org,eliben@chromium.org,mseaborn@chromium.org BUG= https://code.google.com/p/nativeclient/issues/detail?id=2196 Review URL: https://codereview.chromium.org/12017019
2013-01-17Skeleton for pass-based bitcode ABI verifierDerek Schuff
This is the skeleton for a verifier for the portion of the PNaCl bitcode ABI that can be verified after the bitcode has been read into a Module object. There is a ModulePass for module-level rules (e.g. GV linkage types) and a FunctionPass for rules that apply to function bodies (e.g. legal instructions). They are separated this way to keep the verifier streaming-friendly. For now, the passes are registered but not hooked up, so they can only be run manually via opt. There are 2 bits of actual functionality, just so each pass has something to do: The ModulePass checks the linkage types of GVs, and the FunctionPass checks instruction opcodes. For now only the terminator instructions are checked, but the idea is to add the rest of the allowed instructions to the whitelist, and possibly call operand checks from the switch statement as well. For now we just print messagees to stderr, but we will probably want a better way to plumb the errors in the browser in the future. R=jvoung@chromium.org,sehr@chromium.org BUG= https://code.google.com/p/nativeclient/issues/detail?id=2196 Review URL: https://codereview.chromium.org/11986002