Home | History | Annotate | Line # | Download | only in Native
      1 #include "llvm/DebugInfo/PDB/Native/RawError.h"
      2 #include "llvm/Support/ErrorHandling.h"
      3 #include "llvm/Support/ManagedStatic.h"
      4 
      5 using namespace llvm;
      6 using namespace llvm::pdb;
      7 
      8 namespace {
      9 // FIXME: This class is only here to support the transition to llvm::Error. It
     10 // will be removed once this transition is complete. Clients should prefer to
     11 // deal with the Error value directly, rather than converting to error_code.
     12 class RawErrorCategory : public std::error_category {
     13 public:
     14   const char *name() const noexcept override { return "llvm.pdb.raw"; }
     15   std::string message(int Condition) const override {
     16     switch (static_cast<raw_error_code>(Condition)) {
     17     case raw_error_code::unspecified:
     18       return "An unknown error has occurred.";
     19     case raw_error_code::feature_unsupported:
     20       return "The feature is unsupported by the implementation.";
     21     case raw_error_code::invalid_format:
     22       return "The record is in an unexpected format.";
     23     case raw_error_code::corrupt_file:
     24       return "The PDB file is corrupt.";
     25     case raw_error_code::insufficient_buffer:
     26       return "The buffer is not large enough to read the requested number of "
     27              "bytes.";
     28     case raw_error_code::no_stream:
     29       return "The specified stream could not be loaded.";
     30     case raw_error_code::index_out_of_bounds:
     31       return "The specified item does not exist in the array.";
     32     case raw_error_code::invalid_block_address:
     33       return "The specified block address is not valid.";
     34     case raw_error_code::duplicate_entry:
     35       return "The entry already exists.";
     36     case raw_error_code::no_entry:
     37       return "The entry does not exist.";
     38     case raw_error_code::not_writable:
     39       return "The PDB does not support writing.";
     40     case raw_error_code::stream_too_long:
     41       return "The stream was longer than expected.";
     42     case raw_error_code::invalid_tpi_hash:
     43       return "The Type record has an invalid hash value.";
     44     }
     45     llvm_unreachable("Unrecognized raw_error_code");
     46   }
     47 };
     48 } // namespace
     49 
     50 static llvm::ManagedStatic<RawErrorCategory> RawCategory;
     51 const std::error_category &llvm::pdb::RawErrCategory() { return *RawCategory; }
     52 
     53 char RawError::ID;
     54