GDB (xrefs)
/tmp/gdb-8.1/gdb/target-debug.h
Go to the documentation of this file.
1 /* GDB target debugging macros
2 
3  Copyright (C) 2014-2018 Free Software Foundation, Inc.
4 
5  This file is part of GDB.
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 3 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 
20 #ifndef TARGET_DEBUG_H
21 #define TARGET_DEBUG_H
22 
23 /* Printers for the debug target. Each prints an object of a given
24  type to a string that needn't be freed. Most printers are macros,
25  for brevity, but a few are static functions where more complicated
26  behavior is needed.
27 
28  References to these printers are automatically generated by
29  make-target-delegates. See the generated file target-delegates.c.
30 
31  In a couple cases, a special printing function is defined and then
32  used via the TARGET_DEBUG_PRINTER macro. See target.h.
33 
34  A few methods still have some explicit targetdebug code in
35  target.c. In most cases this is because target delegation hasn't
36  been done for the method; but individual cases vary. For instance,
37  target_store_registers does some special register printing that is
38  more simply done there, and target_xfer_partial additionally
39  bypasses the debug target. */
40 
41 
42 /* Helper macro. */
43 
44 #define target_debug_do_print(E) \
45  fputs_unfiltered ((E), gdb_stdlog);
46 
47 #define target_debug_print_struct_target_ops_p(X) \
48  target_debug_do_print (host_address_to_string (X))
49 #define target_debug_print_enum_target_object(X) \
50  target_debug_do_print (plongest (X))
51 #define target_debug_print_CORE_ADDR(X) \
52  target_debug_do_print (core_addr_to_string (X))
53 #define target_debug_print_const_char_p(X) \
54  target_debug_do_print (((X) ? (X) : "(null)"))
55 #define target_debug_print_char_p(X) \
56  target_debug_do_print (((X) ? (X) : "(null)"))
57 #define target_debug_print_int(X) \
58  target_debug_do_print (plongest (X))
59 #define target_debug_print_bool(X) \
60  target_debug_do_print ((X) ? "true" : "false")
61 #define target_debug_print_long(X) \
62  target_debug_do_print (plongest (X))
63 #define target_debug_print_enum_target_xfer_status(X) \
64  target_debug_do_print (plongest (X))
65 #define target_debug_print_enum_exec_direction_kind(X) \
66  target_debug_do_print (plongest (X))
67 #define target_debug_print_enum_trace_find_type(X) \
68  target_debug_do_print (plongest (X))
69 #define target_debug_print_enum_btrace_read_type(X) \
70  target_debug_do_print (plongest (X))
71 #define target_debug_print_enum_btrace_error(X) \
72  target_debug_do_print (plongest (X))
73 #define target_debug_print_ptid_t(X) \
74  target_debug_do_print (plongest (ptid_get_pid (X)))
75 #define target_debug_print_struct_gdbarch_p(X) \
76  target_debug_do_print (gdbarch_bfd_arch_info (X)->printable_name)
77 #define target_debug_print_const_gdb_byte_p(X) \
78  target_debug_do_print (host_address_to_string (X))
79 #define target_debug_print_gdb_byte_p(X) \
80  target_debug_do_print (host_address_to_string (X))
81 #define target_debug_print_gdb_byte_pp(X) \
82  target_debug_do_print (host_address_to_string (*(X)))
83 #define target_debug_print_enum_gdb_signal(X) \
84  target_debug_do_print (gdb_signal_to_name (X))
85 #define target_debug_print_ULONGEST(X) \
86  target_debug_do_print (hex_string (X))
87 #define target_debug_print_ULONGEST_p(X) \
88  target_debug_do_print (hex_string (*(X)))
89 #define target_debug_print_LONGEST(X) \
90  target_debug_do_print (phex (X, 0))
91 #define target_debug_print_LONGEST_p(X) \
92  target_debug_do_print (phex (*(X), 0))
93 #define target_debug_print_struct_address_space_p(X) \
94  target_debug_do_print (plongest (address_space_num (X)))
95 #define target_debug_print_struct_bp_target_info_p(X) \
96  target_debug_do_print (core_addr_to_string ((X)->placed_address))
97 #define target_debug_print_struct_expression_p(X) \
98  target_debug_do_print (host_address_to_string (X))
99 #define target_debug_print_CORE_ADDR_p(X) \
100  target_debug_do_print (core_addr_to_string (*(X)))
101 #define target_debug_print_int_p(X) \
102  target_debug_do_print (plongest (*(X)))
103 #define target_debug_print_struct_regcache_p(X) \
104  target_debug_do_print (host_address_to_string (X))
105 #define target_debug_print_struct_thread_info_p(X) \
106  target_debug_do_print (host_address_to_string (X))
107 #define target_debug_print_struct_ui_file_p(X) \
108  target_debug_do_print (host_address_to_string (X))
109 #define target_debug_print_struct_target_section_table_p(X) \
110  target_debug_do_print (host_address_to_string (X))
111 #define target_debug_print_async_callback_ftype_p(X) \
112  target_debug_do_print (host_address_to_string (X))
113 #define target_debug_print_void_p(X) \
114  target_debug_do_print (host_address_to_string (X))
115 #define target_debug_print_find_memory_region_ftype(X) \
116  target_debug_do_print (host_address_to_string (X))
117 #define target_debug_print_bfd_p(X) \
118  target_debug_do_print (host_address_to_string (X))
119 #define target_debug_print_std_vector_mem_region(X) \
120  target_debug_do_print (host_address_to_string (X.data ()))
121 #define target_debug_print_VEC_static_tracepoint_marker_p_p(X) \
122  target_debug_do_print (host_address_to_string (X))
123 #define target_debug_print_const_struct_target_desc_p(X) \
124  target_debug_do_print (host_address_to_string (X))
125 #define target_debug_print_struct_bp_location_p(X) \
126  target_debug_do_print (host_address_to_string (X))
127 #define target_debug_print_struct_trace_state_variable_p(X) \
128  target_debug_do_print (host_address_to_string (X))
129 #define target_debug_print_struct_trace_status_p(X) \
130  target_debug_do_print (host_address_to_string (X))
131 #define target_debug_print_struct_breakpoint_p(X) \
132  target_debug_do_print (host_address_to_string (X))
133 #define target_debug_print_struct_uploaded_tp_p(X) \
134  target_debug_do_print (host_address_to_string (X))
135 #define target_debug_print_struct_uploaded_tp_pp(X) \
136  target_debug_do_print (host_address_to_string (X))
137 #define target_debug_print_struct_uploaded_tsv_pp(X) \
138  target_debug_do_print (host_address_to_string (X))
139 #define target_debug_print_struct_static_tracepoint_marker_p(X) \
140  target_debug_do_print (host_address_to_string (X))
141 #define target_debug_print_struct_traceframe_info_p(X) \
142  target_debug_do_print (host_address_to_string (X))
143 #define target_debug_print_struct_btrace_target_info_p(X) \
144  target_debug_do_print (host_address_to_string (X))
145 #define target_debug_print_VEC__btrace_block_s__pp(X) \
146  target_debug_do_print (host_address_to_string (X))
147 #define target_debug_print_const_struct_frame_unwind_p(X) \
148  target_debug_do_print (host_address_to_string (X))
149 #define target_debug_print_struct_btrace_data_p(X) \
150  target_debug_do_print (host_address_to_string (X))
151 #define target_debug_print_enum_btrace_format(X) \
152  target_debug_do_print (plongest (X))
153 #define target_debug_print_enum_record_method(X) \
154  target_debug_do_print (plongest (X))
155 #define target_debug_print_const_struct_btrace_config_p(X) \
156  target_debug_do_print (host_address_to_string (X))
157 #define target_debug_print_const_struct_btrace_target_info_p(X) \
158  target_debug_do_print (host_address_to_string (X))
159 #define target_debug_print_enum_target_hw_bp_type(X) \
160  target_debug_do_print (plongest (X))
161 #define target_debug_print_enum_bptype(X) \
162  target_debug_do_print (plongest (X))
163 #define target_debug_print_struct_inferior_p(X) \
164  target_debug_do_print (host_address_to_string (X))
165 #define target_debug_print_enum_remove_bp_reason(X) \
166  target_debug_do_print (plongest (X))
167 #define target_debug_print_gdb_disassembly_flags(X) \
168  target_debug_do_print (plongest (X))
169 #define target_debug_print_traceframe_info_up(X) \
170  target_debug_do_print (host_address_to_string (X.get ()))
171 #define target_debug_print_gdb_array_view_const_int(X) \
172  target_debug_do_print (host_address_to_string (X.data ()))
173 
174 static void
176 {
178 
179  fputs_unfiltered (str.c_str (), gdb_stdlog);
180 }
181 
182 
183 
184 /* Macros or functions that are used via TARGET_DEBUG_PRINTER. */
185 
186 #define target_debug_print_step(X) \
187  target_debug_do_print ((X) ? "step" : "continue")
188 
189 static void
191 {
192  char *str = target_options_to_string (options);
193 
195  xfree (str);
196 }
197 
198 static void
199 target_debug_print_signals (unsigned char *sigs)
200 {
202  if (sigs != NULL)
203  {
204  int i;
205 
206  for (i = 0; i < GDB_SIGNAL_LAST; i++)
207  if (sigs[i])
208  {
210  gdb_signal_to_name ((enum gdb_signal) i));
211  }
212  }
214 }
215 
216 #endif /* TARGET_DEBUG_H */
const char * string
Definition: signals.c:50
void fputs_unfiltered(const char *buf, struct ui_file *file)
Definition: ui-file.c:127
void xfree(void *)
std::string target_waitstatus_to_string(const struct target_waitstatus *ws)
Definition: waitstatus.c:27
static void target_debug_print_struct_target_waitstatus_p(struct target_waitstatus *status)
Definition: target-debug.h:175
char * target_options_to_string(int target_options)
Definition: target.c:3419
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2018
mach_port_t mach_port_t name mach_port_t mach_port_t name kern_return_t int status
Definition: gnu-nat.c:1822
const char * gdb_signal_to_name(enum gdb_signal)
Definition: signals.c:78
static void target_debug_print_signals(unsigned char *sigs)
Definition: target-debug.h:199
#define gdb_stdlog
Definition: utils.h:349
static void target_debug_print_options(int options)
Definition: target-debug.h:190