Fix GDB build when using --disable-gdbmi
Since commit
b4be1b0648
("Fix MI output for multi-location breakpoints")
we get this error when building with --disable-gdbmi:
CXXLD gdb
/home/smarchi/src/binutils-gdb/gdb/breakpoint.c:6358: error: undefined reference to 'mi_multi_location_breakpoint_output_fixed(ui_out*)'
This is due to breakpoint.c using a function defined in mi/mi-main.c, even
though mi/mi-main.c isn't included in the build.
To fix it, use the flags feature of ui_out. mi_ui_out has the new
fix_multi_location_breakpoint_output flag set for versions >= 3. Also,
move the global variable fix_multi_location_breakpoint_output to
breakpoint.c, so it can be read there even when we build without MI. I
renamed it to fix_multi_location_breakpoint_output_globally so it
doesn't clash with the new enumerator.
gdb/ChangeLog:
* breakpoint.h (fix_multi_location_breakpoint_output_globally):
New variable declaration.
* breakpoint.c (fix_multi_location_breakpoint_output_globally):
New variable.
(print_one_breakpoint): Use ui_out::test_flags and new global
variable to compute use_fixed_output.
* mi/mi-main.h (mi_multi_location_breakpoint_output_fixed):
Remove.
* mi/mi-main.c (fix_multi_location_breakpoint_output): Remove.
(mi_multi_location_breakpoint_output_fixed): Remove.
(mi_cmd_fix_multi_location_breakpoint_output): Adjust to set the
new variable.
* mi/mi-out.c (mi_ui_out::mi_ui_out): Set
fix_multi_location_breakpoint_output flag if version >= 3.
* ui-out.h (enum ui_out_flag)
<fix_multi_location_breakpoint_output>: New enumerator.
This commit is contained in:
parent
a9eac7f9b4
commit
1367480341
|
@ -1,3 +1,22 @@
|
|||
2019-05-10 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* breakpoint.h (fix_multi_location_breakpoint_output_globally):
|
||||
New variable declaration.
|
||||
* breakpoint.c (fix_multi_location_breakpoint_output_globally):
|
||||
New variable.
|
||||
(print_one_breakpoint): Use ui_out::test_flags and new global
|
||||
variable to compute use_fixed_output.
|
||||
* mi/mi-main.h (mi_multi_location_breakpoint_output_fixed):
|
||||
Remove.
|
||||
* mi/mi-main.c (fix_multi_location_breakpoint_output): Remove.
|
||||
(mi_multi_location_breakpoint_output_fixed): Remove.
|
||||
(mi_cmd_fix_multi_location_breakpoint_output): Adjust to set the
|
||||
new variable.
|
||||
* mi/mi-out.c (mi_ui_out::mi_ui_out): Set
|
||||
fix_multi_location_breakpoint_output flag if version >= 3.
|
||||
* ui-out.h (enum ui_out_flag)
|
||||
<fix_multi_location_breakpoint_output>: New enumerator.
|
||||
|
||||
2019-05-10 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* contrib/cc-with-tweaks.sh: Validate dwz's work.
|
||||
|
|
|
@ -6337,13 +6337,19 @@ print_one_breakpoint_location (struct breakpoint *b,
|
|||
}
|
||||
}
|
||||
|
||||
/* See breakpoint.h. */
|
||||
|
||||
bool fix_multi_location_breakpoint_output_globally = false;
|
||||
|
||||
static void
|
||||
print_one_breakpoint (struct breakpoint *b,
|
||||
struct bp_location **last_loc,
|
||||
int allflag)
|
||||
{
|
||||
struct ui_out *uiout = current_uiout;
|
||||
bool use_fixed_output = mi_multi_location_breakpoint_output_fixed (uiout);
|
||||
bool use_fixed_output
|
||||
= (uiout->test_flags (fix_multi_location_breakpoint_output)
|
||||
|| fix_multi_location_breakpoint_output_globally);
|
||||
|
||||
gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
|
||||
print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
|
||||
|
|
|
@ -1670,4 +1670,9 @@ extern void print_breakpoint (breakpoint *bp);
|
|||
/* Command element for the 'commands' command. */
|
||||
extern cmd_list_element *commands_cmd_element;
|
||||
|
||||
/* Whether to use the fixed output when printing information about a
|
||||
multi-location breakpoint (see PR 9659). */
|
||||
|
||||
extern bool fix_multi_location_breakpoint_output_globally;
|
||||
|
||||
#endif /* !defined (BREAKPOINT_H) */
|
||||
|
|
|
@ -2699,31 +2699,13 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc)
|
|||
}
|
||||
}
|
||||
|
||||
/* Whether to use the fixed output when printing information about a
|
||||
multi-location breakpoint (see PR 9659). */
|
||||
|
||||
static bool fix_multi_location_breakpoint_output = false;
|
||||
|
||||
/* See mi/mi-main.h. */
|
||||
|
||||
void
|
||||
mi_cmd_fix_multi_location_breakpoint_output (const char *command, char **argv,
|
||||
int argc)
|
||||
{
|
||||
fix_multi_location_breakpoint_output = true;
|
||||
}
|
||||
|
||||
/* See mi/mi-main.h. */
|
||||
|
||||
bool
|
||||
mi_multi_location_breakpoint_output_fixed (ui_out *uiout)
|
||||
{
|
||||
mi_ui_out *mi_uiout = dynamic_cast<mi_ui_out *> (uiout);
|
||||
|
||||
if (mi_uiout == nullptr)
|
||||
return false;
|
||||
|
||||
return mi_uiout->version () >= 3 || fix_multi_location_breakpoint_output;
|
||||
fix_multi_location_breakpoint_output_globally = true;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -59,12 +59,4 @@ extern struct mi_suppress_notification mi_suppress_notification;
|
|||
extern void mi_cmd_fix_multi_location_breakpoint_output (const char *command,
|
||||
char **argv, int argc);
|
||||
|
||||
/* Return whether -break-list, -break-insert, =breakpoint-created and
|
||||
=breakpoint-modified should use the "fixed" output format (see PR
|
||||
9659).
|
||||
|
||||
Return false if UIOUT is not an MI UI. */
|
||||
|
||||
extern bool mi_multi_location_breakpoint_output_fixed (ui_out *uiout);
|
||||
|
||||
#endif /* MI_MI_MAIN_H */
|
||||
|
|
|
@ -280,7 +280,9 @@ mi_ui_out::version ()
|
|||
/* Constructor for an `mi_out_data' object. */
|
||||
|
||||
mi_ui_out::mi_ui_out (int mi_version)
|
||||
: m_suppress_field_separator (false),
|
||||
: ui_out (mi_version >= 3
|
||||
? fix_multi_location_breakpoint_output : (ui_out_flag) 0),
|
||||
m_suppress_field_separator (false),
|
||||
m_suppress_output (false),
|
||||
m_mi_version (mi_version)
|
||||
{
|
||||
|
|
|
@ -49,9 +49,10 @@ enum ui_align
|
|||
|
||||
/* flags enum */
|
||||
enum ui_out_flag
|
||||
{
|
||||
ui_source_list = (1 << 0),
|
||||
};
|
||||
{
|
||||
ui_source_list = (1 << 0),
|
||||
fix_multi_location_breakpoint_output = (1 << 1),
|
||||
};
|
||||
|
||||
DEF_ENUM_FLAGS_TYPE (ui_out_flag, ui_out_flags);
|
||||
|
||||
|
|
Loading…
Reference in New Issue