61 gdb_disassembly_flags disasm_flags;
65 bool file_seen =
false;
66 bool line_seen =
false;
67 bool num_seen =
false;
68 bool start_seen =
false;
69 bool end_seen =
false;
70 bool addr_seen =
false;
71 bool opcodes_seen =
false;
72 bool source_seen =
false;
75 const char *file_string = NULL;
85 OPCODES_DEFAULT, OPCODES_NONE, OPCODES_DISPLAY, OPCODES_BYTES
87 enum opcodes_mode opcodes_mode = OPCODES_DEFAULT;
97 FILE_OPT, LINE_OPT, NUM_OPT, START_OPT, END_OPT, ADDR_OPT, OPCODES_OPT,
100 static const struct mi_opt opts[] =
108 {
"-opcodes", OPCODES_OPT, 1},
109 {
"-source", SHOW_SRC_OPT, 0},
117 int opt =
mi_getopt (
"-data-disassemble", argc, argv, opts,
121 switch ((
enum opt) opt)
128 line_num = atoi (oarg);
132 how_many = atoi (oarg);
149 if (strcmp (oarg,
"none") == 0)
150 opcodes_mode = OPCODES_NONE;
151 else if (strcmp (oarg,
"display") == 0)
152 opcodes_mode = OPCODES_DISPLAY;
153 else if (strcmp (oarg,
"bytes") == 0)
154 opcodes_mode = OPCODES_BYTES;
156 error (_(
"-data-disassemble: unknown value for -opcodes argument"));
171 ( line_seen && file_seen && !start_seen && !end_seen
174 || (!line_seen && !file_seen && !num_seen && start_seen && end_seen
177 || (!line_seen && !file_seen && !num_seen && !start_seen && !end_seen
180 error (_(
"-data-disassemble: Usage: "
181 "( -f filename -l linenum [-n howmany] |"
182 " -s startaddr -e endaddr | -a addr ) "
183 "[ --opcodes mode ] [ --source ] [ [--] mode ]."));
187 mode = atoi (argv[0]);
188 if (mode < 0 || mode > 5)
189 error (_(
"-data-disassemble: Mode argument must be in the range 0-5."));
194 if (mode != 0 && (source_seen || opcodes_seen))
195 error (_(
"-data-disassemble: --opcodes and --source can only be used with mode 0"));
220 gdb_assert_not_reached (
"bad disassembly mode");
225 if (opcodes_mode != OPCODES_DEFAULT)
231 if (opcodes_mode == OPCODES_DISPLAY)
233 else if (opcodes_mode == OPCODES_BYTES)
240 disasm_flags &= ~DISASSEMBLY_SOURCE_DEPRECATED;
247 if (line_seen && file_seen)
251 error (_(
"-data-disassemble: Invalid filename."));
253 error (_(
"-data-disassemble: Invalid line number"));
255 error (_(
"-data-disassemble: "
256 "No function contains specified address"));
261 error (_(
"-data-disassemble: "
262 "No function contains specified address"));
267 how_many, low, high);
void gdb_disassembly(struct gdbarch *gdbarch, struct ui_out *uiout, gdb_disassembly_flags flags, int how_many, CORE_ADDR low, CORE_ADDR high)
int mi_getopt(const char *prefix, int argc, const char *const *argv, const struct mi_opt *opts, int *oind, const char **oarg)