GDB (xrefs)
/tmp/gdb-7.10/gdb/target-debug.h
Go to the documentation of this file.
1 /* GDB target debugging macros
2 
3  Copyright (C) 2014-2015 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_long(X) \
60  target_debug_do_print (plongest (X))
61 #define target_debug_print_enum_target_xfer_status(X) \
62  target_debug_do_print (plongest (X))
63 #define target_debug_print_enum_exec_direction_kind(X) \
64  target_debug_do_print (plongest (X))
65 #define target_debug_print_enum_trace_find_type(X) \
66  target_debug_do_print (plongest (X))
67 #define target_debug_print_enum_btrace_read_type(X) \
68  target_debug_do_print (plongest (X))
69 #define target_debug_print_enum_btrace_error(X) \
70  target_debug_do_print (plongest (X))
71 #define target_debug_print_ptid_t(X) \
72  target_debug_do_print (plongest (ptid_get_pid (X)))
73 #define target_debug_print_struct_gdbarch_p(X) \
74  target_debug_do_print (gdbarch_bfd_arch_info (X)->printable_name)
75 #define target_debug_print_const_gdb_byte_p(X) \
76  target_debug_do_print (host_address_to_string (X))
77 #define target_debug_print_gdb_byte_p(X) \
78  target_debug_do_print (host_address_to_string (X))
79 #define target_debug_print_gdb_byte_pp(X) \
80  target_debug_do_print (host_address_to_string (*(X)))
81 #define target_debug_print_enum_gdb_signal(X) \
82  target_debug_do_print (gdb_signal_to_name (X))
83 #define target_debug_print_ULONGEST(X) \
84  target_debug_do_print (hex_string (X))
85 #define target_debug_print_ULONGEST_p(X) \
86  target_debug_do_print (hex_string (*(X)))
87 #define target_debug_print_LONGEST(X) \
88  target_debug_do_print (phex (X, 0))
89 #define target_debug_print_LONGEST_p(X) \
90  target_debug_do_print (phex (*(X), 0))
91 #define target_debug_print_struct_address_space_p(X) \
92  target_debug_do_print (plongest (address_space_num (X)))
93 #define target_debug_print_struct_bp_target_info_p(X) \
94  target_debug_do_print (core_addr_to_string ((X)->placed_address))
95 #define target_debug_print_struct_expression_p(X) \
96  target_debug_do_print (host_address_to_string (X))
97 #define target_debug_print_CORE_ADDR_p(X) \
98  target_debug_do_print (core_addr_to_string (*(X)))
99 #define target_debug_print_int_p(X) \
100  target_debug_do_print (plongest (*(X)))
101 #define target_debug_print_struct_regcache_p(X) \
102  target_debug_do_print (host_address_to_string (X))
103 #define target_debug_print_struct_thread_info_p(X) \
104  target_debug_do_print (host_address_to_string (X))
105 #define target_debug_print_struct_ui_file_p(X) \
106  target_debug_do_print (host_address_to_string (X))
107 #define target_debug_print_struct_target_section_table_p(X) \
108  target_debug_do_print (host_address_to_string (X))
109 #define target_debug_print_async_callback_ftype_p(X) \
110  target_debug_do_print (host_address_to_string (X))
111 #define target_debug_print_void_p(X) \
112  target_debug_do_print (host_address_to_string (X))
113 #define target_debug_print_find_memory_region_ftype(X) \
114  target_debug_do_print (host_address_to_string (X))
115 #define target_debug_print_bfd_p(X) \
116  target_debug_do_print (host_address_to_string (X))
117 #define target_debug_print_VEC_mem_region_s__p(X) \
118  target_debug_do_print (host_address_to_string (X))
119 #define target_debug_print_VEC_static_tracepoint_marker_p__p(X) \
120  target_debug_do_print (host_address_to_string (X))
121 #define target_debug_print_const_struct_target_desc_p(X) \
122  target_debug_do_print (host_address_to_string (X))
123 #define target_debug_print_struct_bp_location_p(X) \
124  target_debug_do_print (host_address_to_string (X))
125 #define target_debug_print_struct_trace_state_variable_p(X) \
126  target_debug_do_print (host_address_to_string (X))
127 #define target_debug_print_struct_trace_status_p(X) \
128  target_debug_do_print (host_address_to_string (X))
129 #define target_debug_print_struct_breakpoint_p(X) \
130  target_debug_do_print (host_address_to_string (X))
131 #define target_debug_print_struct_uploaded_tp_p(X) \
132  target_debug_do_print (host_address_to_string (X))
133 #define target_debug_print_struct_uploaded_tp_pp(X) \
134  target_debug_do_print (host_address_to_string (X))
135 #define target_debug_print_struct_uploaded_tsv_pp(X) \
136  target_debug_do_print (host_address_to_string (X))
137 #define target_debug_print_struct_static_tracepoint_marker_p(X) \
138  target_debug_do_print (host_address_to_string (X))
139 #define target_debug_print_struct_traceframe_info_p(X) \
140  target_debug_do_print (host_address_to_string (X))
141 #define target_debug_print_struct_btrace_target_info_p(X) \
142  target_debug_do_print (host_address_to_string (X))
143 #define target_debug_print_VEC__btrace_block_s__pp(X) \
144  target_debug_do_print (host_address_to_string (X))
145 #define target_debug_print_const_struct_frame_unwind_p(X) \
146  target_debug_do_print (host_address_to_string (X))
147 #define target_debug_print_struct_btrace_data_p(X) \
148  target_debug_do_print (host_address_to_string (X))
149 #define target_debug_print_enum_btrace_format(X) \
150  target_debug_do_print (plongest (X))
151 #define target_debug_print_const_struct_btrace_config_p(X) \
152  target_debug_do_print (host_address_to_string (X))
153 #define target_debug_print_const_struct_btrace_target_info_p(X) \
154  target_debug_do_print (host_address_to_string (X))
155 
156 static void
158 {
159  char *str = target_waitstatus_to_string (status);
160 
162  xfree (str);
163 }
164 
165 
166 
167 /* Macros or functions that are used via TARGET_DEBUG_PRINTER. */
168 
169 #define target_debug_print_step(X) \
170  target_debug_do_print ((X) ? "step" : "continue")
171 
172 static void
174 {
175  char *str = target_options_to_string (options);
176 
178  xfree (str);
179 }
180 
181 static void
182 target_debug_print_signals (unsigned char *sigs)
183 {
185  if (sigs != NULL)
186  {
187  int i;
188 
189  for (i = 0; i < GDB_SIGNAL_LAST; i++)
190  if (sigs[i])
192  }
194 }
195 
196 #endif /* TARGET_DEBUG_H */
char * target_waitstatus_to_string(const struct target_waitstatus *ws)
Definition: waitstatus.c:27
void fputs_unfiltered(const char *buf, struct ui_file *file)
Definition: ui-file.c:252
void xfree(void *)
Definition: common-utils.c:97
static void target_debug_print_struct_target_waitstatus_p(struct target_waitstatus *status)
Definition: target-debug.h:157
char * target_options_to_string(int target_options)
Definition: target.c:3364
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2361
mach_port_t mach_port_t name mach_port_t mach_port_t name error_t int status
Definition: gnu-nat.c:1816
const char * gdb_signal_to_name(enum gdb_signal)
Definition: signals.c:78
struct ui_file * gdb_stdlog
Definition: main.c:73
static void target_debug_print_signals(unsigned char *sigs)
Definition: target-debug.h:182
static void target_debug_print_options(int options)
Definition: target-debug.h:173