Line data Source code
1 : //===- CodeViewError.cpp - Error extensions for CodeView --------*- C++ -*-===//
2 : //
3 : // The LLVM Compiler Infrastructure
4 : //
5 : // This file is distributed under the University of Illinois Open Source
6 : // License. See LICENSE.TXT for details.
7 : //
8 : //===----------------------------------------------------------------------===//
9 :
10 : #include "llvm/DebugInfo/CodeView/CodeViewError.h"
11 : #include "llvm/Support/ErrorHandling.h"
12 : #include "llvm/Support/ManagedStatic.h"
13 :
14 : using namespace llvm;
15 : using namespace llvm::codeview;
16 :
17 : // FIXME: This class is only here to support the transition to llvm::Error. It
18 : // will be removed once this transition is complete. Clients should prefer to
19 : // deal with the Error value directly, rather than converting to error_code.
20 133 : class CodeViewErrorCategory : public std::error_category {
21 : public:
22 0 : const char *name() const noexcept override { return "llvm.codeview"; }
23 2 : std::string message(int Condition) const override {
24 2 : switch (static_cast<cv_error_code>(Condition)) {
25 : case cv_error_code::unspecified:
26 0 : return "An unknown CodeView error has occurred.";
27 : case cv_error_code::insufficient_buffer:
28 : return "The buffer is not large enough to read the requested number of "
29 0 : "bytes.";
30 : case cv_error_code::corrupt_record:
31 2 : return "The CodeView record is corrupted.";
32 : case cv_error_code::no_records:
33 0 : return "There are no records.";
34 : case cv_error_code::operation_unsupported:
35 0 : return "The requested operation is not supported.";
36 : case cv_error_code::unknown_member_record:
37 0 : return "The member record is of an unknown type.";
38 : }
39 0 : llvm_unreachable("Unrecognized cv_error_code");
40 : }
41 : };
42 :
43 : static llvm::ManagedStatic<CodeViewErrorCategory> CodeViewErrCategory;
44 161 : const std::error_category &llvm::codeview::CVErrorCategory() { return *CodeViewErrCategory; }
45 :
46 : char CodeViewError::ID;
|