gdb: add target_ops::supports_displaced_step
[deliverable/binutils-gdb.git] / sim / ppc / debug.h
1 /* This file is part of the program psim.
2
3 Copyright (C) 1994-1997, Andrew Cagney <cagney@highland.com.au>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, see <http://www.gnu.org/licenses/>.
17
18 */
19
20
21 #ifndef _DEBUG_H_
22 #define _DEBUG_H_
23
24 #include "filter_filename.h"
25
26 typedef enum {
27 trace_invalid,
28 trace_tbd,
29 /**/
30 trace_gdb,
31 trace_os_emul,
32 /**/
33 trace_events,
34 trace_device_tree,
35 trace_devices,
36 trace_binary_device,
37 trace_com_device,
38 trace_console_device,
39 trace_core_device,
40 trace_disk_device,
41 trace_eeprom_device,
42 trace_file_device,
43 trace_glue_device,
44 trace_halt_device,
45 trace_htab_device,
46 trace_icu_device,
47 trace_ide_device,
48 trace_memory_device,
49 trace_opic_device,
50 trace_pal_device,
51 trace_pass_device,
52 trace_phb_device,
53 trace_sem_device,
54 trace_shm_device,
55 trace_stack_device,
56 trace_register_device,
57 trace_vm_device,
58 /**/
59 trace_disklabel_package,
60 /**/
61 trace_semantics,
62 trace_idecode,
63 trace_alu,
64 trace_load_store,
65 trace_model,
66 /**/
67 trace_vm,
68 trace_core,
69 trace_interrupts,
70 trace_psim,
71 trace_device_init,
72 trace_cpu,
73 trace_breakpoint,
74 trace_opts,
75 trace_print_info,
76 trace_print_device_tree,
77 trace_dump_device_tree,
78 nr_trace_options
79 } trace_options;
80
81
82
83 extern int ppc_trace[nr_trace_options];
84
85 /* simple */
86 #define TRACE(OBJECT, ARGS) \
87 do { \
88 if (WITH_TRACE) { \
89 if (ppc_trace[OBJECT]) { \
90 sim_io_printf_filtered("%s:%d: ", filter_filename(__FILE__), __LINE__); \
91 sim_io_printf_filtered ARGS; \
92 } \
93 } \
94 } while (0)
95
96 /* issue */
97 #define ITRACE(OBJECT, ARGS) \
98 do { \
99 if (WITH_TRACE) { \
100 if (ppc_trace[OBJECT]) { \
101 sim_io_printf_filtered("%s:%d:0x%08lx:%s ", itable[MY_INDEX].file, itable[MY_INDEX].line_nr, (long)cia, itable[MY_INDEX].name); \
102 sim_io_printf_filtered ARGS; \
103 } \
104 } \
105 } while (0)
106
107 /* device */
108 #define DTRACE(OBJECT, ARGS) \
109 do { \
110 if (WITH_TRACE) { \
111 int trace_device = device_trace(me); \
112 if (ppc_trace[trace_devices] \
113 || ppc_trace[trace_##OBJECT##_device] \
114 || trace_device) { \
115 sim_io_printf_filtered("%s:%d:%s:%s%s ", \
116 filter_filename(__FILE__), __LINE__, #OBJECT, \
117 trace_device ? device_path(me) : "", \
118 trace_device ? ":" : ""); \
119 sim_io_printf_filtered ARGS; \
120 } \
121 } \
122 } while (0)
123
124 /* device instance */
125 #define DITRACE(OBJECT, ARGS) \
126 do { \
127 if (WITH_TRACE) { \
128 device *me = device_instance_device(instance); \
129 int trace_device = device_trace(me); \
130 if (ppc_trace[trace_devices] \
131 || ppc_trace[trace_##OBJECT##_device] \
132 || trace_device) { \
133 sim_io_printf_filtered("%s:%d:%s:%s%s ", \
134 filter_filename(__FILE__), __LINE__, #OBJECT, \
135 trace_device ? device_path(me) : "", \
136 trace_device ? ":" : ""); \
137 sim_io_printf_filtered ARGS; \
138 } \
139 } \
140 } while (0)
141
142 /* package */
143 #define PTRACE(OBJECT, ARGS) \
144 do { \
145 if (WITH_TRACE) { \
146 if (ppc_trace[trace_##OBJECT##_package]) { \
147 sim_io_printf_filtered("%s:%d:%s: ", filter_filename(__FILE__), __LINE__, #OBJECT); \
148 sim_io_printf_filtered ARGS; \
149 } \
150 } \
151 } while (0)
152
153
154 #define ASSERT(EXPRESSION) \
155 do { \
156 if (WITH_ASSERT) { \
157 if (!(EXPRESSION)) { \
158 error("%s:%d: assertion failed - %s\n", \
159 filter_filename(__FILE__), __LINE__, #EXPRESSION); \
160 } \
161 } \
162 } while (0)
163
164 /* Parse OPTION updating the trace array */
165 extern void
166 trace_option(const char *option, int setting);
167
168 /* Output the list of trace options */
169 extern void trace_usage
170 (int verbose);
171
172
173 #endif /* _DEBUG_H_ */
This page took 0.032778 seconds and 4 git commands to generate.