1 /*
2 * Copyright (c) 2013-2019, Intel Corporation
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * * Redistributions of source code must retain the above copyright notice,
8 * this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright notice,
10 * this list of conditions and the following disclaimer in the documentation
11 * and/or other materials provided with the distribution.
12 * * Neither the name of Intel Corporation nor the names of its contributors
13 * may be used to endorse or promote products derived from this software
14 * without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #include "intel-pt.h"
30
31
pt_errstr(enum pt_error_code errcode)32 const char *pt_errstr(enum pt_error_code errcode)
33 {
34 switch (errcode) {
35 case pte_ok:
36 return "OK";
37
38 case pte_internal:
39 return "internal error";
40
41 case pte_invalid:
42 return "invalid argument";
43
44 case pte_nosync:
45 return "decoder out of sync";
46
47 case pte_bad_opc:
48 return "unknown opcode";
49
50 case pte_bad_packet:
51 return "unknown packet";
52
53 case pte_bad_context:
54 return "unexpected packet context";
55
56 case pte_eos:
57 return "reached end of trace stream";
58
59 case pte_bad_query:
60 return "trace stream does not match query";
61
62 case pte_nomem:
63 return "out of memory";
64
65 case pte_bad_config:
66 return "bad configuration";
67
68 case pte_noip:
69 return "no ip";
70
71 case pte_ip_suppressed:
72 return "ip has been suppressed";
73
74 case pte_nomap:
75 return "no memory mapped at this address";
76
77 case pte_bad_insn:
78 return "unknown instruction";
79
80 case pte_no_time:
81 return "no timing information";
82
83 case pte_no_cbr:
84 return "no core:bus ratio";
85
86 case pte_bad_image:
87 return "bad image";
88
89 case pte_bad_lock:
90 return "locking error";
91
92 case pte_not_supported:
93 return "not supported";
94
95 case pte_retstack_empty:
96 return "compressed return without call";
97
98 case pte_bad_retcomp:
99 return "bad compressed return";
100
101 case pte_bad_status_update:
102 return "bad status update";
103
104 case pte_no_enable:
105 return "expected tracing enabled event";
106
107 case pte_event_ignored:
108 return "event ignored";
109
110 case pte_overflow:
111 return "overflow";
112
113 case pte_bad_file:
114 return "bad file";
115
116 case pte_bad_cpu:
117 return "unknown cpu";
118 }
119
120 /* Should not reach here. */
121 return "internal error.";
122 }
123