2017-09-13 05:17:26 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_mpx_info_bounds, i386_mpx_set_bounds):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-13 05:17:01 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile-mem.c (add_symbol_file_from_memory_command): Constify.
|
|
|
|
|
|
2017-09-13 05:16:47 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* demangle.c (demangle_command): Constify.
|
|
|
|
|
|
2017-09-13 05:15:46 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* progspace.c (maintenance_info_program_spaces_command):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-13 05:14:41 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (check_raw_argument, compile_file_command)
|
|
|
|
|
(compile_code_command, compile_print_command): Constify.
|
|
|
|
|
|
2017-09-13 05:13:51 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* reggroups.c (maintenance_print_reggroups): Constify.
|
|
|
|
|
|
2017-09-13 05:13:40 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (save_gdb_index_command): Constify.
|
|
|
|
|
|
2017-09-13 05:13:21 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* stap-probe.c (info_probes_stap_command): Constify.
|
|
|
|
|
|
2017-09-13 05:13:03 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* fork-child.c (unset_exec_wrapper_command): Constify.
|
|
|
|
|
|
2017-09-13 05:12:42 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (get_uint, get_context_size, no_chunk)
|
|
|
|
|
(maint_btrace_packet_history_cmd)
|
|
|
|
|
(maint_btrace_clear_packet_history_cmd, maint_btrace_clear_cmd)
|
|
|
|
|
(maint_info_btrace_cmd): Constify.
|
|
|
|
|
|
2017-09-13 05:09:47 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* reverse.c (delete_bookmark_command): Constify.
|
|
|
|
|
|
2017-09-13 05:09:35 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (set_memory_packet_size)
|
|
|
|
|
(set_memory_write_packet_size, show_memory_write_packet_size)
|
|
|
|
|
(set_memory_read_packet_size, show_memory_read_packet_size)
|
|
|
|
|
(compare_sections_command, packet_command, remote_put_command)
|
|
|
|
|
(remote_get_command, remote_delete_command): Constify.
|
|
|
|
|
|
2017-09-13 05:05:40 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (show_mipsfpu_command, set_mipsfpu_single_command)
|
|
|
|
|
(set_mipsfpu_double_command, set_mipsfpu_none_command)
|
|
|
|
|
(set_mipsfpu_auto_command): Constify.
|
|
|
|
|
|
2017-09-13 05:02:08 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.h (cd_command): Constify.
|
|
|
|
|
* cli/cli-cmds.c (cd_command): Constify.
|
|
|
|
|
|
2017-09-13 04:45:21 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (thread_name_command, thread_find_command): Constify.
|
|
|
|
|
|
2017-09-13 04:42:32 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* probe.c (enable_probes_command, disable_probes_command):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-13 02:39:07 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.c (symbol_file_command): Constify.
|
|
|
|
|
* gdbcore.h (deprecated_file_changed_hook): Constify.
|
|
|
|
|
* exec.c (deprecated_file_changed_hook, exec_file_command)
|
|
|
|
|
(file_command): Constify.
|
|
|
|
|
* defs.h (symbol_file_command): Constify.
|
|
|
|
|
|
2017-09-13 02:38:19 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* remote-fileio.c (set_system_call_allowed)
|
|
|
|
|
(show_system_call_allowed): Constify.
|
|
|
|
|
|
2017-09-13 02:37:46 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (delete_trace_variable_command)
|
|
|
|
|
(tfind_end_command, tfind_start_command, tfind_pc_command)
|
|
|
|
|
(tfind_tracepoint_command, tfind_line_command)
|
|
|
|
|
(tfind_range_command, tfind_outside_command): Constify.
|
|
|
|
|
|
2017-09-12 23:00:06 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c (maint_agent_printf_command, agent_command)
|
|
|
|
|
(agent_eval_command): Constify.
|
|
|
|
|
|
Constify some linespec functions
This changes a few linespec functions to work on "const char *" and
then fixes up all the callers. This allows further constification
elsewhere.
gdb/ChangeLog
2017-09-27 Tom Tromey <tom@tromey.com>
* tracepoint.c (info_scope_command): Constify.
* python/python.c (gdbpy_decode_line): Constify.
* python/py-breakpoint.c (bppy_init): Constify.
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Constify.
* location.h: (new_linespec_location)
(string_to_event_location_basic, string_to_event_location):
Constify.
* location.c (new_linespec_location)
(string_to_event_location_basic, string_to_event_location):
Constify.
* linespec.h (decode_line_with_current_source)
(decode_line_with_last_displayed, linespec_lex_to_end): Constify.
* linespec.c (linespec_lex_to_end)
(decode_line_with_current_source)
(decode_line_with_last_displayed): Constify.
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x):
Constify.
* cli/cli-cmds.c (edit_command, list_command): Constify.
* breakpoint.h (until_break_command, watch_command_wrapper)
(awatch_command_wrapper, rwatch_command_wrapper)
(init_ada_exception_breakpoint): Constify.
* breakpoint.c (break_command_1, dprintf_command)
(break_range_command, watch_command_wrapper)
(rwatch_command_wrapper, awatch_command_wrapper)
(until_break_command, init_ada_exception_breakpoint)
(strace_marker_create_sals_from_location, trace_command)
(ftrace_command, strace_command, struct tracepoint): Constify.
* ax-gdb.c (agent_command_1): Constify.
* ada-lang.c (ada_exception_sal): Constify.
2017-09-13 02:32:41 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (info_scope_command): Constify.
|
|
|
|
|
* python/python.c (gdbpy_decode_line): Constify.
|
|
|
|
|
* python/py-breakpoint.c (bppy_init): Constify.
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Constify.
|
|
|
|
|
* location.h: (new_linespec_location)
|
|
|
|
|
(string_to_event_location_basic, string_to_event_location):
|
|
|
|
|
Constify.
|
|
|
|
|
* location.c (new_linespec_location)
|
|
|
|
|
(string_to_event_location_basic, string_to_event_location):
|
|
|
|
|
Constify.
|
|
|
|
|
* linespec.h (decode_line_with_current_source)
|
|
|
|
|
(decode_line_with_last_displayed, linespec_lex_to_end): Constify.
|
|
|
|
|
* linespec.c (linespec_lex_to_end)
|
|
|
|
|
(decode_line_with_current_source)
|
|
|
|
|
(decode_line_with_last_displayed): Constify.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x):
|
|
|
|
|
Constify.
|
|
|
|
|
* cli/cli-cmds.c (edit_command, list_command): Constify.
|
|
|
|
|
* breakpoint.h (until_break_command, watch_command_wrapper)
|
|
|
|
|
(awatch_command_wrapper, rwatch_command_wrapper)
|
|
|
|
|
(init_ada_exception_breakpoint): Constify.
|
|
|
|
|
* breakpoint.c (break_command_1, dprintf_command)
|
|
|
|
|
(break_range_command, watch_command_wrapper)
|
|
|
|
|
(rwatch_command_wrapper, awatch_command_wrapper)
|
|
|
|
|
(until_break_command, init_ada_exception_breakpoint)
|
|
|
|
|
(strace_marker_create_sals_from_location, trace_command)
|
|
|
|
|
(ftrace_command, strace_command, struct tracepoint): Constify.
|
|
|
|
|
* ax-gdb.c (agent_command_1): Constify.
|
|
|
|
|
* ada-lang.c (ada_exception_sal): Constify.
|
|
|
|
|
|
2017-09-12 22:56:48 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record.c (cmd_record_delete, cmd_record_stop, cmd_record_save)
|
|
|
|
|
(cmd_record_goto_begin, cmd_record_goto_end, get_insn_number)
|
|
|
|
|
(get_context_size, no_chunk, get_insn_history_modifiers)
|
|
|
|
|
(cmd_record_insn_history, get_call_history_modifiers)
|
|
|
|
|
(cmd_record_call_history): Constify.
|
|
|
|
|
|
2017-09-12 22:45:14 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* source.c (show_substitute_path_command)
|
|
|
|
|
(unset_substitute_path_command, set_substitute_path_command):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-12 22:40:43 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* typeprint.c (maintenance_print_type): Constify.
|
|
|
|
|
* maint.c (maintenance_dump_me, maintenance_demangle)
|
|
|
|
|
(maintenance_time_display, maintenance_info_sections)
|
|
|
|
|
(maintenance_print_statistics, maintenance_deprecate)
|
|
|
|
|
(maintenance_undeprecate): Constify.
|
|
|
|
|
(maintenance_do_deprecate): Constify. Use std::string.
|
|
|
|
|
(maintenance_selftest): Constify.
|
|
|
|
|
* gdbtypes.h (maintenance_print_type): Constify.
|
|
|
|
|
|
2017-09-10 05:52:56 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* hppa-tdep.c (unwind_command): Constify.
|
|
|
|
|
|
2017-09-10 05:52:05 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* target-descriptions.c (unset_tdesc_filename_cmd)
|
|
|
|
|
(maint_print_c_tdesc_cmd, maintenance_check_xml_descriptions):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-10 05:51:39 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* dummy-frame.c (maintenance_print_dummy_frames): Constify.
|
|
|
|
|
|
2017-09-10 05:51:21 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui.c (tui_enable_command, tui_disable_command): Constify.
|
|
|
|
|
|
2017-09-10 05:51:10 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_reg_command): Constify.
|
|
|
|
|
|
2017-09-10 05:50:56 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* skip.c (skip_file_command, skip_function_command)
|
|
|
|
|
(skip_enable_command, skip_disable_command, skip_delete_command):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-10 05:46:34 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (cmd_record_btrace_bts_start)
|
|
|
|
|
(cmd_record_btrace_pt_start): Constify.
|
|
|
|
|
|
2017-09-10 05:45:47 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symmisc.c (maintenance_print_symbols)
|
|
|
|
|
(maintenance_print_msymbols, maintenance_print_objfiles)
|
|
|
|
|
(maintenance_info_symtabs, maintenance_check_symtabs)
|
|
|
|
|
(maintenance_expand_symtabs, maintenance_info_line_tables):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-10 05:44:55 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* top.c (new_ui_command): Constify.
|
|
|
|
|
|
2017-09-10 05:44:31 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.c (add_symbol_file_command)
|
|
|
|
|
(remove_symbol_file_command, list_overlays_command)
|
|
|
|
|
(map_overlay_command, unmap_overlay_command)
|
|
|
|
|
(overlay_auto_command, overlay_manual_command)
|
|
|
|
|
(overlay_off_command, overlay_load_command): Constify.
|
|
|
|
|
|
2017-09-10 05:41:50 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* spu-tdep.c (info_spu_event_command, info_spu_signal_command)
|
|
|
|
|
(info_spu_mailbox_command, info_spu_dma_command)
|
|
|
|
|
(info_spu_proxydma_command): Constify.
|
|
|
|
|
|
2017-09-10 05:40:53 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-logging.c (set_logging_on, set_logging_off): Constify.
|
|
|
|
|
|
2017-09-10 05:40:16 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (user_defined_command): Constify.
|
|
|
|
|
|
2017-09-10 05:39:18 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-dump.c (dump_memory_command, dump_value_command)
|
|
|
|
|
(dump_srec_memory, dump_srec_value, dump_ihex_memory)
|
|
|
|
|
(dump_ihex_value, dump_verilog_memory, dump_verilog_value)
|
|
|
|
|
(dump_tekhex_memory, dump_tekhex_value, dump_binary_memory)
|
|
|
|
|
(dump_binary_value, append_binary_memory, append_binary_value):
|
|
|
|
|
Constify.
|
|
|
|
|
(struct dump_context) <func>: Constify.
|
|
|
|
|
(add_dump_command): Update.
|
|
|
|
|
|
2017-09-10 05:37:20 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (show_version, show_configuration)
|
|
|
|
|
(source_command, show_user): Constify.
|
|
|
|
|
|
2017-09-10 05:34:29 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* target.c (maintenance_print_target_stack): Constify.
|
|
|
|
|
|
2017-09-10 05:32:11 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* interps.c (interpreter_exec_cmd): Constify.
|
|
|
|
|
|
2017-09-10 05:31:57 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record-full.c (cmd_record_full_restore): Constify.
|
|
|
|
|
|
2017-09-10 05:30:40 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* memattr.c (enable_mem_command, disable_mem_command)
|
|
|
|
|
(delete_mem_command): Constify.
|
|
|
|
|
|
2017-09-10 05:29:57 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* value.c (show_convenience): Constify.
|
|
|
|
|
|
2017-09-10 05:25:44 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* gdbcore.h (core_file_command): Update.
|
|
|
|
|
* corefile.c (core_file_command): Constify.
|
|
|
|
|
|
2017-09-10 05:24:08 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* user-regs.c (maintenance_print_user_registers): Constify.
|
|
|
|
|
|
2017-09-10 05:23:03 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cp-namespace.c (maintenance_cplus_namespace): Constify.
|
|
|
|
|
|
2017-09-10 05:22:52 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cp-support.c (first_component_command): Constify.
|
|
|
|
|
|
2017-09-10 05:22:28 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols)
|
|
|
|
|
(maintenance_info_psymtabs, maintenance_check_psymtabs):
|
|
|
|
|
Constify.
|
|
|
|
|
|
2017-09-10 05:22:05 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* windows-tdep.c (display_tib): Constify.
|
|
|
|
|
|
2017-09-10 05:00:26 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* linux-fork.c (delete_checkpoint_command)
|
|
|
|
|
(detach_checkpoint_command): Constify.
|
|
|
|
|
|
2017-09-10 04:59:50 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cp-abi.c (set_cp_abi_cmd, show_cp_abi_cmd): Constify.
|
|
|
|
|
|
2017-09-10 04:59:14 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep.c (dump_arc_instruction_command): Constify.
|
|
|
|
|
|
2017-09-10 04:58:42 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (set_radix, show_radix): Constify.
|
|
|
|
|
|
2017-09-10 04:57:56 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (info_probes_dtrace_command): Constify.
|
|
|
|
|
|
2017-09-10 04:57:10 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* command.h (not_just_help_class_command): Update.
|
|
|
|
|
* cli/cli-decode.h (not_just_help_class_command): Update.
|
|
|
|
|
* cli/cli-decode.c (not_just_help_class_command): Constify.
|
|
|
|
|
|
2017-09-10 04:55:20 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* gdb_bfd.c (maintenance_info_bfds): Constify.
|
|
|
|
|
|
2017-09-10 04:51:33 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-decode.c (add_cmd, set_cmd_cfunc): New function
|
|
|
|
|
overloads.
|
|
|
|
|
(do_add_cmd): Rename from add_cmd. Don't call set_cmd_cfunc.
|
|
|
|
|
(do_const_cfunc): New function.
|
|
|
|
|
(cmd_cfunc_eq): New overload.
|
|
|
|
|
(cli_user_command_p): Check do_const_cfunc.
|
|
|
|
|
* cli/cli-decode.h (struct cmd_list_element) <function>: New field
|
|
|
|
|
const_cfunc.
|
|
|
|
|
* command.h (add_cmd): Add const overload and no-function
|
|
|
|
|
overload.
|
|
|
|
|
(set_cmd_cfunc): Add const overload.
|
|
|
|
|
(cmd_const_cfunc_ftype): Declare.
|
|
|
|
|
(cmd_cfunc_eq): Add const overload.
|
|
|
|
|
* breakpoint.c, cli-cmds.c, cli-dump.c, guile/scm-cmd.c,
|
|
|
|
|
python/py-cmd.c, target.c, tracepoint.c: Use no-function add_cmd
|
|
|
|
|
overload.
|
|
|
|
|
|
2017-09-18 04:36:41 +02:00
|
|
|
|
2017-09-27 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* macroexp.c (get_next_token_for_substitution): New function.
|
|
|
|
|
(substitute_args): Call it. Check for __VA_OPT__.
|
|
|
|
|
|
2017-09-26 19:26:41 +02:00
|
|
|
|
2017-09-26 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_cu): Remove field producer_is_icc and add
|
|
|
|
|
producer_is_icc_lt_14.
|
|
|
|
|
(producer_is_icc_lt_14): New function.
|
|
|
|
|
(check_producer): Add code for checking version of ICC.
|
|
|
|
|
(producer_is_icc): Move to producer.c.
|
|
|
|
|
(read_structure_type): Restrict ICC workaround to ICC<14.
|
|
|
|
|
* producer.c: Include selftest.h.
|
|
|
|
|
(producer_is_icc, producer_parsing_tests, _initialize_producer):
|
|
|
|
|
New functions.
|
|
|
|
|
* producer.h (producer_is_icc): New declaration.
|
|
|
|
|
|
2017-09-26 19:26:41 +02:00
|
|
|
|
2017-09-26 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add producer.c.
|
|
|
|
|
(COMMON_OBS): Add producer.o
|
|
|
|
|
* amd64-tdep.c (producer.h): Add new include.
|
|
|
|
|
* dwarf2read.c (producer.h): Add new include.
|
|
|
|
|
* producer.c: New file.
|
|
|
|
|
* producer.h: New file.
|
|
|
|
|
* utils.c (producer_is_gcc, producer_is_gcc_ge_4): Move to
|
|
|
|
|
producer.c.
|
|
|
|
|
* utils.h (producer_is_gcc, producer_is_gcc_ge_4): Move to
|
|
|
|
|
producer.h.
|
|
|
|
|
|
2017-09-26 17:23:19 +02:00
|
|
|
|
2017-09-26 Matthias Klose <doko@ubuntu.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac: Search ncursesw before ncurses.
|
|
|
|
|
Check ncursesw/ncurses.h before ncurses/ncurses.h.
|
|
|
|
|
* gdb_curses.h: Include <ncursesw/ncurses.h>
|
|
|
|
|
* config.in, configure: Regenerate.
|
|
|
|
|
|
Remove support for Solaris < 10 (PR gdb/22185)
Given that GCC has obsoleted/removed support for Solaris 9 in GCC 4.9/5 in 2013:
https://gcc.gnu.org/gcc-4.9/changes.html
https://gcc.gnu.org/ml/gcc-patches/2013-05/msg00728.html
and the last gdb version that can be compiled with gcc 4.9 is 7.12.1 only when
configured with --disable-build-with-cxx, it's time to obsolete/remove support
for Solaris < 10.
This patch does this, simplifying configure.nat along the way (only a single
sol2 configuration with variants for i386 and sparc).
Some configure checks for older Solaris versions can go, too, and the check
for libthread_db.so.1 removed:
* Since Solaris 10, dlopen has moved to libc and libdl.so is just a
filter on ld.so.1, so no need to check.
* $RDYNAMIC is already handled above (and is a no-op with Solaris ld
anyway).
Both proc-service.c and sol-thread.c lose support for (Solaris-only)
PROC_SERVICE_IS_OLD.
The attached revised patch has been tested on sparcv9-sun-solaris2.10,
sparcv9-sun-solaris2.11.4, amd64-pc-solaris2.10, amd64-pc-solaris2.11.4,
and x86_64-pc-linux-gnu.
I've also started an i386-pc-solaris2.9 build to check that it really
stops as expected.
PR gdb/22185
* configure.host <*-*-solaris2.[01], *-*-solaris2.[2-9]*>: Mark as
obsolete.
Use gdb_host sol2 for i[34567]86-*-solaris2*, x86_64-*-solaris2*.
Remove i386sol2 support.
* configure.nat <i386sol2>: Remove.
<sol2-64>: Fold into ...
<sol2>: ... this.
Move common settings to default section.
Add sol-thread.o.
* configure.tgt <i[34567]86-*-solaris2.1[0-9]*,
x86_64-*-solaris2.1[0-9]*>: Rename to ...
<i[34567]86-*-solaris2*, x86_64-*-solaris2*>: ... this.
<i[34567]86-*-solaris*>: Remove.
<sparc-*-solaris2.[0-6], sparc-*-solaris2.[0-6].*>: Remove.
* configure.ac: Remove wctype in libw check.
(_MSE_INT_H): Don't define on Solaris 7-9.
<solaris*>: Remove libthread_db.so.1 check.
* configure: Regenerate.
* config.in: Regenerate.
* proc-service.c: Remove PROC_SERVICE_IS_OLD handling.
(gdb_ps_prochandle_t, gdb_ps_read_buf_t, gdb_ps_write_buf_t)
(gdb_ps_size_t): Remove.
Use base types in users.
* sol-thread.c: Likewise, also for gdb_ps_addr_t.
* NEWS (Changes since GDB 8.0): Document Solaris 2.0-9 removal.
2017-09-26 15:19:10 +02:00
|
|
|
|
2017-09-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
PR gdb/22185
|
|
|
|
|
* configure.host <*-*-solaris2.[01], *-*-solaris2.[2-9]*>: Mark as
|
|
|
|
|
obsolete.
|
|
|
|
|
Use gdb_host sol2 for i[34567]86-*-solaris2*, x86_64-*-solaris2*.
|
|
|
|
|
Remove i386sol2 support.
|
|
|
|
|
* configure.nat <i386sol2>: Remove.
|
|
|
|
|
<sol2-64>: Fold into ...
|
|
|
|
|
<sol2>: ... this.
|
|
|
|
|
Move common settings to default section.
|
|
|
|
|
Add sol-thread.o.
|
|
|
|
|
* configure.tgt <i[34567]86-*-solaris2.1[0-9]*,
|
|
|
|
|
x86_64-*-solaris2.1[0-9]*>: Rename to ...
|
|
|
|
|
<i[34567]86-*-solaris2*, x86_64-*-solaris2*>: ... this.
|
|
|
|
|
<i[34567]86-*-solaris*>: Remove.
|
|
|
|
|
<sparc-*-solaris2.[0-6], sparc-*-solaris2.[0-6].*>: Remove.
|
|
|
|
|
|
|
|
|
|
* configure.ac: Remove wctype in libw check.
|
|
|
|
|
(_MSE_INT_H): Don't define on Solaris 7-9.
|
|
|
|
|
<solaris*>: Remove libthread_db.so.1 check.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* config.in: Regenerate.
|
|
|
|
|
|
|
|
|
|
* proc-service.c: Remove PROC_SERVICE_IS_OLD handling.
|
|
|
|
|
(gdb_ps_prochandle_t, gdb_ps_read_buf_t, gdb_ps_write_buf_t)
|
|
|
|
|
(gdb_ps_size_t): Remove.
|
|
|
|
|
Use base types in users.
|
|
|
|
|
* sol-thread.c: Likewise, also for gdb_ps_addr_t.
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 8.0): Document Solaris 2.0-9 removal.
|
|
|
|
|
|
Fix gdb 8.1 Solaris/SPARC compilation (PR build/22206)
When testing my Solaris < 10 removal patch on Solaris/SPARC, I found
that gdb mainline is currently broken there due to the recent SPARC M7
ADI patches:
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:1876:0: error: "PSR_ICC" redefined [-Werror]
#define PSR_ICC 0x00f00000
^
In file included from /usr/include/v7/sys/privregs.h:24:0,
from /usr/include/sys/regset.h:420,
from /usr/include/sys/ucontext.h:21,
from /usr/include/sys/signal.h:231,
from /usr/include/sys/procset.h:23,
from /usr/include/sys/wait.h:25,
from /usr/include/stdlib.h:21,
from build-gnulib/import/stdlib.h:36,
from /vol/src/gnu/gdb/gdb/local/gdb/common/common-defs.h:53,
from /vol/src/gnu/gdb/gdb/local/gdb/defs.h:28,
from /vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:20:
/usr/include/v7/sys/psr.h:35:0: note: this is the location of the previous definition
#define PSR_ICC 0x00F00000 /* integer condition codes */
^
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:1878:0: error: "PSR_IMPL" redefined [-Werror]
#define PSR_IMPL 0xf0000000
^
In file included from /usr/include/v7/sys/privregs.h:24:0,
from /usr/include/sys/regset.h:420,
from /usr/include/sys/ucontext.h:21,
from /usr/include/sys/signal.h:231,
from /usr/include/sys/procset.h:23,
from /usr/include/sys/wait.h:25,
from /usr/include/stdlib.h:21,
from build-gnulib/import/stdlib.h:36,
from /vol/src/gnu/gdb/gdb/local/gdb/common/common-defs.h:53,
from /vol/src/gnu/gdb/gdb/local/gdb/defs.h:28,
from /vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:20:
/usr/include/v7/sys/psr.h:41:0: note: this is the location of the previous definition
#define PSR_IMPL 0xF0000000 /* implementation */
^
Comparing Solaris 11.4 <v7/sys/psr.h> and sparc64-tdep.c, there are more
inconsistencies:
<v7/sys/psr.h>:
#define PSR_S 0x00000080 /* supervisor mode */
#define PSR_ICC 0x00F00000 /* integer condition codes */
#define PSR_VER 0x0F000000 /* mask version */
#define PSR_IMPL 0xF0000000 /* implementation */
#define PSR_RSV 0x000FC000 /* reserved */
sparc64-tdep.c:
#define PSR_S 0x00000080
#define PSR_ICC 0x00f00000
#define PSR_VERS 0x0f000000
#define PSR_IMPL 0xf0000000
#define PSR_V8PLUS 0xff000000
#define PSR_XCC 0x000f0000
Apart from the capitalization differences that trip g++, the names
differ (PSR_VER vs. PSR_VERS), PSR_XCC is included in Solaris' PSR_RSV,
and there's no PSR_V8PLUS on Solaris either.
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c: In function `int adi_tag_fd()':
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:296:63: error: format `%d' expects argument of type `int', but argument 4 has type `pid_t {aka long int}' [-Werror=format=]
snprintf (cl_name, sizeof(cl_name), "/proc/%d/adi/tags", pid);
^
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c: In function `bool adi_is_addr_mapped(CORE_ADDR, std::size_t)':
/vol/src/gnu/gdb/gdb/local/gdb/sparc64-tdep.c:314:64: error: format `%d' expects argument of type `int', but argument 4 has type `pid_t {aka long int}' [-Werror=format=]
snprintf (filename, sizeof filename, "/proc/%d/adi/maps", pid);
^
You cannot always print a pid_t, which can be either int or long on
Solaris, as an int.
Obviously, the ADI patch which modifies code shared between all SPARC
targets, hasn't been tested on anything but Linux/SPARC.
The patch below includes the minimal fixes necessary to unbreak the
Solaris/SPARC build.
However, as detailed in the PR, there's more breakage here: apart from
not bothering to implement ADI support on Solaris, the code contains
several more changes to shared/common SPARC code that are simply wrong
on anything but Linux/SPARC.
The patch was tested on sparcv9-sun-solaris2.10 and
sparcv9-sun-solaris2.11.4 (build and gdb/gdb gdb/gdb smoke test only).
PR build/22206
* sparc64-tdep.c (adi_tag_fd): Print pid as long.
(adi_is_addr_mapped): Likewise.
(PSR_ICC): Don't redefine.
(PSR_IMPL): Likewise.
2017-09-26 14:58:53 +02:00
|
|
|
|
2017-09-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
PR build/22206
|
|
|
|
|
* sparc64-tdep.c (adi_tag_fd): Print pid as long.
|
|
|
|
|
(adi_is_addr_mapped): Likewise.
|
|
|
|
|
(PSR_ICC): Don't redefine.
|
|
|
|
|
(PSR_IMPL): Likewise.
|
|
|
|
|
|
2017-09-23 23:54:36 +02:00
|
|
|
|
2017-09-25 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache::dump): Use string_printf.
|
|
|
|
|
|
2017-09-23 23:53:30 +02:00
|
|
|
|
2017-09-25 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (class regcache_invalidator): New.
|
|
|
|
|
(struct register_to_invalidate): Remove.
|
|
|
|
|
(make_cleanup_regcache_invalidate): Remove.
|
|
|
|
|
(regcache::raw_write): Use regcache_invalidator.
|
|
|
|
|
|
2017-09-23 23:34:30 +02:00
|
|
|
|
2017-09-25 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* spu-tdep.c (spu2ppu_sniffer): Update.
|
|
|
|
|
* regcache.h (make_cleanup_regcache_xfree): Don't declare.
|
|
|
|
|
* regcache.c (do_regcache_xfree, make_cleanup_regcache_xfree):
|
|
|
|
|
Remove.
|
|
|
|
|
* ppc-linux-tdep.c (ppu2spu_sniffer): Update.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_data_list_changed_registers): Update.
|
|
|
|
|
* frame.h (frame_save_as_regcache): Return std::unique_ptr.
|
|
|
|
|
* frame.c (frame_save_as_regcache): Return std::unique_ptr.
|
|
|
|
|
(frame_pop): Update.
|
|
|
|
|
|
2017-09-23 22:41:07 +02:00
|
|
|
|
2017-09-25 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* spu-tdep.c (spu2ppu_dealloc_cache): Use delete.
|
|
|
|
|
* regcache.h (regcache_xfree): Don't declare.
|
|
|
|
|
* regcache.c (regcache_xfree): Remove.
|
|
|
|
|
(do_regcache_xfree): Use delete.
|
|
|
|
|
* ppc-linux-tdep.c (ppu2spu_dealloc_cache): Use delete.
|
|
|
|
|
* linux-fork.c (free_fork): Use delete.
|
|
|
|
|
(fork_save_infrun_state): Likewise.
|
|
|
|
|
* jit.c (jit_dealloc_cache): Use delete.
|
|
|
|
|
* infrun.c (discard_infcall_suspend_state): Use delete.
|
|
|
|
|
|
2017-09-23 22:39:56 +02:00
|
|
|
|
2017-09-25 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* regcache.h (regcache_xmalloc): Don't declare.
|
|
|
|
|
(regcache_raw_set_cached_value): Update comment.
|
|
|
|
|
* regcache.c (regcache_xmalloc): Remove.
|
|
|
|
|
* ppc-linux-tdep.c (ppu2spu_sniffer): Use new.
|
|
|
|
|
* jit.c (jit_frame_sniffer): Use new.
|
|
|
|
|
* frame.c (frame_save_as_regcache): Use new.
|
|
|
|
|
|
2017-09-25 16:02:24 +02:00
|
|
|
|
2017-09-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Advertise support for guarded-storage registers on IBM z.
|
|
|
|
|
|
2017-09-25 16:02:23 +02:00
|
|
|
|
2017-09-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-nat.c (have_regset_gs): New static variable.
|
|
|
|
|
(s390_linux_fetch_inferior_registers): Handle guarded-storage
|
|
|
|
|
control block and guarded-storage broadcast control regsets.
|
|
|
|
|
(s390_read_description): Detect whether the target has
|
|
|
|
|
guarded-storage support, return appropriate tdesc.
|
|
|
|
|
* s390-linux-tdep.c (features/s390-gs-linux64.c): New include.
|
|
|
|
|
(features/s390x-gs-linux64.c): Likewise.
|
|
|
|
|
(struct gdbarch_tdep) <have_gs>: New field.
|
|
|
|
|
(s390_regmap_gs, s390_regmap_gsbc, s390_gs_regset)
|
|
|
|
|
(s390_gsbc_regset): New variables.
|
|
|
|
|
(s390_iterate_over_regset_sections): Iterate over s390_gs_regset
|
|
|
|
|
and s390_gsbc_regset, if applicable.
|
|
|
|
|
(s390_core_read_description): Check whether core file was from a
|
|
|
|
|
target with guarded-storage support; include appropriate regsets.
|
|
|
|
|
(s390_gdbarch_init): Add registers for guarded-storage support.
|
|
|
|
|
(_initialize_s390_tdep): Initialize new target descriptions that
|
|
|
|
|
include registers for guarded-storage support.
|
|
|
|
|
* s390-linux-tdep.h (HWCAP_S390_GS, S390_GSD_REGNUM)
|
|
|
|
|
(S390_GSSM_REGNUM, S390_GSEPLA_REGNUM)
|
|
|
|
|
(S390_BC_GSD_REGNUM, S390_BC_GSSM_REGNUM): New defines.
|
|
|
|
|
(S390_NUM_REGS): Adjust macro definition.
|
|
|
|
|
(s390_gs_regset, s390_gsbc_regset, tdesc_s390_gs_linux64)
|
|
|
|
|
(tdesc_s390x_gs_linux64): New declarations.
|
|
|
|
|
|
2017-09-25 16:02:23 +02:00
|
|
|
|
2017-09-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* features/s390-gs-linux64.xml: New file.
|
|
|
|
|
* features/s390-gs.xml: New file.
|
|
|
|
|
* features/s390-gsbc.xml: New file.
|
|
|
|
|
* features/s390x-gs-linux64.xml: New file.
|
|
|
|
|
* features/Makefile (WHICH): Add s390-gs-linux64 and
|
|
|
|
|
s390x-gs-linux64.
|
|
|
|
|
(s390-gs-linux64-expedite, s390x-gs-linux64-expedite): New macros.
|
|
|
|
|
(XMLTOC): Add s390-gs-linux64.xml and s390x-linux64.xml.
|
|
|
|
|
* features/s390-gs-linux64.c: New generated file.
|
|
|
|
|
* features/s390x-gs-linux64.c: New file.
|
|
|
|
|
* regformats/s390-gs-linux64.dat: New file.
|
|
|
|
|
* regformats/s390x-gs-linux64.dat: New file.
|
|
|
|
|
|
2017-09-23 22:00:21 +02:00
|
|
|
|
2017-09-23 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* defs.h (make_cleanup_override_quit_handler): Don't declare.
|
|
|
|
|
|
2017-09-21 17:54:25 +02:00
|
|
|
|
2017-09-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (class scoped_input_handler) <m_quit_handler>: Change
|
|
|
|
|
type to scoped_restore_tmpl.
|
|
|
|
|
<scoped_input_handler>: Initialize m_quit_handler directly.
|
|
|
|
|
|
2017-09-11 06:54:33 +02:00
|
|
|
|
2017-09-22 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (pwd_command): Use "getcwd (NULL, 0)".
|
|
|
|
|
(cd_command): Likewise. Free "current_directory" before
|
|
|
|
|
assigning to it.
|
|
|
|
|
* main.c (captured_main_1): Use "getcwd (NULL, 0)".
|
|
|
|
|
* mi/mi-cmd-env.c (mi_cmd_env_pwd): Likewise.
|
|
|
|
|
* top.c (gdb_dirbuf): Remove global declaration.
|
|
|
|
|
* top.h (gdb_dirbuf): Likewise.
|
|
|
|
|
|
Import "glob" and "getcwd" modules from gnulib
These two modules are necessary because of the rework that will be
done in the "change directory" logic on GDB/gdbserver in the next
commits.
First, we will get rid of the "gdb_dirbuf" global variable and instead
rely on the fact that "getcwd (NULL, 0)", which is a GNU extension,
returns a heap-allocated string with the necessary bytes to hold the
full path. This is a good practice not only because globals are not
ideal but also because there is no good way to know beforehand the
size of the full pathname allowed in the filesystem ("PATH_MAX" is not
portable and does not reflect all the possible filesystems out there).
We will also have a way to "cd" to a directory also on gdbserver, but
in order to do that uniformly, there must be a way to do tilde
expansion on directories provided by the user. Currently, GDB uses
"tilde_expand" from readline to do that, but gdbserver doesn't link
against readline and therefore cannot use this function. The solution
is to use "glob" instead, which can perform tilde expansion as a GNU
extension. Therefore, we need gnulib's version of "glob".
A special note is necessary for gdb/ser-tcp.c. It defines "close" as
"closesocket" on Win32 targets. If we leave the code as is, this
would conflict with gnulib's definition of "close". Therefore, in
order to keep the same code path from before this import, I decided to
"#undef close" first, and then let the original (re)definition of it
take place.
gdb/ChangeLog:
2017-09-22 Sergio Durigan Junior <sergiodj@redhat.com>
* gnulib/aclocal.m4: Regenerate.
* gnulib/config.in: Regenerate.
* gnulib/configure: Regenerate.
* gnulib/import/Makefile.am: Regenerate.
* gnulib/import/Makefile.in: Regenerate.
* gnulib/import/assure.h: New file.
* gnulib/import/at-func.c: Likewise
* gnulib/import/chdir-long.c: New file.
* gnulib/import/chdir-long.h: New file.
* gnulib/import/cloexec.c: New file.
* gnulib/import/cloexec.h: New file.
* gnulib/import/close.c: New file.
* gnulib/import/closedir.c: New file.
* gnulib/import/dirent-private.h: New file.
* gnulib/import/dup-safer.c: New file.
* gnulib/import/dup.c: New file.
* gnulib/import/dup2.c: New file.
* gnulib/import/error.c: New file.
* gnulib/import/error.h: New file.
* gnulib/import/exitfail.c: New file.
* gnulib/import/exitfail.h: New file.
* gnulib/import/fchdir.c: New file.
* gnulib/import/fcntl.c: New file.
* gnulib/import/fcntl.in.h: New file.
* gnulib/import/fd-hook.c: New file.
* gnulib/import/fd-hook.h: New file.
* gnulib/import/fd-safer.c: New file.
* gnulib/import/fdopendir.c: New file.
* gnulib/import/filename.h: New file.
* gnulib/import/filenamecat-lgpl.c: New file.
* gnulib/import/filenamecat.h: New file.
* gnulib/import/fstat.c: New file.
* gnulib/import/fstatat.c: New file.
* gnulib/import/getcwd-lgpl.c: New file.
* gnulib/import/getcwd.c: New file.
* gnulib/import/getdtablesize.c: New file.
* gnulib/import/getlogin_r.c: New file.
* gnulib/import/getprogname.c: New file.
* gnulib/import/getprogname.h: New file.
* gnulib/import/gettext.h: New file.
* gnulib/import/glob-libc.h: New file.
* gnulib/import/glob.c: New file.
* gnulib/import/glob.in.h: New file.
* gnulib/import/intprops.h: New file.
* gnulib/import/m4/chdir-long.m4: New file.
* gnulib/import/m4/close.m4: New file.
* gnulib/import/m4/closedir.m4: New file.
* gnulib/import/m4/d-ino.m4: New file.
* gnulib/import/m4/d-type.m4: New file.
* gnulib/import/m4/dup.m4: New file.
* gnulib/import/m4/dup2.m4: New file.
* gnulib/import/m4/error.m4: New file.
* gnulib/import/m4/fchdir.m4: New file.
* gnulib/import/m4/fcntl.m4: New file.
* gnulib/import/m4/fcntl_h.m4: New file.
* gnulib/import/m4/fdopendir.m4: New file.
* gnulib/import/m4/filenamecat.m4: New file.
* gnulib/import/m4/fstat.m4: New file.
* gnulib/import/m4/fstatat.m4: New file.
* gnulib/import/m4/getcwd-abort-bug.m4: New file.
* gnulib/import/m4/getcwd-path-max.m4: New file.
* gnulib/import/m4/getcwd.m4: New file.
* gnulib/import/m4/getdtablesize.m4: New file.
* gnulib/import/m4/getlogin_r.m4: New file.
* gnulib/import/m4/getprogname.m4: New file.
* gnulib/import/m4/glob.m4: New file.
* gnulib/import/m4/gnulib-cache.m4: Regenerate.
* gnulib/import/m4/gnulib-comp.m4: Regenerate.
* gnulib/import/m4/mempcpy.m4: New file.
* gnulib/import/m4/memrchr.m4: New file.
* gnulib/import/m4/mode_t.m4: New file.
* gnulib/import/m4/msvc-inval.m4: New file.
* gnulib/import/m4/msvc-nothrow.m4: New file.
* gnulib/import/m4/open.m4: New file.
* gnulib/import/m4/openat.m4: New file.
* gnulib/import/m4/opendir.m4: New file.
* gnulib/import/m4/readdir.m4: New file.
* gnulib/import/m4/realloc.m4: New file.
* gnulib/import/m4/rewinddir.m4: New file.
* gnulib/import/m4/save-cwd.m4: New file.
* gnulib/import/m4/strdup.m4: New file.
* gnulib/import/m4/strerror.m4: New file.
* gnulib/import/m4/unistd-safer.m4: New file.
* gnulib/import/mempcpy.c: New file.
* gnulib/import/memrchr.c: New file.
* gnulib/import/msvc-inval.c: New file.
* gnulib/import/msvc-inval.h: New file.
* gnulib/import/msvc-nothrow.c: New file.
* gnulib/import/msvc-nothrow.h: New file.
* gnulib/import/open.c: New file.
* gnulib/import/openat-die.c: New file.
* gnulib/import/openat-priv.h: New file.
* gnulib/import/openat-proc.c: New file.
* gnulib/import/openat.c: New file.
* gnulib/import/openat.h: New file.
* gnulib/import/opendir.c: New file.
* gnulib/import/pipe-safer.c: New file.
* gnulib/import/readdir.c: New file.
* gnulib/import/realloc.c: New file.
* gnulib/import/rewinddir.c: New file.
* gnulib/import/save-cwd.c: New file.
* gnulib/import/save-cwd.h: New file.
* gnulib/import/strdup.c: New file.
* gnulib/import/strerror-override.c: New file.
* gnulib/import/strerror-override.h: New file.
* gnulib/import/strerror.c: New file.
* gnulib/import/unistd--.h: New file.
* gnulib/import/unistd-safer.h: New file.
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add
"getcwd" and "glob".
* ser-tcp.c: Undefine "close" before redefining it.
2017-09-09 02:09:12 +02:00
|
|
|
|
2017-09-22 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gnulib/aclocal.m4: Regenerate.
|
|
|
|
|
* gnulib/config.in: Regenerate.
|
|
|
|
|
* gnulib/configure: Regenerate.
|
|
|
|
|
* gnulib/import/Makefile.am: Regenerate.
|
|
|
|
|
* gnulib/import/Makefile.in: Regenerate.
|
|
|
|
|
* gnulib/import/assure.h: New file.
|
|
|
|
|
* gnulib/import/at-func.c: Likewise
|
|
|
|
|
* gnulib/import/chdir-long.c: New file.
|
|
|
|
|
* gnulib/import/chdir-long.h: New file.
|
|
|
|
|
* gnulib/import/cloexec.c: New file.
|
|
|
|
|
* gnulib/import/cloexec.h: New file.
|
|
|
|
|
* gnulib/import/close.c: New file.
|
|
|
|
|
* gnulib/import/closedir.c: New file.
|
|
|
|
|
* gnulib/import/dirent-private.h: New file.
|
|
|
|
|
* gnulib/import/dup-safer.c: New file.
|
|
|
|
|
* gnulib/import/dup.c: New file.
|
|
|
|
|
* gnulib/import/dup2.c: New file.
|
|
|
|
|
* gnulib/import/error.c: New file.
|
|
|
|
|
* gnulib/import/error.h: New file.
|
|
|
|
|
* gnulib/import/exitfail.c: New file.
|
|
|
|
|
* gnulib/import/exitfail.h: New file.
|
|
|
|
|
* gnulib/import/fchdir.c: New file.
|
|
|
|
|
* gnulib/import/fcntl.c: New file.
|
|
|
|
|
* gnulib/import/fcntl.in.h: New file.
|
|
|
|
|
* gnulib/import/fd-hook.c: New file.
|
|
|
|
|
* gnulib/import/fd-hook.h: New file.
|
|
|
|
|
* gnulib/import/fd-safer.c: New file.
|
|
|
|
|
* gnulib/import/fdopendir.c: New file.
|
|
|
|
|
* gnulib/import/filename.h: New file.
|
|
|
|
|
* gnulib/import/filenamecat-lgpl.c: New file.
|
|
|
|
|
* gnulib/import/filenamecat.h: New file.
|
|
|
|
|
* gnulib/import/fstat.c: New file.
|
|
|
|
|
* gnulib/import/fstatat.c: New file.
|
|
|
|
|
* gnulib/import/getcwd-lgpl.c: New file.
|
|
|
|
|
* gnulib/import/getcwd.c: New file.
|
|
|
|
|
* gnulib/import/getdtablesize.c: New file.
|
|
|
|
|
* gnulib/import/getlogin_r.c: New file.
|
|
|
|
|
* gnulib/import/getprogname.c: New file.
|
|
|
|
|
* gnulib/import/getprogname.h: New file.
|
|
|
|
|
* gnulib/import/gettext.h: New file.
|
|
|
|
|
* gnulib/import/glob-libc.h: New file.
|
|
|
|
|
* gnulib/import/glob.c: New file.
|
|
|
|
|
* gnulib/import/glob.in.h: New file.
|
|
|
|
|
* gnulib/import/intprops.h: New file.
|
|
|
|
|
* gnulib/import/m4/chdir-long.m4: New file.
|
|
|
|
|
* gnulib/import/m4/close.m4: New file.
|
|
|
|
|
* gnulib/import/m4/closedir.m4: New file.
|
|
|
|
|
* gnulib/import/m4/d-ino.m4: New file.
|
|
|
|
|
* gnulib/import/m4/d-type.m4: New file.
|
|
|
|
|
* gnulib/import/m4/dup.m4: New file.
|
|
|
|
|
* gnulib/import/m4/dup2.m4: New file.
|
|
|
|
|
* gnulib/import/m4/error.m4: New file.
|
|
|
|
|
* gnulib/import/m4/fchdir.m4: New file.
|
|
|
|
|
* gnulib/import/m4/fcntl.m4: New file.
|
|
|
|
|
* gnulib/import/m4/fcntl_h.m4: New file.
|
|
|
|
|
* gnulib/import/m4/fdopendir.m4: New file.
|
|
|
|
|
* gnulib/import/m4/filenamecat.m4: New file.
|
|
|
|
|
* gnulib/import/m4/fstat.m4: New file.
|
|
|
|
|
* gnulib/import/m4/fstatat.m4: New file.
|
|
|
|
|
* gnulib/import/m4/getcwd-abort-bug.m4: New file.
|
|
|
|
|
* gnulib/import/m4/getcwd-path-max.m4: New file.
|
|
|
|
|
* gnulib/import/m4/getcwd.m4: New file.
|
|
|
|
|
* gnulib/import/m4/getdtablesize.m4: New file.
|
|
|
|
|
* gnulib/import/m4/getlogin_r.m4: New file.
|
|
|
|
|
* gnulib/import/m4/getprogname.m4: New file.
|
|
|
|
|
* gnulib/import/m4/glob.m4: New file.
|
|
|
|
|
* gnulib/import/m4/gnulib-cache.m4: Regenerate.
|
|
|
|
|
* gnulib/import/m4/gnulib-comp.m4: Regenerate.
|
|
|
|
|
* gnulib/import/m4/mempcpy.m4: New file.
|
|
|
|
|
* gnulib/import/m4/memrchr.m4: New file.
|
|
|
|
|
* gnulib/import/m4/mode_t.m4: New file.
|
|
|
|
|
* gnulib/import/m4/msvc-inval.m4: New file.
|
|
|
|
|
* gnulib/import/m4/msvc-nothrow.m4: New file.
|
|
|
|
|
* gnulib/import/m4/open.m4: New file.
|
|
|
|
|
* gnulib/import/m4/openat.m4: New file.
|
|
|
|
|
* gnulib/import/m4/opendir.m4: New file.
|
|
|
|
|
* gnulib/import/m4/readdir.m4: New file.
|
|
|
|
|
* gnulib/import/m4/realloc.m4: New file.
|
|
|
|
|
* gnulib/import/m4/rewinddir.m4: New file.
|
|
|
|
|
* gnulib/import/m4/save-cwd.m4: New file.
|
|
|
|
|
* gnulib/import/m4/strdup.m4: New file.
|
|
|
|
|
* gnulib/import/m4/strerror.m4: New file.
|
|
|
|
|
* gnulib/import/m4/unistd-safer.m4: New file.
|
|
|
|
|
* gnulib/import/mempcpy.c: New file.
|
|
|
|
|
* gnulib/import/memrchr.c: New file.
|
|
|
|
|
* gnulib/import/msvc-inval.c: New file.
|
|
|
|
|
* gnulib/import/msvc-inval.h: New file.
|
|
|
|
|
* gnulib/import/msvc-nothrow.c: New file.
|
|
|
|
|
* gnulib/import/msvc-nothrow.h: New file.
|
|
|
|
|
* gnulib/import/open.c: New file.
|
|
|
|
|
* gnulib/import/openat-die.c: New file.
|
|
|
|
|
* gnulib/import/openat-priv.h: New file.
|
|
|
|
|
* gnulib/import/openat-proc.c: New file.
|
|
|
|
|
* gnulib/import/openat.c: New file.
|
|
|
|
|
* gnulib/import/openat.h: New file.
|
|
|
|
|
* gnulib/import/opendir.c: New file.
|
|
|
|
|
* gnulib/import/pipe-safer.c: New file.
|
|
|
|
|
* gnulib/import/readdir.c: New file.
|
|
|
|
|
* gnulib/import/realloc.c: New file.
|
|
|
|
|
* gnulib/import/rewinddir.c: New file.
|
|
|
|
|
* gnulib/import/save-cwd.c: New file.
|
|
|
|
|
* gnulib/import/save-cwd.h: New file.
|
|
|
|
|
* gnulib/import/strdup.c: New file.
|
|
|
|
|
* gnulib/import/strerror-override.c: New file.
|
|
|
|
|
* gnulib/import/strerror-override.h: New file.
|
|
|
|
|
* gnulib/import/strerror.c: New file.
|
|
|
|
|
* gnulib/import/unistd--.h: New file.
|
|
|
|
|
* gnulib/import/unistd-safer.h: New file.
|
|
|
|
|
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add
|
|
|
|
|
"getcwd" and "glob".
|
|
|
|
|
* ser-tcp.c: Undefine "close" before redefining it.
|
|
|
|
|
|
2017-09-21 16:37:40 +02:00
|
|
|
|
2017-09-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_address): Initialize address,
|
|
|
|
|
get rid of res_val.
|
|
|
|
|
|
Fix gdb 8.1 Solaris compilation
I just tried to compile gdb trunk on Solaris 11.4 (formerly 12), and
failed for a couple of reasons:
*
In file included from /usr/include/python2.7/Python.h:128:0,
from /vol/src/gnu/gdb/gdb/dist/gdb/python/python-internal.h:94,
from /vol/src/gnu/gdb/gdb/dist/gdb/python/py-instruction.h:23,
from /vol/src/gnu/gdb/gdb/dist/gdb/python/py-instruction.c:21:
/usr/include/python2.7/ceval.h:67:0: error: ignoring #pragma no_inline [-Werror=unknown-pragmas]
#pragma no_inline(PyEval_EvalFrameEx)
^
New in Solaris 11.4: <python2.7/ceval.h> uses a Studio-only #pragma.
I've disabled the warning in warnings.m4.
*
/vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c: In function ‘int pipe_open(serial*, const char*)’:
/vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c:77:9: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
pid = vfork ();
^
/vol/src/gnu/gdb/gdb/dist/gdb/ser-pipe.c:77:16: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
pid = vfork ();
^
Since Solaris 11, vfork () is marked deprecated in <unistd.h>.
cf. vfork(2):
The vfork() and vforkx() functions are deprecated. Their sole legiti-
mate use as a prelude to an immediate call to a function from the exec
family can be achieved safely by posix_spawn(3C) or posix_spawnp(3C).
Again, I've disabled the warning.
*
/vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c: In function ‘void shell_escape(const char*, int)’:
/vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c:750:14: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
if ((pid = vfork ()) == 0)
^
/vol/src/gnu/gdb/gdb/dist/gdb/cli/cli-cmds.c:750:21: error: ‘pid_t vfork()’ is deprecated (declared at /usr/include/unistd.h:659) [-Werror=deprecated-declarations]
if ((pid = vfork ()) == 0)
^
Same problem.
*
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function ‘void procfs_init_inferior(target_ops*, int)’:
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:4380:30: error: ‘START_INFERIOR_TRAPS_EXPECTED’ was not declared in this scope
gdb_startup_inferior (pid, START_INFERIOR_TRAPS_EXPECTED);
^
defined in nat/fork-inferior.h, need to include that header
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function ‘void procfs_create_inferior(target_ops*, const char*, const string&, char**, int)’:
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:4605:38: error: ‘fork_inferior’ was not declared in this scope
NULL, NULL, shell_file, NULL);
^
likewise
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c: In function ‘void procfs_info_proc(target_ops*, const char*, info_proc_what)’:
/vol/src/gnu/gdb/gdb/dist/gdb/procfs.c:5124:20: error: ‘argv’ was not declared in this scope
for (char *arg : argv)
^
Typo, should be built_argv instead!
*
Undefined first referenced
symbol in file
fork_inferior(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*)) procfs.o
startup_inferior(int, int, target_waitstatus*, ptid_t*) fork-child.o
ld: fatal: symbol referencing errors
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:2249: gdb] Error 1
Need to add fork-inferior.o to NATDEPFILES.
With the changes below, I can build gdb on sparcv9-sun-solaris2.11 and
amd64-pc-solaris2.11 and a simple smoke test (gdb/gdb gdb/gdb) works.
2017-09-22 10:42:45 +02:00
|
|
|
|
2017-09-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
* configure.nat <i386sol2,i386>: Add fork-inferior.o to NATDEPFILES.
|
|
|
|
|
<sol2,sparc>: Likewise.
|
|
|
|
|
<sol2-64,i386>: Likewise.
|
|
|
|
|
|
|
|
|
|
* warning.m4 (AM_GDB_WARNINGS): Disable -Wunknown-pragmas,
|
|
|
|
|
-Wdeprecated-declarations on *-*-solaris*.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
|
|
|
|
* procfs.c: Include "nat/inferior.h".
|
|
|
|
|
(procfs_info_proc): Fix typo.
|
|
|
|
|
|
2017-04-05 01:17:05 +02:00
|
|
|
|
2017-09-21 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (vector): Include.
|
|
|
|
|
(struct private_thread_info): Add field, thread_handle.
|
|
|
|
|
(free_private_thread_info): Deallocate storage associated with
|
|
|
|
|
thread handle.
|
|
|
|
|
(get_private_info_thread): Initialize `thread_handle' field.
|
|
|
|
|
(struct thread_item): Add field, thread_handle.
|
|
|
|
|
(clear_threads_listing_context): Deallocate storage associated
|
|
|
|
|
with thread handle.
|
|
|
|
|
(start_thread): Add support for "handle" attribute.
|
|
|
|
|
(thread_attributes): Add "handle".
|
|
|
|
|
(remote_get_threads_with_qthreadinfo): Initialize thread_handle
|
|
|
|
|
field.
|
|
|
|
|
(remote_update_thread_list): Update thread_handle.
|
|
|
|
|
(remote_thread_handle_to_thread_info): New function.
|
|
|
|
|
(init_remote_ops): Initialize to_thread_handle_to_thread_info.
|
|
|
|
|
|
2016-05-05 01:23:08 +02:00
|
|
|
|
2017-09-21 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (gdbpy_thread_from_thread_handle): New
|
|
|
|
|
function.
|
|
|
|
|
(inferior_object_methods): Add gdbpy_thread_from_thread_handle.
|
|
|
|
|
* python/python-internal.h (thread_object_type): Declare.
|
|
|
|
|
|
2016-05-05 00:21:12 +02:00
|
|
|
|
2017-09-21 Kevin Buettner <kevinb@redhat.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct target_ops): Add to_thread_handle_to_thread_info.
|
|
|
|
|
(target_thread_handle_to_thread_info): Declare.
|
|
|
|
|
* target.c (target_thread_handle_to_thread_info): New function.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* gdbthread.h (find_thread_by_handle): Declare.
|
|
|
|
|
* thread.c (find_thread_by_handle): New function.
|
|
|
|
|
* linux-thread-db.c (thread_db_thread_handle_to_thread_info): New
|
|
|
|
|
function.
|
|
|
|
|
(init_thread_db_ops): Register thread_db_thread_handle_to_thread_info.
|
|
|
|
|
|
2017-09-21 15:19:40 +02:00
|
|
|
|
2017-09-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-waitpid.c (linux_debug): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
|
2017-09-21 14:09:33 +02:00
|
|
|
|
2017-09-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* microblaze-tdep.c (microblaze_debug): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
|
2017-09-21 10:19:23 +02:00
|
|
|
|
2017-09-21 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* configure.tgt (aarch64*-*-freebsd*): Add fbsd-tdep.o solib-svr4.o
|
|
|
|
|
to gdb_target_obs.
|
|
|
|
|
|
2017-08-22 05:51:11 +02:00
|
|
|
|
2017-09-20 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (struct counted_command_line): Remove.
|
|
|
|
|
(breakpoint_commands): Update.
|
|
|
|
|
(alloc_counted_command_line, incref_counted_command_line)
|
|
|
|
|
(decref_counted_command_line, do_cleanup_counted_command_line)
|
|
|
|
|
(make_cleanup_decref_counted_command_line): Remove.
|
|
|
|
|
(breakpoint_set_commands, commands_command_1, ~bpstats, bpstats)
|
|
|
|
|
(bpstat_clear_actions, bpstat_do_actions_1, watchpoint_check)
|
|
|
|
|
(bpstat_stop_status, print_one_breakpoint_location, ~breakpoint)
|
|
|
|
|
(save_breakpoints): Update.
|
|
|
|
|
* breakpoint.h (counted_command_line): Now a typedef to
|
|
|
|
|
shared_ptr.
|
|
|
|
|
(struct breakpoint) <commands>: Now a counted_command_line.
|
|
|
|
|
(struct bpstats) <command>: Likewise.
|
|
|
|
|
|
2017-08-22 05:37:45 +02:00
|
|
|
|
2017-09-20 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (struct commands_info, do_map_commands_command):
|
|
|
|
|
Remove.
|
|
|
|
|
(commands_command_1): Update.
|
|
|
|
|
(iterate_over_related_breakpoints): Take a function_view.
|
|
|
|
|
(do_delete_breakpoint, do_map_delete_breakpoint): Remove.
|
|
|
|
|
(delete_command): Update.
|
|
|
|
|
(map_breakpoint_numbers): Take a function_view.
|
|
|
|
|
(do_disable_breakpoint, do_map_delete_breakpoint): Remove.
|
|
|
|
|
(disable_command): Update.
|
|
|
|
|
(do_enable_breakpoint, do_map_enable_breakpoint): Remove.
|
|
|
|
|
(enable_command): Update.
|
|
|
|
|
(struct disp_data, do_enable_breakpoint_disp)
|
|
|
|
|
(do_map_enable_once_breakpoint, do_map_enable_count_breakpoint)
|
|
|
|
|
(do_map_enable_delete_breakpoint): Remove.
|
|
|
|
|
(enable_once_command, enable_count_command, enable_delete_command)
|
|
|
|
|
(delete_trace_variable_command): Update.
|
|
|
|
|
|
2017-08-22 05:08:59 +02:00
|
|
|
|
2017-09-20 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (~bpstats): Rename from bpstat_free. Update.
|
|
|
|
|
(bpstat_clear): Use delete.
|
|
|
|
|
(bpstats): New constructors.
|
|
|
|
|
(bpstat_copy, bpstat_stop_status): Use new.
|
|
|
|
|
(dprintf_after_condition_true): Update.
|
|
|
|
|
* breakpoint.h (bpstats::bpstats): Add constructors.
|
|
|
|
|
(bpstats::~bpstats): Add destructor.
|
|
|
|
|
|
2017-09-21 01:34:41 +02:00
|
|
|
|
2017-09-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (make_params): Delete, refactored as ...
|
|
|
|
|
(class fake_method): ... this new type's ctor.
|
|
|
|
|
(fake_method::~fake_method): New.
|
|
|
|
|
(evaluate_subexp_standard): Use 'fake_method'.
|
|
|
|
|
|
Remove make_cleanup_restore_target_terminal
This removes make_cleanup_restore_target_terminal and generally
C++-ifies target terminal handling. It changes all target_terminal_*
functions to be static members of a new target_terminal class and
changes the cleanup to be a scoped_* class.
make_cleanup_override_quit_handler is also removed in favor of simply
using scoped_restore.
Note that there are some files in this patch that I could not compile.
Considering that some of the rewrites were automated, and that none of
these files involed cleanups, I feel that this is relatively safe.
Regression tested by the buildbot.
gdb/ChangeLog
2017-09-20 Tom Tromey <tom@tromey.com>
* windows-nat.c (get_windows_debug_event, windows_wait)
(do_initial_windows_stuff, windows_attach): Update.
* utils.c (vwarning, internal_vproblem): Update.
(ui_unregister_input_event_handler_cleanup)
(prepare_to_handle_input): Remove.
(class scoped_input_handler): New.
(defaulted_query, prompt_for_continue): Update.
* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
Update.
* top.c (undo_terminal_modifications_before_exit): Update.
* target/target.h (target_terminal_init, target_terminal_inferior)
(target_terminal_ours): Don't declare.
(class target_terminal): New.
* target.h (target_terminal_is_inferior, target_terminal_is_ours)
(target_terminal_ours_for_output)
(make_cleanup_restore_target_terminal): Don't declare.
(target_terminal_info): Remove.
* target.c (enum terminal_state, terminal_state): Remove.
(target_terminal::terminal_state): Define.
(target_terminal::init): Rename from target_terminal_init.
(target_terminal::inferior): Rename from
target_terminal_inferior.
(target_terminal::ours): Rename from target_terminal_ours.
(target_terminal::ours_for_output): Rename from
target_terminal_ours_for_output.
(target_terminal::info): New method.
(cleanup_restore_target_terminal)
(make_cleanup_restore_target_terminal): Remove.
* solib.c (handle_solib_event): Update.
* remote.c (remote_serial_quit_handler): Update.
(remote_terminal_inferior, remote_wait_as): Update.
* record-full.c (record_full_wait_1): Update.
* nto-procfs.c (procfs_create_inferior): Update.
* nat/fork-inferior.c (startup_inferior): Update.
* mi/mi-interp.c (mi_new_thread, mi_thread_exit)
(mi_record_changed, mi_inferior_added, mi_inferior_appeared)
(mi_inferior_exit, mi_inferior_removed, mi_traceframe_changed)
(mi_tsv_created, mi_tsv_deleted, mi_tsv_modified)
(mi_breakpoint_created, mi_breakpoint_deleted)
(mi_breakpoint_modified, mi_on_resume, mi_solib_loaded)
(mi_solib_unloaded, mi_command_param_changed, mi_memory_changed)
(mi_user_selected_context_changed, report_initial_inferior):
Update.
* linux-nat.c (linux_nat_attach, linux_nat_terminal_ours)
(linux_nat_terminal_inferior): Update.
* infrun.c (follow_fork_inferior)
(handle_vfork_child_exec_or_exit, do_target_resume)
(check_curr_ui_sync_execution_done, handle_inferior_event_1)
(handle_signal_stop, maybe_remove_breakpoints, normal_stop):
Update.
* inflow.c (child_terminal_init, info_terminal_command): Update.
* infcmd.c (post_create_inferior, continue_1, prepare_one_step)
(attach_command): Update.
* infcall.c (call_thread_fsm_should_stop): Update.
* gnu-nat.c (gnu_attach): Update.
* extension.c (struct active_ext_lang_state)
(restore_active_ext_lang): Update.
* exceptions.c (print_flush): Update.
* event-top.c (async_enable_stdin, default_quit_handler): Update.
(struct quit_handler_cleanup_data, restore_quit_handler)
(restore_quit_handler_dtor, make_cleanup_override_quit_handler):
Remove.
* cp-support.c (gdb_demangle): Update.
* breakpoint.c (update_inserted_breakpoint_locations)
(insert_breakpoint_locations, handle_jit_event)
(disable_breakpoints_in_unloaded_shlib): Update.
* annotate.c (annotate_breakpoints_invalid)
(annotate_frames_invalid): Update.
gdb/gdbserver/ChangeLog
2017-09-20 Tom Tromey <tom@tromey.com>
* target.c (target_terminal::terminal_state): Define.
(target_terminal::init): Rename from target_terminal_init.
(target_terminal::inferior): Rename from
target_terminal_inferior.
(target_terminal::ours): Rename from target_terminal_ours.
(target_terminal::ours_for_output, target_terminal::info): New.
2017-09-20 05:56:36 +02:00
|
|
|
|
2017-09-20 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (get_windows_debug_event, windows_wait)
|
|
|
|
|
(do_initial_windows_stuff, windows_attach): Update.
|
|
|
|
|
* utils.c (vwarning, internal_vproblem): Update.
|
|
|
|
|
(ui_unregister_input_event_handler_cleanup)
|
|
|
|
|
(prepare_to_handle_input): Remove.
|
|
|
|
|
(class scoped_input_handler): New.
|
|
|
|
|
(defaulted_query, prompt_for_continue): Update.
|
|
|
|
|
* tui/tui-hooks.c (tui_refresh_frame_and_register_information):
|
|
|
|
|
Update.
|
|
|
|
|
* top.c (undo_terminal_modifications_before_exit): Update.
|
|
|
|
|
* target/target.h (target_terminal_init, target_terminal_inferior)
|
|
|
|
|
(target_terminal_ours): Don't declare.
|
|
|
|
|
(class target_terminal): New.
|
|
|
|
|
* target.h (target_terminal_is_inferior, target_terminal_is_ours)
|
|
|
|
|
(target_terminal_ours_for_output)
|
|
|
|
|
(make_cleanup_restore_target_terminal): Don't declare.
|
|
|
|
|
(target_terminal_info): Remove.
|
|
|
|
|
* target.c (enum terminal_state, terminal_state): Remove.
|
|
|
|
|
(target_terminal::terminal_state): Define.
|
|
|
|
|
(target_terminal::init): Rename from target_terminal_init.
|
|
|
|
|
(target_terminal::inferior): Rename from
|
|
|
|
|
target_terminal_inferior.
|
|
|
|
|
(target_terminal::ours): Rename from target_terminal_ours.
|
|
|
|
|
(target_terminal::ours_for_output): Rename from
|
|
|
|
|
target_terminal_ours_for_output.
|
|
|
|
|
(target_terminal::info): New method.
|
|
|
|
|
(cleanup_restore_target_terminal)
|
|
|
|
|
(make_cleanup_restore_target_terminal): Remove.
|
|
|
|
|
* solib.c (handle_solib_event): Update.
|
|
|
|
|
* remote.c (remote_serial_quit_handler): Update.
|
|
|
|
|
(remote_terminal_inferior, remote_wait_as): Update.
|
|
|
|
|
* record-full.c (record_full_wait_1): Update.
|
|
|
|
|
* nto-procfs.c (procfs_create_inferior): Update.
|
|
|
|
|
* nat/fork-inferior.c (startup_inferior): Update.
|
|
|
|
|
* mi/mi-interp.c (mi_new_thread, mi_thread_exit)
|
|
|
|
|
(mi_record_changed, mi_inferior_added, mi_inferior_appeared)
|
|
|
|
|
(mi_inferior_exit, mi_inferior_removed, mi_traceframe_changed)
|
|
|
|
|
(mi_tsv_created, mi_tsv_deleted, mi_tsv_modified)
|
|
|
|
|
(mi_breakpoint_created, mi_breakpoint_deleted)
|
|
|
|
|
(mi_breakpoint_modified, mi_on_resume, mi_solib_loaded)
|
|
|
|
|
(mi_solib_unloaded, mi_command_param_changed, mi_memory_changed)
|
|
|
|
|
(mi_user_selected_context_changed, report_initial_inferior):
|
|
|
|
|
Update.
|
|
|
|
|
* linux-nat.c (linux_nat_attach, linux_nat_terminal_ours)
|
|
|
|
|
(linux_nat_terminal_inferior): Update.
|
|
|
|
|
* infrun.c (follow_fork_inferior)
|
|
|
|
|
(handle_vfork_child_exec_or_exit, do_target_resume)
|
|
|
|
|
(check_curr_ui_sync_execution_done, handle_inferior_event_1)
|
|
|
|
|
(handle_signal_stop, maybe_remove_breakpoints, normal_stop):
|
|
|
|
|
Update.
|
|
|
|
|
* inflow.c (child_terminal_init, info_terminal_command): Update.
|
|
|
|
|
* infcmd.c (post_create_inferior, continue_1, prepare_one_step)
|
|
|
|
|
(attach_command): Update.
|
|
|
|
|
* infcall.c (call_thread_fsm_should_stop): Update.
|
|
|
|
|
* gnu-nat.c (gnu_attach): Update.
|
|
|
|
|
* extension.c (struct active_ext_lang_state)
|
|
|
|
|
(restore_active_ext_lang): Update.
|
|
|
|
|
* exceptions.c (print_flush): Update.
|
|
|
|
|
* event-top.c (async_enable_stdin, default_quit_handler): Update.
|
|
|
|
|
(struct quit_handler_cleanup_data, restore_quit_handler)
|
|
|
|
|
(restore_quit_handler_dtor, make_cleanup_override_quit_handler):
|
|
|
|
|
Remove.
|
|
|
|
|
* cp-support.c (gdb_demangle): Update.
|
|
|
|
|
* breakpoint.c (update_inserted_breakpoint_locations)
|
|
|
|
|
(insert_breakpoint_locations, handle_jit_event)
|
|
|
|
|
(disable_breakpoints_in_unloaded_shlib): Update.
|
|
|
|
|
* annotate.c (annotate_breakpoints_invalid)
|
|
|
|
|
(annotate_frames_invalid): Update.
|
|
|
|
|
|
2017-09-12 22:14:33 +02:00
|
|
|
|
2017-09-20 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* main.c (catch_command_errors): Rename from
|
|
|
|
|
catch_command_errors_const.
|
|
|
|
|
(captured_main_1): Update.
|
|
|
|
|
|
Make "list ambiguous" show symbol names too
Currently, with an ambiguous "list first,last", we get:
(gdb) list bar,main
Specified first line 'bar' is ambiguous:
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98
This commit makes gdb's output above a bit clearer by printing the
symbol name as well:
(gdb) list bar,main
Specified first line 'bar' is ambiguous:
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97, symbol: "bar(A)"
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98, symbol: "bar(B)"
And while at it, makes gdb print the symbol name when actually listing
multiple locations too. I.e., before (with "set listsize 2"):
(gdb) list bar
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97
96
97 int bar (A) { return 11; }
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98
97 int bar (A) { return 11; }
98 int bar (B) { return 22; }
After:
(gdb) list bar
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 97, symbol: "bar(A)"
96
97 int bar (A) { return 11; }
file: "src/gdb/testsuite/gdb.cp/overload.cc", line number: 98, symbol: "bar(B)"
97 int bar (A) { return 11; }
98 int bar (B) { return 22; }
Currently, the result of decoding a linespec loses information about
the original symbol that was found. All we end up with is an address.
This makes it difficult to find the original symbol again to get at
its print name. Fix that by storing a pointer to the symbol in the
sal. We already store the symtab and obj_section, so it feels like a
natural progression to me. This avoids having to do any extra symbol
lookup too.
gdb/ChangeLog:
2017-09-20 Pedro Alves <palves@redhat.com>
* cli/cli-cmds.c (list_command): Use print_sal_location.
(print_sal_location): New function.
(ambiguous_line_spec): Use print_sal_location.
* linespec.c (symbol_to_sal): Record the symbol in the sal.
* symtab.c (find_function_start_sal): Likewise.
* symtab.h (symtab_and_line::symbol): New field.
gdb/testsuite/ChangeLog:
2017-09-20 Pedro Alves <palves@redhat.com>
* gdb.base/list-ambiguous.exp (test_list_ambiguous_symbol): Expect
symbol names in gdb's output.
* gdb.cp/overload.exp ("list all overloads"): Likewise.
2017-09-20 17:12:54 +02:00
|
|
|
|
2017-09-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (list_command): Use print_sal_location.
|
|
|
|
|
(print_sal_location): New function.
|
|
|
|
|
(ambiguous_line_spec): Use print_sal_location.
|
|
|
|
|
* linespec.c (symbol_to_sal): Record the symbol in the sal.
|
|
|
|
|
* symtab.c (find_function_start_sal): Likewise.
|
|
|
|
|
* symtab.h (symtab_and_line::symbol): New field.
|
|
|
|
|
|
Fix "list ambiguous_variable"
The "list" command allows specifying the name of variables as
argument, not just functions, so that users can type "list
a_global_variable".
That support is a broken when it comes to ambiguous locations though.
If there's more than one such global variable in the program, e.g.,
static globals in different compilation units, GDB ends up listing the
source of the first variable it finds, only.
linespec.c does find both symbol and minsym locations for all the
globals. The problem is that it ends up merging all the resulting
sals into one, because they all have address, zero. I.e., all sals
end up with sal.pc == 0, so maybe_add_address returns false for all
but the first.
The zero addresses appear because:
- in the minsyms case, linespec.c:minsym_found incorrectly treats all
minsyms as if they were function/text symbols. In list mode we can
end up with data symbols there, and we shouldn't be using
find_pc_sect_line on data symbols.
- in the debug symbols case, symbol_to_sal misses recording an address
(sal.pc) for non-block, non-label symbols.
gdb/ChangeLog:
2017-09-20 Pedro Alves <palves@redhat.com>
* linespec.c (minsym_found): Handle non-text minsyms.
(symbol_to_sal): Record a sal.pc for non-block, non-label symbols.
gdb/testsuite/ChangeLog:
2017-09-20 Pedro Alves <palves@redhat.com>
* gdb.base/list-ambiguous.exp (test_list_ambiguous_function):
Rename to ...
(test_list_ambiguous_symbol): ... this and add a symbol name
parameter. Adjust.
(test_list_ambiguous_function): Reimplement on top of
test_list_ambiguous_symbol and also test listing ambiguous
variables.
* gdb.base/list-ambiguous0.c (ambiguous): Rename to ...
(ambiguous_fun): ... this.
(ambiguous_var): New.
* gdb.base/list-ambiguous1.c (ambiguous): Rename to ...
(ambiguous_fun): ... this.
(ambiguous_var): New.
2017-09-20 17:12:54 +02:00
|
|
|
|
2017-09-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (minsym_found): Handle non-text minsyms.
|
|
|
|
|
(symbol_to_sal): Record a sal.pc for non-block, non-label symbols.
|
|
|
|
|
|
2017-09-20 15:24:47 +02:00
|
|
|
|
2017-09-20 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* features/Makefile (i386-avx-mpx-avx512-pku.dat): Add missing
|
|
|
|
|
backslash.
|
|
|
|
|
|
2017-09-20 14:47:04 +02:00
|
|
|
|
2017-09-20 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* gdb.arch/i386-avx512.c (move_zmm_data_to_reg): Use
|
|
|
|
|
vmovups instead vmovaps.
|
|
|
|
|
(move_zmm_data_to_memory): Use vmovups instead vmovaps.
|
|
|
|
|
|
2017-09-11 23:57:37 +02:00
|
|
|
|
2017-09-19 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 8.0): Add starti.
|
|
|
|
|
* infcmd.c (enum run_break): New.
|
|
|
|
|
(run_command_1): Queue pending event for RUN_STOP_AT_FIRST_INSN
|
|
|
|
|
case.
|
|
|
|
|
(run_command): Use enum run_how.
|
|
|
|
|
(start_command): Likewise.
|
|
|
|
|
(starti_command): New function.
|
|
|
|
|
(RUN_ARGS_HELP): New macro.
|
|
|
|
|
(_initialize_infcmd): Use RUN_ARGS_HELP for run and start
|
|
|
|
|
commands. Add starti command.
|
|
|
|
|
|
2017-09-19 11:18:57 +02:00
|
|
|
|
2017-09-19 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (monitor.o): Remove the rule.
|
|
|
|
|
|
2017-09-19 11:10:03 +02:00
|
|
|
|
2017-09-19 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* annotate.h (struct annotate_arg_emitter): Use
|
|
|
|
|
DISABLE_COPY_AND_ASSIGN.
|
|
|
|
|
* common/refcounted-object.h (refcounted_object): Likewise.
|
|
|
|
|
* completer.h (struct completion_result): Likewise.
|
|
|
|
|
* dwarf2read.c (struct dwarf2_per_objfile): Likewise.
|
|
|
|
|
* filename-seen-cache.h (filename_seen_cache): Likewise.
|
|
|
|
|
* gdbcore.h (thread_section_name): Likewise.
|
|
|
|
|
* gdb_regex.h (compiled_regex): Likewise.
|
|
|
|
|
* gdbthread.h (scoped_restore_current_thread): Likewise.
|
|
|
|
|
* inferior.h (scoped_restore_current_inferior): Likewise.
|
|
|
|
|
* jit.c (jit_reader): Likewise.
|
|
|
|
|
* linespec.h (struct linespec_result): Likewise.
|
|
|
|
|
* mi/mi-parse.h (struct mi_parse): Likewise.
|
|
|
|
|
* nat/fork-inferior.c (execv_argv): Likewise.
|
|
|
|
|
* progspace.h (scoped_restore_current_program_space): Likewise.
|
|
|
|
|
* python/python-internal.h (class gdbpy_enter): Likewise.
|
|
|
|
|
* regcache.h (regcache): Likewise.
|
|
|
|
|
* target-descriptions.c (struct tdesc_reg): Likewise.
|
|
|
|
|
(struct tdesc_type): Likewise.
|
|
|
|
|
(struct tdesc_feature): Likewise.
|
|
|
|
|
* ui-out.h (ui_out_emit_type): Likewise.
|
|
|
|
|
|
2017-09-18 13:09:20 +02:00
|
|
|
|
2017-09-18 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2expr.c (dwarf_expr_context::execute_stack_op): Remove
|
|
|
|
|
label abort_expression.
|
|
|
|
|
|
2017-09-16 14:19:31 +02:00
|
|
|
|
2017-09-16 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/buffer.c (buffer_xml_printf): Adjust.
|
|
|
|
|
* common/xml-utils.c (xml_escape_text): Change return type to
|
|
|
|
|
std::string, update code accordingly.
|
|
|
|
|
* common/xml-utils.h (xml_escape_text): Change return type to
|
|
|
|
|
std::string.
|
|
|
|
|
* rs6000-aix-tdep.c (rs6000_aix_shared_library_to_xml): Adjust.
|
|
|
|
|
* windows-tdep.c (windows_xfer_shared_library): Adjust.
|
|
|
|
|
* unittests/xml-utils-selftests.c (test_xml_escape_text):
|
|
|
|
|
Adjust.
|
|
|
|
|
|
2017-09-16 14:16:27 +02:00
|
|
|
|
2017-09-16 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add new source file.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add new object file.
|
|
|
|
|
* unittests/xml-utils-selftests.c: New file.
|
|
|
|
|
|
Add selftests run filtering
With the growing number of selftests, I think it would be useful to be
able to run only a subset of the tests. This patch associates a name to
each registered selftest. It then allows doing something like:
(gdb) maintenance selftest aarch64
Running self-tests.
Running selftest aarch64-analyze-prologue.
Running selftest aarch64-process-record.
Ran 2 unit tests, 0 failed
or with gdbserver:
./gdbserver --selftest=aarch64
In both cases, only the tests that contain "aarch64" in their name are
ran. To help validate that the tests you want to run were actually ran,
it also prints a message with the test name before running each test.
Right now, all the arch-dependent tests are registered as a single test
of the selftests. To be able to filter those too, I made them
"first-class citizen" selftests. The selftest type is an interface,
with different implementations for "simple selftests" and "arch
selftests". The run_tests function simply iterates on that an invokes
operator() on each test.
I changed the tests data structure from a vector to a map, because
- it allows iterating in a stable (alphabetical) order
- it allows to easily verify if a test with a given name has been
registered, to avoid duplicates
There's also a new command "maintenance info selftests" that lists the
registered selftests.
gdb/ChangeLog:
* common/selftest.h (selftest): New struct/interface.
(register_test): Add name parameter, add new overload.
(run_tests): Add filter parameter.
(for_each_selftest_ftype): New typedef.
(for_each_selftest): New declaration.
* common/selftest.c (tests): Change type to
map<string, unique_ptr<selftest>>.
(simple_selftest): New struct.
(register_test): New function.
(register_test): Add name parameter and use it.
(run_tests): Add filter parameter and use it. Add prints.
Adjust to vector -> map change.
* aarch64-tdep.c (_initialize_aarch64_tdep): Add names when
registering selftests.
* arm-tdep.c (_initialize_arm_tdep): Likewise.
* disasm-selftests.c (_initialize_disasm_selftests): Likewise.
* dwarf2-frame.c (_initialize_dwarf2_frame): Likewise.
* dwarf2loc.c (_initialize_dwarf2loc): Likewise.
* findvar.c (_initialize_findvar): Likewise.
* gdbarch-selftests.c (_initialize_gdbarch_selftests): Likewise.
* maint.c (maintenance_selftest): Update call to run_tests.
(maintenance_info_selftests): New function.
(_initialize_maint_cmds): Register "maintenance info selftests"
command. Update "maintenance selftest" doc.
* regcache.c (_initialize_regcache): Add names when registering
selftests.
* rust-exp.y (_initialize_rust_exp): Likewise.
* selftest-arch.c (gdbarch_selftest): New struct.
(gdbarch_tests): Remove.
(register_test_foreach_arch): Add name parameter. Call
register_test.
(tests_with_arch): Remove, move most content to
gdbarch_selftest::operator().
(_initialize_selftests_foreach_arch): Remove.
* selftest-arch.h (register_test_foreach_arch): Add name
parameter.
(run_tests_with_arch): New declaration.
* utils-selftests.c (_initialize_utils_selftests): Add names
when registering selftests.
* utils.c (_initialize_utils): Likewise.
* unittests/array-view-selftests.c
(_initialize_array_view_selftests): Likewise.
* unittests/environ-selftests.c (_initialize_environ_selftests):
Likewise.
* unittests/function-view-selftests.c
(_initialize_function_view_selftests): Likewise.
* unittests/offset-type-selftests.c
(_initialize_offset_type_selftests): Likewise.
* unittests/optional-selftests.c
(_initialize_optional_selftests): Likewise.
* unittests/scoped_restore-selftests.c
(_initialize_scoped_restore_selftests): Likewise.
* NEWS: Document "maintenance selftest" and "maint info
selftests".
gdb/gdbserver/ChangeLog:
* server.c (captured_main): Accept argument for --selftest.
Update run_tests call.
* linux-x86-tdesc-selftest.c (initialize_low_tdesc): Add names
when registering selftests.
gdb/doc/ChangeLog:
* gdb.texinfo (Maintenance Commands): Document filter parameter
of "maint selftest". Document "maint info selftests" command.
2017-09-16 14:06:03 +02:00
|
|
|
|
2017-09-16 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/selftest.h (selftest): New struct/interface.
|
|
|
|
|
(register_test): Add name parameter, add new overload.
|
|
|
|
|
(run_tests): Add filter parameter.
|
|
|
|
|
(for_each_selftest_ftype): New typedef.
|
|
|
|
|
(for_each_selftest): New declaration.
|
|
|
|
|
* common/selftest.c (tests): Change type to
|
|
|
|
|
map<string, unique_ptr<selftest>>.
|
|
|
|
|
(simple_selftest): New struct.
|
|
|
|
|
(register_test): New function.
|
|
|
|
|
(register_test): Add name parameter and use it.
|
|
|
|
|
(run_tests): Add filter parameter and use it. Add prints.
|
|
|
|
|
Adjust to vector -> map change.
|
|
|
|
|
* aarch64-tdep.c (_initialize_aarch64_tdep): Add names when
|
|
|
|
|
registering selftests.
|
|
|
|
|
* arm-tdep.c (_initialize_arm_tdep): Likewise.
|
|
|
|
|
* disasm-selftests.c (_initialize_disasm_selftests): Likewise.
|
|
|
|
|
* dwarf2-frame.c (_initialize_dwarf2_frame): Likewise.
|
|
|
|
|
* dwarf2loc.c (_initialize_dwarf2loc): Likewise.
|
|
|
|
|
* findvar.c (_initialize_findvar): Likewise.
|
|
|
|
|
* gdbarch-selftests.c (_initialize_gdbarch_selftests): Likewise.
|
|
|
|
|
* maint.c (maintenance_selftest): Update call to run_tests.
|
|
|
|
|
(maintenance_info_selftests): New function.
|
|
|
|
|
(_initialize_maint_cmds): Register "maintenance info selftests"
|
|
|
|
|
command. Update "maintenance selftest" doc.
|
|
|
|
|
* regcache.c (_initialize_regcache): Add names when registering
|
|
|
|
|
selftests.
|
|
|
|
|
* rust-exp.y (_initialize_rust_exp): Likewise.
|
|
|
|
|
* selftest-arch.c (gdbarch_selftest): New struct.
|
|
|
|
|
(gdbarch_tests): Remove.
|
|
|
|
|
(register_test_foreach_arch): Add name parameter. Call
|
|
|
|
|
register_test.
|
|
|
|
|
(tests_with_arch): Remove, move most content to
|
|
|
|
|
gdbarch_selftest::operator().
|
|
|
|
|
(_initialize_selftests_foreach_arch): Remove.
|
|
|
|
|
* selftest-arch.h (register_test_foreach_arch): Add name
|
|
|
|
|
parameter.
|
|
|
|
|
(run_tests_with_arch): New declaration.
|
|
|
|
|
* utils-selftests.c (_initialize_utils_selftests): Add names
|
|
|
|
|
when registering selftests.
|
|
|
|
|
* utils.c (_initialize_utils): Likewise.
|
|
|
|
|
* unittests/array-view-selftests.c
|
|
|
|
|
(_initialize_array_view_selftests): Likewise.
|
|
|
|
|
* unittests/environ-selftests.c (_initialize_environ_selftests):
|
|
|
|
|
Likewise.
|
|
|
|
|
* unittests/function-view-selftests.c
|
|
|
|
|
(_initialize_function_view_selftests): Likewise.
|
|
|
|
|
* unittests/offset-type-selftests.c
|
|
|
|
|
(_initialize_offset_type_selftests): Likewise.
|
|
|
|
|
* unittests/optional-selftests.c
|
|
|
|
|
(_initialize_optional_selftests): Likewise.
|
|
|
|
|
* unittests/scoped_restore-selftests.c
|
|
|
|
|
(_initialize_scoped_restore_selftests): Likewise.
|
|
|
|
|
* NEWS: Document "maintenance selftest" and "maint info
|
|
|
|
|
selftests".
|
|
|
|
|
|
2017-09-16 13:45:56 +02:00
|
|
|
|
2017-09-16 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (mi_load_progress): Restore current_uiout using a
|
|
|
|
|
scoped_restore.
|
|
|
|
|
|
mi_load_progress: Use unique_ptr to manage ui_out lifetime
In mi_load_progress, we xfree a ui_out object. Because ui_out is not
trivially destructible, it should be freed with delete. This patch
makes use of a unique_ptr to do it.
gdb/ChangeLog:
* mi/mi-main.c (mi_load_progress): Make uiout variable
a unique_ptr.
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 0ee2605..0359dc1
100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -2325,7 +2325,6
@@ mi_load_progress (const char *section_name, static char
*previous_sect_name = NULL; int new_section; struct ui_out *saved_uiout;
- struct ui_out *uiout; struct mi_interp *mi = (struct mi_interp *)
current_interpreter ();
/* This function is called through deprecated_show_load_progress
@@ -2333,17 +2332,19 @@ mi_load_progress (const char *section_name,
of this function. */
saved_uiout = current_uiout;
+ std::unique_ptr<ui_out> uiout;
+
if (current_interp_named_p (INTERP_MI)
|| current_interp_named_p (INTERP_MI2))
- current_uiout = mi_out_new (2);
+ uiout.reset (mi_out_new (2));
else if (current_interp_named_p (INTERP_MI1))
- current_uiout = mi_out_new (1);
+ uiout.reset (mi_out_new (1));
else if (current_interp_named_p (INTERP_MI3))
- current_uiout = mi_out_new (3);
+ uiout.reset (mi_out_new (3));
else
return;
- uiout = current_uiout;
+ current_uiout = uiout.get ();
new_section = (previous_sect_name ?
strcmp (previous_sect_name, section_name) : 1);
@@ -2356,12 +2357,12 @@ mi_load_progress (const char *section_name,
fputs_unfiltered (current_token, mi->raw_stdout);
fputs_unfiltered ("+download", mi->raw_stdout);
{
- ui_out_emit_tuple tuple_emitter (uiout, NULL);
+ ui_out_emit_tuple tuple_emitter (uiout.get (), NULL);
uiout->field_string ("section", section_name);
uiout->field_int ("section-size", total_section);
uiout->field_int ("total-size", grand_total);
}
- mi_out_put (uiout, mi->raw_stdout);
+ mi_out_put (uiout.get (), mi->raw_stdout);
fputs_unfiltered ("\n", mi->raw_stdout);
gdb_flush (mi->raw_stdout);
}
@@ -2374,19 +2375,18 @@ mi_load_progress (const char *section_name,
fputs_unfiltered (current_token, mi->raw_stdout);
fputs_unfiltered ("+download", mi->raw_stdout);
{
- ui_out_emit_tuple tuple_emitter (uiout, NULL);
+ ui_out_emit_tuple tuple_emitter (uiout.get (), NULL);
uiout->field_string ("section", section_name);
uiout->field_int ("section-sent", sent_so_far);
uiout->field_int ("section-size", total_section);
uiout->field_int ("total-sent", total_sent);
uiout->field_int ("total-size", grand_total);
}
- mi_out_put (uiout, mi->raw_stdout);
+ mi_out_put (uiout.get (), mi->raw_stdout);
fputs_unfiltered ("\n", mi->raw_stdout);
gdb_flush (mi->raw_stdout);
}
- xfree (uiout);
current_uiout = saved_uiout;
}
2017-09-16 13:45:55 +02:00
|
|
|
|
2017-09-16 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (mi_load_progress): Make uiout variable
|
|
|
|
|
a unique_ptr.
|
|
|
|
|
|
2017-09-15 18:40:33 +02:00
|
|
|
|
2017-09-15 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-c-types.c (convert_enum, convert_int)
|
|
|
|
|
(convert_float): Adjust to refer to int_type_v0 and float_type_v0.
|
|
|
|
|
|
2017-09-15 16:41:34 +02:00
|
|
|
|
2017-09-15 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (copy_string): Remove.
|
|
|
|
|
(parse_macro_definition): Replace copy_string with savestring.
|
|
|
|
|
|
2017-09-15 14:05:39 +02:00
|
|
|
|
2017-09-15 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* configure.tgt (i[34567]86-*-darwin*): Append amd64.o to
|
|
|
|
|
gdb_target_obs.
|
|
|
|
|
(i[34567]86-*-solaris2.1[0-9]* | x86_64-*-solaris2.1[0-9]*):
|
|
|
|
|
Likewise.
|
|
|
|
|
(i[34567]86-*-linux*): Likewise.
|
|
|
|
|
|
2017-09-14 22:36:57 +02:00
|
|
|
|
2017-09-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2expr.h (dwarf_stack_value): Add constructor.
|
|
|
|
|
(dwarf_expr_context) <~dwarf_expr_context>: Define as default.
|
|
|
|
|
<stack>: Change type to std::vector.
|
|
|
|
|
<stack_len, stack_allocated>: Remove.
|
|
|
|
|
<grow_stack>: Remove.
|
|
|
|
|
* dwarf2expr.c (dwarf_expr_context::dwarf_expr_context): Adjust.
|
|
|
|
|
(dwarf_expr_context::~dwarf_expr_context): Remove.
|
|
|
|
|
(dwarf_expr_context::grow_stack): Remove.
|
|
|
|
|
(dwarf_expr_context::push): Adjust.
|
|
|
|
|
(dwarf_expr_context::pop): Adjust.
|
|
|
|
|
(dwarf_expr_context::fetch): Adjust.
|
|
|
|
|
(dwarf_expr_context::fetch_in_stack_memory): Adjust.
|
|
|
|
|
(dwarf_expr_context::stack_empty_p): Adjust.
|
|
|
|
|
(dwarf_expr_context::execute_stack_op): Adjust.
|
|
|
|
|
|
2017-09-14 16:54:37 +02:00
|
|
|
|
2017-09-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2expr.h (dwarf_expr_context) <stack_empty_p>: Change
|
|
|
|
|
return type to bool.
|
|
|
|
|
* dwarf2expr.c (dwarf_expr_context::stack_empty_p): Likewise.
|
|
|
|
|
|
2017-09-14 16:13:33 +02:00
|
|
|
|
2017-09-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2expr.h (dwarf_expr_piece) <v.mem.in_stack_memory>:
|
|
|
|
|
Change type to bool.
|
|
|
|
|
(dwarf_stack_value) <in_stack_memory>: Likewise.
|
|
|
|
|
(dwarf_expr_context) <push_address>: Change parameter type to
|
|
|
|
|
bool.
|
|
|
|
|
<fetch_in_stack_memory>: Change return type to bool.
|
|
|
|
|
<push>: Change parameter type to bool.
|
|
|
|
|
* dwarf2expr.c (dwarf_expr_context::push): Change parameter type
|
|
|
|
|
to bool.
|
|
|
|
|
(dwarf_expr_context::push_address): Likewise.
|
|
|
|
|
(dwarf_expr_context::fetch_in_stack_memory): Change return type
|
|
|
|
|
to bool.
|
|
|
|
|
(dwarf_expr_context::execute_stack_op): Adjust.
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Adjust.
|
|
|
|
|
|
2017-09-14 15:57:01 +02:00
|
|
|
|
2017-09-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2expr.h (struct dwarf_expr_piece): Move up.
|
|
|
|
|
(struct dwarf_expr_context) <n_pieces>: Remove.
|
|
|
|
|
<pieces>: Change type to std::vector.
|
|
|
|
|
* dwarf2expr.c (dwarf_expr_context::dwarf_expr_context): Adjust.
|
|
|
|
|
(dwarf_expr_context::~dwarf_expr_context): Don't manually free
|
|
|
|
|
pieces.
|
|
|
|
|
(dwarf_expr_context::add_piece): Adjust.
|
|
|
|
|
* dwarf2loc.c (struct piece_closure): Initialize fields.
|
|
|
|
|
<n_pieces>: Remove.
|
|
|
|
|
<pieces>: Change type to std::vector.
|
|
|
|
|
(allocate_piece_closure): Adjust, change parameter to
|
|
|
|
|
std::vector rvalue and std::move it to piece_closure.
|
|
|
|
|
(rw_pieced_value): Adjust.
|
|
|
|
|
(check_pieced_synthetic_pointer): Adjust.
|
|
|
|
|
(indirect_synthetic_pointer): Adjust.
|
|
|
|
|
(coerce_pieced_ref): Adjust.
|
|
|
|
|
(free_pieced_value_closure): Adjust. Use delete to free
|
|
|
|
|
piece_closure.
|
|
|
|
|
(dwarf2_evaluate_loc_desc_full): Adjust. std::move ctx.pieces
|
|
|
|
|
to allocate_piece_closure.
|
|
|
|
|
(dwarf2_loc_desc_get_symbol_read_needs): Adjust.
|
|
|
|
|
|
2017-09-12 14:15:23 +02:00
|
|
|
|
2017-09-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* probe.h (probe_ops_cp): Remove typedef.
|
|
|
|
|
(DEF_VEC_P (probe_ops_cp)): Remove.
|
|
|
|
|
(all_probe_ops): Change type to std::vector.
|
|
|
|
|
* probe.c (info_probes_for_ops): Adjust to vector change.
|
|
|
|
|
(probe_linespec_to_ops): Likewise.
|
|
|
|
|
(all_probe_ops): Change type to std::vector.
|
|
|
|
|
(_initialize_probe): Adjust to vector change.
|
|
|
|
|
* dtrace-probe.c (_initialize_dtrace_probe): Likewise.
|
|
|
|
|
* elfread.c (elf_get_probes): Likewise.
|
|
|
|
|
* stap-probe.c (_initialize_stap_probe): Likewise.
|
|
|
|
|
|
2017-09-12 13:55:32 +02:00
|
|
|
|
2017-09-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* probe.h (struct bound_probe): Define constructors.
|
|
|
|
|
* probe.c (bound_probe_s): Remove typedef.
|
|
|
|
|
(DEF_VEC_O (bound_probe_s)): Remove VEC.
|
|
|
|
|
(collect_probes): Change return type to std::vector, remove
|
|
|
|
|
cleanup.
|
|
|
|
|
(compare_probes): Return bool, change parameter type. Change
|
|
|
|
|
semantic to "less than".
|
|
|
|
|
(gen_ui_out_table_header_info): Change parameter to std::vector
|
|
|
|
|
and update.
|
|
|
|
|
(exists_probe_with_pops): Likewise.
|
|
|
|
|
(info_probes_for_ops): Update to std::vector change.
|
|
|
|
|
(enable_probes_command): Likewise.
|
|
|
|
|
(disable_probes_command): Likewise.
|
|
|
|
|
|
2017-09-12 13:37:00 +02:00
|
|
|
|
2017-09-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* probe.h (struct probe_ops) <get_probes>: Change parameter from
|
|
|
|
|
vec to std::vector.
|
|
|
|
|
* probe.c (parse_probes_in_pspace): Update.
|
|
|
|
|
(find_probes_in_objfile): Update.
|
|
|
|
|
(find_probe_by_pc): Update.
|
|
|
|
|
(collect_probes): Update.
|
|
|
|
|
(probe_any_get_probes): Update.
|
|
|
|
|
* symfile.h (struct sym_probe_fns) <sym_get_probes> Change
|
|
|
|
|
return type to reference to std::vector.
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof_probe): Change parameter to
|
|
|
|
|
std::vector and update.
|
|
|
|
|
(dtrace_process_dof): Likewise.
|
|
|
|
|
(dtrace_get_probes): Likewise.
|
|
|
|
|
* elfread.c (elf_get_probes): Change return type to std::vector,
|
|
|
|
|
store an std::vector in bfd_data.
|
|
|
|
|
(probe_key_free): Update to std::vector.
|
|
|
|
|
* stap-probe.c (handle_stap_probe): Change parameter to
|
|
|
|
|
std::vector and update.
|
|
|
|
|
(stap_get_probes): Likewise.
|
|
|
|
|
* symfile-debug.c (debug_sym_get_probes): Change return type to
|
|
|
|
|
std::vector and update.
|
|
|
|
|
|
2017-09-09 18:47:10 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (program_breakpoint_here_p): Update.
|
|
|
|
|
* target.c (make_scoped_restore_show_memory_breakpoints): Rename
|
|
|
|
|
from make_show_memory_breakpoints_cleanup. Return a
|
|
|
|
|
scoped_restore_tmpl<int>.
|
|
|
|
|
(restore_show_memory_breakpoints): Remove.
|
|
|
|
|
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint): Update.
|
|
|
|
|
* mem-break.c (memory_validate_breakpoint): Update.
|
|
|
|
|
* ia64-tdep.c (ia64_memory_insert_breakpoint): Update.
|
|
|
|
|
(ia64_memory_remove_breakpoint): Update.
|
|
|
|
|
(ia64_breakpoint_from_pc): Update.
|
|
|
|
|
* target.h (make_scoped_restore_show_memory_breakpoints): Rename
|
|
|
|
|
from make_show_memory_breakpoints_cleanup.
|
|
|
|
|
|
2017-09-09 18:46:36 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* d-namespace.c (d_lookup_symbol): Use std::string.
|
|
|
|
|
(find_symbol_in_baseclass): Likewise.
|
|
|
|
|
|
2017-09-09 18:17:11 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* ctf.c (ctf_start): Use std::string.
|
|
|
|
|
|
2017-09-09 18:14:52 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (is_known_support_routine): Update.
|
|
|
|
|
(ada_unhandled_exception_name_addr_from_raise): Update.
|
|
|
|
|
* guile/scm-frame.c (gdbscm_frame_name): Update.
|
|
|
|
|
* python/py-frame.c (frapy_name): Update.
|
|
|
|
|
(frapy_function): Update.
|
|
|
|
|
* stack.h (find_frame_funname): Update.
|
|
|
|
|
* stack.c (find_frame_funname): Return unique_xmalloc_ptr.
|
|
|
|
|
(print_frame): Update.
|
|
|
|
|
|
2017-09-09 17:56:27 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* findcmd.c (put_bits): Take a gdb::byte_vector.
|
|
|
|
|
(parse_find_args): Return gdb::byte_vector. "args" now const.
|
|
|
|
|
Remove "pattern_bufp" and "pattern_lenp" parameters. Remove
|
|
|
|
|
cleanups.
|
|
|
|
|
(find_command): Update.
|
|
|
|
|
|
2017-08-13 22:44:08 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (class scoped_restore_hook_in): New.
|
|
|
|
|
(clear_hook_in_cleanup): Remove.
|
|
|
|
|
(execute_cmd_pre_hook, execute_cmd_post_hook): Use
|
|
|
|
|
scoped_restore_hook_in.
|
|
|
|
|
|
2017-08-13 22:40:46 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (restore_interp): Remove.
|
|
|
|
|
(read_command_lines): Use scoped_restore_interp.
|
|
|
|
|
* interps.c (scoped_restore_interp::set_temp): Rename from
|
|
|
|
|
interp_set_temp.
|
|
|
|
|
* interps.h (class scoped_restore_interp): New.
|
|
|
|
|
(interp_set_temp): Remove.
|
|
|
|
|
|
2017-08-13 18:55:28 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-catch.c (mi_cmd_catch_assert)
|
|
|
|
|
(mi_cmd_catch_exception, mi_catch_load_unload): Update.
|
|
|
|
|
* mi/mi-cmd-break.c (setup_breakpoint_reporting): Return a
|
|
|
|
|
scoped_restore.
|
|
|
|
|
(mi_cmd_break_insert_1): Update.
|
|
|
|
|
* mi/mi-cmd-break.h (setup_breakpoint_reporting): Return a
|
|
|
|
|
scoped_restore.
|
|
|
|
|
|
2017-09-10 22:48:30 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* demangle.c (demangle_command): Update.
|
|
|
|
|
* breakpoint.c (disable_command): Update.
|
|
|
|
|
(enable_command): Update.
|
|
|
|
|
(find_location_by_number): Make "number" const. Use
|
|
|
|
|
get_number_trailer.
|
|
|
|
|
* cli/cli-utils.c (extract_arg): Return std::string.
|
|
|
|
|
* probe.c (parse_probe_linespec): Update. Change types.
|
|
|
|
|
(collect_probes): Take string arguments.
|
|
|
|
|
(parse_probe_linespec): Likewise.
|
|
|
|
|
(info_probes_for_ops): Update.
|
|
|
|
|
(enable_probes_command): Update.
|
|
|
|
|
(disable_probes_command): Update.
|
|
|
|
|
* break-catch-sig.c (catch_signal_split_args): Update.
|
|
|
|
|
* mi/mi-parse.c (mi_parse): Update.
|
|
|
|
|
|
2017-09-10 22:29:22 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* language.h (language_enum): Make argument const.
|
|
|
|
|
* language.c (language_enum): Make argument const.
|
|
|
|
|
|
Rename _const functions to use overloading instead
This renames a few functions -- skip_spaces_const,
skip_to_space_const, get_number_const, extract_arg_const -- to drop
the "_const" suffix and instead rely on overloading.
This makes future const fixes simpler by reducing the number of lines
that must be changed. I think it is also not any less clear, as all
these functions have the same interface as their non-const versions by
design. Furthermore there's an example of using an overload in-tree
already, namely check_for_argument.
This patch was largely created using some perl one-liners; then a few
fixes were applied by hand.
ChangeLog
2017-09-11 Tom Tromey <tom@tromey.com>
* common/common-utils.h (skip_to_space): Remove macro, redeclare
as function.
(skip_to_space): Rename from skip_to_space_const.
* common/common-utils.c (skip_to_space): New function.
(skip_to_space): Rename from skip_to_space_const.
* cli/cli-utils.h (get_number): Rename from get_number_const.
(extract_arg): Rename from extract_arg_const.
* cli/cli-utils.c (get_number): Rename from get_number_const.
(extract_arg): Rename from extract_arg_const.
(number_or_range_parser::get_number): Use ::get_number.
* aarch64-linux-tdep.c, ada-lang.c, arm-linux-tdep.c, ax-gdb.c,
break-catch-throw.c, breakpoint.c, cli/cli-cmds.c, cli/cli-dump.c,
cli/cli-script.c, cli/cli-setshow.c, compile/compile.c,
completer.c, demangle.c, disasm.c, findcmd.c, linespec.c,
linux-tdep.c, linux-thread-db.c, location.c, mi/mi-parse.c,
minsyms.c, nat/linux-procfs.c, printcmd.c, probe.c,
python/py-breakpoint.c, record.c, rust-exp.y, serial.c, stack.c,
stap-probe.c, tid-parse.c, tracepoint.c: Update all callers.
2017-09-10 22:19:19 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* common/common-utils.h (skip_to_space): Remove macro, redeclare
|
|
|
|
|
as function.
|
|
|
|
|
(skip_to_space): Rename from skip_to_space_const.
|
|
|
|
|
* common/common-utils.c (skip_to_space): New function.
|
|
|
|
|
(skip_to_space): Rename from skip_to_space_const.
|
|
|
|
|
* cli/cli-utils.h (get_number): Rename from get_number_const.
|
|
|
|
|
(extract_arg): Rename from extract_arg_const.
|
|
|
|
|
* cli/cli-utils.c (get_number): Rename from get_number_const.
|
|
|
|
|
(extract_arg): Rename from extract_arg_const.
|
|
|
|
|
(number_or_range_parser::get_number): Use ::get_number.
|
|
|
|
|
* aarch64-linux-tdep.c, ada-lang.c, arm-linux-tdep.c, ax-gdb.c,
|
|
|
|
|
break-catch-throw.c, breakpoint.c, cli/cli-cmds.c, cli/cli-dump.c,
|
|
|
|
|
cli/cli-script.c, cli/cli-setshow.c, compile/compile.c,
|
|
|
|
|
completer.c, demangle.c, disasm.c, findcmd.c, linespec.c,
|
|
|
|
|
linux-tdep.c, linux-thread-db.c, location.c, mi/mi-parse.c,
|
|
|
|
|
minsyms.c, nat/linux-procfs.c, printcmd.c, probe.c,
|
|
|
|
|
python/py-breakpoint.c, record.c, rust-exp.y, serial.c, stack.c,
|
|
|
|
|
stap-probe.c, tid-parse.c, tracepoint.c: Update all callers.
|
|
|
|
|
|
2017-09-08 23:38:12 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (do_start_initialization): Use
|
|
|
|
|
py-event-types.def to initialize types.
|
|
|
|
|
Define all object type structures.
|
|
|
|
|
* python/python-internal.h: Don't declare event initialization
|
|
|
|
|
functions.
|
|
|
|
|
* python/py-threadevent.c (thread_event_object_type): Don't
|
|
|
|
|
define.
|
|
|
|
|
* python/py-stopevent.c (stop_event_object_type): Don't define.
|
|
|
|
|
* python/py-signalevent.c (signal_event_object_type): Don't
|
|
|
|
|
declare or define.
|
|
|
|
|
* python/py-newobjfileevent.c (new_objfile_event_object_type)
|
|
|
|
|
(clear_objfiles_event_object_type): Don't declare or define.
|
|
|
|
|
* python/py-infevents.c (inferior_call_pre_event_object_type)
|
|
|
|
|
(inferior_call_post_event_object_type)
|
|
|
|
|
(register_changed_event_object_type)
|
|
|
|
|
(memory_changed_event_object_type): Don't declare or define.
|
|
|
|
|
* python/py-inferior.c (new_thread_event_object_type)
|
|
|
|
|
(new_inferior_event_object_type)
|
|
|
|
|
(inferior_deleted_event_object_type): Don't declare or define.
|
|
|
|
|
* python/py-exitedevent.c (exited_event_object_type): Don't
|
|
|
|
|
declare or define.
|
|
|
|
|
* python/py-evts.c (gdbpy_initialize_py_events): Use
|
|
|
|
|
py-all-events.def.
|
|
|
|
|
* python/py-events.h (thread_event_object_type): Don't declare.
|
|
|
|
|
(events_object): Use py-all-events.def.
|
|
|
|
|
* python/py-event.h (GDBPY_NEW_EVENT_TYPE): Remove. Use
|
|
|
|
|
py-event-types.def.
|
|
|
|
|
* python/py-event-types.def: New file.
|
|
|
|
|
* python/py-continueevent.c (create_continue_event_object): Don't
|
|
|
|
|
declare or define.
|
|
|
|
|
* python/py-bpevent.c (breakpoint_event_object_type): Don't
|
|
|
|
|
declare or define.
|
|
|
|
|
* python/py-all-events.def: New file.
|
|
|
|
|
|
2017-09-08 22:26:43 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-threadevent.c (create_thread_event_object): Return
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-stopevent.h (create_stop_event_object)
|
|
|
|
|
(create_breakpoint_event_object, create_signal_event_object):
|
|
|
|
|
Update.
|
|
|
|
|
* python/py-stopevent.c (create_stop_event_object): Return
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
(emit_stop_event): Update.
|
|
|
|
|
* python/py-signalevent.c (create_signal_event_object): Return
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-infevents.c (create_inferior_call_event_object):
|
|
|
|
|
Update.
|
|
|
|
|
* python/py-event.h (create_event_object)
|
|
|
|
|
(create_thread_event_object): Update.
|
|
|
|
|
* python/py-event.c (create_event_object): Return gdbpy_ref.
|
|
|
|
|
* python/py-continueevent.c: Return gdbpy_ref.
|
|
|
|
|
* python/py-bpevent.c (create_breakpoint_event_object): Return
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
Add new_inferior, inferior_deleted, and new_thread events
This adds a few new events to gdb's Python layer: new_inferior,
inferior_deleted, and new_thread. I wanted to be able to add a
combined inferior/thread display window to my GUI, and I needed a few
events to make this work. This is PR python/15622.
ChangeLog
2017-09-11 Tom Tromey <tom@tromey.com>
PR python/15622:
* NEWS: Add entry.
* python/python.c (do_start_initialization): Initialize new event
types.
* python/python-internal.h (gdbpy_initialize_new_inferior_event)
(gdbpy_initialize_inferior_deleted_event)
(gdbpy_initialize_new_thread_event): Declare.
* python/py-threadevent.c (create_thread_event_object): Add option
"thread" parameter.
* python/py-inferior.c (new_thread_event_object_type)
(new_inferior_event_object_type)
(inferior_deleted_event_object_type): Declare.
(python_new_inferior, python_inferior_deleted): New functions.
(add_thread_object): Emit new_thread event.
(gdbpy_initialize_inferior): Attach new functions to corresponding
observers.
(new_thread, new_inferior, inferior_deleted): Define new event
types.
* python/py-evts.c (gdbpy_initialize_py_events): Add new
registries.
* python/py-events.h (events_object) <new_inferior,
inferior_deleted, new_thread>: New fields.
* python/py-event.h (create_thread_event_breakpoint): Add optional
"thread" parameter.
doc/ChangeLog
2017-09-11 Tom Tromey <tom@tromey.com>
* python.texi (Events In Python): Document new events.
testsuite/ChangeLog
2017-09-11 Tom Tromey <tom@tromey.com>
* gdb.python/py-infthread.exp: Add tests for new_thread event.
* gdb.python/py-inferior.exp: Add tests for new inferior events.
2017-09-05 20:07:00 +02:00
|
|
|
|
2017-09-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR python/15622:
|
|
|
|
|
* NEWS: Add entry.
|
|
|
|
|
* python/python.c (do_start_initialization): Initialize new event
|
|
|
|
|
types.
|
|
|
|
|
* python/python-internal.h (gdbpy_initialize_new_inferior_event)
|
|
|
|
|
(gdbpy_initialize_inferior_deleted_event)
|
|
|
|
|
(gdbpy_initialize_new_thread_event): Declare.
|
|
|
|
|
* python/py-threadevent.c (create_thread_event_object): Add option
|
|
|
|
|
"thread" parameter.
|
|
|
|
|
* python/py-inferior.c (new_thread_event_object_type)
|
|
|
|
|
(new_inferior_event_object_type)
|
|
|
|
|
(inferior_deleted_event_object_type): Declare.
|
|
|
|
|
(python_new_inferior, python_inferior_deleted): New functions.
|
|
|
|
|
(add_thread_object): Emit new_thread event.
|
|
|
|
|
(gdbpy_initialize_inferior): Attach new functions to corresponding
|
|
|
|
|
observers.
|
|
|
|
|
(new_thread, new_inferior, inferior_deleted): Define new event
|
|
|
|
|
types.
|
|
|
|
|
* python/py-evts.c (gdbpy_initialize_py_events): Add new
|
|
|
|
|
registries.
|
|
|
|
|
* python/py-events.h (events_object) <new_inferior,
|
|
|
|
|
inferior_deleted, new_thread>: New fields.
|
|
|
|
|
* python/py-event.h (create_thread_event_breakpoint): Add optional
|
|
|
|
|
"thread" parameter.
|
|
|
|
|
|
gdb: Remove check for gdb_stderr == NULL
Recent changes made gdb_stderr a macro:
#define gdb_stderr (*current_ui_gdb_stderr_ptr ())
and current_ui_gdb_stderr_ptr return this:
¤t_ui->m_gdb_stderr
The problem is that this is undefined if current_ui is NULL, which can
happen early on during gdb start up.
If we run into an error during early gdb start up then we write the
error message to gdb_stderr. However, if we are too early during the
start up then current_ui is NULL, and using the gdb_stderr macro
triggers undefined behaviour.
We try to avoid this using a check 'gdb_stderr == NULL' which was fine
before the recent changes, but now, still triggers undefined behaviour.
A better check is instead 'current_ui == NULL' which is what I use in
this patch.
Triggering this failure is pretty hard, most of the really early errors
are only triggered if pretty basic things are not as expected, for
example, if the default signal handlers are not as expected. Seeing one
of these errors trigger usually means that someone working on gdb has
made an incorrect change. Still, the errors are present in gdb, and
should we ever trigger one it would be nice if gdb didn't crash.
For testing this change I've been applying this patch which adds an
unconditional error into a function called early during gdb start up.
Later in the same function is a real error call which, in some
circumstances could be triggered:
## START ##
diff --git a/gdb/common/signals-state-save-restore.c b/gdb/common/signals-state-save-restore.c
index d11a9ae006c..d75ba70f894 100644
--- a/gdb/common/signals-state-save-restore.c
+++ b/gdb/common/signals-state-save-restore.c
@@ -37,6 +37,9 @@ static sigset_t original_signal_mask;
void
save_original_signals_state (void)
{
+
+ internal_error (__FILE__, __LINE__, "example error");
+
#ifdef HAVE_SIGACTION
int i;
int res;
## END ##
gdb/ChangeLog:
* utils.c (abort_with_message): Don't compare gdb_stderr to NULL,
check current_ui instead.
(internal_vproblem): Likewise.
2017-08-06 22:45:08 +02:00
|
|
|
|
2017-09-10 Andrew Burgess <andrew.burgess@embecosm.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (abort_with_message): Don't compare gdb_stderr to NULL,
|
|
|
|
|
check current_ui instead.
|
|
|
|
|
(internal_vproblem): Likewise.
|
|
|
|
|
|
2017-09-09 22:51:58 +02:00
|
|
|
|
2017-09-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (print_thread_info_1): Remove unnecessary calls to
|
|
|
|
|
uiout->is_mi_like_p.
|
|
|
|
|
|
2017-09-07 01:18:23 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* namespace.h (add_using_directive): Update.
|
|
|
|
|
* namespace.c (add_using_directive): Change type of excludes to
|
|
|
|
|
std::vector.
|
|
|
|
|
* dwarf2read.c (read_import_statement): Use std::vector.
|
|
|
|
|
(read_namespace): Update.
|
|
|
|
|
* cp-namespace.c (cp_scan_for_anonymous_namespaces): Update.
|
|
|
|
|
|
2017-09-07 00:16:38 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (create_sals_line_offset): Use gdb::def_vector.
|
|
|
|
|
|
2017-08-14 08:15:33 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* p-valprint.c (pascal_object_print_value): Use gdb::byte_vector.
|
|
|
|
|
|
2017-09-07 00:03:28 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (func_command): Use gdb::def_vector.
|
|
|
|
|
|
2017-09-07 05:41:40 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_list_children): Use gdb::optional,
|
|
|
|
|
ui_out_emit_list, ui_out_emit_tuple.
|
|
|
|
|
(mi_cmd_var_update): Likewise.
|
|
|
|
|
|
2017-08-13 18:47:32 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-interp.c (mi_user_selected_context_changed): Use
|
|
|
|
|
ui_out_redirect_pop.
|
|
|
|
|
* guile/scm-ports.c (ioscm_with_output_to_port_worker): Use
|
|
|
|
|
ui_out_redirect_pop.
|
|
|
|
|
* utils.c (do_ui_out_redirect_pop)
|
|
|
|
|
(make_cleanup_ui_out_redirect_pop): Remove.
|
|
|
|
|
* top.c (execute_command_to_string): Use ui_out_redirect_pop.
|
|
|
|
|
* utils.h (make_cleanup_ui_out_redirect_pop): Remove.
|
|
|
|
|
* ui-out.h (ui_out_redirect_pop): New class.
|
|
|
|
|
|
2017-08-11 23:17:59 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (output_cores): Use ui_out_emit_list.
|
|
|
|
|
(list_available_thread_groups, mi_cmd_list_thread_groups)
|
|
|
|
|
(mi_cmd_data_list_changed_registers, mi_cmd_data_read_memory)
|
|
|
|
|
(mi_cmd_data_read_memory_bytes, mi_cmd_trace_frame_collected):
|
|
|
|
|
Likewise.
|
|
|
|
|
|
2017-08-11 23:17:26 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
|
2017-08-11 23:02:04 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* target.c (flash_erase_command): Use ui_out_emit_tuple.
|
|
|
|
|
* stack.c (print_frame): Use ui_out_emit_tuple.
|
|
|
|
|
* spu-tdep.c (info_spu_event_command): Use ui_out_emit_tuple.
|
|
|
|
|
(info_spu_mailbox_command, info_spu_dma_command)
|
|
|
|
|
(info_spu_proxydma_command): Likewise.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_trace_frame_collected): Use
|
|
|
|
|
ui_out_emit_tuple, gdb::byte_vector, bin2hex.
|
|
|
|
|
* mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* breakpoint.c (print_it_watchpoint): Use ui_out_emit_tuple.
|
|
|
|
|
|
2017-09-09 17:16:49 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* ui-out.h (make_cleanup_ui_out_table_begin_end): Remove.
|
|
|
|
|
(class ui_out_emit_table): Update comment.
|
|
|
|
|
* ui-out.c (do_cleanup_table_end)
|
|
|
|
|
(make_cleanup_ui_out_table_begin_end): Remove.
|
|
|
|
|
* spu-tdep.c (info_spu_mailbox_list): Use ui_out_emit_table.
|
|
|
|
|
(info_spu_dma_cmdlist): Likewise.
|
|
|
|
|
* probe.c (info_probes_for_ops): Use ui_out_emit_table.
|
|
|
|
|
* darwin-nat-info.c (darwin_debug_regions_recurse): Use
|
|
|
|
|
ui_out_emit_table.
|
|
|
|
|
|
2017-09-09 17:15:23 +02:00
|
|
|
|
2017-09-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (print_thread_info_1): Use ui_out_emit_table,
|
|
|
|
|
ui_out_emit_list, gdb::optional.
|
|
|
|
|
|
2017-09-09 20:02:37 +02:00
|
|
|
|
2017-09-09 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c: Remove _initialize_aarch64_linux_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* aarch64-linux-tdep.c: Remove _initialize_aarch64_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* aarch64-newlib-tdep.c: Remove _initialize_aarch64_newlib_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* aarch64-tdep.c: Remove _initialize_aarch64_tdep prototype.
|
|
|
|
|
* ada-exp.y: Remove _initialize_ada_exp prototype.
|
|
|
|
|
* ada-lang.c: Remove _initialize_ada_language prototype.
|
|
|
|
|
* ada-tasks.c: Remove _initialize_tasks prototype.
|
|
|
|
|
* addrmap.c: Remove _initialize_addrmap prototype.
|
|
|
|
|
* agent.c: Remove _initialize_agent prototype.
|
|
|
|
|
* aix-thread.c: Remove _initialize_aix_thread prototype.
|
|
|
|
|
* alpha-bsd-nat.c: Remove _initialize_alphabsd_nat prototype.
|
|
|
|
|
* alpha-linux-nat.c: Remove _initialize_alpha_linux_nat prototype.
|
|
|
|
|
* alpha-linux-tdep.c: Remove _initialize_alpha_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* alpha-nbsd-tdep.c: Remove _initialize_alphanbsd_tdep prototype.
|
|
|
|
|
* alpha-obsd-tdep.c: Remove _initialize_alphaobsd_tdep prototype.
|
|
|
|
|
* alpha-tdep.c: Remove _initialize_alpha_tdep prototype.
|
|
|
|
|
* amd64-darwin-tdep.c: Remove _initialize_amd64_darwin_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* amd64-dicos-tdep.c: Remove _initialize_amd64_dicos_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* amd64-fbsd-nat.c: Remove _initialize_amd64fbsd_nat prototype.
|
|
|
|
|
* amd64-fbsd-tdep.c: Remove _initialize_amd64fbsd_tdep prototype.
|
|
|
|
|
* amd64-linux-nat.c: Remove _initialize_amd64_linux_nat prototype.
|
|
|
|
|
* amd64-linux-tdep.c: Remove _initialize_amd64_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* amd64-nbsd-nat.c: Remove _initialize_amd64nbsd_nat prototype.
|
|
|
|
|
* amd64-nbsd-tdep.c: Remove _initialize_amd64nbsd_tdep prototype.
|
|
|
|
|
* amd64-obsd-nat.c: Remove _initialize_amd64obsd_nat prototype.
|
|
|
|
|
* amd64-obsd-tdep.c: Remove _initialize_amd64obsd_tdep prototype.
|
|
|
|
|
* amd64-sol2-tdep.c: Remove _initialize_amd64_sol2_tdep prototype.
|
|
|
|
|
* amd64-tdep.c: Remove _initialize_amd64_tdep prototype.
|
|
|
|
|
* amd64-windows-nat.c: Remove _initialize_amd64_windows_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* amd64-windows-tdep.c: Remove _initialize_amd64_windows_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* annotate.c: Remove _initialize_annotate prototype.
|
|
|
|
|
* arc-newlib-tdep.c: Remove _initialize_arc_newlib_tdep prototype.
|
|
|
|
|
* arc-tdep.c: Remove _initialize_arc_tdep prototype.
|
|
|
|
|
* arch-utils.c: Remove _initialize_gdbarch_utils prototype.
|
|
|
|
|
* arm-linux-nat.c: Remove _initialize_arm_linux_nat prototype.
|
|
|
|
|
* arm-linux-tdep.c: Remove _initialize_arm_linux_tdep prototype.
|
|
|
|
|
* arm-nbsd-tdep.c: Remove _initialize_arm_netbsd_tdep prototype.
|
|
|
|
|
* arm-obsd-tdep.c: Remove _initialize_armobsd_tdep prototype.
|
|
|
|
|
* arm-symbian-tdep.c: Remove _initialize_arm_symbian_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* arm-tdep.c: Remove _initialize_arm_tdep prototype.
|
|
|
|
|
* arm-wince-tdep.c: Remove _initialize_arm_wince_tdep prototype.
|
|
|
|
|
* auto-load.c: Remove _initialize_auto_load prototype.
|
|
|
|
|
* auxv.c: Remove _initialize_auxv prototype.
|
|
|
|
|
* avr-tdep.c: Remove _initialize_avr_tdep prototype.
|
|
|
|
|
* ax-gdb.c: Remove _initialize_ax_gdb prototype.
|
|
|
|
|
* bfin-linux-tdep.c: Remove _initialize_bfin_linux_tdep prototype.
|
|
|
|
|
* bfin-tdep.c: Remove _initialize_bfin_tdep prototype.
|
|
|
|
|
* break-catch-sig.c: Remove _initialize_break_catch_sig prototype.
|
|
|
|
|
* break-catch-syscall.c: Remove _initialize_break_catch_syscall
|
|
|
|
|
prototype.
|
|
|
|
|
* break-catch-throw.c: Remove _initialize_break_catch_throw
|
|
|
|
|
prototype.
|
|
|
|
|
* breakpoint.c: Remove _initialize_breakpoint prototype.
|
|
|
|
|
* bsd-uthread.c: Remove _initialize_bsd_uthread prototype.
|
|
|
|
|
* btrace.c: Remove _initialize_btrace prototype.
|
|
|
|
|
* charset.c: Remove _initialize_charset prototype.
|
|
|
|
|
* cli/cli-cmds.c: Remove _initialize_cli_cmds prototype.
|
|
|
|
|
* cli/cli-dump.c: Remove _initialize_cli_dump prototype.
|
|
|
|
|
* cli/cli-interp.c: Remove _initialize_cli_interp prototype.
|
|
|
|
|
* cli/cli-logging.c: Remove _initialize_cli_logging prototype.
|
|
|
|
|
* cli/cli-script.c: Remove _initialize_cli_script prototype.
|
|
|
|
|
* coff-pe-read.c: Remove _initialize_coff_pe_read prototype.
|
|
|
|
|
* coffread.c: Remove _initialize_coffread prototype.
|
|
|
|
|
* compile/compile.c: Remove _initialize_compile prototype.
|
|
|
|
|
* complaints.c: Remove _initialize_complaints prototype.
|
|
|
|
|
* completer.c: Remove _initialize_completer prototype.
|
|
|
|
|
* copying.awk: Remove _initialize_copying prototype.
|
|
|
|
|
* copying.c: Regenerate.
|
|
|
|
|
* core-regset.c: Remove _initialize_core_regset prototype.
|
|
|
|
|
* corefile.c: Remove _initialize_core prototype.
|
|
|
|
|
* corelow.c: Remove _initialize_corelow prototype.
|
|
|
|
|
* cp-abi.c: Remove _initialize_cp_abi prototype.
|
|
|
|
|
* cp-namespace.c: Remove _initialize_cp_namespace prototype.
|
|
|
|
|
* cp-support.c: Remove _initialize_cp_support prototype.
|
|
|
|
|
* cp-valprint.c: Remove _initialize_cp_valprint prototype.
|
|
|
|
|
* cris-linux-tdep.c: Remove _initialize_cris_linux_tdep prototype.
|
|
|
|
|
* cris-tdep.c: Remove _initialize_cris_tdep prototype.
|
|
|
|
|
* ctf.c: Remove _initialize_ctf prototype.
|
|
|
|
|
* d-lang.c: Remove _initialize_d_language prototype.
|
|
|
|
|
* darwin-nat-info.c: Remove _initialize_darwin_info_commands
|
|
|
|
|
prototype.
|
|
|
|
|
* darwin-nat.c: Remove _initialize_darwin_inferior prototype.
|
|
|
|
|
* dbxread.c: Remove _initialize_dbxread prototype.
|
|
|
|
|
* dcache.c: Remove _initialize_dcache prototype.
|
|
|
|
|
* demangle.c: Remove _initialize_demangler prototype.
|
|
|
|
|
* disasm-selftests.c: Remove _initialize_disasm_selftests
|
|
|
|
|
prototype.
|
|
|
|
|
* disasm.c: Remove _initialize_disasm prototype.
|
|
|
|
|
* dtrace-probe.c: Remove _initialize_dtrace_probe prototype.
|
|
|
|
|
* dummy-frame.c: Remove _initialize_dummy_frame prototype.
|
|
|
|
|
* dwarf2-frame-tailcall.c: Remove _initialize_tailcall_frame
|
|
|
|
|
prototype.
|
|
|
|
|
* dwarf2-frame.c: Remove _initialize_dwarf2_frame prototype.
|
|
|
|
|
* dwarf2expr.c: Remove _initialize_dwarf2expr prototype.
|
|
|
|
|
* dwarf2loc.c: Remove _initialize_dwarf2loc prototype.
|
|
|
|
|
* dwarf2read.c: Remove _initialize_dwarf2_read prototype.
|
|
|
|
|
* elfread.c: Remove _initialize_elfread prototype.
|
|
|
|
|
* exec.c: Remove _initialize_exec prototype.
|
|
|
|
|
* extension.c: Remove _initialize_extension prototype.
|
|
|
|
|
* f-lang.c: Remove _initialize_f_language prototype.
|
|
|
|
|
* f-valprint.c: Remove _initialize_f_valprint prototype.
|
|
|
|
|
* fbsd-nat.c: Remove _initialize_fbsd_nat prototype.
|
|
|
|
|
* fbsd-tdep.c: Remove _initialize_fbsd_tdep prototype.
|
|
|
|
|
* filesystem.c: Remove _initialize_filesystem prototype.
|
|
|
|
|
* findcmd.c: Remove _initialize_mem_search prototype.
|
|
|
|
|
* fork-child.c: Remove _initialize_fork_child prototype.
|
|
|
|
|
* frame-base.c: Remove _initialize_frame_base prototype.
|
|
|
|
|
* frame-unwind.c: Remove _initialize_frame_unwind prototype.
|
|
|
|
|
* frame.c: Remove _initialize_frame prototype.
|
|
|
|
|
* frv-linux-tdep.c: Remove _initialize_frv_linux_tdep prototype.
|
|
|
|
|
* frv-tdep.c: Remove _initialize_frv_tdep prototype.
|
|
|
|
|
* ft32-tdep.c: Remove _initialize_ft32_tdep prototype.
|
|
|
|
|
* gcore.c: Remove _initialize_gcore prototype.
|
|
|
|
|
* gdb_bfd.c: Remove _initialize_gdb_bfd prototype.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.sh: Remove _initialize_gdbarch prototype.
|
|
|
|
|
* gdbtypes.c: Remove _initialize_gdbtypes prototype.
|
|
|
|
|
* gnu-nat.c: Remove _initialize_gnu_nat prototype.
|
|
|
|
|
* gnu-v2-abi.c: Remove _initialize_gnu_v2_abi prototype.
|
|
|
|
|
* gnu-v3-abi.c: Remove _initialize_gnu_v3_abi prototype.
|
|
|
|
|
* go-lang.c: Remove _initialize_go_language prototype.
|
|
|
|
|
* go32-nat.c: Remove _initialize_go32_nat prototype.
|
|
|
|
|
* guile/guile.c: Remove _initialize_guile prototype.
|
|
|
|
|
* h8300-tdep.c: Remove _initialize_h8300_tdep prototype.
|
|
|
|
|
* hppa-linux-nat.c: Remove _initialize_hppa_linux_nat prototype.
|
|
|
|
|
* hppa-linux-tdep.c: Remove _initialize_hppa_linux_tdep prototype.
|
|
|
|
|
* hppa-nbsd-nat.c: Remove _initialize_hppanbsd_nat prototype.
|
|
|
|
|
* hppa-nbsd-tdep.c: Remove _initialize_hppanbsd_tdep prototype.
|
|
|
|
|
* hppa-obsd-nat.c: Remove _initialize_hppaobsd_nat prototype.
|
|
|
|
|
* hppa-obsd-tdep.c: Remove _initialize_hppaobsd_tdep prototype.
|
|
|
|
|
* hppa-tdep.c: Remove _initialize_hppa_tdep prototype.
|
|
|
|
|
* i386-bsd-nat.c: Remove _initialize_i386bsd_nat prototype.
|
|
|
|
|
* i386-cygwin-tdep.c: Remove _initialize_i386_cygwin_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* i386-darwin-tdep.c: Remove _initialize_i386_darwin_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* i386-dicos-tdep.c: Remove _initialize_i386_dicos_tdep prototype.
|
|
|
|
|
* i386-fbsd-nat.c: Remove _initialize_i386fbsd_nat prototype.
|
|
|
|
|
* i386-fbsd-tdep.c: Remove _initialize_i386fbsd_tdep prototype.
|
|
|
|
|
* i386-gnu-nat.c: Remove _initialize_i386gnu_nat prototype.
|
|
|
|
|
* i386-gnu-tdep.c: Remove _initialize_i386gnu_tdep prototype.
|
|
|
|
|
* i386-linux-nat.c: Remove _initialize_i386_linux_nat prototype.
|
|
|
|
|
* i386-linux-tdep.c: Remove _initialize_i386_linux_tdep prototype.
|
|
|
|
|
* i386-nbsd-nat.c: Remove _initialize_i386nbsd_nat prototype.
|
|
|
|
|
* i386-nbsd-tdep.c: Remove _initialize_i386nbsd_tdep prototype.
|
|
|
|
|
* i386-nto-tdep.c: Remove _initialize_i386nto_tdep prototype.
|
|
|
|
|
* i386-obsd-nat.c: Remove _initialize_i386obsd_nat prototype.
|
|
|
|
|
* i386-obsd-tdep.c: Remove _initialize_i386obsd_tdep prototype.
|
|
|
|
|
* i386-sol2-nat.c: Remove _initialize_amd64_sol2_nat prototype.
|
|
|
|
|
* i386-sol2-tdep.c: Remove _initialize_amd64_sol2_tdep prototype.
|
|
|
|
|
* i386-tdep.c: Remove _initialize_i386_tdep prototype.
|
|
|
|
|
* i386-windows-nat.c: Remove _initialize_i386_windows_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* ia64-libunwind-tdep.c: Remove _initialize_libunwind_frame
|
|
|
|
|
prototype.
|
|
|
|
|
* ia64-linux-nat.c: Remove _initialize_ia64_linux_nat prototype.
|
|
|
|
|
* ia64-linux-tdep.c: Remove _initialize_ia64_linux_tdep prototype.
|
|
|
|
|
* ia64-tdep.c: Remove _initialize_ia64_tdep prototype.
|
|
|
|
|
* ia64-vms-tdep.c: Remove _initialize_ia64_vms_tdep prototype.
|
|
|
|
|
* infcall.c: Remove _initialize_infcall prototype.
|
|
|
|
|
* infcmd.c: Remove _initialize_infcmd prototype.
|
|
|
|
|
* inferior.c: Remove _initialize_inferiors prototype.
|
|
|
|
|
* inflow.c: Remove _initialize_inflow prototype.
|
|
|
|
|
* infrun.c: Remove _initialize_infrun prototype.
|
|
|
|
|
* interps.c: Remove _initialize_interpreter prototype.
|
|
|
|
|
* iq2000-tdep.c: Remove _initialize_iq2000_tdep prototype.
|
|
|
|
|
* jit.c: Remove _initialize_jit prototype.
|
|
|
|
|
* language.c: Remove _initialize_language prototype.
|
|
|
|
|
* linux-fork.c: Remove _initialize_linux_fork prototype.
|
|
|
|
|
* linux-nat.c: Remove _initialize_linux_nat prototype.
|
|
|
|
|
* linux-tdep.c: Remove _initialize_linux_tdep prototype.
|
|
|
|
|
* linux-thread-db.c: Remove _initialize_thread_db prototype.
|
|
|
|
|
* lm32-tdep.c: Remove _initialize_lm32_tdep prototype.
|
|
|
|
|
* m2-lang.c: Remove _initialize_m2_language prototype.
|
|
|
|
|
* m32c-tdep.c: Remove _initialize_m32c_tdep prototype.
|
|
|
|
|
* m32r-linux-nat.c: Remove _initialize_m32r_linux_nat prototype.
|
|
|
|
|
* m32r-linux-tdep.c: Remove _initialize_m32r_linux_tdep prototype.
|
|
|
|
|
* m32r-tdep.c: Remove _initialize_m32r_tdep prototype.
|
|
|
|
|
* m68hc11-tdep.c: Remove _initialize_m68hc11_tdep prototype.
|
|
|
|
|
* m68k-bsd-nat.c: Remove _initialize_m68kbsd_nat prototype.
|
|
|
|
|
* m68k-bsd-tdep.c: Remove _initialize_m68kbsd_tdep prototype.
|
|
|
|
|
* m68k-linux-nat.c: Remove _initialize_m68k_linux_tdep prototype.
|
|
|
|
|
* m68k-linux-tdep.c: Remove _initialize_m68k_linux_tdep prototype.
|
|
|
|
|
* m68k-tdep.c: Remove _initialize_m68k_tdep prototype.
|
|
|
|
|
* m88k-bsd-nat.c: Remove _initialize_m68kbsd_nat prototype.
|
|
|
|
|
* m88k-tdep.c: Remove _initialize_m68kbsd_tdep prototype.
|
|
|
|
|
* machoread.c: Remove _initialize_machoread prototype.
|
|
|
|
|
* macrocmd.c: Remove _initialize_macrocmd prototype.
|
|
|
|
|
* macroscope.c: Remove _initialize_macroscope prototype.
|
|
|
|
|
* maint.c: Remove _initialize_maint_cmds prototype.
|
|
|
|
|
* mdebugread.c: Remove _initialize_mdebugread prototype.
|
|
|
|
|
* memattr.c: Remove _initialize_mem prototype.
|
|
|
|
|
* mep-tdep.c: Remove _initialize_mep_tdep prototype.
|
|
|
|
|
* mi/mi-cmd-env.c: Remove _initialize_mi_cmd_env prototype.
|
|
|
|
|
* mi/mi-cmds.c: Remove _initialize_mi_cmds prototype.
|
|
|
|
|
* mi/mi-interp.c: Remove _initialize_mi_interp prototype.
|
|
|
|
|
* mi/mi-main.c: Remove _initialize_mi_main prototype.
|
|
|
|
|
* microblaze-linux-tdep.c: Remove
|
|
|
|
|
_initialize_microblaze_linux_tdep prototype.
|
|
|
|
|
* microblaze-tdep.c: Remove _initialize_microblaze_tdep prototype.
|
|
|
|
|
* mips-fbsd-nat.c: Remove _initialize_mips_fbsd_nat prototype.
|
|
|
|
|
* mips-fbsd-tdep.c: Remove _initialize_mips_fbsd_tdep prototype.
|
|
|
|
|
* mips-linux-nat.c: Remove _initialize_mips_linux_nat prototype.
|
|
|
|
|
* mips-linux-tdep.c: Remove _initialize_mips_linux_tdep prototype.
|
|
|
|
|
* mips-nbsd-nat.c: Remove _initialize_mipsnbsd_nat prototype.
|
|
|
|
|
* mips-nbsd-tdep.c: Remove _initialize_mipsnbsd_tdep prototype.
|
|
|
|
|
* mips-sde-tdep.c: Remove _initialize_mips_sde_tdep prototype.
|
|
|
|
|
* mips-tdep.c: Remove _initialize_mips_tdep prototype.
|
|
|
|
|
* mips64-obsd-nat.c: Remove _initialize_mips64obsd_nat prototype.
|
|
|
|
|
* mips64-obsd-tdep.c: Remove _initialize_mips64obsd_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* mipsread.c: Remove _initialize_mipsread prototype.
|
|
|
|
|
* mn10300-linux-tdep.c: Remove _initialize_mn10300_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* mn10300-tdep.c: Remove _initialize_mn10300_tdep prototype.
|
|
|
|
|
* moxie-tdep.c: Remove _initialize_moxie_tdep prototype.
|
|
|
|
|
* msp430-tdep.c: Remove _initialize_msp430_tdep prototype.
|
|
|
|
|
* mt-tdep.c: Remove _initialize_mt_tdep prototype.
|
|
|
|
|
* nds32-tdep.c: Remove _initialize_nds32_tdep prototype.
|
|
|
|
|
* nios2-linux-tdep.c: Remove _initialize_nios2_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* nios2-tdep.c: Remove _initialize_nios2_tdep prototype.
|
|
|
|
|
* nto-procfs.c: Remove _initialize_procfs prototype.
|
|
|
|
|
* nto-tdep.c: Remove _initialize_nto_tdep prototype.
|
|
|
|
|
* objc-lang.c: Remove _initialize_objc_language prototype.
|
|
|
|
|
* objfiles.c: Remove _initialize_objfiles prototype.
|
|
|
|
|
* observer.c: Remove observer_test_first_notification_function,
|
|
|
|
|
observer_test_second_notification_function,
|
|
|
|
|
observer_test_third_notification_function, and
|
|
|
|
|
_initialize_observer prototypes.
|
|
|
|
|
* opencl-lang.c: Remove _initialize_opencl_language prototypes.
|
|
|
|
|
* osabi.c: Remove _initialize_gdb_osabi prototype.
|
|
|
|
|
* osdata.c: Remove _initialize_osdata prototype.
|
|
|
|
|
* p-valprint.c: Remove _initialize_pascal_valprint prototype.
|
|
|
|
|
* parse.c: Remove _initialize_parse prototype.
|
|
|
|
|
* ppc-fbsd-nat.c: Remove _initialize_ppcfbsd_nat prototype.
|
|
|
|
|
* ppc-fbsd-tdep.c: Remove _initialize_ppcfbsd_tdep prototype.
|
|
|
|
|
* ppc-linux-nat.c: Remove _initialize_ppc_linux_nat prototype.
|
|
|
|
|
* ppc-linux-tdep.c: Remove _initialize_ppc_linux_tdep prototype.
|
|
|
|
|
* ppc-nbsd-nat.c: Remove _initialize_ppcnbsd_nat prototype.
|
|
|
|
|
* ppc-nbsd-tdep.c: Remove _initialize_ppcnbsd_tdep prototype.
|
|
|
|
|
* ppc-obsd-nat.c: Remove _initialize_ppcobsd_nat prototype.
|
|
|
|
|
* ppc-obsd-tdep.c: Remove _initialize_ppcobsd_tdep prototype.
|
|
|
|
|
* printcmd.c: Remove _initialize_printcmd prototype.
|
|
|
|
|
* probe.c: Remove _initialize_probe prototype.
|
|
|
|
|
* proc-api.c: Remove _initialize_proc_api prototype.
|
|
|
|
|
* proc-events.c: Remove _initialize_proc_events prototype.
|
|
|
|
|
* proc-service.c: Remove _initialize_proc_service prototype.
|
|
|
|
|
* procfs.c: Remove _initialize_procfs prototype.
|
|
|
|
|
* psymtab.c: Remove _initialize_psymtab prototype.
|
|
|
|
|
* python/python.c: Remove _initialize_python prototype.
|
|
|
|
|
* ravenscar-thread.c: Remove _initialize_ravenscar prototype.
|
|
|
|
|
* record-btrace.c: Remove _initialize_record_btrace prototype.
|
|
|
|
|
* record-full.c: Remove _initialize_record_full prototype.
|
|
|
|
|
* record.c: Remove _initialize_record prototype.
|
|
|
|
|
* regcache.c: Remove _initialize_regcache prototype.
|
|
|
|
|
* reggroups.c: Remove _initialize_reggroup prototype.
|
|
|
|
|
* remote-notif.c: Remove _initialize_notif prototype.
|
|
|
|
|
* remote-sim.c: Remove _initialize_remote_sim prototype.
|
|
|
|
|
* remote.c: Remove _initialize_remote prototype.
|
|
|
|
|
* reverse.c: Remove _initialize_reverse prototype.
|
|
|
|
|
* rl78-tdep.c: Remove _initialize_rl78_tdep prototype.
|
|
|
|
|
* rs6000-aix-tdep.c: Remove _initialize_rs6000_aix_tdep prototype.
|
|
|
|
|
* rs6000-lynx178-tdep.c: Remove _initialize_rs6000_lynx178_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* rs6000-nat.c: Remove _initialize_rs6000_nat prototype.
|
|
|
|
|
* rs6000-tdep.c: Remove _initialize_rs6000_tdep prototype.
|
|
|
|
|
* rust-exp.y: Remove _initialize_rust_exp prototype.
|
|
|
|
|
* rx-tdep.c: Remove _initialize_rx_tdep prototype.
|
|
|
|
|
* s390-linux-nat.c: Remove _initialize_s390_nat prototype.
|
|
|
|
|
* s390-linux-tdep.c: Remove _initialize_s390_tdep prototype.
|
|
|
|
|
* score-tdep.c: Remove _initialize_score_tdep prototype.
|
|
|
|
|
* selftest-arch.c: Remove _initialize_selftests_foreach_arch
|
|
|
|
|
prototype.
|
|
|
|
|
* ser-go32.c: Remove _initialize_ser_dos prototype.
|
|
|
|
|
* ser-mingw.c: Remove _initialize_ser_windows prototype.
|
|
|
|
|
* ser-pipe.c: Remove _initialize_ser_pipe prototype.
|
|
|
|
|
* ser-tcp.c: Remove _initialize_ser_tcp prototype.
|
|
|
|
|
* ser-unix.c: Remove _initialize_ser_hardwire prototype.
|
|
|
|
|
* serial.c: Remove _initialize_serial prototype.
|
|
|
|
|
* sh-linux-tdep.c: Remove _initialize_sh_linux_tdep prototype.
|
|
|
|
|
* sh-nbsd-nat.c: Remove _initialize_shnbsd_nat prototype.
|
|
|
|
|
* sh-nbsd-tdep.c: Remove _initialize_shnbsd_tdep prototype.
|
|
|
|
|
* sh-tdep.c: Remove _initialize_sh_tdep prototype.
|
|
|
|
|
* skip.c: Remove _initialize_step_skip prototype.
|
|
|
|
|
* sol-thread.c: Remove _initialize_sol_thread prototype.
|
|
|
|
|
* solib-aix.c: Remove _initialize_solib_aix prototype.
|
|
|
|
|
* solib-darwin.c: Remove _initialize_darwin_solib prototype.
|
|
|
|
|
* solib-dsbt.c: Remove _initialize_dsbt_solib prototype.
|
|
|
|
|
* solib-frv.c: Remove _initialize_frv_solib prototype.
|
|
|
|
|
* solib-spu.c: Remove _initialize_spu_solib prototype.
|
|
|
|
|
* solib-svr4.c: Remove _initialize_svr4_solib prototype.
|
|
|
|
|
* solib-target.c: Remove _initialize_solib_target prototype.
|
|
|
|
|
* solib.c: Remove _initialize_solib prototype.
|
|
|
|
|
* source.c: Remove _initialize_source prototype.
|
|
|
|
|
* sparc-linux-nat.c: Remove _initialize_sparc_linux_nat prototype.
|
|
|
|
|
* sparc-linux-tdep.c: Remove _initialize_sparc_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc-nat.c: Remove _initialize_sparc_nat prototype.
|
|
|
|
|
* sparc-nbsd-nat.c: Remove _initialize_sparcnbsd_nat prototype.
|
|
|
|
|
* sparc-nbsd-tdep.c: Remove _initialize_sparcnbsd_tdep prototype.
|
|
|
|
|
* sparc-obsd-tdep.c: Remove _initialize_sparc32obsd_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc-sol2-nat.c: Remove _initialize_sparc_sol2_nat prototype.
|
|
|
|
|
* sparc-sol2-tdep.c: Remove _initialize_sparc_sol2_tdep prototype.
|
|
|
|
|
* sparc-tdep.c: Remove _initialize_sparc_tdep prototype.
|
|
|
|
|
* sparc64-fbsd-nat.c: Remove _initialize_sparc64fbsd_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-fbsd-tdep.c: Remove _initialize_sparc64fbsd_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-linux-nat.c: Remove _initialize_sparc64_linux_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-linux-tdep.c: Remove _initialize_sparc64_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-nat.c: Remove _initialize_sparc64_nat prototype.
|
|
|
|
|
* sparc64-nbsd-nat.c: Remove _initialize_sparc64nbsd_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-nbsd-tdep.c: Remove _initialize_sparc64nbsd_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-obsd-nat.c: Remove _initialize_sparc64obsd_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-obsd-tdep.c: Remove _initialize_sparc64obsd_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* sparc64-sol2-tdep.c: Remove _initialize_sparc64_sol2_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* spu-linux-nat.c: Remove _initialize_spu_nat prototype.
|
|
|
|
|
* spu-multiarch.c: Remove _initialize_spu_multiarch prototype.
|
|
|
|
|
* spu-tdep.c: Remove _initialize_spu_tdep prototype.
|
|
|
|
|
* stabsread.c: Remove _initialize_stabsread prototype.
|
|
|
|
|
* stack.c: Remove _initialize_stack prototype.
|
|
|
|
|
* stap-probe.c: Remove _initialize_stap_probe prototype.
|
|
|
|
|
* std-regs.c: Remove _initialize_frame_reg prototype.
|
|
|
|
|
* symfile-debug.c: Remove _initialize_symfile_debug prototype.
|
|
|
|
|
* symfile-mem.c: Remove _initialize_symfile_mem prototype.
|
|
|
|
|
* symfile.c: Remove _initialize_symfile prototype.
|
|
|
|
|
* symmisc.c: Remove _initialize_symmisc prototype.
|
|
|
|
|
* symtab.c: Remove _initialize_symtab prototype.
|
|
|
|
|
* target-dcache.c: Remove _initialize_target_dcache prototype.
|
|
|
|
|
* target-descriptions.c: Remove _initialize_target_descriptions
|
|
|
|
|
prototype.
|
|
|
|
|
* thread.c: Remove _initialize_thread prototype.
|
|
|
|
|
* tic6x-linux-tdep.c: Remove _initialize_tic6x_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* tic6x-tdep.c: Remove _initialize_tic6x_tdep prototype.
|
|
|
|
|
* tilegx-linux-nat.c: Remove _initialize_tile_linux_nat prototype.
|
|
|
|
|
* tilegx-linux-tdep.c: Remove _initialize_tilegx_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* tilegx-tdep.c: Remove _initialize_tilegx_tdep prototype.
|
|
|
|
|
* tracefile-tfile.c: Remove _initialize_tracefile_tfile prototype.
|
|
|
|
|
* tracefile.c: Remove _initialize_tracefile prototype.
|
|
|
|
|
* tracepoint.c: Remove _initialize_tracepoint prototype.
|
|
|
|
|
* tui/tui-hooks.c: Remove _initialize_tui_hooks prototype.
|
|
|
|
|
* tui/tui-interp.c: Remove _initialize_tui_interp prototype.
|
|
|
|
|
* tui/tui-layout.c: Remove _initialize_tui_layout prototype.
|
|
|
|
|
* tui/tui-regs.c: Remove _initialize_tui_regs prototype.
|
|
|
|
|
* tui/tui-stack.c: Remove _initialize_tui_stack prototype.
|
|
|
|
|
* tui/tui-win.c: Remove _initialize_tui_win prototype.
|
|
|
|
|
* tui/tui.c: Remove _initialize_tui prototype.
|
|
|
|
|
* typeprint.c: Remove _initialize_typeprint prototype.
|
|
|
|
|
* user-regs.c: Remove _initialize_user_regs prototype.
|
|
|
|
|
* utils.c: Remove _initialize_utils prototype.
|
|
|
|
|
* v850-tdep.c: Remove _initialize_v850_tdep prototype.
|
|
|
|
|
* valarith.c: Remove _initialize_valarith prototype.
|
|
|
|
|
* valops.c: Remove _initialize_valops prototype.
|
|
|
|
|
* valprint.c: Remove _initialize_valprint prototype.
|
|
|
|
|
* value.c: Remove _initialize_values prototype.
|
|
|
|
|
* varobj.c: Remove _initialize_varobj prototype.
|
|
|
|
|
* vax-bsd-nat.c: Remove _initialize_vaxbsd_nat prototype.
|
|
|
|
|
* vax-nbsd-tdep.c: Remove _initialize_vaxnbsd_tdep prototype.
|
|
|
|
|
* vax-tdep.c: Remove _initialize_vax_tdep prototype.
|
|
|
|
|
* windows-nat.c: Remove _initialize_windows_nat,
|
|
|
|
|
_initialize_check_for_gdb_ini, and _initialize_loadable
|
|
|
|
|
prototypes.
|
|
|
|
|
* windows-tdep.c: Remove _initialize_windows_tdep prototype.
|
|
|
|
|
* xcoffread.c: Remove _initialize_xcoffread prototype.
|
|
|
|
|
* xml-support.c: Remove _initialize_xml_support prototype.
|
|
|
|
|
* xstormy16-tdep.c: Remove _initialize_xstormy16_tdep prototype.
|
|
|
|
|
* xtensa-linux-nat.c: Remove _initialize_xtensa_linux_nat
|
|
|
|
|
prototype.
|
|
|
|
|
* xtensa-linux-tdep.c: Remove _initialize_xtensa_linux_tdep
|
|
|
|
|
prototype.
|
|
|
|
|
* xtensa-tdep.c: Remove _initialize_xtensa_tdep prototype.
|
|
|
|
|
|
2017-09-09 01:44:30 +02:00
|
|
|
|
2017-09-08 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct field_info) <fnfields>: Remove unused
|
|
|
|
|
field.
|
|
|
|
|
|
2017-09-08 15:11:47 +02:00
|
|
|
|
2017-09-08 Christoph Weinmann <christoph.t.weinmann@intel.com>
|
|
|
|
|
|
|
|
|
|
* f-valprint.c (f_val_print): Remove check for one byte
|
|
|
|
|
sized integers. Remove printing of character type.
|
|
|
|
|
|
2017-09-08 15:11:47 +02:00
|
|
|
|
2017-09-08 Frank Penczek <frank.penczek@intel.com>
|
|
|
|
|
Christoph Weinmann <christoph.t.weinmann@intel.com>
|
|
|
|
|
Bernhard Heckel <bernhard.heckel@intel.com>
|
|
|
|
|
|
|
|
|
|
* f-typeprint.c (f_type_print_base): Use fprintfi_filtered
|
|
|
|
|
to maintain proper indentation when printing pointers/refs.
|
|
|
|
|
|
2017-09-07 16:40:10 +02:00
|
|
|
|
2017-09-07 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 8.0.1 released.
|
|
|
|
|
|
2017-09-07 16:24:33 +02:00
|
|
|
|
2017-09-07 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes in GDB 7.11): Remove entry for QStartupWithShell.
|
|
|
|
|
|
2017-09-04 05:50:47 +02:00
|
|
|
|
2017-09-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* parse.c (funcall_chain): Now a std::vector.
|
|
|
|
|
(start_arglist, end_arglist): Simplify.
|
|
|
|
|
(free_funcalls): Remove.
|
|
|
|
|
(parse_exp_in_context_1): Remove cleanup.
|
|
|
|
|
|
2017-08-13 18:40:35 +02:00
|
|
|
|
2017-09-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* go-exp.y (go_parse): Don't create a cleanup.
|
|
|
|
|
|
2017-08-13 18:38:53 +02:00
|
|
|
|
2017-09-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (PrimaryExpression): Use std::string.
|
|
|
|
|
(d_parse): Don't create a cleanup.
|
|
|
|
|
|
2017-08-13 18:37:13 +02:00
|
|
|
|
2017-09-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (do_clear_parser_state): Remove.
|
|
|
|
|
(make_cleanup_clear_parser_state): Remove.
|
|
|
|
|
* p-exp.y (pascal_parse): Use scoped_restore.
|
|
|
|
|
* m2-exp.y (m2_parse): Use scoped_restore.
|
|
|
|
|
* f-exp.y (f_parse): Use scoped_restore.
|
|
|
|
|
* d-exp.y (d_parse): Use scoped_restore.
|
|
|
|
|
* c-exp.y (c_parse): Use scoped_restore.
|
|
|
|
|
* ada-exp.y (ada_parse): Use scoped_restore.
|
|
|
|
|
* utils.h (make_cleanup_clear_parser_state): Remove.
|
|
|
|
|
|
Introduce dw2_linkage_name and dw2_linkage_name_attr.
The DWARF reader is littered with the following idiom to read a linkage name
from the debug info:
mangled = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
if (mangled == NULL)
mangled = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
This patch introduces functions to simplify this to:
mangled = dw2_linkage_name (die, cu);
or
attr = dw2_linkage_name_attr (die, cu);
gdb/ChangeLog:
* dwarf2read.c (dw2_linkage_name_attr): New function.
(dw2_linkage_name): New function.
(dwarf2_compute_name, dwarf2_physname, read_call_site_scope)
(guess_full_die_structure_name, dwarf2_name): Use dw2_linkage_name.
(anonymous_struct_prefix, dwarf2_name): Use dw2_linkage_name_attr.
2017-09-06 21:50:52 +02:00
|
|
|
|
2017-09-06 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dw2_linkage_name_attr): New function.
|
|
|
|
|
(dw2_linkage_name): New function.
|
|
|
|
|
(dwarf2_compute_name, dwarf2_physname, read_call_site_scope)
|
|
|
|
|
(guess_full_die_structure_name, dwarf2_name): Use dw2_linkage_name.
|
|
|
|
|
(anonymous_struct_prefix, dwarf2_name): Use dw2_linkage_name_attr.
|
|
|
|
|
|
2017-09-06 18:48:49 +02:00
|
|
|
|
2017-09-06 Kamil Rytarowski <n54@gmx.com>
|
|
|
|
|
|
|
|
|
|
* config/djgpp/djconfig.sh: Correct shell portability issue.
|
|
|
|
|
|
2017-09-06 18:33:46 +02:00
|
|
|
|
2017-09-06 Kamil Rytarowski <n54@gmx.com>
|
|
|
|
|
|
|
|
|
|
* configure.nat: Define HAVE_NATIVE_GCORE_HOST on NetBSD.
|
|
|
|
|
|
2017-08-10 20:00:42 +02:00
|
|
|
|
2017-09-06 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALLDEPFILES): Add mips-fbsd-nat.c.
|
|
|
|
|
* NEWS: Mention new FreeBSD/mips native configuration.
|
|
|
|
|
* configure.host: Add aarch64*-*-freebsd*.
|
|
|
|
|
* configure.nat: Likewise.
|
|
|
|
|
* aarch64-fbsd-nat.c: New file.
|
|
|
|
|
|
2017-08-09 08:25:42 +02:00
|
|
|
|
2017-09-06 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_64_TARGET_OBS): Add aarch64-fbsd-tdep.o.
|
|
|
|
|
(ALLDEPFILES): Add aarch64-fbsd-tdep.c.
|
|
|
|
|
* NEWS: Mention new FreeBSD/aarch64 target.
|
|
|
|
|
* configure.tgt: Add aarch64*-*-freebsd*.
|
|
|
|
|
* aarch64-fbsd-tdep.c: New file.
|
|
|
|
|
* aarch64-fbsd-tdep.h: New file.
|
|
|
|
|
|
2017-09-06 17:57:39 +02:00
|
|
|
|
2017-09-06 Kamil Rytarowski <n54@gmx.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Kamil Rytarowski.
|
|
|
|
|
|
2017-09-06 13:32:46 +02:00
|
|
|
|
2017-09-06 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* parse.c (find_minsym_type_and_address): Don't relocate addresses
|
|
|
|
|
of TLS symbols.
|
|
|
|
|
|
Fix leak of auto_obstack objfile_per_bfd_storage->storage_obstack;
commit 23732b1e32dd58f7c731d9aee56ff0b22a645d53
Author: Pedro Alves <palves@redhat.com>
Date: Tue Jun 27 16:22:08 2017 +0100
changed objfile_per_bfd_storage->storage_obstack
from 'struct obstack storage_obstack;'
to 'auto_obstack storage_obstack;'
So the obstack is auto allocated when the objfile_per_bfd_storage ctor is
manually called by get_objfile_bfd_data).
However, the ctor call was still followed by a manual call to
obstack_init (&storage->storage_obstack);
This results in a bunch of leaks detected by valgrind, such as:
==24665== 4,064 bytes in 1 blocks are definitely lost in loss record 11,469 of 11,590
==24665== at 0x4C27BF5: malloc (vg_replace_malloc.c:299)
==24665== by 0x5437B7: xmalloc (common-utils.c:44)
==24665== by 0x77CAA7: _obstack_begin_worker (obstack.c:141)
==24665== by 0x60168F: auto_obstack (gdb_obstack.h:70)
==24665== by 0x60168F: get_objfile_bfd_data(objfile*, bfd*) (objfiles.h:188)
==24665== by 0x601DB6: allocate_objfile(bfd*, char const*, enum_flags<objfile_flag>) (objfiles.c:423)
==24665== by 0x647753: symbol_file_add_with_addrs(bfd*, char const*, enum_flags<symfile_add_flag>, section_addr_info*, enum_flags<objfile_flag>, objfile*) (symfile.c:1158)
==24665== by 0x647C7B: symbol_file_add_separate(bfd*, char const*, enum_flags<symfile_add_flag>, objfile*) (symfile.c:1252)
==24665== by 0x4C7D79: elf_symfile_read(objfile*, enum_flags<symfile_add_flag>) (elfread.c:1270)
==24665== by 0x647CB4: read_symbols(objfile*, enum_flags<symfile_add_flag>) (symfile.c:861)
==24665== by 0x647809: syms_from_objfile_1 (symfile.c:1062)
-> remove the manual call to obstack_init.
Reg-tested on Debian 8/amd64, tests results are the same before/after the patch.
valgrind still show some leaks, but less.
gdb/ChangeLog
2017-09-05 Philippe Waroquiers <philippe.waroquiers@skynet.be>
* objfiles.c (get_objfile_bfd_data): Remove useless obstack_init
call.
2017-09-05 20:51:23 +02:00
|
|
|
|
2017-09-05 Philippe Waroquiers <philippe.waroquiers@skynet.be>
|
|
|
|
|
|
|
|
|
|
* objfiles.c (get_objfile_bfd_data): Remove useless obstack_init
|
|
|
|
|
call.
|
|
|
|
|
|
Add thread after updating gdbarch when exec'ing
As mentioned in the previous patch, we should avoid doing register reads
after a process does an exec and before we've updated that inferior's
gdbarch. Otherwise, we may interpret the registers using the wrong
architecture. When a process does an exec with "follow-exec-mode new",
a new inferior is added by follow_exec. The gdbarch of that new
inferior is at first set to some default value, probably specific to the
gdb build (I get "i386" here), which may not be the right one. It is
updated later by the call to target_find_description. Before that
point, if we try to read the inferior's registers, we may not interpret
them correctly. This has been exposed by a failure in
gdb.base/foll-exec-mode.exp after the previous patch, with:
Remote 'g' packet reply is too long (expected 312 bytes, got 816 bytes)
The call to "add_thread" done just after adding the inferior is
problematic, because it ends up reading the registers (because the ptid
is re-used, we end up doing a switch_to_thread to it, which tries to
update stop_pc). The registers returned by gdbserver are the x86-64
ones, while we try to interpret them using the "i386" gdbarch.
Postponing the call to add_thread to until the target
description/gdbarch has been updated seems to fix the issue.
As to why this issue was uncovered by the previous patch: what I think
happened before that patch is that since we were updating stop_pc before
switching to the new inferior, we were filling the regcache associated
to the ptid (this worked fine as long as the architectures of the
previous and new process images were the same). The call to
switch_to_thread then worked, because the register read hit the
regcache. Now, it triggers a register read, while the gdbarch is not
set correctly, leading to the "reply is too long" error. If this is
right, it sounds wrong that we delete and re-add a thread with the same
ptid, and are able to access the registers from the deleted thread.
When we delete a thread, should we clear the regcache associated to that
ptid, so that the new thread starts with a fresh/empty regcache?
gdb/ChangeLog:
* infrun.c (follow_exec): Call add_thread after
target_find_description.
2017-09-05 17:30:27 +02:00
|
|
|
|
2017-09-05 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_exec): Call add_thread after
|
|
|
|
|
target_find_description.
|
|
|
|
|
|
2017-09-05 16:45:10 +02:00
|
|
|
|
2017-09-05 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (handle_inferior_event_1): When exec'ing, read
|
|
|
|
|
stop_pc after follow_exec.
|
|
|
|
|
|
2017-09-05 16:43:07 +02:00
|
|
|
|
2017-09-05 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (process_g_packet): Update error message.
|
|
|
|
|
|
2017-09-05 15:46:47 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* configure.tgt (gdb_target_obs): Add i386.o for x86_64-*
|
|
|
|
|
targets.
|
|
|
|
|
|
2017-09-05 13:13:57 +02:00
|
|
|
|
2017-09-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (eval_call, evaluate_funcall): New functions, factored
|
|
|
|
|
out from ...
|
|
|
|
|
(evaluate_subexp_standard): ... this.
|
|
|
|
|
|
2017-09-05 10:54:54 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_target_description): Create target
|
|
|
|
|
descriptions.
|
|
|
|
|
(_initialize_amd64_tdep): Don't call functions
|
|
|
|
|
initialize_tdesc_amd64_*. Add self tests.
|
|
|
|
|
* arch/amd64.c (amd64_create_target_description): Add parameter
|
|
|
|
|
is_linux. Call set_tdesc_osabi if is_linux is true.
|
|
|
|
|
* arch/amd64.h (amd64_create_target_description): Update the
|
|
|
|
|
declaration.
|
|
|
|
|
* arch/i386.c (i386_create_target_description): Add parameter
|
|
|
|
|
is_linux. Call set_tdesc_osabi if is_linux is true.
|
|
|
|
|
* arch/i386.h (i386_create_target_description): Update
|
|
|
|
|
declaration.
|
|
|
|
|
* configure.tgt: Add i386.o to gdb_target_obs.
|
|
|
|
|
* features/Makefile (XMLTOC): Remove i386/*.xml.
|
|
|
|
|
* features/i386/amd64-avx-avx512.c: Remove.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku.c: Remove.
|
|
|
|
|
* features/i386/amd64-avx-mpx.c: Remove.
|
|
|
|
|
* features/i386/amd64-avx.c: Remove.
|
|
|
|
|
* features/i386/amd64-mpx.c: Remove.
|
|
|
|
|
* features/i386/amd64.c: Remove.
|
|
|
|
|
* features/i386/i386-avx-avx512.c: Remove.
|
|
|
|
|
* features/i386/i386-avx-mpx-avx512-pku.c: Remove.
|
|
|
|
|
* features/i386/i386-avx-mpx.c: Remove.
|
|
|
|
|
* features/i386/i386-avx.c: Remove.
|
|
|
|
|
* features/i386/i386-mmx.c: Remove.
|
|
|
|
|
* features/i386/i386-mpx.c: Remove.
|
|
|
|
|
* features/i386/i386.c: Remove.
|
|
|
|
|
* i386-tdep.c: Don't include features/i386/i386*.c., include
|
|
|
|
|
target-descriptions.h and arch/i386.h.
|
|
|
|
|
(i386_target_description): Create target descriptions.
|
|
|
|
|
(i386_gdbarch_init): Don't call initialize_tdesc_i386_*
|
|
|
|
|
functions. Do self tests.
|
|
|
|
|
|
2017-09-05 10:54:54 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/Makefile (XMLTOC): Remove i386/amd64XXX-linux.xml.
|
|
|
|
|
* features/i386/amd64-avx-avx512-linux.c: Removed.
|
|
|
|
|
* features/i386/amd64-avx-linux.c: Removed.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku-linux.c: Removed.
|
|
|
|
|
* features/i386/amd64-avx-mpx-linux.c: Removed.
|
|
|
|
|
* features/i386/amd64-linux.c: Removed.
|
|
|
|
|
* features/i386/amd64-mpx-linux.c: Removed.
|
|
|
|
|
* features/i386/x32-avx-avx512-linux.c: Removed.
|
|
|
|
|
* features/i386/x32-avx-linux.c: Removed.
|
|
|
|
|
* features/i386/x32-linux.c: Removed.
|
|
|
|
|
|
2017-09-05 10:54:54 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.c: Include arch/amd64.h. Don't include
|
|
|
|
|
features/i386/*.c.
|
|
|
|
|
(amd64_linux_read_description): Call
|
|
|
|
|
amd64_create_target_description.
|
|
|
|
|
* arch/amd64.c: New file.
|
|
|
|
|
* arch/amd64.h: New file.
|
|
|
|
|
* configure.tgt (x86_64-*-linux*): Append amd64.o.
|
|
|
|
|
* Makefile.in (ALL_64_TARGET_OBS): Append amd64.o.
|
|
|
|
|
|
2017-09-05 10:54:54 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.c: Don't include amd64-XXX-linux and
|
|
|
|
|
x32-XXX-linux.c. Include 64bit-XX.c and x32-XX.c.
|
|
|
|
|
(amd64_linux_read_description): Create target descriptions.
|
|
|
|
|
(_initialize_amd64_linux_tdep): Don't call initialize_tdesc_XXX
|
|
|
|
|
functions. Add unit tests.
|
|
|
|
|
* features/Makefile (FEATURE_XMLFILES): Append 64bit-XXX.xml and
|
|
|
|
|
x32-core.xml.
|
|
|
|
|
* features/i386/64bit-avx.c: Generated.
|
|
|
|
|
* features/i386/64bit-avx512.c: Generated.
|
|
|
|
|
* features/i386/64bit-core.c: Generated.
|
|
|
|
|
* features/i386/64bit-linux.c: Generated.
|
|
|
|
|
* features/i386/64bit-mpx.c: Generated.
|
|
|
|
|
* features/i386/64bit-pkeys.c: Generated.
|
|
|
|
|
* features/i386/64bit-segments.c: Generated.
|
|
|
|
|
* features/i386/64bit-sse.c: Generated.
|
|
|
|
|
* features/i386/x32-core.c: Generated.
|
|
|
|
|
* target-descriptions.c (maint_print_c_tdesc_cmd): Print feature
|
|
|
|
|
c files for amd64-linux and x32-linux.
|
|
|
|
|
|
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_read_description): New
|
|
|
|
|
function.
|
|
|
|
|
(amd64_linux_core_read_description): Call
|
|
|
|
|
amd64_linux_read_description.
|
|
|
|
|
(amd64_linux_init_abi): Likewise.
|
|
|
|
|
(amd64_x32_linux_init_abi): Likewise.
|
|
|
|
|
* amd64-linux-tdep.h (amd64_linux_read_description): Declare.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_read_description): Call
|
|
|
|
|
amd64_linux_read_description.
|
|
|
|
|
|
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_core_read_description): Update
|
|
|
|
|
comments.
|
|
|
|
|
|
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/Makefile (XMLTOC): Remove i386/i386-XX-linux.xml.
|
|
|
|
|
* features/i386/i386-avx-avx512-linux.c: Remove.
|
|
|
|
|
* features/i386/i386-avx-linux.c: Remove.
|
|
|
|
|
* features/i386/i386-avx-mpx-avx512-pku-linux.c: Remove.
|
|
|
|
|
* features/i386/i386-avx-mpx-linux.c: Remove.
|
|
|
|
|
* features/i386/i386-linux.c: Remove.
|
|
|
|
|
* features/i386/i386-mmx-linux.c: Remove.
|
|
|
|
|
* features/i386/i386-mpx-linux.c: Remove.
|
|
|
|
|
|
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Add i386.o.
|
|
|
|
|
(SFILES): Add arch/i386.c.
|
|
|
|
|
(HFILES_NO_SRCDIR): Add arch/i386.h.
|
|
|
|
|
* arch/i386.c: New file.
|
|
|
|
|
* arch/i386.h: New file.
|
|
|
|
|
* arch/tdesc.h (allocate_target_description): Declare.
|
|
|
|
|
(set_tdesc_architecture): Declare.
|
|
|
|
|
(set_tdesc_osabi): Declare.
|
|
|
|
|
* configure.tgt (i[34567]86-*-linux*): Add i386.o.
|
|
|
|
|
* i386-linux-tdep.c: Don't include ../features/i386/32bit-XXX.c.
|
|
|
|
|
include arch/i386.h.
|
|
|
|
|
(i386_linux_read_description): Remove code and call
|
|
|
|
|
i386_create_target_description.
|
|
|
|
|
(set_tdesc_architecture): New function.
|
|
|
|
|
(set_tdesc_osabi): New function.
|
|
|
|
|
* target-descriptions.h (allocate_target_description): Remove.
|
|
|
|
|
|
Dynamically composite xml in reply to GDB
GDBserver still uses pre-generated target descriptions in order to
reply to GDB's query on target description (see xml-builtin-generated.c
in GDBserver build directory). This patch teaches GDBserver to
create XML contents according to the target descriptions rather than
using pre-generated ones.
First, change target feature c files to pass the feature xml file
name to tdesc_create_feature, so that target description in GDBserver
can record them, and create XML contents from these features in
buffer, like
...
<xi:include href="$FEATURE1_XML_NAME"/>
<xi:include href="$FEATURE2_XML_NAME"/>
...
and send this buffer back to GDB.
Note that this patch reuses target_desc.xmltarget a little bit, which is
to hold the XML contents dynamically generated in tdesc_get_features_xml.
However, it is not xfree'ed in ~target_desc, because we can't tell it is
from xstrdup or a literal string. Since we don't delete target_desc,
there is no memory leak yet. After we change all target descriptions to
the new style, target_desc.xmltarget is from xstrdup, then, we can safely
xfree it in ~target_desc.
gdb:
2017-09-05 Yao Qi <yao.qi@linaro.org>
* arch/tdesc.h (tdesc_create_feature): Add an argument xml.
* target-descriptions.c (tdesc_create_feature): Likewise, and
adjust code.
* features/i386/32bit-avx.c: Re-generated.
* features/i386/32bit-avx512.c: Re-generated.
* features/i386/32bit-core.c: Re-generated.
* features/i386/32bit-linux.c: Re-generated.
* features/i386/32bit-mpx.c: Re-generated.
* features/i386/32bit-pkeys.c: Re-generated.
* features/i386/32bit-sse.c: Re-generated.
gdb/gdbserver:
2017-09-05 Yao Qi <yao.qi@linaro.org>
* linux-x86-tdesc.c: Don't include <inttypes.h>.
(i386_linux_read_description) [!IN_PROCESS_AGENT]: Call
set_tdesc_architecture and set_tdesc_osabi. Remove code setting
.xmltarget.
* server.c (get_features_xml): Call tdesc_get_features_xml.
* tdesc.c (set_tdesc_architecture): New function.
(set_tdesc_osabi): New function.
(tdesc_get_features_xml): New function.
(tdesc_create_feature): Add an argument.
* tdesc.h (struct target_desc) <features>: New field.
<arch, osabi>: New field.
(~target_desc): xfree features, arch, and osabi.
(target_desc::oerator==): Don't compare .xmltarget.
[!IN_PROCESS_AGENT] (set_tdesc_architecture): Declare.
(set_tdesc_osabi): Likewise.
(tdesc_get_features_xml): Likewise.
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arch/tdesc.h (tdesc_create_feature): Add an argument xml.
|
|
|
|
|
* target-descriptions.c (tdesc_create_feature): Likewise, and
|
|
|
|
|
adjust code.
|
|
|
|
|
* features/i386/32bit-avx.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-avx512.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-core.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-linux.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-mpx.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-pkeys.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-sse.c: Re-generated.
|
|
|
|
|
|
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regformats/regdef.h (struct reg): Override operator == and !=.
|
|
|
|
|
|
2017-09-05 10:54:53 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arch/tdesc.h: New file.
|
|
|
|
|
* regformats/regdat.sh: Generate code using tdesc_create_reg.
|
|
|
|
|
* target-descriptions.c: Update comments.
|
|
|
|
|
* target-descriptions.h: Include "arch/tdesc.h". Remove the
|
|
|
|
|
declarations.
|
|
|
|
|
* features/i386/32bit-avx.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-avx512.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-core.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-linux.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-mpx.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-pkeys.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-sse.c: Re-generated.
|
|
|
|
|
|
2017-09-05 10:54:52 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regformats/regdat.sh: Update generated code.
|
|
|
|
|
|
Adjust code generated by regformats/regdat.sh
regformats/regdat.sh generate some *-generated.c files when GDBserver
is built. Each .c file has some static variables, which are only used
within function init_registers_XXX, like this,
static struct reg regs_i386_linux[] = {
{ "eax", 0, 32 },
{ "ecx", 32, 32 },
...
};
static const char *expedite_regs_i386_linux[] = { "ebp", "esp", "eip", 0 };
static const char *xmltarget_i386_linux = "i386-linux.xml";
void
init_registers_i386_linux (void)
{
...
}
This patch moves these static variables' definitions to function
init_registers_XXX, so the generated files look like this,
void
init_registers_i386_linux (void)
{
static struct target_desc tdesc_i386_linux_s;
struct target_desc *result = &tdesc_i386_linux_s;
static struct reg regs_i386_linux[] = {
...
};
static const char *expedite_regs_i386_linux[] = { "ebp", "esp", "eip", 0 };
static const char *xmltarget_i386_linux = "i386-linux.xml";
...
}
We want GDBserver create target descriptions dynamically in each
init_registers_XXXX functions, so this patch moves all the related code
into function init_registers_XXXX, so that the following patch can easily
change function init_registers_XXXX to create target description
dynamically, rather than using current pre-generated array.
gdb:
2017-09-05 Yao Qi <yao.qi@linaro.org>
* regformats/regdat.sh: Adjust code order.
2017-09-05 10:54:52 +02:00
|
|
|
|
2017-09-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regformats/regdat.sh: Adjust code order.
|
|
|
|
|
|
2017-09-05 09:00:42 +02:00
|
|
|
|
2017-09-05 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* expprint.c (dump_subexp_body_standard): Use constant format
|
|
|
|
|
string in fprintf_filtered call.
|
|
|
|
|
|
2017-09-05 04:34:48 +02:00
|
|
|
|
2017-09-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* configure.nat: Add "x86-nat.o x86-dregs.o" for NetBSD/amd64 and
|
|
|
|
|
NetBSD/i386.
|
|
|
|
|
* x86-bsd-nat.c [!DBREG_DRX && __NetBSD__]: Define DBREG_DRX.
|
|
|
|
|
|
2017-09-05 04:34:48 +02:00
|
|
|
|
2017-09-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* bsd-kvm.o: Make <sys/user.h> conditional on HAVE_SYS_USER_H.
|
|
|
|
|
|
2017-09-05 04:34:48 +02:00
|
|
|
|
2017-09-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* bsd-kvm.o: Define _KMEMUSER.
|
|
|
|
|
* configure.ac: Define _KMEMUSER when checking for "struct lwp".
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2017-09-05 04:31:33 +02:00
|
|
|
|
2017-09-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-fbsd-nat.c: Add include of "x86-xstate.h".
|
|
|
|
|
* i386-fbsd-nat.c: Likewise.
|
|
|
|
|
|
2017-09-05 00:58:38 +02:00
|
|
|
|
2017-09-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* unittests/array-view-selftests.c: Add include of <array>.
|
|
|
|
|
|
2017-09-05 00:57:02 +02:00
|
|
|
|
2017-09-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* spu-tdep.c (flush_ea_cache): Add missing argument to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
|
2017-09-04 21:21:16 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Safer support for debugging with no debug info): New.
|
|
|
|
|
|
Make "p S::method() const::static_var" work too
Trying to print a function local static variable of a const-qualified
method still doesn't work after the previous fixes:
(gdb) p 'S::method() const'::static_var
$1 = {i1 = 1, i2 = 2, i3 = 3}
(gdb) p S::method() const::static_var
No symbol "static_var" in specified context.
The reason is that the expression parser/evaluator loses the "const",
and the above unquoted case is just like trying to print a variable of
the non-const overload, if it exists, even. As if the above unquoted
case had been written as:
(gdb) p S::method()::static_var
No symbol "static_var" in specified context.
We can see the problem without static vars in the picture. With:
struct S
{
void method ();
void method () const;
};
Compare:
(gdb) print 'S::method(void) const'
$1 = {void (const S * const)} 0x400606 <S::method() const>
(gdb) print S::method(void) const
$2 = {void (S * const)} 0x4005d8 <S::method()> # wrong method!
That's what we need to fix. If we fix that, the function local static
case starts working.
The grammar production for function/method types is this one:
exp: exp '(' parameter_typelist ')' const_or_volatile
This results in a TYPE_INSTANCE expression evaluator operator. For
the example above, we get something like this ("set debug expression 1"):
...
0 TYPE_INSTANCE 1 TypeInstance: Type @0x560fda958be0 (void)
5 OP_SCOPE Type @0x560fdaa544d8 (S) Field name: `method'
...
While evaluating TYPE_INSTANCE, we end up in
value_struct_elt_for_reference, trying to find the method named
"method" that has the prototype recorded in TYPE_INSTANCE. In this
case, TYPE_INSTANCE says that we're looking for a method that has
"(void)" as parameters (that's what "1 TypeInstance: Type
@0x560fda958be0 (void)" above means. The trouble is that nowhere in
this mechanism do we communicate to value_struct_elt_for_reference
that we're looking for the _const_ overload.
value_struct_elt_for_reference only compared parameters, and the
non-const "method()" overload has matching parameters, so it's
considered the right match...
Conveniently, the "const_or_volatile" production in the grammar
already records "const" and "volatile" info in the type stack. The
type stack is not used in this code path, but we can borrow the
information. The patch converts the info in the type stack to an
"instance flags" enum, and adds that as another element in
TYPE_INSTANCE operators. This type instance flags is then applied to
the temporary type that is passed to value_struct_elt_for_reference
for matching.
The other side of the problem is that methods in the debug info aren't
marked const/volatile, so with that in place, the matching never finds
const/volatile-qualified methods.
The problem is that in the DWARF, there's no indication at all whether
a method is const/volatile qualified... For example (c++filt applied
to the linkage name for convenience):
<2><d3>: Abbrev Number: 6 (DW_TAG_subprogram)
<d4> DW_AT_external : 1
<d4> DW_AT_name : (indirect string, offset: 0x3df): method
<d8> DW_AT_decl_file : 1
<d9> DW_AT_decl_line : 58
<da> DW_AT_linkage_name: (indirect string, offset: 0x5b2): S::method() const
<de> DW_AT_declaration : 1
<de> DW_AT_object_pointer: <0xe6>
<e2> DW_AT_sibling : <0xec>
I see the same with both GCC and Clang. The patch works around this
by extracting the cv qualification from the "const" and "volatile" in
the demangled name. This will need further tweaking for "&" and
"const &" overloads, but we don't support them in the parser yet,
anyway.
The TYPE_CONST changes were necessary otherwise the comparisons in valops.c:
if (TYPE_CONST (intype) != TYPE_FN_FIELD_CONST (f, j))
continue;
would fail, because when both TYPE_CONST() TYPE_FN_FIELD_CONST() were
true, their values were different.
BTW, I'm recording the const/volatile-ness of methods in the
TYPE_FN_FIELD info because #1 - I'm not sure it's kosher to change the
method's type directly (vs having to call make_cv_type to create a new
type), and #2 it's what stabsread.c does:
...
case 'A': /* Normal functions. */
new_sublist->fn_field.is_const = 0;
new_sublist->fn_field.is_volatile = 0;
(*pp)++;
break;
case 'B': /* `const' member functions. */
new_sublist->fn_field.is_const = 1;
new_sublist->fn_field.is_volatile = 0;
...
After all this, this finally all works:
print S::method(void) const
$1 = {void (const S * const)} 0x400606 <S::method() const>
(gdb) p S::method() const::static_var
$2 = {i1 = 1, i2 = 2, i3 = 3}
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* c-exp.y (function_method, function_method_void): Add current
instance flags to TYPE_INSTANCE.
* dwarf2read.c (check_modifier): New.
(compute_delayed_physnames): Assert that only C++ adds delayed
physnames. Mark fn_fields as const/volatile depending on
physname.
* eval.c (make_params): New type_instance_flags parameter. Use
it as the new type's instance flags.
(evaluate_subexp_standard) <TYPE_INSTANCE>: Extract the instance
flags element and pass it to make_params.
* expprint.c (print_subexp_standard) <TYPE_INSTANCE>: Handle
instance flags element.
(dump_subexp_body_standard) <TYPE_INSTANCE>: Likewise.
* gdbtypes.h: Include "enum-flags.h".
(type_instance_flags): New enum-flags type.
(TYPE_CONST, TYPE_VOLATILE, TYPE_RESTRICT, TYPE_ATOMIC)
(TYPE_CODE_SPACE, TYPE_DATA_SPACE): Return boolean.
* parse.c (operator_length_standard) <TYPE_INSTANCE>: Adjust.
(follow_type_instance_flags): New function.
(operator_check_standard) <TYPE_INSTANCE>: Adjust.
* parser-defs.h (follow_type_instance_flags): Declare.
* valops.c (value_struct_elt_for_reference): const/volatile must
match too.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/func-static.c (S::method const, S::method volatile)
(S::method volatile const): New methods.
(c_s, v_s, cv_s): New instances.
(main): Call method() on them.
* gdb.base/func-static.exp (syntax_re, cannot_resolve_re): New variables.
(cannot_resolve): New procedure.
(cxx_scopes_list): Test cv methods. Add print-scope-quote and
print-quote-unquoted columns.
(do_test): Test printing each scope too.
2017-09-04 21:21:16 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* c-exp.y (function_method, function_method_void): Add current
|
|
|
|
|
instance flags to TYPE_INSTANCE.
|
|
|
|
|
* dwarf2read.c (check_modifier): New.
|
|
|
|
|
(compute_delayed_physnames): Assert that only C++ adds delayed
|
|
|
|
|
physnames. Mark fn_fields as const/volatile depending on
|
|
|
|
|
physname.
|
|
|
|
|
* eval.c (make_params): New type_instance_flags parameter. Use
|
|
|
|
|
it as the new type's instance flags.
|
|
|
|
|
(evaluate_subexp_standard) <TYPE_INSTANCE>: Extract the instance
|
|
|
|
|
flags element and pass it to make_params.
|
|
|
|
|
* expprint.c (print_subexp_standard) <TYPE_INSTANCE>: Handle
|
|
|
|
|
instance flags element.
|
|
|
|
|
(dump_subexp_body_standard) <TYPE_INSTANCE>: Likewise.
|
|
|
|
|
* gdbtypes.h: Include "enum-flags.h".
|
|
|
|
|
(type_instance_flags): New enum-flags type.
|
|
|
|
|
(TYPE_CONST, TYPE_VOLATILE, TYPE_RESTRICT, TYPE_ATOMIC)
|
|
|
|
|
(TYPE_CODE_SPACE, TYPE_DATA_SPACE): Return boolean.
|
|
|
|
|
* parse.c (operator_length_standard) <TYPE_INSTANCE>: Adjust.
|
|
|
|
|
(follow_type_instance_flags): New function.
|
|
|
|
|
(operator_check_standard) <TYPE_INSTANCE>: Adjust.
|
|
|
|
|
* parser-defs.h (follow_type_instance_flags): Declare.
|
|
|
|
|
* valops.c (value_struct_elt_for_reference): const/volatile must
|
|
|
|
|
match too.
|
|
|
|
|
|
Handle "p 'S::method()::static_var'" (quoted) in symbol lookup
While the previous commit made "p method()::static_var" (no
single-quotes) Just Work, if users (or frontends) try wrapping the
expression with quotes, they'll get:
(gdb) p 'S::method()::static_var'
'S::method()::static_var' has unknown type; cast it to its declared type
even if we _do_ have debug info for that variable. That's better than
the bogus/confusing value what GDB would print before the
stop-assuming-int patch:
(gdb) p 'S::method()::static_var'
$1 = 1
but I think it'd still be nice to make this case Just Work too.
In this case, due to the quoting, the C/C++ parser (c-exp.y)
interprets the whole expression/string as a single symbol name, and we
end up calling lookup_symbol on that name. There's no debug symbol
with that fully-qualified name, but since the compiler gives the
static variable a mangled linkage name exactly like the above, it
appears in the mininal symbols:
$ nm -A local-static | c++filt | grep static_var
local-static:0000000000601040 d S::method()::static_var
... and that's what GDB happens to find/print. This only happens in
C++, note, since for C the compiler uses different linkage names:
local-static-c:0000000000601040 d static_var.1848
So while (in C++, not C) function local static variables are given a
mangled name that demangles to the same syntax that GDB
documents/expects as the way to access function local statics, there's
no global symbol in the debug info with that name at all. The debug
info for a static local variable for a non-inline function looks like
this:
<1><2a1>: Abbrev Number: 19 (DW_TAG_subprogram)
...
<2><2f7>: Abbrev Number: 20 (DW_TAG_variable)
<2f8> DW_AT_name : (indirect string, offset: 0x4e9): static_var
<2fc> DW_AT_decl_file : 1
<2fd> DW_AT_decl_line : 64
<2fe> DW_AT_type : <0x25>
<302> DW_AT_location : 9 byte block: 3 40 10 60 0 0 0 0 0 (DW_OP_addr: 601040)
and for an inline function, it looks like this (linkage name run
through c++filt for convenience):
<2><21b>: Abbrev Number: 16 (DW_TAG_variable)
<21c> DW_AT_name : (indirect string, offset: 0x21a): static_var
<220> DW_AT_decl_file : 1
<221> DW_AT_decl_line : 48
<222> DW_AT_linkage_name: (indirect string, offset: 0x200): S::inline_method()::static_var
<226> DW_AT_type : <0x25>
<22a> DW_AT_external : 1
<22a> DW_AT_location : 9 byte block: 3 a0 10 60 0 0 0 0 0 (DW_OP_addr: 6010a0)
(The inline case makes the variable external so that the linker can
merge the different inlined copies. It seems like GCC never outputs
the linkage name for non-extern globals.)
When we read the DWARF, we record the static_var variable as a regular
variable of the containing function's block. This makes stopping in
the function and printing the variable as usual. The variable just so
happens to have a memory address as location.
So one way to make "p 'S::method()::static_var'" work would be to
record _two_ copies of the symbols for these variables. One in the
function's scope/block, with "static_var" as name, as we currently do,
and another in the static or global blocks (depending on whether the
symbol is external), with a fully-qualified name. I wrote a prototype
patch for that, and it works. For the non-inline case above, since
the debug info doesn't point to the linkage same, that patch built the
physname of the static local variable as the concat of the physname of
the containing function, plus "::", plus the variable's name. We
could make that approach work for C too, though it kind of feels
awkward to record fake symbol names like that in C.
The other approach I tried is to change the C++ symbol lookup routines
instead. This is the approach this commit takes. We can already
lookup up symbol in namespaces and classes, so this feels like a good
fit, and was easy enough. The advantage is that this doesn't require
recording extra symbols.
The test in gdb.cp/m-static.exp that exposed the need for this is
removed, since the same functionality is now covered by
gdb.cp/local-static.exp.
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* cp-namespace.c (cp_search_static_and_baseclasses): Handle
function/method scopes; lookup the nested name as a function local
static variable.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/local-static.exp: Also test with
class::method::variable wholly quoted.
* gdb.cp/m-static.exp (class::method::variable): Remove test.
2017-09-04 21:21:16 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-namespace.c (cp_search_static_and_baseclasses): Handle
|
|
|
|
|
function/method scopes; lookup the nested name as a function local
|
|
|
|
|
static variable.
|
|
|
|
|
|
Handle "p S::method()::static_var" in the C++ parser
This commit makes "print S::method()::static_var" actually find the
debug symbol for static_var. Currently, you get:
(gdb) print S::method()::static_var
A syntax error in expression, near `'.
Quoting the whole string would seemingly work before the previous
patch that made GDB stop assuming int for no-debug-info variables:
(gdb) p 'S::method()::static_var'
$1 = 1
... except that's incorrect output, because:
(gdb) ptype 'S::method()::static_var'
type = <data variable, no debug info>
The way to make it work correctly currently is by quoting the
function/method part, like this:
(gdb) print 'S::method()'::static_var
$1 = {i1 = 1, i2 = 2, i3 = 3}
(gdb) ptype 'S::method()'::static_var
type = struct aggregate {
int i1;
int i2;
int i3;
}
At least after the "stop assuming int" patch, this is what we
now get:
(gdb) p 'S::method()::static_var'
'S::method()::static_var' has unknown type; cast it to its declared type
(gdb) p (struct aggregate) 'S::method()::static_var'
$1 = {i1 = 1, i2 = 2, i3 = 3}
However, IMO, users shouldn't really have to care about any of this.
GDB should Just Work, without quoting, IMO.
So here's a patch that implements support for that in the C++ parser.
With this patch, you now get:
(gdb) p S::method()::S_M_s_var_aggregate
$1 = {i1 = 1, i2 = 2, i3 = 3}
(gdb) ptype S::method()::S_M_s_var_aggregate
type = struct aggregate {
int i1;
int i2;
int i3;
}
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
(%type <voidval>): Add function_method.
* c-exp.y (exp): New production for calls with no arguments.
(function_method, function_method_void_or_typelist): New
productions.
(exp): New production for "method()::static_var".
* eval.c (evaluate_subexp_standard): Handle OP_FUNC_STATIC_VAR.
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
Handle OP_FUNC_STATIC_VAR.
* parse.c (operator_length_standard):
Handle OP_FUNC_STATIC_VAR.
* std-operator.def (OP_FUNC_STATIC_VAR): New.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/local-static.c: New.
* gdb.base/local-static.cc: New.
* gdb.base/local-static.exp: New.
2017-09-04 21:21:15 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
(%type <voidval>): Add function_method.
|
|
|
|
|
* c-exp.y (exp): New production for calls with no arguments.
|
|
|
|
|
(function_method, function_method_void_or_typelist): New
|
|
|
|
|
productions.
|
|
|
|
|
(exp): New production for "method()::static_var".
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Handle OP_FUNC_STATIC_VAR.
|
|
|
|
|
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
|
|
|
|
|
Handle OP_FUNC_STATIC_VAR.
|
|
|
|
|
* parse.c (operator_length_standard):
|
|
|
|
|
Handle OP_FUNC_STATIC_VAR.
|
|
|
|
|
|
2017-09-04 21:21:15 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Remove UNOP_MEMVAL_TLS
|
|
|
|
|
handling.
|
|
|
|
|
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
|
|
|
|
|
Ditto.
|
|
|
|
|
* parse.c (operator_length_standard, operator_check_standard):
|
|
|
|
|
Ditto.
|
|
|
|
|
* std-operator.def (UNOP_MEMVAL_TLS): Delete.
|
|
|
|
|
|
Stop assuming no-debug-info variables have type int
An earlier commit made GDB no longer assume no-debug-info functions
return int. This commit gives the same treatment to variables.
Currently, you can end misled by GDB over output like this:
(gdb) p var
$1 = -1
(gdb) p /x var
$2 = 0xffffffff
until you realize that GDB is assuming that the variable is an "int",
because:
(gdb) ptype var
type = <data variable, no debug info>
You may try to fix it by casting, but that doesn't really help:
(gdb) p /x (unsigned long long) var
$3 = 0xffffffffffffffff # incorrect
^^
That's incorrect output, because the variable was defined like this:
uint64_t var = 0x7fffffffffffffff;
^^
What happened is that with the cast, GDB did an int -> 'unsigned long
long' conversion instead of reinterpreting the variable as the cast-to
type. To get at the variable properly you have to reinterpret the
variable's address manually instead, with either:
(gdb) p /x *(unsigned long long *) &var
$4 = 0x7fffffffffffffff
(gdb) p /x {unsigned long long} &var
$5 = 0x7fffffffffffffff
After this commit GDB does it for you. This is what you'll get
instead:
(gdb) p var
'var' has unknown type; cast it to its declared type
(gdb) p /x (unsigned long long) var
$1 = 0x7fffffffffffffff
As in the functions patch, the "compile" machinery doesn't currently
have the cast-to type handy, so it continues assuming no-debug
variables have int type, though now at least it warns.
The change to gdb.cp/m-static.exp deserves an explanation:
- gdb_test "print 'gnu_obj_1::method()::sintvar'" "\\$\[0-9\]+ = 4" \
+ gdb_test "print (int) 'gnu_obj_1::method()::sintvar'" "\\$\[0-9\]+ = 4" \
That's printing the "sintvar" function local static of the
"gnu_obj_1::method()" method.
The problem with that test is that that "'S::method()::static_var'"
syntax doesn't really work in C++ as you'd expect. The way to make it
work correctly currently is to quote the method part, not the whole
expression, like:
(gdb) print 'gnu_obj_1::method()'::sintvar
If you wrap the whole expression in quotes, like in m-static.exp, what
really happens is that the parser considers the whole string as a
symbol name, but there's no debug symbol with that name. However,
local statics have linkage and are given a mangled name that demangles
to the same string as the full expression, so that's what GDB prints.
After this commit, and without the cast, the print in m-static.exp
would error out saying that the variable has unknown type:
(gdb) p 'gnu_obj_1::method()::sintvar'
'gnu_obj_1::method()::sintvar' has unknown type; cast it to its declared type
TBC, if currently (even before this series) you try to print any
function local static variable of type other than int, you'll get
bogus results. You can see that with m-static.cc as is, even.
Printing the "svar" local, which is a boolean (1 byte) still prints as
"int" (4 bytes):
(gdb) p 'gnu_obj_1::method()::svar'
$1 = 1
(gdb) ptype 'gnu_obj_1::method()::svar'
type = <data variable, no debug info>
This probably prints some random bogus value on big endian machines.
If 'svar' was of some aggregate type (etc.) we'd still print it as
int, so the problem would have been more obvious... After this
commit, you'll get instead:
(gdb) p 'gnu_obj_1::method()::svar'
'gnu_obj_1::method()::svar' has unknown type; cast it to its declared type
... so at least GDB is no longer misleading. Making GDB find the real
local static debug symbol is the subject of the following patches. In
the end, it'll all "Just Work".
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* ax-gdb.c: Include "typeprint.h".
(gen_expr_for_cast): New function.
(gen_expr) <OP_CAST, OP_CAST_TYPE>: Use it.
<OP_VAR_VALUE, OP_MSYM_VAR_VALUE>: Error out if the variable's
type is unknown.
* dwarf2read.c (new_symbol_full): Fallback to int instead of
nodebug_data_symbol.
* eval.c: Include "typeprint.h".
(evaluate_subexp_standard) <OP_VAR_VALUE, OP_VAR_MSYM_VALUE>:
Error out if symbol has unknown type.
<UNOP_CAST, UNOP_CAST_TYPE>: Common bits factored out to
evaluate_subexp_for_cast.
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof): Handle
OP_VAR_MSYM_VALUE.
(evaluate_subexp_for_cast): New function.
* gdbtypes.c (init_nodebug_var_type): New function.
(objfile_type): Use it to initialize types of variables with no
debug info.
* typeprint.c (error_unknown_type): New.
* typeprint.h (error_unknown_type): New declaration.
* compile/compile-c-types.c (convert_type_basic): Handle
TYPE_CODE_ERROR; warn and fallback to int for variables with
unknown type.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.asm/asm-source.exp: Add casts to int.
* gdb.base/nodebug.c (dataglobal8, dataglobal32_1, dataglobal32_2)
(dataglobal64_1, dataglobal64_2): New globals.
* gdb.base/nodebug.exp: Test different expressions involving the
new globals, with print, whatis and ptype. Add casts to int.
* gdb.base/solib-display.exp: Add casts to int.
* gdb.compile/compile-ifunc.exp: Expect warning. Add cast to int.
* gdb.cp/m-static.exp: Add cast to int.
* gdb.dwarf2/dw2-skip-prologue.exp: Add cast to int.
* gdb.threads/tls-nodebug.exp: Check that gdb errors out printing
tls variable with no debug info without a cast. Test with a cast
to int too.
* gdb.trace/entry-values.exp: Add casts.
2017-09-04 21:21:15 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c: Include "typeprint.h".
|
|
|
|
|
(gen_expr_for_cast): New function.
|
|
|
|
|
(gen_expr) <OP_CAST, OP_CAST_TYPE>: Use it.
|
|
|
|
|
<OP_VAR_VALUE, OP_MSYM_VAR_VALUE>: Error out if the variable's
|
|
|
|
|
type is unknown.
|
|
|
|
|
* dwarf2read.c (new_symbol_full): Fallback to int instead of
|
|
|
|
|
nodebug_data_symbol.
|
|
|
|
|
* eval.c: Include "typeprint.h".
|
|
|
|
|
(evaluate_subexp_standard) <OP_VAR_VALUE, OP_VAR_MSYM_VALUE>:
|
|
|
|
|
Error out if symbol has unknown type.
|
|
|
|
|
<UNOP_CAST, UNOP_CAST_TYPE>: Common bits factored out to
|
|
|
|
|
evaluate_subexp_for_cast.
|
|
|
|
|
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof): Handle
|
|
|
|
|
OP_VAR_MSYM_VALUE.
|
|
|
|
|
(evaluate_subexp_for_cast): New function.
|
|
|
|
|
* gdbtypes.c (init_nodebug_var_type): New function.
|
|
|
|
|
(objfile_type): Use it to initialize types of variables with no
|
|
|
|
|
debug info.
|
|
|
|
|
* typeprint.c (error_unknown_type): New.
|
|
|
|
|
* typeprint.h (error_unknown_type): New declaration.
|
|
|
|
|
* compile/compile-c-types.c (convert_type_basic): Handle
|
|
|
|
|
TYPE_CODE_ERROR; warn and fallback to int for variables with
|
|
|
|
|
unknown type.
|
|
|
|
|
|
2017-09-04 21:21:14 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (evaluate_var_value): New function, factored out from ...
|
|
|
|
|
(evaluate_subexp_standard): ... here.
|
|
|
|
|
|
2017-09-04 21:21:14 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (evaluate_subexp_standard) <UNOP_COMPLEMENT, UNOP_ADDR>:
|
|
|
|
|
Remove useless assignments to 'op'.
|
|
|
|
|
|
2017-09-04 21:21:14 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (eval_skip_value): New function.
|
|
|
|
|
(evaluate_subexp_standard): Use it.
|
|
|
|
|
|
2017-09-04 21:21:14 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (evaluate_subexp_standard): <OP_FUNCALL>: Extract
|
|
|
|
|
function name from symbol/minsym and pass it to
|
|
|
|
|
error_call_unknown_return_type.
|
|
|
|
|
|
Introduce OP_VAR_MSYM_VALUE
The previous patch left GDB with an inconsistency. While with normal
expression evaluation the "unknown return type" error shows the name
of the function that misses debug info:
(gdb) p getenv ("PATH")
'getenv' has unknown return type; cast the call to its declared return type
^^^^^^
which can by handy in more complicated expressions, "ptype" does not:
(gdb) ptype getenv ("PATH")
function has unknown return type; cast the call to its declared return type
^^^^^^^^
This commit is a step toward fixing it.
The problem is that while evaluating the expression above, we have no
reference to the minimal symbol where we could extract the name from.
This is because the resulting expression tree has no reference to the
minsym at all. During parsing, the type and address of the minsym are
extracted and an UNOP_MEMVAL / UNOP_MEMVAL_TLS operator is generated
(see write_exp_elt_msym). With "set debug expression", here's what
you see:
0 OP_FUNCALL Number of args: 0
3 UNOP_MEMVAL Type @0x565334a51930 (<text variable, no debug info>)
6 OP_LONG Type @0x565334a51c60 (__CORE_ADDR), value 140737345035648 (0x7ffff7751d80)
The "print" case finds the function name, because
call_function_by_hand looks up the function by address again.
However, for "ptype", we don't reach that code, because obviously we
don't really call the function.
Unlike minsym references, references to variables with debug info have
a pointer to the variable's symbol in the expression tree, with
OP_VAR_VALUE:
(gdb) ptype main()
...
0 OP_FUNCALL Number of args: 0
3 OP_VAR_VALUE Block @0x0, symbol @0x559bbbd9b358 (main(int, char**))
...
so I don't see why do minsyms need to be different. So to prepare for
fixing the missing function name issue, this commit adds a new
OP_VAR_MSYM_VALUE operator that mimics OP_VAR_VALUE, except that it's
for minsyms instead of debug symbols. For infcalls, we now get
expressions like these:
0 OP_FUNCALL Number of args: 0
3 OP_VAR_MSYM_VALUE Objfile @0x1e41bf0, msymbol @0x7fffe599b000 (getenv)
In the following patch, we'll make OP_FUNCALL extract the function
name from the symbol stored in OP_VAR_VALUE/OP_VAR_MSYM_VALUE.
OP_VAR_MSYM_VALUE will be used more in a later patch in the series
too.
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* ada-lang.c (resolve_subexp): Handle OP_VAR_MSYM_VALUE.
* ax-gdb.c (gen_msym_var_ref): New function.
(gen_expr): Handle OP_VAR_MSYM_VALUE.
* eval.c (evaluate_var_msym_value): New function.
* eval.c (evaluate_subexp_standard): Handle OP_VAR_MSYM_VALUE.
<OP_FUNCALL>: Extract function name from symbol/minsym and pass it
to call_function_by_hand.
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
Handle OP_VAR_MSYM_VALUE.
(union exp_element) <msymbol>: New field.
* minsyms.h (struct type): Forward declare.
(find_minsym_type_and_address): Declare.
* parse.c (write_exp_elt_msym): New function.
(write_exp_msymbol): Delete, refactored as ...
(find_minsym_type_and_address): ... this new function.
(write_exp_msymbol): Reimplement using OP_VAR_MSYM_VALUE.
(operator_length_standard, operator_check_standard): Handle
OP_VAR_MSYM_VALUE.
* std-operator.def (OP_VAR_MSYM_VALUE): New.
2017-09-04 21:21:13 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (resolve_subexp): Handle OP_VAR_MSYM_VALUE.
|
|
|
|
|
* ax-gdb.c (gen_msym_var_ref): New function.
|
|
|
|
|
(gen_expr): Handle OP_VAR_MSYM_VALUE.
|
|
|
|
|
* eval.c (evaluate_var_msym_value): New function.
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Handle OP_VAR_MSYM_VALUE.
|
|
|
|
|
<OP_FUNCALL>: Extract function name from symbol/minsym and pass it
|
|
|
|
|
to call_function_by_hand.
|
|
|
|
|
* expprint.c (print_subexp_standard, dump_subexp_body_standard):
|
|
|
|
|
Handle OP_VAR_MSYM_VALUE.
|
|
|
|
|
(union exp_element) <msymbol>: New field.
|
|
|
|
|
* minsyms.h (struct type): Forward declare.
|
|
|
|
|
(find_minsym_type_and_address): Declare.
|
|
|
|
|
* parse.c (write_exp_elt_msym): New function.
|
|
|
|
|
(write_exp_msymbol): Delete, refactored as ...
|
|
|
|
|
(find_minsym_type_and_address): ... this new function.
|
|
|
|
|
(write_exp_msymbol): Reimplement using OP_VAR_MSYM_VALUE.
|
|
|
|
|
(operator_length_standard, operator_check_standard): Handle
|
|
|
|
|
OP_VAR_MSYM_VALUE.
|
|
|
|
|
* std-operator.def (OP_VAR_MSYM_VALUE): New.
|
|
|
|
|
|
Stop assuming no-debug-info functions return int
The fact that GDB defaults to assuming that functions return int, when
it has no debug info for the function has been a recurring source of
user confusion. Recently this came up on the errno pretty printer
discussions. Shortly after, it came up again on IRC, with someone
wondering why does getenv() in GDB return a negative int:
(gdb) p getenv("PATH")
$1 = -6185
This question (with s/getenv/random-other-C-runtime-function) is a FAQ
on IRC.
The reason for the above is:
(gdb) p getenv
$2 = {<text variable, no debug info>} 0x7ffff7751d80 <getenv>
(gdb) ptype getenv
type = int ()
... which means that GDB truncated the 64-bit pointer that is actually
returned from getent to 32-bit, and then sign-extended it:
(gdb) p /x -6185
$6 = 0xffffe7d7
The workaround is to cast the function to the right type, like:
(gdb) p ((char *(*) (const char *)) getenv) ("PATH")
$3 = 0x7fffffffe7d7 "/usr/local/bin:/"...
IMO, we should do better than this.
I see the "assume-int" issue the same way I see printing bogus values
for optimized-out variables instead of "<optimized out>" -- I'd much
rather that the debugger tells me "I don't know" and tells me how to
fix it than showing me bogus misleading results, making me go around
tilting at windmills.
If GDB prints a signed integer when you're expecting a pointer or
aggregate, you at least have some sense that something is off, but
consider the case of the function actually returning a 64-bit integer.
For example, compile this without debug info:
unsigned long long
function ()
{
return 0x7fffffffffffffff;
}
Currently, with pristine GDB, you get:
(gdb) p function ()
$1 = -1 # incorrect
(gdb) p /x function ()
$2 = 0xffffffff # incorrect
maybe after spending a few hours debugging you suspect something is
wrong with that -1, and do:
(gdb) ptype function
type = int ()
and maybe, just maybe, you realize that the function actually returns
unsigned long long. And you try to fix it with:
(gdb) p /x (unsigned long long) function ()
$3 = 0xffffffffffffffff # incorrect
... which still produces the wrong result, because GDB simply applied
int to unsigned long long conversion. Meaning, it sign-extended the
integer that it extracted from the return of the function, to 64-bits.
and then maybe, after asking around on IRC, you realize you have to
cast the function to a pointer of the right type, and call that. It
won't be easy, but after a few missteps, you'll get to it:
..... (gdb) p /x ((unsigned long long(*) ()) function) ()
$666 = 0x7fffffffffffffff # finally! :-)
So to improve on the user experience, this patch does the following
(interrelated) things:
- makes no-debug-info functions no longer default to "int" as return
type. Instead, they're left with NULL/"<unknown return type>"
return type.
(gdb) ptype getenv
type = <unknown return type> ()
- makes calling a function with unknown return type an error.
(gdb) p getenv ("PATH")
'getenv' has unknown return type; cast the call to its declared return type
- and then to make it easier to call the function, makes it possible
to _only_ cast the return of the function to the right type,
instead of having to cast the function to a function pointer:
(gdb) p (char *) getenv ("PATH") # now Just Works
$3 = 0x7fffffffe7d7 "/usr/local/bin:/"...
(gdb) p ((char *(*) (const char *)) getenv) ("PATH") # continues working
$4 = 0x7fffffffe7d7 "/usr/local/bin:/"...
I.e., it makes GDB default the function's return type to the type
of the cast, and the function's parameters to the type of the
arguments passed down.
After this patch, here's what you'll get for the "unsigned long long"
example above:
(gdb) p function ()
'function' has unknown return type; cast the call to its declared return type
(gdb) p /x (unsigned long long) function ()
$4 = 0x7fffffffffffffff # correct!
Note that while with "print" GDB shows the name of the function that
has the problem:
(gdb) p getenv ("PATH")
'getenv' has unknown return type; cast the call to its declared return type
which can by handy in more complicated expressions, "ptype" does not:
(gdb) ptype getenv ("PATH")
function has unknown return type; cast the call to its declared return type
This will be fixed in the next patch.
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_evaluate_subexp) <TYPE_CODE_FUNC>: Don't handle
TYPE_GNU_IFUNC specially here. Throw error if return type is
unknown.
* ada-typeprint.c (print_func_type): Handle functions with unknown
return type.
* c-typeprint.c (c_type_print_base): Handle functions and methods
with unknown return type.
* compile/compile-c-symbols.c (convert_symbol_bmsym)
<mst_text_gnu_ifunc>: Use nodebug_text_gnu_ifunc_symbol.
* compile/compile-c-types.c: Include "objfiles.h".
(convert_func): For functions with unknown return type, warn and
default to int.
* compile/compile-object-run.c (compile_object_run): Adjust call
to call_function_by_hand_dummy.
* elfread.c (elf_gnu_ifunc_resolve_addr): Adjust call to
call_function_by_hand.
* eval.c (evaluate_subexp_standard): Adjust calls to
call_function_by_hand. Handle functions and methods with unknown
return type. Pass expect_type to call_function_by_hand.
* f-typeprint.c (f_type_print_base): Handle functions with unknown
return type.
* gcore.c (call_target_sbrk): Adjust call to
call_function_by_hand.
* gdbtypes.c (objfile_type): Leave nodebug text symbol with NULL
return type instead of int. Make nodebug_text_gnu_ifunc_symbol be
an integer address type instead of nodebug.
* guile/scm-value.c (gdbscm_value_call): Adjust call to
call_function_by_hand.
* infcall.c (error_call_unknown_return_type): New function.
(call_function_by_hand): New "default_return_type" parameter.
Pass it down.
(call_function_by_hand_dummy): New "default_return_type"
parameter. Use it instead of defaulting to int. If there's no
default and the return type is unknown, throw an error. If
there's a default return type, and the called function has no
debug info, then assume the function is prototyped.
* infcall.h (call_function_by_hand, call_function_by_hand_dummy):
New "default_return_type" parameter.
(error_call_unknown_return_type): New declaration.
* linux-fork.c (call_lseek): Cast return type of lseek.
(inferior_call_waitpid, checkpoint_command): Adjust calls to
call_function_by_hand.
* linux-tdep.c (linux_infcall_mmap, linux_infcall_munmap): Adjust
calls to call_function_by_hand.
* m2-typeprint.c (m2_procedure): Handle functions with unknown
return type.
* objc-lang.c (lookup_objc_class, lookup_child_selector)
(value_nsstring, print_object_command): Adjust calls to
call_function_by_hand.
* p-typeprint.c (pascal_type_print_varspec_prefix): Handle
functions with unknown return type.
(pascal_type_print_func_varspec_suffix): New function.
(pascal_type_print_varspec_suffix) <TYPE_CODE_FUNC,
TYPE_CODE_METHOD>: Use it.
* python/py-value.c (valpy_call): Adjust call to
call_function_by_hand.
* rust-lang.c (rust_evaluate_funcall): Adjust call to
call_function_by_hand.
* valarith.c (value_x_binop, value_x_unop): Adjust calls to
call_function_by_hand.
* valops.c (value_allocate_space_in_inferior): Adjust call to
call_function_by_hand.
* typeprint.c (type_print_unknown_return_type): New function.
* typeprint.h (type_print_unknown_return_type): New declaration.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/break-main-file-remove-fail.exp (test_remove_bp): Cast
return type of munmap in infcall.
* gdb.base/break-probes.exp: Cast return type of foo in infcall.
* gdb.base/checkpoint.exp: Simplify using for loop. Cast return
type of ftell in infcall.
* gdb.base/dprintf-detach.exp (dprintf_detach_test): Cast return
type of getpid in infcall.
* gdb.base/infcall-exec.exp: Cast return type of execlp in
infcall.
* gdb.base/info-os.exp: Cast return type of getpid in infcall.
Bail on failure to extract the pid.
* gdb.base/nodebug.c: #include <stdint.h>.
(multf, multf_noproto, mult, mult_noproto, add8, add8_noproto):
New functions.
* gdb.base/nodebug.exp (test_call_promotion): New procedure.
Change expected output of print/whatis/ptype with functions with
no debug info. Test all supported languages. Call
test_call_promotion.
* gdb.compile/compile.exp: Adjust expected output to expect
warning.
* gdb.threads/siginfo-threads.exp: Likewise.
2017-09-04 21:21:13 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_evaluate_subexp) <TYPE_CODE_FUNC>: Don't handle
|
|
|
|
|
TYPE_GNU_IFUNC specially here. Throw error if return type is
|
|
|
|
|
unknown.
|
|
|
|
|
* ada-typeprint.c (print_func_type): Handle functions with unknown
|
|
|
|
|
return type.
|
|
|
|
|
* c-typeprint.c (c_type_print_base): Handle functions and methods
|
|
|
|
|
with unknown return type.
|
|
|
|
|
* compile/compile-c-symbols.c (convert_symbol_bmsym)
|
|
|
|
|
<mst_text_gnu_ifunc>: Use nodebug_text_gnu_ifunc_symbol.
|
|
|
|
|
* compile/compile-c-types.c: Include "objfiles.h".
|
|
|
|
|
(convert_func): For functions with unknown return type, warn and
|
|
|
|
|
default to int.
|
|
|
|
|
* compile/compile-object-run.c (compile_object_run): Adjust call
|
|
|
|
|
to call_function_by_hand_dummy.
|
|
|
|
|
* elfread.c (elf_gnu_ifunc_resolve_addr): Adjust call to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Adjust calls to
|
|
|
|
|
call_function_by_hand. Handle functions and methods with unknown
|
|
|
|
|
return type. Pass expect_type to call_function_by_hand.
|
|
|
|
|
* f-typeprint.c (f_type_print_base): Handle functions with unknown
|
|
|
|
|
return type.
|
|
|
|
|
* gcore.c (call_target_sbrk): Adjust call to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* gdbtypes.c (objfile_type): Leave nodebug text symbol with NULL
|
|
|
|
|
return type instead of int. Make nodebug_text_gnu_ifunc_symbol be
|
|
|
|
|
an integer address type instead of nodebug.
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_call): Adjust call to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* infcall.c (error_call_unknown_return_type): New function.
|
|
|
|
|
(call_function_by_hand): New "default_return_type" parameter.
|
|
|
|
|
Pass it down.
|
|
|
|
|
(call_function_by_hand_dummy): New "default_return_type"
|
|
|
|
|
parameter. Use it instead of defaulting to int. If there's no
|
|
|
|
|
default and the return type is unknown, throw an error. If
|
|
|
|
|
there's a default return type, and the called function has no
|
|
|
|
|
debug info, then assume the function is prototyped.
|
|
|
|
|
* infcall.h (call_function_by_hand, call_function_by_hand_dummy):
|
|
|
|
|
New "default_return_type" parameter.
|
|
|
|
|
(error_call_unknown_return_type): New declaration.
|
|
|
|
|
* linux-fork.c (call_lseek): Cast return type of lseek.
|
|
|
|
|
(inferior_call_waitpid, checkpoint_command): Adjust calls to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* linux-tdep.c (linux_infcall_mmap, linux_infcall_munmap): Adjust
|
|
|
|
|
calls to call_function_by_hand.
|
|
|
|
|
* m2-typeprint.c (m2_procedure): Handle functions with unknown
|
|
|
|
|
return type.
|
|
|
|
|
* objc-lang.c (lookup_objc_class, lookup_child_selector)
|
|
|
|
|
(value_nsstring, print_object_command): Adjust calls to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* p-typeprint.c (pascal_type_print_varspec_prefix): Handle
|
|
|
|
|
functions with unknown return type.
|
|
|
|
|
(pascal_type_print_func_varspec_suffix): New function.
|
|
|
|
|
(pascal_type_print_varspec_suffix) <TYPE_CODE_FUNC,
|
|
|
|
|
TYPE_CODE_METHOD>: Use it.
|
|
|
|
|
* python/py-value.c (valpy_call): Adjust call to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* rust-lang.c (rust_evaluate_funcall): Adjust call to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* valarith.c (value_x_binop, value_x_unop): Adjust calls to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* valops.c (value_allocate_space_in_inferior): Adjust call to
|
|
|
|
|
call_function_by_hand.
|
|
|
|
|
* typeprint.c (type_print_unknown_return_type): New function.
|
|
|
|
|
* typeprint.h (type_print_unknown_return_type): New declaration.
|
|
|
|
|
|
Fix calling prototyped functions via function pointers
Calling a prototyped function via a function pointer with the right
prototype doesn't work correctly, if the called function requires
argument coercion... Like, e.g., with:
float mult (float f1, float f2) { return f1 * f2; }
(gdb) p mult (2, 3.5)
$1 = 7
(gdb) p ((float (*) (float, float)) mult) (2, 3.5)
$2 = 0
both calls should have returned the same, of course. The problem is
that GDB misses marking the type of the function pointer target as
prototyped...
Without the fix, the new test fails like this:
(gdb) p ((int (*) (float, float)) t_float_values2)(3.14159,float_val2)
$30 = 0
(gdb) FAIL: gdb.base/callfuncs.exp: p ((int (*) (float, float)) t_float_values2)(3.14159,float_val2)
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdbtypes.c (lookup_function_type_with_arguments): Mark function
types with more than one parameter as prototyped.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/callfuncs.exp (do_function_calls): New parameter
"prototypes". Test calling float functions via prototyped and
unprototyped function pointers.
(perform_all_tests): New parameter "prototypes". Pass it down.
(top level): Pass down "prototypes" parameter to
perform_all_tests.
2017-09-04 21:21:13 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (lookup_function_type_with_arguments): Mark function
|
|
|
|
|
types with more than one parameter as prototyped.
|
|
|
|
|
|
Introduce gdb_disassembly_flags
For some reason I ended up staring at some of the "int flags" in
btrace-related code, and I got confused because I had no clue what the
flags where supposed to indicate.
Fix that by using enum_flags, so that:
#1 - it's clear from the type what the flags are about, and
#2 - the compiler can catch mismatching mistakes
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* cli/cli-cmds.c (print_disassembly, disassemble_current_function)
(disassemble_command): Use gdb_disassembly_flags instead of bare
int.
* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn)
(dump_insns, do_mixed_source_and_assembly_deprecated)
(do_mixed_source_and_assembly, do_assembly_only, gdb_disassembly):
Use gdb_disassembly_flags instead of bare int.
* disasm.h (DISASSEMBLY_SOURCE_DEPRECATED, DISASSEMBLY_RAW_INSN)
(DISASSEMBLY_OMIT_FNAME, DISASSEMBLY_FILENAME)
(DISASSEMBLY_OMIT_PC, DISASSEMBLY_SOURCE)
(DISASSEMBLY_SPECULATIVE): No longer macros. Instead they're...
(enum gdb_disassembly_flag): ... values of this new enumeration.
(gdb_disassembly_flags): Define.
(gdb_disassembly)
(gdb_pretty_print_disassembler::pretty_print_insn): Use it.
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Use
gdb_disassembly_flags instead of bare int.
* record-btrace.c (btrace_insn_history)
(record_btrace_insn_history, record_btrace_insn_history_range)
(record_btrace_insn_history_from): Use gdb_disassembly_flags
instead of bare int.
* record.c (get_insn_history_modifiers, cmd_record_insn_history):
Use gdb_disassembly_flags instead of bare int.
* target-debug.h (target_debug_print_gdb_disassembly_flags):
Define.
* target-delegates.c: Regenerate.
* target.c (target_insn_history, target_insn_history_from)
(target_insn_history_range): Use gdb_disassembly_flags instead of
bare int.
* target.h: Include "disasm.h".
(struct target_ops) <to_insn_history, to_insn_history_from,
to_insn_history_range>: Use gdb_disassembly_flags instead of bare
int.
(target_insn_history, target_insn_history_from)
(target_insn_history_range): Use gdb_disassembly_flags instead of
bare int.
2017-09-04 19:23:22 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (print_disassembly, disassemble_current_function)
|
|
|
|
|
(disassemble_command): Use gdb_disassembly_flags instead of bare
|
|
|
|
|
int.
|
|
|
|
|
* disasm.c (gdb_pretty_print_disassembler::pretty_print_insn)
|
|
|
|
|
(dump_insns, do_mixed_source_and_assembly_deprecated)
|
|
|
|
|
(do_mixed_source_and_assembly, do_assembly_only, gdb_disassembly):
|
|
|
|
|
Use gdb_disassembly_flags instead of bare int.
|
|
|
|
|
* disasm.h (DISASSEMBLY_SOURCE_DEPRECATED, DISASSEMBLY_RAW_INSN)
|
|
|
|
|
(DISASSEMBLY_OMIT_FNAME, DISASSEMBLY_FILENAME)
|
|
|
|
|
(DISASSEMBLY_OMIT_PC, DISASSEMBLY_SOURCE)
|
|
|
|
|
(DISASSEMBLY_SPECULATIVE): No longer macros. Instead they're...
|
|
|
|
|
(enum gdb_disassembly_flag): ... values of this new enumeration.
|
|
|
|
|
(gdb_disassembly_flags): Define.
|
|
|
|
|
(gdb_disassembly)
|
|
|
|
|
(gdb_pretty_print_disassembler::pretty_print_insn): Use it.
|
|
|
|
|
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Use
|
|
|
|
|
gdb_disassembly_flags instead of bare int.
|
|
|
|
|
* record-btrace.c (btrace_insn_history)
|
|
|
|
|
(record_btrace_insn_history, record_btrace_insn_history_range)
|
|
|
|
|
(record_btrace_insn_history_from): Use gdb_disassembly_flags
|
|
|
|
|
instead of bare int.
|
|
|
|
|
* record.c (get_insn_history_modifiers, cmd_record_insn_history):
|
|
|
|
|
Use gdb_disassembly_flags instead of bare int.
|
|
|
|
|
* target-debug.h (target_debug_print_gdb_disassembly_flags):
|
|
|
|
|
Define.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* target.c (target_insn_history, target_insn_history_from)
|
|
|
|
|
(target_insn_history_range): Use gdb_disassembly_flags instead of
|
|
|
|
|
bare int.
|
|
|
|
|
* target.h: Include "disasm.h".
|
|
|
|
|
(struct target_ops) <to_insn_history, to_insn_history_from,
|
|
|
|
|
to_insn_history_range>: Use gdb_disassembly_flags instead of bare
|
|
|
|
|
int.
|
|
|
|
|
(target_insn_history, target_insn_history_from)
|
|
|
|
|
(target_insn_history_range): Use gdb_disassembly_flags instead of
|
|
|
|
|
bare int.
|
|
|
|
|
|
2017-09-04 19:13:08 +02:00
|
|
|
|
2017-09-04 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (build_command_line): For if/while commands,
|
|
|
|
|
check whether args is empty.
|
|
|
|
|
|
2017-09-04 19:09:12 +02:00
|
|
|
|
2017-09-04 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.h (enum misc_command_type): Move from defs.h.
|
|
|
|
|
(enum command_control_type): Likewise.
|
|
|
|
|
(struct command_line): Likewise.
|
|
|
|
|
(free_command_lines): Likewise.
|
|
|
|
|
(struct command_lines_deleter): Likewise.
|
|
|
|
|
(command_line_up): Likewise.
|
|
|
|
|
(read_command_lines): Likewise.
|
|
|
|
|
(read_command_lines_1): Likewise.
|
|
|
|
|
* defs.h (enum misc_command_type): Move to cli/cli-script.h.
|
|
|
|
|
(enum command_control_type): Likewise.
|
|
|
|
|
(struct command_line): Likewise.
|
|
|
|
|
(free_command_lines): Likewise.
|
|
|
|
|
(struct command_lines_deleter): Likewise.
|
|
|
|
|
(command_line_up): Likewise.
|
|
|
|
|
(read_command_lines): Likewise.
|
|
|
|
|
(read_command_lines_1): Likewise.
|
|
|
|
|
* breakpoint.h: Include cli/cli-script.h.
|
|
|
|
|
* extension-priv.h: Likewise.
|
|
|
|
|
* gdbcmd.h: Likewise.
|
|
|
|
|
|
2017-09-04 18:10:13 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (is_known_support_routine): Move sal declaration to
|
|
|
|
|
where it is initialized.
|
|
|
|
|
* breakpoint.c (create_internal_breakpoint, init_catchpoint)
|
|
|
|
|
(parse_breakpoint_sals, decode_static_tracepoint_spec)
|
|
|
|
|
(clear_command, update_static_tracepoint): Remove init_sal
|
|
|
|
|
references. Move declarations closer to initializations.
|
|
|
|
|
* cli/cli-cmds.c (list_command): Move sal declarations closer to
|
|
|
|
|
initializations.
|
|
|
|
|
* elfread.c (elf_gnu_ifunc_resolver_stop): Remove init_sal
|
|
|
|
|
references. Move sal declarations closer to initializations.
|
|
|
|
|
* frame.c (find_frame_sal): Return a symtab_and_line via function
|
|
|
|
|
return instead of output parameter. Remove init_sal references.
|
|
|
|
|
* frame.h (find_frame_sal): Return a symtab_and_line via function
|
|
|
|
|
return instead of output parameter.
|
|
|
|
|
* guile/scm-frame.c (gdbscm_frame_sal): Adjust.
|
|
|
|
|
* guile/scm-symtab.c (stscm_make_sal_smob): Use in-place new
|
|
|
|
|
instead of memset.
|
|
|
|
|
(gdbscm_find_pc_line): Remove init_sal reference.
|
|
|
|
|
* infcall.c (call_function_by_hand_dummy): Remove init_sal
|
|
|
|
|
references. Move declarations closer to initializations.
|
|
|
|
|
* infcmd.c (set_step_frame): Update. Move declarations closer to
|
|
|
|
|
initializations.
|
|
|
|
|
(finish_backward): Remove init_sal references. Move declarations
|
|
|
|
|
closer to initializations.
|
|
|
|
|
* infrun.c (process_event_stop_test, handle_step_into_function)
|
|
|
|
|
(insert_hp_step_resume_breakpoint_at_frame)
|
|
|
|
|
(insert_step_resume_breakpoint_at_caller): Likewise.
|
|
|
|
|
* linespec.c (create_sals_line_offset, decode_digits_ordinary)
|
|
|
|
|
(symbol_to_sal): Likewise.
|
|
|
|
|
* probe.c (parse_probes_in_pspace): Remove init_sal reference.
|
|
|
|
|
* python/py-frame.c (frapy_find_sal): Move sal declaration closer
|
|
|
|
|
to its initialization.
|
|
|
|
|
* reverse.c (save_bookmark_command): Use new/delete. Remove
|
|
|
|
|
init_sal references. Move declarations closer to initializations.
|
|
|
|
|
* source.c (get_current_source_symtab_and_line): Remove brace
|
|
|
|
|
initialization.
|
|
|
|
|
(set_current_source_symtab_and_line): Now takes the sal by const
|
|
|
|
|
reference. Remove brace initialization.
|
|
|
|
|
(line_info): Remove init_sal reference.
|
|
|
|
|
* source.h (set_current_source_symtab_and_line): Now takes a
|
|
|
|
|
symtab_and_line via const reference.
|
|
|
|
|
* stack.c (set_current_sal_from_frame): Adjust.
|
|
|
|
|
(print_frame_info): Adjust.
|
|
|
|
|
(get_last_displayed_sal): Return the sal via function return
|
|
|
|
|
instead of via output parameter. Simplify.
|
|
|
|
|
(frame_info): Adjust.
|
|
|
|
|
* stack.h (get_last_displayed_sal): Return the sal via function
|
|
|
|
|
return instead of via output parameter.
|
|
|
|
|
* symtab.c (init_sal): Delete.
|
|
|
|
|
(find_pc_sect_line): Remove init_sal references. Move
|
|
|
|
|
declarations closer to initializations.
|
|
|
|
|
(find_function_start_sal): Remove init_sal references. Move
|
|
|
|
|
declarations closer to initializations.
|
|
|
|
|
* symtab.h (struct symtab_and_line): In-class initialize all
|
|
|
|
|
fields.
|
|
|
|
|
* tracepoint.c (set_traceframe_context)
|
|
|
|
|
(print_one_static_tracepoint_marker): Remove init_sal references.
|
|
|
|
|
Move declarations closer to initializations.
|
|
|
|
|
* tui/tui-disasm.c (tui_show_disassem_and_update_source): Adjust.
|
|
|
|
|
* tui/tui-stack.c (tui_show_frame_info): Adjust. Move
|
|
|
|
|
declarations closer to initializations.
|
|
|
|
|
* tui/tui-winsource.c (tui_update_source_window_as_is): Remove
|
|
|
|
|
init_sal references. Adjust.
|
|
|
|
|
|
struct symtabs_and_lines -> std::vector<symtab_and_line>
This replaces "struct symtabs_and_lines" with
std::vector<symtab_and_line> in most cases. This removes a number of
cleanups.
In some cases, the sals objects do not own the sals they point at.
Instead they point at some sal that lives on the stack. Typically
something like this:
struct symtab_and_line sal;
struct symtabs_and_lines sals;
// fill in sal
sals.nelts = 1;
sals.sals = &sal;
// use sals
Instead of switching those cases to std::vector too, such usages are
replaced by gdb::array_view<symtab_and_line> instead. This avoids
introducing heap allocations.
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* ax-gdb.c (agent_command_1): Use range-for.
* break-catch-throw.c (re_set_exception_catchpoint): Update.
* breakpoint.c: Include "common/array-view.h".
(init_breakpoint_sal, create_breakpoint_sal): Change sals
parameter from struct symtabs_and_lines to
array_view<symtab_and_line>. Adjust. Use range-for. Update.
(breakpoint_sals_to_pc): Change sals parameter from struct
symtabs_and_lines to std::vector reference.
(check_fast_tracepoint_sals): Change sals parameter from struct
symtabs_and_lines to std::array_view. Use range-for.
(decode_static_tracepoint_spec): Return a std::vector instead of
symtabs_and_lines. Update.
(create_breakpoint): Update.
(break_range_command, until_break_command, clear_command): Update.
(base_breakpoint_decode_location, bkpt_decode_location)
(bkpt_probe_create_sals_from_location)
(bkpt_probe_decode_location, tracepoint_decode_location)
(tracepoint_probe_decode_location)
(strace_marker_create_sals_from_location): Return a std::vector
instead of symtabs_and_lines.
(strace_marker_create_breakpoints_sal): Update.
(strace_marker_decode_location): Return a std::vector instead of
symtabs_and_lines. Update.
(update_breakpoint_locations): Change struct symtabs_and_lines
parameters to gdb::array_view. Adjust.
(location_to_sals): Return a std::vector instead of
symtabs_and_lines. Update.
(breakpoint_re_set_default): Use std::vector instead of struct
symtabs_and_lines.
(decode_location_default): Return a std::vector instead of
symtabs_and_lines. Update.
* breakpoint.h: Include "common/array-view.h".
(struct breakpoint_ops) <decode_location>: Now returns a
std::vector instead of returning a symtabs_and_lines via output
parameter.
(update_breakpoint_locations): Change sals parameters to use
gdb::array_view.
* cli/cli-cmds.c (edit_command, list_command): Update to use
std::vector and gdb::array_view.
(ambiguous_line_spec): Adjust to use gdb::array_view and
range-for.
(compare_symtabs): Rename to ...
(cmp_symtabs): ... this. Change parameters to symtab_and_line
const reference and adjust.
(filter_sals): Rewrite using std::vector and standard algorithms.
* elfread.c (elf_gnu_ifunc_resolver_return_stop): Simplify.
(jump_command): Update to use std::vector.
* linespec.c (struct linespec_state) <canonical_names>: Update
comment.
(add_sal_to_sals_basic): Delete.
(add_sal_to_sals, filter_results, convert_results_to_lsals)
(decode_line_2, create_sals_line_offset)
(convert_address_location_to_sals, convert_linespec_to_sals)
(convert_explicit_location_to_sals, parse_linespec)
(event_location_to_sals, decode_line_full, decode_line_1)
(decode_line_with_current_source)
(decode_line_with_last_displayed, decode_objc)
(decode_digits_list_mode, decode_digits_ordinary, minsym_found)
(linespec_result::~linespec_result): Adjust to use std::vector
instead of symtabs_and_lines.
* linespec.h (linespec_sals::sals): Now a std::vector.
(struct linespec_result): Use std::vector, bool, and in-class
initialization.
(decode_line_1, decode_line_with_current_source)
(decode_line_with_last_displayed): Return std::vector.
* macrocmd.c (info_macros_command): Use std::vector.
* mi/mi-main.c (mi_cmd_trace_find): Use std::vector.
* probe.c (parse_probes_in_pspace, parse_probes): Adjust to use
std::vector.
* probe.h (parse_probes): Return a std::vector.
* python/python.c (gdbpy_decode_line): Use std::vector and
gdb::array_view.
* source.c (select_source_symtab, line_info): Use std::vector.
* stack.c (func_command): Use std::vector.
* symtab.h (struct symtabs_and_lines): Delete.
* tracepoint.c (tfind_line_command, scope_info): Use std::vector.
2017-09-04 18:10:13 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c (agent_command_1): Use range-for.
|
|
|
|
|
* break-catch-throw.c (re_set_exception_catchpoint): Update.
|
|
|
|
|
* breakpoint.c: Include "common/array-view.h".
|
|
|
|
|
(init_breakpoint_sal, create_breakpoint_sal): Change sals
|
|
|
|
|
parameter from struct symtabs_and_lines to
|
|
|
|
|
array_view<symtab_and_line>. Adjust. Use range-for. Update.
|
|
|
|
|
(breakpoint_sals_to_pc): Change sals parameter from struct
|
|
|
|
|
symtabs_and_lines to std::vector reference.
|
|
|
|
|
(check_fast_tracepoint_sals): Change sals parameter from struct
|
|
|
|
|
symtabs_and_lines to std::array_view. Use range-for.
|
|
|
|
|
(decode_static_tracepoint_spec): Return a std::vector instead of
|
|
|
|
|
symtabs_and_lines. Update.
|
|
|
|
|
(create_breakpoint): Update.
|
|
|
|
|
(break_range_command, until_break_command, clear_command): Update.
|
|
|
|
|
(base_breakpoint_decode_location, bkpt_decode_location)
|
|
|
|
|
(bkpt_probe_create_sals_from_location)
|
|
|
|
|
(bkpt_probe_decode_location, tracepoint_decode_location)
|
|
|
|
|
(tracepoint_probe_decode_location)
|
|
|
|
|
(strace_marker_create_sals_from_location): Return a std::vector
|
|
|
|
|
instead of symtabs_and_lines.
|
|
|
|
|
(strace_marker_create_breakpoints_sal): Update.
|
|
|
|
|
(strace_marker_decode_location): Return a std::vector instead of
|
|
|
|
|
symtabs_and_lines. Update.
|
|
|
|
|
(update_breakpoint_locations): Change struct symtabs_and_lines
|
|
|
|
|
parameters to gdb::array_view. Adjust.
|
|
|
|
|
(location_to_sals): Return a std::vector instead of
|
|
|
|
|
symtabs_and_lines. Update.
|
|
|
|
|
(breakpoint_re_set_default): Use std::vector instead of struct
|
|
|
|
|
symtabs_and_lines.
|
|
|
|
|
(decode_location_default): Return a std::vector instead of
|
|
|
|
|
symtabs_and_lines. Update.
|
|
|
|
|
* breakpoint.h: Include "common/array-view.h".
|
|
|
|
|
(struct breakpoint_ops) <decode_location>: Now returns a
|
|
|
|
|
std::vector instead of returning a symtabs_and_lines via output
|
|
|
|
|
parameter.
|
|
|
|
|
(update_breakpoint_locations): Change sals parameters to use
|
|
|
|
|
gdb::array_view.
|
|
|
|
|
* cli/cli-cmds.c (edit_command, list_command): Update to use
|
|
|
|
|
std::vector and gdb::array_view.
|
|
|
|
|
(ambiguous_line_spec): Adjust to use gdb::array_view and
|
|
|
|
|
range-for.
|
|
|
|
|
(compare_symtabs): Rename to ...
|
|
|
|
|
(cmp_symtabs): ... this. Change parameters to symtab_and_line
|
|
|
|
|
const reference and adjust.
|
|
|
|
|
(filter_sals): Rewrite using std::vector and standard algorithms.
|
|
|
|
|
* elfread.c (elf_gnu_ifunc_resolver_return_stop): Simplify.
|
|
|
|
|
(jump_command): Update to use std::vector.
|
|
|
|
|
* linespec.c (struct linespec_state) <canonical_names>: Update
|
|
|
|
|
comment.
|
|
|
|
|
(add_sal_to_sals_basic): Delete.
|
|
|
|
|
(add_sal_to_sals, filter_results, convert_results_to_lsals)
|
|
|
|
|
(decode_line_2, create_sals_line_offset)
|
|
|
|
|
(convert_address_location_to_sals, convert_linespec_to_sals)
|
|
|
|
|
(convert_explicit_location_to_sals, parse_linespec)
|
|
|
|
|
(event_location_to_sals, decode_line_full, decode_line_1)
|
|
|
|
|
(decode_line_with_current_source)
|
|
|
|
|
(decode_line_with_last_displayed, decode_objc)
|
|
|
|
|
(decode_digits_list_mode, decode_digits_ordinary, minsym_found)
|
|
|
|
|
(linespec_result::~linespec_result): Adjust to use std::vector
|
|
|
|
|
instead of symtabs_and_lines.
|
|
|
|
|
* linespec.h (linespec_sals::sals): Now a std::vector.
|
|
|
|
|
(struct linespec_result): Use std::vector, bool, and in-class
|
|
|
|
|
initialization.
|
|
|
|
|
(decode_line_1, decode_line_with_current_source)
|
|
|
|
|
(decode_line_with_last_displayed): Return std::vector.
|
|
|
|
|
* macrocmd.c (info_macros_command): Use std::vector.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_trace_find): Use std::vector.
|
|
|
|
|
* probe.c (parse_probes_in_pspace, parse_probes): Adjust to use
|
|
|
|
|
std::vector.
|
|
|
|
|
* probe.h (parse_probes): Return a std::vector.
|
|
|
|
|
* python/python.c (gdbpy_decode_line): Use std::vector and
|
|
|
|
|
gdb::array_view.
|
|
|
|
|
* source.c (select_source_symtab, line_info): Use std::vector.
|
|
|
|
|
* stack.c (func_command): Use std::vector.
|
|
|
|
|
* symtab.h (struct symtabs_and_lines): Delete.
|
|
|
|
|
* tracepoint.c (tfind_line_command, scope_info): Use std::vector.
|
|
|
|
|
|
2017-09-04 18:10:12 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/array-view-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add array-view-selftests.o.
|
|
|
|
|
* common/array-view.h: New file.
|
|
|
|
|
* unittests/array-view-selftests.c: New file.
|
|
|
|
|
|
Clarify "list" output when specified lines are ambiguous
Currently, with "list LINESPEC1,LINESPEC2", if one of the linespecs is
ambiguous, i.e., if it expands to multiple locations, you get this
seemingly odd output:
(gdb) list foo,bar
file: "file0.c", line number: 26
file: "file1.c", line number: 29
Since "foo" above expands to multiple locations, the specified range
is indeterminate, and GDB is trying to be helpful by showing you what
was ambiguous. It looks confusing to me, though. I think it'd be
much more user friendly if GDB actually told you that, like this:
(gdb) list foo,bar
Specified first line 'foo' is ambiguous:
file: "file0.c", line number: 26
file: "file1.c", line number: 29
(gdb) list bar,foo
Specified last line 'foo' is ambiguous:
file: "file0.c", line number: 26
file: "file1.c", line number: 29
Note, I'm using "first" and "last" in the output because that's what
the manual uses:
~~~
list first,last
Print lines from first to last. [...]
~~~
Tested on x86-64 GNU/Linux.
gdb/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* cli/cli-cmds.c (edit_command): Pass message to
ambiguous_line_spec.
(list_command): Pass message to ambiguous_line_spec. Say
"first"/"last" instead of "start" and "end" to be consistent with
the manual.
(ambiguous_line_spec): Add 'format' and vararg parameters. Use
them to print formatted message.
gdb/testsuite/ChangeLog:
2017-09-04 Pedro Alves <palves@redhat.com>
* gdb.base/list-ambiguous.exp: New file.
* gdb.base/list-ambiguous0.c: New file.
* gdb.base/list-ambiguous1.c: New file.
* gdb.base/list.exp (test_list_range): Adjust expected output.
2017-09-04 17:49:29 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (edit_command): Pass message to
|
|
|
|
|
ambiguous_line_spec.
|
|
|
|
|
(list_command): Pass message to ambiguous_line_spec. Say
|
|
|
|
|
"first"/"last" instead of "start" and "end" to be consistent with
|
|
|
|
|
the manual.
|
|
|
|
|
(ambiguous_line_spec): Add 'format' and vararg parameters. Use
|
|
|
|
|
them to print formatted message.
|
|
|
|
|
|
2017-09-04 17:01:17 +02:00
|
|
|
|
2017-09-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_add_pt): Pass btrace_insn to
|
|
|
|
|
ftrace_update_insns by reference instead of pointer.
|
|
|
|
|
|
2017-09-04 12:33:56 +02:00
|
|
|
|
2017-09-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i386-go32-tdep.c: Include x86-xstate.h.
|
|
|
|
|
(i386_go32_init_abi): Call i386_target_description.
|
|
|
|
|
* i386-tdep.c (i386_target_description): Return tdesc_i386_mmx
|
|
|
|
|
if xcr0 is X86_XSTATE_X87_MASK.
|
|
|
|
|
* i386-tdep.h (tdesc_i386): Remove the declaration.
|
|
|
|
|
(tdesc_i386_mmx): Likewise.
|
|
|
|
|
|
2017-09-04 12:33:56 +02:00
|
|
|
|
2017-09-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i386-fbsd-tdep.c (i386fbsd_core_read_xcr0): Return
|
|
|
|
|
X86_XSTATE_SSE_MASK instead of 0.
|
|
|
|
|
|
2017-09-04 12:33:56 +02:00
|
|
|
|
2017-09-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-fbsd-nat.c (amd64fbsd_read_description): Call
|
|
|
|
|
i386_target_description.
|
|
|
|
|
* i386-fbsd-nat.c (i386fbsd_read_description): Call
|
|
|
|
|
i386_target_description.
|
|
|
|
|
* i386-tdep.c (i386_gdbarch_init): Likewise.
|
|
|
|
|
|
2017-09-04 12:33:56 +02:00
|
|
|
|
2017-09-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-darwin-tdep.c: Include "x86-xstate.h".
|
|
|
|
|
(x86_darwin_init_abi_64): Call amd64_target_description.
|
|
|
|
|
* amd64-dicos-tdep.c: Likewise.
|
|
|
|
|
* amd64-fbsd-nat.c: Likewise.
|
|
|
|
|
* amd64-fbsd-tdep.c: Likewise.
|
|
|
|
|
* amd64-nbsd-tdep.c: Likewise.
|
|
|
|
|
* amd64-obsd-tdep.c: Likewise.
|
|
|
|
|
* amd64-sol2-tdep.c: Likewise.
|
|
|
|
|
* amd64-windows-tdep.c: Likewise.
|
|
|
|
|
* amd64-tdep.h (tdesc_amd64): Remove the declaration.
|
|
|
|
|
|
btrace: Store btrace_insn in an std::vector
Because it contains a non-POD type field (flags), the type btrace_insn
should be new'ed/delete'd. Replace the VEC (btrace_insn_s) in
btrace_function with an std::vector.
gdb/ChangeLog:
* btrace.h (btrace_insn_s, DEF_VEC_O (btrace_insn_s)): Remove.
(btrace_function) <insn>: Change type to use std::vector.
* btrace.c (ftrace_debug, ftrace_call_num_insn,
ftrace_find_call, ftrace_new_gap, ftrace_update_function,
ftrace_update_insns, ftrace_compute_global_level_offset,
btrace_stitch_bts, btrace_clear, btrace_insn_get,
btrace_insn_end, btrace_insn_next, btrace_insn_prev): Adjust to
change to std::vector.
(ftrace_update_insns): Adjust to change to std::vector, change
type of INSN parameter.
(btrace_compute_ftrace_bts): Adjust call to ftrace_update_insns.
* record-btrace.c (btrace_call_history_insn_range,
btrace_compute_src_line_range,
record_btrace_frame_prev_register): Adjust to change to
std::vector.
* python/py-record-btrace.c (recpy_bt_func_instructions): Adjust
to change to std::vector.
2017-09-04 10:46:36 +02:00
|
|
|
|
2017-09-04 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* btrace.h (btrace_insn_s, DEF_VEC_O (btrace_insn_s)): Remove.
|
|
|
|
|
(btrace_function) <insn>: Change type to use std::vector.
|
|
|
|
|
* btrace.c (ftrace_debug, ftrace_call_num_insn,
|
|
|
|
|
ftrace_find_call, ftrace_new_gap, ftrace_update_function,
|
|
|
|
|
ftrace_update_insns, ftrace_compute_global_level_offset,
|
|
|
|
|
btrace_stitch_bts, btrace_clear, btrace_insn_get,
|
|
|
|
|
btrace_insn_end, btrace_insn_next, btrace_insn_prev): Adjust to
|
|
|
|
|
change to std::vector.
|
|
|
|
|
(ftrace_update_insns): Adjust to change to std::vector, change
|
|
|
|
|
type of INSN parameter.
|
|
|
|
|
(btrace_compute_ftrace_bts): Adjust call to ftrace_update_insns.
|
|
|
|
|
* record-btrace.c (btrace_call_history_insn_range,
|
|
|
|
|
btrace_compute_src_line_range,
|
|
|
|
|
record_btrace_frame_prev_register): Adjust to change to
|
|
|
|
|
std::vector.
|
|
|
|
|
* python/py-record-btrace.c (recpy_bt_func_instructions): Adjust
|
|
|
|
|
to change to std::vector.
|
|
|
|
|
|
2017-08-14 08:18:06 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* corefile.c (reopen_exec_file): Use std::string.
|
|
|
|
|
|
2017-08-14 08:03:02 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (compile_register_name_mangled): Return
|
|
|
|
|
std::string.
|
|
|
|
|
* compile/compile-loc2c.c (pushf_register_address): Update.
|
|
|
|
|
(pushf_register): Update.
|
|
|
|
|
* compile/compile-c-types.c (convert_array): Update.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_vla_size): Update.
|
|
|
|
|
(error_symbol_once): Use a gdb::unique_xmalloc_ptr.
|
|
|
|
|
(symbol_substitution_name): Return a gdb::unique_xmalloc_ptr.
|
|
|
|
|
(convert_one_symbol): Update.
|
|
|
|
|
(generate_c_for_for_one_variable): Update.
|
|
|
|
|
* compile/compile-c-support.c (c_get_range_decl_name): Return a
|
|
|
|
|
std::string.
|
|
|
|
|
(generate_register_struct): Update.
|
|
|
|
|
* compile/compile-internal.h (c_get_range_decl_name): Return a
|
|
|
|
|
std::string.
|
|
|
|
|
(compile_register_name_mangled): Return std::string.
|
|
|
|
|
|
2017-08-14 07:47:01 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (perror_string): Return a std::string.
|
|
|
|
|
(throw_perror_with_name, perror_warning_with_name): Update.
|
|
|
|
|
|
2017-08-14 07:38:09 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* demangle.c (demangle_command): Use std::string,
|
|
|
|
|
unique_xmalloc_ptr.
|
|
|
|
|
|
2017-08-13 22:45:17 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-setshow.c (do_set_command): Use std::string.
|
|
|
|
|
|
2017-08-13 22:34:59 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (cd_command): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
|
2017-08-13 19:04:37 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-interp.c (mi_cmd_interpreter_exec): Use std::string.
|
|
|
|
|
|
2017-08-13 18:57:05 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-env.c (env_execute_cli_command): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
|
2017-08-11 22:48:17 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (print_thread_info_1): Use string_printf.
|
|
|
|
|
(thread_apply_command, thread_apply_all_command): Use
|
|
|
|
|
std::string.
|
|
|
|
|
|
2017-08-06 00:23:18 +02:00
|
|
|
|
2017-09-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (val_print_string): Update.
|
|
|
|
|
* gdbcore.h (memory_error_message): Return std::string.
|
|
|
|
|
* corefile.c (memory_error_message): Return std::string.
|
|
|
|
|
(memory_error): Update.
|
|
|
|
|
* breakpoint.c (insert_bp_location): Update.
|
|
|
|
|
|
2017-09-03 10:23:31 +02:00
|
|
|
|
2017-09-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* target/waitstatus.h (target_waitstatus_to_string): Change
|
|
|
|
|
return type to std::string.
|
|
|
|
|
* target/waitstatus.c (target_waitstatus_to_string): Return
|
|
|
|
|
std::string.
|
|
|
|
|
* target.h (target_waitstatus_to_string): Remove declaration.
|
|
|
|
|
* infrun.c (resume, clear_proceed_status_thread,
|
|
|
|
|
print_target_wait_results, do_target_wait, save_waitstatus,
|
|
|
|
|
stop_all_threads): Adjust.
|
|
|
|
|
* record-btrace.c (record_btrace_wait): Adjust.
|
|
|
|
|
* target-debug.h
|
|
|
|
|
(target_debug_print_struct_target_waitstatus_p): Adjust.
|
|
|
|
|
|
2017-09-01 06:13:40 +02:00
|
|
|
|
2017-09-01 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/22046
|
|
|
|
|
* nat/linux-procfs.c (parse_proc_status_state): Fix PROC_STATE_STOPPED
|
|
|
|
|
detection.
|
|
|
|
|
|
Implement the ability to set/unset environment variables to GDBserver when starting the inferior
This patch implements the ability to set/unset environment variables
on the remote target, mimicking what GDB already offers to the user.
There are two features present here: user-set and user-unset
environment variables.
User-set environment variables are only the variables that are
explicitly set by the user, using the 'set environment' command. This
means that variables that were already present in the environment when
starting GDB/GDBserver are not transmitted/considered by this feature.
User-unset environment variables are variables that are explicitly
unset by the user, using the 'unset environment' command.
The idea behind this patch is to store user-set and user-unset
environment variables in two separate sets, both part of gdb_environ.
Then, when extended_remote_create_inferior is preparing to start the
inferior, it will iterate over the two sets and set/unset variables
accordingly. Three new packets are introduced:
- QEnvironmentHexEncoded, which is used to set environment variables,
and contains an hex-encoded string in the format "VAR=VALUE" (VALUE
can be empty if the user set a variable with a null value, by doing
'set environment VAR=').
- QEnvironmentUnset, which is used to unset environment variables, and
contains an hex-encoded string in the format "VAR".
- QEnvironmentReset, which is always the first packet to be
transmitted, and is used to reset the environment, i.e., discard any
changes made by the user on previous runs.
The QEnvironmentHexEncoded packet is inspired on LLDB's extensions to
the RSP. Details about it can be seen here:
<https://raw.githubusercontent.com/llvm-mirror/lldb/master/docs/lldb-gdb-remote.txt>
I decided not to implement the QEnvironment packet because it is
considered deprecated by LLDB. This packet, on LLDB, serves the same
purpose of QEnvironmentHexEncoded, but sends the information using a
plain text, non-hex-encoded string.
The other two packets are new.
This patch also includes updates to the documentation, testsuite, and
unit tests, without introducing regressions.
gdb/ChangeLog:
2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com>
* NEWS (Changes since GDB 8.0): Add entry mentioning new support
for setting/unsetting environment variables on the remote target.
(New remote packets): Add entries for QEnvironmentHexEncoded,
QEnvironmentUnset and QEnvironmentReset.
* common/environ.c (gdb_environ::operator=): Extend method to
handle m_user_set_env_list and m_user_unset_env_list.
(gdb_environ::clear): Likewise.
(match_var_in_string): Change type of first parameter from 'char
*' to 'const char *'.
(gdb_environ::set): Extend method to handle
m_user_set_env_list and m_user_unset_env_list.
(gdb_environ::unset): Likewise.
(gdb_environ::clear_user_set_env): New method.
(gdb_environ::user_set_envp): Likewise.
(gdb_environ::user_unset_envp): Likewise.
* common/environ.h (gdb_environ): Handle m_user_set_env_list and
m_user_unset_env_list on move constructor/assignment.
(unset): Add new default parameter 'update_unset_list = true'.
(clear_user_set_env): New method.
(user_set_envp): Likewise.
(user_unset_envp): Likewise.
(m_user_set_env_list): New std::set.
(m_user_unset_env_list): Likewise.
* common/rsp-low.c (hex2str): New function.
(bin2hex): New overload for bin2hex function.
* common/rsp-low.c (hex2str): New prototype.
(str2hex): New overload prototype.
* remote.c: Include "environ.h". Add QEnvironmentHexEncoded,
QEnvironmentUnset and QEnvironmentReset.
(remote_protocol_features): Add QEnvironmentHexEncoded,
QEnvironmentUnset and QEnvironmentReset packets.
(send_environment_packet): New function.
(extended_remote_environment_support): Likewise.
(extended_remote_create_inferior): Call
extended_remote_environment_support.
(_initialize_remote): Add QEnvironmentHexEncoded,
QEnvironmentUnset and QEnvironmentReset packet configs.
* unittests/environ-selftests.c (gdb_selftest_env_var):
New variable.
(test_vector_initialization): New function.
(test_init_from_host_environ): Likewise.
(test_reinit_from_host_environ): Likewise.
(test_set_A_unset_B_unset_A_cannot_find_A_can_find_B):
Likewise.
(test_unset_set_empty_vector): Likewise.
(test_vector_clear): Likewise.
(test_std_move): Likewise.
(test_move_constructor):
(test_self_move): Likewise.
(test_set_unset_reset): Likewise.
(run_tests): Rewrite in terms of the functions above.
gdb/gdbserver/ChangeLog:
2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com>
* server.c (handle_general_set): Handle QEnvironmentHexEncoded,
QEnvironmentUnset and QEnvironmentReset packets.
(handle_query): Inform remote that QEnvironmentHexEncoded,
QEnvironmentUnset and QEnvironmentReset are supported.
gdb/doc/ChangeLog:
2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.texinfo (set environment): Add @anchor. Explain that
environment variables set by the user are sent to GDBserver.
(unset environment): Likewise, but for unsetting variables.
(Connecting) <Remote Packet>: Add "environment-hex-encoded",
"QEnvironmentHexEncoded", "environment-unset", "QEnvironmentUnset",
"environment-reset" and "QEnvironmentReset" to the table.
(Remote Protocol) <QEnvironmentHexEncoded, QEnvironmentUnset,
QEnvironmentReset>: New item, explaining the packet.
gdb/testsuite/ChangeLog:
2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.base/share-env-with-gdbserver.c: New file.
* gdb.base/share-env-with-gdbserver.exp: Likewise.
2017-06-29 21:06:07 +02:00
|
|
|
|
2017-08-31 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 8.0): Add entry mentioning new support
|
|
|
|
|
for setting/unsetting environment variables on the remote target.
|
|
|
|
|
(New remote packets): Add entries for QEnvironmentHexEncoded,
|
|
|
|
|
QEnvironmentUnset and QEnvironmentReset.
|
|
|
|
|
* common/environ.c (gdb_environ::operator=): Extend method to
|
|
|
|
|
handle m_user_set_env_list and m_user_unset_env_list.
|
|
|
|
|
(gdb_environ::clear): Likewise.
|
|
|
|
|
(match_var_in_string): Change type of first parameter from 'char
|
|
|
|
|
*' to 'const char *'.
|
|
|
|
|
(gdb_environ::set): Extend method to handle
|
|
|
|
|
m_user_set_env_list and m_user_unset_env_list.
|
|
|
|
|
(gdb_environ::unset): Likewise.
|
|
|
|
|
(gdb_environ::clear_user_set_env): New method.
|
|
|
|
|
(gdb_environ::user_set_envp): Likewise.
|
|
|
|
|
(gdb_environ::user_unset_envp): Likewise.
|
|
|
|
|
* common/environ.h (gdb_environ): Handle m_user_set_env_list and
|
|
|
|
|
m_user_unset_env_list on move constructor/assignment.
|
|
|
|
|
(unset): Add new default parameter 'update_unset_list = true'.
|
|
|
|
|
(clear_user_set_env): New method.
|
|
|
|
|
(user_set_envp): Likewise.
|
|
|
|
|
(user_unset_envp): Likewise.
|
|
|
|
|
(m_user_set_env_list): New std::set.
|
|
|
|
|
(m_user_unset_env_list): Likewise.
|
|
|
|
|
* common/rsp-low.c (hex2str): New function.
|
|
|
|
|
(bin2hex): New overload for bin2hex function.
|
|
|
|
|
* common/rsp-low.c (hex2str): New prototype.
|
|
|
|
|
(str2hex): New overload prototype.
|
|
|
|
|
* remote.c: Include "environ.h". Add QEnvironmentHexEncoded,
|
|
|
|
|
QEnvironmentUnset and QEnvironmentReset.
|
|
|
|
|
(remote_protocol_features): Add QEnvironmentHexEncoded,
|
|
|
|
|
QEnvironmentUnset and QEnvironmentReset packets.
|
|
|
|
|
(send_environment_packet): New function.
|
|
|
|
|
(extended_remote_environment_support): Likewise.
|
|
|
|
|
(extended_remote_create_inferior): Call
|
|
|
|
|
extended_remote_environment_support.
|
|
|
|
|
(_initialize_remote): Add QEnvironmentHexEncoded,
|
|
|
|
|
QEnvironmentUnset and QEnvironmentReset packet configs.
|
|
|
|
|
* unittests/environ-selftests.c (gdb_selftest_env_var):
|
|
|
|
|
New variable.
|
|
|
|
|
(test_vector_initialization): New function.
|
|
|
|
|
(test_init_from_host_environ): Likewise.
|
|
|
|
|
(test_reinit_from_host_environ): Likewise.
|
|
|
|
|
(test_set_A_unset_B_unset_A_cannot_find_A_can_find_B):
|
|
|
|
|
Likewise.
|
|
|
|
|
(test_unset_set_empty_vector): Likewise.
|
|
|
|
|
(test_vector_clear): Likewise.
|
|
|
|
|
(test_std_move): Likewise.
|
|
|
|
|
(test_move_constructor):
|
|
|
|
|
(test_self_move): Likewise.
|
|
|
|
|
(test_set_unset_reset): Likewise.
|
|
|
|
|
(run_tests): Rewrite in terms of the functions above.
|
|
|
|
|
|
2017-08-26 02:33:25 +02:00
|
|
|
|
2017-08-31 Weimin Pan <weimin.pan@oracle.com>
|
|
|
|
|
|
|
|
|
|
* sparc64-tdep.c (adi_stat_t): Fix comment formatting.
|
|
|
|
|
(adi_available): Use a temp variable of type CORE_ADDR as argument
|
|
|
|
|
3 when calling target_auxv_search.
|
|
|
|
|
(adi_normalize_address): Use masks and xor operators to calculate
|
|
|
|
|
normalized address.
|
|
|
|
|
(adi_read_versions, adi_write_versions, adi_print_versions)
|
|
|
|
|
(do_examine, do_assign): Use paddress.
|
|
|
|
|
|
2017-08-30 00:04:09 +02:00
|
|
|
|
2017-08-29 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-nat.c (getfpregs_supplies): Return true for FIR.
|
|
|
|
|
* mips-fbsd-tdep.c (mips_fbsd_supply_fpregs): Split supply of FSR
|
|
|
|
|
out of loop and add supply of FIR.
|
|
|
|
|
(mips_fbsd_collect_fpregs): Split collect of FSR out of loop and
|
|
|
|
|
add collect of FIR.
|
|
|
|
|
|
2017-08-28 23:05:04 +02:00
|
|
|
|
2017-08-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
2017-08-28 23:09:04 +02:00
|
|
|
|
PR gdb/21827
|
2017-08-28 23:05:04 +02:00
|
|
|
|
* cli/cli-script.c (define_command): Don't convert command name
|
|
|
|
|
to lower case.
|
|
|
|
|
|
2017-08-26 01:23:27 +02:00
|
|
|
|
2017-08-25 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_lookup_struct_elt_type): Remove parameter "dispp".
|
|
|
|
|
Update all callers accordingly. Remove all code blocks handling
|
|
|
|
|
the case where DISPP is not NULL.
|
|
|
|
|
|
2017-08-24 16:39:11 +02:00
|
|
|
|
2017-08-24 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR symtab/22003
|
|
|
|
|
* dwarf2read.c (dwarf2_const_value_attr, dump_die_shallow)
|
|
|
|
|
(dwarf2_get_attr_constant_value, dwarf2_fetch_constant_bytes)
|
|
|
|
|
(skip_form_bytes, attr_form_is_constant): Handle DW_FORM_implicit_const.
|
|
|
|
|
|
2017-08-24 10:26:52 +02:00
|
|
|
|
2017-08-24 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (build_type_psymtabs_reader): New prototype.
|
|
|
|
|
(process_psymtab_comp_unit): Accept IS_DEBUG_TYPES.
|
|
|
|
|
(read_comp_units_from_section): New parameter abbrev_section, use
|
|
|
|
|
read_and_check_comp_unit_head, allocate signatured_type if needed.
|
|
|
|
|
(create_all_comp_units): Update read_comp_units_from_section caller.
|
|
|
|
|
|
2017-08-22 14:52:44 +02:00
|
|
|
|
2017-08-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR remote/21852
|
|
|
|
|
* remote.c (add_current_inferior_and_thread): Set inferior_ptid
|
|
|
|
|
to null_ptid and switch to thread without reading the registers
|
|
|
|
|
after adding the inferior.
|
|
|
|
|
|
2017-02-21 22:32:56 +01:00
|
|
|
|
2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 8.0): Add set compile-gcc and show
|
|
|
|
|
compile-gcc.
|
|
|
|
|
* compile/compile.c (compile_gcc, show_compile_gcc): New.
|
|
|
|
|
(compile_to_object): Implement compile_gcc.
|
|
|
|
|
(_initialize_compile): Install "set compile-gcc". Initialize
|
|
|
|
|
compile_gcc.
|
|
|
|
|
|
2017-02-21 22:32:55 +01:00
|
|
|
|
2017-08-23 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (compile_to_object): Conditionally call
|
|
|
|
|
set_verbose. Conditionally call compile or compile_v0.
|
|
|
|
|
|
gdb: SPARC ADI support
The M7 processor supports an Application Data Integrity (ADI) feature
that detects invalid data accesses. When software allocates data, it
chooses a 4-bit version number, sets the version in the upper 4 bits
of the 64-bit pointer to that data, and stores the 4-bit version in
every cacheline of the object. Hardware saves the latter in spare
bits in the cache and memory hierarchy. On each load and store, the
processor compares the upper 4 VA (virtual address) bits to the
cacheline's version. If there is a mismatch, the processor generates a
version mismatch trap which can be either precise or disrupting. The
trap is an error condition which the kernel delivers to the process as
a SIGSEGV signal.
The upper 4 bits of the VA represent a version and are not part of the
true address. The processor clears these bits and sign extends bit 59
to generate the true address.
Note that 32-bit applications cannot use ADI.
This patch adds ADI support in gdb which allows the user to examine
current version tags and assign new version tags in the program. It
also catches and reports precise or disrupting memory corruption
traps.
gdb/ChangeLog:
2017-08-07 Weimin Pan <weimin.pan@oracle.com>
* sparc64-tdep.h: (adi_normalize_address): New export.
* sparc-nat.h: (open_adi_tag_fd): New export.
* sparc64-linux-nat.c: (open_adi_tag_fd): New function.
* sparc64-linux-tdep.c:
(SEGV_ACCADI, SEGV_ADIDERR, SEGV_ADIPERR) New defines.
(sparc64_linux_handle_segmentation_fault): New function.
(sparc64_linux_init_abi): Register
sparc64_linux_handle_segmentation_fault
* sparc64-tdep.c: Include cli-utils.h,gdbcmd.h,auxv.h.
(sparc64_addr_bits_remove): New function.
(sparc64_init_abi): Register sparc64_addr_bits_remove.
(MAX_PROC_NAME_SIZE): New macro.
(AT_ADI_BLKSZ, AT_ADI_NBITS, AT_ADI_UEONADI) New defines.
(sparc64adilist): New variable.
(adi_proc_list): New variable.
(find_adi_info): New function.
(add_adi_info): New function.
(get_adi_info_proc): New function.
(get_adi_info): New function.
(info_adi_command): New function.
(read_maps_entry): New function.
(adi_available): New function.
(adi_normalize_address): New function.
(adi_align_address): New function.
(adi_convert_byte_count): New function.
(adi_tag_fd): New function.
(adi_is_addr_mapped): New function.
(adi_read_versions): New function.
(adi_write_versions): New function.
(adi_print_versions): New function.
(do_examine): New function.
(do_assign): New function.
(adi_examine_command): New function.
(adi_assign_command): New function.
(_initialize_sparc64_adi_tdep): New function.
gdb/doc/ChangeLog:
2017-08-07 Weimin Pan <weimin.pan@oracle.com>
* gdb.texinfo (Architectures): Add new Sparc64 section to document
ADI support.
* NEWS: Add "adi examine" and "adi assign" commands.
gdb/testsuite/ChangeLog:
2017-08-07 Weimin Pan <weimin.pan@oracle.com>
* gdb.arch/sparc64-adi.exp: New file.
* gdb.arch/sparc64-adi.c: New file.
2017-08-23 10:57:37 +02:00
|
|
|
|
2017-08-07 Weimin Pan <weimin.pan@oracle.com>
|
|
|
|
|
|
|
|
|
|
* sparc64-tdep.h: (adi_normalize_address): New export.
|
|
|
|
|
* sparc-nat.h: (open_adi_tag_fd): New export.
|
|
|
|
|
* sparc64-linux-nat.c: (open_adi_tag_fd): New function.
|
|
|
|
|
* sparc64-linux-tdep.c:
|
|
|
|
|
(SEGV_ACCADI, SEGV_ADIDERR, SEGV_ADIPERR) New defines.
|
|
|
|
|
(sparc64_linux_handle_segmentation_fault): New function.
|
|
|
|
|
(sparc64_linux_init_abi): Register
|
|
|
|
|
sparc64_linux_handle_segmentation_fault
|
|
|
|
|
* sparc64-tdep.c: Include cli-utils.h,gdbcmd.h,auxv.h.
|
|
|
|
|
(sparc64_addr_bits_remove): New function.
|
|
|
|
|
(sparc64_init_abi): Register sparc64_addr_bits_remove.
|
|
|
|
|
(MAX_PROC_NAME_SIZE): New macro.
|
|
|
|
|
(AT_ADI_BLKSZ, AT_ADI_NBITS, AT_ADI_UEONADI) New defines.
|
|
|
|
|
(sparc64adilist): New variable.
|
|
|
|
|
(adi_proc_list): New variable.
|
|
|
|
|
(find_adi_info): New function.
|
|
|
|
|
(add_adi_info): New function.
|
|
|
|
|
(get_adi_info_proc): New function.
|
|
|
|
|
(get_adi_info): New function.
|
|
|
|
|
(info_adi_command): New function.
|
|
|
|
|
(read_maps_entry): New function.
|
|
|
|
|
(adi_available): New function.
|
|
|
|
|
(adi_normalize_address): New function.
|
|
|
|
|
(adi_align_address): New function.
|
|
|
|
|
(adi_convert_byte_count): New function.
|
|
|
|
|
(adi_tag_fd): New function.
|
|
|
|
|
(adi_is_addr_mapped): New function.
|
|
|
|
|
(adi_read_versions): New function.
|
|
|
|
|
(adi_write_versions): New function.
|
|
|
|
|
(adi_print_versions): New function.
|
|
|
|
|
(do_examine): New function.
|
|
|
|
|
(do_assign): New function.
|
|
|
|
|
(adi_examine_command): New function.
|
|
|
|
|
(adi_assign_command): New function.
|
|
|
|
|
(_initialize_sparc64_adi_tdep): New function.
|
|
|
|
|
|
2017-08-22 22:09:55 +02:00
|
|
|
|
2017-08-22 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (breakpoints_info): Rename to ...
|
|
|
|
|
(info_breakpoints_command): ... this.
|
|
|
|
|
(watchpoints_info): Rename to ...
|
|
|
|
|
(info_watchpoints_command): ... this.
|
|
|
|
|
(tracepoints_info): Rename to ...
|
|
|
|
|
(info_tracepoints_command): ... this.
|
|
|
|
|
(_initialize_breakpoint): Adjust.
|
|
|
|
|
* dcache.c (dcache_info): Rename to ...
|
|
|
|
|
(info_display_command): ... this.
|
|
|
|
|
(_initialize_dcache): Adjust.
|
|
|
|
|
* frame.h (args_info): Rename to ...
|
|
|
|
|
(info_args_command): ... this.
|
|
|
|
|
(locals_info): Rename to ...
|
|
|
|
|
(info_locals_command): ... this.
|
|
|
|
|
* infcmd.c (nofp_registers_info): Rename to ...
|
|
|
|
|
(info_registers_command): ... this.
|
|
|
|
|
(float_info): Rename to ...
|
|
|
|
|
(info_float_command): ... this.
|
|
|
|
|
(program_info): Rename to ...
|
|
|
|
|
(info_program_command): ... this.
|
|
|
|
|
(all_registers_info): Rename to ...
|
|
|
|
|
(info_all_registers_command): ... this.
|
|
|
|
|
(vector_info): Rename to ...
|
|
|
|
|
(info_vector_command): ... this.
|
|
|
|
|
(float_info): Rename to ...
|
|
|
|
|
(info_float_command): ... this.
|
|
|
|
|
(_initialize_infcmd): Adjust.
|
|
|
|
|
* inferior.h (term_info): Rename to ...
|
|
|
|
|
(info_terminal_command): ... this.
|
|
|
|
|
* inflow.c (term_info): Rename to ...
|
|
|
|
|
(info_terminal_command): ... this.
|
|
|
|
|
(_initialize_inflow): Adjust.
|
|
|
|
|
* infrun.c (signals_info): Rename to ...
|
|
|
|
|
(info_signals_command): ... this.
|
|
|
|
|
(_initialize_infrun): Adjust.
|
|
|
|
|
* objc-lang.c (classes_info): Rename to ...
|
|
|
|
|
(info_classes_command): ... this.
|
|
|
|
|
(selectors_info): Rename to ...
|
|
|
|
|
(info_selectors_command): ... this.
|
|
|
|
|
(_initialize_objc_language): Adjust.
|
|
|
|
|
* printcmd.c (sym_info): Rename to ...
|
|
|
|
|
(info_symbol_command): ... this.
|
|
|
|
|
(address_info): Rename to ...
|
|
|
|
|
(info_address_command): ... this.
|
|
|
|
|
(display_info): Rename to ...
|
|
|
|
|
(info_display_command): ... this.
|
|
|
|
|
(_initialize_printcmd): Adjust.
|
|
|
|
|
* reverse.c (bookmarks_info): Rename to ...
|
|
|
|
|
(info_breakpoints_command): ... this.
|
|
|
|
|
(_initialize_reverse): Adjust.
|
|
|
|
|
* ser-go32.c (dos_info): Rename to ...
|
|
|
|
|
(info_serial_command): ... this.
|
|
|
|
|
(_initialize_ser_dos): Adjust.
|
|
|
|
|
* skip.c (skip_info): Rename to ...
|
|
|
|
|
(info_skip_command): ... this.
|
|
|
|
|
(_initialize_step_skip): Adjust.
|
|
|
|
|
* source.c (line_info): Rename to ...
|
|
|
|
|
(info_line_command): ... this.
|
|
|
|
|
(source_info): Rename to ...
|
|
|
|
|
(info_source_command)
|
|
|
|
|
* stack.c (frame_info): Rename to ...
|
|
|
|
|
(info_frame_command): ... this.
|
|
|
|
|
(locals_info): Rename to ...
|
|
|
|
|
(info_locals_command): ... this.
|
|
|
|
|
(args_info): Rename to ...
|
|
|
|
|
(info_args_command): ... this.
|
|
|
|
|
(_initialize_stack): Adjust.
|
|
|
|
|
* symtab.c (sources_info): Rename to ...
|
|
|
|
|
(info_sources_command): ... this.
|
|
|
|
|
(variables_info): Rename to ...
|
|
|
|
|
(info_variables_command): ... this.
|
|
|
|
|
(functions_info): Rename to ...
|
|
|
|
|
(info_functions_command): ... this.
|
|
|
|
|
(types_info): Rename to ...
|
|
|
|
|
(info_types_command): ... this.
|
|
|
|
|
(_initialize_symtab): Adjust.
|
|
|
|
|
* target.c (target_info): Rename to ...
|
|
|
|
|
(info_target_command): ... this.
|
|
|
|
|
(initialize_targets): Adjust.
|
|
|
|
|
* tracepoint.c (tvariables_info): Rename to ...
|
|
|
|
|
(info_tvariables_command): ... this.
|
|
|
|
|
(scope_info): Rename to ...
|
|
|
|
|
(info_scope_command): ... this.
|
|
|
|
|
(trace_dump_actions): Adjust.
|
|
|
|
|
(_initialize_tracepoint): Adjust.
|
|
|
|
|
|
2017-08-20 06:26:20 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (install_breakpoint): Update.
|
|
|
|
|
* breakpoint.c (add_solib_catchpoint): Update.
|
|
|
|
|
(install_breakpoint): Change argument to a std::unique_ptr.
|
|
|
|
|
(create_fork_vfork_event_catchpoint): Use std::unique_ptr.
|
|
|
|
|
(create_breakpoint_sal, create_breakpoint): Update.
|
|
|
|
|
(watch_command_1, catch_exec_command_1)
|
|
|
|
|
(strace_marker_create_breakpoints_sal): Use std::unique_ptr.
|
|
|
|
|
(add_to_breakpoint_chain): Change argument to a std::unique_ptr.
|
|
|
|
|
Return the breakpoint.
|
|
|
|
|
(set_raw_breakpoint_without_location, set_raw_breakpoint)
|
|
|
|
|
(new_single_step_breakpoint): Update.
|
|
|
|
|
* break-catch-throw.c (handle_gnu_v3_exceptions): Use
|
|
|
|
|
std::unique_ptr.
|
|
|
|
|
* break-catch-syscall.c (create_syscall_event_catchpoint): Use
|
|
|
|
|
std::unique_ptr.
|
|
|
|
|
* break-catch-sig.c (create_signal_catchpoint): Use
|
|
|
|
|
std::unique_ptr.
|
|
|
|
|
* ada-lang.c (create_ada_exception_catchpoint): Use
|
|
|
|
|
std::unique_ptr.
|
|
|
|
|
|
2017-08-20 06:15:30 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (add_solib_catchpoint): Use std::unique_ptr.
|
|
|
|
|
|
2017-08-05 18:40:15 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* psymtab.c (psymtab_search_name): Return a unique_xmalloc_ptr.
|
|
|
|
|
(lookup_partial_symbol): Update.
|
|
|
|
|
|
2017-08-05 18:29:56 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* source.h (rewrite_source_path): Return a unique_xmalloc_ptr.
|
|
|
|
|
* source.c (rewrite_source_path): Return a unique_xmalloc_ptr.
|
|
|
|
|
(find_and_open_source, symtab_to_fullname): Update.
|
|
|
|
|
* psymtab.c (psymtab_to_fullname): Update.
|
|
|
|
|
|
2017-08-04 00:53:22 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* exec.c (exec_file_attach): Update.
|
|
|
|
|
* linux-thread-db.c (try_thread_db_load): Update.
|
|
|
|
|
* guile/scm-safe-call.c (gdbscm_safe_source_script): Update.
|
|
|
|
|
* utils.c (gdb_realpath): Change return type.
|
|
|
|
|
(gdb_realpath_keepfile): Update.
|
|
|
|
|
(gdb_realpath_check_trailer, gdb_realpath_tests): New functions.
|
|
|
|
|
(_initialize_utils): Register the new self test.
|
|
|
|
|
* source.c (openp): Update.
|
|
|
|
|
(find_and_open_source): Update.
|
|
|
|
|
* nto-tdep.c (nto_find_and_open_solib): Update.
|
|
|
|
|
* main.c (set_gdb_data_directory): Update.
|
|
|
|
|
(captured_main_1): Update.
|
|
|
|
|
* dwarf2read.c (dwarf2_get_dwz_file): Update
|
|
|
|
|
(dw2_map_symbol_filenames): Update.
|
|
|
|
|
* auto-load.c (auto_load_safe_path_vec_update): Update.
|
|
|
|
|
(filename_is_in_auto_load_safe_path_vec): Change type of
|
|
|
|
|
"filename_realp".
|
|
|
|
|
(auto_load_objfile_script): Update.
|
|
|
|
|
(file_is_auto_load_safe): Update. Use std::string.
|
|
|
|
|
* utils.h (gdb_realpath): Return a gdb::unique_xmalloc_ptr.
|
|
|
|
|
|
2017-08-04 00:34:56 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (gdb_realpath_keepfile): Return a
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* exec.c (exec_file_attach): Update.
|
|
|
|
|
* utils.h (gdb_realpath_keepfile): Return a
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
|
2017-08-04 00:32:14 +02:00
|
|
|
|
2017-08-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (compile_file_command): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr, std::string.
|
|
|
|
|
* utils.c (gdb_abspath): Change return type.
|
|
|
|
|
* source.c (openp): Update.
|
|
|
|
|
* objfiles.c (allocate_objfile): Update.
|
|
|
|
|
* main.c (set_gdb_data_directory): Update.
|
|
|
|
|
* utils.h (gdb_abspath): Return a gdb::unique_xmalloc_ptr.
|
|
|
|
|
|
2017-08-22 16:32:19 +02:00
|
|
|
|
2017-08-22 Zhouyi Zhou <zhouzhouyi@gmail.com>
|
|
|
|
|
|
|
|
|
|
* cli-cmds.c (list_commands): List actual code around more than
|
|
|
|
|
one location.
|
|
|
|
|
|
2017-08-21 18:35:25 +02:00
|
|
|
|
2017-08-21 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c (fbsd_add_threads): Use array type for `lwps'.
|
|
|
|
|
|
Handle function aliases better (PR gdb/19487, errno printing)
(Ref: https://sourceware.org/ml/gdb/2017-06/msg00048.html)
This patch improves GDB support for function aliases defined with
__attribute__ alias. For example, in the test added by this commit,
there is no reference to "func_alias" in the debug info at all, only
to "func"'s definition:
$ nm ./testsuite/outputs/gdb.base/symbol-alias/symbol-alias | grep " func"
00000000004005ae t func
00000000004005ae T func_alias
$ readelf -w ./testsuite/outputs/gdb.base/symbol-alias/symbol-alias | grep func -B 1 -A 8
<1><db>: Abbrev Number: 5 (DW_TAG_subprogram)
<dc> DW_AT_name : (indirect string, offset: 0x111): func
<e0> DW_AT_decl_file : 1
<e1> DW_AT_decl_line : 27
<e2> DW_AT_prototyped : 1
<e2> DW_AT_type : <0xf8>
<e6> DW_AT_low_pc : 0x4005ae
<ee> DW_AT_high_pc : 0xb
<f6> DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa)
<f8> DW_AT_GNU_all_call_sites: 1
So all GDB knows about "func_alias" is from the minsym (elf symbol):
(gdb) p func_alias
$1 = {<text variable, no debug info>} 0x4005ae <func>
(gdb) ptype func_alias
type = int ()
(gdb) p func
$2 = {struct S *(void)} 0x4005ae <func>
(gdb) ptype func
type = struct S {
int field1;
int field2;
} *(void)
The result is that calling func_alias from the command line produces
incorrect results.
This is similar (though not exactly the same) to the glibc
errno/__errno_location/__GI___errno_location situation. On glibc,
errno is defined like this:
extern int *__errno_location (void);
#define errno (*__errno_location ())
with __GI___errno_location being an internal alias for
__errno_location. On my system's libc (F23), I do see debug info for
__errno_location, in the form of name vs linkage name:
<1><95a5>: Abbrev Number: 18 (DW_TAG_subprogram)
<95a6> DW_AT_external : 1
<95a6> DW_AT_name : (indirect string, offset: 0x2c26): __errno_location
<95aa> DW_AT_decl_file : 1
<95ab> DW_AT_decl_line : 24
<95ac> DW_AT_linkage_name: (indirect string, offset: 0x2c21): __GI___errno_location
<95b0> DW_AT_prototyped : 1
<95b0> DW_AT_type : <0x9206>
<95b4> DW_AT_low_pc : 0x20f40
<95bc> DW_AT_high_pc : 0x11
<95c4> DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa)
<95c6> DW_AT_GNU_all_call_sites: 1
however that doesn't matter in practice, because GDB doesn't record
demangled names anyway, and so we end up with the exact same situation
covered by the testcase.
So the fix is to make the expression parser find a debug symbol for
the same address as the just-found minsym, when a lookup by name
didn't find a debug symbol by name. We now get:
(gdb) p func_alias
$1 = {struct S *(void)} 0x4005ae <func>
(gdb) p __errno_location
$2 = {int *(void)} 0x7ffff6e92830 <__errno_location>
I've made the test exercise variable aliases too, for completeness.
Those already work correctly, because unlike for function aliases, GCC
emits debug information for variable aliases.
Tested on GNU/Linux.
gdb/ChangeLog:
2017-08-21 Pedro Alves <palves@redhat.com>
PR gdb/19487
* c-exp.y (variable production): Handle function aliases.
* minsyms.c (msymbol_is_text): New function.
* minsyms.h (msymbol_is_text): Declare.
* symtab.c (find_function_alias_target): New function.
* symtab.h (find_function_alias_target): Declare.
gdb/testsuite/ChangeLog:
2017-08-21 Pedro Alves <palves@redhat.com>
PR gdb/19487
* gdb.base/symbol-alias.c: New.
* gdb.base/symbol-alias2.c: New.
* gdb.base/symbol-alias.exp: New.
2017-08-21 12:34:32 +02:00
|
|
|
|
2017-08-21 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/19487
|
|
|
|
|
* c-exp.y (variable production): Handle function aliases.
|
|
|
|
|
* minsyms.c (msymbol_is_text): New function.
|
|
|
|
|
* minsyms.h (msymbol_is_text): Declare.
|
|
|
|
|
* symtab.c (find_function_alias_target): New function.
|
|
|
|
|
* symtab.h (find_function_alias_target): Declare.
|
|
|
|
|
|
Fix type casts losing typedefs and reimplement "whatis" typedef stripping
(Ref: https://sourceware.org/ml/gdb/2017-06/msg00020.html)
Assuming int_t is a typedef to int:
typedef int int_t;
gdb currently loses this expression's typedef:
(gdb) p (int_t) 0
$1 = 0
(gdb) whatis $1
type = int
or:
(gdb) whatis (int_t) 0
type = int
or, to get "whatis" out of the way:
(gdb) maint print type (int_t) 0
...
name 'int'
code 0x8 (TYPE_CODE_INT)
...
This prevents a type printer for "int_t" kicking in, with e.g.:
(gdb) p (int_t) 0
From the manual, we can see that that "whatis (int_t) 0" command
invocation should have printed "type = int_t":
If @var{arg} is a variable or an expression, @code{whatis} prints its
literal type as it is used in the source code. If the type was
defined using a @code{typedef}, @code{whatis} will @emph{not} print
the data type underlying the @code{typedef}.
(...)
If @var{arg} is a type name that was defined using @code{typedef},
@code{whatis} @dfn{unrolls} only one level of that @code{typedef}.
That one-level stripping is currently done here, in
gdb/eval.c:evaluate_subexp_standard, handling OP_TYPE:
...
else if (noside == EVAL_AVOID_SIDE_EFFECTS)
{
struct type *type = exp->elts[pc + 1].type;
/* If this is a typedef, then find its immediate target. We
use check_typedef to resolve stubs, but we ignore its
result because we do not want to dig past all
typedefs. */
check_typedef (type);
if (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
type = TYPE_TARGET_TYPE (type);
return allocate_value (type);
}
However, this stripping is reachable in both:
#1 - (gdb) whatis (int_t)0 # ARG is an expression with a cast to
# typedef type.
#2 - (gdb) whatis int_t # ARG is a type name.
while only case #2 should strip the typedef. Removing that code from
evaluate_subexp_standard is part of the fix. Instead, we make the
"whatis" command implementation itself strip one level of typedefs
when the command argument is a type name.
We then run into another problem, also fixed by this commit:
value_cast always drops any typedefs of the destination type.
With all that fixed, "whatis (int_t) 0" now works as expected:
(gdb) whatis int_t
type = int
(gdb) whatis (int_t)0
type = int_t
value_cast has many different exit/convertion paths, for handling many
different kinds of casts/conversions, and most of them had to be
tweaked to construct the value of the right "to" type. The new tests
try to exercise most of it, by trying castin of many different
combinations of types. With:
$ make check TESTS="*/whatis-ptype*.exp */gnu_vector.exp */dfp-test.exp"
... due to combinatorial explosion, the testsuite results for the
tests above alone grow like:
- # of expected passes 246
+ # of expected passes 3811
You'll note that the tests exposed one GCC buglet, filed here:
Missing DW_AT_type in DW_TAG_typedef of "typedef of typedef of void"
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81267
gdb/ChangeLog:
2017-08-21 Pedro Alves <palves@redhat.com>
* eval.c (evaluate_subexp_standard) <OP_TYPE>: Don't dig past
typedefs.
* typeprint.c (whatis_exp): If handling "whatis", and expression
is OP_TYPE, strip one typedef level. Otherwise don't strip
typedefs here.
* valops.c (value_cast): Save "to" type before resolving
stubs/typedefs. Use that type as resulting value's type.
gdb/testsuite/ChangeLog:
2017-08-21 Pedro Alves <palves@redhat.com>
* gdb.base/dfp-test.c
(d32_t, d64_t, d128_t, d32_t2, d64_t2, d128_t2, v_d32_t, v_d64_t)
(v_d128_t, v_d32_t2, v_d64_t2, v_d128_t2): New.
* gdb.base/dfp-test.exp: Add whatis/ptype/cast tests.
* gdb.base/gnu_vector.exp: Add whatis/ptype/cast tests.
* gdb.base/whatis-ptype-typedefs.c: New.
* gdb.base/whatis-ptype-typedefs.exp: New.
* gdb.python/py-prettyprint.c (int_type, int_type2): New typedefs.
(an_int, an_int_type, an_int_type2): New globals.
* gdb.python/py-prettyprint.exp (run_lang_tests): Add tests
involving typedefs and cast expressions.
* gdb.python/py-prettyprint.py (class pp_int_typedef): New.
(lookup_typedefs_function): New.
(typedefs_pretty_printers_dict): New.
(top level): Register lookup_typedefs_function in
gdb.pretty_printers.
2017-08-21 12:34:32 +02:00
|
|
|
|
2017-08-21 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* eval.c (evaluate_subexp_standard) <OP_TYPE>: Don't dig past
|
|
|
|
|
typedefs.
|
|
|
|
|
* typeprint.c (whatis_exp): If handling "whatis", and expression
|
|
|
|
|
is OP_TYPE, strip one typedef level. Otherwise don't strip
|
|
|
|
|
typedefs here.
|
|
|
|
|
* valops.c (value_cast): Save "to" type before resolving
|
|
|
|
|
stubs/typedefs. Use that type as resulting value's type.
|
|
|
|
|
|
Remove save_inferior_ptid
This removes save_inferior_ptid, a cleanup function, in favor of
scoped_restore.
This also fixes a possible (it seems unlikely that it could happen in
practice) memory leak -- save_inferior_ptid should have used
make_cleanup_dtor, because it allocated memory.
I tested this on the buildbot. However, there are two caveats to
this. First, sometimes it seems I misread the results. Second, I
think this patch touches some platforms that can't be tested by the
buildbot. So, extra care seems warranted.
ChangeLog
2017-08-18 Tom Tromey <tom@tromey.com>
Pedro Alves <palves@redhat.com>
* spu-multiarch.c (parse_spufs_run): Use scoped_restore.
* sol-thread.c (sol_thread_resume, sol_thread_wait)
(sol_thread_xfer_partial, rw_common): Use scoped_restore.
* procfs.c (procfs_do_thread_registers): Use scoped_restore.
* proc-service.c (ps_xfer_memory): Use scoped_restore.
* linux-tdep.c (linux_corefile_thread): Remove a cleanup.
(linux_get_siginfo_data): Add "thread" argument. Use
scoped_restore.
* linux-nat.c (linux_child_follow_fork)
(check_stopped_by_watchpoint): Use scoped_restore.
* infrun.c (displaced_step_prepare_throw, write_memory_ptid)
(THREAD_STOPPED_BY, handle_signal_stop): Use scoped_restore.
(restore_inferior_ptid, save_inferior_ptid): Remove.
* btrace.c (btrace_fetch): Use scoped_restore.
* bsd-uthread.c (bsd_uthread_fetch_registers)
(bsd_uthread_store_registers): Use scoped_restore.
* breakpoint.c (reattach_breakpoints, detach_breakpoints): Use
scoped_restore.
* aix-thread.c (aix_thread_resume, aix_thread_wait)
(aix_thread_xfer_partial): Use scoped_restore.
* inferior.h (save_inferior_ptid): Remove.
2017-08-16 07:36:09 +02:00
|
|
|
|
2017-08-18 Tom Tromey <tom@tromey.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* spu-multiarch.c (parse_spufs_run): Use scoped_restore.
|
|
|
|
|
* sol-thread.c (sol_thread_resume, sol_thread_wait)
|
|
|
|
|
(sol_thread_xfer_partial, rw_common): Use scoped_restore.
|
|
|
|
|
* procfs.c (procfs_do_thread_registers): Use scoped_restore.
|
|
|
|
|
* proc-service.c (ps_xfer_memory): Use scoped_restore.
|
|
|
|
|
* linux-tdep.c (linux_corefile_thread): Remove a cleanup.
|
|
|
|
|
(linux_get_siginfo_data): Add "thread" argument. Use
|
|
|
|
|
scoped_restore.
|
|
|
|
|
* linux-nat.c (linux_child_follow_fork)
|
|
|
|
|
(check_stopped_by_watchpoint): Use scoped_restore.
|
|
|
|
|
* infrun.c (displaced_step_prepare_throw, write_memory_ptid)
|
|
|
|
|
(THREAD_STOPPED_BY, handle_signal_stop): Use scoped_restore.
|
|
|
|
|
(restore_inferior_ptid, save_inferior_ptid): Remove.
|
|
|
|
|
* btrace.c (btrace_fetch): Use scoped_restore.
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_fetch_registers)
|
|
|
|
|
(bsd_uthread_store_registers): Use scoped_restore.
|
|
|
|
|
* breakpoint.c (reattach_breakpoints, detach_breakpoints): Use
|
|
|
|
|
scoped_restore.
|
|
|
|
|
* aix-thread.c (aix_thread_resume, aix_thread_wait)
|
|
|
|
|
(aix_thread_xfer_partial): Use scoped_restore.
|
|
|
|
|
* inferior.h (save_inferior_ptid): Remove.
|
|
|
|
|
|
2017-08-18 10:30:12 +02:00
|
|
|
|
2017-08-18 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR tdep/21818
|
|
|
|
|
* arm-tdep.c (gdb_print_insn_arm): Mark
|
|
|
|
|
USER_SPECIFIED_MACHINE_TYPE if exec_bfd isn't NULL.
|
|
|
|
|
|
2017-08-18 10:20:43 +02:00
|
|
|
|
2017-08-18 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention GDBserver's new option "--selftest".
|
|
|
|
|
* Makefile.in (SFILES): Remove selftest.c, add common/selftest.c.
|
|
|
|
|
* selftest.c: Move it to common/selftest.c.
|
|
|
|
|
* selftest.h: Move it to common/selftest.h.
|
|
|
|
|
* selftest-arch.c (reset): New function.
|
|
|
|
|
(tests_with_arch): Call reset.
|
|
|
|
|
|
2017-08-18 10:20:43 +02:00
|
|
|
|
2017-08-18 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* selftest.c (run_tests): Don't call QUIT. Call debug_printf
|
|
|
|
|
instead of exception_fprintf and printf_filtered.
|
|
|
|
|
|
2017-08-18 10:20:43 +02:00
|
|
|
|
2017-08-18 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* selftest.c (register_self_test): Rename it to
|
|
|
|
|
selftests::register_test.
|
|
|
|
|
(run_self_tests): selftest::run_tests.
|
|
|
|
|
* selftest.h: Update declarations.
|
|
|
|
|
* selftest-arch.c (register_self_test_foreach_arch): Rename it to
|
|
|
|
|
selftests::register_test_foreach_arch.
|
|
|
|
|
* selftest-arch.h: Update declaration.
|
|
|
|
|
* aarch64-tdep.c: Update.
|
|
|
|
|
* arm-tdep.c: Likewise.
|
|
|
|
|
* disasm-selftests.c: Likewise.
|
|
|
|
|
* dwarf2loc.c: Likewise.
|
|
|
|
|
* dwarf2-frame.c: Likewise.
|
|
|
|
|
* findvar.c: Likewise.
|
|
|
|
|
* gdbarch-selftests.c: Likewise.
|
|
|
|
|
* maint.c (maintenance_selftest): Likewise.
|
|
|
|
|
* regcache.c: Likewise.
|
|
|
|
|
* rust-exp.y: Likewise.
|
|
|
|
|
* selftest-arch.c: Likewise.
|
|
|
|
|
* unittests/environ-selftests.c: Likewise.
|
|
|
|
|
* unittests/function-view-selftests.c: Likewise.
|
|
|
|
|
* unittests/offset-type-selftests.c: Likewise.
|
|
|
|
|
* unittests/optional-selftests.c: Likewise.
|
|
|
|
|
* unittests/scoped_restore-selftests.c: Likewise.
|
|
|
|
|
* utils-selftests.c: Likewise.
|
|
|
|
|
|
Plug source_command leak
The heap-allocated 'old_source_verbose' local was accidentally left
behind by commit 2ec845e75876 ("More uses of scoped_restore").
Valgrind caught it, like:
==20123== 8 bytes in 1 blocks are definitely lost in loss record 4,609 of 13,785
==20123== at 0x4C2A988: calloc (vg_replace_malloc.c:711)
==20123== by 0x60A2F8: xcalloc (common-utils.c:84)
==20123== by 0x4CDBE5: build_command_line(command_control_type, char const*) (cli-script.c:159)
==20123== by 0x4CDC32: get_command_line(command_control_type, char const*) (cli-script.c:172)
==20123== by 0x5230F1: python_command(char*, int) (python.c:421)
==20123== by 0x4C61AD: do_cfunc(cmd_list_element*, char*, int) (cli-decode.c:106)
==20123== by 0x4C911F: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1902)
==20123== by 0x7CA79E: execute_command(char*, int) (top.c:650)
==20123== by 0x695A0C: command_handler(char*) (event-top.c:590)
==20123== by 0x7CA33F: read_command_file(_IO_FILE*) (top.c:461)
==20123== by 0x4D0C3A: script_from_file(_IO_FILE*, char const*) (cli-script.c:1584)
==20123== by 0x4C2727: source_script_from_stream(_IO_FILE*, char const*, char const*) (cli-cmds.c:589)
gdb/ChangeLog:
2017-08-17 Pedro Alves <palves@redhat.com>
* cli/cli-cmds.c (source_command): Delete 'old_source_verbose'
local.
2017-08-18 00:45:52 +02:00
|
|
|
|
2017-08-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (source_command): Delete 'old_source_verbose'
|
|
|
|
|
local.
|
|
|
|
|
|
Plug line_header leaks
This plugs a couple leaks introduced by commit fff8551cf549
("dwarf2read.c: Some C++fycation, use std::vector, std::unique_ptr").
The first problem is that nothing owns the temporary line_header that
handle_DW_AT_stmt_list creates in some cases. Before the commit
mentioned above, the temporary line_header case used to have:
make_cleanup (free_cu_line_header, cu);
and that cleanup was assumed to be run by process_die, after
handle_DW_AT_stmt_list returns and before child DIEs were processed.
The second problem is found in setup_type_unit_groups: that also used
to have a similar make_cleanup call, and ended up with a similar leak
after the commit mentioned above.
Fix both cases by recording in dwarf2_cu whether a line header is
owned by the cu/die, and have process_die explicitly free the
line_header if so, making use of a new RAII object that also replaces
the reset_die_in_process cleanup, while at it.
Thanks to Philippe Waroquiers for noticing the leak and pointing in
the right direction.
gdb/ChangeLog:
2017-08-17 Pedro Alves <palves@redhat.com>
* dwarf2read.c (struct dwarf2_cu) <line_header_die_owner>: New
field.
(reset_die_in_process): Delete, replaced by ...
(process_die_scope): ... this new class. Make it responsible for
freeing cu->line_header too.
(process_die): Use process_die_scope.
(handle_DW_AT_stmt_list): Record the line header's owner CU/DIE in
cu->line_header_die_owner. Don't release the line header if it's
owned by the CU.
(setup_type_unit_groups): Make the CU/DIE own the line header.
Don't release the line header here.
2017-08-17 23:53:53 +02:00
|
|
|
|
2017-08-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct dwarf2_cu) <line_header_die_owner>: New
|
|
|
|
|
field.
|
|
|
|
|
(reset_die_in_process): Delete, replaced by ...
|
|
|
|
|
(process_die_scope): ... this new class. Make it responsible for
|
|
|
|
|
freeing cu->line_header too.
|
|
|
|
|
(process_die): Use process_die_scope.
|
|
|
|
|
(handle_DW_AT_stmt_list): Record the line header's owner CU/DIE in
|
|
|
|
|
cu->line_header_die_owner. Don't release the line header if it's
|
|
|
|
|
owned by the CU.
|
|
|
|
|
(setup_type_unit_groups): Make the CU/DIE own the line header.
|
|
|
|
|
Don't release the line header here.
|
|
|
|
|
|
2017-08-17 12:53:53 +02:00
|
|
|
|
2017-08-17 Alex Lindsay <alexlindsay239@gmail.com> (tiny change)
|
|
|
|
|
|
|
|
|
|
* elfread.c (elf_read_minimal_symbols): xfree synthsyms.
|
|
|
|
|
|
2017-08-17 07:44:37 +02:00
|
|
|
|
2017-08-17 Ruslan Kabatsayev <b7.10110111@gmail.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention new shortcuts for nexti and stepi in TUI
|
|
|
|
|
Single-Key mode
|
|
|
|
|
|
2017-08-16 20:44:29 +02:00
|
|
|
|
2017-08-16 Ruslan Kabatsayev <b7.10110111@gmail.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui.c (tui_commands): Add "nexti" and "stepi" to the Single-Key
|
|
|
|
|
mode command list.
|
|
|
|
|
|
2017-08-15 23:32:28 +02:00
|
|
|
|
2017-08-15 Stafford Horne <shorne@gmail.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Stafford Horne.
|
|
|
|
|
|
2017-08-15 23:12:45 +02:00
|
|
|
|
2017-08-15 Stafford Horne <shorne@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_init_reggroups): Use xstrdup for cpname.
|
|
|
|
|
|
2017-08-15 19:49:18 +02:00
|
|
|
|
2017-08-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21954
|
|
|
|
|
* infcmd.c (unset_environment_command): Use the 'clear' method on
|
|
|
|
|
the environment instead of resetting it.
|
|
|
|
|
|
2017-08-15 17:04:23 +02:00
|
|
|
|
2017-08-15 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c (fbsd_convert_siginfo): Fix compile on big-endian
|
|
|
|
|
platforms.
|
|
|
|
|
|
2017-07-11 14:44:36 +02:00
|
|
|
|
2017-08-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* valprint.c (print_octal_chars): Use HOST_CHAR_BIT.
|
|
|
|
|
(print_binary_chars): Likewise.
|
|
|
|
|
(BITS_IN_BYTES): Remove.
|
|
|
|
|
|
2017-07-11 14:40:40 +02:00
|
|
|
|
2017-08-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21675
|
|
|
|
|
* valprint.c (LOW_ZERO): Change value to 034.
|
|
|
|
|
(print_octal_chars): Add static_asserts for octal constants.
|
|
|
|
|
* printcmd.c (print_scalar_formatted): Add 'd' case.
|
|
|
|
|
|
2017-08-04 01:07:06 +02:00
|
|
|
|
2017-08-11 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.c (add_symbol_file_command): Use std::vector.
|
|
|
|
|
|
2017-08-11 18:14:16 +02:00
|
|
|
|
2017-08-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (handle_gnu_v3_exceptions): Use std::move.
|
|
|
|
|
* break-catch-syscall.c (create_syscall_event_catchpoint): Use
|
|
|
|
|
std::move.
|
|
|
|
|
* break-catch-sig.c (create_signal_catchpoint): Use std::move.
|
|
|
|
|
|
More gdb/skip.c C++ification
- Make skiplist_entry a class with private data members.
- Move all construction logic to the ctor.
- Make skip_file_p etc be methods of skiplist_entry.
- Use std::list for the skip entries chain. Make the list own its
elements.
- Get rid of the ALL_SKIPLIST_ENTRIES/ALL_SKIPLIST_ENTRIES_SAFE
macros, use range-for / iterators instead.
- function_name_is_marked_for_skip 'function_sal' argument must be
non-NULL, so make it a reference instead.
All skiplist_entry invariants are now controlled by skiplist_entry
methods/internals. Some gdb_asserts disappear for being redundant.
gdb/ChangeLog:
2017-08-11 Pedro Alves <palves@redhat.com>
* infrun.c (process_event_stop_test): Adjust
function_name_is_marked_for_skip call.
* skip.c: Include <list>.
(skiplist_entry): Make it a class with private fields, and
getters/setters.
(skiplist_entry_chain): Delete.
(skiplist_entries): New.
(skiplist_entry_count): Delete.
(highest_skiplist_entry_num): New.
(ALL_SKIPLIST_ENTRIES, ALL_SKIPLIST_ENTRIES_SAFE): Delete.
(add_skiplist_entry): Delete.
(skiplist_entry::skiplist_entry): New.
(skiplist_entry::add_entry): New.
(skip_file_command, skip_function): Adjust.
(compile_skip_regexp): Delete.
(skip_command): Don't compile regexp here. Adjust to use
skiplist_entry::add_entry.
(skip_info): Adjust to use range-for and getters.
(skip_enable_command, skip_disable_command): Adjust to use
range-for and setters.
(skip_delete_command): Adjust to use std::list.
(add_skiplist_entry): Delete.
(skip_file_p): Delete, refactored as ...
(skiplist_entry::do_skip_file_p): ... this new method.
(skip_gfile_p): Delete, refactored as ...
(skiplist_entry::do_gskip_file_p): ... this new method.
(skip_function_p, skip_rfunction_p): Delete, refactored as ...
(skiplist_entry::skip_function_p): ... this new method.
(function_name_is_marked_for_skip): Now returns bool, and takes
the function sal by const reference. Adjust to use range-for and
skiplist_entry methods.
(_initialize_step_skip): Remove references to
skiplist_entry_chain, skiplist_entry_count.
* skip.h (function_name_is_marked_for_skip): Now returns bool, and
takes the function sal by const reference.
2017-08-11 13:11:28 +02:00
|
|
|
|
2017-08-11 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (process_event_stop_test): Adjust
|
|
|
|
|
function_name_is_marked_for_skip call.
|
|
|
|
|
* skip.c: Include <list>.
|
|
|
|
|
(skiplist_entry): Make it a class with private fields, and
|
|
|
|
|
getters/setters.
|
|
|
|
|
(skiplist_entry_chain): Delete.
|
|
|
|
|
(skiplist_entries): New.
|
|
|
|
|
(skiplist_entry_count): Delete.
|
|
|
|
|
(highest_skiplist_entry_num): New.
|
|
|
|
|
(ALL_SKIPLIST_ENTRIES, ALL_SKIPLIST_ENTRIES_SAFE): Delete.
|
|
|
|
|
(add_skiplist_entry): Delete.
|
|
|
|
|
(skiplist_entry::skiplist_entry): New.
|
|
|
|
|
(skiplist_entry::add_entry): New.
|
|
|
|
|
(skip_file_command, skip_function): Adjust.
|
|
|
|
|
(compile_skip_regexp): Delete.
|
|
|
|
|
(skip_command): Don't compile regexp here. Adjust to use
|
|
|
|
|
skiplist_entry::add_entry.
|
|
|
|
|
(skip_info): Adjust to use range-for and getters.
|
|
|
|
|
(skip_enable_command, skip_disable_command): Adjust to use
|
|
|
|
|
range-for and setters.
|
|
|
|
|
(skip_delete_command): Adjust to use std::list.
|
|
|
|
|
(add_skiplist_entry): Delete.
|
|
|
|
|
(skip_file_p): Delete, refactored as ...
|
|
|
|
|
(skiplist_entry::do_skip_file_p): ... this new method.
|
|
|
|
|
(skip_gfile_p): Delete, refactored as ...
|
|
|
|
|
(skiplist_entry::do_gskip_file_p): ... this new method.
|
|
|
|
|
(skip_function_p, skip_rfunction_p): Delete, refactored as ...
|
|
|
|
|
(skiplist_entry::skip_function_p): ... this new method.
|
|
|
|
|
(function_name_is_marked_for_skip): Now returns bool, and takes
|
|
|
|
|
the function sal by const reference. Adjust to use range-for and
|
|
|
|
|
skiplist_entry methods.
|
|
|
|
|
(_initialize_step_skip): Remove references to
|
|
|
|
|
skiplist_entry_chain, skiplist_entry_count.
|
|
|
|
|
* skip.h (function_name_is_marked_for_skip): Now returns bool, and
|
|
|
|
|
takes the function sal by const reference.
|
|
|
|
|
|
2017-08-11 10:30:02 +02:00
|
|
|
|
2017-08-11 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2-frame.c (clear_pointer_cleanup): Remove.
|
|
|
|
|
(dwarf2_frame_cache): Remove reset_cache_cleanup.
|
|
|
|
|
(dwarf2_frame_cache):
|
|
|
|
|
* frame-unwind.c (frame_unwind_try_unwinder): Catch
|
|
|
|
|
RETURN_MASK_ALL and set *this_case to NULL.
|
|
|
|
|
* frame-unwind.h: Update comments.
|
|
|
|
|
|
2017-08-11 10:30:02 +02:00
|
|
|
|
2017-08-11 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Remove.
|
|
|
|
|
(dwarf2_frame_state_copy_regs): Remove.
|
|
|
|
|
(dwarf2_frame_state_free_regs): Remove.
|
|
|
|
|
(dwarf2_frame_state::~dwarf2_frame_state): Remove.
|
|
|
|
|
(dwarf2_restore_rule): Call method .alloc_regs instead of
|
|
|
|
|
dwarf2_frame_state_alloc_regs.
|
|
|
|
|
(execute_cfa_program): Likewise. Call dwarf2_frame_state_reg_info
|
|
|
|
|
constructor. Call std::move.
|
|
|
|
|
(dwarf2_fetch_cfa_info): Don't call dwarf2_frame_state_copy_regs.
|
|
|
|
|
(dwarf2_frame_cache): Likewise.
|
|
|
|
|
|
|
|
|
|
[GDB_SELF_TEST]: Include selftest.h and
|
|
|
|
|
selftest-arch.h.
|
|
|
|
|
[GDB_SELF_TEST] (execute_cfa_program_test): New function.
|
|
|
|
|
(_initialize_dwarf2_frame) [GDB_SELF_TEST]: Register
|
|
|
|
|
execute_cfa_program_test.
|
|
|
|
|
|
|
|
|
|
* dwarf2-frame.h (dwarf2_frame_state_reg_info): Add ctor, dtor,
|
|
|
|
|
copy ctor, assignment operator, move assignment.
|
|
|
|
|
<alloc_regs>: New method.
|
|
|
|
|
<swap>: New method.
|
|
|
|
|
(struct dwarf2_frame_state): Delete dtor.
|
|
|
|
|
(dwarf2_frame_state_alloc_regs): Remove declaration.
|
|
|
|
|
* sparc-tdep.c (sparc_execute_dwarf_cfa_vendor_op): Don't call
|
|
|
|
|
dwarf2_frame_state_alloc_regs, use .alloc_regs instead.
|
|
|
|
|
|
2017-08-11 10:30:02 +02:00
|
|
|
|
2017-08-11 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2-frame.c (dwarf2_frame_state_free): Remove.
|
|
|
|
|
(dwarf2_frame_state::dwarf2_frame_state): New.
|
|
|
|
|
(dwarf2_frame_state::~dwarf2_frame_state): New.
|
|
|
|
|
(dwarf2_fetch_cfa_info): Update.
|
|
|
|
|
(dwarf2_frame_cache): Remove old_chain. Change 'fs' to an object
|
|
|
|
|
rather than a pointer. Update code.
|
|
|
|
|
* dwarf2-frame.h (struct dwarf2_frame_state): Declare ctor and
|
|
|
|
|
dtor.
|
|
|
|
|
<data_align, code_align, retaddr_column>: Change them to const.
|
|
|
|
|
<armcc_cfa_offsets_sf, armcc_cfa_offsets_reversed>: Change them
|
|
|
|
|
to bool.
|
|
|
|
|
|
2017-08-11 10:30:02 +02:00
|
|
|
|
2017-08-11 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2-frame.h (struct dwarf2_frame_state_reg) <exp_len>: Remove.
|
|
|
|
|
<loc.exp>: New field.
|
|
|
|
|
* dwarf2-frame.c (execute_cfa_program): Update.
|
|
|
|
|
(dwarf2_frame_prev_register): Update.
|
|
|
|
|
|
2017-08-10 15:18:02 +02:00
|
|
|
|
2017-08-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_unique_ptr.h (xfree_deleter<T[]>): Define.
|
|
|
|
|
|
2017-08-10 00:24:46 +02:00
|
|
|
|
2017-08-09 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c (struct fbsd_fork_info): Remove.
|
|
|
|
|
(fbsd_pending_children): Use std::list.
|
|
|
|
|
(fbsd_remember_child): Likewise.
|
|
|
|
|
(fbsd_is_child_pending): Likewise.
|
|
|
|
|
(fbsd_pending_vfork_done): Use std::forward_list.
|
|
|
|
|
(fbsd_add_vfork_done): Likewise.
|
|
|
|
|
(fbsd_is_vfork_done_pending): Likewise.
|
|
|
|
|
(fbsd_next_vfork_done): Likewise.
|
|
|
|
|
|
2017-08-10 00:24:46 +02:00
|
|
|
|
2017-08-09 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c [HAVE_KINFO_GETVMMAP] (struct free_deleter): New.
|
|
|
|
|
(fbsd_find_memory_regions): Use free_deleter with std::unique_ptr.
|
|
|
|
|
[!HAVE_KINFO_GETVMMAP] (fbsd_find_memory_regions): Use std::string
|
|
|
|
|
for `mapfilename'.
|
|
|
|
|
(fbsd_xfer_partial): Use gdb::byte_vector.
|
2017-08-21 18:33:13 +02:00
|
|
|
|
(fbsd_add_threads): Use gdb::unique_xmalloc_ptr.
|
2017-08-10 00:24:46 +02:00
|
|
|
|
|
2017-08-10 00:24:46 +02:00
|
|
|
|
2017-08-09 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c: [!HAVE_KINFO_GETVMMAP]: Include <sys/user.h> and
|
|
|
|
|
"filestuff.h".
|
|
|
|
|
(fbsd_find_memory_regions): Fix `mapfile' initialization.
|
|
|
|
|
|
C++-ify skip.c
I happened to notice that skiplist_entry, in skip.c, contains a
gdb::optional<compiled_regex> -- but that this object's destructor is
never run. This can result in a memory leak.
This patch fixes the bug by applying a bit more C++: changing this
code to use new and delete, and std::unique_ptr; and removing cleanups
in the process.
Built and regression tested on x86-64 Fedora 25.
ChangeLog
2017-08-09 Tom Tromey <tom@tromey.com>
* skip.c (skiplist_entry): New constructor.
(skiplist_entry::enabled, skiplist_entry::function_is_regexp)
(skiplist_entry::file_is_glob): Now bool.
(skiplist_entry::file, skiplist_entry::function): Now
std::string.
(make_skip_entry): Return a unique_ptr. Use new.
(free_skiplist_entry, free_skiplist_entry_cleanup)
(make_free_skiplist_entry_cleanup): Remove.
(skip_command, skip_disable_command, add_skiplist_entry)
(skip_form_bytes, compile_skip_regexp, skip_command, skip_info)
(skip_file_p, skip_gfile_p, skip_function_p, skip_rfunction_p)
(function_name_is_marked_for_skip): Update.
(skip_delete_command): Update. Use delete.
2017-08-06 00:40:56 +02:00
|
|
|
|
2017-08-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* skip.c (skiplist_entry): New constructor.
|
|
|
|
|
(skiplist_entry::enabled, skiplist_entry::function_is_regexp)
|
|
|
|
|
(skiplist_entry::file_is_glob): Now bool.
|
|
|
|
|
(skiplist_entry::file, skiplist_entry::function): Now
|
|
|
|
|
std::string.
|
|
|
|
|
(make_skip_entry): Return a unique_ptr. Use new.
|
|
|
|
|
(free_skiplist_entry, free_skiplist_entry_cleanup)
|
|
|
|
|
(make_free_skiplist_entry_cleanup): Remove.
|
|
|
|
|
(skip_command, skip_disable_command, add_skiplist_entry)
|
|
|
|
|
(skip_form_bytes, compile_skip_regexp, skip_command, skip_info)
|
|
|
|
|
(skip_file_p, skip_gfile_p, skip_function_p, skip_rfunction_p)
|
|
|
|
|
(function_name_is_marked_for_skip): Update.
|
|
|
|
|
(skip_delete_command): Update. Use delete.
|
|
|
|
|
|
2017-08-09 18:43:00 +02:00
|
|
|
|
2017-08-09 Jiong Wang <jiong.wang@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-tdep.c: Include "auxv.h" and "elf/common.h".
|
|
|
|
|
(aarch64_linux_core_read_description): New function.
|
|
|
|
|
(aarch64_linux_init_abi): Register gdbarch_core_read_description.
|
|
|
|
|
|
2017-08-09 16:04:32 +02:00
|
|
|
|
2017-08-09 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (cp_comp_to_string): Return a
|
|
|
|
|
gdb::unique_xmalloc_ptr<char>.
|
|
|
|
|
* cp-support.c (replace_typedefs_qualified_name)
|
|
|
|
|
(replace_typedefs): Adjust to use gdb::unique_xmalloc_ptr<char>.
|
|
|
|
|
(cp_canonicalize_string_full): Use op= instead of explicit
|
|
|
|
|
convertion.
|
|
|
|
|
(cp_class_name_from_physname, method_name_from_physname)
|
|
|
|
|
(cp_func_name, cp_remove_params): Adjust to use
|
|
|
|
|
gdb::unique_xmalloc_ptr<char>.
|
|
|
|
|
* cp-support.h (cp_comp_to_string): Return a
|
|
|
|
|
gdb::unique_xmalloc_ptr<char>.
|
|
|
|
|
* python/py-type.c (typy_lookup_type): Adjust to use
|
|
|
|
|
gdb::unique_xmalloc_ptr<char>.
|
|
|
|
|
|
2017-08-09 14:01:55 +02:00
|
|
|
|
2017-08-09 H.J. Lu <hongjiu.lu@intel.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_string_attr): Fix a typo.
|
|
|
|
|
|
Fix memory leak in cp-support.c
The return value of cp_comp_to_string was never freed, creating a
sizable memory leak detectable with valgrind.
==21225== 8 bytes in 1 blocks are definitely lost in loss record 4,599 of 10,949^M
==21225== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)^M
==21225== by 0x4C2FDEF: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)^M
==21225== by 0x76CB31: d_growable_string_resize (cp-demangle.c:3963)^M
==21225== by 0x76CB31: d_growable_string_init (cp-demangle.c:3942)^M
==21225== by 0x76CB31: cplus_demangle_print (cp-demangle.c:4308)^M
==21225== by 0x4C9535: cp_comp_to_string(demangle_component*, int) (cp-name-parser.y:1972)^M
==21225== by 0x53E1D4: cp_canonicalize_string_full[abi:cxx11](char const*, char const* (*)(type*, void*), void*) (cp-support.c:530)^M
==21225== by 0x53E360: cp_canonicalize_string_no_typedefs[abi:cxx11](char const*) (cp-support.c:548)^M
==21225== by 0x5D51D2: find_linespec_symbols(linespec_state*, VEC_symtab_ptr*, char const*, VEC_symbolp**, VEC_bound_minimal_symbol_d**) (linespec.c:4030)^M
==21225== by 0x5D6CF6: linespec_parse_basic (linespec.c:1907)
==21279== 32 bytes in 1 blocks are definitely lost in loss record 6,066 of 10,947^M
==21279== at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)^M
==21279== by 0x4C2FDEF: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)^M
==21279== by 0x76CB31: d_growable_string_resize (cp-demangle.c:3963)^M
==21279== by 0x76CB31: d_growable_string_init (cp-demangle.c:3942)^M
==21279== by 0x76CB31: cplus_demangle_print (cp-demangle.c:4308)^M
==21279== by 0x4C9535: cp_comp_to_string(demangle_component*, int) (cp-name-parser.y:1972)^M
==21279== by 0x53EF14: cp_canonicalize_string[abi:cxx11](char const*) (cp-support.c:569)^M
==21279== by 0x561B75: dwarf2_canonicalize_name(char const*, dwarf2_cu*, obstack*) [clone .isra.210] (dwarf2read.c:20159)
This patch fixes the leak. It is a regression by 2f408ecb.
gdb:
2017-08-09 Alex Lindsay <alexlindsay239@gmail.com>
Yao Qi <yao.qi@linaro.org>
* cp-support.c (cp_canonicalize_string_full): Use
gdb::unique_xmalloc_ptr<char>.
(cp_canonicalize_string): Likewise.
2017-08-09 13:39:16 +02:00
|
|
|
|
2017-08-09 Alex Lindsay <alexlindsay239@gmail.com>
|
|
|
|
|
Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* cp-support.c (cp_canonicalize_string_full): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr<char>.
|
|
|
|
|
(cp_canonicalize_string): Likewise.
|
|
|
|
|
|
Clean up x86 non-linux GDBserver target descriptions
In GDBserver, only tdesc_i386 and tdesc_amd64 are used. There is no point
of generating these *.dat files (which are used to generate *.c files during
GDBserver build.).
gdb:
2017-08-09 Yao Qi <yao.qi@linaro.org>
* features/Makefile (WHICH): Remove i386/ non-linux stuff.
* regformats/i386/amd64-avx-avx512.dat: Remove.
* regformats/i386/amd64-avx-mpx-avx512-pku.dat: Remove.
* regformats/i386/amd64-avx-mpx.dat:Remove.
* regformats/i386/amd64-avx.dat: Remove.
* regformats/i386/amd64-mpx.dat: Remove.
* regformats/i386/i386-avx-avx512.dat: Remove.
* regformats/i386/i386-avx-mpx-avx512-pku.dat: Remove.
* regformats/i386/i386-avx-mpx.dat: Remove.
* regformats/i386/i386-mmx.dat: Remove.
* regformats/i386/i386-mpx.dat: Remove.
gdb/gdbserver:
2017-08-09 Yao Qi <yao.qi@linaro.org>
* configure.srv (srv_i386_regobj): Remove i386-avx.o,
i386-avx-avx512.o, i386-avx-mpx-avx512-pku.o, i386-mpx.o,
i386-avx-mpx.o and i386-mmx.o.
(srv_amd64_regobj): Remove amd64-avx.o, amd64-avx-avx512.o,
amd64-avx-mpx-avx512-pku.o, amd64-mpx.o and amd64-avx-mpx.o.
(srv_i386_xmlfiles): Remove i386/i386-avx.xml,
i386/i386-avx-avx512.xml, i386/i386-avx-mpx-avx512-pku.xml,
i386/i386-mpx.xml, i386/i386-avx-mpx.xml and i386/i386-mmx.xml.
(srv_amd64_xmlfile):i386/amd64-avx.xml, i386/amd64-avx-avx512.xml,
i386/amd64-avx-mpx-avx512-pku.xml, i386/amd64-mpx.xml,
i386/amd64-avx-mpx.xml.
2017-08-09 13:27:24 +02:00
|
|
|
|
2017-08-09 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/Makefile (WHICH): Remove i386/ non-linux stuff.
|
|
|
|
|
* regformats/i386/amd64-avx-avx512.dat: Remove.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx-avx512-pku.dat: Remove.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx.dat:Remove.
|
|
|
|
|
* regformats/i386/amd64-avx.dat: Remove.
|
|
|
|
|
* regformats/i386/amd64-mpx.dat: Remove.
|
|
|
|
|
* regformats/i386/i386-avx-avx512.dat: Remove.
|
|
|
|
|
* regformats/i386/i386-avx-mpx-avx512-pku.dat: Remove.
|
|
|
|
|
* regformats/i386/i386-avx-mpx.dat: Remove.
|
|
|
|
|
* regformats/i386/i386-mmx.dat: Remove.
|
|
|
|
|
* regformats/i386/i386-mpx.dat: Remove.
|
|
|
|
|
|
2017-08-09 13:27:23 +02:00
|
|
|
|
2017-08-09 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.h (tdesc_x32): Remove the declaration.
|
|
|
|
|
* amd64-tdep.c: Don't include features/i386/x32*.c.
|
|
|
|
|
(_initialize_amd64_tdep): Don't call initialize_tdesc_x32*
|
|
|
|
|
functions.
|
|
|
|
|
* features/Makefile (WHICH): Remove i386/x32, i386/x32-avx,
|
|
|
|
|
and i386/x32-avx-avx512.
|
|
|
|
|
(XMLTOC): Remove i386/x32-avx.xml, i386/x32-avx-avx512.xml,
|
|
|
|
|
and i386/x32.xml.
|
|
|
|
|
* features/i386/x32-avx-avx512.c: Removed.
|
|
|
|
|
* features/i386/x32-avx-avx512.xml: Removed.
|
|
|
|
|
* features/i386/x32-avx.c: Removed.
|
|
|
|
|
* features/i386/x32-avx.xml: Removed.
|
|
|
|
|
* features/i386/x32.c: Removed.
|
|
|
|
|
* features/i386/x32.xml: Removed.
|
|
|
|
|
* regformats/i386/x32-avx-avx512.dat: Removed.
|
|
|
|
|
* regformats/i386/x32-avx.dat: Removed.
|
|
|
|
|
* regformats/i386/x32.dat: Removed.
|
|
|
|
|
|
2017-08-07 18:02:04 +02:00
|
|
|
|
2017-08-07 Maciej W. Rozycki <macro@imgtec.com>
|
|
|
|
|
|
|
|
|
|
PR breakpoints/21886
|
|
|
|
|
* mem-break.c (default_memory_insert_breakpoint): Use
|
|
|
|
|
`->placed_address' rather than `->reqstd_address' for the
|
|
|
|
|
breakpoint location.
|
|
|
|
|
|
GDB/opcodes: Remove arch/mach/endian disassembler assertions
Fix `set architecture' and `set endian' command disassembly regressions
from commit 39503f82427e ("Delegate opcodes to select disassembler in
GDB"), and commit 003ca0fd2286 ("Refactor disassembler selection"), as
well as a MIPS compressed ISA disassembly target regression from commit
6394c606997f ("Don't use print_insn_XXX in GDB"), which caused assertion
failures to trigger.
For example with the `mips-linux-gnu' target we get:
$ cat main.c
int
main (void)
{
return 0;
}
$ gcc -mips32r2 -O2 main.c -o main
$ gcc -mips16 -mips32r2 -O2 main.c -o main16
$ gdb
GNU gdb (GDB) 8.0.50.20170731-git
[...]
(gdb) file main
Reading symbols from main...done.
(gdb) show architecture
The target architecture is set automatically (currently mips:isa32r2)
(gdb) show endian
The target endianness is set automatically (currently big endian)
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>: jr ra
0x00400504 <+4>: move v0,zero
End of assembler dump.
(gdb) set architecture mips:isa64r2
The target architecture is assumed to be mips:isa64r2
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>:
.../gdb/arch-utils.c:979: internal-error: int default_print_insn(bfd_vma, disassemble_info*): Assertion `info->mach == bfd_get_mach (exec_bfd)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n
[...]
Command aborted.
(gdb) set architecture auto
The target architecture is set automatically (currently mips:isa32r2)
(gdb) set endian little
The target is assumed to be little endian
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>:
.../gdb/arch-utils.c:978: internal-error: int default_print_insn(bfd_vma, disassemble_info*): Assertion `info->endian == (bfd_big_endian (exec_bfd) ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n
[...]
Command aborted.
(gdb) set endian auto
The target endianness is set automatically (currently big endian)
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>:
.../gdb/arch-utils.c:976: internal-error: int default_print_insn(bfd_vma, disassemble_info*): Assertion `info->arch == bfd_get_arch (exec_bfd)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n
[...]
Command aborted.
(gdb) set architecture auto
The target architecture is set automatically (currently mips:isa32r2)
(gdb) file main16
Load new symbol table from "main16"? (y or n) y
Reading symbols from main16...done.
(gdb) disassemble main
Dump of assembler code for function main:
0x00400501 <+0>:
.../gdb/arch-utils.c:979: internal-error: int default_print_insn(bfd_vma, disassemble_info*): Assertion `info->mach == bfd_get_mach (exec_bfd)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n
Command aborted.
(gdb)
Remove the assertions then, restoring previous semantics:
(gdb) file main
Reading symbols from main...done.
(gdb) set architecture mips:isa64r2
The target architecture is assumed to be mips:isa64r2
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>: jr ra
0x00400504 <+4>: move v0,zero
End of assembler dump.
(gdb) set endian little
The target is assumed to be little endian
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>: j 0x3800c
0x00400504 <+4>: addiu s0,t0,0
End of assembler dump.
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) disassemble main
Dump of assembler code for function main:
0x00400500 <+0>: add %eax,%esp
0x00400502 <+2>: add %cl,(%eax)
0x00400504 <+4>: add %al,(%eax)
0x00400506 <+6>: adc %ah,0x0
End of assembler dump.
(gdb) set architecture auto
The target architecture is set automatically (currently mips:isa32r2)
(gdb) set endian auto
The target endianness is set automatically (currently big endian)
(gdb) file main16
Load new symbol table from "main16"? (y or n) y
Reading symbols from main16...done.
(gdb) disassemble main
Dump of assembler code for function main:
0x00400501 <+0>: jr ra
0x00400503 <+2>: li v0,0
End of assembler dump.
(gdb)
gdb/
* arch-utils.c (default_print_insn): Remove arch/mach/endian
assertions.
opcodes/
* disassemble.c (disassembler): Remove arch/mach/endian
assertions.
2017-08-07 16:53:54 +02:00
|
|
|
|
2017-08-07 Maciej W. Rozycki <macro@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* arch-utils.c (default_print_insn): Remove arch/mach/endian
|
|
|
|
|
assertions.
|
|
|
|
|
|
2017-08-07 16:53:54 +02:00
|
|
|
|
2017-08-07 Maciej W. Rozycki <macro@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (gdbarch_info): Replace the `tdep_info' member with
|
|
|
|
|
a union of `tdep_info', `tdesc_data' and `id'.
|
|
|
|
|
* aarch64-tdep.c (aarch64_gdbarch_init): Use `info.tdesc_data'
|
|
|
|
|
rather than `info.tdep_info'.
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_init_abi): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
|
|
|
|
|
* i386-tdep.c (i386_gdbarch_init): Likewise.
|
|
|
|
|
* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
|
|
|
|
|
* mips-tdep.c (mips_gdbarch_init): Likewise.
|
|
|
|
|
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
|
|
|
|
|
* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
|
|
|
|
|
* ppc-linux-tdep.c (ppu2spu_sniffer): Use `info.id' rather than
|
|
|
|
|
`info.tdep_info'.
|
|
|
|
|
(ppc_linux_init_abi): Use `info.tdesc_data' rather than
|
|
|
|
|
`info.tdep_info'.
|
|
|
|
|
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
|
|
|
|
|
* spu-multiarch.c (spu_gdbarch): Use `info.id' rather than
|
|
|
|
|
`info.tdep_info'.
|
|
|
|
|
* spu-tdep.c (spu_gdbarch_init): Likewise.
|
|
|
|
|
* gdbarch.h: Regenerate.
|
|
|
|
|
|
2017-08-07 16:40:38 +02:00
|
|
|
|
2017-08-07 Leszek Swirski <leszeks@google.com>
|
|
|
|
|
|
2017-08-07 18:25:59 +02:00
|
|
|
|
PR symtab/20899
|
2017-08-07 16:40:38 +02:00
|
|
|
|
* dwarf2read.c (dwarf2_string_attr): Allow DW_FORM_GNU_strp_alt.
|
|
|
|
|
|
2017-08-07 12:09:37 +02:00
|
|
|
|
2017-08-07 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote-sim.c (gdbsim_load): Remove char **argv local variable.
|
|
|
|
|
(gdbsim_open): Rename gdb_argv args object to argv.
|
|
|
|
|
|
2017-07-31 23:49:21 +02:00
|
|
|
|
2017-08-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* cli/cli-dump.c (scan_filename): Rename from
|
|
|
|
|
scan_filename_with_cleanup. Change return type.
|
|
|
|
|
(scan_expression): Rename from scan_expression_with_cleanup.
|
|
|
|
|
Change return type.
|
|
|
|
|
(dump_memory_to_file, dump_value_to_file, restore_command):
|
|
|
|
|
Use gdb::unique_xmalloc_ptr. Update.
|
|
|
|
|
* cli/cli-cmds.c (find_and_open_script): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* tracefile-tfile.c (tfile_open): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
* symmisc.c (maintenance_print_symbols)
|
|
|
|
|
(maintenance_print_msymbols): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
* symfile.c (symfile_bfd_open, generic_load)
|
|
|
|
|
(add_symbol_file_command, remove_symbol_file_command): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* source.c (openp): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* corelow.c (core_open): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
* breakpoint.c (save_breakpoints): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
* solib.c (solib_map_sections): Use gdb::unique_xmalloc_ptr.
|
|
|
|
|
(reload_shared_libraries_1): Likewise.
|
|
|
|
|
|
Remove cleanups from Rust parser
This removes the few remaining cleanups in the Rust language code.
The main difficulty here was that the earlier code allocated VEC heads
on an obstack. The new code instead introduces an object that
allocates and maintains the storage for whatever vectors are needed
during the parse.
Regression tested on the buildbot.
ChangeLog
2017-08-05 Tom Tromey <tom@tromey.com>
* rust-exp.y (rust_op_ptr, set_field): Remove typedefs.
(rust_op_vector, rust_set_vector): New typedefs.
(current_parser): New global.
(work_obstack): Change to pointer type. Update all users.
(rust_ast, pstate): Remove globals.
(struct rust_parser): New.
(%union) <params, field_inits>: Change type.
(start, tuple_expr, unit_expr, struct_expr_list, literal)
(field_expr, expr_list, maybe_expr_list, type_list): Update.
(ast_call_ish, ast_path, ast_function_type, ast_tuple_type)
(convert_params_to_types, convert_params_to_expression): Change
type of "params".
(ast_string): Change type of "fields".
(rust_parse): Make a rust_parser. Remove cleanups.
(rust_lex_tests): Make and install an auto_obstack.
2017-08-04 15:30:26 +02:00
|
|
|
|
2017-08-05 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-exp.y (rust_op_ptr, set_field): Remove typedefs.
|
|
|
|
|
(rust_op_vector, rust_set_vector): New typedefs.
|
|
|
|
|
(current_parser): New global.
|
|
|
|
|
(work_obstack): Change to pointer type. Update all users.
|
|
|
|
|
(rust_ast, pstate): Remove globals.
|
|
|
|
|
(struct rust_parser): New.
|
|
|
|
|
(%union) <params, field_inits>: Change type.
|
|
|
|
|
(start, tuple_expr, unit_expr, struct_expr_list, literal)
|
|
|
|
|
(field_expr, expr_list, maybe_expr_list, type_list): Update.
|
|
|
|
|
(ast_call_ish, ast_path, ast_function_type, ast_tuple_type)
|
|
|
|
|
(convert_params_to_types, convert_params_to_expression): Change
|
|
|
|
|
type of "params".
|
|
|
|
|
(ast_string): Change type of "fields".
|
|
|
|
|
(rust_parse): Make a rust_parser. Remove cleanups.
|
|
|
|
|
(rust_lex_tests): Make and install an auto_obstack.
|
|
|
|
|
|
2017-08-04 17:02:51 +02:00
|
|
|
|
2017-08-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* configure.srv (ipa_x32_linux_regobj): New.
|
|
|
|
|
* linux-amd64-ipa.c (get_ipa_tdesc): Use X86_TDESC_AVX_AVX512
|
|
|
|
|
instead of X86_TDESC_AVX512.
|
|
|
|
|
(initialize_low_tracepoint): Call
|
|
|
|
|
init_registers_x32_avx_avx512_linux.
|
|
|
|
|
|
2017-08-04 15:27:58 +02:00
|
|
|
|
2017-08-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* utils.h (gdb_argv): Add namespace std for nullptr_t.
|
|
|
|
|
|
2017-08-03 08:11:45 +02:00
|
|
|
|
2017-08-03 Ruslan Kabatsayev <b7.10110111@gmail.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Ruslan Kabatsayev.
|
|
|
|
|
|
2017-07-23 23:52:59 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (make_cleanup_freeargv, do_freeargv, gdb_buildargv):
|
|
|
|
|
Remove.
|
|
|
|
|
* utils.h (make_cleanup_freeargv, gdb_buildargv): Remove.
|
|
|
|
|
|
2017-05-01 07:03:58 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (compute_enum_values): Use gdb_argv.
|
|
|
|
|
|
Introduce gdb_argv, a class wrapper for buildargv
This introduces gdb_argv, a class wrapping an "argv" pointer; that is,
a pointer to a NULL-terminated array of char*, where both the array
and each non-NULL element in the array are xmalloc'd.
This patch then changes most users of gdb_buildargv to use gdb_argv
instead.
ChangeLog
2017-08-03 Tom Tromey <tom@tromey.com>
* utils.h (struct gdb_argv_deleter): New.
(gdb_argv): New class.
* utils.c (gdb_argv::reset): New method.
* tracepoint.c (delete_trace_variable_command): Use gdb_argv.
* tracefile.c (tsave_command): Use gdb_argv.
* top.c (new_ui_command): Use gdb_argv.
* symmisc.c (maintenance_print_symbols)
(maintenance_print_msymbols, maintenance_expand_symtabs): Use gdb_argv.
* symfile.c (symbol_file_command, generic_load)
(remove_symbol_file_command): Use gdb_argv.
* stack.c (backtrace_command): Use gdb_argv.
* source.c (add_path, show_substitute_path_command)
(unset_substitute_path_command, set_substitute_path_command):
Use gdb_argv.
* skip.c (skip_command): Use gdb_argv. Use gdb_buildargv.
* ser-mingw.c (pipe_windows_open): Use gdb_argv.
* remote.c (extended_remote_run, remote_put_command)
(remote_get_command, remote_delete_command): Use gdb_argv.
* remote-sim.c (gdbsim_load, gdbsim_create_inferior)
(gdbsim_open): Use gdb_argv.
* python/py-cmd.c (gdbpy_string_to_argv): Use gdb_argv.
* psymtab.c (maintenance_print_psymbols): Use gdb_argv.
* procfs.c (procfs_info_proc): Use gdb_argv.
* interps.c (interpreter_exec_cmd): Use gdb_argv.
* infrun.c (handle_command): Use gdb_argv.
* inferior.c (add_inferior_command, clone_inferior_command):
Use gdb_argv.
* guile/scm-string.c (gdbscm_string_to_argv): Use gdb_argv.
* exec.c (exec_file_command): Use gdb_argv.
* cli/cli-cmds.c (alias_command): Use gdb_argv.
* compile/compile.c (build_argc_argv): Use gdb_argv.
2017-05-01 07:02:30 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (struct gdb_argv_deleter): New.
|
|
|
|
|
(gdb_argv): New class.
|
|
|
|
|
* utils.c (gdb_argv::reset): New method.
|
|
|
|
|
* tracepoint.c (delete_trace_variable_command): Use gdb_argv.
|
|
|
|
|
* tracefile.c (tsave_command): Use gdb_argv.
|
|
|
|
|
* top.c (new_ui_command): Use gdb_argv.
|
|
|
|
|
* symmisc.c (maintenance_print_symbols)
|
|
|
|
|
(maintenance_print_msymbols, maintenance_expand_symtabs): Use gdb_argv.
|
|
|
|
|
* symfile.c (symbol_file_command, generic_load)
|
|
|
|
|
(remove_symbol_file_command): Use gdb_argv.
|
|
|
|
|
* stack.c (backtrace_command): Use gdb_argv.
|
|
|
|
|
* source.c (add_path, show_substitute_path_command)
|
|
|
|
|
(unset_substitute_path_command, set_substitute_path_command):
|
|
|
|
|
Use gdb_argv.
|
|
|
|
|
* skip.c (skip_command): Use gdb_argv. Use gdb_buildargv.
|
|
|
|
|
* ser-mingw.c (pipe_windows_open): Use gdb_argv.
|
|
|
|
|
* remote.c (extended_remote_run, remote_put_command)
|
|
|
|
|
(remote_get_command, remote_delete_command): Use gdb_argv.
|
|
|
|
|
* remote-sim.c (gdbsim_load, gdbsim_create_inferior)
|
|
|
|
|
(gdbsim_open): Use gdb_argv.
|
|
|
|
|
* python/py-cmd.c (gdbpy_string_to_argv): Use gdb_argv.
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols): Use gdb_argv.
|
|
|
|
|
* procfs.c (procfs_info_proc): Use gdb_argv.
|
|
|
|
|
* interps.c (interpreter_exec_cmd): Use gdb_argv.
|
|
|
|
|
* infrun.c (handle_command): Use gdb_argv.
|
|
|
|
|
* inferior.c (add_inferior_command, clone_inferior_command):
|
|
|
|
|
Use gdb_argv.
|
|
|
|
|
* guile/scm-string.c (gdbscm_string_to_argv): Use gdb_argv.
|
|
|
|
|
* exec.c (exec_file_command): Use gdb_argv.
|
|
|
|
|
* cli/cli-cmds.c (alias_command): Use gdb_argv.
|
|
|
|
|
* compile/compile.c (build_argc_argv): Use gdb_argv.
|
|
|
|
|
|
2017-05-01 06:12:13 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_decode_line): Use unique_xmalloc_ptr.
|
|
|
|
|
|
2017-05-01 06:10:41 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (compute_python_string): Return std::string.
|
|
|
|
|
(gdbpy_eval_from_control_command): Update.
|
|
|
|
|
(do_start_initialization): Use std::string.
|
|
|
|
|
* python/py-varobj.c (py_varobj_iter_next): Use string_printf, not
|
|
|
|
|
xstrprintf.
|
|
|
|
|
* python/py-breakpoint.c (local_setattro): Use string_printf, not
|
|
|
|
|
xstrprintf.
|
|
|
|
|
|
2017-05-01 05:17:58 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* top.h (do_restore_instream_cleanup): Remove.
|
|
|
|
|
* top.c (do_restore_instream_cleanup): Remove.
|
|
|
|
|
(read_command_file): Use scoped_restore.
|
|
|
|
|
* cli/cli-script.c (execute_user_command): Use scoped_restore.
|
|
|
|
|
|
2017-05-01 05:15:58 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (execute_user_command)
|
|
|
|
|
(execute_control_command): Use scoped_restore.
|
|
|
|
|
|
2017-05-01 05:08:31 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-script.c (do_restore_user_call_depth): Remove.
|
|
|
|
|
(execute_user_command): Remove user_call_depth; use
|
|
|
|
|
user_args_stack's size instead.
|
|
|
|
|
|
2017-05-01 05:04:51 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* top.h (in_user_command): Remove.
|
|
|
|
|
* top.c (in_user_command): Remove.
|
|
|
|
|
* cli/cli-script.c (do_restore_user_call_depth)
|
|
|
|
|
(execute_user_command): Update.
|
|
|
|
|
|
2017-04-29 07:34:32 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* valops.c (search_struct_method): Use gdb::byte_vector.
|
|
|
|
|
* valarith.c (value_concat): Use std::vector.
|
|
|
|
|
* target.c (memory_xfer_partial): Use gdb::byte_vector.
|
|
|
|
|
(simple_search_memory): Likewise.
|
|
|
|
|
* printcmd.c (find_string_backward): Use gdb::byte_vector.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_data_write_memory): Use gdb::byte_vector.
|
|
|
|
|
* gcore.c (gcore_copy_callback): Use gdb::byte_vector.
|
|
|
|
|
* elfread.c (elf_rel_plt_read): Use std::string.
|
|
|
|
|
* cp-valprint.c (cp_print_value): Use gdb::byte_vector.
|
|
|
|
|
* cli/cli-dump.c (restore_section_callback): Use
|
|
|
|
|
gdb::byte_vector.
|
|
|
|
|
|
2017-04-29 07:08:16 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* jit.c (jit_reader_load_command): Use unique_xmalloc_ptr.
|
|
|
|
|
|
2017-04-29 06:59:24 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_restore_gdbout): Remove.
|
|
|
|
|
(tui_register_format): Use scoped_restore.
|
|
|
|
|
|
2017-04-27 06:53:40 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* reverse.c (exec_direction_default): Remove.
|
|
|
|
|
(exec_reverse_once): Use scoped_restore.
|
|
|
|
|
* remote.c (restore_remote_timeout): Remove.
|
|
|
|
|
(remote_flash_erase, remote_flash_write, remote_flash_done)
|
|
|
|
|
(readchar, remote_serial_write): Use scoped_restore.
|
|
|
|
|
* cli/cli-script.c (struct source_cleanup_lines_args)
|
|
|
|
|
(source_cleanup_lines): Remove.
|
|
|
|
|
(script_from_file): Use scoped_restore.
|
|
|
|
|
* cli/cli-cmds.c (source_verbose_cleanup): Remove.
|
|
|
|
|
(source_command): Use scoped_restore.
|
|
|
|
|
|
2017-04-29 06:43:54 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (make_cleanup_free_so): Remove.
|
|
|
|
|
* utils.c (do_free_so, make_cleanup_free_so): Remove.
|
|
|
|
|
* solist.h (struct so_deleter): New.
|
|
|
|
|
(so_list_up): New typedef.
|
|
|
|
|
* solib-svr4.c (svr4_read_so_list): Use so_list_up.
|
|
|
|
|
|
2017-04-27 06:41:30 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (make_cleanup_restore_current_language): Remove.
|
|
|
|
|
* utils.c (do_restore_current_language)
|
|
|
|
|
(make_cleanup_restore_current_language): Remove.
|
|
|
|
|
* parse.c (parse_exp_in_context_1)
|
|
|
|
|
(parse_expression_with_language): Use
|
|
|
|
|
scoped_restore_current_language.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_execute): Use
|
|
|
|
|
scoped_restore_current_language.
|
|
|
|
|
* language.h (scoped_restore_current_language): New class.
|
|
|
|
|
|
2017-04-27 06:12:50 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile.c (cleanup_unlink_file): Remove.
|
|
|
|
|
(compile_to_object): Use gdb::unlinker.
|
|
|
|
|
(eval_compile_command): Likewise.
|
|
|
|
|
|
2017-04-27 06:03:42 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (make_cleanup_fclose): Remove.
|
|
|
|
|
* utils.c (do_fclose_cleanup, make_cleanup_fclose): Remove.
|
|
|
|
|
|
2017-04-27 06:03:08 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* top.c (open_terminal_stream): Return gdb_file_up.
|
|
|
|
|
(new_ui_command): Update.
|
|
|
|
|
|
2017-04-27 05:56:14 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* source.c (print_source_lines_base, forward_search_command)
|
|
|
|
|
(reverse_search_command): Use gdb_file_up.
|
|
|
|
|
|
2017-04-27 05:52:52 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c (fbsd_find_memory_regions): Update.
|
|
|
|
|
|
2017-04-27 05:49:55 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (find_and_open_script): Change return type.
|
|
|
|
|
Remove "streamp" and "full_path" parameters.
|
|
|
|
|
(source_script_with_search): Update.
|
|
|
|
|
* auto-load.c (source_script_file): Update.
|
|
|
|
|
* cli/cli-cmds.h (find_and_open_script): Change type.
|
|
|
|
|
(open_script): New struct.
|
|
|
|
|
|
Introduce and use gdb_file_up
This introduces gdb_file_up, a unique pointer holding a FILE*, and
then changes some code in gdb to use it. In particular
gdb_fopen_cloexec now returns a gdb_file_up. This allow removing some
cleanups.
ChangeLog
2017-08-03 Tom Tromey <tom@tromey.com>
* xml-support.c (xml_fetch_content_from_file): Update.
* ui-file.c (stdio_file::open): Update.
* tracefile-tfile.c (tfile_start): Update.
* remote.c (remote_file_put, remote_file_get): Update.
* nat/linux-procfs.c (linux_proc_get_int)
(linux_proc_pid_get_state, linux_proc_tid_get_name): Update.
* nat/linux-osdata.c (linux_common_core_of_thread): Update.
(command_from_pid, commandline_from_pid, linux_xfer_osdata_cpus)
(print_sockets, linux_xfer_osdata_shm, linux_xfer_osdata_sem)
(linux_xfer_osdata_msg, linux_xfer_osdata_modules): Update.
* nat/linux-btrace.c (linux_determine_kernel_start): Update.
* linux-nat.c (linux_proc_pending_signals): Update.
* dwarf2read.c (write_psymtabs_to_index): Use gdb_file_up.
(file_closer): Remove.
* compile/compile.c (compile_to_object): Update.
* common/filestuff.h (struct gdb_file_deleter): New.
(gdb_file_up): New typedef.
(gdb_fopen_cloexec): Change return type.
* common/filestuff.c (gdb_fopen_cloexec): Return gdb_file_up.
* cli/cli-dump.c (fopen_with_cleanup): Remove.
(dump_binary_file, restore_binary_file): Update.
* auto-load.c (auto_load_objfile_script_1): Update.
2017-04-27 05:39:46 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (xml_fetch_content_from_file): Update.
|
|
|
|
|
* ui-file.c (stdio_file::open): Update.
|
|
|
|
|
* tracefile-tfile.c (tfile_start): Update.
|
|
|
|
|
* remote.c (remote_file_put, remote_file_get): Update.
|
|
|
|
|
* nat/linux-procfs.c (linux_proc_get_int)
|
|
|
|
|
(linux_proc_pid_get_state, linux_proc_tid_get_name): Update.
|
|
|
|
|
* nat/linux-osdata.c (linux_common_core_of_thread): Update.
|
|
|
|
|
(command_from_pid, commandline_from_pid, linux_xfer_osdata_cpus)
|
|
|
|
|
(print_sockets, linux_xfer_osdata_shm, linux_xfer_osdata_sem)
|
|
|
|
|
(linux_xfer_osdata_msg, linux_xfer_osdata_modules): Update.
|
|
|
|
|
* nat/linux-btrace.c (linux_determine_kernel_start): Update.
|
|
|
|
|
* linux-nat.c (linux_proc_pending_signals): Update.
|
|
|
|
|
* dwarf2read.c (write_psymtabs_to_index): Use gdb_file_up.
|
|
|
|
|
(file_closer): Remove.
|
|
|
|
|
* compile/compile.c (compile_to_object): Update.
|
|
|
|
|
* common/filestuff.h (struct gdb_file_deleter): New.
|
|
|
|
|
(gdb_file_up): New typedef.
|
|
|
|
|
(gdb_fopen_cloexec): Change return type.
|
|
|
|
|
* common/filestuff.c (gdb_fopen_cloexec): Return gdb_file_up.
|
|
|
|
|
* cli/cli-dump.c (fopen_with_cleanup): Remove.
|
|
|
|
|
(dump_binary_file, restore_binary_file): Update.
|
|
|
|
|
* auto-load.c (auto_load_objfile_script_1): Update.
|
|
|
|
|
|
2017-04-23 18:21:50 +02:00
|
|
|
|
2017-08-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (tvariables_info_1): Use ui_out_emit_table.
|
|
|
|
|
(info_static_tracepoint_markers_command): Likewise.
|
|
|
|
|
* solib.c (info_sharedlibrary_command): Use ui_out_emit_table.
|
|
|
|
|
* skip.c (skip_info): Use ui_out_emit_table.
|
|
|
|
|
* progspace.c (print_program_space): Use ui_out_emit_table.
|
|
|
|
|
* osdata.c (info_osdata): Use ui_out_emit_table.
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions): Use
|
|
|
|
|
ui_out_emit_table.
|
|
|
|
|
* linux-thread-db.c (info_auto_load_libthread_db): Use
|
|
|
|
|
ui_out_emit_table.
|
|
|
|
|
* inferior.c (print_inferior): Use ui_out_emit_table.
|
|
|
|
|
* gdb_bfd.c (maintenance_info_bfds): Use ui_out_emit_table.
|
|
|
|
|
* breakpoint.c (breakpoint_1): Use ui_out_emit_table.
|
|
|
|
|
* auto-load.c (auto_load_info_scripts): Use ui_out_emit_table.
|
|
|
|
|
* ada-tasks.c (print_ada_task_info): Use ui_out_emit_table.
|
|
|
|
|
* ui-out.h (class ui_out_emit_table): New.
|
|
|
|
|
|
2017-08-02 17:40:16 +02:00
|
|
|
|
2017-08-02 Maciej W. Rozycki <macro@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (mips_fpu_type_str): New function.
|
|
|
|
|
(mips_dump_tdep): Call it.
|
|
|
|
|
|
2017-08-01 20:32:25 +02:00
|
|
|
|
2017-08-01 Maciej W. Rozycki <macro@imgtec.com>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (mips_gdbarch_init): Use MIPS_FPU_TYPE to access
|
|
|
|
|
`->mips_fpu_type'.
|
|
|
|
|
|
2017-07-31 14:36:24 +02:00
|
|
|
|
2017-07-31 Xavier Roirand <roirand@adacore.com>
|
|
|
|
|
|
|
|
|
|
* solib-darwin.c (DYLD_VERSION_MAX): Increase value.
|
|
|
|
|
|
2017-07-27 15:53:02 +02:00
|
|
|
|
2017-07-27 Xavier Roirand <roirand@adacore.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Add Xavier Roirand.
|
|
|
|
|
|
2017-07-26 15:55:31 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (maintenancechecklist): New variable.
|
|
|
|
|
* gdbcmd.h (maintenancechecklist): Declare it.
|
|
|
|
|
* i386-linux-tdep.c (_initialize_i386_linux_tdep) [GDB_SELF_TEST]:
|
|
|
|
|
Call i386_linux_read_description with different masks.
|
|
|
|
|
* maint.c (maintenance_check_command): New function.
|
|
|
|
|
(_initialize_maint_cmds): Call add_prefix_cmd.
|
|
|
|
|
* target-descriptions.c (tdesc_reg): override operator != and ==.
|
|
|
|
|
(tdesc_type): Likewise.
|
|
|
|
|
(tdesc_feature): Likewise.
|
|
|
|
|
(target_desc): Likewise.
|
|
|
|
|
[GDB_SELF_TEST] (selftests::record_xml_tdesc): New function.
|
|
|
|
|
(maintenance_check_xml_descriptions): New function.
|
|
|
|
|
(_initialize_target_descriptions) Add command "xml-descriptions".
|
|
|
|
|
* target-descriptions.h (selftests::record_xml_tdesc): Declare.
|
|
|
|
|
|
2017-07-26 15:39:54 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i386-linux-tdep.c: Don't include features/i386/i386-*linux.c.
|
|
|
|
|
Include features/i386/32bit-*.c.
|
|
|
|
|
(i386_linux_read_description): Generate target description if it
|
|
|
|
|
doesn't exist.
|
|
|
|
|
(_initialize_i386_linux_tdep): Don't call _initialize_tdesc_i386
|
|
|
|
|
functions.
|
|
|
|
|
* features/i386/32bit-linux.c: Re-generated.
|
|
|
|
|
* features/i386/32bit-sse.c: Likewise.
|
|
|
|
|
* target-descriptions.c (print_c_feature::visit): Print code to
|
|
|
|
|
set register number if needed.
|
|
|
|
|
(print_c_feature) <m_next_regnum>: New field.
|
|
|
|
|
|
2017-07-26 15:24:08 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/Makefile (CFILES): Rename with TDESC_CFILES.
|
|
|
|
|
(FEATURE_XMLFILES): New.
|
|
|
|
|
(FEATURE_CFILES): New.
|
|
|
|
|
New rules.
|
|
|
|
|
(clean-cfiles): Remove generated c files.
|
|
|
|
|
* features/i386/32bit-avx.c: Generated.
|
|
|
|
|
* features/i386/32bit-avx512.c: Generated.
|
|
|
|
|
* features/i386/32bit-core.c: Generated.
|
|
|
|
|
* features/i386/32bit-linux.c: Generated.
|
|
|
|
|
* features/i386/32bit-mpx.c: Generated.
|
|
|
|
|
* features/i386/32bit-pkeys.c: Generated.
|
|
|
|
|
* features/i386/32bit-sse.c: Generated.
|
|
|
|
|
* target-descriptions.c: Include algorithm.
|
|
|
|
|
(tdesc_element_visitor): Add method visit_end.
|
|
|
|
|
(print_c_tdesc): Implement visit_end.
|
|
|
|
|
(print_c_tdesc:: m_filename_after_features): Move it to
|
|
|
|
|
protected.
|
|
|
|
|
(print_c_feature): New class.
|
|
|
|
|
(maint_print_c_tdesc_cmd): Use print_c_feature if XML file
|
|
|
|
|
name starts with "i386/32bit-".
|
|
|
|
|
|
2017-07-26 13:56:54 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* target-descriptions.c (tdesc_element_visitor): New class.
|
|
|
|
|
(tdesc_element): New class.
|
|
|
|
|
(tdesc_reg): Inherit from tdesc_element.
|
|
|
|
|
(tdesc_reg::accept): New function.
|
|
|
|
|
(tdesc_type): Inherit from tdesc_element.
|
|
|
|
|
(tdesc_type::accept): New function.
|
|
|
|
|
(tdesc_feature): Inherit from tdesc_element.
|
|
|
|
|
(tdesc_feature::accept): New function.
|
|
|
|
|
(target_desc): Inherit from tdesc_element.
|
|
|
|
|
(target_desc::target_desc): New.
|
|
|
|
|
(target_desc::~target_desc): New.
|
|
|
|
|
(target_desc::accept): New.
|
|
|
|
|
(allocate_target_description): Use new.
|
|
|
|
|
(free_target_description): Use delete.
|
|
|
|
|
(print_c_tdesc): New class.
|
|
|
|
|
(maint_print_c_tdesc_cmd): Adjust.
|
|
|
|
|
|
|
|
|
|
* features/aarch64.c: Re-generated.
|
|
|
|
|
* features/arc-arcompact.c: Re-generated.
|
|
|
|
|
* features/arc-v2.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-iwmmxt.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-m.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-m-fpa-layout.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-m-vfp-d16.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-neon.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-vfpv2.c: Re-generated.
|
|
|
|
|
* features/arm/arm-with-vfpv3.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-avx512.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-avx512-linux.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku-linux.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-mpx.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/amd64.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-linux.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-mpx.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-mpx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-avx512.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-avx512-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-mpx-avx512-pku.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-mpx-avx512-pku-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-mpx.c: Re-generated.
|
|
|
|
|
* features/i386/i386-avx-mpx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386.c: Re-generated.
|
|
|
|
|
* features/i386/i386-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386-mmx.c: Re-generated.
|
|
|
|
|
* features/i386/i386-mmx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/i386-mpx.c: Re-generated.
|
|
|
|
|
* features/i386/i386-mpx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/x32-avx-avx512.c: Re-generated.
|
|
|
|
|
* features/i386/x32-avx-avx512-linux.c: Re-generated.
|
|
|
|
|
* features/i386/x32-avx.c: Re-generated.
|
|
|
|
|
* features/i386/x32-avx-linux.c: Re-generated.
|
|
|
|
|
* features/i386/x32.c: Re-generated.
|
|
|
|
|
* features/i386/x32-linux.c: Re-generated.
|
|
|
|
|
* features/microblaze.c: Re-generated.
|
|
|
|
|
* features/microblaze-with-stack-protect.c: Re-generated.
|
|
|
|
|
* features/mips64-dsp-linux.c: Re-generated.
|
|
|
|
|
* features/mips64-linux.c: Re-generated.
|
|
|
|
|
* features/mips-dsp-linux.c: Re-generated.
|
|
|
|
|
* features/mips-linux.c: Re-generated.
|
|
|
|
|
* features/nds32.c: Re-generated.
|
|
|
|
|
* features/nios2.c: Re-generated.
|
|
|
|
|
* features/nios2-linux.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-32.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-403.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-403gc.c : Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-405.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-505.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-601.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-602.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-603.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-604.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-64.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-7400.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-750.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-860.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-altivec32.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-altivec32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-altivec64.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-altivec64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-cell32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-cell64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-e500.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-e500l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-isa205-32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-isa205-64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-isa205-altivec32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-isa205-altivec64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-isa205-vsx32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-isa205-vsx64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-vsx32.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-vsx32l.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-vsx64.c: Re-generated.
|
|
|
|
|
* features/rs6000/powerpc-vsx64l.c: Re-generated.
|
|
|
|
|
* features/rs6000/rs6000.c: Re-generated.
|
|
|
|
|
* features/s390-linux32.c: Re-generated.
|
|
|
|
|
* features/s390-linux32v1.c: Re-generated.
|
|
|
|
|
* features/s390-linux32v2.c: Re-generated.
|
|
|
|
|
* features/s390-linux64.c: Re-generated.
|
|
|
|
|
* features/s390-linux64v1.c: Re-generated.
|
|
|
|
|
* features/s390-linux64v2.c: Re-generated.
|
|
|
|
|
* features/s390-te-linux64.c: Re-generated.
|
|
|
|
|
* features/s390-tevx-linux64.c: Re-generated.
|
|
|
|
|
* features/s390-vx-linux64.c: Re-generated.
|
|
|
|
|
* features/s390x-linux64.c: Re-generated.
|
|
|
|
|
* features/s390x-linux64v1.c: Re-generated.
|
|
|
|
|
* features/s390x-linux64v2.c: Re-generated.
|
|
|
|
|
* features/s390x-te-linux64.c: Re-generated.
|
|
|
|
|
* features/s390x-tevx-linux64.c: Re-generated.
|
|
|
|
|
* features/s390x-vx-linux64.c: Re-generated.
|
|
|
|
|
* features/sparc/sparc32-solaris.c: Re-generated.
|
|
|
|
|
* features/sparc/sparc64-solaris.c: Re-generated.
|
|
|
|
|
* features/tic6x-c62x.c: Re-generated.
|
|
|
|
|
* features/tic6x-c62x-linux.c: Re-generated.
|
|
|
|
|
* features/tic6x-c64x.c: Re-generated.
|
|
|
|
|
* features/tic6x-c64x-linux.c: Re-generated.
|
|
|
|
|
* features/tic6x-c64xp.c: Re-generated.
|
|
|
|
|
* features/tic6x-c64xp-linux.c: Re-generated.
|
|
|
|
|
|
2017-07-26 13:36:42 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i386-linux-tdep.c (i386_linux_read_description): New function.
|
|
|
|
|
(i386_linux_core_read_description): Call
|
|
|
|
|
i386_linux_read_description.
|
|
|
|
|
* i386-linux-tdep.h (i386_linux_read_description): Declare.
|
|
|
|
|
(tdesc_i386_linux, tdesc_i386_mmx_linux): Remove declarations.
|
|
|
|
|
(tdesc_i386_avx_linux, tdesc_i386_mpx_linux): Likewise
|
|
|
|
|
(tdesc_i386_avx_mpx_linux, tdesc_i386_avx_avx512_linux): Likewise.
|
|
|
|
|
(tdesc_i386_avx_mpx_avx512_pku_linux): Likewise.
|
|
|
|
|
* x86-linux-nat.c (x86_linux_read_description): Call
|
|
|
|
|
i386_linux_read_description.
|
|
|
|
|
|
Add optional argument to command "maint prints c-tdesc"
Nowadays, we need two steps to print c files for xml target description,
that is, 1) read xml target description in, update the current tdesc,
2) visit the current tdesc, print the c file. It is unnecessary to
involve in current tdesc, and some validations in each gdbarch are
performed unnecessarily, which will reject some target descriptions if
they are missing some mandatory feature.
This patch adds an optional argument to "maint print c-tdesc", which
is an XML file target description, so that we can combine the two
steps above into one step, and don't have to involve in global current
tdesc.
gdb:
2017-07-26 Yao Qi <yao.qi@linaro.org>
* NEWS: Mention it.
* features/Makefile (%.c: %.xml): Pass the xml file name to
command "maint print c-tdesc".
* target-descriptions.c (maint_print_c_tdesc_cmd): Get file
name from 'arg'.
gdb/doc:
2017-07-26 Yao Qi <yao.qi@linaro.org>
* gdb.texinfo (Maintenance Commands): Document optional
argument of "maint print c-tdesc".
2017-07-26 13:03:47 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention it.
|
|
|
|
|
* features/Makefile (%.c: %.xml): Pass the xml file name to
|
|
|
|
|
command "maint print c-tdesc".
|
|
|
|
|
* target-descriptions.c (maint_print_c_tdesc_cmd): Get file
|
|
|
|
|
name from 'arg'.
|
|
|
|
|
|
2017-07-26 11:37:17 +02:00
|
|
|
|
2017-07-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* target-descriptions.c (target_desc): Add ctor and dtor. Do
|
|
|
|
|
in-class initialization.
|
|
|
|
|
(tdesc_create_feature): Call new instead of XCNEW.
|
|
|
|
|
(free_target_description): Ue delete.
|
|
|
|
|
|
2017-07-15 17:30:40 +02:00
|
|
|
|
2017-07-25 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* configure.nat: Add "-lkvm" for NetBSD/sparc64 and fix typo.
|
|
|
|
|
|
2017-07-25 16:25:38 +02:00
|
|
|
|
2017-07-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_init_abi): Make argument default_tdesc
|
|
|
|
|
constant.
|
|
|
|
|
(amd64_x32_init_abi): Likewise.
|
|
|
|
|
* amd64-tdep.h (amd64_init_abi): Update declaration.
|
|
|
|
|
(amd64_x32_init_abi): Likewise.
|
|
|
|
|
|
[ARM] Access FPSCR on vfpv2
GDB can fetch or store FPSCR on vfpv3, which has 32 VFP registers, but
fail to do so on vfpv2, which has 16 VFP registers. GDB code is incorrect
for vfpv2,
else if (tdep->vfp_register_count > 0
&& regno >= ARM_D0_REGNUM
&& regno <= ARM_D0_REGNUM + tdep->vfp_register_count)
while FPSCR register number is defined as ARM_D0_REGNUM + 32.
ARM_D0_REGNUM, /* VFP double-precision registers. */
ARM_D31_REGNUM = ARM_D0_REGNUM + 31,
ARM_FPSCR_REGNUM,
The code above uses "<=" rather than "<", in order to put FPSCR in the
range, but it is only correct when tdep->vfp_register_count is 32. On
vpfv2, it is 16, and FPSCR is out of the range, so fetch_vfp_regs or
store_vfp_regs are not called.
gdb:
2017-07-25 Yao Qi <yao.qi@linaro.org>
PR tdep/21717
* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Update
condition for FPSCR.
(arm_linux_store_inferior_registers): Likewise.
2017-07-21 17:35:23 +02:00
|
|
|
|
2017-07-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR tdep/21717
|
|
|
|
|
* arm-linux-nat.c (arm_linux_fetch_inferior_registers): Update
|
|
|
|
|
condition for FPSCR.
|
|
|
|
|
(arm_linux_store_inferior_registers): Likewise.
|
|
|
|
|
|
2017-07-19 02:23:32 +02:00
|
|
|
|
2017-07-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-syscall.c (struct catch_syscall_inferior_data)
|
|
|
|
|
<syscalls_counts>: Now a std::vector.
|
|
|
|
|
(get_catch_syscall_inferior_data): Use "new".
|
|
|
|
|
(catch_syscall_inferior_data_cleanup): Use "delete".
|
|
|
|
|
(insert_catch_syscall, remove_catch_syscall)
|
|
|
|
|
(clear_syscall_counts): Update.
|
|
|
|
|
|
2017-07-18 00:58:22 +02:00
|
|
|
|
2017-07-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-syscall.c (syscall_catchpoint)
|
|
|
|
|
<syscalls_to_be_caught>: Now a std::vector<int>
|
|
|
|
|
(~syscall_catchpoint): Remove.
|
|
|
|
|
(insert_catch_syscall, remove_catch_syscall)
|
|
|
|
|
(breakpoint_hit_catch_syscall, print_one_catch_syscall)
|
|
|
|
|
(print_mention_catch_syscall, print_recreate_catch_syscall):
|
|
|
|
|
Update.
|
|
|
|
|
(create_syscall_event_catchpoint): Change type of "filter"
|
|
|
|
|
parameter.
|
|
|
|
|
(catch_syscall_split_args): Return a std::vector.
|
|
|
|
|
(catch_syscall_command_1, catching_syscall_number_1): Update.
|
|
|
|
|
|
2017-06-03 16:06:36 +02:00
|
|
|
|
2017-07-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (struct exception_catchpoint)
|
|
|
|
|
<exception_rx>: Now a std::string.
|
|
|
|
|
(~exception_catchpoint): Remove.
|
|
|
|
|
(print_one_detail_exception_catchpoint): Update.
|
|
|
|
|
(handle_gnu_v3_exceptions): Change type of except_rx.
|
|
|
|
|
(extract_exception_regexp): Return a std::string.
|
|
|
|
|
(catch_exception_command_1): Update.
|
|
|
|
|
|
2017-06-03 15:53:26 +02:00
|
|
|
|
2017-07-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-sig.c (gdb_signal_type): Remove typedef.
|
|
|
|
|
(struct signal_catchpoint) <signals_to_be_caught>: Now a
|
|
|
|
|
std::vector.
|
|
|
|
|
<catch_all>: Now a bool.
|
|
|
|
|
(~signal_catchpoint): Remove.
|
|
|
|
|
(signal_catchpoint_insert_location)
|
|
|
|
|
(signal_catchpoint_remove_location)
|
|
|
|
|
(signal_catchpoint_breakpoint_hit, signal_catchpoint_print_one)
|
|
|
|
|
(signal_catchpoint_print_mention)
|
|
|
|
|
(signal_catchpoint_print_recreate)
|
|
|
|
|
(signal_catchpoint_explains_signal): Update.
|
|
|
|
|
(create_signal_catchpoint): Change type of "filter" and
|
|
|
|
|
"catch_all".
|
|
|
|
|
(catch_signal_split_args): Return a std::vector. Change type of
|
|
|
|
|
"catch_all".
|
|
|
|
|
(catch_signal_command): Update.
|
|
|
|
|
|
Make language_def O(1)
Profiling GDB with the rest of series applied, I saw calls to
language_def showing up high in some runs. The problem is that
language_def is O(N) currently, since walk the languages vector each
time to find the matching language_defn.
IMO, the add_language mechanism is pointless, because "enum language"
implies the core of GDB needs to know about all languages anyway. So
simply make the languages vector array be an array where each
element's index is the corresponding enum language enumerator. Note
that "local_language_defn" is gone along the way. It's just a copy of
"auto", so the new code simply maps one to the other. One fewer place
to update when we need to change the language vector...
Also, a while ago the output of "set language" was made out of order
as side effect of some other change. While I was at it, I made them
sorted again.
gdb/ChangeLog:
2017-07-20 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_language_defn): Make extern.
(_initialize_ada_language): Remove add_language call.
* c-lang.c (c_language_defn, cplus_language_defn)
(asm_language_defn, minimal_language_defn): Make extern.
(_initialize_c_language): Delete.
* completer.c (compare_cstrings): Delete, moved to utils.h.
* d-lang.c (d_language_defn): Make extern.
(_initialize_d_language): Remove add_language calls.
* defs.h (enum language): Add comment.
* f-lang.c (f_language_defn): Make extern.
(_initialize_f_language): Remove add_language call.
* go-lang.c (go_language_defn): Make extern.
(_initialize_go_language): Remove add_language call.
* language.c: Include <algorithm>.
(languages): Redefine as const array.
(languages_size, languages_allocsize, DEFAULT_ALLOCSIZE): Delete.
(set_language_command): Handle "local". Use for-range loop.
(set_language): Remove loop.
(language_enum): Rewrite.
(language_def, language_str): Remove loops.
(add_language): Delete.
(add_set_language_command): New, based on add_languages.
(skip_language_trampoline): Adjust.
(local_language_defn): Delete.
(language_gdbarch_post_init): Adjust.
(_initialize_language): Remove add_language calls. Call
add_set_language_command.
* language.h (add_language): Delete.
(auto_language_defn)
(unknown_language_defn, minimal_language_defn, ada_language_defn)
(asm_language_defn, c_language_defn, cplus_language_defn)
(d_language_defn, f_language_defn, go_language_defn)
(m2_language_defn, objc_language_defn, opencl_language_defn)
(pascal_language_defn, rust_language_defn): Declare.
* m2-lang.c (m2_language_defn): Make extern.
(_initialize_m2_language): Remove add_language call.
* objc-lang.c (objc_language_defn): Make extern.
(_initialize_objc_language): Remove add_language call.
* opencl-lang.c (opencl_language_defn): Make extern.
(_initialize_opencl_language): Remove add_language call.
* p-lang.c (pascal_language_defn): Make extern.
(_initialize_pascal_language): Delete.
* rust-lang.c (rust_language_defn): Make extern.
(_initialize_rust_language): Delete.
* utils.h (compare_cstrings): New static inline function.
gdb/testsuite/ChangeLog:
2017-07-20 Pedro Alves <palves@redhat.com>
* gdb.base/default.exp (set language): Adjust expected output.
2017-07-20 19:28:01 +02:00
|
|
|
|
2017-07-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_language_defn): Make extern.
|
|
|
|
|
(_initialize_ada_language): Remove add_language call.
|
|
|
|
|
* c-lang.c (c_language_defn, cplus_language_defn)
|
|
|
|
|
(asm_language_defn, minimal_language_defn): Make extern.
|
|
|
|
|
(_initialize_c_language): Delete.
|
|
|
|
|
* completer.c (compare_cstrings): Delete, moved to utils.h.
|
|
|
|
|
* d-lang.c (d_language_defn): Make extern.
|
|
|
|
|
(_initialize_d_language): Remove add_language calls.
|
|
|
|
|
* defs.h (enum language): Add comment.
|
|
|
|
|
* f-lang.c (f_language_defn): Make extern.
|
|
|
|
|
(_initialize_f_language): Remove add_language call.
|
|
|
|
|
* go-lang.c (go_language_defn): Make extern.
|
|
|
|
|
(_initialize_go_language): Remove add_language call.
|
|
|
|
|
* language.c: Include <algorithm>.
|
|
|
|
|
(languages): Redefine as const array.
|
|
|
|
|
(languages_size, languages_allocsize, DEFAULT_ALLOCSIZE): Delete.
|
|
|
|
|
(set_language_command): Handle "local". Use for-range loop.
|
|
|
|
|
(set_language): Remove loop.
|
|
|
|
|
(language_enum): Rewrite.
|
|
|
|
|
(language_def, language_str): Remove loops.
|
|
|
|
|
(add_language): Delete.
|
|
|
|
|
(add_set_language_command): New, based on add_languages.
|
|
|
|
|
(skip_language_trampoline): Adjust.
|
|
|
|
|
(local_language_defn): Delete.
|
|
|
|
|
(language_gdbarch_post_init): Adjust.
|
|
|
|
|
(_initialize_language): Remove add_language calls. Call
|
|
|
|
|
add_set_language_command.
|
|
|
|
|
* language.h (add_language): Delete.
|
|
|
|
|
(auto_language_defn)
|
|
|
|
|
(unknown_language_defn, minimal_language_defn, ada_language_defn)
|
|
|
|
|
(asm_language_defn, c_language_defn, cplus_language_defn)
|
|
|
|
|
(d_language_defn, f_language_defn, go_language_defn)
|
|
|
|
|
(m2_language_defn, objc_language_defn, opencl_language_defn)
|
|
|
|
|
(pascal_language_defn, rust_language_defn): Declare.
|
|
|
|
|
* m2-lang.c (m2_language_defn): Make extern.
|
|
|
|
|
(_initialize_m2_language): Remove add_language call.
|
|
|
|
|
* objc-lang.c (objc_language_defn): Make extern.
|
|
|
|
|
(_initialize_objc_language): Remove add_language call.
|
|
|
|
|
* opencl-lang.c (opencl_language_defn): Make extern.
|
|
|
|
|
(_initialize_opencl_language): Remove add_language call.
|
|
|
|
|
* p-lang.c (pascal_language_defn): Make extern.
|
|
|
|
|
(_initialize_pascal_language): Delete.
|
|
|
|
|
* rust-lang.c (rust_language_defn): Make extern.
|
|
|
|
|
(_initialize_rust_language): Delete.
|
|
|
|
|
* utils.h (compare_cstrings): New static inline function.
|
|
|
|
|
|
2017-07-20 19:12:19 +02:00
|
|
|
|
2017-07-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_to_fixed_type_1): Adjust.
|
|
|
|
|
(get_var_value): Constify parameters.
|
|
|
|
|
(get_int_var_value): Change prototype.
|
|
|
|
|
(to_fixed_range_type): Adjust.
|
|
|
|
|
* ada-lang.h (get_int_var_value): Change prototype.
|
|
|
|
|
|
2017-07-20 19:06:13 +02:00
|
|
|
|
2017-07-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dw2_lookup_symbol): Use
|
|
|
|
|
SYMBOL_MATCHES_SEARCH_NAME.
|
|
|
|
|
* psymtab.c (psym_lookup_symbol): Use SYMBOL_MATCHES_SEARCH_NAME.
|
|
|
|
|
|
2017-07-20 19:04:46 +02:00
|
|
|
|
2017-07-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* block.c (block_iter_name_step, block_iter_name_first)
|
|
|
|
|
(block_iter_name_next): Delete.
|
|
|
|
|
(block_lookup_symbol_primary): Adjust to use
|
|
|
|
|
dict_iter_match_first/dict_iter_match_next.
|
|
|
|
|
* block.h (block_iter_name_first, block_iter_name_next): Delete
|
|
|
|
|
declarations.
|
|
|
|
|
(ALL_BLOCK_SYMBOLS_WITH_NAME): Adjust to use
|
|
|
|
|
dict_iter_match_first/dict_iter_match_next.
|
|
|
|
|
|
Fix cp_find_first_component_aux bug
Valgrind catches an out-of-bounds read here:
$ gdb ./testsuite/outputs/gdb.cp/method2/method2
(gdb) start
[...]
Temporary breakpoint 1, main (argc=1, argv=0x7fffffffd958) at src/gdb/testsuite/gdb.cp/method2.cc:26
26 return 0;
(gdb) b A::operator
==26907== Invalid read of size 1
==26907== at 0x75C0AE: cp_find_first_component_aux(char const*, int) (cp-support.c:951)
==26907== by 0x75C084: cp_find_first_component(char const*) (cp-support.c:925)
==26907== by 0x75C3DA: cp_entire_prefix_len(char const*) (cp-support.c:1089)
==26907== by 0x758B16: cp_lookup_symbol_in_namespace(char const*, char const*, block const*, domain_enum_tag, int) (cp-namespace.c:314)
==26907== by 0x75972A: lookup_namespace_scope(language_defn const*, char const*, block const*, domain_enum_tag, char const*, int) (cp-namespace.c:739)
==26907== by 0x7597CB: cp_lookup_symbol_nonlocal(language_defn const*, char const*, block const*, domain_enum_tag) (cp-namespace.c:768)
==26907== by 0x8C1137: lookup_symbol_aux(char const*, block const*, domain_enum_tag, language, field_of_this_result*) (symtab.c:2016)
==26907== by 0x8C098A: lookup_symbol_in_language(char const*, block const*, domain_enum_tag, language, field_of_this_result*) (symtab.c:1824)
==26907== by 0x8C0A04: lookup_symbol(char const*, block const*, domain_enum_tag, field_of_this_result*) (symtab.c:1836)
==26907== by 0x82CBE1: find_label_symbols(linespec_state*, VEC_symbolp*, VEC_symbolp**, char const*) (linespec.c:3390)
==26907== by 0x828FB5: linespec_parse_basic(ls_parser*) (linespec.c:1620)
==26907== by 0x82A78F: parse_linespec(ls_parser*, char const*) (linespec.c:2307)
==26907== Address 0x910f97c is 0 bytes after a block of size 12 alloc'd
==26907== at 0x4C28BF6: malloc (vg_replace_malloc.c:299)
==26907== by 0x74E737: xmalloc (common-utils.c:43)
==26907== by 0x74EAF4: savestring(char const*, unsigned long) (common-utils.c:179)
==26907== by 0x826CEF: copy_token_string(ls_token) (linespec.c:488)
==26907== by 0x828EF6: linespec_parse_basic(ls_parser*) (linespec.c:1599)
==26907== by 0x82A78F: parse_linespec(ls_parser*, char const*) (linespec.c:2307)
==26907== by 0x82AE27: event_location_to_sals(ls_parser*, event_location const*) (linespec.c:2469)
==26907== by 0x82B1CE: decode_line_full(event_location const*, int, program_space*, symtab*, int, linespec_result*, char const*, char const*) (linespec.c:2557)
==26907== by 0x720C8A: parse_breakpoint_sals(event_location const*, linespec_result*) (breakpoint.c:9550)
==26907== by 0x72A2F7: create_sals_from_location_default(event_location const*, linespec_result*, bptype) (breakpoint.c:14484)
==26907== by 0x727F86: bkpt_create_sals_from_location(event_location const*, linespec_result*, bptype) (breakpoint.c:13219)
==26907== by 0x72146D: create_breakpoint(gdbarch*, event_location const*, char*, int, char*, int, int, bptype, int, auto_boolean, breakpoint_ops const*, int, int, int, unsigned int) (breakpoint.c:9759)
Tests exercising this will be added further down the series.
gdb/ChangeLog:
2017-07-20 Pedro Alves <palves@redhat.com>
* cp-support.c (cp_find_first_component_aux): Add missing case for
end of string.
2017-07-20 18:58:17 +02:00
|
|
|
|
2017-07-20 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-support.c (cp_find_first_component_aux): Add missing case for
|
|
|
|
|
end of string.
|
|
|
|
|
|
2017-07-18 17:06:17 +02:00
|
|
|
|
2017-07-18 David Blaikie <dblaikie@gmail.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (create_cus_hash_table): Re-add lost initialization
|
|
|
|
|
of dwo_cu's dwo_file.
|
|
|
|
|
|
Remove one line comment
This patch is going to remove a line comment, which was added in this
commit,
commit 55fea07
Author: Jim Kingdon <jkingdon@engr.sgi.com>
Date: Tue Sep 14 01:08:22 1993 +0000
* remote.c: Define remote_debug to 0 and #if 0 baud_rate. Temporary
hack so this file compiles again.
* remote-utils.c (gr_multi_scan): Cast return value from alloca.
(gr_multi_scan): #if 0 never-reached return(-1).
and at that moment, remote_prepare_to_store does updates some global
state,
static void
remote_prepare_to_store ()
{
/* Make sure the entire registers array is valid. */
read_register_bytes (0, (char *)NULL, REGISTER_BYTES);
}
However, now, remote_prepare_to_store doesn't do that at all, and
rsa->sizeof_g_packet is updated in init_remote_state, so the line of
comment is out of date, and this patch removes it.
gdb:
2017-07-18 Yao Qi <yao.qi@linaro.org>
* remote.c (store_registers_using_G): Remove one line comment.
2017-07-18 13:57:19 +02:00
|
|
|
|
2017-07-18 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* remote.c (store_registers_using_G): Remove one line comment.
|
|
|
|
|
|
2017-07-18 13:46:14 +02:00
|
|
|
|
2017-07-18 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_cpy): Simplify it.
|
|
|
|
|
(regcache::cpy_no_passthrough): Remove it.
|
|
|
|
|
* regcache.h (cpy_no_passthrough): Remove it.
|
|
|
|
|
(regcache_dup, regcache_cpy): Update comments.
|
|
|
|
|
|
2017-07-18 12:38:17 +02:00
|
|
|
|
2017-07-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* remote-sim.c (sim_command_completer): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
|
A smarter linespec completer
Continuing the theme of the explicit locations patch, this patch gets
rid of the need for quoting function names in linespec TAB completion.
To recap, when you have overloads in your program, and you want to set
a breakpoint in one of them:
void function(int); // set breakpoint here.
void function(long);
(gdb) b function(i[TAB]
<all the symbols in the program that start with "i" are uselessly shown...>
This patch gets rid of the need for quoting by switching the linespec
completer to use the custom completion word point mechanism added in
the previous explicit location patch (extending it as needed), to
correctly determine the right completion word point. In the case
above, we want the completer to figure out that it's completing a
function name that starts with "function(i", and it now does.
We also want the completer to know when it's potentially completing a
source file name, for:
(gdb) break source.[TAB] -> source.c:
(gdb) break source.c: # Type line number or function name now
And we want it to know to complete label names, which it doesn't today:
(gdb) break function:lab[TAB]
etc., etc.
So what we want is for completion to grok the input string as closely
to how the linespec parser groks it.
With that in mind, the solution suggests itself - make the linespec
completer use the same parsing code as normal linespec parsing.
That's what the patch does. The old completer is replaced by one that
reuses the actual linespec parser as much as possible. This (ideally)
eliminate differences between what completion understands and actually
setting breakpoints understands by design.
The completer now offers sensible completion candidates depending on
which component of the linespec is being completed, source filename,
function, line number, expression, and (a new addition), labels. For
example, when completing the function part, we now show the full name
of the method as completion candidates, instead of showing whatever
comes after what readline considered the word break character:
(gdb) break klass::method[TAB]
klass:method1(int)
klass:method2()
If input is past the function, then we now offer keyword condidates:
(gdb) b function(int) [TAB]
if task thread
If input is past a keyword, we offer expression completion, which is
different from linespec completion:
(gdb) b main if 1 + glo[TAB]
global
(e.g., completes on types, struct data fields, etc.)
As mentioned, this teaches the linespec completer about completing
label symbols too:
(gdb) b source.c:function:lab[TAB]
A nice convenience is that when completion uniquely matches a source
name, gdb adds the ":" automatically for you:
(gdb) b filenam[TAB]
(gdb) b filename.c: # ':' auto-added, cursor right after it.
It's the little details. :-)
I worked on this patch in parallel with writing the (big) testcase
added closer to the end of the series, which exercises many many
tricky cases around quoting and whitespace insertion placement. In
general, I think it now all Just Works.
gdb/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* completer.c (complete_source_filenames): New function.
(complete_address_and_linespec_locations): New function.
(location_completer): Use complete_address_and_linespec_locations.
(completion_tracker::build_completion_result): Honor the tracker's
request to suppress append.
* completer.h (completion_tracker::suppress_append_ws)
(completion_tracker::set_suppress_append_ws): New methods.
(completion_tracker::m_suppress_append_ws): New field.
(complete_source_filenames): New declaration.
* linespec.c (linespec_complete_what): New.
(struct ls_parser) <complete_what, completion_word,
completion_quote_char, completion_quote_end, completion_tracker>:
New fields.
(string_find_incomplete_keyword_at_end): New.
(linespec_lexer_lex_string): Record quote char. If in completion
mode, don't throw.
(linespec_lexer_consume_token): Advance the completion word point.
(linespec_lexer_peek_token): Save/restore completion info.
(save_stream_and_consume_token): New.
(set_completion_after_number): New.
(linespec_parse_basic): Set what to complete next depending on
token. Handle function and label completions specially.
(parse_linespec): Disable objc shortcut in completion mode. Set
what to complete next depending on token type. Skip keyword if in
completion mode.
(complete_linespec_component, linespec_complete): New.
* linespec.h (linespec_complete): Declare.
gdb/testsuite/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* gdb.base/completion.exp: Adjust expected output.
* gdb.linespec/ls-errs.exp: Don't send tab characters, now that
the completer works.
2017-07-17 21:08:02 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* completer.c (complete_source_filenames): New function.
|
|
|
|
|
(complete_address_and_linespec_locations): New function.
|
|
|
|
|
(location_completer): Use complete_address_and_linespec_locations.
|
|
|
|
|
(completion_tracker::build_completion_result): Honor the tracker's
|
|
|
|
|
request to suppress append.
|
|
|
|
|
* completer.h (completion_tracker::suppress_append_ws)
|
|
|
|
|
(completion_tracker::set_suppress_append_ws): New methods.
|
|
|
|
|
(completion_tracker::m_suppress_append_ws): New field.
|
|
|
|
|
(complete_source_filenames): New declaration.
|
|
|
|
|
* linespec.c (linespec_complete_what): New.
|
|
|
|
|
(struct ls_parser) <complete_what, completion_word,
|
|
|
|
|
completion_quote_char, completion_quote_end, completion_tracker>:
|
|
|
|
|
New fields.
|
|
|
|
|
(string_find_incomplete_keyword_at_end): New.
|
|
|
|
|
(linespec_lexer_lex_string): Record quote char. If in completion
|
|
|
|
|
mode, don't throw.
|
|
|
|
|
(linespec_lexer_consume_token): Advance the completion word point.
|
|
|
|
|
(linespec_lexer_peek_token): Save/restore completion info.
|
|
|
|
|
(save_stream_and_consume_token): New.
|
|
|
|
|
(set_completion_after_number): New.
|
|
|
|
|
(linespec_parse_basic): Set what to complete next depending on
|
|
|
|
|
token. Handle function and label completions specially.
|
|
|
|
|
(parse_linespec): Disable objc shortcut in completion mode. Set
|
|
|
|
|
what to complete next depending on token type. Skip keyword if in
|
|
|
|
|
completion mode.
|
|
|
|
|
(complete_linespec_component, linespec_complete): New.
|
|
|
|
|
* linespec.h (linespec_complete): Declare.
|
|
|
|
|
|
2017-07-17 21:28:12 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* linespec.c (linespec_lexer_lex_string, find_toplevel_char):
|
|
|
|
|
Handle 'operator<' / 'operator<<'.
|
|
|
|
|
|
2017-07-17 21:24:41 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* completer.c (collect_explicit_location_matches): Handle
|
|
|
|
|
MATCH_LABEL.
|
|
|
|
|
(convert_explicit_location_to_linespec): New, factored out from
|
|
|
|
|
...
|
|
|
|
|
(convert_explicit_location_to_sals): ... this.
|
|
|
|
|
(complete_label): New.
|
|
|
|
|
(linespec_complete_label, find_label_symbols_in_block): New.
|
|
|
|
|
(find_label_symbols): Add completion_mode parameter and adjust to
|
|
|
|
|
call find_label_symbols_in_block.
|
|
|
|
|
* linespec.h (linespec_complete_label): Declare.
|
|
|
|
|
|
Rewrite/enhance explicit locations completer, parse left->right
One of the most annoying (to me) things about GDB's completion is when
you have overloads in your program, and you want to set a breakpoint
in one of them:
void function(int); // set breakpoint here.
void function(long);
(gdb) b -f func[TAB]
(gdb) b -f function( # ok, gdb completed as much as possible.
(gdb) b -f function([TAB] # show me the overloads, please.
<_all_ symbols in the program are shown...>
E.g., when debugging GDB, that'd be:
(gdb) b -f function([TAB]
(anonymous namespace)::get_global()::global pt_insn_get_offset@plt scm_new_port_table_entry
asprintf pt_pkt_alloc_decoder scm_new_port_table_entry@plt
asprintf@plt pt_pkt_alloc_decoder@plt scm_out_of_range
bt_ctf_get_char_array pt_pkt_sync_forward scm_out_of_range@plt
bt_ctf_get_char_array@plt pt_pkt_sync_forward@plt scm_putc
bt_ctf_get_uint64 pwrite scm_putc@plt
bt_ctf_get_uint64@plt pwrite@plt scm_reverse_x
bt_ctf_iter_read_event PyErr_Restore scm_reverse_x@plt
bt_ctf_iter_read_event@plt PyErr_Restore@plt scm_set_port_filename_x
<snip...>
Now that's a load of completely useless completions.
The reason GDB offers those is that the completer relies on readline
figuring out the completion word point in the input line based on the
language's word break characters, which include "(". So readline
tells the completer to complete on "", the string that is after '('.
Likewise, if you type "function(i[TAB]" to try to complete to "int",
you're out of luck. GDB shows you all the symbols in the program that
start with "i"... This makes sense for the expression completer, as
what you'd want to type is e.g., a global variable, say:
(gdb) print function(i[TAB]
but, it makes no sense when specifying a function name for a
breakpoint location.
To get around that limitation, users need to quote the function name,
like:
(gdb) b -f 'function([TAB]
function(int) function(long)
(gdb) b 'function(i[TAB]
(gdb) b 'function(int)' # now completes correctly!
Note that the quoting is only necessary for completion. Creating the
breakpoint does not require the quoting:
(gdb) b -f function(int) [RET]
Breakpoint 1 at ....
This patch removes this limitation.
(
Actually, it's a necessary patch, though not sufficient. That'll
start working correctly by the end of the series. With this patch, if try it,
you'll see:
(gdb) b -f function(i[TAB]
(gdb) b -f function
i.e., gdb strips everything after the "(". That's caused by some code
in symtab.c that'll be eliminated further down the series. These
patches are all unfortunately interrelated, which is also the reason
new tests only appear much later in the series.
But let's ignore that reality for the remainder of the description.
)
So... this patch gets rid of the need for quoting.
It does that by adding a way for a completer to control the exact
completion word point that readline should start the completion
request for, instead of letting readline try to figure it out using
the current language's word break chars array, and often failing.
In the case above, we want the completer to figure out that it's
completing a function name that starts with "function(i". It now
does.
It took me a while to figure out a way to ask readline to "use this
exact word point", and for a while I feared that it'd be impossible
with current readline (and having to rely on master readline for core
functionality is something I'd like to avoid very much). Eventually,
after several different attempts, I came up with what is described in
the comment above gdb_custom_word_point_brkchars in the patch.
With this patch, the handle_brkchars phase of the explicit location
completer advances the expected word point as it parses the input line
left to right, until it figures out exactly what we're completing,
instead of expecting readline to break the string using the word break
characters, and then having the completer heuristically fix up a bad
decision by parsing the input string backwards. This allows correctly
knowning that we're completing a symbol name after -function, complete
functions without quoting, etc.
Later, we'll make use of this same mechanims to implement a proper
linespec completer that avoids need for quoting too.
gdb/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* ada-lang.c (ada_collect_symbol_completion_matches): Add
complete_symbol_mode parameter.
* cli/cli-cmds.c (complete_command): Get the completion result out
of the handle_brkchars tracker if used a custom word point.
* completer.c: Include "linespec.h".
(enum explicit_location_match_type) <MATCH_LINE>: New enumerator.
(advance_to_expression_complete_word_point): New.
(completion_tracker::completes_to_completion_word): New.
(complete_files_symbols): Pass down
complete_symbol_mode::EXPRESSION.
(explicit_options, probe_options): New.
(collect_explicit_location_matches): Complete on the
explictit_loc->foo instead of word. Use
linespec_complete_function. Handle MATCH_LINE. Handle offering
keyword and options completions.
(backup_text_ptr): Delete.
(skip_keyword): New.
(complete_explicit_location): Remove 'word' parameter. Add
language, quoted_arg_start and quoted_arg_end parameters.
Rewrite, parsing left to right.
(location_completer): Rewrite.
(location_completer_handle_brkchars): New function.
(symbol_completer): Pass down complete_symbol_mode::EXPRESSION.
(enum complete_line_internal_reason): Adjust comments.
(completion_tracker::discard_completions): New.
(completer_handle_brkchars_func_for_completer): Handle
location_completer.
(gdb_custom_word_point_brkchars)
(gdb_org_rl_basic_quote_characters): New.
(gdb_completion_word_break_characters_throw)
(completion_find_completion_word): Handle trackers that use a
custom word point.
(completion_tracker::advance_custom_word_point_by): New.
(completion_tracker::build_completion_result): Don't rely on
readline appending the quote char.
(gdb_rl_attempted_completion_function_throw): Handle trackers that
use a custom word point.
(gdb_rl_attempted_completion_function): Restore
rl_basic_quote_characters.
* completer.h (class completion_tracker): Extend intro comment.
(completion_tracker::set_quote_char)
(completion_tracker::quote_char)
(completion_tracker::set_use_custom_word_point)
(completion_tracker::use_custom_word_point)
(completion_tracker::custom_word_point)
(completion_tracker::set_custom_word_point)
(completion_tracker::advance_custom_word_point_by)
(completion_tracker::completes_to_completion_word)
(completion_tracker::discard_completions): New methods.
(completion_tracker::m_quote_char)
(completion_tracker::m_use_custom_word_point)
(completion_tracker::m_custom_word_point): New fields.
(advance_to_expression_complete_word_point): Declare.
* f-lang.c (f_collect_symbol_completion_matches): Add
complete_symbol_mode parameter.
* language.h (struct language_defn)
<la_collect_symbol_completion_matches>: Add complete_symbol_mode
parameter.
* linespec.c (linespec_keywords): Add NULL terminator. Make extern.
(linespec_complete_function): New function.
(linespec_lexer_lex_keyword): Adjust.
* linespec.h (linespec_keywords, linespec_complete_function): New
declarations.
* location.c (find_end_quote): New function.
(explicit_location_lex_one): Add explicit_completion_info
parameter. Save quoting info. Don't throw if being called for
completion. Don't handle Ada operators here.
(is_cp_operator, skip_op_false_positives, first_of)
(explicit_location_lex_one_function): New function.
(string_to_explicit_location): Replace 'dont_throw' parameter with
an explicit_completion_info pointer parameter. Handle it. Don't
use explicit_location_lex_one to lex function names. Use
explicit_location_lex_one_function instead.
* location.h (struct explicit_completion_info): New.
(string_to_explicit_location): Replace 'dont_throw' parameter with
an explicit_completion_info pointer parameter.
* symtab.c (default_collect_symbol_completion_matches_break_on):
Add complete_symbol_mode parameter. Handle LINESPEC mode.
(default_collect_symbol_completion_matches)
(collect_symbol_completion_matches): Add complete_symbol_mode
parameter.
(collect_symbol_completion_matches_type): Pass down
complete_symbol_mode::EXPRESSION.
(collect_file_symbol_completion_matches): Add complete_symbol_mode
parameter. Handle LINESPEC mode.
* symtab.h (complete_symbol_mode): New.
(default_collect_symbol_completion_matches_break_on)
(default_collect_symbol_completion_matches)
(collect_symbol_completion_matches)
(collect_file_symbol_completion_matches): Add complete_symbol_mode
parameter.
gdb/testsuite/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* gdb.linespec/ls-errs.exp (do_test): Adjust expected output.
2017-07-17 21:21:33 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_collect_symbol_completion_matches): Add
|
|
|
|
|
complete_symbol_mode parameter.
|
|
|
|
|
* cli/cli-cmds.c (complete_command): Get the completion result out
|
|
|
|
|
of the handle_brkchars tracker if used a custom word point.
|
|
|
|
|
* completer.c: Include "linespec.h".
|
|
|
|
|
(enum explicit_location_match_type) <MATCH_LINE>: New enumerator.
|
|
|
|
|
(advance_to_expression_complete_word_point): New.
|
|
|
|
|
(completion_tracker::completes_to_completion_word): New.
|
|
|
|
|
(complete_files_symbols): Pass down
|
|
|
|
|
complete_symbol_mode::EXPRESSION.
|
|
|
|
|
(explicit_options, probe_options): New.
|
|
|
|
|
(collect_explicit_location_matches): Complete on the
|
|
|
|
|
explictit_loc->foo instead of word. Use
|
|
|
|
|
linespec_complete_function. Handle MATCH_LINE. Handle offering
|
|
|
|
|
keyword and options completions.
|
|
|
|
|
(backup_text_ptr): Delete.
|
|
|
|
|
(skip_keyword): New.
|
|
|
|
|
(complete_explicit_location): Remove 'word' parameter. Add
|
|
|
|
|
language, quoted_arg_start and quoted_arg_end parameters.
|
|
|
|
|
Rewrite, parsing left to right.
|
|
|
|
|
(location_completer): Rewrite.
|
|
|
|
|
(location_completer_handle_brkchars): New function.
|
|
|
|
|
(symbol_completer): Pass down complete_symbol_mode::EXPRESSION.
|
|
|
|
|
(enum complete_line_internal_reason): Adjust comments.
|
|
|
|
|
(completion_tracker::discard_completions): New.
|
|
|
|
|
(completer_handle_brkchars_func_for_completer): Handle
|
|
|
|
|
location_completer.
|
|
|
|
|
(gdb_custom_word_point_brkchars)
|
|
|
|
|
(gdb_org_rl_basic_quote_characters): New.
|
|
|
|
|
(gdb_completion_word_break_characters_throw)
|
|
|
|
|
(completion_find_completion_word): Handle trackers that use a
|
|
|
|
|
custom word point.
|
|
|
|
|
(completion_tracker::advance_custom_word_point_by): New.
|
|
|
|
|
(completion_tracker::build_completion_result): Don't rely on
|
|
|
|
|
readline appending the quote char.
|
|
|
|
|
(gdb_rl_attempted_completion_function_throw): Handle trackers that
|
|
|
|
|
use a custom word point.
|
|
|
|
|
(gdb_rl_attempted_completion_function): Restore
|
|
|
|
|
rl_basic_quote_characters.
|
|
|
|
|
* completer.h (class completion_tracker): Extend intro comment.
|
|
|
|
|
(completion_tracker::set_quote_char)
|
|
|
|
|
(completion_tracker::quote_char)
|
|
|
|
|
(completion_tracker::set_use_custom_word_point)
|
|
|
|
|
(completion_tracker::use_custom_word_point)
|
|
|
|
|
(completion_tracker::custom_word_point)
|
|
|
|
|
(completion_tracker::set_custom_word_point)
|
|
|
|
|
(completion_tracker::advance_custom_word_point_by)
|
|
|
|
|
(completion_tracker::completes_to_completion_word)
|
|
|
|
|
(completion_tracker::discard_completions): New methods.
|
|
|
|
|
(completion_tracker::m_quote_char)
|
|
|
|
|
(completion_tracker::m_use_custom_word_point)
|
|
|
|
|
(completion_tracker::m_custom_word_point): New fields.
|
|
|
|
|
(advance_to_expression_complete_word_point): Declare.
|
|
|
|
|
* f-lang.c (f_collect_symbol_completion_matches): Add
|
|
|
|
|
complete_symbol_mode parameter.
|
|
|
|
|
* language.h (struct language_defn)
|
|
|
|
|
<la_collect_symbol_completion_matches>: Add complete_symbol_mode
|
|
|
|
|
parameter.
|
|
|
|
|
* linespec.c (linespec_keywords): Add NULL terminator. Make extern.
|
|
|
|
|
(linespec_complete_function): New function.
|
|
|
|
|
(linespec_lexer_lex_keyword): Adjust.
|
|
|
|
|
* linespec.h (linespec_keywords, linespec_complete_function): New
|
|
|
|
|
declarations.
|
|
|
|
|
* location.c (find_end_quote): New function.
|
|
|
|
|
(explicit_location_lex_one): Add explicit_completion_info
|
|
|
|
|
parameter. Save quoting info. Don't throw if being called for
|
|
|
|
|
completion. Don't handle Ada operators here.
|
|
|
|
|
(is_cp_operator, skip_op_false_positives, first_of)
|
|
|
|
|
(explicit_location_lex_one_function): New function.
|
|
|
|
|
(string_to_explicit_location): Replace 'dont_throw' parameter with
|
|
|
|
|
an explicit_completion_info pointer parameter. Handle it. Don't
|
|
|
|
|
use explicit_location_lex_one to lex function names. Use
|
|
|
|
|
explicit_location_lex_one_function instead.
|
|
|
|
|
* location.h (struct explicit_completion_info): New.
|
|
|
|
|
(string_to_explicit_location): Replace 'dont_throw' parameter with
|
|
|
|
|
an explicit_completion_info pointer parameter.
|
|
|
|
|
* symtab.c (default_collect_symbol_completion_matches_break_on):
|
|
|
|
|
Add complete_symbol_mode parameter. Handle LINESPEC mode.
|
|
|
|
|
(default_collect_symbol_completion_matches)
|
|
|
|
|
(collect_symbol_completion_matches): Add complete_symbol_mode
|
|
|
|
|
parameter.
|
|
|
|
|
(collect_symbol_completion_matches_type): Pass down
|
|
|
|
|
complete_symbol_mode::EXPRESSION.
|
|
|
|
|
(collect_file_symbol_completion_matches): Add complete_symbol_mode
|
|
|
|
|
parameter. Handle LINESPEC mode.
|
|
|
|
|
* symtab.h (complete_symbol_mode): New.
|
|
|
|
|
(default_collect_symbol_completion_matches_break_on)
|
|
|
|
|
(default_collect_symbol_completion_matches)
|
|
|
|
|
(collect_symbol_completion_matches)
|
|
|
|
|
(collect_file_symbol_completion_matches): Add complete_symbol_mode
|
|
|
|
|
parameter.
|
|
|
|
|
|
2017-07-17 21:08:48 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (enum class strncmp_iw_mode): New.
|
|
|
|
|
(strcmp_iw): Rename to ...
|
|
|
|
|
(strncmp_iw_with_mode): ... this. Add string2_len and mode
|
|
|
|
|
parameters. Handle them.
|
|
|
|
|
(strncmp_iw): New.
|
|
|
|
|
(strcmp_iw): Reimplement as wrapper around strncmp_iw_with_mode.
|
|
|
|
|
* utils.h (strncmp_iw): Declare.
|
|
|
|
|
(strcmp_iw): Move describing comments here.
|
|
|
|
|
|
2017-07-17 16:51:55 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* c-exp.y (operator_stoken): Use CP_OPERATOR_LEN and
|
|
|
|
|
CP_OPERATOR_STR.
|
|
|
|
|
* c-typeprint.c (is_type_conversion_operator): Use
|
|
|
|
|
CP_OPERATOR_STR.
|
|
|
|
|
* cp-support.c (LENGTH_OF_OPERATOR): Delete.
|
|
|
|
|
(cp_find_first_component_aux): Use CP_OPERATOR_STR and
|
|
|
|
|
CP_OPERATOR_LEN.
|
|
|
|
|
* cp-support.h (CP_OPERATOR_STR, CP_OPERATOR_LEN): New.
|
|
|
|
|
* gnu-v2-abi.c (gnuv2_is_operator_name): Use CP_OPERATOR_STR.
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_is_operator_name): Use CP_OPERATOR_STR.
|
|
|
|
|
* linespec.c (linespec_lexer_lex_string): Use CP_OPERATOR_LEN and
|
|
|
|
|
CP_OPERATOR_STR.
|
|
|
|
|
* location.c: Include "cp-support.h".
|
|
|
|
|
(explicit_location_lex_one): Use CP_OPERATOR_LEN and
|
|
|
|
|
CP_OPERATOR_STR.
|
|
|
|
|
* symtab.c (operator_chars): Use CP_OPERATOR_STR and
|
|
|
|
|
CP_OPERATOR_LEN.
|
|
|
|
|
|
"complete" command and completion word break characters
The linespec/locations/completer testcase added later in the series
tests every completion with both TAB completion and the "complete"
command. This exposed problems in the "complete" command, around
determining the completion word point.
First, the complete command has a too-simple approximation of what
readline's TAB-completion code does to find the completion word point.
Unfortunately, readline doesn't expose the functionality it uses
internally, so to fix this this patch copies over the relevant code,
and adjusts it a bit to better fit the use cases we need it for.
(Specifically, our version avoids relying on the
rl_word_break_characters, etc. globals, and instead takes those as
arguments.)
A following patch will want to use this function for TAB-completion
too, but the "complete" command was a good excuse to split this to a
separate patch.
Then, notice how the complete_command does not call into the completer
for the command being completed to determine the right set of word
break characters. It always uses the default set. That is fixed by
having the "complete" command call into complete_line_internal for a
full handle_brkchars phase, just TAB-completion.
gdb/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* cli/cli-cmds.c (complete_command): Use a completion tracker
along with completion_find_completion_word for handle_brkchars
phase.
* completer.c (RL_QF_SINGLE_QUOTE, RL_QF_DOUBLE_QUOTE)
(RL_QF_BACKSLASH, RL_QF_OTHER_QUOTE): New.
(struct gdb_rl_completion_word_info): New.
(gdb_rl_find_completion_word): New.
(completion_find_completion_word): New.
* completer.h (completion_find_completion_word): Declare.
2017-07-17 16:30:59 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (complete_command): Use a completion tracker
|
|
|
|
|
along with completion_find_completion_word for handle_brkchars
|
|
|
|
|
phase.
|
|
|
|
|
* completer.c (RL_QF_SINGLE_QUOTE, RL_QF_DOUBLE_QUOTE)
|
|
|
|
|
(RL_QF_BACKSLASH, RL_QF_OTHER_QUOTE): New.
|
|
|
|
|
(struct gdb_rl_completion_word_info): New.
|
|
|
|
|
(gdb_rl_find_completion_word): New.
|
|
|
|
|
(completion_find_completion_word): New.
|
|
|
|
|
* completer.h (completion_find_completion_word): Declare.
|
|
|
|
|
|
Introduce class completion_tracker & rewrite completion<->readline interaction
This patch reworks the whole completion machinery, and prepares it
for later enhancements.
Adds a new "completion_tracker" class that is meant to hold everything
about the state of the current completion operation.
This class now has the responsibility of tracking the list of
completion matches, and checking whether the max completions limit has
been reached. You can look at this as this patch starting out by
C++fying the existing "completion_tracker" in symtab.c (it's just an
htab_t typedef currently), moving it to completer.h/c, and then making
it a class/generalizing/enhancing it.
Unlike with the current tracking, completion_tracker now checks
whether the limit has been reached on each completion match list
insertion. This both simplifies the max-completions handling code
(maybe_add_completion_enum is gone, for example), and is a
prerequisite for follow up patches.
The current completion_tracker is only used for symbol completions,
and the symbol code gets at the current instance via globals. This
patch cleans that up by adding a completion_tracker reference to the
signature of the completion functions, and passing the tracker around
everywhere necessary.
Then, the patch changes how the completion match list is handed over
to readline. Currently, we're using the rl_completion_entry_function
readline entry point, and the patch switches to
rl_attempted_completion_function. A following patch will want to let
GDB itself decide the common completion prefix between all matches
(what readline calls the "lowest common denominator"), instead of
having readline compute it, and that's not possible with the
rl_completion_entry_function entry point. Also,
rl_attempted_completion_function lets GDB hand over the match list to
readline as an array in one go instead of passing down matches one by
one, so from that angle it's a nicer entry point anyway.
Lastly, the patch catches exceptions around the readline entry points,
because we can't let C++ exceptions cross readline. We handle that in
the readline input entry point, but the completion entry point isn't
guarded, so GDB can abort if completion throws. E.g., in current
master:
(gdb) b -function "fun<tab>
terminate called after throwing an instance of 'gdb_exception_RETURN_MASK_ERROR'
Aborted (core dumped)
This patch fixes that. This will be exercised in the new tests added
later on in the series.
gdb/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* ada-lang.c (symbol_completion_match): Adjust comments.
(symbol_completion_add): Replace vector parameter with
completion_tracker parameter. Use it.
(ada_make_symbol_completion_list): Rename to...
(ada_collect_symbol_completion_matches): ... this. Add
completion_tracker parameter and use it.
(ada_language_defn): Adjust.
* break-catch-syscall.c (catch_syscall_completer): Adjust
prototype and work with completion_tracker instead of VEC.
* breakpoint.c (condition_completer): Adjust prototype and work
with completion_tracker instead of VEC.
* c-lang.c (c_language_defn, cplus_language_defn)
(asm_language_defn, minimal_language_defn): Adjust to renames.
* cli/cli-cmds.c (complete_command): Rework using
completion_tracker. Catch exceptions when completing.
* cli/cli-decode.c (integer_unlimited_completer)
(complete_on_cmdlist, complete_on_enum): Adjust prototype and work
with completion_tracker instead of VEC.
* command.h (struct completion_tracker): Forward declare.
(completer_ftype, completer_handle_brkchars_ftype): Change
types.
(complete_on_cmdlist, complete_on_enum): Adjust.
* completer.c: Include <algorithm>.
(struct gdb_completer_state): New.
(current_completion): New global.
(readline_line_completion_function): Delete.
(noop_completer, filename_completer)
(filename_completer_handle_brkchars, complete_files_symbols)
(linespec_location_completer): Adjust to work with a
completion_tracker instead of a VEC.
(string_or_empty): New.
(collect_explicit_location_matches): Adjust to work with a
completion_tracker instead of a VEC.
(explicit_location_completer): Rename to ...
(complete_explicit_location): ... this and adjust to work with a
completion_tracker instead of a VEC.
(location_completer): Adjust to work with a completion_tracker
instead of a VEC.
(add_struct_fields): Adjust to work with a completion_list instead
of VEC.
(expression_completer): Rename to ...
(complete_expression): ... this and adjust to work with a
completion_tracker instead of a VEC. Use complete_files_symbols.
(expression_completer): Reimplement on top of complete_expression.
(symbol_completer): Adjust to work with a completion_tracker
instead of a VEC.
(enum complete_line_internal_reason): Add describing comments.
(complete_line_internal_normal_command): Adjust to work with a
completion_tracker instead of a VEC.
(complete_line_internal): Rename to ...
(complete_line_internal_1): ... this and adjust to work with a
completion_tracker instead of a VEC. Assert TEXT is NULL in the
handle_brkchars phase.
(new_completion_tracker): Delete.
(complete_line_internal): Reimplement as TRY/CATCH wrapper around
complete_line_internal_1.
(free_completion_tracker): Delete.
(INITIAL_COMPLETION_HTAB_SIZE): New.
(completion_tracker::completion_tracker)
(completion_tracker::~completion_tracker): New.
(maybe_add_completion): Delete.
(completion_tracker::maybe_add_completion)
(completion_tracker::add_completion)
(completion_tracker::add_completions): New.
(throw_max_completions_reached_error): Delete.
(complete_line): Adjust to work with a completion_tracker instead
of a VEC. Don't create a completion_tracker_t or check for max
completions here.
(command_completer, command_completer_handle_brkchars)
(signal_completer, reg_or_group_completer_1)
(reg_or_group_completer, default_completer_handle_brkchars):
Adjust to work with a completion_tracker.
(gdb_completion_word_break_characters_throw): New.
(gdb_completion_word_break_characters): Reimplement.
(line_completion_function): Delete.
(completion_tracker::recompute_lowest_common_denominator)
(expand_preserving_ws)
(completion_tracker::build_completion_result)
(completion_result::completion_result)
(completion_result::completion_result)
(completion_result::~completion_result)
(completion_result::completion_result)
(completion_result::release_match_list, compare_cstrings)
(completion_result::sort_match_list)
(completion_result::reset_match_list)
(gdb_rl_attempted_completion_function_throw)
(gdb_rl_attempted_completion_function): New.
* completer.h (completion_list, struct completion_result)
(class completion_tracker): New.
(complete_line): Add completion_tracker parameter.
(readline_line_completion_function): Delete.
(gdb_rl_attempted_completion_function): New.
(noop_completer, filename_completer, expression_completer)
(location_completer, symbol_completer, command_completer)
(signal_completer, reg_or_group_completer): Update prototypes.
(completion_tracker_t, new_completion_tracker)
(make_cleanup_free_completion_tracker): Delete.
(enum maybe_add_completion_enum): Delete.
(maybe_add_completion): Delete.
(throw_max_completions_reached_error): Delete.
* corefile.c (complete_set_gnutarget): Adjust to work with a
completion_tracker instead of a VEC.
* cp-abi.c (cp_abi_completer): Adjust to work with a
completion_tracker instead of a VEC.
* d-lang.c (d_language_defn): Adjust.
* disasm.c (disassembler_options_completer): Adjust to work with a
completion_tracker instead of a VEC.
* f-lang.c (f_make_symbol_completion_list): Rename to ...
(f_collect_symbol_completion_matches): ... this. Adjust to work
with a completion_tracker instead of a VEC.
(f_language_defn): Adjust.
* go-lang.c (go_language_defn): Adjust.
* guile/scm-cmd.c (cmdscm_add_completion, cmdscm_completer):
Adjust to work with a completion_tracker instead of a VEC.
* infrun.c (handle_completer): Likewise.
* interps.c (interpreter_completer): Likewise.
* interps.h (interpreter_completer): Likewise.
* language.c (unknown_language_defn, auto_language_defn)
(local_language_defn): Adjust.
* language.h (language_defn::la_make_symbol_completion_list):
Rename to ...
(language_defn::la_collect_symbol_completion_matches): ... this
and adjust to work with a completion_tracker instead of a VEC.
* m2-lang.c (m2_language_defn): Adjust.
* objc-lang.c (objc_language_defn): Adjust.
* opencl-lang.c (opencl_language_defn): Adjust.
* p-lang.c (pascal_language_defn): Adjust.
* python/py-cmd.c (cmdpy_completer_helper): Handle NULL word.
(cmdpy_completer_handle_brkchars, cmdpy_completer): Adjust to work
with a completion_tracker.
* rust-lang.c (rust_language_defn): Adjust.
* symtab.c (free_completion_list, do_free_completion_list)
(return_val, completion_tracker): Delete.
(completion_list_add_name, completion_list_add_symbol)
(completion_list_add_msymbol, completion_list_objc_symbol)
(completion_list_add_fields, add_symtab_completions): Add
completion_tracker parameter and use it.
(default_make_symbol_completion_list_break_on_1): Rename to...
(default_collect_symbol_completion_matches_break_on): ... this.
Add completion_tracker parameter and use it instead of allocating
a completion tracker here.
(default_make_symbol_completion_list_break_on): Delete old
implementation.
(default_make_symbol_completion_list): Delete.
(default_collect_symbol_completion_matches): New.
(make_symbol_completion_list): Delete.
(collect_symbol_completion_matches): New.
(make_symbol_completion_type): Rename to ...
(collect_symbol_completion_matches_type): ... this. Add
completion_tracker parameter and use it instead of VEC.
(make_file_symbol_completion_list_1): Rename to...
(collect_file_symbol_completion_matches): ... this. Add
completion_tracker parameter and use it instead of VEC.
(make_file_symbol_completion_list): Delete.
(add_filename_to_list): Use completion_list instead of a VEC.
(add_partial_filename_data::list): Now a completion_list.
(make_source_files_completion_list): Work with a completion_list
instead of a VEC.
* symtab.h: Include "completer.h".
(default_make_symbol_completion_list_break_on)
(default_make_symbol_completion_list, make_symbol_completion_list)
(make_symbol_completion_type, make_file_symbol_completion_list)
(make_source_files_completion_list): Delete.
(default_collect_symbol_completion_matches_break_on)
(default_collect_symbol_completion_matches)
(collect_symbol_completion_matches)
(collect_symbol_completion_matches_type)
(collect_file_symbol_completion_matches)
(make_source_files_completion_list): New.
* top.c (init_main): Don't install a rl_completion_entry_function
hook. Install a rl_attempted_completion_function hook instead.
* tui/tui-layout.c (layout_completer): Adjust to work with a
completion_tracker.
* tui/tui-regs.c (tui_reggroup_completer):
* tui/tui-win.c (window_name_completer, focus_completer)
(winheight_completer): Adjust to work with a completion_tracker.
* value.c: Include "completer.h".
(complete_internalvar): Adjust to work with a completion_tracker.
* value.h (complete_internalvar): Likewise.
2017-07-17 15:45:59 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (symbol_completion_match): Adjust comments.
|
|
|
|
|
(symbol_completion_add): Replace vector parameter with
|
|
|
|
|
completion_tracker parameter. Use it.
|
|
|
|
|
(ada_make_symbol_completion_list): Rename to...
|
|
|
|
|
(ada_collect_symbol_completion_matches): ... this. Add
|
|
|
|
|
completion_tracker parameter and use it.
|
|
|
|
|
(ada_language_defn): Adjust.
|
|
|
|
|
* break-catch-syscall.c (catch_syscall_completer): Adjust
|
|
|
|
|
prototype and work with completion_tracker instead of VEC.
|
|
|
|
|
* breakpoint.c (condition_completer): Adjust prototype and work
|
|
|
|
|
with completion_tracker instead of VEC.
|
|
|
|
|
* c-lang.c (c_language_defn, cplus_language_defn)
|
|
|
|
|
(asm_language_defn, minimal_language_defn): Adjust to renames.
|
|
|
|
|
* cli/cli-cmds.c (complete_command): Rework using
|
|
|
|
|
completion_tracker. Catch exceptions when completing.
|
|
|
|
|
* cli/cli-decode.c (integer_unlimited_completer)
|
|
|
|
|
(complete_on_cmdlist, complete_on_enum): Adjust prototype and work
|
|
|
|
|
with completion_tracker instead of VEC.
|
|
|
|
|
* command.h (struct completion_tracker): Forward declare.
|
|
|
|
|
(completer_ftype, completer_handle_brkchars_ftype): Change
|
|
|
|
|
types.
|
|
|
|
|
(complete_on_cmdlist, complete_on_enum): Adjust.
|
|
|
|
|
* completer.c: Include <algorithm>.
|
|
|
|
|
(struct gdb_completer_state): New.
|
|
|
|
|
(current_completion): New global.
|
|
|
|
|
(readline_line_completion_function): Delete.
|
|
|
|
|
(noop_completer, filename_completer)
|
|
|
|
|
(filename_completer_handle_brkchars, complete_files_symbols)
|
|
|
|
|
(linespec_location_completer): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
(string_or_empty): New.
|
|
|
|
|
(collect_explicit_location_matches): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
(explicit_location_completer): Rename to ...
|
|
|
|
|
(complete_explicit_location): ... this and adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
(location_completer): Adjust to work with a completion_tracker
|
|
|
|
|
instead of a VEC.
|
|
|
|
|
(add_struct_fields): Adjust to work with a completion_list instead
|
|
|
|
|
of VEC.
|
|
|
|
|
(expression_completer): Rename to ...
|
|
|
|
|
(complete_expression): ... this and adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC. Use complete_files_symbols.
|
|
|
|
|
(expression_completer): Reimplement on top of complete_expression.
|
|
|
|
|
(symbol_completer): Adjust to work with a completion_tracker
|
|
|
|
|
instead of a VEC.
|
|
|
|
|
(enum complete_line_internal_reason): Add describing comments.
|
|
|
|
|
(complete_line_internal_normal_command): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
(complete_line_internal): Rename to ...
|
|
|
|
|
(complete_line_internal_1): ... this and adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC. Assert TEXT is NULL in the
|
|
|
|
|
handle_brkchars phase.
|
|
|
|
|
(new_completion_tracker): Delete.
|
|
|
|
|
(complete_line_internal): Reimplement as TRY/CATCH wrapper around
|
|
|
|
|
complete_line_internal_1.
|
|
|
|
|
(free_completion_tracker): Delete.
|
|
|
|
|
(INITIAL_COMPLETION_HTAB_SIZE): New.
|
|
|
|
|
(completion_tracker::completion_tracker)
|
|
|
|
|
(completion_tracker::~completion_tracker): New.
|
|
|
|
|
(maybe_add_completion): Delete.
|
|
|
|
|
(completion_tracker::maybe_add_completion)
|
|
|
|
|
(completion_tracker::add_completion)
|
|
|
|
|
(completion_tracker::add_completions): New.
|
|
|
|
|
(throw_max_completions_reached_error): Delete.
|
|
|
|
|
(complete_line): Adjust to work with a completion_tracker instead
|
|
|
|
|
of a VEC. Don't create a completion_tracker_t or check for max
|
|
|
|
|
completions here.
|
|
|
|
|
(command_completer, command_completer_handle_brkchars)
|
|
|
|
|
(signal_completer, reg_or_group_completer_1)
|
|
|
|
|
(reg_or_group_completer, default_completer_handle_brkchars):
|
|
|
|
|
Adjust to work with a completion_tracker.
|
|
|
|
|
(gdb_completion_word_break_characters_throw): New.
|
|
|
|
|
(gdb_completion_word_break_characters): Reimplement.
|
|
|
|
|
(line_completion_function): Delete.
|
|
|
|
|
(completion_tracker::recompute_lowest_common_denominator)
|
|
|
|
|
(expand_preserving_ws)
|
|
|
|
|
(completion_tracker::build_completion_result)
|
|
|
|
|
(completion_result::completion_result)
|
|
|
|
|
(completion_result::completion_result)
|
|
|
|
|
(completion_result::~completion_result)
|
|
|
|
|
(completion_result::completion_result)
|
|
|
|
|
(completion_result::release_match_list, compare_cstrings)
|
|
|
|
|
(completion_result::sort_match_list)
|
|
|
|
|
(completion_result::reset_match_list)
|
|
|
|
|
(gdb_rl_attempted_completion_function_throw)
|
|
|
|
|
(gdb_rl_attempted_completion_function): New.
|
|
|
|
|
* completer.h (completion_list, struct completion_result)
|
|
|
|
|
(class completion_tracker): New.
|
|
|
|
|
(complete_line): Add completion_tracker parameter.
|
|
|
|
|
(readline_line_completion_function): Delete.
|
|
|
|
|
(gdb_rl_attempted_completion_function): New.
|
|
|
|
|
(noop_completer, filename_completer, expression_completer)
|
|
|
|
|
(location_completer, symbol_completer, command_completer)
|
|
|
|
|
(signal_completer, reg_or_group_completer): Update prototypes.
|
|
|
|
|
(completion_tracker_t, new_completion_tracker)
|
|
|
|
|
(make_cleanup_free_completion_tracker): Delete.
|
|
|
|
|
(enum maybe_add_completion_enum): Delete.
|
|
|
|
|
(maybe_add_completion): Delete.
|
|
|
|
|
(throw_max_completions_reached_error): Delete.
|
|
|
|
|
* corefile.c (complete_set_gnutarget): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
* cp-abi.c (cp_abi_completer): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
* d-lang.c (d_language_defn): Adjust.
|
|
|
|
|
* disasm.c (disassembler_options_completer): Adjust to work with a
|
|
|
|
|
completion_tracker instead of a VEC.
|
|
|
|
|
* f-lang.c (f_make_symbol_completion_list): Rename to ...
|
|
|
|
|
(f_collect_symbol_completion_matches): ... this. Adjust to work
|
|
|
|
|
with a completion_tracker instead of a VEC.
|
|
|
|
|
(f_language_defn): Adjust.
|
|
|
|
|
* go-lang.c (go_language_defn): Adjust.
|
|
|
|
|
* guile/scm-cmd.c (cmdscm_add_completion, cmdscm_completer):
|
|
|
|
|
Adjust to work with a completion_tracker instead of a VEC.
|
|
|
|
|
* infrun.c (handle_completer): Likewise.
|
|
|
|
|
* interps.c (interpreter_completer): Likewise.
|
|
|
|
|
* interps.h (interpreter_completer): Likewise.
|
|
|
|
|
* language.c (unknown_language_defn, auto_language_defn)
|
|
|
|
|
(local_language_defn): Adjust.
|
|
|
|
|
* language.h (language_defn::la_make_symbol_completion_list):
|
|
|
|
|
Rename to ...
|
|
|
|
|
(language_defn::la_collect_symbol_completion_matches): ... this
|
|
|
|
|
and adjust to work with a completion_tracker instead of a VEC.
|
|
|
|
|
* m2-lang.c (m2_language_defn): Adjust.
|
|
|
|
|
* objc-lang.c (objc_language_defn): Adjust.
|
|
|
|
|
* opencl-lang.c (opencl_language_defn): Adjust.
|
|
|
|
|
* p-lang.c (pascal_language_defn): Adjust.
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer_helper): Handle NULL word.
|
|
|
|
|
(cmdpy_completer_handle_brkchars, cmdpy_completer): Adjust to work
|
|
|
|
|
with a completion_tracker.
|
|
|
|
|
* rust-lang.c (rust_language_defn): Adjust.
|
|
|
|
|
* symtab.c (free_completion_list, do_free_completion_list)
|
|
|
|
|
(return_val, completion_tracker): Delete.
|
|
|
|
|
(completion_list_add_name, completion_list_add_symbol)
|
|
|
|
|
(completion_list_add_msymbol, completion_list_objc_symbol)
|
|
|
|
|
(completion_list_add_fields, add_symtab_completions): Add
|
|
|
|
|
completion_tracker parameter and use it.
|
|
|
|
|
(default_make_symbol_completion_list_break_on_1): Rename to...
|
|
|
|
|
(default_collect_symbol_completion_matches_break_on): ... this.
|
|
|
|
|
Add completion_tracker parameter and use it instead of allocating
|
|
|
|
|
a completion tracker here.
|
|
|
|
|
(default_make_symbol_completion_list_break_on): Delete old
|
|
|
|
|
implementation.
|
|
|
|
|
(default_make_symbol_completion_list): Delete.
|
|
|
|
|
(default_collect_symbol_completion_matches): New.
|
|
|
|
|
(make_symbol_completion_list): Delete.
|
|
|
|
|
(collect_symbol_completion_matches): New.
|
|
|
|
|
(make_symbol_completion_type): Rename to ...
|
|
|
|
|
(collect_symbol_completion_matches_type): ... this. Add
|
|
|
|
|
completion_tracker parameter and use it instead of VEC.
|
|
|
|
|
(make_file_symbol_completion_list_1): Rename to...
|
|
|
|
|
(collect_file_symbol_completion_matches): ... this. Add
|
|
|
|
|
completion_tracker parameter and use it instead of VEC.
|
|
|
|
|
(make_file_symbol_completion_list): Delete.
|
|
|
|
|
(add_filename_to_list): Use completion_list instead of a VEC.
|
|
|
|
|
(add_partial_filename_data::list): Now a completion_list.
|
|
|
|
|
(make_source_files_completion_list): Work with a completion_list
|
|
|
|
|
instead of a VEC.
|
|
|
|
|
* symtab.h: Include "completer.h".
|
|
|
|
|
(default_make_symbol_completion_list_break_on)
|
|
|
|
|
(default_make_symbol_completion_list, make_symbol_completion_list)
|
|
|
|
|
(make_symbol_completion_type, make_file_symbol_completion_list)
|
|
|
|
|
(make_source_files_completion_list): Delete.
|
|
|
|
|
(default_collect_symbol_completion_matches_break_on)
|
|
|
|
|
(default_collect_symbol_completion_matches)
|
|
|
|
|
(collect_symbol_completion_matches)
|
|
|
|
|
(collect_symbol_completion_matches_type)
|
|
|
|
|
(collect_file_symbol_completion_matches)
|
|
|
|
|
(make_source_files_completion_list): New.
|
|
|
|
|
* top.c (init_main): Don't install a rl_completion_entry_function
|
|
|
|
|
hook. Install a rl_attempted_completion_function hook instead.
|
|
|
|
|
* tui/tui-layout.c (layout_completer): Adjust to work with a
|
|
|
|
|
completion_tracker.
|
|
|
|
|
* tui/tui-regs.c (tui_reggroup_completer):
|
|
|
|
|
* tui/tui-win.c (window_name_completer, focus_completer)
|
|
|
|
|
(winheight_completer): Adjust to work with a completion_tracker.
|
|
|
|
|
* value.c: Include "completer.h".
|
|
|
|
|
(complete_internalvar): Adjust to work with a completion_tracker.
|
|
|
|
|
* value.h (complete_internalvar): Likewise.
|
|
|
|
|
|
2017-07-17 13:05:03 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-decode.c (set_cmd_completer_handle_brkchars): Adjust to
|
|
|
|
|
renames.
|
|
|
|
|
* cli/cli-decode.h (struct cmd_list_element) <completer>: Move
|
|
|
|
|
comments to completer_ftype's declaration.
|
|
|
|
|
<completer_handle_brkchars>: Change type to
|
|
|
|
|
completer_handle_brkchars_ftype.
|
|
|
|
|
* command.h (completer_ftype): Add describing comment and give
|
|
|
|
|
names to parameters.
|
|
|
|
|
(completer_ftype_void): Rename to ...
|
|
|
|
|
(completer_handle_brkchars_ftype) ... this. Add describing comment.
|
|
|
|
|
(set_cmd_completer_handle_brkchars): Adjust.
|
|
|
|
|
* completer.c (filename_completer_handle_brkchars): New function.
|
|
|
|
|
(complete_line_internal_normal_command): New function, factored
|
|
|
|
|
out from ...
|
|
|
|
|
(complete_line_internal): ... here.
|
|
|
|
|
(command_completer_handle_brkchars)
|
|
|
|
|
(default_completer_handle_brkchars)
|
|
|
|
|
(completer_handle_brkchars_func_for_completer): New functions.
|
|
|
|
|
* completer.h (set_gdb_completion_word_break_characters): Delete
|
|
|
|
|
declaration.
|
|
|
|
|
(completer_handle_brkchars_func_for_completer): New declaration.
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer_handle_brkchars): Adjust to use
|
|
|
|
|
completer_handle_brkchars_func_for_completer.
|
|
|
|
|
|
2017-07-17 12:55:42 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* completer.c (symbol_completer): New function, based on
|
|
|
|
|
make_symbol_completion_list_fn.
|
|
|
|
|
* completer.h (symbol_completer): New declaration.
|
|
|
|
|
* guile/scm-cmd.c (cmdscm_completers): Adjust.
|
|
|
|
|
* python/py-cmd.c (completers): Adjust.
|
|
|
|
|
* symtab.c (make_symbol_completion_list_fn): Delete.
|
|
|
|
|
* symtab.h (make_symbol_completion_list_fn): Delete.
|
|
|
|
|
* cli/cli-decode.c (add_cmd): Adjust.
|
|
|
|
|
|
Fix TAB-completion + .gdb_index slowness (generalize filename_seen_cache)
Tab completion when debugging a program binary that uses GDB index is
surprisingly much slower than when GDB uses psymtabs instead. Around
1.5x/3x slower. That's surprising, because the whole point of GDB
index is to speed things up...
For example, with:
set pagination off
set $count = 0
while $count < 400
complete b string_prin # matches gdb's string_printf
printf "count = %d\n", $count
set $count = $count + 1
end
$ time ./gdb --batch -q ./gdb-with-index -ex "source script.cmd"
real 0m11.042s
user 0m10.920s
sys 0m0.042s
$ time ./gdb --batch -q ./gdb-without-index -ex "source script.cmd"
real 0m4.635s
user 0m4.590s
sys 0m0.037s
Same but with:
- complete b string_prin
+ complete b zzzzzz
to exercise the no-matches worst case, master currently gets you
something like:
with index without index
real 0m11.971s 0m8.413s
user 0m11.912s 0m8.355s
sys 0m0.035s 0m0.035s
Running gdb under perf shows 80% spent inside
maybe_add_partial_symtab_filename, and 20% spent in the lbasename
inside that.
The problem that tab completion walks over all compunit symtabs, and
for each, walks the contained file symtabs. And there a huge number
of file symtabs (each included system header, etc.) that appear in
each compunit symtab's file symtab list. As in, when debugging GDB, I
have 367381 symtabs iterated, when of those only 5371 filenames are
unique...
This was a regression from the earlier (nice) split of symtabs in
compunit symtabs + file symtabs.
The fix here is to add a cache of unique filenames per objfile so that
the walk / uniquing is only done once. There's already a abstraction
for this in symtab.c; this patch moves that code out to a separate
file and C++ifies it bit.
This makes the worst-case scenario above consistently drop to ~2.5s
(1.5s for the "string_prin" hit case), making it over 3.3x times
faster than psymtabs in this use case (7x in the "string_prin" hit
case).
gdb/ChangeLog:
2017-07-17 Pedro Alves <palves@redhat.com>
* Makefile.in (COMMON_OBS): Add filename-seen-cache.o.
* dwarf2read.c: Include "filename-seen-cache.h".
* dwarf2read.c (dwarf2_per_objfile) <filenames_cache>: New field.
(dw2_map_symbol_filenames): Build and use a filenames_seen_cache.
* filename-seen-cache.c: New file.
* filename-seen-cache.h: New file.
* symtab.c: Include "filename-seen-cache.h".
(struct filename_seen_cache, INITIAL_FILENAME_SEEN_CACHE_SIZE)
(create_filename_seen_cache, clear_filename_seen_cache)
(delete_filename_seen_cache, filename_seen): Delete, parts moved
to filename-seen-cache.h/filename-seen-cache.c.
(output_source_filename, sources_info)
(maybe_add_partial_symtab_filename)
(make_source_files_completion_list): Adjust to use
filename_seen_cache.
2017-07-17 12:28:33 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (COMMON_OBS): Add filename-seen-cache.o.
|
|
|
|
|
* dwarf2read.c: Include "filename-seen-cache.h".
|
|
|
|
|
* dwarf2read.c (dwarf2_per_objfile) <filenames_cache>: New field.
|
|
|
|
|
(dw2_map_symbol_filenames): Build and use a filenames_seen_cache.
|
|
|
|
|
* filename-seen-cache.c: New file.
|
|
|
|
|
* filename-seen-cache.h: New file.
|
|
|
|
|
* symtab.c: Include "filename-seen-cache.h".
|
|
|
|
|
(struct filename_seen_cache, INITIAL_FILENAME_SEEN_CACHE_SIZE)
|
|
|
|
|
(create_filename_seen_cache, clear_filename_seen_cache)
|
|
|
|
|
(delete_filename_seen_cache, filename_seen): Delete, parts moved
|
|
|
|
|
to filename-seen-cache.h/filename-seen-cache.c.
|
|
|
|
|
(output_source_filename, sources_info)
|
|
|
|
|
(maybe_add_partial_symtab_filename)
|
|
|
|
|
(make_source_files_completion_list): Adjust to use
|
|
|
|
|
filename_seen_cache.
|
|
|
|
|
|
2017-07-17 12:31:20 +02:00
|
|
|
|
2017-07-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_per_objfile): In-class initialize all
|
|
|
|
|
fields.
|
|
|
|
|
(dwarf2_per_objfile::dwarf2_per_objfile(objfile*, const
|
|
|
|
|
dwarf2_debug_sections*)): New.
|
|
|
|
|
(dwarf2_per_objfile::dwarf2_per_objfile(const
|
|
|
|
|
dwarf2_per_objfile&)): Declare as deleted.
|
|
|
|
|
(dwarf2_per_objfile::operator=): Declare as deleted.
|
|
|
|
|
(dwarf2_per_objfile::dwarf2_per_objfile)
|
|
|
|
|
(dwarf2_per_objfile::~dwarf2_per_objfile)
|
|
|
|
|
(dwarf2_per_objfile::free_cached_comp_units): New.
|
|
|
|
|
(dwarf2_has_info): dwarf2_per_objfile initialization code moved to
|
|
|
|
|
ctor. Call dwarf2_per_objfile's ctor manually.
|
|
|
|
|
(dwarf2_locate_sections): Deleted/refactored as ...
|
|
|
|
|
(dwarf2_per_objfile::locate_sections): ... this new method.
|
|
|
|
|
(free_cached_comp_units): Defer to
|
|
|
|
|
dwarf2_per_objfile::free_cached_comp_units.
|
|
|
|
|
(dwarf2_free_objfile): Call dwarf2_per_objfile's dtor manually.
|
|
|
|
|
|
2017-07-14 16:10:39 +02:00
|
|
|
|
2017-07-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21764:
|
|
|
|
|
* rust-exp.y (convert_ast_to_expression): Add "want_type"
|
|
|
|
|
parameter.
|
|
|
|
|
<UNOP_SIZEOF>: Split into separate case.
|
|
|
|
|
<UNOP_VAR_VALUE>: Handle want_type. Add error case.
|
|
|
|
|
|
2017-07-13 23:03:27 +02:00
|
|
|
|
2017-07-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21763:
|
|
|
|
|
* symtab.c (symbol_matches_domain): Add language_rust to special
|
|
|
|
|
case.
|
|
|
|
|
* rust-exp.y (convert_ast_to_expression) <OP_VAR_VALUE>: Don't
|
|
|
|
|
treat LOC_TYPEDEF symbols as variables.
|
|
|
|
|
|
2017-07-14 17:50:35 +02:00
|
|
|
|
2017-07-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (make_file_symbol_completion_list_1): Iterate over
|
|
|
|
|
symtabs matching all symtabs with SRCFILE as file name instead of
|
|
|
|
|
only considering the first hit, with lookup_symtab.
|
|
|
|
|
|
2017-07-14 12:47:40 +02:00
|
|
|
|
2017-07-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c (gen_aggregate_elt_ref): Remove operand_name and
|
|
|
|
|
operator_name parameters.
|
|
|
|
|
(gen_expr): Update function call.
|
|
|
|
|
|
2017-07-14 12:47:40 +02:00
|
|
|
|
2017-07-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.h (dwarf2_compile_expr_to_ax): Remove gdbarch
|
|
|
|
|
parameter.
|
|
|
|
|
* symtab.h (struct symbol_computed_ops::tracepoint_var_ref):
|
|
|
|
|
Likewise.
|
|
|
|
|
* dwarf2loc.c (dwarf2_compile_expr_to_ax): Remove gdbarch
|
|
|
|
|
parameter, use agent_expr::gdbarch instead, update function
|
|
|
|
|
calls.
|
|
|
|
|
(locexpr_tracepoint_var_ref): Likewise.
|
|
|
|
|
(loclist_tracepoint_var_ref): Likewise.
|
|
|
|
|
* ax-gdb.c (gen_trace_static_fields): Likewise.
|
|
|
|
|
(gen_traced_pop): Likewise.
|
|
|
|
|
(gen_frame_args_address): Likewise.
|
|
|
|
|
(gen_frame_locals_address): Likewise.
|
|
|
|
|
(gen_var_ref): Likewise.
|
|
|
|
|
(gen_struct_ref_recursive): Likewise.
|
|
|
|
|
(gen_static_field): Likewise.
|
|
|
|
|
(gen_maybe_namespace_elt): Likewise.
|
|
|
|
|
(gen_expr): Likewise.
|
|
|
|
|
(gen_trace_for_var): Likewise.
|
|
|
|
|
(gen_trace_for_expr): Likewise.
|
|
|
|
|
(gen_trace_for_return_address): Likewise.
|
|
|
|
|
|
2017-07-14 12:47:39 +02:00
|
|
|
|
2017-07-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c (gen_deref, gen_address_of): Remove unused ax
|
|
|
|
|
parameter.
|
|
|
|
|
(gen_struct_ref, gen_expr, gen_expr_binop_rest): Update call.
|
|
|
|
|
|
2017-07-14 12:47:39 +02:00
|
|
|
|
2017-07-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.c (gen_usual_unary): Remove exp parameter, get gdbarch
|
|
|
|
|
from ax, update calls.
|
|
|
|
|
(gen_usual_arithmetic): Likewise.
|
|
|
|
|
(gen_integral_promotions): Likewise.
|
|
|
|
|
(gen_bitfield_ref): Likewise.
|
|
|
|
|
(gen_primitive_field): Likewise.
|
|
|
|
|
(gen_struct_ref_recursive): Likewise.
|
|
|
|
|
(gen_struct_ref): Likewise.
|
|
|
|
|
(gen_maybe_namespace_elt): Likewise.
|
|
|
|
|
(gen_struct_elt_for_reference): Likewise.
|
|
|
|
|
(gen_namespace_elt): Likewise.
|
|
|
|
|
(gen_aggregate_elt_ref): Likewise.
|
|
|
|
|
(gen_expr): Get gdbarch from ax, update calls.
|
|
|
|
|
(gen_expr_binop_rest): Likewise.
|
|
|
|
|
|
Fix x86-64 GNU/Linux crashes
Ref: https://sourceware.org/ml/gdb-patches/2017-07/msg00162.html
Debugging x86-64 GNU/Linux programs currently crashes GDB in
tdesc_use_registers during gdbarch initialization:
Program received signal SIGSEGV, Segmentation fault.
0x0000000001093eaf in htab_remove_elt_with_hash (htab=0x2ef9fa0, element=0x26af960, hash=557151073) at src/libiberty/hashtab.c:728
728 if (*slot == HTAB_EMPTY_ENTRY)
(top-gdb) p slot
$1 = (void **) 0x0
(top-gdb) bt
#0 0x0000000001093eaf in htab_remove_elt_with_hash (htab=0x2ef9fa0, element=0x26af960, hash=557151073) at src/libiberty/hashtab.c:728
#1 0x0000000001093e79 in htab_remove_elt (htab=0x2ef9fa0, element=0x26af960) at src/libiberty/hashtab.c:714
#2 0x00000000009121b0 in tdesc_use_registers (gdbarch=0x3001240, target_desc=0x2659cb0, early_data=0x2881cb0)
at src/gdb/target-descriptions.c:1328
#3 0x000000000047c93e in i386_gdbarch_init (info=..., arches=0x0) at src/gdb/i386-tdep.c:8634
#4 0x0000000000818d5f in gdbarch_find_by_info (info=...) at src/gdb/gdbarch.c:5394
#5 0x00000000007198a8 in set_gdbarch_from_file (abfd=0x2f48250) at src/gdb/arch-utils.c:618
#6 0x00000000007f21cb in exec_file_attach (filename=0x7fffffffddb0 "/home/pedro/gdb/tests/threads", from_tty=1) at src/gdb/exec.c:380
#7 0x0000000000865c18 in catch_command_errors_const (command=0x7f1d83 <exec_file_attach(char const*, int)>, arg=0x7fffffffddb0 "/home/pedro/gdb/tests/threads",
from_tty=1) at src/gdb/main.c:403
#8 0x00000000008669cf in captured_main_1 (context=0x7fffffffd860) at src/gdb/main.c:1035
#9 0x0000000000866de2 in captured_main (data=0x7fffffffd860) at src/gdb/main.c:1142
#10 0x0000000000866e24 in gdb_main (args=0x7fffffffd860) at src/gdb/main.c:1160
#11 0x000000000041312d in main (argc=3, argv=0x7fffffffd968) at src/gdb/gdb.c:32
The direct cause of the crash is that we tried to remove an element
from the hash which supposedly exists, but does not. (htab_remove_elt
shouldn't really crash in this case, but that's secondary.)
The real problem is that early_data passed to tdesc_use_registers
includes regs from a target description that is not the target_desc,
which violates its assumptions. The registers in question are the
fs_base/gs_base registers, added by amd64_init_abi:
tdesc_numbered_register (feature, tdesc_data_segments,
AMD64_FSBASE_REGNUM, "fs_base");
tdesc_numbered_register (feature, tdesc_data_segments,
AMD64_GSBASE_REGNUM, "gs_base");
and that happens because amd64_linux_init_abi uses amd64_init_abi as
helper, but they don't coordinate on which fallback tdesc to use.
amd64_init_abi does:
if (! tdesc_has_registers (tdesc))
tdesc = tdesc_amd64;
and then adds the fs_base/gs_base registers of the "tdesc_amd64" tdesc
to the tdesc_arch_data.
After amd64_init_abi returns, amd64_linux_init_abi does:
if (! tdesc_has_registers (tdesc))
tdesc = tdesc_amd64_linux;
tdep->tdesc = tdesc;
and we end up tdesc_amd64_linux installed in tdep->tdesc.
The fix is to make sure that amd64_linux_init_abi and amd64_init_abi
agree on default tdesc, by adding a "default tdesc" parameter to
amd64_init_abi, instead of having amd64_init_abi hardcode a default.
With this, amd64_init_abi creates the fs_base/gs_base registers using
the tdesc_amd64_linux tdesc.
Tested on x86-64 GNU/Linux, -m64. I don't have an x32 setup handy.
Thanks to John Baldwin, Yao Qi and Simon Marchi for the investigation.
gdb/ChangeLog:
2017-07-13 Pedro Alves <palves@redhat.com>
* amd64-darwin-tdep.c (x86_darwin_init_abi_64): Pass tdesc_amd64
as default tdesc.
* amd64-dicos-tdep.c (amd64_dicos_init_abi):
* amd64-fbsd-tdep.c (amd64fbsd_init_abi):
* amd64-linux-tdep.c (amd64_linux_init_abi): Pass
tdesc_amd64_linux as default tdesc. Get final tdesc from the
tdep.
(amd64_x32_linux_init_abi): Pass tdesc_x32_linux as default tdesc.
Get final tdesc from the tdep.
* amd64-nbsd-tdep.c (amd64nbsd_init_abi): Pass tdesc_amd64 as
default tdesc.
* amd64-obsd-tdep.c (amd64obsd_init_abi): Likewise.
* amd64-sol2-tdep.c (amd64_sol2_init_abi): Likewise.
* amd64-tdep.c (amd64_init_abi): Add 'default_tdesc' parameter.
Use it as default tdesc.
(amd64_x32_init_abi): Add 'default_tdesc' parameter, and pass it
down to amd_init_abi. No longer handle fallback tdesc here.
* amd64-tdep.h (tdesc_x32): Declare.
(amd64_init_abi, amd64_x32_init_abi): Add 'default_tdesc'
parameter.
* amd64-windows-tdep.c (amd64_windows_init_abi): Pass tdesc_amd64
as default tdesc.
2017-07-13 21:56:42 +02:00
|
|
|
|
2017-07-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* amd64-darwin-tdep.c (x86_darwin_init_abi_64): Pass tdesc_amd64
|
|
|
|
|
as default tdesc.
|
|
|
|
|
* amd64-dicos-tdep.c (amd64_dicos_init_abi):
|
|
|
|
|
* amd64-fbsd-tdep.c (amd64fbsd_init_abi):
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_init_abi): Pass
|
|
|
|
|
tdesc_amd64_linux as default tdesc. Get final tdesc from the
|
|
|
|
|
tdep.
|
|
|
|
|
(amd64_x32_linux_init_abi): Pass tdesc_x32_linux as default tdesc.
|
|
|
|
|
Get final tdesc from the tdep.
|
|
|
|
|
* amd64-nbsd-tdep.c (amd64nbsd_init_abi): Pass tdesc_amd64 as
|
|
|
|
|
default tdesc.
|
|
|
|
|
* amd64-obsd-tdep.c (amd64obsd_init_abi): Likewise.
|
|
|
|
|
* amd64-sol2-tdep.c (amd64_sol2_init_abi): Likewise.
|
|
|
|
|
* amd64-tdep.c (amd64_init_abi): Add 'default_tdesc' parameter.
|
|
|
|
|
Use it as default tdesc.
|
|
|
|
|
(amd64_x32_init_abi): Add 'default_tdesc' parameter, and pass it
|
|
|
|
|
down to amd_init_abi. No longer handle fallback tdesc here.
|
|
|
|
|
* amd64-tdep.h (tdesc_x32): Declare.
|
|
|
|
|
(amd64_init_abi, amd64_x32_init_abi): Add 'default_tdesc'
|
|
|
|
|
parameter.
|
|
|
|
|
* amd64-windows-tdep.c (amd64_windows_init_abi): Pass tdesc_amd64
|
|
|
|
|
as default tdesc.
|
|
|
|
|
|
2017-07-13 20:17:03 +02:00
|
|
|
|
2017-07-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (s390_process_record): Add support for
|
|
|
|
|
instructions new in arch12.
|
|
|
|
|
|
2017-06-27 03:18:19 +02:00
|
|
|
|
2017-07-11 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers): Use
|
|
|
|
|
PT_GETFSBASE and PT_GETGSBASE.
|
|
|
|
|
(amd64bsd_store_inferior_registers): Use PT_SETFSBASE and
|
|
|
|
|
PT_SETGSBASE.
|
|
|
|
|
|
2017-06-27 03:14:43 +02:00
|
|
|
|
2017-07-11 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* features/Makefile (amd64.dat, amd64-avx.dat, amd64-mpx.dat)
|
|
|
|
|
(amd64-avx-mpx.dat, amd64-avx-avx512.dat)
|
|
|
|
|
(amd64-avx-mpx-avx512-pku.dat): Add i386/64bit-segments.xml in
|
|
|
|
|
those rules.
|
|
|
|
|
* features/i386/amd64-avx-avx512.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-mpx.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-mpx.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-avx512.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx-mpx.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-mpx.c: Regenerated.
|
|
|
|
|
* features/i386/amd64.c: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-avx512.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx-avx512-pku.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-mpx.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64.dat: Regenerated.
|
|
|
|
|
|
2017-07-10 13:00:35 +02:00
|
|
|
|
2017-07-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/i386/amd64-avx-avx512-linux.c: Re-generated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-avx512-pku-linux.c: Re-generated.
|
|
|
|
|
|
2017-07-10 19:48:30 +02:00
|
|
|
|
2017-07-10 Anton Kolesov <Anton.Kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* gnulib/update-gnulib.sh (IMPORTED_GNULIB_MODULES): Add setenv and
|
|
|
|
|
unsetenv.
|
|
|
|
|
* gnulib/aclocal.m4: Regenerate.
|
|
|
|
|
* gnulib/config.in: Regenerate.
|
|
|
|
|
* gnulib/configure: Regenerate.
|
|
|
|
|
* gnulib/import/Makefile.am: Regenerate.
|
|
|
|
|
* gnulib/import/Makefile.in: Regenerate.
|
|
|
|
|
* gnulib/import/m4/gnulib-cache.m4: Regenerate.
|
|
|
|
|
* gnulib/import/m4/gnulib-comp.m4: Regenerate.
|
|
|
|
|
* gnulib/import/m4/environ.m4: New file.
|
|
|
|
|
* gnulib/import/m4/setenv.m4: New file.
|
|
|
|
|
* gnulib/import/setenv.c: New file.
|
|
|
|
|
* gnulib/import/unsetenv.c: New file.
|
|
|
|
|
|
2017-07-09 20:25:38 +02:00
|
|
|
|
2017-07-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-loc2c.c (do_compile_dwarf_expr_to_c): Read
|
|
|
|
|
address when op is DW_OP_addr.
|
|
|
|
|
|
2017-05-28 16:06:54 +02:00
|
|
|
|
2017-07-09 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Reverse size
|
|
|
|
|
check and apply to outer type.
|
|
|
|
|
|
2017-06-28 21:50:56 +02:00
|
|
|
|
2017-07-07 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-tdep.c (LWPINFO_OFFSET, LWPINFO_PL_FLAGS)
|
|
|
|
|
(LWPINFO64_PL_SIGINFO, LWPINFO32_PL_SIGINFO, PL_FLAG_SI)
|
|
|
|
|
(SIZE64_SIGINFO_T, SIZE32_SIGINFO_T, fbsd_core_xfer_siginfo): New.
|
|
|
|
|
(fbsd_init_abi): Install gdbarch "core_xfer_siginfo" method.
|
|
|
|
|
|
2017-06-28 20:21:10 +02:00
|
|
|
|
2017-07-07 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-tdep.c (fbsd_core_thread_name): Use thread_section_name.
|
|
|
|
|
|
2017-06-28 20:11:20 +02:00
|
|
|
|
2017-07-07 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* corelow.c (get_core_siginfo): Remove.
|
|
|
|
|
(core_xfer_partial): Use the gdbarch "core_xfer_siginfo" method
|
|
|
|
|
instead of get_core_siginfo.
|
|
|
|
|
* gdbarch.sh (core_xfer_siginfo): New gdbarch callback.
|
|
|
|
|
* gdbarch.h: Re-generate.
|
|
|
|
|
* gdbarch.c: Re-generate.
|
|
|
|
|
* linux-tdep.c (linux_core_xfer_siginfo): New.
|
|
|
|
|
(linux_init_abi): Install gdbarch "core_xfer_siginfo" method.
|
|
|
|
|
|
2017-06-28 19:41:57 +02:00
|
|
|
|
2017-07-07 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* corelow.c (thread_section_name): Move to ...
|
|
|
|
|
* gdbcore.h (thread_section_name): ... here.
|
|
|
|
|
|
2017-06-28 18:53:06 +02:00
|
|
|
|
2017-07-07 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-nat.c [PT_LWPINFO && __LP64__] (union sigval32)
|
|
|
|
|
(struct siginfo32): New.
|
|
|
|
|
[PT_LWPINFO] (fbsd_siginfo_size, fbsd_convert_siginfo): New.
|
|
|
|
|
(fbsd_xfer_partial) [PT_LWPINFO]: Handle TARGET_OBJECT_SIGNAL_INFO
|
|
|
|
|
via ptrace(PT_LWPINFO).
|
|
|
|
|
|
2017-06-28 17:14:06 +02:00
|
|
|
|
2017-07-07 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* fbsd-tdep.c (fbsd_gdbarch_data_handle, struct fbsd_gdbarch_data)
|
|
|
|
|
(init_fbsd_gdbarch_data, get_fbsd_gdbarch_data)
|
|
|
|
|
(fbsd_get_siginfo_type): New.
|
|
|
|
|
(fbsd_init_abi): Install gdbarch "get_siginfo_type" method.
|
|
|
|
|
(_initialize_fbsd_tdep): New.
|
|
|
|
|
|
2017-07-06 20:17:52 +02:00
|
|
|
|
2017-07-06 David Blaikie <dblaikie@gmail.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct dwo_file): Use a htab of dwo_unit* (rather than
|
|
|
|
|
a singular dwo_unit*) to support multiple CUs in the same way that
|
|
|
|
|
multiple TUs are supported.
|
|
|
|
|
(create_cus_hash_table): Replace create_dwo_cu with a function for
|
|
|
|
|
parsing multiple CUs from a DWO file.
|
|
|
|
|
(open_and_init_dwo_file): Use create_cus_hash_table rather than
|
|
|
|
|
create_dwo_cu.
|
|
|
|
|
(lookup_dwo_cutu): Lookup CU in the hash table in the dwo_file with
|
|
|
|
|
htab_find, rather than comparing the signature to a singleton CU in
|
|
|
|
|
the dwo_file.
|
|
|
|
|
|
2017-07-06 01:19:24 +02:00
|
|
|
|
2017-07-06 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pyuw_dealloc_cache): Fix for loop condition.
|
|
|
|
|
|
2017-07-04 19:40:26 +02:00
|
|
|
|
2017-07-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (recursive_dump_type): Don't reference TYPE_STATIC.
|
|
|
|
|
* gdbtypes.h (TYPE_STATIC): Delete.
|
|
|
|
|
(struct fn_field) <is_public, is_abstract, is_static, is_final,
|
|
|
|
|
is_synchronized, is_native>: Delete.
|
|
|
|
|
<dummy>: Bump.
|
|
|
|
|
(TYPE_FN_FIELD_PUBLIC, TYPE_FN_FIELD_STATIC, TYPE_FN_FIELD_FINAL)
|
|
|
|
|
(TYPE_FN_FIELD_SYNCHRONIZED, TYPE_FN_FIELD_NATIVE)
|
|
|
|
|
(TYPE_FN_FIELD_ABSTRACT): Delete.
|
|
|
|
|
|
2017-07-03 13:59:00 +02:00
|
|
|
|
2017-07-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* buffer.h (buffer_finish): Fix spelling mistakes.
|
|
|
|
|
|
2017-07-01 17:45:57 +02:00
|
|
|
|
2017-07-01 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* .dir-locals.el: Automatically switch to C-style comments in
|
|
|
|
|
versions of Emacs that support the feature.
|
|
|
|
|
|
2017-06-30 14:27:29 +02:00
|
|
|
|
2017-06-30 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR cli/21688
|
|
|
|
|
* cli/cli-script.c (command_name_equals_not_inline): Remove function.
|
|
|
|
|
(process_next_line): New variable 'inline_cmd'.
|
|
|
|
|
Adjust 'if' clauses for "python", "compile" and "guile" to use
|
|
|
|
|
'command_name_equals' and check for '!inline_cmd'.
|
|
|
|
|
|
PR cli/21688: Fix multi-line/inline command differentiation
This bug is a regression caused by the following commit:
604c4576fdcfc4e7c28f569b3748a1b6b4e0dbd4 is the first bad commit
commit 604c4576fdcfc4e7c28f569b3748a1b6b4e0dbd4
Author: Jerome Guitton <guitton@adacore.com>
Date: Tue Jan 10 15:15:53 2017 +0100
The problem happens because, on cli/cli-script.c:process_next_line,
GDB is not using the command line string to identify which command to
run, but it instead using the 'struct cmd_list_element *' that is
obtained by using the mentioned string. The problem with that is that
the 'struct cmd_list_element *' doesn't have any information on
whether the command issued by the user is a multi-line or inline one.
A multi-line command is a command that will necessarily be composed of
more than 1 line. For example:
(gdb) if 1
>python
>print ('hello')
>end
>end
As can be seen in the example above, the 'python' command actually
"opens" a new command line (represented by the change in the
indentation) that will then be used to enter Python code. OTOH, an
inline command is a command that is "self-contained" in a single line,
for example:
(gdb) if 1
>python print ('hello')
>end
This Python command is a one-liner, and therefore there is no other
Python code that can be entered for this same block. There is also no
change in the indentation.
So, the fix is somewhat simple: we have to revert the change and use
the full command line string passed to process_next_line in order to
identify whether we're dealing with a multi-line or an inline command.
This commit does just that. As can be seen, this regression also
affects other languages, like guile or the compile framework. To make
things clearer, I decided to create a new helper function responsible
for identifying a non-inline command.
Testcase is attached.
gdb/ChangeLog:
2017-06-30 Sergio Durigan Junior <sergiodj@redhat.com>
PR cli/21688
* cli/cli-script.c (command_name_equals_not_inline): New function.
(process_next_line): Adjust 'if' clauses for "python", "compile"
and "guile" to use command_name_equals_not_inline.
gdb/testsuite/ChangeLog:
2017-06-30 Sergio Durigan Junior <sergiodj@redhat.com>
PR cli/21688
* gdb.python/py-cmd.exp (test_python_inline_or_multiline): New
procedure. Call it.
2017-06-29 03:55:03 +02:00
|
|
|
|
2017-06-30 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR cli/21688
|
|
|
|
|
* cli/cli-script.c (command_name_equals_not_inline): New function.
|
|
|
|
|
(process_next_line): Adjust 'if' clauses for "python", "compile"
|
|
|
|
|
and "guile" to use command_name_equals_not_inline.
|
|
|
|
|
|
2017-06-29 16:52:38 +02:00
|
|
|
|
2017-06-29 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* completer.c (expression_completer): Call
|
|
|
|
|
linespec_location_completer instead of location_completer.
|
|
|
|
|
|
2017-06-29 16:52:37 +02:00
|
|
|
|
2017-06-29 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* completer.c (expression_completer): Remove code that recomputes
|
|
|
|
|
'text' from 'word'.
|
|
|
|
|
|
2017-06-29 13:41:50 +02:00
|
|
|
|
2017-06-29 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regformats/regdat.sh: Generate code with
|
|
|
|
|
"ifndef IN_PROCESS_AGENT".
|
|
|
|
|
|
2017-06-28 16:19:02 +02:00
|
|
|
|
2017-06-28 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* command.h: Include "common/scoped_restore.h".
|
|
|
|
|
|
2017-06-28 15:48:55 +02:00
|
|
|
|
2017-06-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-break.c (mi_argv_to_format): Use obstack_grow_str
|
|
|
|
|
instead of obstack_grow.
|
|
|
|
|
|
2017-06-28 03:54:22 +02:00
|
|
|
|
2017-06-28 Doug Gilmore <Doug.Gilmore@imgtec.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21337
|
|
|
|
|
* symfile.c (reread_symbols): Call objfiles_changed just before
|
|
|
|
|
read_symbols.
|
|
|
|
|
|
2017-06-27 17:32:57 +02:00
|
|
|
|
2017-06-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (COMPLETION_LIST_ADD_SYMBOL)
|
|
|
|
|
(MCOMPLETION_LIST_ADD_SYMBOL): Delete macros, replace with ...
|
|
|
|
|
(completion_list_add_symbol, completion_list_add_msymbol):
|
|
|
|
|
... these new functions.
|
|
|
|
|
(add_symtab_completions)
|
|
|
|
|
(default_make_symbol_completion_list_break_on_1): Adjust.
|
|
|
|
|
|
2017-06-27 17:22:08 +02:00
|
|
|
|
2017-06-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* objfiles.c (get_objfile_bfd_data): Call bfd_alloc instead of
|
|
|
|
|
bfd_zalloc. Call objfile_per_bfd_storage's ctor.
|
|
|
|
|
(free_objfile_per_bfd_storage): Call objfile_per_bfd_storage's
|
|
|
|
|
dtor.
|
|
|
|
|
* objfiles.h (objfile_per_bfd_storage): Add ctor. Make
|
|
|
|
|
'storage_obstack' field an auto_obstack. In-class initialize all
|
|
|
|
|
non-bitfield fields. Make minsyms_read bool.
|
|
|
|
|
* symfile.c (read_symbols): Adjust.
|
|
|
|
|
|
2017-06-27 14:10:16 +02:00
|
|
|
|
2017-06-27 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* remote-sim.c (gdbsim_fetch_register): Use byte_vector.
|
|
|
|
|
(gdbsim_store_register): Likewise.
|
|
|
|
|
|
Eliminate make_cleanup_obstack_free, introduce auto_obstack
This commit eliminates make_cleanup_obstack_free, replacing it with a
new auto_obstack type that inherits obstack to add cdtors.
These changes in the parsers may not be obvious:
- obstack_init (&name_obstack);
- make_cleanup_obstack_free (&name_obstack);
+ name_obstack.clear ();
Here, the 'name_obstack' variable is a global. The change means that
the obstack's contents from a previous parse will stay around until
the next parsing starts. I.e., memory won't be reclaimed until then.
I don't think that's a problem, these objects don't really grow much
at all.
The other option I tried was to add a separate type that is like
auto_obstack but manages an external obstack, just for those cases. I
like the current approach better as that other approach adds more
boilerplate and yet another type to learn.
gdb/ChangeLog:
2017-06-27 Pedro Alves <palves@redhat.com>
* c-exp.y (name_obstack): Now an auto_obstack.
(yylex): Use auto_obstack::clear.
(c_parse): Use auto_obstack::clear instead of reinitializing and
freeing the obstack.
* c-lang.c (evaluate_subexp_c): Use auto_obstack.
* d-exp.y (name_obstack): Now an auto_obstack.
(yylex): Use auto_obstack::clear.
(d_parse): Use auto_obstack::clear instead of reinitializing and
freeing the obstack.
* dwarf2loc.c (fetch_const_value_from_synthetic_pointer): Use
auto_obstack.
* dwarf2read.c (create_addrmap_from_index)
(dwarf2_build_psymtabs_hard)
(update_enumeration_type_from_children): Likewise.
* gdb_obstack.h (auto_obstack): New type.
* go-exp.y (name_obstack): Now an auto_obstack.
(build_packaged_name): Use auto_obstack::clear.
(go_parse): Use auto_obstack::clear instead of reinitializing and
freeing the obstack.
* linux-tdep.c (linux_make_mappings_corefile_notes): Use
auto_obstack.
* printcmd.c (printf_wide_c_string, ui_printf): Use auto_obstack.
* rust-exp.y (work_obstack): Now an auto_obstack.
(rust_parse, rust_lex_tests): Use auto_obstack::clear instead of
reinitializing and freeing the obstack.
* utils.c (do_obstack_free, make_cleanup_obstack_free): Delete.
(host_char_to_target): Use auto_obstack.
* utils.h (make_cleanup_obstack_free): Delete declaration.
* valprint.c (generic_emit_char, generic_printstr): Use
auto_obstack.
2017-06-27 12:07:14 +02:00
|
|
|
|
2017-06-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* c-exp.y (name_obstack): Now an auto_obstack.
|
|
|
|
|
(yylex): Use auto_obstack::clear.
|
|
|
|
|
(c_parse): Use auto_obstack::clear instead of reinitializing and
|
|
|
|
|
freeing the obstack.
|
|
|
|
|
* c-lang.c (evaluate_subexp_c): Use auto_obstack.
|
|
|
|
|
* d-exp.y (name_obstack): Now an auto_obstack.
|
|
|
|
|
(yylex): Use auto_obstack::clear.
|
|
|
|
|
(d_parse): Use auto_obstack::clear instead of reinitializing and
|
|
|
|
|
freeing the obstack.
|
|
|
|
|
* dwarf2loc.c (fetch_const_value_from_synthetic_pointer): Use
|
|
|
|
|
auto_obstack.
|
|
|
|
|
* dwarf2read.c (create_addrmap_from_index)
|
|
|
|
|
(dwarf2_build_psymtabs_hard)
|
|
|
|
|
(update_enumeration_type_from_children): Likewise.
|
|
|
|
|
* gdb_obstack.h (auto_obstack): New type.
|
|
|
|
|
* go-exp.y (name_obstack): Now an auto_obstack.
|
|
|
|
|
(build_packaged_name): Use auto_obstack::clear.
|
|
|
|
|
(go_parse): Use auto_obstack::clear instead of reinitializing and
|
|
|
|
|
freeing the obstack.
|
|
|
|
|
* linux-tdep.c (linux_make_mappings_corefile_notes): Use
|
|
|
|
|
auto_obstack.
|
|
|
|
|
* printcmd.c (printf_wide_c_string, ui_printf): Use auto_obstack.
|
|
|
|
|
* rust-exp.y (work_obstack): Now an auto_obstack.
|
|
|
|
|
(rust_parse, rust_lex_tests): Use auto_obstack::clear instead of
|
|
|
|
|
reinitializing and freeing the obstack.
|
|
|
|
|
* utils.c (do_obstack_free, make_cleanup_obstack_free): Delete.
|
|
|
|
|
(host_char_to_target): Use auto_obstack.
|
|
|
|
|
* utils.h (make_cleanup_obstack_free): Delete declaration.
|
|
|
|
|
* valprint.c (generic_emit_char, generic_printstr): Use
|
|
|
|
|
auto_obstack.
|
|
|
|
|
|
darwin: Do not add a dummy thread
Starting a process on macOS/Darwin currently leads to this error:
/Users/simark/src/binutils-gdb/gdb/darwin-nat.c:383: internal-error: void darwin_check_new_threads(struct inferior *): Assertion `tp' failed.
with the corresponding partial backtrace (sorry, taken with lldb,
because well, gdb is broken :)):
frame #9: 0x000000010004605a gdb`darwin_check_new_threads(inf=0x0000000100edf670) at darwin-nat.c:383
frame #10: 0x0000000100045848 gdb`darwin_init_thread_list(inf=0x0000000100edf670) at darwin-nat.c:1710
frame #11: 0x00000001000452f8 gdb`darwin_ptrace_him(pid=8375) at darwin-nat.c:1792
frame #12: 0x0000000100041d95 gdb`fork_inferior(...) at fork-inferior.c:440
frame #13: 0x0000000100043f82 gdb`darwin_create_inferior(...) at darwin-nat.c:1841
frame #14: 0x000000010034ac32 gdb`run_command_1(args=0x0000000000000000, from_tty=1, tbreak_at_main=1) at infcmd.c:611
The issue was introduced by commit
"Share fork_inferior et al with gdbserver"
because it changed the place where the dummy thread (pid, 0, 0) is added,
relative to the call to the init_trace_fun callback. In this callback, darwin
checks for new threads in the program (there should be exactly one) in order to
update this dummy thread with the right tid. Previously, things happened in
this order:
- fork_inferior calls fork()
- fork_inferior adds dummy thread
- fork_inferior calls init_trace_fun callback, which updates the dummy
thread info
Following the commit mentioned above, the new thread is added in the
darwin-nat code, after having called fork_inferior (in
darwin_create_inferior). So gdb tries to do things in this order:
- fork_inferior calls fork()
- fork_inferior calls init_trace_fun callback, which tries to update
the dummy thread info
- darwin_create_inferior adds the dummy thread
The error happens while trying to update the dummy thread that has not
been added yet.
I don't think this dummy thread is necessary for darwin. Previously, it
was fork_inferior that was adding this thread, for all targets, so
darwin had to deal with it. Now that it's done by targets themselves,
we can just skip that on darwin. darwin_check_new_threads called
indirectly by init_trace_fun/darwin_ptrace_him will simply notice the
new thread and add it with the right information.
My level of testing was: try to start a process and try to attach to a
process, and it seems to work somewhat like it did before. I tried to
run the testsuite, but it leaves a huge amount of zombie processes that
launchd doesn't seem to reap, leading to exhaustion of system resources
(number of processes).
gdb/ChangeLog:
* darwin-nat.c (darwin_check_new_threads): Don't handle dummy
thread.
(darwin_init_thread_list): Don't update dummy thread.
(darwin_create_inferior, darwin_attach): Don't add a dummy thread.
2017-06-27 10:55:36 +02:00
|
|
|
|
2017-06-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* darwin-nat.c (darwin_check_new_threads): Don't handle dummy
|
|
|
|
|
thread.
|
|
|
|
|
(darwin_init_thread_list): Don't update dummy thread.
|
|
|
|
|
(darwin_create_inferior, darwin_attach): Don't add a dummy thread.
|
|
|
|
|
|
2017-06-26 15:08:36 +02:00
|
|
|
|
2017-06-26 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* record-full.c (netorder16): Remove.
|
|
|
|
|
|
vec: Silence -Wunused-function warnings on clang
clang has a too aggressive (or broken, depends on how you want to see
it) -Wunused-function warning, which is triggered by the functions
defined by DEF_VEC_* but not used in the current source file. Normally,
it won't warn about unused static inline functions defined in header
files, because it's expected that a source file won't use all functions
defined in a header file it includes. However, if the DEF_VEC_* macro
is used in a source file, it considers those functions as defined in the
source file, which leads it to think that we should remove those
functions. It is therefore missing a check to see whether those
functions are resulting from macro expansion. A bug already exists for
that:
https://bugs.llvm.org//show_bug.cgi?id=22712
It's quite easy to silence this warning in a localized way, that is in
the DEF_VEC_* macros.
gdb/ChangeLog:
* common/diagnostics.h: Define macros for GCC.
(DIAGNOSTIC_IGNORE_UNUSED_FUNCTION): New macro.
* common/vec.h: Include diagnostics.h.
(DIAGNOSTIC_IGNORE_UNUSED_VEC_FUNCTION): New macro.
(DEF_VEC_I, DEF_VEC_P, DEF_VEC_O): Ignore -Wunused-function
warning.
2017-06-26 15:08:35 +02:00
|
|
|
|
2017-06-26 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/diagnostics.h: Define macros for GCC.
|
|
|
|
|
(DIAGNOSTIC_IGNORE_UNUSED_FUNCTION): New macro.
|
|
|
|
|
* common/vec.h: Include diagnostics.h.
|
|
|
|
|
(DIAGNOSTIC_IGNORE_UNUSED_VEC_FUNCTION): New macro.
|
|
|
|
|
(DEF_VEC_I, DEF_VEC_P, DEF_VEC_O): Ignore -Wunused-function
|
|
|
|
|
warning.
|
|
|
|
|
|
2017-06-26 15:08:35 +02:00
|
|
|
|
2017-06-26 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/diagnostics.h (DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER):
|
|
|
|
|
New macro.
|
|
|
|
|
* ada-lex.l: Ignore deprecated register warnings.
|
|
|
|
|
|
2017-06-25 12:57:13 +02:00
|
|
|
|
2017-06-25 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* main.c (get_init_files): Replace "SYSTEM_GDBINIT +
|
|
|
|
|
datadir_len" with "&SYSTEM_GDBINIT[datadir_len]".
|
|
|
|
|
|
2017-06-25 12:49:19 +02:00
|
|
|
|
2017-06-25 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* dtrace-probe.c (dtrace_process_dof_probe): Put semi-colon on
|
|
|
|
|
its own line.
|
|
|
|
|
|
2017-06-25 12:38:59 +02:00
|
|
|
|
2017-06-25 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* nat/x86-dregs.c (x86_show_dr): Print registers one per line.
|
|
|
|
|
|
2017-06-23 11:21:39 +02:00
|
|
|
|
2017-06-23 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (XTENSA_MAX_REGISTER_SIZE): Add.
|
|
|
|
|
(xtensa_register_write_masked): Use XTENSA_MAX_REGISTER_SIZE.
|
|
|
|
|
(xtensa_register_read_masked): Likewise.
|
|
|
|
|
|
2017-06-22 20:50:24 +02:00
|
|
|
|
2017-06-22 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/environ.c (gdb_environ::unset): Update comment.
|
|
|
|
|
|
2017-06-22 17:30:15 +02:00
|
|
|
|
2017-06-22 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pyuw_sniffer): Allocate space for
|
|
|
|
|
registers.
|
|
|
|
|
|
2017-06-22 16:33:18 +02:00
|
|
|
|
2017-06-22 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* record-full.c (record_full_exec_insn): Use byte_vector.
|
|
|
|
|
|
2017-06-22 14:41:27 +02:00
|
|
|
|
2017-06-22 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regformats/i386/amd64-avx-mpx-avx512-pku-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx-avx512-pku.dat: Regenerated.
|
|
|
|
|
|
2017-06-22 15:09:52 +02:00
|
|
|
|
2017-06-22 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (cached_reg): Move from here...
|
|
|
|
|
* regcache.h (cached_reg): ...to here.
|
|
|
|
|
* python/py-unwind.c (struct reg_info): Remove.
|
|
|
|
|
(cached_frame_info): Use cached_reg_t.
|
|
|
|
|
(pyuw_prev_register): Likewise.
|
|
|
|
|
(pyuw_sniffer): Use cached_reg_t and allocate registers.
|
|
|
|
|
(pyuw_dealloc_cache): Free all registers.
|
|
|
|
|
|
2017-06-22 10:31:20 +02:00
|
|
|
|
2017-06-22 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* unittests/environ-selftests.c (run_tests): Ignore -Wself-move
|
|
|
|
|
warning.
|
|
|
|
|
* common/diagnostics.h: New file.
|
|
|
|
|
|
2017-06-22 11:57:13 +02:00
|
|
|
|
2017-06-22 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/agent.h: Add include guards.
|
|
|
|
|
|
2017-06-21 12:28:03 +02:00
|
|
|
|
2017-06-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* target.h (struct target_ops) <to_xfer_partial>: Update doc to
|
|
|
|
|
talk about addressable units instead of bytes.
|
|
|
|
|
|
2017-06-20 15:33:53 +02:00
|
|
|
|
2017-06-20 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/environ.c (gdb_environ::unset): Use '::iterator' instead
|
|
|
|
|
of '::const_iterator'.
|
|
|
|
|
|
C++ify gdb/common/environ.c
As part of the preparation necessary for my upcoming task, I'd like to
propose that we turn gdb_environ into a class. The approach taken
here is simple: the class gdb_environ contains everything that is
needed to manipulate the environment variables. These variables are
stored in an std::vector<char *>, which can be converted to a 'char
**' and passed as argument to functions that need it.
The usage has not changed much. As per Pedro's suggestion, this class
uses a static factory method initialization. This means that when an
instance is created, it is initially empty. When needed, it has to be
initialized using the static method 'from_host_environ'.
As mentioned before, this is a preparation for an upcoming work that I
will be posting in the next few weeks or so. For that work, I'll
probably create another data structure that will contain all the
environment variables that were set by the user using the 'set
environment' command, because I'll need access to them. This will be
much easier with the class-ification of gdb_environ.
As noted, this has been regression-tested with the new version of
environ.exp and no regressions were found.
gdb/ChangeLog:
2017-06-20 Sergio Durigan Junior <sergiodj@redhat.com>
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
'unittests/environ-selftests.c'.
(SUBDIR_UNITTESTS_OBS): Add 'environ-selftests.o'.
* charset.c (find_charset_names): Declare object 'iconv_env'.
Update code to use 'iconv_env' object. Remove call to
'free_environ'.
* common/environ.c: Include <utility>.
(make_environ): Delete function.
(free_environ): Delete function.
(gdb_environ::clear): New function.
(gdb_environ::operator=): New function.
(gdb_environ::get): Likewise.
(environ_vector): Delete function.
(set_in_environ): Delete function.
(gdb_environ::set): New function.
(unset_in_environ): Delete function.
(gdb_environ::unset): New function.
(gdb_environ::envp): Likewise.
* common/environ.h: Include <vector>.
(struct gdb_environ): Delete; transform into...
(class gdb_environ): ... this class.
(free_environ): Delete prototype.
(init_environ, get_in_environ, set_in_environ, unset_in_environ,
environ_vector): Likewise.
* infcmd.c (run_command_1): Update code to call
'envp' from 'gdb_environ' class.
(environment_info): Update code to call methods from 'gdb_environ'
class.
(unset_environment_command): Likewise.
(path_info): Likewise.
(path_command): Likewise.
* inferior.c (inferior::~inferior): Delete call to 'free_environ'.
(inferior::inferior): Initialize 'environment' using the host's
information.
* inferior.h: Remove forward declaration of 'struct gdb_environ'.
Include "environ.h".
(class inferior) <environment>: Change type from 'struct
gdb_environ' to 'gdb_environ'.
* mi/mi-cmd-env.c (mi_cmd_env_path): Update code to call
methods from 'gdb_environ' class.
* solib.c (solib_find_1): Likewise
* unittests/environ-selftests.c: New file.
gdb/gdbserver/ChangeLog:
2017-06-20 Sergio Durigan Junior <sergiodj@redhat.com>
* linux-low.c (linux_create_inferior): Adjust code to access the
environment information via 'gdb_environ' class.
* lynx-low.c (lynx_create_inferior): Likewise.
* server.c (our_environ): Make it an instance of 'gdb_environ'.
(get_environ): Return a pointer to 'our_environ'.
(captured_main): Initialize 'our_environ'.
* server.h (get_environ): Adjust prototype.
* spu-low.c (spu_create_inferior): Adjust code to access the
environment information via 'gdb_environ' class.
2017-02-11 03:19:44 +01:00
|
|
|
|
2017-06-20 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
'unittests/environ-selftests.c'.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add 'environ-selftests.o'.
|
|
|
|
|
* charset.c (find_charset_names): Declare object 'iconv_env'.
|
|
|
|
|
Update code to use 'iconv_env' object. Remove call to
|
|
|
|
|
'free_environ'.
|
|
|
|
|
* common/environ.c: Include <utility>.
|
|
|
|
|
(make_environ): Delete function.
|
|
|
|
|
(free_environ): Delete function.
|
|
|
|
|
(gdb_environ::clear): New function.
|
|
|
|
|
(gdb_environ::operator=): New function.
|
|
|
|
|
(gdb_environ::get): Likewise.
|
|
|
|
|
(environ_vector): Delete function.
|
|
|
|
|
(set_in_environ): Delete function.
|
|
|
|
|
(gdb_environ::set): New function.
|
|
|
|
|
(unset_in_environ): Delete function.
|
|
|
|
|
(gdb_environ::unset): New function.
|
|
|
|
|
(gdb_environ::envp): Likewise.
|
|
|
|
|
* common/environ.h: Include <vector>.
|
|
|
|
|
(struct gdb_environ): Delete; transform into...
|
|
|
|
|
(class gdb_environ): ... this class.
|
|
|
|
|
(free_environ): Delete prototype.
|
|
|
|
|
(init_environ, get_in_environ, set_in_environ, unset_in_environ,
|
|
|
|
|
environ_vector): Likewise.
|
|
|
|
|
* infcmd.c (run_command_1): Update code to call
|
|
|
|
|
'envp' from 'gdb_environ' class.
|
|
|
|
|
(environment_info): Update code to call methods from 'gdb_environ'
|
|
|
|
|
class.
|
|
|
|
|
(unset_environment_command): Likewise.
|
|
|
|
|
(path_info): Likewise.
|
|
|
|
|
(path_command): Likewise.
|
|
|
|
|
* inferior.c (inferior::~inferior): Delete call to 'free_environ'.
|
|
|
|
|
(inferior::inferior): Initialize 'environment' using the host's
|
|
|
|
|
information.
|
|
|
|
|
* inferior.h: Remove forward declaration of 'struct gdb_environ'.
|
|
|
|
|
Include "environ.h".
|
|
|
|
|
(class inferior) <environment>: Change type from 'struct
|
|
|
|
|
gdb_environ' to 'gdb_environ'.
|
|
|
|
|
* mi/mi-cmd-env.c (mi_cmd_env_path): Update code to call
|
|
|
|
|
methods from 'gdb_environ' class.
|
|
|
|
|
* solib.c (solib_find_1): Likewise
|
|
|
|
|
* unittests/environ-selftests.c: New file.
|
|
|
|
|
|
2017-06-20 13:08:33 +02:00
|
|
|
|
2017-06-20 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* features/i386/i386-linux.xml: Exchange the order of including
|
|
|
|
|
32bit-linux.xml and 32bit-sse.xml.
|
|
|
|
|
* features/i386/i386-linux.c: Regenerated.
|
|
|
|
|
|
2017-06-20 12:29:17 +02:00
|
|
|
|
2017-06-20 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* target-descriptions.c (tdesc_reg): Add ctor, dtor.
|
|
|
|
|
Delete copy ctor and assignment operator.
|
|
|
|
|
(tdesc_type): Likewise.
|
|
|
|
|
(tdesc_feature): Likewise.
|
|
|
|
|
(tdesc_free_reg): Remove.
|
|
|
|
|
(tdesc_create_reg): Use new.
|
|
|
|
|
(tdesc_free_type): Remove.
|
|
|
|
|
(tdesc_create_vector): Use new.
|
|
|
|
|
(tdesc_create_union): Likewise.
|
|
|
|
|
(tdesc_create_flags): Likewise.
|
|
|
|
|
(tdesc_create_enum): Likewise.
|
|
|
|
|
(tdesc_free_feature): Delete.
|
|
|
|
|
(free_target_description): Use delete.
|
|
|
|
|
|
2017-06-19 23:30:24 +02:00
|
|
|
|
2017-06-19 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (print_gp_register_row): Don't error for unavailable
|
|
|
|
|
registers.
|
|
|
|
|
|
2017-06-19 13:46:47 +02:00
|
|
|
|
2017-06-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (write_psymtabs_to_index): Construct file_closer
|
|
|
|
|
after gdb::unlinker.
|
|
|
|
|
|
2017-06-17 00:10:27 +02:00
|
|
|
|
2017-06-19 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cm-env.c (_initialize_mi_cmd_env): Use getenv instead of
|
|
|
|
|
gdb_environ to access an environment variable.
|
|
|
|
|
|
2017-06-18 23:28:56 +02:00
|
|
|
|
2017-06-18 Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-ptrace.c (linux_fork_to_function): Add cast to
|
|
|
|
|
gdb_byte*.
|
|
|
|
|
|
2017-06-17 23:19:25 +02:00
|
|
|
|
2017-06-17 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* nat/fork-inferior.h (trace_start_error): Add ATTRIBUTE_PRINTF.
|
|
|
|
|
|
2017-06-17 23:18:49 +02:00
|
|
|
|
2017-06-17 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* configure: Re-generate.
|
|
|
|
|
* warning.m4 (build_warnings): Add -Wno-mismatched-tags.
|
|
|
|
|
|
gdb: Use -Werror when checking for (un)supported warning flags
In warning.m4, we pass all the warning flags one by one to the compiler
to test if they are supported by this particular compiler. If the
compiler exits with an error, we conclude that this warning flag is not
supported and exclude it. This allows us to use warning flags without
having to worry about which versions of which compilers support each
flag.
clang, by default, only emits a warning if an unknown flag is passed:
warning: unknown warning option '-Wfoo' [-Wunknown-warning-option]
The result is that we think that all the warning flags we use are
supported by clang (they are not), and the compilation fails later when
building with -Werror, since the aforementioned warning becomes an
error. The fix is to also pass -Werror when probing for supported
flags, then we'll correctly get an error when using an unknown warning,
and we'll exclude it:
error: unknown warning option '-Wfoo' [-Werror,-Wunknown-warning-option]
I am not sure why there is a change in a random comment in
gdbserver/configure, but I suppose it's a leftfover from a previous
patch, so I included it.
gdb/ChangeLog:
* configure: Re-generate.
* warning.m4: Pass -Werror to compiler when checking for
supported warning flags.
gdb/gdbserver/ChangeLog:
* configure: Re-generate.
2017-06-17 23:18:20 +02:00
|
|
|
|
2017-06-17 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* configure: Re-generate.
|
|
|
|
|
* warning.m4: Pass -Werror to compiler when checking for
|
|
|
|
|
supported warning flags.
|
|
|
|
|
|
2017-06-17 23:17:00 +02:00
|
|
|
|
2017-06-17 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (COMPILE.pre): Add "-x c++".
|
|
|
|
|
|
extract/store integer function template
This patch converts functions extract_{unsigned,signed}_integer
to a function template extract_integer, which has two instantiations. It
also does the similar changes to store__{unsigned,signed}_integer,
regcache::raw_read_{unsigned,signed}, regcache::raw_write_{unsigned,signed},
regcache::cooked_read_{unsigned,signed},
regcache::cooked_write_{unsigned,signed}.
This patch was posted here
https://sourceware.org/ml/gdb-patches/2017-05/msg00492.html but the
problem was fixed in a different way. However, I think the patch is still
useful to shorten the code.
gdb:
2017-06-16 Alan Hayward <alan.hayward@arm.com>
Pedro Alves <palves@redhat.com>
Yao Qi <yao.qi@linaro.org>
* defs.h (RequireLongest): New.
(extract_integer): Declare function template.
(extract_signed_integer): Remove the declaration, but define it
static inline.
(extract_unsigned_integer): Likewise.
(store_integer): Declare function template.
(store_signed_integer): Remove the declaration, but define it
static inline.
(store_unsigned_integer): Likewise.
* findvar.c (extract_integer): New function template.
(extract_signed_integer): Remove.
(extract_unsigned_integer): Remove.
(extract_integer<LONGEST>, extract_integer<ULONGEST>): Explicit
instantiations.
(store_integer): New function template.
(store_signed_integer): Remove.
(store_unsigned_integer): Remove.
(store_integer): Explicit instantiations.
* regcache.c (regcache_raw_read_signed): Update.
(regcache::raw_read): New function.
(regcache::raw_read_signed): Remove.
(regcache::raw_read_unsigned): Remove.
(regcache_raw_read_unsigned): Update.
(regcache_raw_write_unsigned): Update.
(regcache::raw_write_signed): Remove.
(regcache::raw_write): New function.
(regcache_cooked_read_signed): Update.
(regcache::raw_write_unsigned): Remove.
(regcache::cooked_read_signed): Remove.
(regcache_cooked_read_unsigned): Update.
(regcache::cooked_read_unsigned): Remove.
(regcache_cooked_write_signed): Update.
(regcache_cooked_write_unsigned): Update.
* regcache.h (regcache) <raw_read_signed>: Remove.
<raw_write_signed, raw_read_unsigned, raw_write_unsigned>: Remove.
<raw_read, raw_write>: New.
<cooked_read_signed, cooked_write_signed>: Remove.
<cooked_write_unsigned, cooked_read_unsigned>: Remove.
<cooked_read, cooked_write>: New.
* sh64-tdep.c (sh64_pseudo_register_read): Update.
(sh64_pseudo_register_write): Update.
2017-06-16 16:38:42 +02:00
|
|
|
|
2017-06-16 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* defs.h (RequireLongest): New.
|
|
|
|
|
(extract_integer): Declare function template.
|
|
|
|
|
(extract_signed_integer): Remove the declaration, but define it
|
|
|
|
|
static inline.
|
|
|
|
|
(extract_unsigned_integer): Likewise.
|
|
|
|
|
(store_integer): Declare function template.
|
|
|
|
|
(store_signed_integer): Remove the declaration, but define it
|
|
|
|
|
static inline.
|
|
|
|
|
(store_unsigned_integer): Likewise.
|
|
|
|
|
* findvar.c (extract_integer): New function template.
|
|
|
|
|
(extract_signed_integer): Remove.
|
|
|
|
|
(extract_unsigned_integer): Remove.
|
|
|
|
|
(extract_integer<LONGEST>, extract_integer<ULONGEST>): Explicit
|
|
|
|
|
instantiations.
|
|
|
|
|
(store_integer): New function template.
|
|
|
|
|
(store_signed_integer): Remove.
|
|
|
|
|
(store_unsigned_integer): Remove.
|
|
|
|
|
(store_integer): Explicit instantiations.
|
|
|
|
|
* regcache.c (regcache_raw_read_signed): Update.
|
|
|
|
|
(regcache::raw_read): New function.
|
|
|
|
|
(regcache::raw_read_signed): Remove.
|
|
|
|
|
(regcache::raw_read_unsigned): Remove.
|
|
|
|
|
(regcache_raw_read_unsigned): Update.
|
|
|
|
|
(regcache_raw_write_unsigned): Update.
|
|
|
|
|
(regcache::raw_write_signed): Remove.
|
|
|
|
|
(regcache::raw_write): New function.
|
|
|
|
|
(regcache_cooked_read_signed): Update.
|
|
|
|
|
(regcache::raw_write_unsigned): Remove.
|
|
|
|
|
(regcache::cooked_read_signed): Remove.
|
|
|
|
|
(regcache_cooked_read_unsigned): Update.
|
|
|
|
|
(regcache::cooked_read_unsigned): Remove.
|
|
|
|
|
(regcache_cooked_write_signed): Update.
|
|
|
|
|
(regcache_cooked_write_unsigned): Update.
|
|
|
|
|
* regcache.h (regcache) <raw_read_signed>: Remove.
|
|
|
|
|
<raw_write_signed, raw_read_unsigned, raw_write_unsigned>: Remove.
|
|
|
|
|
<raw_read, raw_write>: New.
|
|
|
|
|
<cooked_read_signed, cooked_write_signed>: Remove.
|
|
|
|
|
<cooked_write_unsigned, cooked_read_unsigned>: Remove.
|
|
|
|
|
<cooked_read, cooked_write>: New.
|
|
|
|
|
* sh64-tdep.c (sh64_pseudo_register_read): Update.
|
|
|
|
|
(sh64_pseudo_register_write): Update.
|
|
|
|
|
|
2017-02-10 12:11:55 +01:00
|
|
|
|
2017-06-16 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep.c (arc_disassembler_options): New variable.
|
|
|
|
|
(arc_gdbarch_init): Set and use it. Use arc_delayed_print_insn instead
|
|
|
|
|
of default_print_insn.
|
|
|
|
|
(arc_delayed_print_insn): Set info->section when needed,
|
|
|
|
|
use default_print_insn to retrieve a disassembler.
|
|
|
|
|
|
2017-06-14 22:45:20 +02:00
|
|
|
|
2017-06-14 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21574
|
|
|
|
|
* infcmd.c (_initialize_infcmd): Expand "help run" documentation
|
|
|
|
|
to mention $SHELL and startup-with-shell.
|
|
|
|
|
|
2017-06-13 19:26:55 +02:00
|
|
|
|
2017-06-14 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Move Maxim Grigoriev to the Past Maintainers.
|
|
|
|
|
|
Don't use print_insn_XXX in GDB
This is a follow-up to
[PATCH 0/6] Unify the disassembler selection in gdb and objdump
https://sourceware.org/ml/binutils/2017-05/msg00192.html
that is, opcodes is able to select the right disassembler, so gdb
doesn't have to select them. Instead, gdb can just use
default_print_insn. As a result, these print_insn_XXX are not used
out of opcodes, so this patch also moves their declarations from
include/dis-asm.h to opcodes/disassemble.h. With this change,
GDB doesn't use any print_insn_XXX directly any more.
gdb:
2017-06-14 Yao Qi <yao.qi@linaro.org>
* aarch64-tdep.c (aarch64_gdb_print_insn): Call
default_print_insn instead of print_insn_aarch64.
* arm-tdep.c (gdb_print_insn_arm): Call
default_print_insn instead of print_insn_big_arm
and print_insn_little_arm.
* i386-tdep.c (i386_print_insn): Call default_print_insn
instead of print_insn_i386.
* ia64-tdep.c (ia64_print_insn): Call
default_print_insn instead of print_insn_ia64.
* mips-tdep.c (gdb_print_insn_mips): Call
default_print_insn instead of print_insn_big_mips
and print_insn_little_mips.
* spu-tdep.c (gdb_print_insn_spu): Call default_print_insn
instead of print_insn_spu.
include:
2017-06-14 Yao Qi <yao.qi@linaro.org>
* dis-asm.h (print_insn_aarch64): Move it to opcodes/disassemble.h.
(print_insn_big_arm, print_insn_big_mips): Likewise.
(print_insn_i386, print_insn_ia64): Likewise.
(print_insn_little_arm, print_insn_little_mips): Likewise.
(print_insn_spu): Likewise.
opcodes:
2017-06-14 Yao Qi <yao.qi@linaro.org>
* aarch64-dis.c: Include disassemble.h instead of dis-asm.h.
* arm-dis.c: Likewise.
* ia64-dis.c: Likewise.
* mips-dis.c: Likewise.
* spu-dis.c: Likewise.
* disassemble.h (print_insn_aarch64): New declaration, moved from
include/dis-asm.h.
(print_insn_big_arm, print_insn_big_mips): Likewise.
(print_insn_i386, print_insn_ia64): Likewise.
(print_insn_little_arm, print_insn_little_mips): Likewise.
2017-06-14 17:28:30 +02:00
|
|
|
|
2017-06-14 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_gdb_print_insn): Call
|
|
|
|
|
default_print_insn instead of print_insn_aarch64.
|
|
|
|
|
* arm-tdep.c (gdb_print_insn_arm): Call
|
|
|
|
|
default_print_insn instead of print_insn_big_arm
|
|
|
|
|
and print_insn_little_arm.
|
|
|
|
|
* i386-tdep.c (i386_print_insn): Call default_print_insn
|
|
|
|
|
instead of print_insn_i386.
|
|
|
|
|
* ia64-tdep.c (ia64_print_insn): Call
|
|
|
|
|
default_print_insn instead of print_insn_ia64.
|
|
|
|
|
* mips-tdep.c (gdb_print_insn_mips): Call
|
|
|
|
|
default_print_insn instead of print_insn_big_mips
|
|
|
|
|
and print_insn_little_mips.
|
|
|
|
|
* spu-tdep.c (gdb_print_insn_spu): Call default_print_insn
|
|
|
|
|
instead of print_insn_spu.
|
|
|
|
|
|
Introduce gdb::byte_vector, add allocator that default-initializes
In some cases we've been replacing heap-allocated gdb_byte buffers
managed with xmalloc/make_cleanup(xfree) with gdb::vector<gdb_byte>.
That usually pessimizes the code a little bit because std::vector
value-initializes elements (which for gdb_byte means
zero-initialization), while if you're creating a temporary buffer,
you're most certaintly going to fill it in with some data. An
alternative is to use
unique_ptr<gdb_byte[]> buf (new gdb_byte[size]);
but it looks like that's not very popular.
Recently, a use of obstacks in dwarf2read.c was replaced with
std::vector<gdb_byte> and that as well introduced a pessimization for
always memsetting the buffer when it's garanteed that the zeros will
be overwritten immediately. (see dwarf2read.c change in this patch to
find it.)
So here's a different take at addressing this issue "by design":
#1 - Introduce default_init_allocator<T>
I.e., a custom allocator that does default construction using default
initialization, meaning, no more zero initialization. That's the
default_init_allocation<T> class added in this patch.
See "Notes" at
<http://en.cppreference.com/w/cpp/container/vector/resize>.
#2 - Introduce def_vector<T>
I.e., a convenience typedef, because typing the allocator is annoying:
using def_vector<T> = std::vector<T, gdb::default_init_allocator<T>>;
#3 - Introduce byte_vector
Because gdb_byte vectors will be the common thing, add a convenience
"byte_vector" typedef:
using byte_vector = def_vector<gdb_byte>;
which is really the same as:
std::vector<gdb_byte, gdb::default_init_allocator<gdb_byte>>;
The intent then is to make "gdb::byte_vector" be the go-to for dynamic
byte buffers. So the less friction, the better.
#4 - Adjust current code to use it.
To set the example going forward. Replace std::vector uses and also
unique_ptr<byte[]> uses.
One nice thing is that with this allocator, for changes like these:
-std::unique_ptr<byte[]> buf (new gdb_byte[some_size]);
+gdb::byte_vector buf (some_size);
fill_with_data (buf.data (), buf.size ());
the generated code is the same as before. I.e., the compiler
de-structures the vector and gets rid of the unused "reserved vs size"
related fields.
The other nice thing is that it's easier to write
gdb::byte_vector buf (size);
than
std::unique_ptr<gdb_byte[]> buf (new gdb_byte[size]);
or even (C++14):
auto buf = std::make_unique<gdb_byte[]> (size); // zero-initializes...
#5 - Suggest s/std::vector<gdb_byte>/gdb::byte_vector/ going forward.
Note that this commit actually fixes a couple of bugs where the current
code is incorrectly using "std::vector::reserve(new_size)" and then
accessing the vector's internal buffer beyond the vector's size: see
dwarf2loc.c and charset.c. That's undefined behavior and may trigger
debug mode assertion failures. With default_init_allocator,
"resize()" behaves like "reserve()" performance wise, in that it
leaves new elements with unspecified values, but, it does that safely
without triggering undefined behavior when you access those values.
gdb/ChangeLog:
2017-06-14 Pedro Alves <palves@redhat.com>
* ada-lang.c: Include "common/byte-vector.h".
(ada_value_primitive_packed_val): Use gdb::byte_vector.
* charset.c (wchar_iterator::iterate): Resize the vector instead
of reserving it.
* common/byte-vector.h: Include "common/def-vector.h".
(wchar_iterator::m_out): Now a gdb::def_vector<gdb_wchar_t>.
* cli/cli-dump.c: Include "common/byte-vector.h".
(dump_memory_to_file, restore_binary_file): Use gdb::byte_vector.
* common/byte-vector.h: New file.
* common/def-vector.h: New file.
* common/default-init-alloc.h: New file.
* dwarf2loc.c: Include "common/byte-vector.h".
(rw_pieced_value): Use gdb::byte_vector, and resize the vector
instead of reserving it.
* dwarf2read.c: Include "common/byte-vector.h".
(data_buf::m_vec): Now a gdb::byte_vector.
* gdb_regex.c: Include "common/def-vector.h".
(compiled_regex::compiled_regex): Use gdb::def_vector<char>.
* mi/mi-main.c: Include "common/byte-vector.h".
(mi_cmd_data_read_memory): Use gdb::byte_vector.
* printcmd.c: Include "common/byte-vector.h".
(print_scalar_formatted): Use gdb::byte_vector.
* valprint.c: Include "common/byte-vector.h".
(maybe_negate_by_bytes, print_decimal_chars): Use
gdb::byte_vector.
2017-06-14 12:08:52 +02:00
|
|
|
|
2017-06-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c: Include "common/byte-vector.h".
|
|
|
|
|
(ada_value_primitive_packed_val): Use gdb::byte_vector.
|
|
|
|
|
* charset.c (wchar_iterator::iterate): Resize the vector instead
|
|
|
|
|
of reserving it.
|
|
|
|
|
* common/byte-vector.h: Include "common/def-vector.h".
|
|
|
|
|
(wchar_iterator::m_out): Now a gdb::def_vector<gdb_wchar_t>.
|
|
|
|
|
* cli/cli-dump.c: Include "common/byte-vector.h".
|
|
|
|
|
(dump_memory_to_file, restore_binary_file): Use gdb::byte_vector.
|
|
|
|
|
* common/byte-vector.h: New file.
|
|
|
|
|
* common/def-vector.h: New file.
|
|
|
|
|
* common/default-init-alloc.h: New file.
|
|
|
|
|
* dwarf2loc.c: Include "common/byte-vector.h".
|
|
|
|
|
(rw_pieced_value): Use gdb::byte_vector, and resize the vector
|
|
|
|
|
instead of reserving it.
|
|
|
|
|
* dwarf2read.c: Include "common/byte-vector.h".
|
|
|
|
|
(data_buf::m_vec): Now a gdb::byte_vector.
|
|
|
|
|
* gdb_regex.c: Include "common/def-vector.h".
|
|
|
|
|
(compiled_regex::compiled_regex): Use gdb::def_vector<char>.
|
|
|
|
|
* mi/mi-main.c: Include "common/byte-vector.h".
|
|
|
|
|
(mi_cmd_data_read_memory): Use gdb::byte_vector.
|
|
|
|
|
* printcmd.c: Include "common/byte-vector.h".
|
|
|
|
|
(print_scalar_formatted): Use gdb::byte_vector.
|
|
|
|
|
* valprint.c: Include "common/byte-vector.h".
|
|
|
|
|
(maybe_negate_by_bytes, print_decimal_chars): Use
|
|
|
|
|
gdb::byte_vector.
|
|
|
|
|
|
2017-06-13 21:14:50 +02:00
|
|
|
|
2017-06-13 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* darwin-nat.c: Include "nat/fork-inferior.h".
|
|
|
|
|
|
darwin: Add fork-inferior.o to NATDEPFILES
I happened to be build-testing on macOS and found this:
Undefined symbols for architecture x86_64:
"fork_inferior(char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*))", referenced from:
darwin_create_inferior(target_ops*, char const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, char**, int) in darwin-nat.o
"startup_inferior(int, int, target_waitstatus*, ptid_t*)", referenced from:
gdb_startup_inferior(int, int) in fork-child.o
"trace_start_error(char const*, ...)", referenced from:
darwin_ptrace_me() in darwin-nat.o
"trace_start_error_with_name(char const*)", referenced from:
darwin_ptrace_me() in darwin-nat.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Adding fork-inferior.o fixes it. I factored out the Darwin bits that
are no architecture-specific in the section meant for that at the top.
I only built-tested this using Travis-CI, since I don't have access to
this platform.
gdb/ChangeLog:
* configure.nat: Factor out Darwin bits that are not
architecture-specific. Add fork-inferior.o.
2017-06-13 21:14:35 +02:00
|
|
|
|
2017-06-13 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* configure.nat: Factor out Darwin bits that are not
|
|
|
|
|
architecture-specific. Add fork-inferior.o.
|
|
|
|
|
|
aix: Add fork-inferior.o to NATDEPFILES
Trying to build on AIX gives:
ld: 0711-317 ERROR: Undefined symbol: .trace_start_error_with_name(char const*)
ld: 0711-317 ERROR: Undefined symbol: .fork_inferior(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char**, void (*)(), void (*)(int), void (*)(), char const*, void (*)(char const*, char* const*, char* const*))
ld: 0711-317 ERROR: Undefined symbol: .startup_inferior(int, int, target_waitstatus*, ptid_t*)
Including fork-inferior.o in the build should help. I also factored out
the AIX bits that are not architecture-specific to be consistent with the other
OSes.
gdb/ChangeLog:
* configure.nat: Factor out AIX bits that are not
architecture-specific. Add fork-inferior.o.
2017-06-13 21:14:25 +02:00
|
|
|
|
2017-06-13 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* configure.nat: Factor out AIX bits that are not
|
|
|
|
|
architecture-specific. Add fork-inferior.o.
|
|
|
|
|
|
2017-06-13 15:20:32 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (rw_pieced_value): New. Merge logic from...
|
|
|
|
|
(read_pieced_value, write_pieced_value): ...here. Reduce to
|
|
|
|
|
wrappers that just call rw_pieced_value.
|
|
|
|
|
|
2017-06-13 15:20:32 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): When writing the data for a
|
|
|
|
|
memory piece, use write_memory_with_notification instead of
|
|
|
|
|
write_memory.
|
|
|
|
|
|
2017-06-13 15:20:31 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* valops.c (read_value_memory): Change embedded_offset to
|
|
|
|
|
represent a bit offset instead of a byte offset.
|
|
|
|
|
* value.h (read_value_memory): Adjust comment.
|
|
|
|
|
|
2017-06-13 15:20:31 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (read_pieced_value): Remove unnecessary variables
|
|
|
|
|
dest_offset_bits and source_offset_bits.
|
|
|
|
|
(write_pieced_value): Likewise.
|
|
|
|
|
|
2017-06-13 15:20:31 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (read_pieced_value): Respect the piece offset, as
|
|
|
|
|
given by DW_OP_bit_piece.
|
|
|
|
|
(write_pieced_value): Likewise.
|
|
|
|
|
|
2017-06-13 15:20:30 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (read_pieced_value): Move the buffer allocation and
|
|
|
|
|
some other preparations to the places where sufficient information
|
|
|
|
|
is available.
|
|
|
|
|
(write_pieced_value): Likewise.
|
|
|
|
|
|
2017-06-13 15:20:30 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (bits_to_bytes): New function.
|
|
|
|
|
(read_pieced_value): Fix offset calculations for register pieces
|
|
|
|
|
on big-endian targets.
|
|
|
|
|
(write_pieced_value): Likewise.
|
|
|
|
|
|
2017-06-13 15:20:30 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (read_pieced_value): Remove buffer_size variable.
|
|
|
|
|
(write_pieced_value): Likewise.
|
|
|
|
|
|
2017-06-13 15:20:28 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): When writing to a bit-field,
|
|
|
|
|
transfer the source value's least significant bits, instead of its
|
|
|
|
|
lowest-addressed ones. Rename type_len to max_offset.
|
|
|
|
|
(read_pieced_value): Mirror above changes to write_pieced_value as
|
|
|
|
|
applicable.
|
|
|
|
|
|
2017-06-13 15:20:28 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): In DWARF_VALUE_MEMORY,
|
|
|
|
|
truncate full bytes from dest_offset_bits before using it as an
|
|
|
|
|
offset into the buffer.
|
|
|
|
|
|
2017-06-13 15:20:27 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): Include transfer size in
|
|
|
|
|
byte-wise check.
|
|
|
|
|
|
2017-06-13 15:20:27 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): Fix copy/paste error in the
|
|
|
|
|
calculation of this_size.
|
|
|
|
|
|
2017-06-13 15:20:27 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (read_pieced_value): Respect parent value's offset
|
|
|
|
|
when targeting a bit-field.
|
|
|
|
|
(write_pieced_value): Likewise.
|
|
|
|
|
|
2017-06-13 15:20:26 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (struct piece_closure) <addr_size>: Remove field.
|
|
|
|
|
(allocate_piece_closure): Drop addr_size parameter.
|
|
|
|
|
(dwarf2_evaluate_loc_desc_full): Adjust call to
|
|
|
|
|
allocate_piece_closure.
|
|
|
|
|
|
2017-06-13 15:20:26 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21226
|
|
|
|
|
* dwarf2loc.c (read_pieced_value): Anchor stack value pieces at
|
|
|
|
|
the LSB end, independent of endianness.
|
|
|
|
|
|
2017-06-13 15:20:26 +02:00
|
|
|
|
2017-06-13 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): Fix order of calculations for
|
|
|
|
|
size capping.
|
|
|
|
|
|
2017-06-13 10:05:04 +02:00
|
|
|
|
2017-06-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mips-linux-nat.c: Move include features/mips*-linux.c to
|
|
|
|
|
mips-linux-tdep.c.
|
|
|
|
|
(_initialize_mips_linux_nat): Move initialize_tdesc_mips* calls
|
|
|
|
|
to mips-linux-tdep.c.
|
|
|
|
|
* mips-linux-tdep.c: Include features/mips*-linux.c
|
|
|
|
|
(_initialize_mips_linux_tdep): Call initialize_tdesc_mips*
|
|
|
|
|
functions.
|
|
|
|
|
* mips-linux-tdep.h (tdesc_mips_linux): Declare.
|
|
|
|
|
(tdesc_mips_dsp_linux, tdesc_mips64_linux): Declare.
|
|
|
|
|
(tdesc_mips64_dsp_linux): Declare.
|
|
|
|
|
|
2017-05-23 00:55:18 +02:00
|
|
|
|
2017-06-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* valprint.h (val_print_type_code_int): Remove.
|
|
|
|
|
* valprint.c (generic_val_print_int): Always call
|
|
|
|
|
val_print_scalar_formatted.
|
|
|
|
|
(val_print_type_code_int): Remove.
|
|
|
|
|
* printcmd.c (print_scalar_formatted): Handle options->format==0.
|
|
|
|
|
* f-valprint.c (f_val_print): Use val_print_scalar_formatted.
|
|
|
|
|
* c-valprint.c (c_val_print_int): Use val_print_scalar_formatted.
|
|
|
|
|
* ada-valprint.c (ada_val_print_num): Use
|
|
|
|
|
val_print_scalar_formatted.
|
|
|
|
|
|
2017-05-23 02:43:59 +02:00
|
|
|
|
2017-06-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* printcmd.c (print_scalar_formatted): Unify the two switches.
|
|
|
|
|
Don't convert scalars to LONGEST.
|
|
|
|
|
|
2017-05-23 00:32:25 +02:00
|
|
|
|
2017-06-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR exp/16225:
|
|
|
|
|
* valprint.h (print_decimal_chars): Update.
|
|
|
|
|
* valprint.c (maybe_negate_by_bytes): New function.
|
|
|
|
|
(print_decimal_chars): Add "is_signed" argument.
|
|
|
|
|
* printcmd.c (print_scalar_formatted): Update.
|
|
|
|
|
|
2017-05-22 11:55:58 +02:00
|
|
|
|
2017-06-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR exp/16225:
|
|
|
|
|
* valprint.h (print_binary_chars, print_hex_chars): Update.
|
|
|
|
|
* valprint.c (val_print_type_code_int): Update.
|
|
|
|
|
(print_binary_chars): Add "zero_pad" argument.
|
|
|
|
|
(emit_octal_digit): New function.
|
|
|
|
|
(print_octal_chars): Don't zero-pad.
|
|
|
|
|
(print_decimal_chars): Likewise.
|
|
|
|
|
(print_hex_chars): Add "zero_pad" argument.
|
|
|
|
|
* sh64-tdep.c (sh64_do_fp_register): Update.
|
|
|
|
|
* regcache.c (regcache::dump): Update.
|
|
|
|
|
* printcmd.c (print_scalar_formatted): Update.
|
|
|
|
|
* infcmd.c (default_print_one_register_info): Update.
|
|
|
|
|
|
2017-06-12 20:04:52 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (MAX_MIPS_ABI_REGSIZE): New.
|
|
|
|
|
(mips_eabi_push_dummy_call): Rename local 'regsize' to
|
|
|
|
|
'abi_regsize'. Rename local array 'valbuf' to 'ref_valbuf', and
|
|
|
|
|
use MAX_MIPS_ABI_REGSIZE instead of MAX_REGISTER_SIZE to size it.
|
|
|
|
|
Assert that abi_regsize bytes fit in 'ref_valbuf'.
|
|
|
|
|
|
2017-06-12 03:51:52 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (mapped_symtab::data): Now a vector of
|
|
|
|
|
symtab_index_entry instead of vector of
|
|
|
|
|
std::unique_ptr<symtab_index_entry>. All users adjusted to check
|
|
|
|
|
whether an element's name is NULL instead of checking whether the
|
|
|
|
|
element itself is NULL.
|
|
|
|
|
(find_slot): Change return type. Adjust.
|
|
|
|
|
(hash_expand, , add_index_entry, uniquify_cu_indices)
|
|
|
|
|
(write_hash_table): Adjust.
|
|
|
|
|
|
2017-06-12 03:40:18 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (recursively_count_psymbols): New function.
|
|
|
|
|
(write_psymtabs_to_index): Call it to compute number of psyms and
|
|
|
|
|
pass estimate size of psyms_seen to unordered_set's ctor.
|
|
|
|
|
|
2017-06-12 01:49:51 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (write_hash_table): Check if key already exists
|
|
|
|
|
before emplacing.
|
|
|
|
|
|
2017-06-10 17:51:14 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (data_buf::append_space): Rename to...
|
|
|
|
|
(data_buf::grow): ... this, and make private. Adjust all callers.
|
|
|
|
|
(data_buf::append_uint): New method.
|
|
|
|
|
(add_address_entry, write_one_signatured_type)
|
|
|
|
|
(write_psymtabs_to_index): Use it.
|
|
|
|
|
|
2017-06-10 01:53:00 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (file_write(FILE *, const void *, size_t)): Delete.
|
|
|
|
|
(file_write (FILE *, const std::vector<Elem>&)): Delete.
|
|
|
|
|
(data_buf::file_write): Call ::fwrite directly.
|
|
|
|
|
|
2017-06-12 01:43:55 +02:00
|
|
|
|
2017-06-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (uniquify_cu_indices): Use std::unique and
|
|
|
|
|
std::vector::erase.
|
|
|
|
|
|
Code cleanup: C++ify .gdb_index producer
gdb/ChangeLog
2017-06-12 Jan Kratochvil <jan.kratochvil@redhat.com>
Code cleanup: C++ify .gdb_index producer.
* dwarf2read.c: Include <unordered_set> and <unordered_map>.
(MAYBE_SWAP) [WORDS_BIGENDIAN]: Cast to offset_type.
(struct strtab_entry, hash_strtab_entry, eq_strtab_entry)
(create_strtab, add_string): Remove.
(file_write, data_buf): New.
(struct symtab_index_entry): Use std::vector for cu_indices.
(struct mapped_symtab): Use std::vector for data.
(hash_symtab_entry, eq_symtab_entry, delete_symtab_entry)
(create_symbol_hash_table, create_mapped_symtab, cleanup_mapped_symtab):
Remove.
(find_slot): Change return type. Update it to the new data structures.
(hash_expand, add_index_entry): Update it to the new data structures.
(offset_type_compare): Remove.
(uniquify_cu_indices): Update it to the new data structures.
(c_str_view, c_str_view_hasher, vector_hasher): New.
(add_indices_to_cpool): Remove.
(write_hash_table): Update it to the new data structures.
(struct psymtab_cu_index_map, hash_psymtab_cu_index)
(eq_psymtab_cu_index): Remove.
(psym_index_map): New typedef.
(struct addrmap_index_data): Change addr_obstack pointer to data_buf
reference and std::unordered_map for cu_index_htab.
(add_address_entry, add_address_entry_worker, write_address_map)
(write_psymbols): Update it to the new data structures.
(write_obstack): Remove.
(struct signatured_type_index_data): Change types_list to a data_buf
reference and psyms_seen to a std::unordered_set reference.
(write_one_signatured_type, recursively_write_psymbols)
(write_psymtabs_to_index): Update it to the new data structures.
2017-06-12 17:29:53 +02:00
|
|
|
|
2017-06-12 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
Code cleanup: C++ify .gdb_index producer.
|
|
|
|
|
* dwarf2read.c: Include <unordered_set> and <unordered_map>.
|
|
|
|
|
(MAYBE_SWAP) [WORDS_BIGENDIAN]: Cast to offset_type.
|
|
|
|
|
(struct strtab_entry, hash_strtab_entry, eq_strtab_entry)
|
|
|
|
|
(create_strtab, add_string): Remove.
|
|
|
|
|
(file_write, data_buf): New.
|
|
|
|
|
(struct symtab_index_entry): Use std::vector for cu_indices.
|
|
|
|
|
(struct mapped_symtab): Use std::vector for data.
|
|
|
|
|
(hash_symtab_entry, eq_symtab_entry, delete_symtab_entry)
|
|
|
|
|
(create_symbol_hash_table, create_mapped_symtab, cleanup_mapped_symtab):
|
|
|
|
|
Remove.
|
|
|
|
|
(find_slot): Change return type. Update it to the new data structures.
|
|
|
|
|
(hash_expand, add_index_entry): Update it to the new data structures.
|
|
|
|
|
(offset_type_compare): Remove.
|
|
|
|
|
(uniquify_cu_indices): Update it to the new data structures.
|
|
|
|
|
(c_str_view, c_str_view_hasher, vector_hasher): New.
|
|
|
|
|
(add_indices_to_cpool): Remove.
|
|
|
|
|
(write_hash_table): Update it to the new data structures.
|
|
|
|
|
(struct psymtab_cu_index_map, hash_psymtab_cu_index)
|
|
|
|
|
(eq_psymtab_cu_index): Remove.
|
|
|
|
|
(psym_index_map): New typedef.
|
|
|
|
|
(struct addrmap_index_data): Change addr_obstack pointer to data_buf
|
|
|
|
|
reference and std::unordered_map for cu_index_htab.
|
|
|
|
|
(add_address_entry, add_address_entry_worker, write_address_map)
|
|
|
|
|
(write_psymbols): Update it to the new data structures.
|
|
|
|
|
(write_obstack): Remove.
|
|
|
|
|
(struct signatured_type_index_data): Change types_list to a data_buf
|
|
|
|
|
reference and psyms_seen to a std::unordered_set reference.
|
|
|
|
|
(write_one_signatured_type, recursively_write_psymbols)
|
|
|
|
|
(write_psymtabs_to_index): Update it to the new data structures.
|
|
|
|
|
|
2017-06-11 23:16:01 +02:00
|
|
|
|
2017-06-11 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 8.0): Announce {set,show} debug
|
|
|
|
|
separate-debug-file commands.
|
|
|
|
|
* symfile.h (separate_debug_file_debug): New global.
|
|
|
|
|
* symfile.c (separate_debug_file_debug): New global.
|
|
|
|
|
(separate_debug_file_exists, find_separate_debug_file): Add
|
|
|
|
|
debug output.
|
|
|
|
|
(_initialize_symfile): Add "set debug separate-debug-file"
|
|
|
|
|
command.
|
|
|
|
|
* build-id.c (build_id_to_debug_bfd,
|
|
|
|
|
find_separate_debug_file_by_buildid): Add debug output.
|
|
|
|
|
|
2017-06-10 00:24:05 +02:00
|
|
|
|
2017-06-10 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (displaced_step_free_closure): Remove.
|
|
|
|
|
* gdbarch.h, gdbarch.c: Re-generate.
|
|
|
|
|
* aarch64-linux-tdep.c (aarch64_linux_init_abi): Don't set
|
|
|
|
|
displaced_step_free_closure.
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Likewise.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
|
|
|
|
|
* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
|
|
|
|
|
* rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise.
|
|
|
|
|
* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
|
|
|
|
|
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
|
|
|
|
|
* arch-utils.h (simple_displaced_step_free_closure): Remove.
|
|
|
|
|
* arch-utils.c (simple_displaced_step_free_closure): Remove.
|
|
|
|
|
* infrun.c (displaced_step_clear): Call xfree instead of
|
|
|
|
|
gdbarch_displaced_step_free_closure.
|
|
|
|
|
|
2017-06-08 22:58:25 +02:00
|
|
|
|
2017-06-08 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-utils.c (stringify_argv): Check for "arg[0] !=
|
|
|
|
|
NULL".
|
|
|
|
|
|
2017-06-08 17:05:24 +02:00
|
|
|
|
2017-06-08 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mn10300-tdep.c (MN10300_MAX_REGISTER_SIZE): Add.
|
|
|
|
|
(mn10300_extract_return_value): Use MN10300_MAX_REGISTER_SIZE.
|
|
|
|
|
(mn10300_push_dummy_call): Likewise.
|
|
|
|
|
|
2017-06-08 16:57:12 +02:00
|
|
|
|
2017-06-08 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (register_changed_p): Use value_contents_eq.
|
|
|
|
|
|
2017-06-08 15:02:59 +02:00
|
|
|
|
2017-06-08 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (register_changed_p): Use cooked_read_value.
|
|
|
|
|
|
2016-12-23 04:14:02 +01:00
|
|
|
|
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 8.0): Announce that GDBserver is now
|
|
|
|
|
able to start inferiors using a shell.
|
|
|
|
|
(New remote packets): Announce new packet "QStartupWithShell".
|
|
|
|
|
* remote.c: Add PACKET_QStartupWithShell.
|
|
|
|
|
(extended_remote_create_inferior): Handle new
|
|
|
|
|
PACKET_QStartupWithShell.
|
|
|
|
|
(remote_protocol_features) <QStartupWithShell>: New entry for
|
|
|
|
|
PACKET_QStartupWithShell.
|
|
|
|
|
(_initialize_remote): Call "add_packet_config_cmd" for
|
|
|
|
|
QStartupShell.
|
|
|
|
|
|
Share fork_inferior et al with gdbserver
This is the most important (and the biggest, sorry) patch of the
series. It moves fork_inferior from gdb/fork-child.c to
nat/fork-inferior.c and makes all the necessary adjustments to both
GDB and gdbserver to make sure everything works OK.
There is no "most important change" with this patch; all changes are
made in a progressive way, making sure that gdbserver had the
necessary features while not breaking GDB at the same time.
I decided to go ahead and implement a partial support for starting the
inferior with a shell on gdbserver, although the full feature comes in
the next patch. The user won't have the option to disable the
startup-with-shell, and also won't be able to change which shell
gdbserver will use (other than setting the $SHELL environment
variable, that is).
Everything is working as expected, and no regressions were present
during the tests.
gdb/ChangeLog:
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
Pedro Alves <palves@redhat.com>
* Makefile.in (HFILES_NO_SRCDIR): Add "common/common-inferior.h"
and "nat/fork-inferior.h".
* common/common-inferior.h: New file, with contents from
"gdb/inferior.h".
* commom/common-utils.c: Include "common-utils.h".
(stringify_argv): New function.
* common/common-utils.h (stringify_argv): New prototype.
* configure.nat: Add "fork-inferior.o" as a dependency for
"*linux*", "fbsd*" and "nbsd*" hosts.
* corefile.c (get_exec_file): Update comment.
* darwin-nat.c (darwin_ptrace_him): Call "gdb_startup_inferior"
instead of "startup_inferior".
(darwin_create_inferior): Call "add_thread_silent" after
"fork_inferior".
* fork-child.c: Cleanup unnecessary includes.
(SHELL_FILE): Move to "common/common-fork-child.c".
(environ): Likewise.
(exec_wrapper): Initialize.
(get_exec_wrapper): New function.
(breakup_args): Move to "common/common-fork-child.c"; rename to
"breakup_args_for_exec".
(escape_bang_in_quoted_argument): Move to
"common/common-fork-child.c".
(saved_ui): New variable.
(prefork_hook): New function.
(postfork_hook): Likewise.
(postfork_child_hook): Likewise.
(gdb_startup_inferior): Likewise.
(fork_inferior): Move to "common/common-fork-child.c". Update
function to support gdbserver.
(startup_inferior): Likewise.
* gdbcore.h (get_exec_file): Remove declaration.
* gnu-nat.c (gnu_create_inferior): Call "gdb_startup_inferior"
instead of "startup_inferior". Call "add_thread_silent" after
"fork_inferior".
* inf-ptrace.c: Include "nat/fork-inferior.h" and "utils.h".
(inf_ptrace_create_inferior): Call "gdb_startup_inferior"
instead of "startup_inferior". Call "add_thread_silent" after
"fork_inferior".
* inferior.h: Include "common-inferior.h".
(trace_start_error): Move to "common/common-utils.h".
(trace_start_error_with_name): Likewise.
(fork_inferior): Move prototype to "nat/fork-inferior.h".
(startup_inferior): Likewise.
(gdb_startup_inferior): New prototype.
* nat/fork-inferior.c: New file, with contents from "fork-child.c".
* nat/fork-inferior.h: New file.
* procfs.c (procfs_init_inferior): Call "gdb_startup_inferior"
instead of "startup_inferior". Call "add_thread_silent" after
"fork_inferior".
* target.h (target_terminal_init): Move prototype to
"target/target.h".
(target_terminal_inferior): Likewise.
(target_terminal_ours): Likewise.
* target/target.h (target_terminal_init): New prototype, moved
from "target.h".
(target_terminal_inferior): Likewise.
(target_terminal_ours): Likewise.
* utils.c (gdb_flush_out_err): New function.
gdb/gdbserver/ChangeLog:
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
Pedro Alves <palves@redhat.com>
* Makefile.in (SFILES): Add "nat/fork-inferior.o".
* configure: Regenerate.
* configure.srv (srv_linux_obj): Add "fork-child.o" and
"fork-inferior.o".
(i[34567]86-*-lynxos*): Likewise.
(spu*-*-*): Likewise.
* fork-child.c: New file.
* linux-low.c: Include "common-inferior.h", "nat/fork-inferior.h"
and "environ.h".
(linux_ptrace_fun): New function.
(linux_create_inferior): Adjust function prototype to reflect
change on "target.h". Adjust function code to use
"fork_inferior".
(linux_request_interrupt): Delete "signal_pid".
* lynx-low.c: Include "common-inferior.h" and "nat/fork-inferior.h".
(lynx_ptrace_fun): New function.
(lynx_create_inferior): Adjust function prototype to reflect
change on "target.h". Adjust function code to use
"fork_inferior".
* nto-low.c (nto_create_inferior): Adjust function prototype and
code to reflect change on "target.h". Update comments.
* server.c: Include "common-inferior.h", "nat/fork-inferior.h",
"common-terminal.h" and "environ.h".
(terminal_fd): Moved to fork-child.c.
(old_foreground_pgrp): Likewise.
(restore_old_foreground_pgrp): Likewise.
(last_status): Make it global.
(last_ptid): Likewise.
(our_environ): New variable.
(startup_with_shell): Likewise.
(program_name): Likewise.
(program_argv): Rename to...
(program_args): ...this.
(wrapper_argv): New variable.
(start_inferior): Delete function.
(get_exec_wrapper): New function.
(get_exec_file): Likewise.
(get_environ): Likewise.
(prefork_hook): Likewise.
(post_fork_inferior): Likewise.
(postfork_hook): Likewise.
(postfork_child_hook): Likewise.
(handle_v_run): Update code to deal with arguments coming from the
remote host. Update calls from "start_inferior" to
"create_inferior".
(captured_main): Likewise. Initialize environment variable. Call
"have_job_control".
* server.h (post_fork_inferior): New prototype.
(get_environ): Likewise.
(last_status): Declare.
(last_ptid): Likewise.
(signal_pid): Likewise.
* spu-low.c: Include "common-inferior.h" and "nat/fork-inferior.h".
(spu_ptrace_fun): New function.
(spu_create_inferior): Adjust function prototype to reflect change
on "target.h". Adjust function code to use "fork_inferior".
* target.c (target_terminal_init): New function.
(target_terminal_inferior): Likewise.
(target_terminal_ours): Likewise.
* target.h: Include <vector>.
(struct target_ops) <create_inferior>: Update prototype.
(create_inferior): Update macro.
* utils.c (gdb_flush_out_err): New function.
* win32-low.c (win32_create_inferior): Adjust function prototype
and code to reflect change on "target.h".
gdb/testsuite/ChangeLog:
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
* gdb.server/non-existing-program.exp: Update regex in order to
reflect the fact that gdbserver is now using fork_inferior (with a
shell) to startup the inferior.
2016-12-23 03:11:11 +01:00
|
|
|
|
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add "common/common-inferior.h"
|
|
|
|
|
and "nat/fork-inferior.h".
|
|
|
|
|
* common/common-inferior.h: New file, with contents from
|
|
|
|
|
"gdb/inferior.h".
|
|
|
|
|
* commom/common-utils.c: Include "common-utils.h".
|
|
|
|
|
(stringify_argv): New function.
|
|
|
|
|
* common/common-utils.h (stringify_argv): New prototype.
|
|
|
|
|
* configure.nat: Add "fork-inferior.o" as a dependency for
|
|
|
|
|
"*linux*", "fbsd*" and "nbsd*" hosts.
|
|
|
|
|
* corefile.c (get_exec_file): Update comment.
|
|
|
|
|
* darwin-nat.c (darwin_ptrace_him): Call "gdb_startup_inferior"
|
|
|
|
|
instead of "startup_inferior".
|
|
|
|
|
(darwin_create_inferior): Call "add_thread_silent" after
|
|
|
|
|
"fork_inferior".
|
|
|
|
|
* fork-child.c: Cleanup unnecessary includes.
|
|
|
|
|
(SHELL_FILE): Move to "common/common-fork-child.c".
|
|
|
|
|
(environ): Likewise.
|
|
|
|
|
(exec_wrapper): Initialize.
|
|
|
|
|
(get_exec_wrapper): New function.
|
|
|
|
|
(breakup_args): Move to "common/common-fork-child.c"; rename to
|
|
|
|
|
"breakup_args_for_exec".
|
|
|
|
|
(escape_bang_in_quoted_argument): Move to
|
|
|
|
|
"common/common-fork-child.c".
|
|
|
|
|
(saved_ui): New variable.
|
|
|
|
|
(prefork_hook): New function.
|
|
|
|
|
(postfork_hook): Likewise.
|
|
|
|
|
(postfork_child_hook): Likewise.
|
|
|
|
|
(gdb_startup_inferior): Likewise.
|
|
|
|
|
(fork_inferior): Move to "common/common-fork-child.c". Update
|
|
|
|
|
function to support gdbserver.
|
|
|
|
|
(startup_inferior): Likewise.
|
|
|
|
|
* gdbcore.h (get_exec_file): Remove declaration.
|
|
|
|
|
* gnu-nat.c (gnu_create_inferior): Call "gdb_startup_inferior"
|
|
|
|
|
instead of "startup_inferior". Call "add_thread_silent" after
|
|
|
|
|
"fork_inferior".
|
|
|
|
|
* inf-ptrace.c: Include "nat/fork-inferior.h" and "utils.h".
|
|
|
|
|
(inf_ptrace_create_inferior): Call "gdb_startup_inferior"
|
|
|
|
|
instead of "startup_inferior". Call "add_thread_silent" after
|
|
|
|
|
"fork_inferior".
|
|
|
|
|
* inferior.h: Include "common-inferior.h".
|
|
|
|
|
(trace_start_error): Move to "common/common-utils.h".
|
|
|
|
|
(trace_start_error_with_name): Likewise.
|
|
|
|
|
(fork_inferior): Move prototype to "nat/fork-inferior.h".
|
|
|
|
|
(startup_inferior): Likewise.
|
|
|
|
|
(gdb_startup_inferior): New prototype.
|
|
|
|
|
* nat/fork-inferior.c: New file, with contents from "fork-child.c".
|
|
|
|
|
* nat/fork-inferior.h: New file.
|
|
|
|
|
* procfs.c (procfs_init_inferior): Call "gdb_startup_inferior"
|
|
|
|
|
instead of "startup_inferior". Call "add_thread_silent" after
|
|
|
|
|
"fork_inferior".
|
|
|
|
|
* target.h (target_terminal_init): Move prototype to
|
|
|
|
|
"target/target.h".
|
|
|
|
|
(target_terminal_inferior): Likewise.
|
|
|
|
|
(target_terminal_ours): Likewise.
|
|
|
|
|
* target/target.h (target_terminal_init): New prototype, moved
|
|
|
|
|
from "target.h".
|
|
|
|
|
(target_terminal_inferior): Likewise.
|
|
|
|
|
(target_terminal_ours): Likewise.
|
|
|
|
|
* utils.c (gdb_flush_out_err): New function.
|
|
|
|
|
|
2016-12-22 19:30:42 +01:00
|
|
|
|
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add "common/common-gdbthread.h".
|
|
|
|
|
* common/common-gdbthread.h: New file, with parts from
|
|
|
|
|
"gdb/gdbthread.h".
|
|
|
|
|
* gdbthread.h: Include "common-gdbthread.h".
|
|
|
|
|
(switch_to_thread): Moved to "common/common-gdbthread.h".
|
|
|
|
|
|
2016-12-22 18:41:16 +01:00
|
|
|
|
2017-06-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add "common/job-control.c".
|
|
|
|
|
(HFILES_NO_SRCDIR): Add "common/job-control.h".
|
|
|
|
|
(COMMON_OBS): Add "job-control.o".
|
|
|
|
|
* common/job-control.c: New file, with contents from
|
|
|
|
|
"gdb/inflow.c".
|
|
|
|
|
* common/job-control.h: New file, with contents from "terminal.h".
|
|
|
|
|
* fork-child.c: Include "job-control.h".
|
|
|
|
|
* inflow.c: Include "job-control.h".
|
|
|
|
|
(gdb_setpgid): Move to "common/common-inflow.c".
|
|
|
|
|
(_initialize_inflow): Move setting of "job_control" to
|
|
|
|
|
"handle_job_control".
|
|
|
|
|
* terminal.h (job_control): Moved to "common/common-terminal.h".
|
|
|
|
|
(gdb_setpgid): Likewise.
|
|
|
|
|
* top.c: Include "job_control.h".
|
|
|
|
|
* utils.c: Likewise.
|
|
|
|
|
(job_control): Moved to "job-control.c".
|
|
|
|
|
|
2017-06-07 15:21:40 +02:00
|
|
|
|
2017-06-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add gdb_regex.c.
|
|
|
|
|
(COMMON_OBS): Add gdb_regex.o.
|
|
|
|
|
* ada-lang.c (ada_add_standard_exceptions)
|
|
|
|
|
(ada_add_exceptions_from_frame, name_matches_regex)
|
|
|
|
|
(ada_add_global_exceptions, ada_exceptions_list_1): Change regex
|
|
|
|
|
parameter type to compiled_regex. Adjust.
|
|
|
|
|
(ada_exceptions_list): Use compiled_regex.
|
|
|
|
|
* break-catch-throw.c (exception_catchpoint::pattern): Now a
|
|
|
|
|
std::unique_ptr<compiled_regex>.
|
|
|
|
|
(exception_catchpoint::~exception_catchpoint): Remove regfree
|
|
|
|
|
call.
|
|
|
|
|
(check_status_exception_catchpoint): Adjust to use compiled_regex.
|
|
|
|
|
(handle_gnu_v3_exceptions): Adjust to use compiled_regex.
|
|
|
|
|
* breakpoint.c (solib_catchpoint::compiled): Now a
|
|
|
|
|
std::unique_ptr<compiled_regex>.
|
|
|
|
|
(solib_catchpoint::~solib_catchpoint): Remove regfree call.
|
|
|
|
|
(check_status_catch_solib): Adjust to use compiled_regex.
|
|
|
|
|
(add_solib_catchpoint): Adjust to use compiled_regex.
|
|
|
|
|
* cli/cli-cmds.c (apropos_command): Use compiled_regex.
|
|
|
|
|
* cli/cli-decode.c (apropos_cmd): Change regex parameter to
|
|
|
|
|
compiled_regex reference. Adjust to use it.
|
|
|
|
|
* cli/cli-decode.h: Remove struct re_pattern_buffer forward
|
|
|
|
|
declaration. Include "gdb_regex.h".
|
|
|
|
|
(apropos_cmd): Change regex parameter to compiled_regex reference.
|
|
|
|
|
* gdb_regex.c: New file.
|
|
|
|
|
* gdb_regex.h (make_regfree_cleanup, get_regcomp_error): Delete
|
|
|
|
|
declarations.
|
|
|
|
|
(class compiled_regex): New.
|
|
|
|
|
* linux-tdep.c: Include "common/gdb_optional.h".
|
|
|
|
|
(struct mapping_regexes): New, factored out from
|
|
|
|
|
mapping_is_anonymous_p, and adjusted to use compiled_regex.
|
|
|
|
|
(mapping_is_anonymous_p): Use mapping_regexes wrapped in a
|
|
|
|
|
gdb::optional and remove cleanups. Adjust to compiled_regex.
|
|
|
|
|
* probe.c: Include "common/gdb_optional.h".
|
|
|
|
|
(collect_probes): Use compiled_regex and gdb::optional and remove
|
|
|
|
|
cleanups.
|
|
|
|
|
* skip.c: Include "common/gdb_optional.h".
|
|
|
|
|
(skiplist_entry::compiled_function_regexp): Now a
|
|
|
|
|
gdb::optional<compiled_regex>.
|
|
|
|
|
(skiplist_entry::compiled_function_regexp_is_valid): Delete field.
|
|
|
|
|
(free_skiplist_entry): Remove regfree call.
|
|
|
|
|
(compile_skip_regexp, skip_rfunction_p): Adjust to use
|
|
|
|
|
compiled_regex and gdb::optional.
|
|
|
|
|
* symtab.c: Include "common/gdb_optional.h".
|
|
|
|
|
(search_symbols): Use compiled_regex and gdb::optional.
|
|
|
|
|
* utils.c (do_regfree_cleanup, make_regfree_cleanup)
|
|
|
|
|
(get_regcomp_error, compile_rx_or_error): Delete. Some bits moved
|
|
|
|
|
to gdb_regex.c.
|
|
|
|
|
|
2017-06-07 11:16:46 +02:00
|
|
|
|
2017-06-07 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache::save): Avoid buffer use.
|
|
|
|
|
(regcache::dump): Likewise.
|
|
|
|
|
|
2017-06-07 11:06:10 +02:00
|
|
|
|
2017-06-07 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* sh-tdep.c (sh_pseudo_register_read): Remove
|
|
|
|
|
MAX_REGISTER_SIZE.
|
|
|
|
|
(sh_pseudo_register_write): Likewise.
|
|
|
|
|
* sh64-tdep.c (sh64_pseudo_register_read): Likewise.
|
|
|
|
|
(sh64_pseudo_register_write): Likewise
|
|
|
|
|
|
2017-06-07 10:57:55 +02:00
|
|
|
|
2017-06-07 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_store_return_value): Use
|
|
|
|
|
V_REGISTER_SIZE.
|
|
|
|
|
(aarch64_pseudo_read_value): Likewise.
|
|
|
|
|
(aarch64_pseudo_write): Likewise.
|
|
|
|
|
|
2017-06-06 17:42:45 +02:00
|
|
|
|
2017-06-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regformats/regdef.h (set_register_cache): Remove the
|
|
|
|
|
declaration.
|
|
|
|
|
|
2017-06-06 17:34:20 +02:00
|
|
|
|
2017-06-06 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* frame.c (frame_unwind_register_signed): Use
|
|
|
|
|
frame_unwind_register_value.
|
|
|
|
|
|
2017-06-06 16:53:59 +02:00
|
|
|
|
2017-06-06 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR breakpoints/21553
|
|
|
|
|
* breakpoint.c (create_breakpoints_sal_default)
|
|
|
|
|
(init_breakpoint_sal, create_breakpoint_sal): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr for string parameters.
|
|
|
|
|
(create_breakpoint): Constify 'extra_string' and 'cond_string'
|
|
|
|
|
parameters. Replace cleanups with gdb::unique_xmalloc_ptr.
|
|
|
|
|
(base_breakpoint_create_breakpoints_sal)
|
|
|
|
|
(bkpt_create_breakpoints_sal, tracepoint_create_breakpoints_sal)
|
|
|
|
|
(strace_marker_create_breakpoints_sal)
|
|
|
|
|
(create_breakpoints_sal_default): Use gdb::unique_xmalloc_ptr for
|
|
|
|
|
string parameters.
|
|
|
|
|
* breakpoint.h (breakpoint_ops::create_breakpoints_sal): Use
|
|
|
|
|
gdb::unique_xmalloc_ptr for string parameters.
|
|
|
|
|
(create_breakpoint): Constify 'extra_string' and 'cond_string'
|
|
|
|
|
parameters.
|
|
|
|
|
|
2017-06-06 16:45:08 +02:00
|
|
|
|
2017-06-06 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* alpha-tdep.c (alpha_register_to_value): Use
|
|
|
|
|
get_frame_register_value.
|
|
|
|
|
(alpha_value_to_register): Use ALPHA_REGISTER_SIZE.
|
|
|
|
|
|
2017-06-06 14:50:07 +02:00
|
|
|
|
2017-06-06 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* ia64-tdep.c (IA64_MAX_FP_REGISTER_SIZE) Add.
|
|
|
|
|
(ia64_register_to_value): Use IA64_MAX_FP_REGISTER_SIZE.
|
|
|
|
|
(ia64_value_to_register): Likewise.
|
|
|
|
|
(ia64_extract_return_value): Likewise.
|
|
|
|
|
(ia64_store_return_value): Likewise.
|
|
|
|
|
(ia64_push_dummy_call): Likewise.
|
|
|
|
|
|
2017-06-04 18:04:09 +02:00
|
|
|
|
2017-06-04 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 8.0 released.
|
|
|
|
|
|
2017-06-03 22:06:55 +02:00
|
|
|
|
2017-06-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.c (struct arch_lwp_info): Remove.
|
|
|
|
|
|
2017-06-03 21:24:00 +02:00
|
|
|
|
2017-06-03 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_post_attach_wait): Remove FIRST
|
|
|
|
|
parameter.
|
|
|
|
|
(linux_nat_attach): Adjust call to linux_nat_post_attach_wait.
|
|
|
|
|
|
2017-06-02 23:24:21 +02:00
|
|
|
|
2017-06-02 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* event-loop.c (poll_timers): Unallocate timer using delete
|
|
|
|
|
instead of xfree.
|
|
|
|
|
|
2017-06-02 23:16:21 +02:00
|
|
|
|
2017-06-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (struct breakpoint_ops) <dtor>: Remove.
|
|
|
|
|
(struct breakpoint) <~breakpoint>: New.
|
|
|
|
|
(struct watchpoint): Inherit from breakpoint.
|
|
|
|
|
<~watchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(struct tracepoint): Inherit from breakpoint.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
* breakpoint.c (longjmp_breakpoint_ops): Remove.
|
|
|
|
|
(struct longjmp_breakpoint): Inherit from breakpoint.
|
|
|
|
|
<~longjmp_breakpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(new_breakpoint_from_type): Remove casts.
|
|
|
|
|
(watchpoint_in_thread_scope): Remove reference to base field.
|
|
|
|
|
(watchpoint_del_at_next_stop): Likewise.
|
|
|
|
|
(update_watchpoint): Likewise.
|
|
|
|
|
(watchpoint_check): Likewise.
|
|
|
|
|
(bpstat_check_watchpoint): Likewise.
|
|
|
|
|
(set_longjmp_breakpoint): Likewise.
|
|
|
|
|
(struct fork_catchpoint): Inherit from breakpoint.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(struct solib_catchpoint): Inherit from breakpoint.
|
|
|
|
|
<~solib_catchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(dtor_catch_solib): Change to ...
|
|
|
|
|
(solib_catchpoint::~solib_catchpoint): ... this.
|
|
|
|
|
(breakpoint_hit_catch_solib): Remove reference to base field.
|
|
|
|
|
(add_solib_catchpoint): Likewise.
|
|
|
|
|
(create_fork_vfork_event_catchpoint): Likewise.
|
|
|
|
|
(struct exec_catchpoint): Inherit from breakpoint.
|
|
|
|
|
<~exec_catchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(dtor_catch_exec): Change to ...
|
|
|
|
|
(exec_catchpoint::~exec_catchpoint): ... this.
|
|
|
|
|
(dtor_watchpoint): Change to ...
|
|
|
|
|
(watchpoint::~watchpoint): ... this.
|
|
|
|
|
(watch_command_1): Remove reference to base field.
|
|
|
|
|
(catch_exec_command_1): Likewise.
|
|
|
|
|
(base_breakpoint_dtor): Change to ...
|
|
|
|
|
(breakpoint::~breakpoint): ... this.
|
|
|
|
|
(base_breakpoint_ops): Remove dtor field value.
|
|
|
|
|
(longjmp_bkpt_dtor): Change to ...
|
|
|
|
|
(longjmp_breakpoint::~longjmp_breakpoint): ... this.
|
|
|
|
|
(strace_marker_create_breakpoints_sal): Remove reference to base
|
|
|
|
|
field.
|
|
|
|
|
(delete_breakpoint): Don't manually call breakpoint destructor.
|
|
|
|
|
(create_tracepoint_from_upload): Remove reference to base field.
|
|
|
|
|
(trace_pass_set_count): Likewise.
|
|
|
|
|
(initialize_breakpoint_ops): Don't initialize
|
|
|
|
|
momentary_breakpoint_ops, don't set dtors.
|
|
|
|
|
* ada-lang.c (struct ada_catchpoint): Inherit from breakpoint.
|
|
|
|
|
<~ada_catchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(create_excep_cond_exprs): Remove reference to base field.
|
|
|
|
|
(dtor_exception): Change to ...
|
|
|
|
|
(ada_catchpoint::~ada_catchpoint): ... this.
|
|
|
|
|
(dtor_catch_exception): Remove.
|
|
|
|
|
(dtor_catch_exception_unhandled): Remove.
|
|
|
|
|
(dtor_catch_assert): Remove.
|
|
|
|
|
(create_ada_exception_catchpoint): Remove reference to base
|
|
|
|
|
field.
|
|
|
|
|
(initialize_ada_catchpoint_ops): Don't set dtors.
|
|
|
|
|
* break-catch-sig.c (struct signal_catchpoint): Inherit from
|
|
|
|
|
breakpoint.
|
|
|
|
|
<~signal_catchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(signal_catchpoint_dtor): Change to ...
|
|
|
|
|
(signal_catchpoint::~signal_catchpoint): ... this.
|
|
|
|
|
(create_signal_catchpoint): Remove reference to base field.
|
|
|
|
|
(initialize_signal_catchpoint_ops): Don't set dtor.
|
|
|
|
|
* break-catch-syscall.c (struct syscall_catchpoint): Inherit
|
|
|
|
|
from breakpoint.
|
|
|
|
|
<~syscall_catchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(dtor_catch_syscall): Change to ...
|
|
|
|
|
(syscall_catchpoint::~syscall_catchpoint): ... this.
|
|
|
|
|
(create_syscall_event_catchpoint): Remove reference to base
|
|
|
|
|
field.
|
|
|
|
|
(initialize_syscall_catchpoint_ops): Don't set dtor.
|
|
|
|
|
* break-catch-throw.c (struct exception_catchpoint): Inherit
|
|
|
|
|
from breakpoint.
|
|
|
|
|
<~exception_catchpoint>: New.
|
|
|
|
|
<base>: Remove.
|
|
|
|
|
(dtor_exception_catchpoint): Change to ...
|
|
|
|
|
(exception_catchpoint::~exception_catchpoint): ... this.
|
|
|
|
|
(handle_gnu_v3_exceptions): Remove reference to base field.
|
|
|
|
|
(initialize_throw_catchpoint_ops): Don't set dtor.
|
|
|
|
|
* ctf.c (ctf_get_traceframe_address): Remove reference to base
|
|
|
|
|
field.
|
|
|
|
|
* remote.c (remote_get_tracepoint_status): Likewise.
|
|
|
|
|
* tracefile-tfile.c (tfile_get_traceframe_address): Likewise.
|
|
|
|
|
* tracefile.c (tracefile_fetch_registers): Likewise.
|
|
|
|
|
* tracepoint.c (actions_command): Likewise.
|
|
|
|
|
(validate_actionline): Likewise.
|
|
|
|
|
(tfind_1): Likewise.
|
|
|
|
|
(get_traceframe_location): Likewise.
|
|
|
|
|
(find_matching_tracepoint_location): Likewise.
|
|
|
|
|
(parse_tracepoint_status): Likewise.
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_passcount): Likewise.
|
|
|
|
|
|
2017-06-02 23:16:20 +02:00
|
|
|
|
2017-06-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (struct longjmp_breakpoint): New struct.
|
|
|
|
|
(is_tracepoint_type): Change return type to bool.
|
|
|
|
|
(is_longjmp_type): New function.
|
|
|
|
|
(new_breakpoint_from_type): Handle longjmp kinds of breakpoints.
|
|
|
|
|
(set_raw_breakpoint_without_location): Use
|
|
|
|
|
new_breakpoint_from_type.
|
|
|
|
|
(set_raw_breakpoint): Likewise.
|
|
|
|
|
|
2017-06-02 23:16:19 +02:00
|
|
|
|
2017-06-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (new_breakpoint_from_type): New function.
|
|
|
|
|
(create_breakpoint_sal): Use new_breakpoint_from_type and
|
|
|
|
|
unique_ptr.
|
|
|
|
|
(create_breakpoint): Likewise.
|
|
|
|
|
|
2017-05-31 17:09:07 +02:00
|
|
|
|
2017-05-31 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* memattr.c (mem_info_command): Rename to ...
|
|
|
|
|
(info_mem_command): ... this.
|
|
|
|
|
(mem_enable_command): Rename to ...
|
|
|
|
|
(enable_mem_command): ... this.
|
|
|
|
|
(mem_disable_command): Rename to ...
|
|
|
|
|
(disable_mem_command): ... this.
|
|
|
|
|
(mem_delete_command): Rename to ...
|
|
|
|
|
(delete_mem_command): ... this.
|
|
|
|
|
(_initialize_mem): Adjust function names.
|
|
|
|
|
|
2016-11-21 14:27:57 +01:00
|
|
|
|
2017-05-31 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (handle_pt_insn_events): New.
|
|
|
|
|
(ftrace_add_pt): Call handle_pt_insn_events. Rename ERRCODE into
|
|
|
|
|
STATUS. Split into this and ...
|
|
|
|
|
(handle_pt_insn_event_flags): ... this.
|
|
|
|
|
|
2016-11-21 11:46:15 +01:00
|
|
|
|
2017-05-31 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* configure.ac: Check for pt_insn_event, struct pt_insn.enabled,
|
|
|
|
|
and struct pt_insn.resynced.
|
|
|
|
|
* configure: Regenerated.
|
|
|
|
|
* config.in: Regenerated.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_find_call_by_number): New function.
|
|
|
|
|
(ftrace_new_function): Store objects, not pointers.
|
|
|
|
|
(ftrace_find_call_by_number, ftrace_new_return, ftrace_new_switch,
|
|
|
|
|
ftrace_new_gap, ftrace_update_function,
|
|
|
|
|
ftrace_compute_global_level_offset, btrace_stich_bts, btrace_clear,
|
|
|
|
|
btrace_insn_get, btrace_insn_get_error, btrace_insn_end,
|
|
|
|
|
btrace_insn_next, btrace_insn_prev, ptrace_find_insn_by_number,
|
|
|
|
|
btrace_ends_with_single_insn, btrace_call_get): Account for
|
|
|
|
|
btrace_thread_info::functions now storing objects.
|
|
|
|
|
* btrace.h (struct btrace_thread_info): Add constructor.
|
|
|
|
|
(struct btrace_thread_info) <functions>: Make std::vector.
|
|
|
|
|
(struct btrace_thread_info) <prev, next, up, insn, errcode, flags):
|
|
|
|
|
Initialize with default values.
|
|
|
|
|
* record-btrace.c (record_btrace_frame_sniffer): Account for
|
|
|
|
|
btrace_thread_info::functions now storing objects.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c: Remove typedef bfun_s.
|
|
|
|
|
(ftrace_new_gap): Directly add gaps to the list of gaps.
|
|
|
|
|
(btrace_bridge_gaps, btrace_compute_ftrace_bts, pt_btrace_insn_flags,
|
|
|
|
|
ftrace_add_pt, btrace_compute_ftrace_pt, btrace_compute_ftrace_1,
|
|
|
|
|
btrace_finalize_ftrace, btrace_compute_ftrace): Use std::vector
|
|
|
|
|
instead of gdb VEC.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_fixup_caller, ftrace_new_return, ftrace_connect_bfun,
|
|
|
|
|
ftrace_bridge_gap): Replace references to btrace_thread_info::segment
|
|
|
|
|
with btrace_thread_info::next_segment and
|
|
|
|
|
btrace_thread_info::prev_segment.
|
|
|
|
|
* btrace.h: Remove struct btrace_func_link.
|
|
|
|
|
(struct btrace_function): Replace pair of function segment pointers
|
|
|
|
|
with pair of indices.
|
|
|
|
|
* python/py-record-btrace.c (btpy_call_prev_sibling,
|
|
|
|
|
btpy_call_next_sibling): Replace references to
|
|
|
|
|
btrace_thread_info::segment with btrace_thread_info::next_segment and
|
|
|
|
|
btrace_thread_info::prev_segment.
|
|
|
|
|
* record-btrace.c (record_btrace_frame_this_id): Use
|
|
|
|
|
btrace_find_call_by_number.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_new_function, ftrace_fixup_level,
|
|
|
|
|
ftrace_connect_bfun, ftrace_bridge_gap, btrace_bridge_gaps,
|
|
|
|
|
btrace_insn_next, btrace_insn_prev): Remove references to
|
|
|
|
|
btrace_thread_info::flow.
|
|
|
|
|
* btrace.h (struct btrace_function): Remove FLOW.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_find_call_by_number): New function.
|
|
|
|
|
(ftrace_update_caller, ftrace_new_call, ftrace_new_tailcall,
|
|
|
|
|
ftrace_get_caller, ftrace_find_call, ftrace_new_return,
|
|
|
|
|
ftrace_match_backtrace, ftrace_connect_bfun, ftrace_connect_backtrace,
|
|
|
|
|
ftrace_bridge_gap, btrace_bridge_gaps): Use btrace_function::up as an
|
|
|
|
|
index.
|
|
|
|
|
* btrace.h (struct btrace_function): Turn UP into an index.
|
|
|
|
|
* python/py-record-btrace.c (btpy_call_up): Use btrace_function::up
|
|
|
|
|
as an index.
|
|
|
|
|
* record-btrace.c (record_btrace_frame_unwind_stop_reason,
|
|
|
|
|
record_btrace_frame_prev_register, record_btrace_frame_sniffer,
|
|
|
|
|
record_btrace_tailcall_frame_sniffe): Use btrace_find_call_by_number.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_new_function, ftrace_new_call, ftrace_new_tailcall,
|
|
|
|
|
ftrace_new_return, ftrace_new_switch, ftrace_new_gap,
|
|
|
|
|
ftrace_update_function, ftrace_compute_global_level_offset,
|
|
|
|
|
btrace_compute_ftrace_bts, ftrace_add_pt, btrace_compute_ftrace_pt,
|
|
|
|
|
btrace_stitch_bts, btrace_fetch, btrace_clear, btrace_insn_number,
|
|
|
|
|
btrace_insn_end, btrace_is_empty): Remove references to
|
|
|
|
|
btrace_thread_info::begin and btrace_thread_info::end.
|
|
|
|
|
* btrace.h (struct btrace_thread_info): Remove BEGIN and END.
|
|
|
|
|
(struct btrace_thread_info) <functions>: Adjust comment.
|
|
|
|
|
* record-btrace.c (record_btrace_start_replaying): Remove reference to
|
|
|
|
|
btrace_thread_info::begin.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_new_function, ftrace_new_call, ftrace_new_tailcall,
|
|
|
|
|
ftrace_new_return, ftrace_new_switch, ftrace_new_gap,
|
|
|
|
|
ftrace_update_function): Remove arguments that implicitly were always
|
|
|
|
|
BTINFO->END.
|
|
|
|
|
(btrace_compute_ftrace_bts, ftrace_add_pt, btrace_compute_ftrace_pt):
|
|
|
|
|
Don't pass BTINFO->END.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c: (btrace_insn_get, btrace_insn_get_error, btrace_insn_number,
|
|
|
|
|
btrace_insn_begin, btrace_insn_end, btrace_insn_next, btrace_insn_prev,
|
|
|
|
|
btrace_find_insn_by_number): Replace function segment pointer with
|
|
|
|
|
index.
|
|
|
|
|
(btrace_insn_cmp): Simplify.
|
|
|
|
|
* btrace.h: (struct btrace_insn_iterator) Rename index to
|
|
|
|
|
insn_index. Replace function segment pointer with index into function
|
|
|
|
|
segment vector.
|
|
|
|
|
* record-btrace.c (record_btrace_call_history): Replace function
|
|
|
|
|
segment pointer use with index.
|
|
|
|
|
(record_btrace_frame_sniffer): Retrieve function call segment through
|
|
|
|
|
vector.
|
|
|
|
|
(record_btrace_set_replay): Remove defunc't safety check.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_ends_with_single_insn): New function.
|
|
|
|
|
(btrace_call_get, btrace_call_number, btrace_call_begin,
|
|
|
|
|
btrace_call_end, btrace_call_next, btrace_call_prev,
|
|
|
|
|
btrace_find_call_by_number): Use index into call segment vector
|
|
|
|
|
instead of pointer.
|
|
|
|
|
(btrace_call_cmp): Simplify.
|
|
|
|
|
* btrace.h (struct btrace_call_iterator): Replace function call segment
|
|
|
|
|
pointer with index into vector.
|
|
|
|
|
* record-btrace.c (record_btrace_call_history): Use index instead of
|
|
|
|
|
pointer.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_insn_begin, btrace_insn_end,
|
|
|
|
|
btrace_find_insn_by_number): Add btinfo to iterator.
|
|
|
|
|
* btrace.h (struct btrace_insn_iterator): Add btinfo.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_new_function): Add btrace_thread_info to arguments
|
|
|
|
|
and save pointers directly.
|
|
|
|
|
(ftrace_new_call, ftrace_new_tailcall, ftrace_new_return,
|
|
|
|
|
ftrace_new_switch, ftrace_new_gap, ftrace_update_function,
|
|
|
|
|
ftrace_add_pt): Add btrace_thread_info to arguments. Adjust for
|
|
|
|
|
changed signature of functions.
|
|
|
|
|
(btrace_compute_ftrace_pt): Adjust for changed signature of functions.
|
|
|
|
|
(btrace_fetch): Remove code that adds btrace_function pointers to
|
|
|
|
|
vector of btrace_functions.
|
|
|
|
|
(btrace_clear): Simplify freeing vector of btrace_functions.
|
|
|
|
|
|
2017-05-30 12:47:37 +02:00
|
|
|
|
2017-05-30 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_fetch, btrace_clear, btrace_find_insn_by_number):
|
|
|
|
|
Replace VEC_* with std::vector functions.
|
|
|
|
|
* btrace.h: Add include: vector. Remove typedef for DEF_VEC_P.
|
|
|
|
|
(struct btrace_thread_info)<functions>: Change type to std::vector.
|
|
|
|
|
|
2017-05-30 11:29:57 +02:00
|
|
|
|
2017-05-30 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes in GDB 8.0): Remove extra empty line. Move
|
|
|
|
|
"Removed targets and native configurations" up. Merge duplicate
|
|
|
|
|
"New commands" sub-sections. Add "New options" sub-sections.
|
|
|
|
|
|
2017-05-26 18:04:13 +02:00
|
|
|
|
2017-05-26 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* defs.h (copy_integer_to_size): New declaration.
|
|
|
|
|
* findvar.c (copy_integer_to_size): New function.
|
|
|
|
|
(do_cint_test): New selftest function.
|
|
|
|
|
(copy_integer_to_size_test): Likewise.
|
|
|
|
|
(_initialize_findvar): Likewise.
|
|
|
|
|
* mips-fbsd-tdep.c (mips_fbsd_supply_reg): Use raw_supply_integer.
|
|
|
|
|
(mips_fbsd_collect_reg): Use raw_collect_integer.
|
|
|
|
|
* mips-linux-tdep.c (supply_32bit_reg): Use raw_supply_integer.
|
|
|
|
|
(mips64_fill_gregset): Use raw_collect_integer
|
|
|
|
|
(mips64_fill_fpregset): Use raw_supply_integer.
|
|
|
|
|
* regcache.c (regcache::raw_supply_integer): New function.
|
|
|
|
|
(regcache::raw_collect_integer): Likewise.
|
|
|
|
|
* regcache.h: (regcache::raw_supply_integer): New declaration.
|
|
|
|
|
(regcache::raw_collect_integer): Likewise.
|
|
|
|
|
|
Add unit test to gdbarch methods register_to_value and value_to_register
This patch adds one unit test for gdbarch methods register_to_value and
value_to_register. The test pass different combinations of {regnu, type}
to gdbarch_register_to_value and gdbarch_value_to_register. In order
to do the test, add a new function create_new_frame to create a fake
frame. It can be improved after we converted frame_info to class.
In order to isolate regcache (from target_ops operations on writing
registers, like target_store_registers), the sub-class of regcache in the
test override raw_write. Also, in order to get the right regcache from
get_thread_arch_aspace_regcache, the sub-class of regcache inserts itself
to current_regcache.
Suppose I incorrectly modified the size of buffer as below,
@@ -1228,7 +1228,7 @@ ia64_register_to_value (struct frame_info *frame, int regnum,
int *optimizedp, int *unavailablep)
{
struct gdbarch *gdbarch = get_frame_arch (frame);
- gdb_byte in[MAX_REGISTER_SIZE];
+ gdb_byte in[1];
/* Convert to TYPE. */
if (!get_frame_register_bytes (frame, regnum, 0,
build GDB with "-fsanitize=address" and run unittest.exp, asan can detect
such error
==2302==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff98193870 at pc 0xbd55ea bp 0x7fff981935a0 sp 0x7fff98193598
WRITE of size 16 at 0x7fff98193870 thread T0
#0 0xbd55e9 in frame_register_unwind(frame_info*, int, int*, int*, lval_type*, unsigned long*, int*, unsigned char*) /home/yao/SourceCode/gnu/gdb/git/gdb/frame.c:1119
#1 0xbd58c8 in frame_register(frame_info*, int, int*, int*, lval_type*, unsigned long*, int*, unsigned char*) /home/yao/SourceCode/gnu/gdb/git/gdb/frame.c:1147
#2 0xbd6e25 in get_frame_register_bytes(frame_info*, int, unsigned long, int, unsigned char*, int*, int*) /home/yao/SourceCode/gnu/gdb/git/gdb/frame.c:1427
#3 0x70080a in ia64_register_to_value /home/yao/SourceCode/gnu/gdb/git/gdb/ia64-tdep.c:1236
#4 0xbf570e in gdbarch_register_to_value(gdbarch*, frame_info*, int, type*, unsigned char*, int*, int*) /home/yao/SourceCode/gnu/gdb/git/gdb/gdbarch.c:2619
#5 0xc05975 in register_to_value_test /home/yao/SourceCode/gnu/gdb/git/gdb/gdbarch-selftests.c:131
Or, even if GDB is not built with asan, GDB just crashes.
*** stack smashing detected ***: ./gdb terminated
Aborted (core dumped)
gdb:
2017-05-24 Yao Qi <yao.qi@linaro.org>
* Makefile.in (SFILES): Add gdbarch-selftests.c.
(COMMON_OBS): Add gdbarch-selftests.o.
* frame.c [GDB_SELF_TESTS] (create_new_frame): New function.
* frame.h [GDB_SELF_TESTS] (create_new_frame): Declare.
* gdbarch-selftests.c: New file.
* regcache.h (regcache) <~regcache>: Mark it virtual if
GDB_SELF_TEST.
<raw_write>: Likewise.
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add gdbarch-selftests.c.
|
|
|
|
|
(COMMON_OBS): Add gdbarch-selftests.o.
|
|
|
|
|
* frame.c [GDB_SELF_TESTS] (create_new_frame): New function.
|
|
|
|
|
* frame.h [GDB_SELF_TESTS] (create_new_frame): Declare.
|
|
|
|
|
* gdbarch-selftests.c: New file.
|
|
|
|
|
* regcache.h (regcache) <~regcache>: Mark it virtual if
|
|
|
|
|
GDB_SELF_TEST.
|
|
|
|
|
<raw_write>: Likewise.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (current_regcache): Change it to
|
|
|
|
|
regcache::current_regcache.
|
|
|
|
|
(regcache_observer_target_changed): Update.
|
|
|
|
|
(regcache_thread_ptid_changed): Make it a regcache static
|
|
|
|
|
method.
|
|
|
|
|
(regcache_thread_ptid_changed): Update.
|
|
|
|
|
(class regcache_access): New.
|
|
|
|
|
(current_regcache_test): Update.
|
|
|
|
|
(_initialize_regcache): Update.
|
|
|
|
|
* regcache.h: Include forward_list.
|
|
|
|
|
(regcache): Declare regcache_thread_ptid_changed and declare
|
|
|
|
|
registers_changed_ptid as friend.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i387-tdep.c (i387_register_to_value): Use register_size
|
|
|
|
|
instead of TYPE_LENGTH.
|
|
|
|
|
* m68k-tdep.c (m68k_register_to_value): Likewise.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* i387-tdep.c (i387_convert_register_p): Return false if type
|
|
|
|
|
code isn't TYPE_CODE_FLT.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* alpha-tdep.c (alpha_convert_register_p): Return true if type
|
|
|
|
|
length is 4.
|
|
|
|
|
(alpha_register_to_value): Remove type length check.
|
|
|
|
|
(alpha_value_to_register): Likewise.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ia64-tdep.c (ia64_convert_register_p): Check type's code is
|
|
|
|
|
TYPE_CODE_FLT.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* m68k-tdep.c (m68k_convert_register_p): Check type's code is
|
|
|
|
|
TYPE_CODE_FLT or not.
|
|
|
|
|
|
2017-05-24 23:15:23 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* alpha-tdep.c (alpha_gdbarch_init): Use XCNEW instead of XNEW.
|
|
|
|
|
* avr-tdep.c (avr_gdbarch_init): Likewise.
|
|
|
|
|
* bfin-tdep.c (bfin_gdbarch_init): Likewise.
|
|
|
|
|
* cris-tdep.c (cris_gdbarch_init): Likewise.
|
|
|
|
|
* ft32-tdep.c (ft32_gdbarch_init): Likewise.
|
|
|
|
|
* lm32-tdep.c (lm32_gdbarch_init): Likewise.
|
|
|
|
|
* m32r-tdep.c (m32r_gdbarch_init): Likewise.
|
|
|
|
|
* m68hc11-tdep.c (m68hc11_gdbarch_init): Likewise.
|
|
|
|
|
* mep-tdep.c (mep_gdbarch_init): Likewise.
|
|
|
|
|
* microblaze-tdep.c (microblaze_gdbarch_init): Likewise.
|
|
|
|
|
* mips-tdep.c (mips_gdbarch_init): Likewise.
|
|
|
|
|
* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
|
|
|
|
|
* moxie-tdep.c (moxie_gdbarch_init): Likewise.
|
|
|
|
|
* msp430-tdep.c (msp430_gdbarch_init): Likewise.
|
|
|
|
|
* sh64-tdep.c (sh64_gdbarch_init): Likewise.
|
|
|
|
|
* v850-tdep.c (v850_gdbarch_init): Likewise.
|
|
|
|
|
|
2017-05-24 23:15:22 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* selftest-arch.c (tests_with_arch): Call registers_changed
|
|
|
|
|
and reinit_frame_cache.
|
|
|
|
|
* selftest.c (run_self_tests): Likewise.
|
|
|
|
|
|
2017-05-24 18:23:52 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* rs6000-tdep.c (gdb_print_insn_powerpc): Remove.
|
|
|
|
|
(rs6000_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
|
2017-05-24 18:23:52 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* rl78-tdep.c (rl78_gdbarch_init): Don't call
|
|
|
|
|
set_gdbarch_print_insn.
|
|
|
|
|
|
2017-05-24 18:23:52 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* h8300-tdep.c (h8300_gdbarch_init): Don't call
|
|
|
|
|
set_gdbarch_print_insn.
|
|
|
|
|
|
2017-05-24 18:23:52 +02:00
|
|
|
|
2017-05-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* alpha-tdep.c (alpha_gdbarch_init): Don't call
|
|
|
|
|
set_gdbarch_print_insn.
|
|
|
|
|
* arc-tdep.c (arc_gdbarch_init): Likewise.
|
|
|
|
|
* arch-utils.c: include dis-asm.h.
|
|
|
|
|
(default_print_insn): New function.
|
|
|
|
|
* arch-utils.h (default_print_insn): Declare.
|
|
|
|
|
* avr-tdep.c (avr_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
* bfin-tdep.c (bfin_gdbarch_init): Likewise.
|
|
|
|
|
* cris-tdep.c (cris_delayed_get_disassembler): Remove.
|
|
|
|
|
(cris_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
* frv-tdep.c (frv_gdbarch_init): Likewise.
|
|
|
|
|
* ft32-tdep.c (ft32_gdbarch_init): Likewise.
|
|
|
|
|
* gdbarch.sh (print_insn): Use default_print_insn.
|
|
|
|
|
* gdbarch.c: Regenerated.
|
|
|
|
|
* hppa-tdep.c (hppa_gdbarch_init): Likewise.
|
|
|
|
|
* iq2000-tdep.c (iq2000_gdbarch_init): Likewise.
|
|
|
|
|
* lm32-tdep.c (lm32_gdbarch_init): Likewise.
|
|
|
|
|
* m32c-tdep.c (m32c_gdbarch_init): Likewise.
|
|
|
|
|
* m32r-tdep.c (m32r_gdbarch_init): Likewise.
|
|
|
|
|
* m68hc11-tdep.c (gdb_print_insn_m68hc11): Remove.
|
|
|
|
|
(m68hc11_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
* m68k-tdep.c (m68k_gdbarch_init): Likewise.
|
|
|
|
|
* m88k-tdep.c (m88k_gdbarch_init): Likewise.
|
|
|
|
|
* microblaze-tdep.c (microblaze_gdbarch_init): Likewise.
|
|
|
|
|
* mn10300-tdep.c (mn10300_gdbarch_init): Likewise.
|
|
|
|
|
* moxie-tdep.c (moxie_gdbarch_init): Likewise.
|
|
|
|
|
* msp430-tdep.c (msp430_gdbarch_init): Likewise.
|
|
|
|
|
* mt-tdep.c (mt_gdbarch_init): Likewise.
|
|
|
|
|
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
|
|
|
|
|
* nios2-tdep.c (nios2_print_insn): Remove.
|
|
|
|
|
(nios2_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
* rx-tdep.c (rx_gdbarch_init): Likewise.
|
|
|
|
|
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
|
|
|
|
|
* score-tdep.c (score_print_insn): Remove.
|
|
|
|
|
(score_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
* sh-tdep.c (sh_gdbarch_init): Likewise.
|
|
|
|
|
* sh64-tdep.c (sh64_gdbarch_init): Likewise.
|
|
|
|
|
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
|
|
|
|
|
* tic6x-tdep.c (tic6x_print_insn): Remove.
|
|
|
|
|
(tic6x_gdbarch_init): Don't call set_gdbarch_print_insn.
|
|
|
|
|
* tilegx-tdep.c (tilegx_gdbarch_init): Likewise.
|
|
|
|
|
* v850-tdep.c (v850_gdbarch_init): Likewise.
|
|
|
|
|
* vax-tdep.c (vax_gdbarch_init): Likewise.
|
|
|
|
|
* xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
|
|
|
|
|
* xtensa-tdep.c (xtensa_gdbarch_init): Likewise.
|
|
|
|
|
|
2017-04-18 19:49:44 +02:00
|
|
|
|
2017-05-23 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-tdep.c (MIPS_PC_REGNUM): Remove.
|
|
|
|
|
(MIPS_FP0_REGNUM): Remove.
|
|
|
|
|
(MIPS_FSR_REGNUM): Remove.
|
|
|
|
|
(mips_fbsd_supply_fpregs): Use mips_regnum.
|
|
|
|
|
(mips_fbsd_supply_gregs): Likewise.
|
|
|
|
|
(mips_fbsd_collect_fpregs): Likewise.
|
|
|
|
|
(mips_fbsd_collect_gregs): Likewise.
|
|
|
|
|
|
2017-04-18 19:49:44 +02:00
|
|
|
|
2017-05-23 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-nat.c (getregs_supplies): Fix upper bound comparison.
|
|
|
|
|
(getpfpregs_supplies): New function.
|
|
|
|
|
(mips_fbsd_fetch_inferior_registers): Remove early exit and use
|
|
|
|
|
getfpregs_supplies.
|
|
|
|
|
(mips_fbsd_store_inferior_registers): Likewise.
|
|
|
|
|
|
2017-05-22 12:58:19 +02:00
|
|
|
|
2017-05-22 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Host/Native): Add John Baldwin as FreeBSD
|
|
|
|
|
maintainer.
|
|
|
|
|
|
2017-05-22 10:23:22 +02:00
|
|
|
|
2017-05-22 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* ppc-linux-nat.c (fetch_register): Use PPC_MAX_REGISTER_SIZE.
|
|
|
|
|
(store_register): Likewise.
|
|
|
|
|
* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call): Likewise.
|
|
|
|
|
(get_decimal_float_return_value): Likewise.
|
|
|
|
|
(do_ppc_sysv_return_value): Likewise.
|
|
|
|
|
(ppc64_sysv_abi_push_integer): Likewise.
|
|
|
|
|
(ppc64_sysv_abi_push_freg): Likewise.
|
|
|
|
|
(ppc64_sysv_abi_return_value_base): Likewise.
|
|
|
|
|
(ppc64_sysv_abi_return_value): Likewise.
|
|
|
|
|
* rs6000-aix-tdep.c (rs6000_push_dummy_call): Likewise.
|
|
|
|
|
* rs6000-lynx178-tdep.c (rs6000_lynx178_push_dummy_call): Likewise.
|
|
|
|
|
* rs6000-nat.c: Likewise.
|
|
|
|
|
* rs6000-tdep.c (rs6000_register_to_value): Likewise.
|
|
|
|
|
(rs6000_value_to_register): Likewise.
|
|
|
|
|
* ppc-tdep.h (PPC_MAX_REGISTER_SIZE): Add.
|
|
|
|
|
|
2017-05-22 01:00:10 +02:00
|
|
|
|
2017-05-21 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21466:
|
|
|
|
|
* rust-lang.c (rust_print_type) <TYPE_CODE_ARRAY>: Print unsized
|
|
|
|
|
arrays as "[T]", not "[T; ]".
|
|
|
|
|
|
Use watchpoint's language when re-parsing expression
PR rust/21484 notes that watch -location does not work with Rust:
(gdb) watch -location a
syntax error in expression, near `) 0x00007fffffffe0f4'.
update_watchpoint tries to tell gdb that the new expression it creates
has C syntax:
/* The above expression is in C. */
b->language = language_c;
However, update_watchpoint doesn't actually use this language when
re-parsing the expression.
Originally I was going to fix this by saving and restoring the
language in update_watchpoint, but this regressed
gdb.dlang/watch-loc.exp, because the constructed expression actually
has D syntax (specifically the name is not parseable by C).
Next I looked at directly constructing an expression, and not relying
on the parser at all; but it seemed to me that upon a re-set, we'd
want to reparse the type, and there is no existing API to do this
correctly.
So, in the end I made a hook to let each language choose what
expression to use. I made all the languages other than Rust use the C
expression, because that is the status quo ante. However, this is
probably not truly correct. After this patch, at least, it is easy to
correct by someone who knows the language(s) in question.
Regtested by the buildbot.
ChangeLog
2017-05-19 Tom Tromey <tom@tromey.com>
PR rust/21484:
* rust-lang.c (exp_descriptor_rust): New function.
(rust_language_defn): Use it.
* p-lang.c (pascal_language_defn): Update.
* opencl-lang.c (opencl_language_defn): Update.
* objc-lang.c (objc_language_defn): Update.
* m2-lang.c (m2_language_defn): Update.
* language.h (struct language_defn)
<la_watch_location_expression>: New member.
* language.c (unknown_language_defn, auto_language_defn)
(local_language_defn): Update.
* go-lang.c (go_language_defn): Update.
* f-lang.c (f_language_defn): Update.
* d-lang.c (d_language_defn): Update.
* c-lang.h (c_watch_location_expression): Declare.
* c-lang.c (c_watch_location_expression): New function.
(c_language_defn, cplus_language_defn, asm_language_defn)
(minimal_language_defn): Use it.
* breakpoint.c (watch_command_1): Call
la_watch_location_expression.
* ada-lang.c (ada_language_defn): Update.
testsuite/ChangeLog
2017-05-19 Tom Tromey <tom@tromey.com>
PR rust/21484:
* gdb.rust/watch.exp: New file.
* gdb.rust/watch.rs: New file.
2017-05-14 19:12:14 +02:00
|
|
|
|
2017-05-19 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21484:
|
|
|
|
|
* rust-lang.c (exp_descriptor_rust): New function.
|
|
|
|
|
(rust_language_defn): Use it.
|
|
|
|
|
* p-lang.c (pascal_language_defn): Update.
|
|
|
|
|
* opencl-lang.c (opencl_language_defn): Update.
|
|
|
|
|
* objc-lang.c (objc_language_defn): Update.
|
|
|
|
|
* m2-lang.c (m2_language_defn): Update.
|
|
|
|
|
* language.h (struct language_defn)
|
|
|
|
|
<la_watch_location_expression>: New member.
|
|
|
|
|
* language.c (unknown_language_defn, auto_language_defn)
|
|
|
|
|
(local_language_defn): Update.
|
|
|
|
|
* go-lang.c (go_language_defn): Update.
|
|
|
|
|
* f-lang.c (f_language_defn): Update.
|
|
|
|
|
* d-lang.c (d_language_defn): Update.
|
|
|
|
|
* c-lang.h (c_watch_location_expression): Declare.
|
|
|
|
|
* c-lang.c (c_watch_location_expression): New function.
|
|
|
|
|
(c_language_defn, cplus_language_defn, asm_language_defn)
|
|
|
|
|
(minimal_language_defn): Use it.
|
|
|
|
|
* breakpoint.c (watch_command_1): Call
|
|
|
|
|
la_watch_location_expression.
|
|
|
|
|
* ada-lang.c (ada_language_defn): Update.
|
|
|
|
|
|
Fix tui compilation with Solaris libcurses: non-const last arg to mvwaddstr (PR tui/21482)
On both mainline and the 8.0 branch, gdb compilation fails on Solaris 10
with the native libcurses in gdb/tui for several instances of the same problem:
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c: In function `void tui_erase_source_content(tui_win_info*, int)':
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c:257:18: error: invalid conversion from `const char*' to `char*' [-fpermissive]
no_src_str);
^
In file included from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/gdb_curses.h:42:0,
from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-data.h:26,
from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c:33:
/vol/gcc-7/lib/gcc/sparc-sun-solaris2.10/7.1.0/include-fixed/curses.h:699:12: note: initializing argument 4 of `int mvwaddstr(WINDOW*, int, int, char*)'
extern int mvwaddstr(WINDOW *, int, int, char *);
^~~~~~~~~
make[2]: *** [Makefile:1927: tui-winsource.o] Error 1
Unlike ncurses, <curses.h> declares
extern int mvwaddstr(WINDOW *, int, int, char *);
i.e. the last arg is char *, not const char *.
The patch fixes this by casting the last arg to mvwaddstr to char *,
as was recently done on mainline in a newterm() call (the only
difference between 8.0 and mainline gdb/tui).
* tui/tui-windata.c (tui_erase_data_content): Cast last mvwaddstr
arg to char *.
* tui/tui-wingeneral.c (box_win): Likewise.
* tui/tui-winsource.c (tui_erase_source_content): Likewise.
(tui_show_source_line): Likewise.
(tui_show_exec_info_content): Likewise.
2017-05-19 14:16:55 +02:00
|
|
|
|
2017-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
2017-05-19 15:08:45 +02:00
|
|
|
|
PR tui/21482
|
|
|
|
|
* gdb_curses.h (NOMACROS): Define.
|
|
|
|
|
(NCURSES_NOMACROS): Define.
|
|
|
|
|
|
|
|
|
|
2017-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
PR tui/21482
|
Fix tui compilation with Solaris libcurses: non-const last arg to mvwaddstr (PR tui/21482)
On both mainline and the 8.0 branch, gdb compilation fails on Solaris 10
with the native libcurses in gdb/tui for several instances of the same problem:
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c: In function `void tui_erase_source_content(tui_win_info*, int)':
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c:257:18: error: invalid conversion from `const char*' to `char*' [-fpermissive]
no_src_str);
^
In file included from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/gdb_curses.h:42:0,
from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-data.h:26,
from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c:33:
/vol/gcc-7/lib/gcc/sparc-sun-solaris2.10/7.1.0/include-fixed/curses.h:699:12: note: initializing argument 4 of `int mvwaddstr(WINDOW*, int, int, char*)'
extern int mvwaddstr(WINDOW *, int, int, char *);
^~~~~~~~~
make[2]: *** [Makefile:1927: tui-winsource.o] Error 1
Unlike ncurses, <curses.h> declares
extern int mvwaddstr(WINDOW *, int, int, char *);
i.e. the last arg is char *, not const char *.
The patch fixes this by casting the last arg to mvwaddstr to char *,
as was recently done on mainline in a newterm() call (the only
difference between 8.0 and mainline gdb/tui).
* tui/tui-windata.c (tui_erase_data_content): Cast last mvwaddstr
arg to char *.
* tui/tui-wingeneral.c (box_win): Likewise.
* tui/tui-winsource.c (tui_erase_source_content): Likewise.
(tui_show_source_line): Likewise.
(tui_show_exec_info_content): Likewise.
2017-05-19 14:16:55 +02:00
|
|
|
|
* tui/tui-windata.c (tui_erase_data_content): Cast last mvwaddstr
|
|
|
|
|
arg to char *.
|
|
|
|
|
* tui/tui-wingeneral.c (box_win): Likewise.
|
|
|
|
|
* tui/tui-winsource.c (tui_erase_source_content): Likewise.
|
|
|
|
|
(tui_show_source_line): Likewise.
|
|
|
|
|
(tui_show_exec_info_content): Likewise.
|
|
|
|
|
|
2017-05-19 12:06:19 +02:00
|
|
|
|
2017-05-19 Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
|
|
|
|
|
|
|
|
|
|
* sparc-tdep.c (sparc_structure_return_p)
|
|
|
|
|
(sparc_arg_on_registers_p): New functions.
|
|
|
|
|
(sparc32_store_arguments): Use them.
|
|
|
|
|
* sparc64-tdep.c (sparc64_16_byte_align_p)
|
|
|
|
|
(sparc64_store_floating_fields, sparc64_extract_floating_fields):
|
|
|
|
|
Handle TYPE_CODE_ARRAY.
|
|
|
|
|
|
2017-05-17 15:22:04 +02:00
|
|
|
|
2017-05-17 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* cli/cli-decode.c (add_alias_cmd): New function.
|
|
|
|
|
* command.h (add_alias_cmd): Declare.
|
|
|
|
|
* infcmd.c (_initialize_infcmd): Don't call add_com_alias,
|
|
|
|
|
instead call add_alias_cmd.
|
|
|
|
|
|
2017-05-17 14:56:19 +02:00
|
|
|
|
2017-05-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (nat_extra_makefile_frag): Rename to ...
|
|
|
|
|
(nat_makefile_frag): ... this. All references updated.
|
|
|
|
|
* configure.ac: Likewise.
|
|
|
|
|
* configure.nat: Likewise. Enhance comments.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
Fix gdb procfs.c compilation on Solaris
Prompted by the creation of the gdb 8.0 branch, I tried to build it on
x86_64-pc-solaris2.12, but failed:
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/procfs.c: In function `target_ops* procfs_target()':
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/procfs.c:186:27: error: invalid conversion from `void (*)(target_ops*, char*, char*, char**, int)' to `void (*)(target_ops*, const char*, const string&, char**, int) {aka void (*)(target_ops*, const char*, const std::__cxx11::basic_string<char>&, char**, int)}' [-fpermissive]
t->to_create_inferior = procfs_create_inferior;
^~~~~~~~~~~~~~~~~~~~~~
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/procfs.c: At global scope:
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/procfs.c:125:13: warning: `void procfs_create_inferior(target_ops*, char*, char*, char**, int)' declared `static' but never defined [-Wunused-function]
static void procfs_create_inferior (struct target_ops *, char *,
^~~~~~~~~~~~~~~~~~~~~~
/vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/procfs.c:4529:1: warning: `void procfs_create_inferior(target_ops*, const char*, const string&, char**, int)' defined but not used [-Wunused-function]
procfs_create_inferior (struct target_ops *ops, const char *exec_file,
^~~~~~~~~~~~~~~~~~~~~~
This can easily be fixed by the following patch.
* procfs.c (procfs_create_inferior): Change prototype to match
definition.
2017-05-15 14:43:15 +02:00
|
|
|
|
2017-05-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
|
|
|
|
|
|
|
|
|
* procfs.c (procfs_create_inferior): Change prototype to match
|
|
|
|
|
definition.
|
|
|
|
|
|
2017-05-13 10:10:00 +02:00
|
|
|
|
2017-05-13 Eli Zaretskii <eliz@gnu.org>
|
|
|
|
|
|
|
|
|
|
* tui/tui.c (tui_enable): Cast "unknown" to 'char *' to avoid a
|
|
|
|
|
C++ compiler warning.
|
|
|
|
|
|
2017-05-12 06:22:36 +02:00
|
|
|
|
2017-05-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21483:
|
|
|
|
|
* rust-lang.c (rust_evaluate_subexp) <STRUCTOP_STRUCT>: Don't
|
|
|
|
|
recurse, just call value_struct_elt directly.
|
|
|
|
|
|
2017-05-12 03:50:47 +02:00
|
|
|
|
2017-05-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.c (rust_dump_subexp_body) <STRUCTOP_ANONYMOUS,
|
|
|
|
|
OP_RUST_ARRAY>: Fix.
|
|
|
|
|
|
2017-05-12 03:44:43 +02:00
|
|
|
|
2017-05-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.c (rust_print_subexp): Replace "return" with "break".
|
|
|
|
|
|
2017-05-09 13:36:53 +02:00
|
|
|
|
2017-05-09 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c: Include <forward_list>.
|
|
|
|
|
(struct regcache_list): Remove.
|
|
|
|
|
(current_regcache): Update.
|
|
|
|
|
(get_thread_arch_aspace_regcache): Update for std::forward_list.
|
|
|
|
|
(regcache_thread_ptid_changed): Likewise.
|
|
|
|
|
(registers_changed_ptid): Likewise.
|
|
|
|
|
(current_regcache_size): Likewise.
|
|
|
|
|
|
2017-05-09 13:36:53 +02:00
|
|
|
|
2017-05-09 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c [GDB_SELF_TEST]: Include selftest.h.
|
|
|
|
|
(current_regcache_size): New function.
|
|
|
|
|
(current_regcache_test): New function.
|
|
|
|
|
(_initialize_regcache) [GDB_SELF_TEST]: Register the unit test.
|
|
|
|
|
|
2017-05-08 10:40:07 +02:00
|
|
|
|
2017-05-08 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (mips_o32_return_value): Remove unused buffer.
|
|
|
|
|
(print_gp_register_row): Use get_frame_register_value.
|
|
|
|
|
|
2017-05-08 10:37:26 +02:00
|
|
|
|
2017-05-08 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mips-linux-tdep.c (mips_supply_gregset): Use raw_supply_zeroed.
|
|
|
|
|
(mips_supply_fpregset): Likewise.
|
|
|
|
|
(mips64_supply_gregset): Likewise.
|
|
|
|
|
|
2017-05-08 10:35:45 +02:00
|
|
|
|
2017-05-08 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* mn10300-linux-tdep.c (am33_supply_gregset_method): Use
|
|
|
|
|
regcache->raw_supply_zeroed.
|
|
|
|
|
|
2017-05-03 03:32:33 +02:00
|
|
|
|
2017-05-06 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* configure.nat: Rearrange 'case' statements to match
|
|
|
|
|
host before cpu.
|
|
|
|
|
|
Introduce "gdb/configure.nat" (and delete "gdb/config/*/*.mh" files)
Due to my ongoing work to make it possible for gdbserver to start the
inferior using the shell, I had to share the fork_inferior function
under the "nat/" directory. In order to do that, I created a new file
and put the function there; however, this meant that I now had to
update some of the *.mh files (under "gdb/config") and add the new
file as a dependency to be built natively. Bleh...
After talking a bit to Pedro about this, the idea came up to write a
new "gdb/configure.nat" file, a la "gdb/configure.tgt", which would
concentrate all of the native settings for each host/system. I
decided to tackle this issue.
The patch is simple. All of the previous Makefile variables that were
being declared inside the *.mh files are now inside "gdb/Makefile.in",
and "gdb/configure" is responsible for AC_SUBST'ing them. The
definitions of these variables were put inside "gdb/configure.nat", so
now they're shell variables. For excerpts of Makefile code, one must
create a file under "gdb/config/${gdb_cpu_host}" and reference it on
the "nat_extra_makefile_frag" variable.
It should now be easier to update the native dependencies of hosts in
this single file.
This has been tested on x86_64 without regressions.
gdb/ChangeLog:
2017-05-06 Sergio Durigan Junior <sergiodj@redhat.com>
* Makefile.in: Remove "@host_makefile_frag@". Add variables
NAT_FILE, NATDEPFILES, NAT_CDEPS, LOADLIBES, MH_CFLAGS, XM_CLIBS,
NAT_GENERATED_FILES, HAVE_NATIVE_GCORE_HOST. Add
"@nat_extra_makefile_frag@".
(Makefile): Remove dependency on "@frags@".
($(GNULIB_BUILDDIR)/Makefile): Likewise.
(data-directory/Makefile): Likewise.
* config/aarch64/linux.mh: Deleted; moved contents to
"gdb/configure.nat".
* config/alpha/alpha-linux.mh: Likewise.
* config/alpha/nbsd.mh: Likewise.
* config/arm/linux.mh: Likewise.
* config/arm/nbsdelf.mh: Likewise.
* config/i386/cygwin.mh: Likewise.
* config/i386/cygwin64.mh: Likewise.
* config/i386/darwin.mh: Likewise.
* config/i386/fbsd.mh: Likewise.
* config/i386/fbsd64.mh: Likewise.
* config/i386/go32.mh: Likewise.
* config/i386/i386gnu.mh: Likewise.
* config/i386/i386sol2.mh: Likewise.
* config/i386/linux.mh: Likewise.
* config/i386/linux64.mh: Likewise.
* config/i386/mingw.mh: Likewise.
* config/i386/mingw64.mh: Likewise.
* config/i386/nbsd64.mh: Likewise.
* config/i386/nbsdelf.mh: Likewise.
* config/i386/nto.mh: Likewise.
* config/i386/obsd.mh: Likewise.
* config/i386/obsd64.mh: Likewise.
* config/i386/sol2-64.mh: Likewise.
* config/ia64/linux.mh: Likewise.
* config/m32r/linux.mh: Likewise.
* config/m68k/linux.mh: Likewise.
* config/m68k/nbsdelf.mh: Likewise.
* config/m68k/obsd.mh: Likewise.
* config/m88k/obsd.mh: Likewise.
* config/mips/fbsd.mh: Likewise.
* config/mips/linux.mh: Likewise.
* config/mips/nbsd.mh: Likewise.
* config/mips/obsd64.mh: Likewise.
* config/pa/linux.mh: Likewise.
* config/pa/nbsd.mh: Likewise.
* config/pa/obsd.mh: Likewise.
* config/powerpc/aix.mh: Likewise.
* config/powerpc/fbsd.mh: Likewise.
* config/powerpc/linux.mh: Likewise.
* config/powerpc/nbsd.mh: Likewise.
* config/powerpc/obsd.mh: Likewise.
* config/powerpc/ppc64-linux.mh: Likewise.
* config/powerpc/spu-linux.mh: Likewise.
* config/s390/linux.mh: Likewise.
* config/sh/nbsd.mh: Likewise.
* config/sparc/fbsd.mh: Likewise.
* config/sparc/linux.mh: Likewise.
* config/sparc/linux64.mh: Likewise.
* config/sparc/nbsd64.mh: Likewise.
* config/sparc/nbsdelf.mh: Likewise.
* config/sparc/obsd64.mh: Likewise.
* config/sparc/sol2.mh: Likewise.
* config/tilegx/linux.mh: Likewise.
* config/vax/nbsdelf.mh: Likewise.
* config/vax/obsd.mh: Likewise.
* config/xtensa/linux.mh: Likewise.
* config/i386/i386gnu.mn: New file, with excerpts from
"config/i386/i386gnu.mh".
* configure: Regenerate.
* configure.ac: Rewrite code to use "gdb/configure.nat" instead of
*.mh files under "gdb/config".
* configure.nat: New file, with contents from the
"gdb/config/*/*.mh" files.
gdb/doc/ChangeLog:
2017-05-06 Sergio Durigan Junior <sergiodj@redhat.com>
* Makefile: Remove "@host_makefile_frag@".
2017-04-25 22:03:39 +02:00
|
|
|
|
2017-05-06 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in: Remove "@host_makefile_frag@". Add variables
|
|
|
|
|
NAT_FILE, NATDEPFILES, NAT_CDEPS, LOADLIBES, MH_CFLAGS, XM_CLIBS,
|
|
|
|
|
NAT_GENERATED_FILES, HAVE_NATIVE_GCORE_HOST. Add
|
|
|
|
|
"@nat_extra_makefile_frag@".
|
|
|
|
|
(Makefile): Remove dependency on "@frags@".
|
|
|
|
|
($(GNULIB_BUILDDIR)/Makefile): Likewise.
|
|
|
|
|
(data-directory/Makefile): Likewise.
|
|
|
|
|
* config/aarch64/linux.mh: Deleted; moved contents to
|
|
|
|
|
"gdb/configure.nat".
|
|
|
|
|
* config/alpha/alpha-linux.mh: Likewise.
|
|
|
|
|
* config/alpha/nbsd.mh: Likewise.
|
|
|
|
|
* config/arm/linux.mh: Likewise.
|
|
|
|
|
* config/arm/nbsdelf.mh: Likewise.
|
|
|
|
|
* config/i386/cygwin.mh: Likewise.
|
|
|
|
|
* config/i386/cygwin64.mh: Likewise.
|
|
|
|
|
* config/i386/darwin.mh: Likewise.
|
|
|
|
|
* config/i386/fbsd.mh: Likewise.
|
|
|
|
|
* config/i386/fbsd64.mh: Likewise.
|
|
|
|
|
* config/i386/go32.mh: Likewise.
|
|
|
|
|
* config/i386/i386gnu.mh: Likewise.
|
|
|
|
|
* config/i386/i386sol2.mh: Likewise.
|
|
|
|
|
* config/i386/linux.mh: Likewise.
|
|
|
|
|
* config/i386/linux64.mh: Likewise.
|
|
|
|
|
* config/i386/mingw.mh: Likewise.
|
|
|
|
|
* config/i386/mingw64.mh: Likewise.
|
|
|
|
|
* config/i386/nbsd64.mh: Likewise.
|
|
|
|
|
* config/i386/nbsdelf.mh: Likewise.
|
|
|
|
|
* config/i386/nto.mh: Likewise.
|
|
|
|
|
* config/i386/obsd.mh: Likewise.
|
|
|
|
|
* config/i386/obsd64.mh: Likewise.
|
|
|
|
|
* config/i386/sol2-64.mh: Likewise.
|
|
|
|
|
* config/ia64/linux.mh: Likewise.
|
|
|
|
|
* config/m32r/linux.mh: Likewise.
|
|
|
|
|
* config/m68k/linux.mh: Likewise.
|
|
|
|
|
* config/m68k/nbsdelf.mh: Likewise.
|
|
|
|
|
* config/m68k/obsd.mh: Likewise.
|
|
|
|
|
* config/m88k/obsd.mh: Likewise.
|
|
|
|
|
* config/mips/fbsd.mh: Likewise.
|
|
|
|
|
* config/mips/linux.mh: Likewise.
|
|
|
|
|
* config/mips/nbsd.mh: Likewise.
|
|
|
|
|
* config/mips/obsd64.mh: Likewise.
|
|
|
|
|
* config/pa/linux.mh: Likewise.
|
|
|
|
|
* config/pa/nbsd.mh: Likewise.
|
|
|
|
|
* config/pa/obsd.mh: Likewise.
|
|
|
|
|
* config/powerpc/aix.mh: Likewise.
|
|
|
|
|
* config/powerpc/fbsd.mh: Likewise.
|
|
|
|
|
* config/powerpc/linux.mh: Likewise.
|
|
|
|
|
* config/powerpc/nbsd.mh: Likewise.
|
|
|
|
|
* config/powerpc/obsd.mh: Likewise.
|
|
|
|
|
* config/powerpc/ppc64-linux.mh: Likewise.
|
|
|
|
|
* config/powerpc/spu-linux.mh: Likewise.
|
|
|
|
|
* config/s390/linux.mh: Likewise.
|
|
|
|
|
* config/sh/nbsd.mh: Likewise.
|
|
|
|
|
* config/sparc/fbsd.mh: Likewise.
|
|
|
|
|
* config/sparc/linux.mh: Likewise.
|
|
|
|
|
* config/sparc/linux64.mh: Likewise.
|
|
|
|
|
* config/sparc/nbsd64.mh: Likewise.
|
|
|
|
|
* config/sparc/nbsdelf.mh: Likewise.
|
|
|
|
|
* config/sparc/obsd64.mh: Likewise.
|
|
|
|
|
* config/sparc/sol2.mh: Likewise.
|
|
|
|
|
* config/tilegx/linux.mh: Likewise.
|
|
|
|
|
* config/vax/nbsdelf.mh: Likewise.
|
|
|
|
|
* config/vax/obsd.mh: Likewise.
|
|
|
|
|
* config/xtensa/linux.mh: Likewise.
|
|
|
|
|
* config/i386/i386gnu.mn: New file, with excerpts from
|
|
|
|
|
"config/i386/i386gnu.mh".
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
* configure.ac: Rewrite code to use "gdb/configure.nat" instead of
|
|
|
|
|
*.mh files under "gdb/config".
|
|
|
|
|
* configure.nat: New file, with contents from the
|
|
|
|
|
"gdb/config/*/*.mh" files.
|
|
|
|
|
|
2017-05-05 08:20:50 +02:00
|
|
|
|
2017-05-05 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_clear): Free insn vector.
|
|
|
|
|
|
2017-05-05 02:03:28 +02:00
|
|
|
|
2017-05-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* warning.m4 (build_warnings): Add -Wno-error=maybe-uninitialized.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
RAII-fy make_cleanup_restore_current_thread & friends
After all the make_cleanup_restore_current_thread fixing, I thought
I'd convert that and its relatives (which are all cleanups) to RAII
classes.
scoped_restore_current_pspace_and_thread was put in a separate file to
avoid a circular dependency.
Tested on x86-64 Fedora 23, native and gdbserver.
gdb/ChangeLog:
2017-05-04 Pedro Alves <palves@redhat.com>
* Makefile.in (SFILES): Add progspace-and-thread.c.
(HFILES_NO_SRCDIR): Add progspace-and-thread.h.
(COMMON_OBS): Add progspace-and-thread.o.
* breakpoint.c: Include "progspace-and-thread.h".
(update_inserted_breakpoint_locations)
(insert_breakpoint_locations, create_longjmp_master_breakpoint):
Use scoped_restore_current_pspace_and_thread.
(create_std_terminate_master_breakpoint): Use
scoped_restore_current_program_space.
(remove_breakpoint): Use scoped_restore_current_pspace_and_thread.
(print_breakpoint_location): Use
scoped_restore_current_program_space.
(bp_loc_is_permanent): Use
scoped_restore_current_pspace_and_thread.
(resolve_sal_pc): Use scoped_restore_current_pspace_and_thread.
(download_tracepoint_locations): Use
scoped_restore_current_pspace_and_thread.
(breakpoint_re_set): Use scoped_restore_current_pspace_and_thread.
* exec.c (exec_close_1): Use scoped_restore_current_program_space.
(enum step_over_calls_kind): Moved from inferior.h.
(class scoped_restore_current_thread): New class.
* gdbthread.h (make_cleanup_restore_current_thread): Delete
declaration.
(scoped_restore_current_thread): New class.
* infcmd.c: Include "common/gdb_optional.h".
(continue_1, proceed_after_attach): Use
scoped_restore_current_thread.
(notice_new_inferior): Use scoped_restore_current_thread.
* inferior.c: Include "progspace-and-thread.h".
(restore_inferior, save_current_inferior): Delete.
(add_inferior_command, clone_inferior_command): Use
scoped_restore_current_pspace_and_thread.
* inferior.h (scoped_restore_current_inferior): New class.
* infrun.c: Include "progspace-and-thread.h" and
"common/gdb_optional.h".
(follow_fork_inferior): Use
scoped_restore_current_pspace_and_thread.
(scoped_restore_exited_inferior): New class.
(handle_vfork_child_exec_or_exit): Use
scoped_restore_exited_inferior,
scoped_restore_current_pspace_and_thread,
scoped_restore_current_thread and scoped_restore.
(fetch_inferior_event): Use scoped_restore_current_thread.
* linespec.c (decode_line_full, decode_line_1): Use
scoped_restore_current_program_space.
* mi/mi-main.c: Include "progspace-and-thread.h".
(exec_continue): Use scoped_restore_current_thread.
(mi_cmd_exec_run): Use scoped_restore_current_pspace_and_thread.
(mi_cmd_trace_frame_collected): Use scoped_restore_current_thread.
* proc-service.c (ps_pglobal_lookup): Use
scoped_restore_current_program_space.
* progspace-and-thread.c: New file.
* progspace-and-thread.h: New file.
* progspace.c (release_program_space, clone_program_space): Use
scoped_restore_current_program_space.
(restore_program_space, save_current_program_space)
(save_current_space_and_thread): Delete.
(switch_to_program_space_and_thread): Moved to
progspace-and-thread.c.
* progspace.h (save_current_program_space)
(save_current_space_and_thread): Delete declarations.
(scoped_restore_current_program_space): New class.
* remote.c (remote_btrace_maybe_reopen): Use
scoped_restore_current_thread.
* symtab.c: Include "progspace-and-thread.h".
(skip_prologue_sal): Use scoped_restore_current_pspace_and_thread.
* thread.c (print_thread_info_1): Use
scoped_restore_current_thread.
(struct current_thread_cleanup): Delete.
(do_restore_current_thread_cleanup)
(restore_current_thread_cleanup_dtor): Rename/convert both to ...
(scoped_restore_current_thread::~scoped_restore_current_thread):
... this new dtor.
(make_cleanup_restore_current_thread): Rename/convert to ...
(scoped_restore_current_thread::scoped_restore_current_thread):
... this new ctor.
(thread_apply_all_command): Use scoped_restore_current_thread.
(thread_apply_command): Use scoped_restore_current_thread.
* tracepoint.c (tdump_command): Use scoped_restore_current_thread.
* varobj.c (value_of_root_1): Use scoped_restore_current_thread.
2017-05-04 13:46:44 +02:00
|
|
|
|
2017-05-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add progspace-and-thread.c.
|
|
|
|
|
(HFILES_NO_SRCDIR): Add progspace-and-thread.h.
|
|
|
|
|
(COMMON_OBS): Add progspace-and-thread.o.
|
|
|
|
|
* breakpoint.c: Include "progspace-and-thread.h".
|
|
|
|
|
(update_inserted_breakpoint_locations)
|
|
|
|
|
(insert_breakpoint_locations, create_longjmp_master_breakpoint):
|
|
|
|
|
Use scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(create_std_terminate_master_breakpoint): Use
|
|
|
|
|
scoped_restore_current_program_space.
|
|
|
|
|
(remove_breakpoint): Use scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(print_breakpoint_location): Use
|
|
|
|
|
scoped_restore_current_program_space.
|
|
|
|
|
(bp_loc_is_permanent): Use
|
|
|
|
|
scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(resolve_sal_pc): Use scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(download_tracepoint_locations): Use
|
|
|
|
|
scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(breakpoint_re_set): Use scoped_restore_current_pspace_and_thread.
|
|
|
|
|
* exec.c (exec_close_1): Use scoped_restore_current_program_space.
|
|
|
|
|
(enum step_over_calls_kind): Moved from inferior.h.
|
|
|
|
|
(class scoped_restore_current_thread): New class.
|
|
|
|
|
* gdbthread.h (make_cleanup_restore_current_thread): Delete
|
|
|
|
|
declaration.
|
|
|
|
|
(scoped_restore_current_thread): New class.
|
|
|
|
|
* infcmd.c: Include "common/gdb_optional.h".
|
|
|
|
|
(continue_1, proceed_after_attach): Use
|
|
|
|
|
scoped_restore_current_thread.
|
|
|
|
|
(notice_new_inferior): Use scoped_restore_current_thread.
|
|
|
|
|
* inferior.c: Include "progspace-and-thread.h".
|
|
|
|
|
(restore_inferior, save_current_inferior): Delete.
|
|
|
|
|
(add_inferior_command, clone_inferior_command): Use
|
|
|
|
|
scoped_restore_current_pspace_and_thread.
|
|
|
|
|
* inferior.h (scoped_restore_current_inferior): New class.
|
|
|
|
|
* infrun.c: Include "progspace-and-thread.h" and
|
|
|
|
|
"common/gdb_optional.h".
|
|
|
|
|
(follow_fork_inferior): Use
|
|
|
|
|
scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(scoped_restore_exited_inferior): New class.
|
|
|
|
|
(handle_vfork_child_exec_or_exit): Use
|
|
|
|
|
scoped_restore_exited_inferior,
|
|
|
|
|
scoped_restore_current_pspace_and_thread,
|
|
|
|
|
scoped_restore_current_thread and scoped_restore.
|
|
|
|
|
(fetch_inferior_event): Use scoped_restore_current_thread.
|
|
|
|
|
* linespec.c (decode_line_full, decode_line_1): Use
|
|
|
|
|
scoped_restore_current_program_space.
|
|
|
|
|
* mi/mi-main.c: Include "progspace-and-thread.h".
|
|
|
|
|
(exec_continue): Use scoped_restore_current_thread.
|
|
|
|
|
(mi_cmd_exec_run): Use scoped_restore_current_pspace_and_thread.
|
|
|
|
|
(mi_cmd_trace_frame_collected): Use scoped_restore_current_thread.
|
|
|
|
|
* proc-service.c (ps_pglobal_lookup): Use
|
|
|
|
|
scoped_restore_current_program_space.
|
|
|
|
|
* progspace-and-thread.c: New file.
|
|
|
|
|
* progspace-and-thread.h: New file.
|
|
|
|
|
* progspace.c (release_program_space, clone_program_space): Use
|
|
|
|
|
scoped_restore_current_program_space.
|
|
|
|
|
(restore_program_space, save_current_program_space)
|
|
|
|
|
(save_current_space_and_thread): Delete.
|
|
|
|
|
(switch_to_program_space_and_thread): Moved to
|
|
|
|
|
progspace-and-thread.c.
|
|
|
|
|
* progspace.h (save_current_program_space)
|
|
|
|
|
(save_current_space_and_thread): Delete declarations.
|
|
|
|
|
(scoped_restore_current_program_space): New class.
|
|
|
|
|
* remote.c (remote_btrace_maybe_reopen): Use
|
|
|
|
|
scoped_restore_current_thread.
|
|
|
|
|
* symtab.c: Include "progspace-and-thread.h".
|
|
|
|
|
(skip_prologue_sal): Use scoped_restore_current_pspace_and_thread.
|
|
|
|
|
* thread.c (print_thread_info_1): Use
|
|
|
|
|
scoped_restore_current_thread.
|
|
|
|
|
(struct current_thread_cleanup): Delete.
|
|
|
|
|
(do_restore_current_thread_cleanup)
|
|
|
|
|
(restore_current_thread_cleanup_dtor): Rename/convert both to ...
|
|
|
|
|
(scoped_restore_current_thread::~scoped_restore_current_thread):
|
|
|
|
|
... this new dtor.
|
|
|
|
|
(make_cleanup_restore_current_thread): Rename/convert to ...
|
|
|
|
|
(scoped_restore_current_thread::scoped_restore_current_thread):
|
|
|
|
|
... this new ctor.
|
|
|
|
|
(thread_apply_all_command): Use scoped_restore_current_thread.
|
|
|
|
|
(thread_apply_command): Use scoped_restore_current_thread.
|
|
|
|
|
* tracepoint.c (tdump_command): Use scoped_restore_current_thread.
|
|
|
|
|
* varobj.c (value_of_root_1): Use scoped_restore_current_thread.
|
|
|
|
|
|
2017-05-04 15:43:34 +02:00
|
|
|
|
2017-05-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (make_cleanup_restore_current_thread): Move
|
|
|
|
|
find_thread_ptid call before the is_stopped call. Assert that the
|
|
|
|
|
thread is found. Replace is_stopped call by checking the thread's
|
|
|
|
|
state directly. Remove unnecessary NULL-thread check.
|
|
|
|
|
|
2017-05-04 16:14:37 +02:00
|
|
|
|
2017-05-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* corelow.c (thread_section_name): New class.
|
|
|
|
|
(get_core_register_section, get_core_siginfo): Use it.
|
|
|
|
|
|
2017-05-04 11:06:10 +02:00
|
|
|
|
2017-05-04 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* corelow.c (sniff_core_bfd): Remove extra semicolon.
|
|
|
|
|
(get_core_register_section): Remove xfree of NULL pointer.
|
|
|
|
|
|
2017-05-03 15:51:40 +02:00
|
|
|
|
2017-05-03 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* frv-linux-tdep.c (frv_linux_supply_gregset): Use raw_supply_zeroed.
|
|
|
|
|
* regcache.c (regcache::raw_supply_zeroed): New function.
|
|
|
|
|
* regcache.h (regcache::raw_supply_zeroed): New declaration.
|
|
|
|
|
|
2017-05-03 15:21:27 +02:00
|
|
|
|
2017-05-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh: Remove commented out definition of
|
|
|
|
|
TARGET_CHAR_BIT.
|
|
|
|
|
* gdbarch.h: Re-generate.
|
|
|
|
|
|
2017-05-03 15:13:15 +02:00
|
|
|
|
2017-05-03 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2017-05-02 20:25:43 +02:00
|
|
|
|
2017-05-02 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-target.c (solib_target_relocate_section_addresses):
|
|
|
|
|
Remove num_section_bases, num_bases, segment_bases variables.
|
|
|
|
|
|
2017-05-02 19:30:09 +02:00
|
|
|
|
2017-05-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* common/gdb_vecs.h (DEF_VEC_I (CORE_ADDR)): Remove.
|
|
|
|
|
|
2017-05-02 19:30:08 +02:00
|
|
|
|
2017-05-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* solib-target.c: Include <vector>
|
|
|
|
|
(struct lm_info_target) <~lm_info_target>: Remove.
|
|
|
|
|
<segment_bases, section_bases>: Change type to
|
|
|
|
|
std::vector<CORE_ADDR>.
|
|
|
|
|
(library_list_start_segment, library_list_start_section,
|
|
|
|
|
library_list_end_library,
|
|
|
|
|
solib_target_relocate_section_addresses): Adjust.
|
|
|
|
|
|
2017-05-02 19:30:07 +02:00
|
|
|
|
2017-05-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (software_single_step): Change return type to
|
|
|
|
|
std::vector<CORE_ADDR>.
|
|
|
|
|
* gdbarch.c, gdbarch.h: Re-generate.
|
|
|
|
|
* arch/arm-get-next-pcs.c (thumb_deal_with_atomic_sequence_raw):
|
|
|
|
|
Adjust.
|
|
|
|
|
(arm_deal_with_atomic_sequence_raw): Adjust.
|
|
|
|
|
(thumb_get_next_pcs_raw): Adjust.
|
|
|
|
|
(arm_get_next_pcs_raw): Adjust.
|
|
|
|
|
(arm_get_next_pcs): Adjust.
|
|
|
|
|
* arch/arm-get-next-pcs.h (arm_get_next_pcs): Adjust.
|
|
|
|
|
* aarch64-tdep.c (aarch64_software_single_step): Adjust.
|
|
|
|
|
* alpha-tdep.c (alpha_deal_with_atomic_sequence): Adjust.
|
|
|
|
|
(alpha_software_single_step): Adjust.
|
|
|
|
|
* alpha-tdep.h (alpha_software_single_step): Adjust.
|
|
|
|
|
* arm-linux-tdep.c (arm_linux_software_single_step): Adjust.
|
|
|
|
|
* arm-tdep.c (arm_software_single_step): Adjust.
|
|
|
|
|
(arm_breakpoint_kind_from_current_state): Adjust.
|
|
|
|
|
* arm-tdep.h (arm_software_single_step): Adjust.
|
|
|
|
|
* breakpoint.c (insert_single_step_breakpoint): Adjust.
|
|
|
|
|
* cris-tdep.c (cris_software_single_step): Adjust.
|
|
|
|
|
* mips-tdep.c (mips_deal_with_atomic_sequence): Adjust.
|
|
|
|
|
(micromips_deal_with_atomic_sequence): Adjust.
|
|
|
|
|
(deal_with_atomic_sequence): Adjust.
|
|
|
|
|
(mips_software_single_step): Adjust.
|
|
|
|
|
* mips-tdep.h (mips_software_single_step): Adjust.
|
|
|
|
|
* moxie-tdep.c (moxie_software_single_step): Adjust.
|
|
|
|
|
* nios2-tdep.c (nios2_software_single_step): Adjust.
|
|
|
|
|
* ppc-tdep.h (ppc_deal_with_atomic_sequence): Adjust.
|
|
|
|
|
* rs6000-aix-tdep.c (rs6000_software_single_step): Adjust.
|
|
|
|
|
* rs6000-tdep.c (ppc_deal_with_atomic_sequence): Adjust.
|
|
|
|
|
* s390-linux-tdep.c (s390_software_single_step): Adjust.
|
|
|
|
|
* sparc-tdep.c (sparc_software_single_step): Adjust.
|
|
|
|
|
* spu-tdep.c (spu_software_single_step): Adjust.
|
|
|
|
|
* tic6x-tdep.c (tic6x_software_single_step): Adjust.
|
|
|
|
|
|
2017-05-02 19:30:07 +02:00
|
|
|
|
2017-05-02 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh: Use semi-colon as field separator instead of colon.
|
|
|
|
|
* gdbarch.h: Re-generate.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-instruction.o.
|
|
|
|
|
(SUBDIR_PYTHON_SRCS): Add py-instruction.c.
|
|
|
|
|
* python/py-instruction.c, python/py-instruction.h: New file.
|
|
|
|
|
* python/py-record.c: Add py-instruction.h include.
|
|
|
|
|
(gdbpy_initialize_record): Make gdb.Instruction a super class of
|
|
|
|
|
gdb.RecordInstruction.
|
|
|
|
|
* python/python-internal.h: Add gdbpy_initialize_instruction
|
|
|
|
|
declaration.
|
|
|
|
|
* python/python.c (do_start_initialization): Add
|
|
|
|
|
gdbpy_initialize_instruction.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record-btrace.c (BTPY_REQUIRE_VALID_CALL, btpy_call_type):
|
|
|
|
|
Remove.
|
|
|
|
|
(btrace_func_from_recpy_func): New function.
|
|
|
|
|
(btpy_call_new, btpy_number, btpy_hash, btpy_richcompare): Remove.
|
|
|
|
|
(btpy_call_level, btpy_call_symbol, btpy_call_instructions,
|
|
|
|
|
btpy_call_up, btpy_call_prev_sibling, btpy_call_next_sibling): Rename to ...
|
|
|
|
|
(recpy_bt_func_level, recpy_bt_func_symbol, recpy_bt_func_instructions,
|
|
|
|
|
recpy_bt_func_up, recpy_bt_func_prev, recpy_bt_func_next): This.
|
|
|
|
|
Also, use new helper functions.
|
|
|
|
|
(btpy_list_item): Use new helper functions.
|
|
|
|
|
(recpy_bt_function_call_history): Use new type name.
|
|
|
|
|
(btpy_call_getset): Remove.
|
|
|
|
|
(gdbpy_initialize_btrace): Remove code to initialize
|
|
|
|
|
gdb.BtraceFunctionCall.
|
|
|
|
|
* python/py-record-btrace.h (recpy_bt_func_number, recpy_btb_func_level,
|
|
|
|
|
recpy_btb_func_symbol, recpy_bt_func_instructions, recpy_bt_func_up,
|
|
|
|
|
recpy_bt_func_prev, recpy_bt_func_next): New export.
|
|
|
|
|
* python/py-record.c (recpy_func_type): New static object.
|
|
|
|
|
(recpy_func_new, recpy_func_level, recpy_func_symbol,
|
|
|
|
|
recpy_func_instructions, recpy_func_up, recpy_func_prev,
|
|
|
|
|
recpy_func_next): New function.
|
|
|
|
|
(recpy_element_hash, recpy_element_richcompare): Updated comment.
|
|
|
|
|
(recpy_func_getset): New static object.
|
|
|
|
|
(gdbpy_initialize_record): Add code to initialize gdb.RecordInstruction.
|
|
|
|
|
* python/py-record.h (recpy_func_type, recpy_func_new): New export.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record-btrace.c (BTPY_REQUIRE_VALID_INSN): Remove.
|
|
|
|
|
(btpy_object, btpy_insn_type, btpy_new): Remove.
|
|
|
|
|
(btpy_list_object): Use gdb.RecordInstruction type instead of
|
|
|
|
|
gdb.BtraceInstruction type.
|
|
|
|
|
(btrace_insn_from_recpy_insn): New function.
|
|
|
|
|
(btpy_insn_or_gap_new): Adjust comment. Use recpy_insn_new instead of
|
|
|
|
|
btpy_new.
|
|
|
|
|
(btpy_call_new, btpy_list_item): Do not use btpy_new anymore.
|
|
|
|
|
(btpy_number, btpy_hash, btpy_call_level, btpy_call_symbol,
|
|
|
|
|
btpy_call_instructions, btpy_call_up, btpy_call_prev_sibling,
|
|
|
|
|
btpy_call_next_sibling, btpy_richcompare): Use recpy_element_object
|
|
|
|
|
instead of btpy_object.
|
|
|
|
|
(btpy_insn_sal, btpy_insn_pc, btpy_insn_size, btpy_insn_is_speculative,
|
|
|
|
|
btpy_insn_data, btpy_insn_decode): Rename to ...
|
|
|
|
|
(recpy_bt_insn_sal, recpy_bt_insn_pc, recpy_bt_insn_size,
|
|
|
|
|
recpy_bt_insn_is_speculative, recpy_bt_insn_data,
|
|
|
|
|
recpy_bt_insn_decode): This. Also, use new helper functions.
|
|
|
|
|
(btpy_list_position, recpy_bt_goto): Use recpy_element_object and
|
|
|
|
|
recpy_insn_type.
|
|
|
|
|
(btpy_insn_getset): Remove.
|
|
|
|
|
(gdbpy_initialize_btrace): Remove code to initialize
|
|
|
|
|
gdb.BtraceInstruction. Use recpy_element_object.
|
|
|
|
|
* python/py-record-btrace.h (recpy_bt_insn_number, recpy_bt_insn_sal,
|
|
|
|
|
recpy_bt_insn_pc, recpy_bt_insn_data, recpy_bt_insn_decoded,
|
|
|
|
|
recpy_bt_insn_size, recpy_bt_insn_is_speculative): New export.
|
|
|
|
|
* python/py-record.c (recpy_insn_type): New static object.
|
|
|
|
|
(recpy_insn_new, recpy_insn_sal, recpy_insn_pc, recpy_insn_data,
|
|
|
|
|
recpy_insn_decoded, recpy_insn_size, recpy_insn_is_speculative,
|
|
|
|
|
recpy_element_number, recpy_element_hash, recpy_element_richcompare):
|
|
|
|
|
New function.
|
|
|
|
|
(recpy_insn_getset): New static object.
|
|
|
|
|
(gdbpy_initialize_record): Initialize gdb.RecordInstruction.
|
|
|
|
|
* python/py-record.h (recpy_element_object): New typedef.
|
|
|
|
|
(recpy_insn_type, recpy_insn_new): New export.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* py-record-btrace.c (btpy_insn_new): Removed.
|
|
|
|
|
(btpy_insn_or_gap_new): New function.
|
|
|
|
|
(btpy_insn_error): Removed.
|
|
|
|
|
(btpy_insn_sal, btpy_insn_pc, btpy_insn_size, btpy_insn_is_speculative,
|
|
|
|
|
btpy_insn_data, btpy_insn_decode): Remove code path for gaps.
|
|
|
|
|
(recpy_bt_replay_position, recpy_bt_begin, recpy_bt_end): Call
|
|
|
|
|
btpy_insn_or_gap_new instead of btpy_insn_new.
|
|
|
|
|
(btpy_insn_getset): Remove btpy_insn_error.
|
|
|
|
|
* py-record.c (recpy_gap_type): New static object.
|
|
|
|
|
(recpy_gap_object): New typedef.
|
|
|
|
|
(recpy_gap_new, recpy_gap_number, recpy_gap_reason_code,
|
|
|
|
|
recpy_gap_reason_string): New function.
|
|
|
|
|
(recpy_gap_getset): New static object.
|
|
|
|
|
(gdbpy_initialize_record): Initialize gdb.RecordGap type.
|
|
|
|
|
* py-record.h (recpy_gap_new): New export.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record.c (recpy_ptid): Remove.
|
|
|
|
|
(recpy_record_getset): Remove recpy_ptid.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_fetch): Set inferior_ptid.
|
|
|
|
|
* python/py-record-btrace.c: Add "py-record.h" include.
|
|
|
|
|
(recpy_bt_format, recpy_bt_replay_position, recpy_bt_begin,
|
|
|
|
|
recpy_bt_end, recpy_bt_instruction_history,
|
|
|
|
|
recpy_bt_function_call_history, recpy_bt_goto): Use ptid stored
|
|
|
|
|
in gdb.Record object instead of current ptid.
|
|
|
|
|
* python/py-record.c: Include new "py-record.h" file.
|
|
|
|
|
(recpy_record_object): Moved to py-record.h.
|
|
|
|
|
* python/py-record.h: New file.
|
|
|
|
|
|
2017-05-02 11:35:54 +02:00
|
|
|
|
2017-05-01 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record-btrace.c (BTPY_REQUIRE_VALID_INSN,
|
|
|
|
|
BTPY_REQUIRE_VALID_CALL, recpy_bt_function_call_history): Fix
|
|
|
|
|
indentation.
|
|
|
|
|
|
2017-05-01 18:59:15 +02:00
|
|
|
|
2017-05-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS: Move Daniel Jacobowitz and Mark Kettenis to
|
|
|
|
|
the past maintainers section.
|
|
|
|
|
|
2017-04-28 23:48:42 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* infcmd.c (get_return_value): Use regcache ctor, and remove
|
|
|
|
|
cleanup.
|
|
|
|
|
|
2017-04-28 23:48:42 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache::regcache): New tag dispatch ctor.
|
|
|
|
|
(do_cooked_read): Moved above.
|
|
|
|
|
(regcache_dup): Use the tag dispatch ctor..
|
|
|
|
|
* regcache.h (regcache): Declare ctor, delete copy ctor and
|
|
|
|
|
assignment operator, remove friend regcache_dup.
|
|
|
|
|
|
2017-04-28 23:48:42 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_dup): Assert !src->m_readonly_p and
|
|
|
|
|
call method save instead of regcache_cpy.
|
|
|
|
|
* regcache.h (struct regcache): Make regcache_dup a friend.
|
|
|
|
|
|
2017-04-28 23:48:42 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (struct regcache): Move to regcache.h
|
|
|
|
|
(regcache::arch): New method.
|
|
|
|
|
(regcache_get_ptid): Update.
|
|
|
|
|
(get_regcache_arch): Call arch method.
|
|
|
|
|
(get_regcache_aspace): Call method aspace.
|
|
|
|
|
(register_buffer): Change it to method.
|
|
|
|
|
(regcache_save): Change it to regcache::save.
|
|
|
|
|
(regcache_restore): Likewise.
|
|
|
|
|
(regcache_cpy_no_passthrough): Remove the declaration.
|
|
|
|
|
(regcache_cpy): Call methods restore and cpy_no_passthrough.
|
|
|
|
|
(regcache_cpy_no_passthrough): Change it to method
|
|
|
|
|
cpy_no_passthrough.
|
|
|
|
|
(regcache_register_status): Change it to method
|
|
|
|
|
get_register_status.
|
|
|
|
|
(regcache_invalidate): Change it to method invalidate.
|
|
|
|
|
(regcache_thread_ptid_changed): Use methods ptid and set_ptid.
|
|
|
|
|
(regcache_raw_update): Change it to method raw_update.
|
|
|
|
|
(regcache_raw_read): Likewise.
|
|
|
|
|
(regcache_raw_read_signed): Likewise.
|
|
|
|
|
(regcache_raw_read_unsigned): Likewise.
|
|
|
|
|
(regcache_raw_write_signed): Likewise.
|
|
|
|
|
(regcache_raw_write_unsigned): Likewise.
|
|
|
|
|
(regcache_cooked_read): Likewise.
|
|
|
|
|
(regcache_cooked_read_value): Likewise.
|
|
|
|
|
(regcache_cooked_read_signed): Likewise.
|
|
|
|
|
(regcache_cooked_read_unsigned): Likewise.
|
|
|
|
|
(regcache_cooked_write_signed): Likewise.
|
|
|
|
|
(regcache_cooked_write_unsigned): Likewise.
|
|
|
|
|
(regcache_raw_set_cached_value): Likewise.
|
|
|
|
|
(regcache_raw_write): Likewise.
|
|
|
|
|
(regcache_cooked_write): Likewise.
|
|
|
|
|
(regcache_xfer_part): Likewise.
|
|
|
|
|
(regcache_raw_read_part): Likewise.
|
|
|
|
|
(regcache_raw_write_part): Likewise.
|
|
|
|
|
(regcache_cooked_read_part): Likewise.
|
|
|
|
|
(regcache_cooked_write_part): Likewise.
|
|
|
|
|
(regcache_raw_supply): Likewise.
|
|
|
|
|
(regcache_raw_collect): Likewise.
|
|
|
|
|
(regcache_transfer_regset): Likewise.
|
|
|
|
|
(regcache_supply_regset): Likewise.
|
|
|
|
|
(regcache_collect_regset): Likewise.
|
|
|
|
|
(regcache_debug_print_register): Likewise.
|
|
|
|
|
(enum regcache_dump_what): Move it to regcache.h.
|
|
|
|
|
(regcache_dump): Change it to method dump.
|
|
|
|
|
* regcache.h (enum regcache_dump_what): New.
|
|
|
|
|
(class regcache): New.
|
|
|
|
|
* target.c (target_fetch_registers): Call method
|
|
|
|
|
debug_print_register.
|
|
|
|
|
(target_store_registers): Likewise.
|
|
|
|
|
|
2017-04-28 23:16:18 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (struct lm_info_windows): Initialize field.
|
|
|
|
|
(windows_make_so): Allocate lm_info_windows with new.
|
|
|
|
|
(windows_free_so): Free lm_info_windows with delete.
|
|
|
|
|
|
2017-04-28 23:16:18 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-darwin.c (struct lm_info_darwin): Initialize field.
|
|
|
|
|
(darwin_current_sos): Allocate lm_info_darwin with new, remove
|
|
|
|
|
cleanup.
|
|
|
|
|
(darwin_free_so): Free lm_info_darwin with delete.
|
|
|
|
|
|
2017-04-28 23:16:17 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-svr4.h (struct lm_info_svr4): Initialize fields.
|
|
|
|
|
<l_addr_p>: Change type to bool.
|
|
|
|
|
* solib-svr4.c (lm_info_read): Allocate lm_info_svr4 with new.
|
|
|
|
|
(svr4_free_so): Free lm_info_svr4 with delete.
|
|
|
|
|
(svr4_copy_library_list): Replace memcpy with call to copy
|
|
|
|
|
constructor.
|
|
|
|
|
(library_list_start_library, svr4_default_sos): Allocate
|
|
|
|
|
lm_info_svr4 with new.
|
|
|
|
|
|
2017-04-28 23:16:16 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-target.c (struct lm_info_target): Add destructor,
|
|
|
|
|
initialize fields.
|
|
|
|
|
<name>: Change type to std::string.
|
|
|
|
|
(library_list_start_library): Allocate lm_info_target with new.
|
|
|
|
|
(solib_target_free_library_list): Free lm_info_target with
|
|
|
|
|
delete.
|
|
|
|
|
(solib_target_current_sos): Adapt to std::string.
|
|
|
|
|
(solib_target_free_so): Free lm_info_target with delete.
|
|
|
|
|
|
2017-04-28 23:16:16 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-frv.c (struct lm_info_frv): Add destructor, initialize
|
|
|
|
|
fields.
|
|
|
|
|
(frv_current_sos): Allocate lm_info_frv with new.
|
|
|
|
|
(frv_relocate_main_executable): Free lm_info_frv with delete,
|
|
|
|
|
allocate with new.
|
|
|
|
|
(frv_clear_solib, frv_free_so): Free lm_info_frv with delete.
|
|
|
|
|
|
2017-04-28 23:16:15 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-frv.c (struct lm_info_frv): Fix indentation.
|
|
|
|
|
|
2017-04-28 23:16:14 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-dsbt.c (struct lm_info_dsbt): Add destructor, initialize
|
|
|
|
|
map field.
|
|
|
|
|
(dsbt_current_sos): Allocate lm_info_dsbt with new.
|
|
|
|
|
(dsbt_relocate_main_executable): Free lm_info_dsbt with delete
|
|
|
|
|
and allocate with new.
|
|
|
|
|
(dsbt_clear_solib, dsbt_free_so): Free lm_info_dsbt with delete.
|
|
|
|
|
|
2017-04-28 23:16:14 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-aix.c (struct lm_info_aix): Initialize fields in-class.
|
|
|
|
|
<filename, member_name>: Change type to std::string.
|
|
|
|
|
(solib_aix_new_lm_info, solib_aix_xfree_lm_info): Remove.
|
|
|
|
|
(library_list_start_library): Allocate lm_info_aix with new.
|
|
|
|
|
(solib_aix_free_library_list, solib_aix_free_so): Free with delete.
|
|
|
|
|
(solib_aix_current_sos): Adapt to std::string, copy lm_info_aix
|
|
|
|
|
with copy constructor.
|
|
|
|
|
|
Make various lm_info implementations inherit from a base class
The lm_info structure is used to store target specific information about
mapped libraries. It is currently defined as an opaque type in solist.h
and a pointer to it is included in solist, the target-agnostic object
representing a loaded shared library. Multiple targets define their own
implementation of lm_info.
In anticipation of using C++ stuff (e.g. vector) in the lm_info objects,
we first need to avoid different definitions of classes with the same
name (which violates the one definition rule). This patch does it by
having a base class (lm_info_base) from which all the specific lm_info
derive. Each implementation is renamed to something that makes sense
(e.g. lm_info_aix for AIX). The next logical step would probably be to
derive directly from so_list, it's not really obvious, so I'll keep that
for another day.
One special case is the Neutrino (nto) support. It uses SVR4-style
libraries, but overrides some methods. To do that, it needed to have
its own copy of SVR4's lm_info structure in nto-tdep.c, because it was
just not possible to put it in solib-svr4.h and include that file. Over
time, that copy got out of sync, which is still the case today. I can
only assume that the lm_addr function in nto-tdep.c is broken right now.
The first field of the old lm_info was a pointer (gdb_byte *), whereas
in the new lm_info it's an address in the inferior (CORE_ADDR). Trying
to use that field today probably results in a crash. With this
refactor, it's now possible to put lm_info_svr4 in solib-svr4.h and just
include it. I have adapted the code in nto-tdep.c to that it builds,
but it's probably not correct. Since I don't have the knowledge nor
setup to try this on Neutrino, somebody else would have to fix it. But
I am confident that I am not making things worse than they already are.
gdb/ChangeLog:
* solist.h (struct lm_info): Remove.
(struct lm_info_base): New class.
(struct so_list) <lm_info>: Change type to lm_info_base *.
* nto-tdep.c (struct lm_info): Remove.
(lm_addr): Adjust.
* solib-aix.c (struct lm_info): Rename to ...
(struct lm_info_aix): ... this. Extend lm_info_base.
(lm_info_p): Rename to ...
(lm_info_aix_p): ... this, and adjust.
(solib_aix_new_lm_info, solib_aix_xfree_lm_info,
solib_aix_parse_libraries, library_list_start_library,
solib_aix_free_library_list, solib_aix_parse_libraries,
solib_aix_get_library_list,
solib_aix_relocate_section_addresses, solib_aix_free_so,
solib_aix_get_section_offsets,
solib_aix_solib_create_inferior_hook, solib_aix_current_sos):
Adjust.
(struct solib_aix_inferior_data) <library_list>: Adjust.
* solib-darwin.c (struct lm_info): Rename to ...
(struct lm_info_darwin): ... this. Extend lm_info_base.
(darwin_current_sos, darwin_relocate_section_addresses): Adjust.
* solib-dsbt.c (struct lm_info): Rename to ...
(struct lm_info_dsbt): ... this. Extend lm_info_base.
(struct dsbt_info) <main_executable_lm_info): Adjust.
(dsbt_current_sos, dsbt_relocate_main_executable, dsbt_free_so,
dsbt_relocate_section_addresses): Adjust.
* solib-frv.c (struct lm_info): Rename to ...
(struct lm_info_frv): ... this. Extend lm_info_base.
(main_executable_lm_info): Adjust.
(frv_current_sos, frv_relocate_main_executable, frv_free_so,
frv_relocate_section_addresses, frv_fdpic_find_global_pointer,
find_canonical_descriptor_in_load_object,
frv_fdpic_find_canonical_descriptor): Adjust.
* solib-svr4.c (struct lm_info): Move to solib-svr4.h, renamed
to lm_info_svr4.
(lm_info_read, lm_addr_check, svr4_keep_data_in_core,
svr4_clear_so, svr4_copy_library_list,
library_list_start_library, svr4_default_sos, svr4_read_so_list,
svr4_current_sos, svr4_fetch_objfile_link_map,
solist_update_incremental): Adjust.
* solib-svr4.h (struct lm_info_svr4): Move here from
solib-svr4.c.
* solib-target.c (struct lm_info): Rename to ...
(struct lm_info_target): ... this. Extend lm_info_base.
(lm_info_p): Rename to ...
(lm_info_target_p): ... this.
(solib_target_parse_libraries, library_list_start_segment,
library_list_start_section, library_list_start_library,
library_list_end_library, solib_target_free_library_list,
solib_target_current_sos, solib_target_free_so,
solib_target_relocate_section_addresses): Adjust.
* windows-nat.c (struct lm_info): Rename to ...
(struct lm_info_windows): ... this. Extend lm_info_base.
(windows_make_so, handle_load_dll, handle_unload_dll,
windows_xfer_shared_libraries): Adjust.
2017-04-28 23:16:13 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solist.h (struct lm_info): Remove.
|
|
|
|
|
(struct lm_info_base): New class.
|
|
|
|
|
(struct so_list) <lm_info>: Change type to lm_info_base *.
|
|
|
|
|
* nto-tdep.c (struct lm_info): Remove.
|
|
|
|
|
(lm_addr): Adjust.
|
|
|
|
|
* solib-aix.c (struct lm_info): Rename to ...
|
|
|
|
|
(struct lm_info_aix): ... this. Extend lm_info_base.
|
|
|
|
|
(lm_info_p): Rename to ...
|
|
|
|
|
(lm_info_aix_p): ... this, and adjust.
|
|
|
|
|
(solib_aix_new_lm_info, solib_aix_xfree_lm_info,
|
|
|
|
|
solib_aix_parse_libraries, library_list_start_library,
|
|
|
|
|
solib_aix_free_library_list, solib_aix_parse_libraries,
|
|
|
|
|
solib_aix_get_library_list,
|
|
|
|
|
solib_aix_relocate_section_addresses, solib_aix_free_so,
|
|
|
|
|
solib_aix_get_section_offsets,
|
|
|
|
|
solib_aix_solib_create_inferior_hook, solib_aix_current_sos):
|
|
|
|
|
Adjust.
|
|
|
|
|
(struct solib_aix_inferior_data) <library_list>: Adjust.
|
|
|
|
|
* solib-darwin.c (struct lm_info): Rename to ...
|
|
|
|
|
(struct lm_info_darwin): ... this. Extend lm_info_base.
|
|
|
|
|
(darwin_current_sos, darwin_relocate_section_addresses): Adjust.
|
|
|
|
|
* solib-dsbt.c (struct lm_info): Rename to ...
|
|
|
|
|
(struct lm_info_dsbt): ... this. Extend lm_info_base.
|
|
|
|
|
(struct dsbt_info) <main_executable_lm_info): Adjust.
|
|
|
|
|
(dsbt_current_sos, dsbt_relocate_main_executable, dsbt_free_so,
|
|
|
|
|
dsbt_relocate_section_addresses): Adjust.
|
|
|
|
|
* solib-frv.c (struct lm_info): Rename to ...
|
|
|
|
|
(struct lm_info_frv): ... this. Extend lm_info_base.
|
|
|
|
|
(main_executable_lm_info): Adjust.
|
|
|
|
|
(frv_current_sos, frv_relocate_main_executable, frv_free_so,
|
|
|
|
|
frv_relocate_section_addresses, frv_fdpic_find_global_pointer,
|
|
|
|
|
find_canonical_descriptor_in_load_object,
|
|
|
|
|
frv_fdpic_find_canonical_descriptor): Adjust.
|
|
|
|
|
* solib-svr4.c (struct lm_info): Move to solib-svr4.h, renamed
|
|
|
|
|
to lm_info_svr4.
|
|
|
|
|
(lm_info_read, lm_addr_check, svr4_keep_data_in_core,
|
|
|
|
|
svr4_clear_so, svr4_copy_library_list,
|
|
|
|
|
library_list_start_library, svr4_default_sos, svr4_read_so_list,
|
|
|
|
|
svr4_current_sos, svr4_fetch_objfile_link_map,
|
|
|
|
|
solist_update_incremental): Adjust.
|
|
|
|
|
* solib-svr4.h (struct lm_info_svr4): Move here from
|
|
|
|
|
solib-svr4.c.
|
|
|
|
|
* solib-target.c (struct lm_info): Rename to ...
|
|
|
|
|
(struct lm_info_target): ... this. Extend lm_info_base.
|
|
|
|
|
(lm_info_p): Rename to ...
|
|
|
|
|
(lm_info_target_p): ... this.
|
|
|
|
|
(solib_target_parse_libraries, library_list_start_segment,
|
|
|
|
|
library_list_start_section, library_list_start_library,
|
|
|
|
|
library_list_end_library, solib_target_free_library_list,
|
|
|
|
|
solib_target_current_sos, solib_target_free_so,
|
|
|
|
|
solib_target_relocate_section_addresses): Adjust.
|
|
|
|
|
* windows-nat.c (struct lm_info): Rename to ...
|
|
|
|
|
(struct lm_info_windows): ... this. Extend lm_info_base.
|
|
|
|
|
(windows_make_so, handle_load_dll, handle_unload_dll,
|
|
|
|
|
windows_xfer_shared_libraries): Adjust.
|
|
|
|
|
|
2017-04-28 23:16:12 +02:00
|
|
|
|
2017-04-28 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* solib-darwin.c (struct darwin_so_list): Remove.
|
|
|
|
|
(darwin_current_sos): Allocate an so_list object instead of a
|
|
|
|
|
darwin_so_list, separately allocate an lm_info object.
|
|
|
|
|
(darwin_free_so): Free lm_info.
|
|
|
|
|
|
2017-04-28 18:34:52 +02:00
|
|
|
|
2017-04-28 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-tdep.c (print_gp_register_row): Replace printf_filtered
|
|
|
|
|
with fprintf_filtered.
|
|
|
|
|
|
2017-04-28 15:43:13 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache::regcache): New function.
|
|
|
|
|
(regcache::~regcache): New function.
|
|
|
|
|
(regcache_xmalloc_1): Remove.
|
|
|
|
|
(regcache_xmalloc): Call new regcache.
|
|
|
|
|
(regcache_xfree): Call delete regcache.
|
|
|
|
|
(get_thread_arch_aspace_regcache): Call new regcache.
|
|
|
|
|
|
2017-04-28 10:50:51 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mips-linux-nat.c (mips_linux_new_thread): Use ptid method
|
|
|
|
|
lwp instead of ptid_get_lwp.
|
|
|
|
|
|
2017-04-28 10:33:16 +02:00
|
|
|
|
2017-04-28 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mips-linux-nat.c (mips_linux_new_thread): Get lwpid from
|
|
|
|
|
lwp_info instead of getting from inferior_ptid.
|
|
|
|
|
|
2017-04-28 00:55:26 +02:00
|
|
|
|
2017-04-27 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbtypes.c (LVALUE_REFERENCE_TO_RVALUE_BINDING_BADNESS)
|
|
|
|
|
DIFFERENT_REFERENCE_TYPE_BADNESS): Remove.
|
|
|
|
|
(CV_CONVERSION_BADNESS): Define.
|
|
|
|
|
(rank_one_type): Remove overly restrictive rvalue reference
|
|
|
|
|
rank checks.
|
|
|
|
|
Add cv-qualifier checks and subranks for type equality.
|
|
|
|
|
* gdbtypes.h (REFERENCE_CONVERSION_RVALUE,
|
|
|
|
|
REFERENCE_CONVERSION_CONST_LVALUE, CV_CONVERSION_BADNESS,
|
|
|
|
|
CV_CONVERSION_CONST, CV_CONVERSION_VOLATILE): Declare.
|
|
|
|
|
|
Add missing incref when creating Inferior Python object
The test py-inferior.exp fails when using a debug build of Python 3.6. I don't
see it failing with my system's default Python, but it might be related to the
different memory allocation scheme used when doing a build with pydebug.
The issue is that we are missing a Py_INCREF in
inferior_to_inferior_object. The PyObject_New function initializes the
object with a refcount of 1. If we assume that this refcount
corresponds to the reference we are returning, then we are missing an
incref for the reference in the inferior data.
The counterpart for the incref that corresponds to the reference in the
inferior data is in py_free_inferior, in the form the gdbpy_ref instance.
Here's how I can get it to crash (with some debug output):
$ ./gdb -nx -ex "set debug python 1"
(gdb) add-inferior
Added inferior 2
(gdb) python infs = gdb.inferiors()
Creating Python Inferior object inf = 1
Creating Python Inferior object inf = 2
(gdb) remove-inferiors 2
py_free_inferior inf = 2
infpy_dealloc inf = <unknown>
(gdb) python infs = None
Fatal Python error: Objects/tupleobject.c:243 object at 0x7f9cf1a568d8 has negative ref count -1
Current thread 0x00007f9cf1b68780 (most recent call first):
File "<string>", line 1 in <module>
[1] 408 abort (core dumped) ./gdb -nx -ex "set debug python 1"
After having created the inferiors object, their refcount is 1 (which
comes from PyObject_New), but it should be two. The gdb inferior object
has a reference and the "infs" list has a reference.
When invoking remove-inferiors, py_free_inferior gets called. It does
the decref that corresponds to the reference that the gdb inferior
object kept. At this moment, the refcount drops to 0 and the object
gets deallocated, even though the "infs" list still has a reference.
When we set "infs" to None, Python tries to decref the already zero
refcount and the assert triggers.
With this patch, it looks better:
(gdb) add-inferior
Added inferior 2
(gdb) python infs = gdb.inferiors()
Creating Python Inferior object inf = 1
Creating Python Inferior object inf = 2
(gdb) remove-inferiors 2
py_free_inferior inf = 2
(gdb) python infs = None
infpy_dealloc inf = <unknown>
gdb/ChangeLog:
* python/py-inferior.c (inferior_to_inferior_object): Increment reference
count when creating the object.
2017-04-27 23:03:20 +02:00
|
|
|
|
2017-04-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (inferior_to_inferior_object): Increment reference
|
|
|
|
|
count when creating the object.
|
|
|
|
|
|
2017-04-27 15:57:08 +02:00
|
|
|
|
2017-04-27 Sangamesh Mallayya <sangamesh.swamy@in.ibm.com>
|
|
|
|
|
Ulrich Weigand <uweigand@de.ibm.com>
|
|
|
|
|
|
|
|
|
|
* xcoffread.c (read_xcoff_symtab): Read correct function auxiliary
|
|
|
|
|
entry if xlc -qfuncsect or gcc -ffunction-sections compiler option
|
|
|
|
|
is used in AIX.
|
|
|
|
|
(read_xcoff_symtab): Handle C_WEAKEXT storage class.
|
|
|
|
|
(process_xcoff_symbol): Likewise.
|
|
|
|
|
(scan_xcoff_symtab): Likewise.
|
|
|
|
|
|
2017-04-27 12:38:14 +02:00
|
|
|
|
2017-04-26 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* ia64-tdep.c (examine_prologue): Use get_frame_register_unsigned.
|
|
|
|
|
(ia64_sigtramp_frame_prev_register): Use read_memory_unsigned_integer.
|
|
|
|
|
(ia64_access_reg): Use get_frame_register_unsigned.
|
|
|
|
|
(ia64_access_rse_reg): Likewise.
|
|
|
|
|
(ia64_libunwind_frame_prev_register): Likewise.
|
|
|
|
|
|
2017-04-26 15:05:03 +02:00
|
|
|
|
2017-04-26 Jiong Wang <jiong.wang@arm.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh: New gdbarch method execute_dwarf_cfa_vendor_op.
|
|
|
|
|
* gdbarch.c: Regenerated.
|
|
|
|
|
* gdbarch.h: Regenerated.
|
|
|
|
|
* dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Made the
|
|
|
|
|
visibility external.
|
|
|
|
|
(execute_cfa_program): Call execute_dwarf_cfa_vendor_op for CFI
|
|
|
|
|
between DW_CFA_lo_user and DW_CFA_high_user inclusive.
|
|
|
|
|
(enum cfa_how_kind): Move to ...
|
|
|
|
|
(struct dwarf2_frame_state_reg_info): Likewise.
|
|
|
|
|
(struct dwarf2_frame_state): Likewise.
|
|
|
|
|
* dwarf2-frame.h: ... here.
|
|
|
|
|
(dwarf2_frame_state_alloc_regs): New declaration.
|
|
|
|
|
* sparc-tdep.c (sparc_execute_dwarf_cfa_vendor_op): New function.
|
|
|
|
|
(sparc32_gdbarch_init): Register execute_dwarf_cfa_vendor_op hook.
|
|
|
|
|
|
2017-04-26 11:32:35 +02:00
|
|
|
|
2017-04-26 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_pseudo_register_read): Use
|
|
|
|
|
regcache_raw_read_unsigned.
|
|
|
|
|
(xtensa_pseudo_register_write): Likewise.
|
|
|
|
|
|
2017-04-26 10:57:15 +02:00
|
|
|
|
2017-04-26 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* nds32-tdep.c (nds32_pseudo_register_read): Abort on errors.
|
|
|
|
|
(nds32_pseudo_register_write): Likewise.
|
|
|
|
|
|
2017-04-25 22:32:05 +02:00
|
|
|
|
2017-04-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (struct regcache) <readonly_p>: Change its type
|
|
|
|
|
to bool.
|
|
|
|
|
(regcache_xmalloc_1): Update parameter type and callers update.
|
|
|
|
|
|
2017-04-25 16:15:54 +02:00
|
|
|
|
2017-04-25 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_gdbarch_init): Don't call
|
|
|
|
|
set_gdbarch_wchar_bit.
|
|
|
|
|
* arm-tdep.c (arm_gdbarch_init): Likewise.
|
|
|
|
|
|
2017-04-25 11:58:57 +02:00
|
|
|
|
2017-04-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/poison.h [!HAVE_IS_TRIVIALLY_COPYABLE] (IsRelocatable)
|
|
|
|
|
(BothAreRelocatable, memcopy, memmove): Don't define.
|
|
|
|
|
* common/traits.h (__has_feature, HAVE_IS_TRIVIALLY_COPYABLE): New
|
|
|
|
|
macros.
|
|
|
|
|
|
Poison non-POD memset & non-trivially-copyable memcpy/memmove
This patch catches invalid initialization of non-POD types with
memset, at compile time.
This is what I used to catch the problems fixed by the previous
patches in the series:
$ make -k 2>&1 | grep "deleted function"
src/gdb/breakpoint.c:951:53: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = bp_location; <template-parameter-1-2> = void; size_t = long unsigned int]’
src/gdb/breakpoint.c:7325:32: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = bp_location; <template-parameter-1-2> = void; size_t = long unsigned int]’
src/gdb/btrace.c:1153:42: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = btrace_insn; <template-parameter-1-2> = void; size_t = long unsigned int]’
...
gdb/ChangeLog:
2017-04-25 Pedro Alves <palves@redhat.com>
* common/common-defs.h: Include "common/poison.h".
* common/function-view.h: (Not, Or, Requires): Move to traits.h
and adjust.
* common/poison.h: New file.
* common/traits.h: Include <type_traits>.
(Not, Or, Requires): New, moved from common/function-view.h.
2017-04-25 02:27:41 +02:00
|
|
|
|
2017-04-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-defs.h: Include "common/poison.h".
|
|
|
|
|
* common/function-view.h: (Not, Or, Requires): Move to traits.h
|
|
|
|
|
and adjust.
|
|
|
|
|
* common/poison.h: New file.
|
|
|
|
|
* common/traits.h: Include <type_traits>.
|
|
|
|
|
(Not, Or, Requires): New, moved from common/function-view.h.
|
|
|
|
|
|
Don't memset non-POD types: struct breakpoint
Eh, struct breakpoint was made non-POD just today, with commit
d28cd78ad820e3 ("Change breakpoint event locations to
event_location_up"). :-)
src/gdb/breakpoint.c: In function ‘void init_raw_breakpoint_without_location(breakpoint*, gdbarch*, bptype, const breakpoint_ops*)’:
src/gdb/breakpoint.c:7447:28: error: use of deleted function ‘void* memset(T*, int, size_t) [with T = breakpoint; <template-parameter-1-2> = void; size_t = long unsigned int]’
memset (b, 0, sizeof (*b));
^
In file included from src/gdb/common/common-defs.h:85:0,
from src/gdb/defs.h:28,
from src/gdb/breakpoint.c:20:
src/gdb/common/poison.h:56:7: note: declared here
void *memset (T *s, int c, size_t n) = delete;
^
gdb/ChangeLog:
2017-04-25 Pedro Alves <palves@redhat.com>
* breakpoint.h (struct breakpoint): In-class initialize all
fields. Make boolean fields "bool".
* breakpoint.c (init_raw_breakpoint_without_location): Remove
memset call and initializations no longer necessary.
2017-04-25 02:27:42 +02:00
|
|
|
|
2017-04-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (struct breakpoint): In-class initialize all
|
|
|
|
|
fields. Make boolean fields "bool".
|
|
|
|
|
* breakpoint.c (init_raw_breakpoint_without_location): Remove
|
|
|
|
|
memset call and initializations no longer necessary.
|
|
|
|
|
|
2017-04-25 02:27:42 +02:00
|
|
|
|
2017-04-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (pt_btrace_insn_flags): Change parameter type to
|
|
|
|
|
reference.
|
|
|
|
|
(pt_btrace_insn): New function.
|
|
|
|
|
(ftrace_add_pt): Remove memset call and use pt_btrace_insn.
|
|
|
|
|
|
2017-04-25 02:27:42 +02:00
|
|
|
|
2017-04-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_catchpoint_location): Now a "class". Remove
|
|
|
|
|
"base" field and inherit from "bp_location" instead. Add
|
|
|
|
|
non-default ctor.
|
|
|
|
|
(allocate_location_exception): Use new non-default ctor.
|
|
|
|
|
* breakpoint.c (get_first_locp_gte_addr): Remove memset call.
|
|
|
|
|
(init_bp_location): Convert to ...
|
|
|
|
|
(bp_location::bp_location): ... this new ctor, and remove memset
|
|
|
|
|
call.
|
|
|
|
|
(base_breakpoint_allocate_location): Use the new non-default ctor.
|
|
|
|
|
* breakpoint.h (bp_location): Now a class. Declare default and
|
|
|
|
|
non-default ctors. In-class initialize all members.
|
|
|
|
|
(init_bp_location): Remove declaration.
|
|
|
|
|
|
Don't memcpy non-trivially-copyable types: Make enum_flags triv. copyable
The delete-memcpy-with-non-trivial-types patch exposed many instances
of this problem:
src/gdb/btrace.h: In function ‘btrace_insn_s* VEC_btrace_insn_s_quick_insert(VEC_btrace_insn_s*, unsigned int, const btrace_insn_s*, const char*, unsigned int)’:
src/gdb/common/vec.h:948:62: error: use of deleted function ‘void* memmove(T*, const U*, size_t) [with T = btrace_insn; U = btrace_insn; <template-parameter-1-3> = void; size_t = long unsigned int]’
memmove (slot_ + 1, slot_, (vec_->num++ - ix_) * sizeof (T)); \
^
src/gdb/common/vec.h:436:1: note: in expansion of macro ‘DEF_VEC_FUNC_O’
DEF_VEC_FUNC_O(T) \
^
src/gdb/btrace.h:84:1: note: in expansion of macro ‘DEF_VEC_O’
DEF_VEC_O (btrace_insn_s);
^
[...]
src/gdb/common/vec.h:1060:31: error: use of deleted function ‘void* memcpy(T*, const U*, size_t) [with T = btrace_insn; U = btrace_insn; <template-parameter-1-3> = void; size_t = long unsigned int]’
sizeof (T) * vec2_->num); \
^
src/gdb/common/vec.h:437:1: note: in expansion of macro ‘DEF_VEC_ALLOC_FUNC_O’
DEF_VEC_ALLOC_FUNC_O(T) \
^
src/gdb/btrace.h:84:1: note: in expansion of macro ‘DEF_VEC_O’
DEF_VEC_O (btrace_insn_s);
^
So, VECs (given it's C roots) rely on memcpy/memcpy of VEC elements to
be well defined, in order to grow/reallocate its internal elements
array. This means that we can only put trivially copyable types in
VECs. E.g., if a type requires using a custom copy/move ctor to
relocate, then we can't put it in a VEC (so we use std::vector
instead). But, as shown above, we're violating that requirement.
btrace_insn is currently not trivially copyable, because it contains
an enum_flags field, and that is itself not trivially copyable. This
patch corrects that, by simply removing the user-provided copy
constructor and assignment operator. The compiler-generated versions
work just fine.
Note that std::vector relies on std::is_trivially_copyable too to know
whether it can reallocate its elements with memcpy/memmove instead of
having to call copy/move ctors and dtors, so if we have types in
std::vectors that weren't trivially copyable because of enum_flags,
this will make such vectors more efficient.
gdb/ChangeLog:
2017-04-25 Pedro Alves <palves@redhat.com>
* common/enum-flags.h (enum_flags): Don't implement copy ctor and
assignment operator.
2017-04-25 02:27:42 +02:00
|
|
|
|
2017-04-25 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/enum-flags.h (enum_flags): Don't implement copy ctor and
|
|
|
|
|
assignment operator.
|
|
|
|
|
|
2017-04-24 22:29:12 +02:00
|
|
|
|
2017-04-24 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* doublest.c (convert_doublest_to_floatformat): Call
|
|
|
|
|
floatformat_totalsize_bytes.
|
|
|
|
|
|
2017-04-13 00:30:21 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
* stack.c (print_frame): Use ui_out_emit_list.
|
|
|
|
|
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
* mi/mi-main.c (print_one_inferior)
|
|
|
|
|
(mi_cmd_data_list_register_names)
|
|
|
|
|
(mi_cmd_data_list_register_values, mi_cmd_list_features)
|
|
|
|
|
(mi_cmd_list_target_features, mi_cmd_trace_frame_collected): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
* mi/mi-interp.c (mi_on_normal_stop_1): Use ui_out_emit_list.
|
|
|
|
|
(mi_output_solib_attribs): Use ui_out_emit_list,
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-var.c (varobj_update_one): Use ui_out_emit_list.
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_cmd_stack_list_frames)
|
|
|
|
|
(mi_cmd_stack_list_args, list_args_or_locals): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
* disasm.c (do_assembly_only): Use ui_out_emit_list.
|
|
|
|
|
* breakpoint.c (print_solib_event, output_thread_groups): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
|
2017-04-13 00:16:10 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (print_variable_or_computed): Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-var.c (varobj_update_one): Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-stack.c (list_arg_or_local): Use ui_out_emit_tuple.
|
|
|
|
|
|
2017-04-13 00:15:14 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (tvariables_info_1)
|
|
|
|
|
(print_one_static_tracepoint_marker): Use ui_out_emit_tuple.
|
|
|
|
|
|
2017-04-13 00:10:02 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (print_frame_arg): Use ui_out_emit_tuple,
|
|
|
|
|
annotate_arg_emitter.
|
|
|
|
|
* breakpoint.c (print_mention_watchpoint)
|
|
|
|
|
(print_mention_masked_watchpoint): Use ui_out_emit_tuple.
|
|
|
|
|
* annotate.h (struct annotate_arg_emitter): New.
|
|
|
|
|
|
2017-04-12 16:23:08 +02:00
|
|
|
|
2017-04-22 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_insn_history)
|
|
|
|
|
(record_btrace_insn_history_range, record_btrace_call_history)
|
|
|
|
|
(record_btrace_call_history_range): Use ui_out_emit_tuple.
|
|
|
|
|
* thread.c (do_captured_list_thread_ids, print_thread_info_1): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* stack.c (print_frame_info): Use ui_out_emit_tuple.
|
|
|
|
|
* solib.c (info_sharedlibrary_command): Use ui_out_emit_tuple.
|
|
|
|
|
* skip.c (skip_info): Use ui_out_emit_tuple.
|
|
|
|
|
* remote.c (show_remote_cmd): Use ui_out_emit_tuple.
|
|
|
|
|
* progspace.c (print_program_space): Use ui_out_emit_tuple.
|
|
|
|
|
* probe.c (info_probes_for_ops): Use ui_out_emit_tuple.
|
|
|
|
|
* osdata.c (info_osdata): Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-main.c (print_one_inferior, list_available_thread_groups)
|
|
|
|
|
(output_register, mi_cmd_data_read_memory)
|
|
|
|
|
(mi_cmd_data_read_memory_bytes, mi_load_progress)
|
|
|
|
|
(mi_cmd_trace_frame_collected): Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_list_children, varobj_update_one):
|
|
|
|
|
Use ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_cmd_stack_list_args): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions)
|
|
|
|
|
(mi_cmd_info_gdb_mi_command): Use ui_out_emit_tuple.
|
|
|
|
|
* linux-thread-db.c (info_auto_load_libthread_db): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* inferior.c (print_inferior): Use ui_out_emit_tuple.
|
|
|
|
|
* gdb_bfd.c (print_one_bfd): Use ui_out_emit_tuple.
|
|
|
|
|
* disasm.c (do_mixed_source_and_assembly_deprecated)
|
|
|
|
|
(do_mixed_source_and_assembly): Use ui_out_emit_tuple.
|
|
|
|
|
* cp-abi.c (list_cp_abis): Use ui_out_emit_tuple.
|
|
|
|
|
* cli/cli-setshow.c (cmd_show_list): Use ui_out_emit_tuple.
|
|
|
|
|
* breakpoint.c (print_one_breakpoint_location)
|
|
|
|
|
(print_one_breakpoint): Use ui_out_emit_tuple.
|
|
|
|
|
* auto-load.c (print_script, info_auto_load_cmd): Use
|
|
|
|
|
ui_out_emit_tuple.
|
|
|
|
|
* ada-tasks.c (print_ada_task_info): Use ui_out_emit_tuple.
|
|
|
|
|
|
2017-04-22 03:45:15 +02:00
|
|
|
|
2017-04-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (print_thread_info_1): Remove dead code.
|
|
|
|
|
|
2017-04-21 16:14:37 +02:00
|
|
|
|
2017-04-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (selftests::aarch64_process_record_test): Make it #if
|
|
|
|
|
GDB_SELF_TEST.
|
|
|
|
|
* arm-tdep.c (selftests::arm_record_test): Likewise.
|
|
|
|
|
|
2017-04-21 15:59:27 +02:00
|
|
|
|
2017-04-21 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_restore): Remove argument 2. Replace
|
|
|
|
|
argument 3 with regcache. Get register status from
|
|
|
|
|
src->register_status and get register contents from
|
|
|
|
|
register_buffer (src, regnum).
|
|
|
|
|
(regcache_cpy): Update.
|
|
|
|
|
|
2017-04-19 14:16:05 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (thread): Add missing closing parenthesis in
|
|
|
|
|
comment.
|
|
|
|
|
|
Fix removing inferiors from within "thread apply" commands
This patch fixes an internal error exposed by a test that does
something like:
define kill-and-remove
kill inferiors 2
remove-inferiors 2
end
# Start one inferior.
start
# Start another inferior.
add-inferior 2
inferior 2
start
# Kill and remove inferior 1 while inferior 2 is selected.
thread apply 1.1 kill-and-remove
The internal error looks like this:
Thread 1.1 (Thread 0x7ffff7fc2700 (LWP 20677)):
[Switching to inferior 1 [process 20677] (gdb/testsuite/outputs/gdb.threads/threadapply/threadapply)]
[Switching to thread 1.1 (Thread 0x7ffff7fc2700 (LWP 20677))]
#0 main () at src/gdb/testsuite/gdb.threads/threadapply.c:38
38 for (i = 0; i < NUM; i++)
src/gdb/inferior.c:66: internal-error: void set_current_inferior(inferior*): Assertion `inf != NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/threadapply.exp: kill_and_remove_inferior: try kill-and-remove: thread apply 1.1 kill-and-remove (GDB internal error)
There are several problems around this area of the code. One is that
in do_restore_current_thread_cleanup, we do a look up of inferior by
ptid, which can find the wrong inferior if the previously selected
inferior exited and some other inferior was started with a reused pid
(rare, but still...).
The other problem is that the "remove-inferiors" command rejects
attempts to remove the current inferior, but when we get to
"remove-inferiors" in a "thread apply THR remove-inferiors 2" command,
the current inferior is the inferior of thread THR, not the previously
selected inferior, so if the previously selected inferior was inferior
2, that command still manages to wipe it, and then gdb restores the
old selected inferior, which is now a dangling pointer...
So the fix here is:
- Make make_cleanup_restore_current_thread store a pointer to the
previously selected inferior directly, and use it directly instead
of doing ptid look ups.
- Add a refcount to inferiors, very similar to thread_info's refcount,
that is incremented/decremented by
make_cleanup_restore_current_thread, and checked before deleting an
inferior. To avoid duplication, a new refcounted_object type is
added, that both thread_info and inferior inherit from.
gdb/ChangeLog:
2017-04-19 Pedro Alves <palves@redhat.com>
* common/refcounted-object.h: New file.
* gdbthread.h: Include "common/refcounted-object.h".
(thread_info): Inherit from refcounted_object and add comments.
(thread_info::incref, thread_info::decref)
(thread_info::m_refcount): Delete.
(thread_info::deletable): Use the refcounted_object::refcount()
method.
* inferior.c (current_inferior_): Add comment.
(set_current_inferior): Increment/decrement refcounts.
(prune_inferiors, remove_inferior_command): Skip inferiors marked
not-deletable instead of comparing with the current inferior.
(initialize_inferiors): Increment the initial inferior's refcount.
* inferior.h (struct inferior): Forward declare.
Include "common/refcounted-object.h".
(current_inferior, set_current_inferior): Move declaration to
before struct inferior's definition, and fix comment.
(inferior): Inherit from refcounted_object. Add comments.
* thread.c (switch_to_thread_no_regs): Reference the thread's
inferior pointer directly instead of doing a ptid lookup.
(switch_to_no_thread): New function.
(switch_to_thread(thread_info *)): New function, factored out
from ...
(switch_to_thread(ptid_t)): ... this.
(restore_current_thread): Delete.
(current_thread_cleanup): Remove 'inf_id' and 'was_removable'
fields, and add 'inf' field.
(do_restore_current_thread_cleanup): Check whether old->inf is
alive instead of looking up an inferior by ptid. Use
switch_to_thread and switch_to_no_thread.
(restore_current_thread_cleanup_dtor): Use old->inf directly
instead of lookup up an inferior by id. Decref the inferior.
Don't restore 'removable'.
(make_cleanup_restore_current_thread): Same the inferior pointer
in old, instead of the inferior number. Incref the inferior.
Don't save/clear 'removable'.
gdb/testsuite/ChangeLog:
2017-04-19 Pedro Alves <palves@redhat.com>
* gdb.threads/threadapply.exp (kill_and_remove_inferior): New
procedure.
(top level): Call it.
* lib/gdb.exp (gdb_define_cmd): New procedure.
2017-04-19 14:12:23 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/refcounted-object.h: New file.
|
|
|
|
|
* gdbthread.h: Include "common/refcounted-object.h".
|
|
|
|
|
(thread_info): Inherit from refcounted_object and add comments.
|
|
|
|
|
(thread_info::incref, thread_info::decref)
|
|
|
|
|
(thread_info::m_refcount): Delete.
|
|
|
|
|
(thread_info::deletable): Use the refcounted_object::refcount()
|
|
|
|
|
method.
|
|
|
|
|
* inferior.c (current_inferior_): Add comment.
|
|
|
|
|
(set_current_inferior): Increment/decrement refcounts.
|
|
|
|
|
(prune_inferiors, remove_inferior_command): Skip inferiors marked
|
|
|
|
|
not-deletable instead of comparing with the current inferior.
|
|
|
|
|
(initialize_inferiors): Increment the initial inferior's refcount.
|
|
|
|
|
* inferior.h (struct inferior): Forward declare.
|
|
|
|
|
Include "common/refcounted-object.h".
|
|
|
|
|
(current_inferior, set_current_inferior): Move declaration to
|
|
|
|
|
before struct inferior's definition, and fix comment.
|
|
|
|
|
(inferior): Inherit from refcounted_object. Add comments.
|
|
|
|
|
* thread.c (switch_to_thread_no_regs): Reference the thread's
|
|
|
|
|
inferior pointer directly instead of doing a ptid lookup.
|
|
|
|
|
(switch_to_no_thread): New function.
|
|
|
|
|
(switch_to_thread(thread_info *)): New function, factored out
|
|
|
|
|
from ...
|
|
|
|
|
(switch_to_thread(ptid_t)): ... this.
|
|
|
|
|
(restore_current_thread): Delete.
|
|
|
|
|
(current_thread_cleanup): Remove 'inf_id' and 'was_removable'
|
|
|
|
|
fields, and add 'inf' field.
|
|
|
|
|
(do_restore_current_thread_cleanup): Check whether old->inf is
|
|
|
|
|
alive instead of looking up an inferior by ptid. Use
|
|
|
|
|
switch_to_thread and switch_to_no_thread.
|
|
|
|
|
(restore_current_thread_cleanup_dtor): Use old->inf directly
|
|
|
|
|
instead of lookup up an inferior by id. Decref the inferior.
|
|
|
|
|
Don't restore 'removable'.
|
|
|
|
|
(make_cleanup_restore_current_thread): Same the inferior pointer
|
|
|
|
|
in old, instead of the inferior number. Incref the inferior.
|
|
|
|
|
Don't save/clear 'removable'.
|
|
|
|
|
|
Make inferior::detaching a bool, and introduce scoped_restore::release()
I left making inferior::detaching a bool to a separate patch, because
doing that makes a make_cleanup_restore_integer call in
infrun.c:prepare_for_detach no longer compile (passing a 'bool *' when
an 'int *' is expected). Since we want to get rid of cleanups anyway,
I looked at converting that to a scoped_restore. However,
prepare_for_detach wants to discard the cleanup on success, and
scoped_restore doesn't have an equivalent for that. So I added one --
I called it "release()" because it seems like a natural fit in the way
standard components call similarly-spirited methods, and, it's also
what the proposal for a generic scope guard calls it too, AFAICS:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4189.pdf
I've added some scoped_guard unit tests, while at it.
gdb/ChangeLog:
2017-04-19 Pedro Alves <palves@redhat.com>
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/scoped_restore-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add scoped_restore-selftests.o.
* common/scoped_restore.h (scoped_restore_base): Make "class".
(scoped_restore_base::release): New public method.
(scoped_restore_base::scoped_restore_base): New protected ctor.
(scoped_restore_base::m_saved_var): New protected field.
(scoped_restore_tmpl::scoped_restore_tmpl(T*)): Initialize the
scoped_restore_base base class instead of m_saved_var directly.
(scoped_restore_tmpl::scoped_restore_tmpl(T*, T2)): Likewise.
(scoped_restore_tmpl::scoped_restore_tmpl(const
scoped_restore_tmpl<T>&)): Likewise.
(scoped_restore_tmpl::~scoped_restore_tmpl): Use the saved_var
method.
(scoped_restore_tmpl::saved_var): New method.
(scoped_restore_tmpl::m_saved_var): Delete.
* inferior.h (inferior::detaching): Now a bool.
* infrun.c (prepare_for_detach): Use a scoped_restore instead of a
cleanup.
* unittests/scoped_restore-selftests.c: New file.
2017-04-19 14:12:23 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/scoped_restore-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add scoped_restore-selftests.o.
|
|
|
|
|
* common/scoped_restore.h (scoped_restore_base): Make "class".
|
|
|
|
|
(scoped_restore_base::release): New public method.
|
|
|
|
|
(scoped_restore_base::scoped_restore_base): New protected ctor.
|
|
|
|
|
(scoped_restore_base::m_saved_var): New protected field.
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl(T*)): Initialize the
|
|
|
|
|
scoped_restore_base base class instead of m_saved_var directly.
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl(T*, T2)): Likewise.
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl(const
|
|
|
|
|
scoped_restore_tmpl<T>&)): Likewise.
|
|
|
|
|
(scoped_restore_tmpl::~scoped_restore_tmpl): Use the saved_var
|
|
|
|
|
method.
|
|
|
|
|
(scoped_restore_tmpl::saved_var): New method.
|
|
|
|
|
(scoped_restore_tmpl::m_saved_var): Delete.
|
|
|
|
|
* inferior.h (inferior::detaching): Now a bool.
|
|
|
|
|
* infrun.c (prepare_for_detach): Use a scoped_restore instead of a
|
|
|
|
|
cleanup.
|
|
|
|
|
* unittests/scoped_restore-selftests.c: New file.
|
|
|
|
|
|
2017-04-19 14:06:20 +02:00
|
|
|
|
2017-04-19 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS, SUBDIR_UNITTESTS_OBS):
|
|
|
|
|
Re-sort in alphabetic order.
|
|
|
|
|
|
2017-04-18 22:39:25 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (obstack_xml_printf): Delete.
|
|
|
|
|
* xml-support.h (obstack_xml_printf): Delete.
|
|
|
|
|
|
gdb_xml_parser: make data fields private and make more functions methods
This patch makes the data fields of gdb_xml_parser private, and makes
more functions be gdb_xml_parser methods. This is mostly for better
encapsulation.
Some free functions have their parsing-related guts converted to
methods, while the free functions remain, as they're used as expat
callbacks. Now their only job is to be small shims that restore back
the gdb_xml_parser type, defer work to the corresponding method, and
make sure C++ exceptions don't cross expat.
More C++-fycation of the XML parsers built on top of gdb_xml_parser
could follow, but this was my stopping point.
gdb/ChangeLog:
2017-04-18 Pedro Alves <palves@redhat.com>
* xml-support.c (gdb_xml_parser) <use_dtd, dtd_name, parse,
vdebug, verror, body_text, start_element, end_element, name,
user_data, set_is_xinclude, set_error, expat_parser>: New methods.
<name, user_data, expat_parser, scopes, error, last_line, dtd_name,
is_xinclude>: Make private and add m_ prefix.
(gdb_xml_parser::body_text): New method, based on ...
(gdb_xml_body_text): ... this. Adjust.
(gdb_xml_parser::vdebug): New method, based on ...
(gdb_xml_debug): ... this. Adjust.
(gdb_xml_parser::verror): New method, based on ...
(gdb_xml_error): ... this. Adjust.
(gdb_xml_parser::start_element): New method, based on ...
(gdb_xml_start_element): ... this. Adjust.
(gdb_xml_start_element_wrapper): Defer to
gdb_xml_parser::start_element and gdb_xml_parser::set_error.
(gdb_xml_parser::end_element): New method, based on ...
(gdb_xml_end_element_wrapper): ... this. Adjust.
(gdb_xml_parser::~gdb_xml_parser): Adjust.
(gdb_xml_parser::gdb_xml_parser): Adjust to field renames.
(gdb_xml_parser::use_dtd): New method, based on ...
(gdb_xml_use_dtd): ... this. Adjust.
(gdb_xml_parser::parse): New method, based on ...
(gdb_xml_parse): ... this. Adjust.
(gdb_xml_parse_quick): Adjust to call the parser's parse method.
(xinclude_start_include): Adjust to call the parser's name method.
(xml_xinclude_default, xml_xinclude_start_doctype)
(xml_xinclude_end_doctype): Adjust to call the parser's user_data
method.
(xml_process_xincludes): Adjust to call parser methods.
* xml-support.h (gdb_xml_use_dtd, gdb_xml_parse): Delete
declarations.
2017-04-18 22:39:25 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (gdb_xml_parser) <use_dtd, dtd_name, parse,
|
|
|
|
|
vdebug, verror, body_text, start_element, end_element, name,
|
|
|
|
|
user_data, set_is_xinclude, set_error, expat_parser>: New methods.
|
|
|
|
|
<name, user_data, expat_parser, scopes, error, last_line, dtd_name,
|
|
|
|
|
is_xinclude>: Make private and add m_ prefix.
|
|
|
|
|
(gdb_xml_parser::body_text): New method, based on ...
|
|
|
|
|
(gdb_xml_body_text): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::vdebug): New method, based on ...
|
|
|
|
|
(gdb_xml_debug): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::verror): New method, based on ...
|
|
|
|
|
(gdb_xml_error): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::start_element): New method, based on ...
|
|
|
|
|
(gdb_xml_start_element): ... this. Adjust.
|
|
|
|
|
(gdb_xml_start_element_wrapper): Defer to
|
|
|
|
|
gdb_xml_parser::start_element and gdb_xml_parser::set_error.
|
|
|
|
|
(gdb_xml_parser::end_element): New method, based on ...
|
|
|
|
|
(gdb_xml_end_element_wrapper): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::~gdb_xml_parser): Adjust.
|
|
|
|
|
(gdb_xml_parser::gdb_xml_parser): Adjust to field renames.
|
|
|
|
|
(gdb_xml_parser::use_dtd): New method, based on ...
|
|
|
|
|
(gdb_xml_use_dtd): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parser::parse): New method, based on ...
|
|
|
|
|
(gdb_xml_parse): ... this. Adjust.
|
|
|
|
|
(gdb_xml_parse_quick): Adjust to call the parser's parse method.
|
|
|
|
|
(xinclude_start_include): Adjust to call the parser's name method.
|
|
|
|
|
(xml_xinclude_default, xml_xinclude_start_doctype)
|
|
|
|
|
(xml_xinclude_end_doctype): Adjust to call the parser's user_data
|
|
|
|
|
method.
|
|
|
|
|
(xml_process_xincludes): Adjust to call parser methods.
|
|
|
|
|
* xml-support.h (gdb_xml_use_dtd, gdb_xml_parse): Delete
|
|
|
|
|
declarations.
|
|
|
|
|
|
2017-04-18 22:39:25 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* tracefile-tfile.c (tfile_write_tdesc): Adjust to use
|
|
|
|
|
gdb::optional<std::string>.
|
|
|
|
|
* xml-support.c: Include <string>.
|
|
|
|
|
(scope_level::scope_level(scope_level &&))
|
|
|
|
|
(scope_level::~scope_level): Delete.
|
|
|
|
|
(scope_level::body): Now a std::string.
|
|
|
|
|
(gdb_xml_body_text, gdb_xml_end_element): Adjust.
|
|
|
|
|
(xinclude_parsing_data::xinclude_parsing_data): Add 'output'
|
|
|
|
|
parameter.
|
|
|
|
|
(xinclude_parsing_data::~xinclude_parsing_data): Delete.
|
|
|
|
|
(xinclude_parsing_data::output): Now a std::string reference.
|
|
|
|
|
(xinclude_start_include): Adjust.
|
|
|
|
|
(xml_xinclude_default): Adjust.
|
|
|
|
|
(xml_process_xincludes): Add 'output' parameter, and return bool.
|
|
|
|
|
* xml-support.h (xml_process_xincludes): Add 'output' parameter,
|
|
|
|
|
and return bool.
|
|
|
|
|
* xml-tdesc.c: Include <unordered_map> and <string>.
|
|
|
|
|
(tdesc_xml_cache): Delete.
|
|
|
|
|
(tdesc_xml_cache_s): Delete.
|
|
|
|
|
(xml_cache): Now an std::unordered_map.
|
|
|
|
|
(tdesc_parse_xml): Adjust to use std::string and unordered_map.
|
|
|
|
|
(target_fetch_description_xml): Change return type to
|
|
|
|
|
gdb::optional<std::string>, and adjust.
|
|
|
|
|
* xml-tdesc.h: Include "common/gdb_optional.h" and <string>.
|
|
|
|
|
(target_fetch_description_xml): Change return type to
|
|
|
|
|
gdb::optional<std::string>.
|
|
|
|
|
|
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/optional-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add optional-selftests.o.
|
|
|
|
|
* unittests/optional-selftests.c: New file.
|
|
|
|
|
* unittests/optional/assignment/1.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/2.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/3.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/4.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/5.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/6.cc: New file.
|
|
|
|
|
* unittests/optional/assignment/7.cc: New file.
|
|
|
|
|
* unittests/optional/cons/copy.cc: New file.
|
|
|
|
|
* unittests/optional/cons/default.cc: New file.
|
|
|
|
|
* unittests/optional/cons/move.cc: New file.
|
|
|
|
|
* unittests/optional/cons/value.cc: New file.
|
|
|
|
|
* unittests/optional/in_place.cc: New file.
|
|
|
|
|
* unittests/optional/observers/1.cc: New file.
|
|
|
|
|
* unittests/optional/observers/2.cc: New file.
|
|
|
|
|
|
More gdb::optional features
Currently we can't use gdb::optional<T> as function return type,
because gdb::optional's copy ctor is deleted. For example, with:
gdb::optional<int> function ()
{
gdb::optional<int> opt;
....
return opt;
we get:
src/gdb/foo.c: In function ‘gdb::optional<int> foo()’:
src/gdb/foo.c:75:10: error: use of deleted function ‘gdb::optional<T>::optional(const gdb::optional<T>&) [with T = int]’
return opt;
^
In file included from src/gdb/foo.c:68:0:
src/gdb/common/gdb_optional.h:53:3: note: declared here
optional (const optional &other) = delete;
^
I started by fixing that, and then ran into another missing feature,
also fixed by this patch.
The next feature I'm missing most from gdb::optional<T> compared to
std::optional<T> is construction/move/assignment from a T, instead of
having to default construct an gdb::optional and then use
optional::emplace(....).
For example:
gdb::optional<std::string> function ()
{
gdb::optional<std::string> opt;
std::string str;
...
opt.emplace (std::move (str));
return opt;
vs
gdb::optional<std::string> function ()
{
std::string str;
...
return str;
The copy/move ctor/assign methods weren't initialy implemented because
std::optional supports construction from a type U if U is convertible
to T too, and has rules to decide whether the ctors are
explicit/implicit based on that, and rules for whether the ctor should
be trivial or not, etc., which leads to a much more complicated
implementation.
If we stick to supporting copy/move construction/assignment of/to an
optional<T> from exactly only optional<T> and T, then all that
conversion-related complication disappears, and we still gain
convenience in most use cases.
The patch also makes emplace return a reference to the constructor
object, per C++17 std::optional, and adds a reset method, againt
because std::optional has one and it's trivial to support it. These
two changes are a requirement of the gdb::optional unit testing patch
that will follow.
gdb/ChangeLog:
2017-04-18 Pedro Alves <palves@redhat.com>
* common/gdb_optional.h: Include common/traits.h.
(in_place_t): New type.
(in_place): New constexpr variable.
(optional::optional): Remove member initialization of
m_instantiated.
(optional::optional(in_place_t...)): New constructor.
(optional::~optional): Use reset.
(optional::optional(const optional&)): New.
(optional::optional(const optional&&)): New.
(optional::optional(T &)): New.
(optional::optional(T &&)): New.
(operator::operator=(const optional &)): New.
(operator::operator=(optional &&)): New.
(operator::operator= (const T &))
(operator::operator= (T &&))
(operator::emplace (Args &&... args)): Return a T&. Use reset.
(operator::reset): New.
(operator::m_instantiated):: Add in-class initializer.
* common/traits.h: Include <type_traits>.
(struct And): New types.
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_optional.h: Include common/traits.h.
|
|
|
|
|
(in_place_t): New type.
|
|
|
|
|
(in_place): New constexpr variable.
|
|
|
|
|
(optional::optional): Remove member initialization of
|
|
|
|
|
m_instantiated.
|
|
|
|
|
(optional::optional(in_place_t...)): New constructor.
|
|
|
|
|
(optional::~optional): Use reset.
|
|
|
|
|
(optional::optional(const optional&)): New.
|
|
|
|
|
(optional::optional(const optional&&)): New.
|
|
|
|
|
(optional::optional(T &)): New.
|
|
|
|
|
(optional::optional(T &&)): New.
|
|
|
|
|
(operator::operator=(const optional &)): New.
|
|
|
|
|
(operator::operator=(optional &&)): New.
|
|
|
|
|
(operator::operator= (const T &))
|
|
|
|
|
(operator::operator= (T &&))
|
|
|
|
|
(operator::emplace (Args &&... args)): Return a T&. Use reset.
|
|
|
|
|
(operator::reset): New.
|
|
|
|
|
(operator::m_instantiated):: Add in-class initializer.
|
|
|
|
|
* common/traits.h: Include <type_traits>.
|
|
|
|
|
(struct And): New types.
|
|
|
|
|
|
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c: Include <vector>.
|
|
|
|
|
(scope_level::scope_level(const gdb_xml_element *))
|
|
|
|
|
(scope_level::scope_level(scope_level&&)): New.
|
|
|
|
|
(scope_level::~scope_level): New.
|
|
|
|
|
(scope_level_s): Delete.
|
|
|
|
|
(gdb_xml_parser::scopes): Now a std::vector.
|
|
|
|
|
(gdb_xml_body_text, gdb_xml_start_element, gdb_xml_end_element):
|
|
|
|
|
Use std::vector.
|
|
|
|
|
(gdb_xml_parser::~gdb_xml_parser): Remove now unnecessary
|
|
|
|
|
scope cleanup code.
|
|
|
|
|
(gdb_xml_parser::gdb_xml_parser): Remove explicit initialization
|
|
|
|
|
of the scopes member. Use std::vector::emplace_back.
|
|
|
|
|
|
2017-04-18 22:39:24 +02:00
|
|
|
|
2017-04-18 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.c (gdb_xml_parser): Add ctor/dtor. Make is_xinclude
|
|
|
|
|
a bool.
|
|
|
|
|
(gdb_xml_end_element): Change type of first parameter.
|
|
|
|
|
(gdb_xml_cleanup): Rename to ...
|
|
|
|
|
(gdb_xml_parser::~gdb_xml_parser): ... this.
|
|
|
|
|
(gdb_xml_create_parser_and_cleanup): Delete with ...
|
|
|
|
|
(gdb_xml_parser::gdb_xml_parser): ... creation parts factored out
|
|
|
|
|
to this new ctor.
|
|
|
|
|
(gdb_xml_parse_quick): Create a local gdb_xml_parser instead of
|
|
|
|
|
using gdb_xml_create_parser_and_cleanup.
|
|
|
|
|
(xinclude_parsing_data): Add ctor/dtor.
|
|
|
|
|
(xml_xinclude_cleanup): Delete.
|
|
|
|
|
(xml_process_xincludes): Create a local xinclude_parsing_data
|
|
|
|
|
instead of heap-allocating one. Create a local gdb_xml_parser
|
|
|
|
|
instead of heap-allocating one with
|
|
|
|
|
gdb_xml_create_parser_and_cleanup.
|
|
|
|
|
|
2017-04-18 18:44:32 +02:00
|
|
|
|
2017-04-18 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
PR threads/20743
|
|
|
|
|
* fbsd-nat.c (resume_one_thread_cb): Remove.
|
|
|
|
|
(resume_all_threads_cb): Remove.
|
|
|
|
|
(fbsd_resume): Use ALL_NON_EXITED_THREADS instead of
|
|
|
|
|
iterate_over_threads.
|
|
|
|
|
|
2017-04-17 16:30:29 +02:00
|
|
|
|
2017-04-17 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Create a new section for the next release branch.
|
|
|
|
|
Rename the section of the current branch, now that it has
|
|
|
|
|
been cut.
|
|
|
|
|
|
2017-04-17 16:20:49 +02:00
|
|
|
|
2017-04-17 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 8.0 branch created (725bf5cf125783c2a7ca4ab63d3768e220bab2db):
|
|
|
|
|
* version.in: Bump version to 8.0.50.DATE-git.
|
|
|
|
|
|
2017-04-14 03:01:53 +02:00
|
|
|
|
2017-04-13 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21385
|
|
|
|
|
* windows-nat.c (windows_create_inferior): Declare 'allargs'
|
|
|
|
|
independently of the host, and fix build breakage on Cygwin.
|
|
|
|
|
|
2017-04-13 17:15:35 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inferior.c (free_inferior): Convert to ...
|
|
|
|
|
(inferior::~inferior): ... this dtor.
|
|
|
|
|
(inferior::inferior): New ctor, factored out from ...
|
|
|
|
|
(add_inferior_silent): ... here. Allocate the inferior with a new
|
|
|
|
|
expression.
|
|
|
|
|
(delete_inferior): Call delete instead of free_inferior.
|
|
|
|
|
* inferior.h (gdb_environ, continuation): Forward declare.
|
|
|
|
|
(inferior): Now a class. Add in-class initialization to all
|
|
|
|
|
members. Make boolean fields bool, except 'detaching'.
|
|
|
|
|
(inferior::inferior): New explicit ctor.
|
|
|
|
|
(inferior::~inferior): New.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* inferior.c (init_inferior_list): Delete.
|
|
|
|
|
* inferior.h (init_inferior_list): Delete.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR threads/13217
|
|
|
|
|
* gdb.threads/threadapply.exp (thr_apply_detach): New procedure.
|
|
|
|
|
(top level): Call it twice, with different thread sets.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c: Include <algorithm>.
|
|
|
|
|
(thread_array_cleanup): Delete.
|
|
|
|
|
(scoped_inc_dec_ref): New class.
|
|
|
|
|
(live_threads_count): New function.
|
|
|
|
|
(set_thread_refcount): Delete.
|
|
|
|
|
(tp_array_compar_ascending): Now a bool.
|
|
|
|
|
(tp_array_compar): Convert to a std::sort comparison function.
|
|
|
|
|
(thread_apply_all_command): Use std::vector and scoped_inc_dec_ref
|
|
|
|
|
and live_threads_count.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* infrun.c (follow_fork_inferior): Also switch the current
|
|
|
|
|
inferior.
|
|
|
|
|
|
2017-04-13 17:15:34 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (watch_command_1): Save watchpoint-frame info
|
|
|
|
|
before calling create_internal_breakpoint.
|
|
|
|
|
|
fork-child.c: Avoid unnecessary heap-allocation / string copying
The previous change to fork-child.c converted the argv building from
an alloca-allocated array of non-owning arg pointers, to a std::vector
of owning pointers, which results in N string dups, with N being the
number of arguments in the vector, and then requires manually
releasing the pointers owned by the vector.
This patch makes the vector hold non-owning pointers, and avoids the
string dups, by doing one single string copy of the arguments upfront,
and replacing separators with NULL terminators in place, like we used
to. All the logic to do that is encapsulated in a new class.
With this, there's no need to remember to manually release the argv
elements with free_vector_argv either.
gdb/ChangeLog:
2017-04-13 Pedro Alves <palves@redhat.com>
* fork-child.c (execv_argv): New class.
(breakup_args): Refactored as ...
(execv_argv::init_for_no_shell): .. this method of execv_argv.
Copy arguments to storage and replace separators with NULL
terminators in place.
(escape_bang_in_quoted_argument): Adjust to return bool.
(execv_argv::execv_argv): New ctor.
(execv_argv::init_for_shell): New method, factored out from
fork_inferior. Don't strdup strings into the vector.
(fork_inferior): Eliminate "shell" local and use execv_argv. Use
Remove free_vector_argv call.
2017-04-13 12:46:07 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* fork-child.c (execv_argv): New class.
|
|
|
|
|
(breakup_args): Refactored as ...
|
|
|
|
|
(execv_argv::init_for_no_shell): .. this method of execv_argv.
|
|
|
|
|
Copy arguments to storage and replace separators with NULL
|
|
|
|
|
terminators in place.
|
|
|
|
|
(escape_bang_in_quoted_argument): Adjust to return bool.
|
|
|
|
|
(execv_argv::execv_argv): New ctor.
|
|
|
|
|
(execv_argv::init_for_shell): New method, factored out from
|
|
|
|
|
fork_inferior. Don't strdup strings into the vector.
|
|
|
|
|
(fork_inferior): Eliminate "shell" local and use execv_argv. Use
|
|
|
|
|
Remove free_vector_argv call.
|
|
|
|
|
|
2017-04-13 09:29:44 +02:00
|
|
|
|
2017-04-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* rx-tdep.c (rx_fpsw_type): Check tdep->rx_fpsw_type instead of
|
|
|
|
|
tdep->rx_psw_type.
|
|
|
|
|
|
2017-04-13 09:29:43 +02:00
|
|
|
|
2017-04-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* rl78-tdep.c (rl78_gdbarch_init): Use XCNEW instead of XNEW.
|
|
|
|
|
* rx-tdep.c (rx_gdbarch_init): Likewise.
|
|
|
|
|
|
2017-04-13 04:07:21 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.h (struct breakpoint): Reindent.
|
|
|
|
|
|
2017-04-13 03:12:53 +02:00
|
|
|
|
2017-04-13 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (bp_location): Rename to ...
|
|
|
|
|
(bp_locations): ... this. All references updated.
|
|
|
|
|
(bp_location_count): Rename to ...
|
|
|
|
|
(bp_locations_count): ... this. All references updated.
|
|
|
|
|
(bp_location_placed_address_before_address_max): Rename to ...
|
|
|
|
|
(bp_locations_placed_address_before_address_max): ... this. All
|
|
|
|
|
references updated.
|
|
|
|
|
(bp_location_shadow_len_after_address_max): Rename to ...
|
|
|
|
|
(bp_locations_shadow_len_after_address_max): ... this. All
|
|
|
|
|
references updated.
|
|
|
|
|
(bp_location_compare_addrs): Rename to ...
|
|
|
|
|
(bp_locations_compare_addrs): ... this. All references updated.
|
|
|
|
|
(bp_location_compare):Rename to ...
|
|
|
|
|
(bp_locations_compare): ... this. All references updated.
|
|
|
|
|
(bp_location_target_extensions_update): Rename to ...
|
|
|
|
|
(bp_locations_target_extensions_update): ... this. All references
|
|
|
|
|
updated.
|
|
|
|
|
|
2017-04-12 03:05:12 +02:00
|
|
|
|
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Add "common/gdb_termios.h".
|
|
|
|
|
* common/common.m4: Check headers 'termios.h', 'termio.h' and
|
|
|
|
|
'sgtty.h'.
|
|
|
|
|
* common/gdb_termios.h: New file, with parts of "terminal.h".
|
|
|
|
|
* inflow.c: Include "gdb_termios.h".
|
|
|
|
|
* ser-unix.c: Include "gdb_termios.h".
|
|
|
|
|
* terminal.h: Move terminal-related defines to
|
|
|
|
|
"common/gdb_termios.h".
|
|
|
|
|
|
2017-04-10 23:53:22 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* probe.c (parse_probes): Update.
|
|
|
|
|
* location.h (delete_event_location): Don't declare.
|
|
|
|
|
(event_location_deleter::operator()): Update.
|
|
|
|
|
* location.c (event_location_deleter::operator()): Rename from
|
|
|
|
|
delete_event_location.
|
|
|
|
|
* linespec.h (linespec_result) <location>: Change type to
|
|
|
|
|
event_location_up.
|
|
|
|
|
* linespec.c (canonicalize_linespec, event_location_to_sals)
|
|
|
|
|
(decode_objc): Update.
|
|
|
|
|
(linespec_result): Don't call delete_event_location.
|
|
|
|
|
* breakpoint.c (create_breakpoints_sal)
|
|
|
|
|
(bkpt_probe_create_sals_from_location)
|
|
|
|
|
(strace_marker_create_sals_from_location): Update.
|
|
|
|
|
|
2017-04-10 23:47:21 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* linespec.h (struct linespec_result): Add constructor and
|
|
|
|
|
destructor.
|
|
|
|
|
(init_linespec_result, destroy_linespec_result)
|
|
|
|
|
(make_cleanup_destroy_linespec_result): Don't declare.
|
|
|
|
|
* linespec.c (init_linespec_result): Remove.
|
|
|
|
|
(linespec_result::~linespec_result): Rename from
|
|
|
|
|
destroy_linespec_result. Update.
|
|
|
|
|
(cleanup_linespec_result, make_cleanup_destroy_linespec_result):
|
|
|
|
|
Remove.
|
|
|
|
|
* breakpoint.c (create_breakpoint, break_range_command)
|
|
|
|
|
(decode_location_default): Update.
|
|
|
|
|
* ax-gdb.c (agent_command_1): Update.
|
|
|
|
|
|
2017-04-10 23:41:25 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_download_tracepoint): Update.
|
|
|
|
|
* python/py-breakpoint.c (bppy_get_location): Update.
|
|
|
|
|
* guile/scm-breakpoint.c (bpscm_print_breakpoint_smob)
|
|
|
|
|
(gdbscm_breakpoint_location): Update.
|
|
|
|
|
* elfread.c (elf_gnu_ifunc_resolver_return_stop): Update.
|
|
|
|
|
* breakpoint.h (struct breakpoint) <location, location_range_end>:
|
|
|
|
|
Change type to event_location_up.
|
|
|
|
|
* breakpoint.c (create_overlay_event_breakpoint)
|
|
|
|
|
(create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint)
|
|
|
|
|
(breakpoint_event_location_empty_p, print_breakpoint_location)
|
|
|
|
|
(print_one_breakpoint_location, create_thread_event_breakpoint)
|
|
|
|
|
(init_breakpoint_sal, create_breakpoint)
|
|
|
|
|
(print_recreate_ranged_breakpoint, break_range_command)
|
|
|
|
|
(init_ada_exception_breakpoint, say_where): Update.
|
|
|
|
|
(base_breakpoint_dtor): Don't call delete_event_location.
|
|
|
|
|
(bkpt_print_recreate, tracepoint_print_recreate)
|
|
|
|
|
(dprintf_print_recreate, update_static_tracepoint)
|
|
|
|
|
(breakpoint_re_set_default): Update.
|
|
|
|
|
|
2017-04-08 00:05:42 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* compile/compile-loc2c.c (compute_stack_depth_worker): Change
|
|
|
|
|
type of "to_do". Update.
|
|
|
|
|
(compute_stack_depth): Use std::vector.
|
|
|
|
|
|
2017-04-08 00:01:10 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* printcmd.c (find_instruction_backward): Use std::vector.
|
|
|
|
|
|
2017-04-07 23:58:25 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.c (objfilep): Remove typedef.
|
|
|
|
|
(reread_symbols): Use a std::vector.
|
|
|
|
|
|
2017-04-07 23:37:25 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-main.c (exec_direction_forward): Remove.
|
|
|
|
|
(exec_reverse_continue, mi_execute_command): Use scoped_restore.
|
|
|
|
|
* guile/scm-ports.c (ioscm_with_output_to_port_worker): Use
|
|
|
|
|
scoped_restore.
|
|
|
|
|
* guile/guile.c (guile_repl_command, guile_command)
|
|
|
|
|
(gdbscm_execute_gdb_command): Use scoped_restore.
|
|
|
|
|
* go-exp.y (go_parse): Use scoped_restore.
|
|
|
|
|
* d-exp.y (d_parse): Use scoped_restore.
|
|
|
|
|
* cli/cli-decode.c (cmd_func): Use scoped_restore.
|
|
|
|
|
* c-exp.y (c_parse): Use scoped_restore.
|
|
|
|
|
|
2017-04-07 23:34:02 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-parse.h (struct mi_parse): Add constructor, destructor.
|
|
|
|
|
(mi_parse): Update return type.
|
|
|
|
|
(mi_parse_free): Remove.
|
|
|
|
|
* mi/mi-parse.c (mi_parse::mi_parse): New constructor.
|
|
|
|
|
(mi_parse::~mi_parse): Rename from mi_parse_free.
|
|
|
|
|
(mi_parse_cleanup): Remove.
|
|
|
|
|
(mi_parse): Return a unique_ptr. Use new.
|
|
|
|
|
* mi/mi-main.c (mi_execute_command): Update.
|
|
|
|
|
|
2017-04-07 07:26:14 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* location.c (explicit_location_lex_one): Return a
|
|
|
|
|
unique_xmalloc_ptr.
|
|
|
|
|
(string_to_explicit_location): Update. Remove cleanups.
|
|
|
|
|
|
2017-04-07 06:48:27 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* gnu-v3-abi.c (value_and_voffset_p): Remove typedef.
|
|
|
|
|
(compare_value_and_voffset): Change type. Update.
|
|
|
|
|
(compute_vtable_size): Change type of "offset_vec".
|
|
|
|
|
(gnuv3_print_vtable): Use std::vector. Remove cleanups.
|
|
|
|
|
(gnuv3_get_typeid): Remove extraneous declaration.
|
|
|
|
|
|
2017-04-07 05:07:00 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* charset.h (wchar_iterator): Fix comment.
|
|
|
|
|
|
2017-04-07 04:50:38 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* charset.c (iconv_wrapper): New class.
|
|
|
|
|
(cleanup_iconv): Remove.
|
|
|
|
|
(convert_between_encodings): Use it.
|
|
|
|
|
|
2017-04-07 04:27:10 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symfile.h (increment_reading_symtab): Update type.
|
|
|
|
|
* symfile.c (decrement_reading_symtab): Remove.
|
|
|
|
|
(increment_reading_symtab): Return a scoped_restore_tmpl<int>.
|
|
|
|
|
* psymtab.c (psymtab_to_symtab): Update.
|
|
|
|
|
* dwarf2read.c (dw2_instantiate_symtab): Update.
|
|
|
|
|
|
2017-04-07 04:09:42 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* jit.c (struct jit_reader): Declare separately. Add constructor
|
|
|
|
|
and destructor. Change type of "handle".
|
|
|
|
|
(loaded_jit_reader): Define separately.
|
|
|
|
|
(jit_reader_load): Update. New "new".
|
|
|
|
|
(jit_reader_unload_command): Use "delete".
|
|
|
|
|
* gdb-dlfcn.h (struct dlclose_deleter): New.
|
|
|
|
|
(gdb_dlhandle_up): New typedef.
|
|
|
|
|
(gdb_dlopen, gdb_dlsym): Update types.
|
|
|
|
|
(gdb_dlclose): Remove.
|
|
|
|
|
* gdb-dlfcn.c (gdb_dlopen): Return a gdb_dlhandle_up.
|
|
|
|
|
(gdb_dlsym): Change type of "handle".
|
|
|
|
|
(make_cleanup_dlclose): Remove.
|
|
|
|
|
(dlclose_deleter::operator()): Rename from gdb_dlclose.
|
|
|
|
|
* compile/compile-c-support.c (load_libcc): Update.
|
|
|
|
|
|
2017-04-07 00:38:56 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* symtab.h (find_pcs_for_symtab_line): Change return type.
|
|
|
|
|
* symtab.c (find_pcs_for_symtab_line): Change return type.
|
|
|
|
|
* python/py-linetable.c (build_line_table_tuple_from_pcs): Change
|
|
|
|
|
type of "vec". Update.
|
|
|
|
|
(ltpy_get_pcs_for_line): Update.
|
|
|
|
|
* linespec.c (decode_digits_ordinary): Update.
|
|
|
|
|
|
Introduce command_line_up
This introduces command_line_up, a unique_ptr for command_line
objects, and changes many places to use it. This removes a number of
cleanups.
Command lines are funny in that sometimes they are reference counted.
Once there is more C++-ification of some of the users, perhaps all of
these can be changed to use shared_ptr instead.
gdb/ChangeLog
2017-04-12 Tom Tromey <tom@tromey.com>
* tracepoint.c (actions_command): Update.
* python/python.c (python_command, python_interactive_command):
Update.
* mi/mi-cmd-break.c (mi_cmd_break_commands): Update.
* guile/guile.c (guile_command): Update.
* defs.h (read_command_lines, read_command_lines_1): Return
command_line_up.
(command_lines_deleter): New struct.
(command_line_up): New typedef.
* compile/compile.c (compile_code_command)
(compile_print_command): Update.
* cli/cli-script.h (get_command_line, copy_command_lines): Return
command_line_up.
(make_cleanup_free_command_lines): Remove.
* cli/cli-script.c (get_command_line, read_command_lines_1)
(copy_command_lines): Return command_line_up.
(while_command, if_command, read_command_lines, define_command)
(document_command): Update.
(do_free_command_lines_cleanup, make_cleanup_free_command_lines):
Remove.
* breakpoint.h (breakpoint_set_commands): Change type of
"commands".
* breakpoint.c (breakpoint_set_commands): Change type of
"commands". Update.
(do_map_commands_command, update_dprintf_command_list)
(create_tracepoint_from_upload): Update.
2017-04-06 05:14:09 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (actions_command): Update.
|
|
|
|
|
* python/python.c (python_command, python_interactive_command):
|
|
|
|
|
Update.
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_commands): Update.
|
|
|
|
|
* guile/guile.c (guile_command): Update.
|
|
|
|
|
* defs.h (read_command_lines, read_command_lines_1): Return
|
|
|
|
|
command_line_up.
|
|
|
|
|
(command_lines_deleter): New struct.
|
|
|
|
|
(command_line_up): New typedef.
|
|
|
|
|
* compile/compile.c (compile_code_command)
|
|
|
|
|
(compile_print_command): Update.
|
|
|
|
|
* cli/cli-script.h (get_command_line, copy_command_lines): Return
|
|
|
|
|
command_line_up.
|
|
|
|
|
(make_cleanup_free_command_lines): Remove.
|
|
|
|
|
* cli/cli-script.c (get_command_line, read_command_lines_1)
|
|
|
|
|
(copy_command_lines): Return command_line_up.
|
|
|
|
|
(while_command, if_command, read_command_lines, define_command)
|
|
|
|
|
(document_command): Update.
|
|
|
|
|
(do_free_command_lines_cleanup, make_cleanup_free_command_lines):
|
|
|
|
|
Remove.
|
|
|
|
|
* breakpoint.h (breakpoint_set_commands): Change type of
|
|
|
|
|
"commands".
|
|
|
|
|
* breakpoint.c (breakpoint_set_commands): Change type of
|
|
|
|
|
"commands". Update.
|
|
|
|
|
(do_map_commands_command, update_dprintf_command_list)
|
|
|
|
|
(create_tracepoint_from_upload): Update.
|
|
|
|
|
|
Introduce event_location_up
This removes make_cleanup_delete_event_location and instead changes
the various location functions to return an event_location_up, a new
unique_ptr typedef.
This is largely straightforward, but be sure to examine the
init_breakpoint_sal change. I believe the code I deleted there is
dead, because "location != NULL" can never be true in that branch; but
you should double-check.
gdb/ChangeLog
2017-04-12 Tom Tromey <tom@tromey.com>
* tracepoint.c (scope_info): Update.
* spu-tdep.c (spu_catch_start): Update.
* python/python.c (gdbpy_decode_line): Update.
* python/py-finishbreakpoint.c (bpfinishpy_init): Update.
* python/py-breakpoint.c (bppy_init): Update.
* probe.c (parse_probes): Update.
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Update.
* location.h (event_location_deleter): New struct.
(event_location_up): New typedef.
(new_linespec_location, new_address_location, new_probe_location)
(new_explicit_location, copy_event_location)
(string_to_event_location, string_to_event_location_basic)
(string_to_explicit_location): Update return type.
(make_cleanup_delete_event_location): Remove.
* location.c (new_linespec_location, new_address_location)
(new_probe_location, new_explicit_location, copy_event_location):
Return event_location_up.
(delete_event_location_cleanup)
(make_cleanup_delete_event_location): Remove.
(string_to_explicit_location, string_to_event_location_basic)
(string_to_event_location): Return event_location_up.
* linespec.c (canonicalize_linespec, event_location_to_sals)
(decode_line_with_current_source)
(decode_line_with_last_displayed, decode_objc): Update.
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
* completer.c (location_completer): Update.
* cli/cli-cmds.c (edit_command, list_command): Update.
* breakpoint.c (create_overlay_event_breakpoint)
(create_longjmp_master_breakpoint)
(create_std_terminate_master_breakpoint)
(create_exception_master_breakpoint)
(create_thread_event_breakpoint): Update.
(init_breakpoint_sal): Update. Remove some dead code.
(create_breakpoint_sal): Change type of "location". Update.
(create_breakpoints_sal, create_breakpoint, break_command_1)
(dprintf_command, break_range_command, until_break_command)
(init_ada_exception_breakpoint)
(strace_marker_create_sals_from_location)
(update_static_tracepoint, trace_command, ftrace_command)
(strace_command, create_tracepoint_from_upload): Update.
* break-catch-throw.c (re_set_exception_catchpoint): Update.
* ax-gdb.c (agent_command_1): Update.
2017-04-06 04:44:01 +02:00
|
|
|
|
2017-04-12 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* tracepoint.c (scope_info): Update.
|
|
|
|
|
* spu-tdep.c (spu_catch_start): Update.
|
|
|
|
|
* python/python.c (gdbpy_decode_line): Update.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Update.
|
|
|
|
|
* python/py-breakpoint.c (bppy_init): Update.
|
|
|
|
|
* probe.c (parse_probes): Update.
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Update.
|
|
|
|
|
* location.h (event_location_deleter): New struct.
|
|
|
|
|
(event_location_up): New typedef.
|
|
|
|
|
(new_linespec_location, new_address_location, new_probe_location)
|
|
|
|
|
(new_explicit_location, copy_event_location)
|
|
|
|
|
(string_to_event_location, string_to_event_location_basic)
|
|
|
|
|
(string_to_explicit_location): Update return type.
|
|
|
|
|
(make_cleanup_delete_event_location): Remove.
|
|
|
|
|
* location.c (new_linespec_location, new_address_location)
|
|
|
|
|
(new_probe_location, new_explicit_location, copy_event_location):
|
|
|
|
|
Return event_location_up.
|
|
|
|
|
(delete_event_location_cleanup)
|
|
|
|
|
(make_cleanup_delete_event_location): Remove.
|
|
|
|
|
(string_to_explicit_location, string_to_event_location_basic)
|
|
|
|
|
(string_to_event_location): Return event_location_up.
|
|
|
|
|
* linespec.c (canonicalize_linespec, event_location_to_sals)
|
|
|
|
|
(decode_line_with_current_source)
|
|
|
|
|
(decode_line_with_last_displayed, decode_objc): Update.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
|
|
|
|
|
* completer.c (location_completer): Update.
|
|
|
|
|
* cli/cli-cmds.c (edit_command, list_command): Update.
|
|
|
|
|
* breakpoint.c (create_overlay_event_breakpoint)
|
|
|
|
|
(create_longjmp_master_breakpoint)
|
|
|
|
|
(create_std_terminate_master_breakpoint)
|
|
|
|
|
(create_exception_master_breakpoint)
|
|
|
|
|
(create_thread_event_breakpoint): Update.
|
|
|
|
|
(init_breakpoint_sal): Update. Remove some dead code.
|
|
|
|
|
(create_breakpoint_sal): Change type of "location". Update.
|
|
|
|
|
(create_breakpoints_sal, create_breakpoint, break_command_1)
|
|
|
|
|
(dprintf_command, break_range_command, until_break_command)
|
|
|
|
|
(init_ada_exception_breakpoint)
|
|
|
|
|
(strace_marker_create_sals_from_location)
|
|
|
|
|
(update_static_tracepoint, trace_command, ftrace_command)
|
|
|
|
|
(strace_command, create_tracepoint_from_upload): Update.
|
|
|
|
|
* break-catch-throw.c (re_set_exception_catchpoint): Update.
|
|
|
|
|
* ax-gdb.c (agent_command_1): Update.
|
|
|
|
|
|
2017-04-12 17:00:04 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Add i386-go32-tdep.o.
|
|
|
|
|
* configure.tgt: Handle i[34567]86-*-go32* and
|
|
|
|
|
i[34567]86-*-msdosdjgpp*.
|
|
|
|
|
* i386-tdep.c (i386_svr4_reg_to_regnum):
|
|
|
|
|
Make extern.
|
|
|
|
|
(i386_go32_init_abi, i386_coff_osabi_sniffer): Moved to
|
|
|
|
|
i386-go32-tdep.c.
|
|
|
|
|
(_initialize_i386_tdep): DJGPP bits moved to i386-go32-tdep.c.
|
|
|
|
|
* i386-go32-tdep.c: New file.
|
|
|
|
|
* i386-tdep.h (tdesc_i386_mmx, i386_svr4_reg_to_regnum): New
|
|
|
|
|
declarations.
|
|
|
|
|
|
2017-04-12 16:46:13 +02:00
|
|
|
|
2017-04-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* aix-thread.c (pd_status2str): Change return type to const char *.
|
|
|
|
|
|
2017-03-31 14:41:45 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_elf_init_abi, i386_go32_init_abi): Remove
|
|
|
|
|
calls to set_gdbarch_gnu_triplet_regexp.
|
|
|
|
|
|
Teach GDB that wchar_t is a built-in type in C++ mode
GDB is currently not aware that wchar_t is a built-in type in C++
mode. This is usually not a problem because the debug info describes
the type, so when you have a program loaded, you don't notice this.
However, if you try expressions involving wchar_t before a program is
loaded, gdb errors out:
(gdb) p (wchar_t)-1
No symbol table is loaded. Use the "file" command.
(gdb) p L"hello"
No type named wchar_t.
(gdb) ptype L"hello"
No type named wchar_t.
This commit teaches gdb about the type. After:
(gdb) p (wchar_t)-1
$1 = -1 L'\xffffffff'
(gdb) p L"hello"
$2 = L"hello"
(gdb) ptype L"hello"
type = wchar_t [6]
Unlike char16_t/char32_t, unfortunately, the underlying type of
wchar_t is implementation dependent, both size and signness. So this
requires adding a couple new gdbarch hooks.
I grepped the GCC code base for WCHAR_TYPE and WCHAR_TYPE_SIZE, and it
seems to me that the majority of the ABIs have a 4-byte signed
wchar_t, so that's what I made the default for GDB too. And then I
looked for which ports have a 16-bit and/or unsigned wchar_t, and made
GDB follow suit.
gdb/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR gdb/21323
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_wchar_t>:
New enum value.
(cplus_language_arch_info): Register cplus_primitive_type_wchar_t.
* gdbtypes.h (struct builtin_type) <builtin_wchar>: New field.
* gdbtypes.c (gdbtypes_post_init): Create the "wchar_t" type.
* gdbarch.sh (wchar_bit, wchar_signed): New per-arch values.
* gdbarch.h, gdbarch.c: Regenerate.
* aarch64-tdep.c (aarch64_gdbarch_init): Override
gdbarch_wchar_bit and gdbarch_wchar_signed.
* alpha-tdep.c (alpha_gdbarch_init): Likewise.
* arm-tdep.c (arm_gdbarch_init): Likewise.
* avr-tdep.c (avr_gdbarch_init): Likewise.
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
* i386-nto-tdep.c (i386nto_init_abi): Likewise.
* i386-tdep.c (i386_go32_init_abi): Likewise.
* m32r-tdep.c (m32r_gdbarch_init): Likewise.
* moxie-tdep.c (moxie_gdbarch_init): Likewise.
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
* rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise.
* sh-tdep.c (sh_gdbarch_init): Likewise.
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
* sparc64-tdep.c (sparc64_init_abi): Likewise.
* windows-tdep.c (windows_init_abi): Likewise.
* xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
gdb/testsuite/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR gdb/21323
* gdb.cp/wide_char_types.c: Include <wchar.h>.
(wchar): New global.
* gdb.cp/wide_char_types.exp (wide_char_types_program)
(do_test_wide_char, wide_char_types_no_program, top level): Add
wchar_t testing.
2017-04-12 15:00:49 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21323
|
|
|
|
|
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_wchar_t>:
|
|
|
|
|
New enum value.
|
|
|
|
|
(cplus_language_arch_info): Register cplus_primitive_type_wchar_t.
|
|
|
|
|
* gdbtypes.h (struct builtin_type) <builtin_wchar>: New field.
|
|
|
|
|
* gdbtypes.c (gdbtypes_post_init): Create the "wchar_t" type.
|
|
|
|
|
* gdbarch.sh (wchar_bit, wchar_signed): New per-arch values.
|
|
|
|
|
* gdbarch.h, gdbarch.c: Regenerate.
|
|
|
|
|
* aarch64-tdep.c (aarch64_gdbarch_init): Override
|
|
|
|
|
gdbarch_wchar_bit and gdbarch_wchar_signed.
|
|
|
|
|
* alpha-tdep.c (alpha_gdbarch_init): Likewise.
|
|
|
|
|
* arm-tdep.c (arm_gdbarch_init): Likewise.
|
|
|
|
|
* avr-tdep.c (avr_gdbarch_init): Likewise.
|
|
|
|
|
* h8300-tdep.c (h8300_gdbarch_init): Likewise.
|
|
|
|
|
* i386-nto-tdep.c (i386nto_init_abi): Likewise.
|
|
|
|
|
* i386-tdep.c (i386_go32_init_abi): Likewise.
|
|
|
|
|
* m32r-tdep.c (m32r_gdbarch_init): Likewise.
|
|
|
|
|
* moxie-tdep.c (moxie_gdbarch_init): Likewise.
|
|
|
|
|
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
|
|
|
|
|
* rs6000-aix-tdep.c (rs6000_aix_init_osabi): Likewise.
|
|
|
|
|
* sh-tdep.c (sh_gdbarch_init): Likewise.
|
|
|
|
|
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
|
|
|
|
|
* sparc64-tdep.c (sparc64_init_abi): Likewise.
|
|
|
|
|
* windows-tdep.c (windows_init_abi): Likewise.
|
|
|
|
|
* xstormy16-tdep.c (xstormy16_gdbarch_init): Likewise.
|
|
|
|
|
|
Fix PR c++/21323: GDB thinks char16_t and char32_t are signed in C++
While the C++ standard says that char16_t and char32_t are unsigned types:
Types char16_t and char32_t denote distinct types with the same size,
signedness, and alignment as uint_least16_t and uint_least32_t,
respectively, in <cstdint>, called the underlying types.
... gdb treats them as signed currently:
(gdb) p (char16_t)-1
$1 = -1 u'\xffff'
There are actually two places in gdb that hardcode these types:
- gdbtypes.c:gdbtypes_post_init, when creating the built-in types,
seemingly used by the "x /s" command (judging from commit 9a22f0d0).
- dwarf2read.c, when reading base types with DW_ATE_UTF encoding
(which is what is used for these types, when compiling for C++11 and
up). Despite the comment, the type created does end up used.
Both places need fixing. But since I couldn't tell why dwarf2read.c
needs to create a new type, I've made it use the per-arch built-in
types instead, so that the types are only created once per arch
instead of once per objfile. That seems to work fine.
While writting the test, I noticed that the C++ language parser isn't
actually aware of these built-in types, so if you try to use them
without a program that uses them, you get:
(gdb) set language c++
(gdb) ptype char16_t
No symbol table is loaded. Use the "file" command.
(gdb) ptype u"hello"
No type named char16_t.
(gdb) p u"hello"
No type named char16_t.
That's fixed by simply adding a couple entries to C++'s built-in types
array in c-lang.c. With that, we get the expected:
(gdb) ptype char16_t
type = char16_t
(gdb) ptype u"hello"
type = char16_t [6]
(gdb) p u"hello"
$1 = u"hello"
gdb/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR c++/21323
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_char16_t,
cplus_primitive_type_char32_t>: New enum values.
(cplus_language_arch_info): Register cplus_primitive_type_char16_t
and cplus_primitive_type_char32_t.
* dwarf2read.c (read_base_type) <DW_ATE_UTF>: If bit size is 16 or
32, use the archtecture's built-in type for char16_t and char32_t,
respectively. Otherwise, fallback to init_integer_type as before,
but make the type unsigned, and issue a complaint.
* gdbtypes.c (gdbtypes_post_init): Make char16_t and char32_t unsigned.
gdb/testsuite/ChangeLog:
2017-04-12 Pedro Alves <palves@redhat.com>
PR c++/21323
* gdb.cp/wide_char_types.c: New file.
* gdb.cp/wide_char_types.exp: New file.
2017-04-12 15:00:49 +02:00
|
|
|
|
2017-04-12 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR c++/21323
|
|
|
|
|
* c-lang.c (cplus_primitive_types) <cplus_primitive_type_char16_t,
|
|
|
|
|
cplus_primitive_type_char32_t>: New enum values.
|
|
|
|
|
(cplus_language_arch_info): Register cplus_primitive_type_char16_t
|
|
|
|
|
and cplus_primitive_type_char32_t.
|
|
|
|
|
* dwarf2read.c (read_base_type) <DW_ATE_UTF>: If bit size is 16 or
|
|
|
|
|
32, use the archtecture's built-in type for char16_t and char32_t,
|
|
|
|
|
respectively. Otherwise, fallback to init_integer_type as before,
|
|
|
|
|
but make the type unsigned, and issue a complaint.
|
|
|
|
|
* gdbtypes.c (gdbtypes_post_init): Make char16_t and char32_t unsigned.
|
|
|
|
|
|
2017-04-12 10:19:55 +02:00
|
|
|
|
2017-04-12 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
2017-04-12 10:51:04 +02:00
|
|
|
|
* m32r-tdep.c (M32R_ARG_REGISTER_SIZE): Added.
|
2017-04-12 10:19:55 +02:00
|
|
|
|
(m32r_push_dummy_call): Use M32R_ARG_REGISTER_SIZE.
|
|
|
|
|
|
2017-04-12 07:16:50 +02:00
|
|
|
|
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (windows_create_inferior): Declare 'toexec' as
|
|
|
|
|
'const char *'.
|
|
|
|
|
|
C++-fy and prepare for sharing fork_inferior
As a preparation for the next patch, which will move fork_inferior
from GDB to common/ (and therefore share it with gdbserver), it is
interesting to convert a few functions to C++.
This patch touches functions related to parsing command-line arguments
to the inferior (see gdb/fork-child.c:breakup_args), the way the
arguments are stored on fork_inferior (using std::vector instead of
char **), and the code responsible for dealing with argv also on
gdbserver.
I've taken this opportunity and decided to constify a few arguments to
fork_inferior/create_inferior as well, in order to make the code
cleaner. And now, on gdbserver, we're using xstrdup everywhere and
aren't checking for memory allocation failures anymore, as requested
by Pedro:
<https://sourceware.org/ml/gdb-patches/2017-03/msg00191.html>
Message-Id: <025ebdb9-90d9-d54a-c055-57ed2406b812@redhat.com>
Pedro Alves wrote:
> On the "== NULL" check: IIUC, the old NULL check was there to
> handle strdup returning NULL due to out-of-memory.
> See NULL checks and comments further above in this function.
> Now that you're using a std::vector, that doesn't work or make
> sense any longer, since if push_back fails to allocate space for
> its internal buffer (with operator new), our operator new replacement
> (common/new-op.c) calls malloc_failure, which aborts gdbserver.
>
> Not sure it makes sense to handle out-of-memory specially in
> the gdb/rsp-facing functions nowadays (maybe git blame/log/patch
> submission for that code shows some guidelines). Maybe (or, probably)
> it's OK to stop caring about it, but then we should consistently remove
> left over code, by using xstrdup instead and remove the NULL checks.
IMO this refactoring was very good to increase the readability of the
code as well, because some parts of the argument handling were
unnecessarily confusing before.
gdb/ChangeLog:
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
* common/common-utils.c (free_vector_argv): New function.
* common/common-utils.h: Include <vector>.
(free_vector_argv): New prototype.
* darwin-nat.c (darwin_create_inferior): Rewrite function
prototype in order to constify "exec_file" and accept a
"std::string" for "allargs".
* fork-child.c: Include <vector>.
(breakup_args): Rewrite function, using C++.
(fork_inferior): Rewrite function header, constify "exec_file_arg"
and accept "std::string" for "allargs". Update the code to
calculate "argv" based on "allargs". Update calls to "exec_fun"
and "execvp".
* gnu-nat.c (gnu_create_inferior): Rewrite function prototype in
order to constify "exec_file" and accept a "std::string" for
"allargs".
* go32-nat.c (go32_create_inferior): Likewise.
* inf-ptrace.c (inf_ptrace_create_inferior): Likewise.
* infcmd.c (run_command_1): Constify "exec_file". Use
"std::string" for inferior arguments.
* inferior.h (fork_inferior): Update prototype.
* linux-nat.c (linux_nat_create_inferior): Rewrite function
prototype in order to constify "exec_file" and accept a
"std::string" for "allargs".
* nto-procfs.c (procfs_create_inferior): Likewise.
* procfs.c (procfs_create_inferior): Likewise.
* remote-sim.c (gdbsim_create_inferior): Likewise.
* remote.c (extended_remote_run): Update code to accept
"std::string" as argument.
(extended_remote_create_inferior): Rewrite function prototype in
order to constify "exec_file" and accept a "std::string" for
"allargs".
* rs6000-nat.c (super_create_inferior): Likewise.
(rs6000_create_inferior): Likewise.
* target.h (struct target_ops) <to_create_inferior>: Likewise.
* windows-nat.c (windows_create_inferior): Likewise.
gdb/gdbserver/ChangeLog:
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
* server.c: Include <vector>.
<program_argv, wrapper_argv>: Convert to std::vector.
(start_inferior): Rewrite function to use C++.
(handle_v_run): Likewise. Update code that calculates the argv
based on the vRun packet; use C++.
(captured_main): Likewise.
2017-03-23 02:54:49 +01:00
|
|
|
|
2017-04-12 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/common-utils.c (free_vector_argv): New function.
|
|
|
|
|
* common/common-utils.h: Include <vector>.
|
|
|
|
|
(free_vector_argv): New prototype.
|
|
|
|
|
* darwin-nat.c (darwin_create_inferior): Rewrite function
|
|
|
|
|
prototype in order to constify "exec_file" and accept a
|
|
|
|
|
"std::string" for "allargs".
|
|
|
|
|
* fork-child.c: Include <vector>.
|
|
|
|
|
(breakup_args): Rewrite function, using C++.
|
|
|
|
|
(fork_inferior): Rewrite function header, constify "exec_file_arg"
|
|
|
|
|
and accept "std::string" for "allargs". Update the code to
|
|
|
|
|
calculate "argv" based on "allargs". Update calls to "exec_fun"
|
|
|
|
|
and "execvp".
|
|
|
|
|
* gnu-nat.c (gnu_create_inferior): Rewrite function prototype in
|
|
|
|
|
order to constify "exec_file" and accept a "std::string" for
|
|
|
|
|
"allargs".
|
|
|
|
|
* go32-nat.c (go32_create_inferior): Likewise.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_create_inferior): Likewise.
|
|
|
|
|
* infcmd.c (run_command_1): Constify "exec_file". Use
|
|
|
|
|
"std::string" for inferior arguments.
|
|
|
|
|
* inferior.h (fork_inferior): Update prototype.
|
|
|
|
|
* linux-nat.c (linux_nat_create_inferior): Rewrite function
|
|
|
|
|
prototype in order to constify "exec_file" and accept a
|
|
|
|
|
"std::string" for "allargs".
|
|
|
|
|
* nto-procfs.c (procfs_create_inferior): Likewise.
|
|
|
|
|
* procfs.c (procfs_create_inferior): Likewise.
|
|
|
|
|
* remote-sim.c (gdbsim_create_inferior): Likewise.
|
|
|
|
|
* remote.c (extended_remote_run): Update code to accept
|
|
|
|
|
"std::string" as argument.
|
|
|
|
|
(extended_remote_create_inferior): Rewrite function prototype in
|
|
|
|
|
order to constify "exec_file" and accept a "std::string" for
|
|
|
|
|
"allargs".
|
|
|
|
|
* rs6000-nat.c (super_create_inferior): Likewise.
|
|
|
|
|
(rs6000_create_inferior): Likewise.
|
|
|
|
|
* target.h (struct target_ops) <to_create_inferior>: Likewise.
|
|
|
|
|
* windows-nat.c (windows_create_inferior): Likewise.
|
|
|
|
|
|
2017-04-11 14:57:52 +02:00
|
|
|
|
2017-04-11 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c: Fix whitespace throughout.
|
|
|
|
|
|
2017-04-11 15:28:51 +02:00
|
|
|
|
2017-04-11 Philipp Rudo <prudo@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_detach): Remove delete_lwp call.
|
|
|
|
|
|
2017-04-11 14:51:58 +02:00
|
|
|
|
2017-04-11 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (arm_store_return_value): Use FP_REGISTER_SIZE
|
|
|
|
|
|
2017-04-10 18:43:44 +02:00
|
|
|
|
2017-04-10 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21364
|
|
|
|
|
* osdata.c (info_osdata): Check if 'type' is an empty string
|
|
|
|
|
instead of NULL.
|
|
|
|
|
|
thread.c: ptid_equal -> operator==
gdb/ChangeLog:
2017-04-10 Pedro Alves <palves@redhat.com>
* thread.c (add_thread_silent, delete_thread_1, find_thread_ptid)
(ptid_to_global_thread_id, in_thread_list)
(do_captured_list_thread_ids, set_resumed, set_running)
(set_executing, set_stop_requested, finish_thread_state)
(validate_registers_access, can_access_registers_ptid)
(print_thread_info_1, switch_to_thread)
(do_restore_current_thread_cleanup)
(make_cleanup_restore_current_thread, thread_command)
(thread_name_command): Use operator== instead of ptid_equal.
2017-04-10 16:54:57 +02:00
|
|
|
|
2017-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (add_thread_silent, delete_thread_1, find_thread_ptid)
|
|
|
|
|
(ptid_to_global_thread_id, in_thread_list)
|
|
|
|
|
(do_captured_list_thread_ids, set_resumed, set_running)
|
|
|
|
|
(set_executing, set_stop_requested, finish_thread_state)
|
|
|
|
|
(validate_registers_access, can_access_registers_ptid)
|
|
|
|
|
(print_thread_info_1, switch_to_thread)
|
|
|
|
|
(do_restore_current_thread_cleanup)
|
|
|
|
|
(make_cleanup_restore_current_thread, thread_command)
|
|
|
|
|
(thread_name_command): Use operator== instead of ptid_equal.
|
|
|
|
|
|
2017-04-10 16:18:49 +02:00
|
|
|
|
2017-04-10 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* thread.c (struct current_thread_cleanup) <next>: Delete field.
|
|
|
|
|
(current_thread_cleanup_chain): Delete.
|
|
|
|
|
(restore_current_thread_cleanup_dtor)
|
|
|
|
|
(make_cleanup_restore_current_thread): Remove references to
|
|
|
|
|
current_thread_cleanup_chain.
|
|
|
|
|
|
2017-04-10 16:01:53 +02:00
|
|
|
|
2017-04-10 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* msp430-tdep.c (msp430_pseudo_register_read): Never return
|
|
|
|
|
REG_UNKNOWN.
|
|
|
|
|
|
Don't delete thread_info if refcount isn't zero
I build GDB with asan, and run test case hook-stop.exp, and threadapply.exp,
I got the following asan error,
=================================================================^M
^[[1m^[[31m==2291==ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000999c4 at pc 0x000000826022 bp 0x7ffd28a8ff70 sp 0x7ffd28a8ff60^M
^[[1m^[[0m^[[1m^[[34mREAD of size 4 at 0x6160000999c4 thread T0^[[1m^[[0m^M
#0 0x826021 in release_stop_context_cleanup ../../binutils-gdb/gdb/infrun.c:8203^M
#1 0x72798a in do_my_cleanups ../../binutils-gdb/gdb/common/cleanups.c:154^M
#2 0x727a32 in do_cleanups(cleanup*) ../../binutils-gdb/gdb/common/cleanups.c:176^M
#3 0x826895 in normal_stop() ../../binutils-gdb/gdb/infrun.c:8381^M
#4 0x815208 in fetch_inferior_event(void*) ../../binutils-gdb/gdb/infrun.c:4011^M
#5 0x868aca in inferior_event_handler(inferior_event_type, void*) ../../binutils-gdb/gdb/inf-loop.c:44^M
....
^[[1m^[[32m0x6160000999c4 is located 68 bytes inside of 568-byte region [0x616000099980,0x616000099bb8)^M
^[[1m^[[0m^[[1m^[[35mfreed by thread T0 here:^[[1m^[[0m^M
#0 0x7fb0bc1312ca in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x982ca)^M
#1 0xb8c62f in xfree(void*) ../../binutils-gdb/gdb/common/common-utils.c:100^M
#2 0x83df67 in free_thread ../../binutils-gdb/gdb/thread.c:207^M
#3 0x83dfd2 in init_thread_list() ../../binutils-gdb/gdb/thread.c:223^M
#4 0x805494 in kill_command ../../binutils-gdb/gdb/infcmd.c:2595^M
....
Detaching from program: /home/yao.qi/SourceCode/gnu/build-with-asan/gdb/testsuite/outputs/gdb.threads/threadapply/threadapply, process 2399^M
=================================================================^M
^[[1m^[[31m==2387==ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000a98c0 at pc 0x00000083fd28 bp 0x7ffd401c3110 sp 0x7ffd401c3100^M
^[[1m^[[0m^[[1m^[[34mREAD of size 4 at 0x6160000a98c0 thread T0^[[1m^[[0m^M
#0 0x83fd27 in thread_alive ../../binutils-gdb/gdb/thread.c:741^M
#1 0x844277 in thread_apply_all_command ../../binutils-gdb/gdb/thread.c:1804^M
....
^M
^[[1m^[[32m0x6160000a98c0 is located 64 bytes inside of 568-byte region [0x6160000a9880,0x6160000a9ab8)^M
^[[1m^[[0m^[[1m^[[35mfreed by thread T0 here:^[[1m^[[0m^M
#0 0x7f59a7e322ca in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.2+0x982ca)^M
#1 0xb8c62f in xfree(void*) ../../binutils-gdb/gdb/common/common-utils.c:100^M
#2 0x83df67 in free_thread ../../binutils-gdb/gdb/thread.c:207^M
#3 0x83dfd2 in init_thread_list() ../../binutils-gdb/gdb/thread.c:223^M
This patch fixes the issue by deleting thread_info object if it is
deletable, otherwise, mark it as exited (by set_thread_exited).
Function set_thread_exited is shared from delete_thread_1. This patch
also moves field "refcount" to private and methods incref and
decref. Additionally, we stop using "ptid_t" in
"struct current_thread_cleanup" to reference threads, instead we use
"thread_info" directly. Due to this change, we don't need
restore_current_thread_ptid_changed anymore.
gdb:
2017-04-10 Yao Qi <yao.qi@linaro.org>
PR gdb/19942
* gdbthread.h (thread_info::deletable): New method.
(thread_info::incref): New method.
(thread_info::decref): New method.
(thread_info::refcount): Move it to private.
* infrun.c (save_stop_context): Call inc_refcount.
(release_stop_context_cleanup): Likewise.
* thread.c (set_thread_exited): New function.
(init_thread_list): Delete "tp" only it is deletable, otherwise
call set_thread_exited.
(delete_thread_1): Call set_thread_exited.
(current_thread_cleanup) <inferior_pid>: Remove.
<thread>: New field.
(restore_current_thread_ptid_changed): Removed.
(do_restore_current_thread_cleanup): Adjust.
(restore_current_thread_cleanup_dtor): Don't call
find_thread_ptid.
(set_thread_refcount): Use dec_refcount.
(make_cleanup_restore_current_thread): Adjust.
(thread_apply_all_command): Call inc_refcount.
(_initialize_thread): Don't call
observer_attach_thread_ptid_changed.
2017-04-10 15:39:41 +02:00
|
|
|
|
2017-04-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/19942
|
|
|
|
|
* gdbthread.h (thread_info::deletable): New method.
|
|
|
|
|
(thread_info::incref): New method.
|
|
|
|
|
(thread_info::decref): New method.
|
|
|
|
|
(thread_info::refcount): Move it to private.
|
|
|
|
|
* infrun.c (save_stop_context): Call inc_refcount.
|
|
|
|
|
(release_stop_context_cleanup): Likewise.
|
|
|
|
|
* thread.c (set_thread_exited): New function.
|
|
|
|
|
(init_thread_list): Delete "tp" only it is deletable, otherwise
|
|
|
|
|
call set_thread_exited.
|
|
|
|
|
(delete_thread_1): Call set_thread_exited.
|
|
|
|
|
(current_thread_cleanup) <inferior_pid>: Remove.
|
|
|
|
|
<thread>: New field.
|
|
|
|
|
(restore_current_thread_ptid_changed): Removed.
|
|
|
|
|
(do_restore_current_thread_cleanup): Adjust.
|
|
|
|
|
(restore_current_thread_cleanup_dtor): Don't call
|
|
|
|
|
find_thread_ptid.
|
|
|
|
|
(set_thread_refcount): Use dec_refcount.
|
|
|
|
|
(make_cleanup_restore_current_thread): Adjust.
|
|
|
|
|
(thread_apply_all_command): Call inc_refcount.
|
|
|
|
|
(_initialize_thread): Don't call
|
|
|
|
|
observer_attach_thread_ptid_changed.
|
|
|
|
|
|
2017-04-10 15:39:41 +02:00
|
|
|
|
2017-04-10 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* thread.c (delete_thread_1): Hoist code on marking thread as
|
|
|
|
|
exited.
|
|
|
|
|
|
2017-04-10 05:14:36 +02:00
|
|
|
|
2017-04-09 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (windows_detach): Initialize ptid with
|
|
|
|
|
minus_one_ptid.
|
|
|
|
|
|
2017-04-07 16:27:48 +02:00
|
|
|
|
2017-04-07 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* unittests/ptid-selftests.c: Fix erroneous assert messages.
|
|
|
|
|
|
2017-04-07 10:31:37 +02:00
|
|
|
|
2017-04-07 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* bfin-tdep.c (BFIN_MAX_REGISTER_SIZE): Add.
|
|
|
|
|
(bfin_pseudo_register_read): Use BFIN_MAX_REGISTER_SIZE.
|
|
|
|
|
(bfin_pseudo_register_write): Likewise
|
|
|
|
|
|
Class-ify ptid_t
I grew a bit tired of using ptid_get_{lwp,pid,tid} and friends, so I decided to
make it a bit easier to use by making it a proper class. The fields are now
private, so it's not possible to change a ptid_t field by mistake.
The new methods of ptid_t map to existing functions/practice like this:
ptid_t (pid, lwp, tid) -> ptid_build (pid, lwp, tid)
ptid_t (pid) -> pid_to_ptid (pid)
ptid.is_pid () -> ptid_is_pid (ptid)
ptid == other -> ptid_equal (ptid, other)
ptid != other -> !ptid_equal (ptid, other)
ptid.pid () -> ptid_get_pid (ptid)
ptid.lwp_p () -> ptid_lwp_p (ptid)
ptid.lwp () -> ptid_get_lwp (ptid)
ptid.tid_p () -> ptid_tid_p (ptid)
ptid.tid () -> ptid_get_tid (ptid)
ptid.matches (filter) -> ptid_match (ptid, filter)
I've replaced the implementation of the existing functions with calls to
the new methods. People are encouraged to gradually switch to using the
ptid_t methods instead of the functions (or we can change them all in
one pass eventually).
Also, I'm not sure if it's worth it (because of ptid_t's relatively
small size), but I have made the functions and methods take ptid_t
arguments by const reference instead of by value.
gdb/ChangeLog:
* common/ptid.h (struct ptid): Change to...
(class ptid_t): ... this.
<ptid_t>: New constructors.
<pid, lwp_p, lwp, tid_p, tid, is_pid, operator==, operator!=,
matches>: New methods.
<make_null, make_minus_one>: New static methods.
<pid>: Rename to...
<m_pid>: ...this.
<lwp>: Rename to...
<m_lwp>: ...this.
<tid>: Rename to...
<m_tid>: ...this.
(ptid_build, ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal,
ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match): Take ptid arguments
as references, move comment to class ptid_t.
* common/ptid.c (null_ptid, minus_one_ptid): Initialize with
ptid_t static methods.
(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_tid,
ptid_equal, ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match):
Take ptid arguments as references, implement using ptid_t methods.
* unittests/ptid-selftests.c: New file.
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/ptid-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add unittests/ptid-selftests.o.
gdb/gdbserver/ChangeLog:
* server.c (handle_v_cont): Initialize thread_resume::thread
with null_ptid.
2017-04-07 05:29:53 +02:00
|
|
|
|
2017-04-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/ptid.h (struct ptid): Change to...
|
|
|
|
|
(class ptid_t): ... this.
|
|
|
|
|
<ptid_t>: New constructors.
|
|
|
|
|
<pid, lwp_p, lwp, tid_p, tid, is_pid, operator==, operator!=,
|
|
|
|
|
matches>: New methods.
|
|
|
|
|
<make_null, make_minus_one>: New static methods.
|
|
|
|
|
<pid>: Rename to...
|
|
|
|
|
<m_pid>: ...this.
|
|
|
|
|
<lwp>: Rename to...
|
|
|
|
|
<m_lwp>: ...this.
|
|
|
|
|
<tid>: Rename to...
|
|
|
|
|
<m_tid>: ...this.
|
|
|
|
|
(ptid_build, ptid_get_pid, ptid_get_lwp, ptid_get_tid, ptid_equal,
|
|
|
|
|
ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match): Take ptid arguments
|
|
|
|
|
as references, move comment to class ptid_t.
|
|
|
|
|
* common/ptid.c (null_ptid, minus_one_ptid): Initialize with
|
|
|
|
|
ptid_t static methods.
|
|
|
|
|
(ptid_build, pid_to_ptid, ptid_get_pid, ptid_get_tid,
|
|
|
|
|
ptid_equal, ptid_is_pid, ptid_lwp_p, ptid_tid_p, ptid_match):
|
|
|
|
|
Take ptid arguments as references, implement using ptid_t methods.
|
|
|
|
|
* unittests/ptid-selftests.c: New file.
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/ptid-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add unittests/ptid-selftests.o.
|
|
|
|
|
|
2017-04-06 18:17:23 +02:00
|
|
|
|
2017-04-06 Thomas Preud'homme <thomas.preudhomme@arm.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_run_simple_file): Cast mode literal to
|
|
|
|
|
non-const char pointer as expected by PyFile_FromString.
|
|
|
|
|
|
2017-04-05 21:15:59 +02:00
|
|
|
|
2017-04-05 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/ptid.c (ptid_lwp_p, ptid_tid_p): Remove comparison with
|
|
|
|
|
minus_one_ptid and null_ptid.
|
|
|
|
|
|
2017-04-05 20:21:37 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* warning.m4 (build_warnings): Remove -Wno-write-strings.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
-Wwrite-strings: The Rest
This is the remainder boring constification that all looks more of less
borderline obvious IMO.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* ada-exp.y (yyerror): Constify.
* ada-lang.c (bound_name, get_selections)
(ada_variant_discrim_type)
(ada_variant_discrim_name, ada_value_struct_elt)
(ada_lookup_struct_elt_type, is_unchecked_variant)
(ada_which_variant_applies, standard_exc, ada_get_next_arg)
(catch_ada_exception_command_split)
(catch_ada_assert_command_split, catch_assert_command)
(ada_op_name): Constify.
* ada-lang.h (ada_yyerror, get_selections)
(ada_variant_discrim_name, ada_value_struct_elt): Constify.
* arc-tdep.c (arc_print_frame_cache): Constify.
* arm-tdep.c (arm_skip_stub): Constify.
* ax-gdb.c (gen_binop, gen_struct_ref_recursive, gen_struct_ref)
(gen_aggregate_elt_ref): Constify.
* bcache.c (print_bcache_statistics): Constify.
* bcache.h (print_bcache_statistics): Constify.
* break-catch-throw.c (catch_exception_command_1):
* breakpoint.c (struct ep_type_description::description):
Constify.
(add_solib_catchpoint): Constify.
(catch_fork_command_1): Add cast.
(add_catch_command): Constify.
* breakpoint.h (add_catch_command, add_solib_catchpoint):
Constify.
* bsd-uthread.c (bsd_uthread_state): Constify.
* buildsym.c (patch_subfile_names): Constify.
* buildsym.h (next_symbol_text_func, patch_subfile_names):
Constify.
* c-exp.y (yyerror): Constify.
(token::oper): Constify.
* c-lang.h (c_yyerror, cp_print_class_member): Constify.
* c-varobj.c (cplus_describe_child): Constify.
* charset.c (find_charset_names): Add cast.
(find_charset_names): Constify array and add const_cast.
* cli/cli-cmds.c (complete_command, cd_command): Constify.
(edit_command): Constify.
* cli/cli-decode.c (lookup_cmd): Constify.
* cli/cli-dump.c (dump_memory_command, dump_value_command):
Constify.
(struct dump_context): Constify.
(add_dump_command, restore_command): Constify.
* cli/cli-script.c (get_command_line): Constify.
* cli/cli-script.h (get_command_line): Constify.
* cli/cli-utils.c (check_for_argument): Constify.
* cli/cli-utils.h (check_for_argument): Constify.
* coff-pe-read.c (struct read_pe_section_data): Constify.
* command.h (lookup_cmd): Constify.
* common/print-utils.c (decimal2str): Constify.
* completer.c (gdb_print_filename): Constify.
* corefile.c (set_gnutarget): Constify.
* cp-name-parser.y (yyerror): Constify.
* cp-valprint.c (cp_print_class_member): Constify.
* cris-tdep.c (cris_register_name, crisv32_register_name):
Constify.
* d-exp.y (yyerror): Constify.
(struct token::oper): Constify.
* d-lang.h (d_yyerror): Constify.
* dbxread.c (struct header_file_location::name): Constify.
(add_old_header_file, add_new_header_file, last_function_name)
(dbx_next_symbol_text, add_bincl_to_list)
(find_corresponding_bincl_psymtab, set_namestring)
(find_stab_function_addr, read_dbx_symtab, start_psymtab)
(dbx_end_psymtab, read_ofile_symtab, process_one_symbol):
* defs.h (command_line_input, print_address_symbolic)
(deprecated_readline_begin_hook): Constify.
* dwarf2read.c (anonymous_struct_prefix, dwarf_bool_name):
Constify.
* event-top.c (handle_line_of_input): Constify and add cast.
* exceptions.c (catch_errors): Constify.
* exceptions.h (catch_errors): Constify.
* expprint.c (print_subexp_standard, op_string, op_name)
(op_name_standard, dump_raw_expression, dump_raw_expression):
* expression.h (op_name, op_string, dump_raw_expression):
Constify.
* f-exp.y (yyerror): Constify.
(struct token::oper): Constify.
(struct f77_boolean_val::name): Constify.
* f-lang.c (f_word_break_characters): Constify.
* f-lang.h (f_yyerror): Constify.
* fork-child.c (fork_inferior): Add cast.
* frv-tdep.c (struct gdbarch_tdep::register_names): Constify.
(new_variant): Constify.
* gdbarch.sh (pstring_ptr, pstring_list): Constify.
* gdbarch.c: Regenerate.
* gdbcore.h (set_gnutarget): Constify.
* go-exp.y (yyerror): Constify.
(token::oper): Constify.
* go-lang.h (go_yyerror): Constify.
* go32-nat.c (go32_sysinfo): Constify.
* guile/scm-breakpoint.c (gdbscm_breakpoint_expression): Constify.
* guile/scm-cmd.c (cmdscm_function): Constify.
* guile/scm-param.c (pascm_param_value): Constify.
* h8300-tdep.c (h8300_register_name, h8300s_register_name)
(h8300sx_register_name): Constify.
* hppa-tdep.c (hppa32_register_name, hppa64_register_name):
Constify.
* ia64-tdep.c (ia64_register_names): Constify.
* infcmd.c (construct_inferior_arguments): Constify.
(path_command, attach_post_wait): Constify.
* language.c (show_range_command, show_case_command)
(unk_lang_error): Constify.
* language.h (language_defn::la_error)
(language_defn::la_name_of_this): Constify.
* linespec.c (decode_line_2): Constify.
* linux-thread-db.c (thread_db_err_str): Constify.
* lm32-tdep.c (lm32_register_name): Constify.
* m2-exp.y (yyerror): Constify.
* m2-lang.h (m2_yyerror): Constify.
* m32r-tdep.c (m32r_register_names): Constify and make static.
* m68hc11-tdep.c (m68hc11_register_names): Constify.
* m88k-tdep.c (m88k_register_name): Constify.
* macroexp.c (appendmem): Constify.
* mdebugread.c (fdr_name, add_data_symbol, parse_type)
(upgrade_type, parse_external, parse_partial_symbols)
(mdebug_next_symbol_text, cross_ref, mylookup_symbol, new_psymtab)
(new_symbol): Constify.
* memattr.c (mem_info_command): Constify.
* mep-tdep.c (register_name_from_keyword): Constify.
* mi/mi-cmd-env.c (mi_cmd_env_path, _initialize_mi_cmd_env):
Constify.
* mi/mi-cmd-stack.c (list_args_or_locals): Constify.
* mi/mi-cmd-var.c (mi_cmd_var_show_attributes): Constify.
* mi/mi-main.c (captured_mi_execute_command): Constify and add
cast.
(mi_execute_async_cli_command): Constify.
* mips-tdep.c (mips_register_name): Constify.
* mn10300-tdep.c (register_name, mn10300_generic_register_name)
(am33_register_name, am33_2_register_name)
* moxie-tdep.c (moxie_register_names): Constify.
* nat/linux-osdata.c (osdata_type): Constify fields.
* nto-tdep.c (nto_parse_redirection): Constify.
* objc-lang.c (lookup_struct_typedef, lookup_objc_class)
(lookup_child_selector): Constify.
(objc_methcall::name): Constify.
* objc-lang.h (lookup_objc_class, lookup_child_selector)
(lookup_struct_typedef): Constify.
* objfiles.c (pc_in_section): Constify.
* objfiles.h (pc_in_section): Constify.
* p-exp.y (struct token::oper): Constify.
(yyerror): Constify.
* p-lang.h (pascal_yyerror): Constify.
* parser-defs.h (op_name_standard): Constify.
(op_print::string): Constify.
(exp_descriptor::op_name): Constify.
* printcmd.c (print_address_symbolic): Constify.
* psymtab.c (print_partial_symbols): Constify.
* python/py-breakpoint.c (stop_func): Constify.
(bppy_get_expression): Constify.
* python/py-cmd.c (cmdpy_completer::name): Constify.
(cmdpy_function): Constify.
* python/py-event.c (evpy_add_attribute)
(gdbpy_initialize_event_generic): Constify.
* python/py-event.h (evpy_add_attribute)
(gdbpy_initialize_event_generic): Constify.
* python/py-evts.c (add_new_registry): Constify.
* python/py-finishbreakpoint.c (outofscope_func): Constify.
* python/py-framefilter.c (get_py_iter_from_func): Constify.
* python/py-inferior.c (get_buffer): Add cast.
* python/py-param.c (parm_constant::name): Constify.
* python/py-unwind.c (fprint_frame_id): Constify.
* python/python.c (gdbpy_parameter_value): Constify.
* remote-fileio.c (remote_fio_func_map): Make 'name' const.
* remote.c (memory_packet_config::name): Constify.
(show_packet_config_cmd, remote_write_bytes)
(remote_buffer_add_string):
* reverse.c (exec_reverse_once): Constify.
* rs6000-tdep.c (variant::name, variant::description): Constify.
* rust-exp.y (rustyyerror): Constify.
* rust-lang.c (rust_op_name): Constify.
* rust-lang.h (rustyyerror): Constify.
* serial.h (serial_ops::name): Constify.
* sh-tdep.c (sh_sh_register_name, sh_sh3_register_name)
(sh_sh3e_register_name, sh_sh2e_register_name)
(sh_sh2a_register_name, sh_sh2a_nofpu_register_name)
(sh_sh_dsp_register_name, sh_sh3_dsp_register_name)
(sh_sh4_register_name, sh_sh4_nofpu_register_name)
(sh_sh4al_dsp_register_name): Constify.
* sh64-tdep.c (sh64_register_name): Constify.
* solib-darwin.c (lookup_symbol_from_bfd): Constify.
* spu-tdep.c (spu_register_name, info_spu_dma_cmdlist): Constify.
* stabsread.c (patch_block_stabs, read_type_number)
(ref_map::stabs, ref_add, process_reference)
(symbol_reference_defined, define_symbol, define_symbol)
(error_type, read_type, read_member_functions, read_cpp_abbrev)
(read_one_struct_field, read_struct_fields, read_baseclasses)
(read_tilde_fields, read_struct_type, read_array_type)
(read_enum_type, read_sun_builtin_type, read_sun_floating_type)
(read_huge_number, read_range_type, read_args, common_block_start)
(find_name_end): Constify.
* stabsread.h (common_block_start, define_symbol)
(process_one_symbol, symbol_reference_defined, ref_add):
* symfile.c (get_section_index, add_symbol_file_command):
* symfile.h (get_section_index): Constify.
* target-descriptions.c (tdesc_type::name): Constify.
(tdesc_free_type): Add cast.
* target.c (find_default_run_target):
(add_deprecated_target_alias, find_default_run_target)
(target_announce_detach): Constify.
(do_option): Constify.
* target.h (add_deprecated_target_alias): Constify.
* thread.c (print_thread_info_1): Constify.
* top.c (deprecated_readline_begin_hook, command_line_input):
Constify.
(init_main): Add casts.
* top.h (handle_line_of_input): Constify.
* tracefile-tfile.c (tfile_write_uploaded_tsv): Constify.
* tracepoint.c (tvariables_info_1, trace_status_mi): Constify.
(tfind_command): Rename to ...
(tfind_command_1): ... this and constify.
(tfind_command): New function.
(tfind_end_command, tfind_start_command): Adjust.
(encode_source_string): Constify.
* tracepoint.h (encode_source_string): Constify.
* tui/tui-data.c (tui_partial_win_by_name): Constify.
* tui/tui-data.h (tui_partial_win_by_name): Constify.
* tui/tui-source.c (tui_set_source_content_nil): Constify.
* tui/tui-source.h (tui_set_source_content_nil): Constify.
* tui/tui-win.c (parse_scrolling_args): Constify.
* tui/tui-windata.c (tui_erase_data_content): Constify.
* tui/tui-windata.h (tui_erase_data_content): Constify.
* tui/tui-winsource.c (tui_erase_source_content): Constify.
* tui/tui.c (tui_enable): Add cast.
* utils.c (defaulted_query): Constify.
(init_page_info): Add cast.
(puts_debug, subset_compare): Constify.
* utils.h (subset_compare): Constify.
* varobj.c (varobj_format_string): Constify.
* varobj.h (varobj_format_string): Constify.
* vax-tdep.c (vax_register_name): Constify.
* windows-nat.c (windows_detach): Constify.
* xcoffread.c (process_linenos, xcoff_next_symbol_text): Constify.
* xml-support.c (gdb_xml_end_element): Constify.
* xml-tdesc.c (tdesc_start_reg): Constify.
* xstormy16-tdep.c (xstormy16_register_name): Constify.
* xtensa-tdep.c (xtensa_find_register_by_name): Constify.
* xtensa-tdep.h (xtensa_register_t::name): Constify.
gdb/gdbserver/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* gdbreplay.c (sync_error): Constify.
* linux-x86-low.c (push_opcode): Constify.
2017-04-05 20:21:37 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-exp.y (yyerror): Constify.
|
|
|
|
|
* ada-lang.c (bound_name, get_selections)
|
|
|
|
|
(ada_variant_discrim_type)
|
|
|
|
|
(ada_variant_discrim_name, ada_value_struct_elt)
|
|
|
|
|
(ada_lookup_struct_elt_type, is_unchecked_variant)
|
|
|
|
|
(ada_which_variant_applies, standard_exc, ada_get_next_arg)
|
|
|
|
|
(catch_ada_exception_command_split)
|
|
|
|
|
(catch_ada_assert_command_split, catch_assert_command)
|
|
|
|
|
(ada_op_name): Constify.
|
|
|
|
|
* ada-lang.h (ada_yyerror, get_selections)
|
|
|
|
|
(ada_variant_discrim_name, ada_value_struct_elt): Constify.
|
|
|
|
|
* arc-tdep.c (arc_print_frame_cache): Constify.
|
|
|
|
|
* arm-tdep.c (arm_skip_stub): Constify.
|
|
|
|
|
* ax-gdb.c (gen_binop, gen_struct_ref_recursive, gen_struct_ref)
|
|
|
|
|
(gen_aggregate_elt_ref): Constify.
|
|
|
|
|
* bcache.c (print_bcache_statistics): Constify.
|
|
|
|
|
* bcache.h (print_bcache_statistics): Constify.
|
|
|
|
|
* break-catch-throw.c (catch_exception_command_1):
|
|
|
|
|
* breakpoint.c (struct ep_type_description::description):
|
|
|
|
|
Constify.
|
|
|
|
|
(add_solib_catchpoint): Constify.
|
|
|
|
|
(catch_fork_command_1): Add cast.
|
|
|
|
|
(add_catch_command): Constify.
|
|
|
|
|
* breakpoint.h (add_catch_command, add_solib_catchpoint):
|
|
|
|
|
Constify.
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_state): Constify.
|
|
|
|
|
* buildsym.c (patch_subfile_names): Constify.
|
|
|
|
|
* buildsym.h (next_symbol_text_func, patch_subfile_names):
|
|
|
|
|
Constify.
|
|
|
|
|
* c-exp.y (yyerror): Constify.
|
|
|
|
|
(token::oper): Constify.
|
|
|
|
|
* c-lang.h (c_yyerror, cp_print_class_member): Constify.
|
|
|
|
|
* c-varobj.c (cplus_describe_child): Constify.
|
|
|
|
|
* charset.c (find_charset_names): Add cast.
|
|
|
|
|
(find_charset_names): Constify array and add const_cast.
|
|
|
|
|
* cli/cli-cmds.c (complete_command, cd_command): Constify.
|
|
|
|
|
(edit_command): Constify.
|
|
|
|
|
* cli/cli-decode.c (lookup_cmd): Constify.
|
|
|
|
|
* cli/cli-dump.c (dump_memory_command, dump_value_command):
|
|
|
|
|
Constify.
|
|
|
|
|
(struct dump_context): Constify.
|
|
|
|
|
(add_dump_command, restore_command): Constify.
|
|
|
|
|
* cli/cli-script.c (get_command_line): Constify.
|
|
|
|
|
* cli/cli-script.h (get_command_line): Constify.
|
|
|
|
|
* cli/cli-utils.c (check_for_argument): Constify.
|
|
|
|
|
* cli/cli-utils.h (check_for_argument): Constify.
|
|
|
|
|
* coff-pe-read.c (struct read_pe_section_data): Constify.
|
|
|
|
|
* command.h (lookup_cmd): Constify.
|
|
|
|
|
* common/print-utils.c (decimal2str): Constify.
|
|
|
|
|
* completer.c (gdb_print_filename): Constify.
|
|
|
|
|
* corefile.c (set_gnutarget): Constify.
|
|
|
|
|
* cp-name-parser.y (yyerror): Constify.
|
|
|
|
|
* cp-valprint.c (cp_print_class_member): Constify.
|
|
|
|
|
* cris-tdep.c (cris_register_name, crisv32_register_name):
|
|
|
|
|
Constify.
|
|
|
|
|
* d-exp.y (yyerror): Constify.
|
|
|
|
|
(struct token::oper): Constify.
|
|
|
|
|
* d-lang.h (d_yyerror): Constify.
|
|
|
|
|
* dbxread.c (struct header_file_location::name): Constify.
|
|
|
|
|
(add_old_header_file, add_new_header_file, last_function_name)
|
|
|
|
|
(dbx_next_symbol_text, add_bincl_to_list)
|
|
|
|
|
(find_corresponding_bincl_psymtab, set_namestring)
|
|
|
|
|
(find_stab_function_addr, read_dbx_symtab, start_psymtab)
|
|
|
|
|
(dbx_end_psymtab, read_ofile_symtab, process_one_symbol):
|
|
|
|
|
* defs.h (command_line_input, print_address_symbolic)
|
|
|
|
|
(deprecated_readline_begin_hook): Constify.
|
|
|
|
|
* dwarf2read.c (anonymous_struct_prefix, dwarf_bool_name):
|
|
|
|
|
Constify.
|
|
|
|
|
* event-top.c (handle_line_of_input): Constify and add cast.
|
|
|
|
|
* exceptions.c (catch_errors): Constify.
|
|
|
|
|
* exceptions.h (catch_errors): Constify.
|
|
|
|
|
* expprint.c (print_subexp_standard, op_string, op_name)
|
|
|
|
|
(op_name_standard, dump_raw_expression, dump_raw_expression):
|
|
|
|
|
* expression.h (op_name, op_string, dump_raw_expression):
|
|
|
|
|
Constify.
|
|
|
|
|
* f-exp.y (yyerror): Constify.
|
|
|
|
|
(struct token::oper): Constify.
|
|
|
|
|
(struct f77_boolean_val::name): Constify.
|
|
|
|
|
* f-lang.c (f_word_break_characters): Constify.
|
|
|
|
|
* f-lang.h (f_yyerror): Constify.
|
|
|
|
|
* fork-child.c (fork_inferior): Add cast.
|
|
|
|
|
* frv-tdep.c (struct gdbarch_tdep::register_names): Constify.
|
|
|
|
|
(new_variant): Constify.
|
|
|
|
|
* gdbarch.sh (pstring_ptr, pstring_list): Constify.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbcore.h (set_gnutarget): Constify.
|
|
|
|
|
* go-exp.y (yyerror): Constify.
|
|
|
|
|
(token::oper): Constify.
|
|
|
|
|
* go-lang.h (go_yyerror): Constify.
|
|
|
|
|
* go32-nat.c (go32_sysinfo): Constify.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_breakpoint_expression): Constify.
|
|
|
|
|
* guile/scm-cmd.c (cmdscm_function): Constify.
|
|
|
|
|
* guile/scm-param.c (pascm_param_value): Constify.
|
|
|
|
|
* h8300-tdep.c (h8300_register_name, h8300s_register_name)
|
|
|
|
|
(h8300sx_register_name): Constify.
|
|
|
|
|
* hppa-tdep.c (hppa32_register_name, hppa64_register_name):
|
|
|
|
|
Constify.
|
|
|
|
|
* ia64-tdep.c (ia64_register_names): Constify.
|
|
|
|
|
* infcmd.c (construct_inferior_arguments): Constify.
|
|
|
|
|
(path_command, attach_post_wait): Constify.
|
|
|
|
|
* language.c (show_range_command, show_case_command)
|
|
|
|
|
(unk_lang_error): Constify.
|
|
|
|
|
* language.h (language_defn::la_error)
|
|
|
|
|
(language_defn::la_name_of_this): Constify.
|
|
|
|
|
* linespec.c (decode_line_2): Constify.
|
|
|
|
|
* linux-thread-db.c (thread_db_err_str): Constify.
|
|
|
|
|
* lm32-tdep.c (lm32_register_name): Constify.
|
|
|
|
|
* m2-exp.y (yyerror): Constify.
|
|
|
|
|
* m2-lang.h (m2_yyerror): Constify.
|
|
|
|
|
* m32r-tdep.c (m32r_register_names): Constify and make static.
|
|
|
|
|
* m68hc11-tdep.c (m68hc11_register_names): Constify.
|
|
|
|
|
* m88k-tdep.c (m88k_register_name): Constify.
|
|
|
|
|
* macroexp.c (appendmem): Constify.
|
|
|
|
|
* mdebugread.c (fdr_name, add_data_symbol, parse_type)
|
|
|
|
|
(upgrade_type, parse_external, parse_partial_symbols)
|
|
|
|
|
(mdebug_next_symbol_text, cross_ref, mylookup_symbol, new_psymtab)
|
|
|
|
|
(new_symbol): Constify.
|
|
|
|
|
* memattr.c (mem_info_command): Constify.
|
|
|
|
|
* mep-tdep.c (register_name_from_keyword): Constify.
|
|
|
|
|
* mi/mi-cmd-env.c (mi_cmd_env_path, _initialize_mi_cmd_env):
|
|
|
|
|
Constify.
|
|
|
|
|
* mi/mi-cmd-stack.c (list_args_or_locals): Constify.
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_show_attributes): Constify.
|
|
|
|
|
* mi/mi-main.c (captured_mi_execute_command): Constify and add
|
|
|
|
|
cast.
|
|
|
|
|
(mi_execute_async_cli_command): Constify.
|
|
|
|
|
* mips-tdep.c (mips_register_name): Constify.
|
|
|
|
|
* mn10300-tdep.c (register_name, mn10300_generic_register_name)
|
|
|
|
|
(am33_register_name, am33_2_register_name)
|
|
|
|
|
* moxie-tdep.c (moxie_register_names): Constify.
|
|
|
|
|
* nat/linux-osdata.c (osdata_type): Constify fields.
|
|
|
|
|
* nto-tdep.c (nto_parse_redirection): Constify.
|
|
|
|
|
* objc-lang.c (lookup_struct_typedef, lookup_objc_class)
|
|
|
|
|
(lookup_child_selector): Constify.
|
|
|
|
|
(objc_methcall::name): Constify.
|
|
|
|
|
* objc-lang.h (lookup_objc_class, lookup_child_selector)
|
|
|
|
|
(lookup_struct_typedef): Constify.
|
|
|
|
|
* objfiles.c (pc_in_section): Constify.
|
|
|
|
|
* objfiles.h (pc_in_section): Constify.
|
|
|
|
|
* p-exp.y (struct token::oper): Constify.
|
|
|
|
|
(yyerror): Constify.
|
|
|
|
|
* p-lang.h (pascal_yyerror): Constify.
|
|
|
|
|
* parser-defs.h (op_name_standard): Constify.
|
|
|
|
|
(op_print::string): Constify.
|
|
|
|
|
(exp_descriptor::op_name): Constify.
|
|
|
|
|
* printcmd.c (print_address_symbolic): Constify.
|
|
|
|
|
* psymtab.c (print_partial_symbols): Constify.
|
|
|
|
|
* python/py-breakpoint.c (stop_func): Constify.
|
|
|
|
|
(bppy_get_expression): Constify.
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer::name): Constify.
|
|
|
|
|
(cmdpy_function): Constify.
|
|
|
|
|
* python/py-event.c (evpy_add_attribute)
|
|
|
|
|
(gdbpy_initialize_event_generic): Constify.
|
|
|
|
|
* python/py-event.h (evpy_add_attribute)
|
|
|
|
|
(gdbpy_initialize_event_generic): Constify.
|
|
|
|
|
* python/py-evts.c (add_new_registry): Constify.
|
|
|
|
|
* python/py-finishbreakpoint.c (outofscope_func): Constify.
|
|
|
|
|
* python/py-framefilter.c (get_py_iter_from_func): Constify.
|
|
|
|
|
* python/py-inferior.c (get_buffer): Add cast.
|
|
|
|
|
* python/py-param.c (parm_constant::name): Constify.
|
|
|
|
|
* python/py-unwind.c (fprint_frame_id): Constify.
|
|
|
|
|
* python/python.c (gdbpy_parameter_value): Constify.
|
|
|
|
|
* remote-fileio.c (remote_fio_func_map): Make 'name' const.
|
|
|
|
|
* remote.c (memory_packet_config::name): Constify.
|
|
|
|
|
(show_packet_config_cmd, remote_write_bytes)
|
|
|
|
|
(remote_buffer_add_string):
|
|
|
|
|
* reverse.c (exec_reverse_once): Constify.
|
|
|
|
|
* rs6000-tdep.c (variant::name, variant::description): Constify.
|
|
|
|
|
* rust-exp.y (rustyyerror): Constify.
|
|
|
|
|
* rust-lang.c (rust_op_name): Constify.
|
|
|
|
|
* rust-lang.h (rustyyerror): Constify.
|
|
|
|
|
* serial.h (serial_ops::name): Constify.
|
|
|
|
|
* sh-tdep.c (sh_sh_register_name, sh_sh3_register_name)
|
|
|
|
|
(sh_sh3e_register_name, sh_sh2e_register_name)
|
|
|
|
|
(sh_sh2a_register_name, sh_sh2a_nofpu_register_name)
|
|
|
|
|
(sh_sh_dsp_register_name, sh_sh3_dsp_register_name)
|
|
|
|
|
(sh_sh4_register_name, sh_sh4_nofpu_register_name)
|
|
|
|
|
(sh_sh4al_dsp_register_name): Constify.
|
|
|
|
|
* sh64-tdep.c (sh64_register_name): Constify.
|
|
|
|
|
* solib-darwin.c (lookup_symbol_from_bfd): Constify.
|
|
|
|
|
* spu-tdep.c (spu_register_name, info_spu_dma_cmdlist): Constify.
|
|
|
|
|
* stabsread.c (patch_block_stabs, read_type_number)
|
|
|
|
|
(ref_map::stabs, ref_add, process_reference)
|
|
|
|
|
(symbol_reference_defined, define_symbol, define_symbol)
|
|
|
|
|
(error_type, read_type, read_member_functions, read_cpp_abbrev)
|
|
|
|
|
(read_one_struct_field, read_struct_fields, read_baseclasses)
|
|
|
|
|
(read_tilde_fields, read_struct_type, read_array_type)
|
|
|
|
|
(read_enum_type, read_sun_builtin_type, read_sun_floating_type)
|
|
|
|
|
(read_huge_number, read_range_type, read_args, common_block_start)
|
|
|
|
|
(find_name_end): Constify.
|
|
|
|
|
* stabsread.h (common_block_start, define_symbol)
|
|
|
|
|
(process_one_symbol, symbol_reference_defined, ref_add):
|
|
|
|
|
* symfile.c (get_section_index, add_symbol_file_command):
|
|
|
|
|
* symfile.h (get_section_index): Constify.
|
|
|
|
|
* target-descriptions.c (tdesc_type::name): Constify.
|
|
|
|
|
(tdesc_free_type): Add cast.
|
|
|
|
|
* target.c (find_default_run_target):
|
|
|
|
|
(add_deprecated_target_alias, find_default_run_target)
|
|
|
|
|
(target_announce_detach): Constify.
|
|
|
|
|
(do_option): Constify.
|
|
|
|
|
* target.h (add_deprecated_target_alias): Constify.
|
|
|
|
|
* thread.c (print_thread_info_1): Constify.
|
|
|
|
|
* top.c (deprecated_readline_begin_hook, command_line_input):
|
|
|
|
|
Constify.
|
|
|
|
|
(init_main): Add casts.
|
|
|
|
|
* top.h (handle_line_of_input): Constify.
|
|
|
|
|
* tracefile-tfile.c (tfile_write_uploaded_tsv): Constify.
|
|
|
|
|
* tracepoint.c (tvariables_info_1, trace_status_mi): Constify.
|
|
|
|
|
(tfind_command): Rename to ...
|
|
|
|
|
(tfind_command_1): ... this and constify.
|
|
|
|
|
(tfind_command): New function.
|
|
|
|
|
(tfind_end_command, tfind_start_command): Adjust.
|
|
|
|
|
(encode_source_string): Constify.
|
|
|
|
|
* tracepoint.h (encode_source_string): Constify.
|
|
|
|
|
* tui/tui-data.c (tui_partial_win_by_name): Constify.
|
|
|
|
|
* tui/tui-data.h (tui_partial_win_by_name): Constify.
|
|
|
|
|
* tui/tui-source.c (tui_set_source_content_nil): Constify.
|
|
|
|
|
* tui/tui-source.h (tui_set_source_content_nil): Constify.
|
|
|
|
|
* tui/tui-win.c (parse_scrolling_args): Constify.
|
|
|
|
|
* tui/tui-windata.c (tui_erase_data_content): Constify.
|
|
|
|
|
* tui/tui-windata.h (tui_erase_data_content): Constify.
|
|
|
|
|
* tui/tui-winsource.c (tui_erase_source_content): Constify.
|
|
|
|
|
* tui/tui.c (tui_enable): Add cast.
|
|
|
|
|
* utils.c (defaulted_query): Constify.
|
|
|
|
|
(init_page_info): Add cast.
|
|
|
|
|
(puts_debug, subset_compare): Constify.
|
|
|
|
|
* utils.h (subset_compare): Constify.
|
|
|
|
|
* varobj.c (varobj_format_string): Constify.
|
|
|
|
|
* varobj.h (varobj_format_string): Constify.
|
|
|
|
|
* vax-tdep.c (vax_register_name): Constify.
|
|
|
|
|
* windows-nat.c (windows_detach): Constify.
|
|
|
|
|
* xcoffread.c (process_linenos, xcoff_next_symbol_text): Constify.
|
|
|
|
|
* xml-support.c (gdb_xml_end_element): Constify.
|
|
|
|
|
* xml-tdesc.c (tdesc_start_reg): Constify.
|
|
|
|
|
* xstormy16-tdep.c (xstormy16_register_name): Constify.
|
|
|
|
|
* xtensa-tdep.c (xtensa_find_register_by_name): Constify.
|
|
|
|
|
* xtensa-tdep.h (xtensa_register_t::name): Constify.
|
|
|
|
|
|
2017-04-05 20:21:37 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* proc-api.c (struct trans): Constify.
|
|
|
|
|
(procfs_note): Constify.
|
|
|
|
|
* proc-events.c (struct trans, syscall_table):
|
|
|
|
|
* proc-flags.c (struct trans): Constify.
|
|
|
|
|
* proc-utils.h (procfs_note): Constify.
|
|
|
|
|
* proc-why.c (struct trans): Constify.
|
|
|
|
|
* procfs.c (dead_procinfo, find_syscall, proc_warn, proc_error)
|
|
|
|
|
(procfs_detach): Constify.
|
|
|
|
|
* sol-thread.c (struct string_map): Constify.
|
|
|
|
|
(td_err_string, td_state_string): Constify.
|
|
|
|
|
|
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* proc-api.c (procfs_filename): Don't initialize
|
|
|
|
|
procfs_filename.
|
|
|
|
|
(prepare_to_trace): Assume procfs_filename is non-NULL.
|
|
|
|
|
(_initialize_proc_api): Give procfs_filename a default value here.
|
|
|
|
|
|
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* break-catch-throw.c (handle_gnu_v3_exceptions): Constify
|
|
|
|
|
'cond_string' parameter.
|
|
|
|
|
(extract_exception_regexp): Constify 'string' parameter.
|
|
|
|
|
(catch_exception_command_1): Constify.
|
|
|
|
|
* breakpoint.c (init_catchpoint)
|
|
|
|
|
(create_fork_vfork_event_catchpoint): Constify 'cond_string'
|
|
|
|
|
parameter.
|
|
|
|
|
(ep_parse_optional_if_clause, catch_fork_command_1)
|
|
|
|
|
(catch_exec_command_1): Constify.
|
|
|
|
|
* breakpoint.h (init_catchpoint): Constify 'cond_string'
|
|
|
|
|
parameter.
|
|
|
|
|
(ep_parse_optional_if_clause): Constify.
|
|
|
|
|
* cli/cli-utils.c (remove_trailing_whitespace)
|
|
|
|
|
(check_for_argument): Constify.
|
|
|
|
|
* cli/cli-utils.h (remove_trailing_whitespace): Constify and add
|
|
|
|
|
non-const overload.
|
|
|
|
|
(check_for_argument): Likewise.
|
|
|
|
|
|
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* event-top.c (command_line_handler): Add cast to execute_command
|
|
|
|
|
call.
|
|
|
|
|
* record-btrace.c (cmd_record_btrace_bts_start)
|
|
|
|
|
(cmd_record_btrace_pt_start, cmd_record_btrace_start)
|
|
|
|
|
(cmd_record_btrace_start): Add cast to execute_command call.
|
|
|
|
|
* record-full.c (record_full_goto_insn):
|
|
|
|
|
* record.c (record_start, record_stop): Add cast to
|
|
|
|
|
execute_command_to_string calls.
|
|
|
|
|
(cmd_record_start): Add cast to execute_command calls.
|
|
|
|
|
|
-Wwrite-strings: Add a PyArg_ParseTupleAndKeywords "const char *" overload
-Wwrite-strings flags code like:
static char *keywords[] = {"command", "from_tty", "to_string", NULL };
as needing "(char *)" casts, because string literals are "const char []".
We can get rid of the casts by changing the array type like this:
- static char *keywords[] = {"command", "from_tty", "to_string", NULL };
+ static const char *keywords[] = {"command", "from_tty", "to_string", NULL };
However, passing the such array to PyArg_ParseTupleAndKeywords no longer
works OOTB, because PyArg_ParseTupleAndKeywords expects a "char **":
PyArg_ParseTupleAndKeywords(PyObject *args, PyObject *kw,
const char *format,
char *keywords[], ...);
and "const char **" is not implicitly convertible to "char **". C++
is more tolerant that C here WRT aliasing, and a const_cast<char **>
is fine. However, to avoid having all callers do the cast themselves,
this commit defines a gdb_PyArg_ParseTupleAndKeywords function here
with a corresponding 'keywords' parameter type that does the cast in a
single place.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* python/python-internal.h (gdb_PyArg_ParseTupleAndKeywords): New
static inline function.
* python/py-arch.c (archpy_disassemble): Constify 'keywords'
array and use gdb_PyArg_ParseTupleAndKeywords.
* python/py-cmd.c (cmdpy_init): Likewise.
* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
* python/py-inferior.c (infpy_read_memory, infpy_write_memory)
(infpy_search_memory): Likewise.
* python/py-objfile.c (objfpy_add_separate_debug_file)
(gdbpy_lookup_objfile): Likewise.
* python/py-symbol.c (gdbpy_lookup_symbol)
(gdbpy_lookup_global_symbol): Likewise.
* python/py-type.c (gdbpy_lookup_type): Likewise.
* python/py-value.c (valpy_lazy_string, valpy_string): Likewise.
* python/python.c (execute_gdb_command, gdbpy_write, gdbpy_flush):
Likewise.
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (gdb_PyArg_ParseTupleAndKeywords): New
|
|
|
|
|
static inline function.
|
|
|
|
|
* python/py-arch.c (archpy_disassemble): Constify 'keywords'
|
|
|
|
|
array and use gdb_PyArg_ParseTupleAndKeywords.
|
|
|
|
|
* python/py-cmd.c (cmdpy_init): Likewise.
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_init): Likewise.
|
|
|
|
|
* python/py-inferior.c (infpy_read_memory, infpy_write_memory)
|
|
|
|
|
(infpy_search_memory): Likewise.
|
|
|
|
|
* python/py-objfile.c (objfpy_add_separate_debug_file)
|
|
|
|
|
(gdbpy_lookup_objfile): Likewise.
|
|
|
|
|
* python/py-symbol.c (gdbpy_lookup_symbol)
|
|
|
|
|
(gdbpy_lookup_global_symbol): Likewise.
|
|
|
|
|
* python/py-type.c (gdbpy_lookup_type): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_lazy_string, valpy_string): Likewise.
|
|
|
|
|
* python/python.c (execute_gdb_command, gdbpy_write, gdbpy_flush):
|
|
|
|
|
Likewise.
|
|
|
|
|
|
-Wwrite-strings: Wrap PyGetSetDef for construction with string literals
Unfortunately, PyGetSetDef's 'name' and 'doc' members are 'char *'
instead of 'const char *', meaning that in order to list-initialize
PyGetSetDef arrays using string literals requires writing explicit
'char *' casts. For example:
static PyGetSetDef value_object_getset[] = {
- { "address", valpy_get_address, NULL, "The address of the value.",
+ { (char *) "address", valpy_get_address, NULL,
+ (char *) "The address of the value.",
NULL },
- { "is_optimized_out", valpy_get_is_optimized_out, NULL,
- "Boolean telling whether the value is optimized "
+ { (char *) "is_optimized_out", valpy_get_is_optimized_out, NULL,
+ (char *) "Boolean telling whether the value is optimized "
"out (i.e., not available).",
NULL },
- { "type", valpy_get_type, NULL, "Type of the value.", NULL },
- { "dynamic_type", valpy_get_dynamic_type, NULL,
- "Dynamic type of the value.", NULL },
- { "is_lazy", valpy_get_is_lazy, NULL,
- "Boolean telling whether the value is lazy (not fetched yet\n\
+ { (char *) "type", valpy_get_type, NULL,
+ (char *) "Type of the value.", NULL },
+ { (char *) "dynamic_type", valpy_get_dynamic_type, NULL,
+ (char *) "Dynamic type of the value.", NULL },
+ { (char *) "is_lazy", valpy_get_is_lazy, NULL,
+ (char *) "Boolean telling whether the value is lazy (not fetched yet\n\
from the inferior). A lazy value is fetched when needed, or when\n\
the \"fetch_lazy()\" method is called.", NULL },
{NULL} /* Sentinel */
We have ~20 such arrays, and I first wrote a patch that fixed all of
them like that... It's not pretty...
One way to make these a bit less ugly would be add a new macro that
hides the casts, like:
#define GDBPY_GSDEF(NAME, GET, SET, DOC, CLOSURE) \
{ (char *) NAME, GET, SET, (char *) DOC, CLOSURE }
and then use it like:
static PyGetSetDef value_object_getset[] = {
GDBPY_GSDEF ("address", valpy_get_address, NULL,
"The address of the value.", NULL),
GDBPY_GSDEF ("is_optimized_out", valpy_get_is_optimized_out, NULL,
"Boolean telling whether the value is optimized ", NULL),
{NULL} /* Sentinel */
};
But since we have C++11, which gives us constexpr and list
initialization, I thought of a way that requires no changes where the
arrays are initialized:
We add a new type that extends PyGetSetDef (called gdb_PyGetSetDef),
and add constexpr constructors that accept const 'name' and 'doc', and
then list/aggregate initialization simply "calls" these matching
constructors instead.
I put "calls" in quotes, because given "constexpr", it's all done at
compile time, and there's no overhead either in binary size or at run
time. In fact, we get identical binaries, before/after this change.
Unlike the fixes that fix some old Python API to match the API of more
recent Python, this switches to using explicit "gdb_PyGetSetDef"
everywhere, just to be clear that we are using our own version of it.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* python/python-internal.h (gdb_PyGetSetDef): New type.
* python/py-block.c (block_object_getset)
(breakpoint_object_getset): Now a gdb_PyGetSetDef array.
* python/py-event.c (event_object_getset)
(finish_breakpoint_object_getset): Likewise.
* python/py-inferior.c (inferior_object_getset): Likewise.
* python/py-infthread.c (thread_object_getset): Likewise.
* python/py-lazy-string.c (lazy_string_object_getset): Likewise.
* python/py-linetable.c (linetable_entry_object_getset): Likewise.
* python/py-objfile.c (objfile_getset): Likewise.
* python/py-progspace.c (pspace_getset): Likewise.
* python/py-record-btrace.c (btpy_insn_getset, btpy_call_getset):
Likewise.
* python/py-record.c (recpy_record_getset): Likewise.
* python/py-symbol.c (symbol_object_getset): Likewise.
* python/py-symtab.c (symtab_object_getset, sal_object_getset):
Likewise.
* python/py-type.c (type_object_getset, field_object_getset):
Likewise.
* python/py-value.c (value_object_getset): Likewise.
2017-04-05 20:21:36 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (gdb_PyGetSetDef): New type.
|
|
|
|
|
* python/py-block.c (block_object_getset)
|
|
|
|
|
(breakpoint_object_getset): Now a gdb_PyGetSetDef array.
|
|
|
|
|
* python/py-event.c (event_object_getset)
|
|
|
|
|
(finish_breakpoint_object_getset): Likewise.
|
|
|
|
|
* python/py-inferior.c (inferior_object_getset): Likewise.
|
|
|
|
|
* python/py-infthread.c (thread_object_getset): Likewise.
|
|
|
|
|
* python/py-lazy-string.c (lazy_string_object_getset): Likewise.
|
|
|
|
|
* python/py-linetable.c (linetable_entry_object_getset): Likewise.
|
|
|
|
|
* python/py-objfile.c (objfile_getset): Likewise.
|
|
|
|
|
* python/py-progspace.c (pspace_getset): Likewise.
|
|
|
|
|
* python/py-record-btrace.c (btpy_insn_getset, btpy_call_getset):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-record.c (recpy_record_getset): Likewise.
|
|
|
|
|
* python/py-symbol.c (symbol_object_getset): Likewise.
|
|
|
|
|
* python/py-symtab.c (symtab_object_getset, sal_object_getset):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-type.c (type_object_getset, field_object_getset):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-value.c (value_object_getset): Likewise.
|
|
|
|
|
|
2017-04-05 20:21:35 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (gdb_PyObject_CallMethod)
|
|
|
|
|
(gdb_PyErr_NewException, gdb_PySys_GetObject, gdb_PySys_SetPath):
|
|
|
|
|
New functions.
|
|
|
|
|
(GDB_PYSYS_SETPATH_CHAR, PyObject_CallMethod, PyErr_NewException)
|
|
|
|
|
(PySys_GetObject, PySys_SetPath): New macros.
|
|
|
|
|
|
2017-04-05 20:21:35 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_os): Call info_osdata instead of
|
|
|
|
|
info_osdata_command.
|
|
|
|
|
* osdata.c (info_osdata_command): Rename to ...
|
|
|
|
|
(info_osdata): ... this. Constify 'type' parameter, and remove
|
|
|
|
|
the 'from_tty' parameter. Accept NULL TYPE.
|
|
|
|
|
(info_osdata_command): New function.
|
|
|
|
|
* osdata.h (info_osdata_command): Remove declaration.
|
|
|
|
|
(info_osdata): New declaration.
|
|
|
|
|
|
-Wwrite-strings: Constify mi_cmd_argv_ftype's 'command' parameter
-Wwrite-strings flags this attempt to pass a literal to a "char *":
mi_cmd_interpreter_exec ("-interpreter-exec", argv, 2);
Fix that by constifying mi_cmd_argv_ftype's 'command' parameter and
adjusting all MI commands.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* mi/mi-cmd-break.c (mi_cmd_break_insert_1, mi_cmd_break_insert)
(mi_cmd_dprintf_insert, mi_cmd_break_passcount)
(mi_cmd_break_watch, mi_cmd_break_commands): Constify 'command'
parameter.
* mi/mi-cmd-catch.c (mi_cmd_catch_assert, mi_cmd_catch_exception)
(mi_cmd_catch_load, mi_cmd_catch_unload): Constify cmd' parameter.
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Constify 'command'
parameter.
* mi/mi-cmd-env.c (mi_cmd_env_pwd, mi_cmd_env_cd, mi_cmd_env_path)
(mi_cmd_env_dir, mi_cmd_inferior_tty_set, _cmd_inferior_tty_show)
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file)
(mi_cmd_file_list_exec_source_files)
(mi_cmd_file_list_shared_libraries): Constify 'command' parameter.
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions)
(mi_cmd_info_gdb_mi_command, mi_cmd_info_os): Constify 'command'
parameter.
* mi/mi-cmd-stack.c (mi_cmd_enable_frame_filters)
(mi_cmd_stack_list_frames, mi_cmd_stack_info_depth)
(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
(mi_cmd_stack_list_variables, mi_cmd_stack_select_frame)
(mi_cmd_stack_info_frame): Constify 'command' parameter.
* mi/mi-cmd-target.c (mi_cmd_target_file_get)
(mi_cmd_target_file_put, mi_cmd_target_file_delete): Constify
'command' parameter.
* mi/mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete)
(mi_cmd_var_set_format, mi_cmd_var_set_visualizer)
(mi_cmd_var_set_frozen, mi_cmd_var_show_format)
(mi_cmd_var_info_num_children, mi_cmd_var_list_children)
(mi_cmd_var_info_type, mi_cmd_var_info_path_expression)
(mi_cmd_var_info_expression, mi_cmd_var_show_attributes)
(mi_cmd_var_evaluate_expression, mi_cmd_var_assign)
(mi_cmd_var_update, mi_cmd_enable_pretty_printing)
(mi_cmd_var_set_update_range): Constify 'command' parameter.
* mi/mi-cmds.h (mi_cmd_argv_ftype): Constify 'command' parameter.
* mi/mi-interp.c (mi_cmd_interpreter_exec): Constify 'command'
parameter.
* mi/mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_next)
(mi_cmd_exec_next_instruction, mi_cmd_exec_step)
(mi_cmd_exec_step_instruction, mi_cmd_exec_finish)
(mi_cmd_exec_return ,mi_cmd_exec_jump, mi_cmd_exec_continue)
(mi_cmd_exec_interrupt, mi_cmd_exec_run, mi_cmd_target_detach)
(mi_cmd_target_flash_erase, mi_cmd_thread_select)
(mi_cmd_thread_list_ids, mi_cmd_thread_info)
(mi_cmd_list_thread_groups, mi_cmd_data_list_register_names)
(mi_cmd_data_list_changed_registers)
(mi_cmd_data_write_register_values)
(mi_cmd_data_evaluate_expression, mi_cmd_data_read_memory)
(mi_cmd_data_read_memory_bytes, mi_cmd_data_write_memory)
(mi_cmd_data_write_memory_bytes, mi_cmd_enable_timings)
(mi_cmd_list_features, mi_cmd_list_target_features)
(mi_cmd_add_inferior, mi_cmd_remove_inferior)
(mi_cmd_trace_define_variable, mi_cmd_trace_list_variables)
(mi_cmd_trace_find, mi_cmd_trace_save, mi_cmd_trace_start)
(mi_cmd_trace_status, mi_cmd_trace_stop, mi_cmd_ada_task_info)
(mi_cmd_trace_frame_collected): Constify 'command'
parameter.
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Constify
'command' parameter.
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-cmd-break.c (mi_cmd_break_insert_1, mi_cmd_break_insert)
|
|
|
|
|
(mi_cmd_dprintf_insert, mi_cmd_break_passcount)
|
|
|
|
|
(mi_cmd_break_watch, mi_cmd_break_commands): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-cmd-catch.c (mi_cmd_catch_assert, mi_cmd_catch_exception)
|
|
|
|
|
(mi_cmd_catch_load, mi_cmd_catch_unload): Constify cmd' parameter.
|
|
|
|
|
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-cmd-env.c (mi_cmd_env_pwd, mi_cmd_env_cd, mi_cmd_env_path)
|
|
|
|
|
(mi_cmd_env_dir, mi_cmd_inferior_tty_set, _cmd_inferior_tty_show)
|
|
|
|
|
* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_file)
|
|
|
|
|
(mi_cmd_file_list_exec_source_files)
|
|
|
|
|
(mi_cmd_file_list_shared_libraries): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-cmd-info.c (mi_cmd_info_ada_exceptions)
|
|
|
|
|
(mi_cmd_info_gdb_mi_command, mi_cmd_info_os): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-cmd-stack.c (mi_cmd_enable_frame_filters)
|
|
|
|
|
(mi_cmd_stack_list_frames, mi_cmd_stack_info_depth)
|
|
|
|
|
(mi_cmd_stack_list_locals, mi_cmd_stack_list_args)
|
|
|
|
|
(mi_cmd_stack_list_variables, mi_cmd_stack_select_frame)
|
|
|
|
|
(mi_cmd_stack_info_frame): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-cmd-target.c (mi_cmd_target_file_get)
|
|
|
|
|
(mi_cmd_target_file_put, mi_cmd_target_file_delete): Constify
|
|
|
|
|
'command' parameter.
|
|
|
|
|
* mi/mi-cmd-var.c (mi_cmd_var_create, mi_cmd_var_delete)
|
|
|
|
|
(mi_cmd_var_set_format, mi_cmd_var_set_visualizer)
|
|
|
|
|
(mi_cmd_var_set_frozen, mi_cmd_var_show_format)
|
|
|
|
|
(mi_cmd_var_info_num_children, mi_cmd_var_list_children)
|
|
|
|
|
(mi_cmd_var_info_type, mi_cmd_var_info_path_expression)
|
|
|
|
|
(mi_cmd_var_info_expression, mi_cmd_var_show_attributes)
|
|
|
|
|
(mi_cmd_var_evaluate_expression, mi_cmd_var_assign)
|
|
|
|
|
(mi_cmd_var_update, mi_cmd_enable_pretty_printing)
|
|
|
|
|
(mi_cmd_var_set_update_range): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-cmds.h (mi_cmd_argv_ftype): Constify 'command' parameter.
|
|
|
|
|
* mi/mi-interp.c (mi_cmd_interpreter_exec): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_gdb_exit, mi_cmd_exec_next)
|
|
|
|
|
(mi_cmd_exec_next_instruction, mi_cmd_exec_step)
|
|
|
|
|
(mi_cmd_exec_step_instruction, mi_cmd_exec_finish)
|
|
|
|
|
(mi_cmd_exec_return ,mi_cmd_exec_jump, mi_cmd_exec_continue)
|
|
|
|
|
(mi_cmd_exec_interrupt, mi_cmd_exec_run, mi_cmd_target_detach)
|
|
|
|
|
(mi_cmd_target_flash_erase, mi_cmd_thread_select)
|
|
|
|
|
(mi_cmd_thread_list_ids, mi_cmd_thread_info)
|
|
|
|
|
(mi_cmd_list_thread_groups, mi_cmd_data_list_register_names)
|
|
|
|
|
(mi_cmd_data_list_changed_registers)
|
|
|
|
|
(mi_cmd_data_write_register_values)
|
|
|
|
|
(mi_cmd_data_evaluate_expression, mi_cmd_data_read_memory)
|
|
|
|
|
(mi_cmd_data_read_memory_bytes, mi_cmd_data_write_memory)
|
|
|
|
|
(mi_cmd_data_write_memory_bytes, mi_cmd_enable_timings)
|
|
|
|
|
(mi_cmd_list_features, mi_cmd_list_target_features)
|
|
|
|
|
(mi_cmd_add_inferior, mi_cmd_remove_inferior)
|
|
|
|
|
(mi_cmd_trace_define_variable, mi_cmd_trace_list_variables)
|
|
|
|
|
(mi_cmd_trace_find, mi_cmd_trace_save, mi_cmd_trace_start)
|
|
|
|
|
(mi_cmd_trace_status, mi_cmd_trace_stop, mi_cmd_ada_task_info)
|
|
|
|
|
(mi_cmd_trace_frame_collected): Constify 'command'
|
|
|
|
|
parameter.
|
|
|
|
|
* mi/mi-symbol-cmds.c (mi_cmd_symbol_list_lines): Constify
|
|
|
|
|
'command' parameter.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (ada_completer_word_break_characters): Now a const
|
|
|
|
|
array.
|
|
|
|
|
(ada_get_gdb_completer_word_break_characters): Constify.
|
|
|
|
|
* completer.c (gdb_completer_command_word_break_characters)
|
|
|
|
|
(gdb_completer_file_name_break_characters)
|
|
|
|
|
(gdb_completer_quote_characters): Now const arrays.
|
|
|
|
|
(get_gdb_completer_quote_characters): Constify.
|
|
|
|
|
(set_rl_completer_word_break_characters): New function.
|
|
|
|
|
(set_gdb_completion_word_break_characters)
|
|
|
|
|
(complete_line_internal): Use it.
|
|
|
|
|
* completer.h (get_gdb_completer_quote_characters): Constify.
|
|
|
|
|
(set_rl_completer_word_break_characters): Declare.
|
|
|
|
|
* f-lang.c (f_word_break_characters): Constify.
|
|
|
|
|
* language.c (default_word_break_characters): Constify.
|
|
|
|
|
* language.h (language_defn::la_word_break_characters): Constify.
|
|
|
|
|
(default_word_break_characters): Constify.
|
|
|
|
|
* top.c (init_main): Use set_rl_completer_word_break_characters.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* aix-thread.c (aix_thread_pid_to_str)
|
|
|
|
|
(aix_thread_extra_thread_info): Constify.
|
|
|
|
|
* bsd-kvm.c (bsd_kvm_pid_to_str): Constify.
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_extra_thread_info)
|
|
|
|
|
(bsd_uthread_pid_to_str): Constify.
|
|
|
|
|
* corelow.c (core_pid_to_str): Constify.
|
|
|
|
|
* darwin-nat.c (darwin_pid_to_str): Constify.
|
|
|
|
|
* fbsd-nat.c (fbsd_pid_to_str): Constify.
|
|
|
|
|
* fbsd-tdep.c (fbsd_core_pid_to_str, gdbarch_core_pid_to_str):
|
|
|
|
|
Constify.
|
|
|
|
|
* gnu-nat.c (gnu_pid_to_str): Constify.
|
|
|
|
|
* go32-nat.c (go32_pid_to_str): Constify.
|
|
|
|
|
* i386-cygwin-tdep.c (i386_windows_core_pid_to_str): Constify.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_pid_to_str): Constify.
|
|
|
|
|
* inferior.c (inferior_pid_to_str): Constify.
|
|
|
|
|
* linux-nat.c (linux_nat_pid_to_str): Constify.
|
|
|
|
|
* linux-tdep.c (linux_core_pid_to_str): Constify.
|
|
|
|
|
* linux-thread-db.c (thread_db_pid_to_str)
|
|
|
|
|
(thread_db_extra_thread_info): Constify.
|
|
|
|
|
* nto-tdep.c (nto_extra_thread_info): Constify.
|
|
|
|
|
* nto-tdep.h (nto_extra_thread_info): Constify.
|
|
|
|
|
* obsd-nat.c (obsd_pid_to_str): Constify.
|
|
|
|
|
* procfs.c (procfs_pid_to_str): Constify.
|
|
|
|
|
* ravenscar-thread.c (ravenscar_extra_thread_info)
|
|
|
|
|
(ravenscar_pid_to_str): Constify.
|
|
|
|
|
* remote-sim.c (gdbsim_pid_to_str): Constify.
|
|
|
|
|
* remote.c (remote_threads_extra_info, remote_pid_to_str):
|
|
|
|
|
Constify.
|
|
|
|
|
* sol-thread.c (solaris_pid_to_str): Constify.
|
|
|
|
|
* sol2-tdep.c (sol2_core_pid_to_str): Constify.
|
|
|
|
|
* sol2-tdep.h (sol2_core_pid_to_str): Constify.
|
|
|
|
|
* target.c (default_pid_to_str, target_pid_to_str)
|
|
|
|
|
(normal_pid_to_str, default_pid_to_str): Constify.
|
|
|
|
|
* target.h (target_ops::to_pid_to_str)
|
|
|
|
|
(target_ops::to_extra_thread_info): Constify.
|
|
|
|
|
(target_pid_to_str, normal_pid_to_str): Constify.
|
|
|
|
|
* windows-nat.c (windows_pid_to_str): Constify.
|
|
|
|
|
* gdbarch.sh (core_pid_to_str): Constify.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* gdbarch.h, gdbarch.c: Regenerate.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* main.c (captured_main_1): Use gdb::unique_xmalloc_ptr to manage
|
|
|
|
|
the memory of the temporary warning_pre_print override.
|
|
|
|
|
* utils.c (warning_pre_print): Constify.
|
|
|
|
|
* utils.h (warning_pre_print): Constify.
|
|
|
|
|
|
2017-04-05 20:21:34 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-cmds.c (shell_escape): Constify 'arg' parameter.
|
|
|
|
|
(shell_command): New function.
|
|
|
|
|
(make_command): Use std::string.
|
|
|
|
|
(init_cli_cmds): Register shell_command instead of shell_escape.
|
|
|
|
|
|
-Wwrite-strings: Don't initialize string command variables to empty string
-Wwrite-strings flags these initializations as requiring a cast.
However, these variables are command variables, and as such point to
heap-allocated memory. The initial allocation is always done when the
corresponding command is registered. E.g.,:
dprintf_function = xstrdup ("printf");
add_setshow_string_cmd ("dprintf-function", class_support,
&dprintf_function, _("\
Set the function to use for dynamic printf"), _("\
Show the function to use for dynamic printf"), NULL,
update_dprintf_commands, NULL,
&setlist, &showlist);
That's why we never reach a bogus attempt to free these string
literals.
So, just drop the incorrect initializations.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* breakpoint.c (dprintf_function, dprintf_channel): Don't initialize.
* tracepoint.c (default_collect): Don't initialize.
2017-04-05 20:21:33 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* breakpoint.c (dprintf_function, dprintf_channel): Don't initialize.
|
|
|
|
|
* tracepoint.c (default_collect): Don't initialize.
|
|
|
|
|
|
2017-04-05 20:21:33 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* macroexp.c (macro_buffer::shared): Now a bool.
|
|
|
|
|
(init_buffer): Update.
|
|
|
|
|
(init_shared_buffer): Constify 'addr' parameter.
|
|
|
|
|
(substitute_args, expand, macro_expand, macro_expand_next): Remove
|
|
|
|
|
casts.
|
|
|
|
|
|
2017-04-05 20:21:33 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (show_disassembly_style_sfunc): Constify local.
|
|
|
|
|
* disasm.c (set_disassembler_options): Constify local.
|
|
|
|
|
* i386-tdep.c (i386_print_insn): Remove cast and FIXME comment.
|
|
|
|
|
|
2017-04-05 18:28:30 +02:00
|
|
|
|
2017-04-05 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21352
|
|
|
|
|
* tracefile.c (tsave_command): Fix argument parsing for '-r'
|
|
|
|
|
option.
|
|
|
|
|
|
2017-04-05 15:55:43 +02:00
|
|
|
|
2017-04-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* frame.c (frame_unwind_register_unsigned): Call
|
|
|
|
|
frame_unwind_register_value.
|
|
|
|
|
|
2017-04-05 15:46:13 +02:00
|
|
|
|
2017-04-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* gdb.threads/thread-specific-bp.exp (check_thread_specific_breakpoint):
|
|
|
|
|
Use gdb_test_multiple, and don't match anchor.
|
|
|
|
|
|
2017-04-05 10:39:49 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Global Maintainers): Add Simon Marchi.
|
|
|
|
|
(Write After Approval): Remove Simon Marchi.
|
|
|
|
|
|
Initialize gdb::optional empty payload to quiet false -Wmaybe-uninitialized warnings
Commit ecfb656c37b982 ("dwarf2read.c: Make dir_index and
file_name_index strong typedefs") added a use of gdb::optional that
triggers bogus -Wmaybe-uninitialized warnings:
GCC trunk is complaining like this:
../../binutils-gdb/gdb/dwarf2read.c: In function void read_formatted_entries(bfd*, const gdb_byte**, line_header*, const comp_unit_head*, void (*)(line_header*, const char*, dir_index, unsigned int, unsigned int)):
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: fe.file_entry::length may be used uninitialized in this function [-Werror=maybe-uninitialized]
callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
^
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: *((void*)& fe +8) may be used uninitialized in this function [-Werror=maybe-uninitialized]
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: fe.file_entry::mod_time may be used uninitialized in this function [-Werror=maybe-uninitialized]
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: fe.file_entry::name may be used uninitialized in this function [-Werror=maybe-uninitialized]
While some older GCCs are complaining like this:
../../binutils-gdb/gdb/dwarf2read.c: In function void read_formatted_entries(bfd*, const gdb_byte**, line_header*, const comp_unit_head*, void (*)(line_header*, const char*, dir_index, unsigned int, unsigned int)):
../../binutils-gdb/gdb/dwarf2read.c:17779:65: error: uint may be used uninitialized in this function [-Werror=maybe-uninitialized]
callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
Looking around the web, I see that boost's optional implementation
triggers this kind of issue often too. See:
http://www.boost.org/doc/libs/1_63_0/libs/optional/doc/html/boost_optional/tutorial/gotchas/false_positive_with__wmaybe_uninitialized.html
I noticed that replacing the gdb::optional uses with real C++17
std::optional uses against GCC 7/trunk makes the warnings go away.
Looking at the implementation, AFAICS, libstdc++ always initializes
its "empty" union payload member (_M_empty, which is defined as an
empty class, like ours). I.e., all payload types have this ctor:
struct _Optional_payload.....
{
constexpr _Optional_payload()
: _M_empty() {}
The constexpr makes a diference too. Without it, GCC7 still warns.
So I'm applying the same treatment to our gdb::optional.
gdb/ChangeLog:
2017-04-05 Pedro Alves <palves@redhat.com>
* common/gdb_optional.h (optional::optional): Make constexpr and
initialize m_dummy.
2017-04-05 00:49:27 +02:00
|
|
|
|
2017-04-05 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_optional.h (optional::optional): Make constexpr and
|
|
|
|
|
initialize m_dummy.
|
|
|
|
|
|
2017-04-04 23:28:07 +02:00
|
|
|
|
2017-04-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-fbsd-tdep.c: Remove "bsd-uthread.h" include.
|
|
|
|
|
(amd64fbsd_jmp_buf_reg_offset): Remove.
|
|
|
|
|
(amd64fbsd_supply_uthread): Remove function.
|
|
|
|
|
(amd64fbsd_collect_uthread): Remove function.
|
|
|
|
|
(amd64fbsd_init_abi): Don't set bsd-uthread callbacks.
|
|
|
|
|
* configure.tgt (i[34567]86-*-freebsd*): Remove bsd-uthread.o.
|
|
|
|
|
(x86_64-*-freebsd*): Remove bsd-uthread.o.
|
|
|
|
|
(fbsd-nat.c): Update comment.
|
|
|
|
|
* i386-fbsd-tdep.c: Remove "bsd-uthread.h" include.
|
|
|
|
|
(i386fbsd_jmp_buf_reg_offset): Remove.
|
|
|
|
|
(i386fbsd_supply_uthread): Remove function.
|
|
|
|
|
(i386fbsd_collect_uthread): Remove function.
|
|
|
|
|
(i386fbsd_init_abi): Don't set bsd-uthread callbacks.
|
|
|
|
|
|
2017-04-04 23:20:37 +02:00
|
|
|
|
2017-04-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_64_TARGET_OBS): Remove alpha-fbsd-tdep.o.
|
|
|
|
|
(ALLDEPFILES): Remove alpha-fbsd-tdep.c
|
|
|
|
|
* NEWS: Mention that support for FreeBSD/alpha was removed.
|
|
|
|
|
* alpha-fbsd-tdep.c: Delete file.
|
|
|
|
|
* config/alpha/fbsd.mh: Delete file.
|
|
|
|
|
* configure.host: Delete alpha*-*-freebsd* and
|
|
|
|
|
alpha*-*-kfreebsd*-gnu.
|
|
|
|
|
* configure.tgt: Delete alpha*-*-freebsd* and
|
|
|
|
|
alpha*-*-kfreebsd*-gnu.
|
|
|
|
|
|
2017-04-04 22:57:47 +02:00
|
|
|
|
2017-04-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* amd64-bsd-nat.c (amd64bsd_fetch_inferior_registers,
|
|
|
|
|
amd64bsd_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
|
dwarf2read.c: C++fy lnp_state_machine
While I was looking at the file, I noticed that this struct could be
nicely converted to a class. As I was progressing, I ended up moving
all state machine actual internal state manipulation to methods of
lnp_state_machine, essentially decoupling DWARF parsing from state
tracking. I also noticed that the lnp_reader_state doesn't really
serve any good use, so that's eliminated in the process.
gdb/ChangeLog:
2017-04-04 Pedro Alves <palves@redhat.com>
* dwarf2read.c (lnp_state_machine): Now a class. Initialize all
data fields, make them private and add "m_" prefixes.
(lnp_state_machine::lnp_state_machine): New ctor.
(record_line, check_line_address, handle_set_discriminator)
(handle_set_address, handle_advance_pc, handle_special_opcode)
(handle_advance_line, handle_set_file, handle_negate_stmt)
(handle_const_add_pc, handle_fixed_advance_pc, handle_copy)
(end_sequence, advance_line): New methods.
(m_gdbarch, m_record_lines_p): New fields.
(lnp_reader_state): Delete.
(dwarf_record_line): Rename to ...
(lnp_state_machine::record_line): ... adjust.
(init_lnp_state_machine): Delete.
(lnp_state_machine::lnp_state_machine): New.
(check_line_address): Rename to ...
(lnp_state_machine::check_line_address): This.
(dwarf_decode_lines_1): Remove reference to "reader_state".
Adjust lnp_state_machine having a non-default ctor. Use bool.
State machine internal state manipulation moved to
lnp_state_machine methods.
2017-04-04 21:03:26 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (lnp_state_machine): Now a class. Initialize all
|
|
|
|
|
data fields, make them private and add "m_" prefixes.
|
|
|
|
|
(lnp_state_machine::lnp_state_machine): New ctor.
|
|
|
|
|
(record_line, check_line_address, handle_set_discriminator)
|
|
|
|
|
(handle_set_address, handle_advance_pc, handle_special_opcode)
|
|
|
|
|
(handle_advance_line, handle_set_file, handle_negate_stmt)
|
|
|
|
|
(handle_const_add_pc, handle_fixed_advance_pc, handle_copy)
|
|
|
|
|
(end_sequence, advance_line): New methods.
|
|
|
|
|
(m_gdbarch, m_record_lines_p): New fields.
|
|
|
|
|
(lnp_reader_state): Delete.
|
|
|
|
|
(dwarf_record_line): Rename to ...
|
|
|
|
|
(lnp_state_machine::record_line): ... adjust.
|
|
|
|
|
(init_lnp_state_machine): Delete.
|
|
|
|
|
(lnp_state_machine::lnp_state_machine): New.
|
|
|
|
|
(check_line_address): Rename to ...
|
|
|
|
|
(lnp_state_machine::check_line_address): This.
|
|
|
|
|
(dwarf_decode_lines_1): Remove reference to "reader_state".
|
|
|
|
|
Adjust lnp_state_machine having a non-default ctor. Use bool.
|
|
|
|
|
State machine internal state manipulation moved to
|
|
|
|
|
lnp_state_machine methods.
|
|
|
|
|
|
Make sect_offset and cu_offset strong typedefs instead of structs
A while ago, back when GDB was a C program, the sect_offset and
cu_offset types were made structs in order to prevent incorrect mixing
of those offsets. Now that we require C++11, we can make them
integers again, while keeping the safety, by exploiting "enum class".
We can add a bit more safety, even, by defining operators that the
types _should_ support, helping making the suspicious uses stand out
more.
Getting at the underlying type is done with the new to_underlying
function added by the previous patch, which also helps better spot
where do we need to step out of the safety net. Mostly, that's around
parsing the DWARF, and when we print the offset for complaint/debug
purposes. But there are other occasional uses.
Since we have to define the sect_offset/cu_offset types in a header
anyway, I went ahead and generalized/library-fied the idea of "offset"
types, making it trivial to add more such types if we find a use. See
common/offset-type.h and the DEFINE_OFFSET_TYPE macro.
I needed a couple generaly-useful preprocessor bits (e.g., yet another
CONCAT implementation), so I started a new common/preprocessor.h file.
I included units tests covering the "offset" types API. These are
mostly compile-time tests, using SFINAE to check that expressions that
shouldn't compile (e.g., comparing unrelated offset types) really are
invalid and would fail to compile. This same idea appeared in my
pending enum-flags revamp from a few months ago (though this version
is a bit further modernized compared to what I had posted), and I plan
on reusing the "check valid expression" bits added here in that
series, so I went ahead and defined the CHECK_VALID_EXPR macro in its
own header -- common/valid-expr.h. I think that's nicer regardless.
I was borderline between calling the new types "offset" types, or
"index" types, BTW. I stuck with "offset" simply because that's what
we're already calling them, mostly.
gdb/ChangeLog:
2017-04-04 Pedro Alves <palves@redhat.com>
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/offset-type-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add offset-type-selftests.o.
* common/offset-type.h: New file.
* common/preprocessor.h: New file.
* common/traits.h: New file.
* common/valid-expr.h: New file.
* dwarf2expr.c: Include "common/underlying.h". Adjust to use
sect_offset and cu_offset strong typedefs throughout.
* dwarf2expr.h: Adjust to use sect_offset and cu_offset strong
typedefs throughout.
* dwarf2loc.c: Include "common/underlying.h". Adjust to use
sect_offset and cu_offset strong typedefs throughout.
* dwarf2read.c: Adjust to use sect_offset and cu_offset strong
typedefs throughout.
* gdbtypes.h: Include "common/offset-type.h".
(cu_offset): Now an offset type (strong typedef) instead of a
struct.
(sect_offset): Likewise.
(union call_site_parameter_u): Rename "param_offset" field to
"param_cu_off".
* unittests/offset-type-selftests.c: New file.
2017-04-04 21:03:26 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
|
|
|
|
|
unittests/offset-type-selftests.c.
|
|
|
|
|
(SUBDIR_UNITTESTS_OBS): Add offset-type-selftests.o.
|
|
|
|
|
* common/offset-type.h: New file.
|
|
|
|
|
* common/preprocessor.h: New file.
|
|
|
|
|
* common/traits.h: New file.
|
|
|
|
|
* common/valid-expr.h: New file.
|
|
|
|
|
* dwarf2expr.c: Include "common/underlying.h". Adjust to use
|
|
|
|
|
sect_offset and cu_offset strong typedefs throughout.
|
|
|
|
|
* dwarf2expr.h: Adjust to use sect_offset and cu_offset strong
|
|
|
|
|
typedefs throughout.
|
|
|
|
|
* dwarf2loc.c: Include "common/underlying.h". Adjust to use
|
|
|
|
|
sect_offset and cu_offset strong typedefs throughout.
|
|
|
|
|
* dwarf2read.c: Adjust to use sect_offset and cu_offset strong
|
|
|
|
|
typedefs throughout.
|
|
|
|
|
* gdbtypes.h: Include "common/offset-type.h".
|
|
|
|
|
(cu_offset): Now an offset type (strong typedef) instead of a
|
|
|
|
|
struct.
|
|
|
|
|
(sect_offset): Likewise.
|
|
|
|
|
(union call_site_parameter_u): Rename "param_offset" field to
|
|
|
|
|
"param_cu_off".
|
|
|
|
|
* unittests/offset-type-selftests.c: New file.
|
|
|
|
|
|
2017-04-04 21:03:25 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/underlying.h: New file.
|
|
|
|
|
* dwarf2read.c: Include "common/gdb_optional.h" and
|
|
|
|
|
"common/underlying.h".
|
|
|
|
|
(dir_index, file_name_index): New types.
|
|
|
|
|
(file_entry): Use them.
|
|
|
|
|
(file_entry::include): Use to_underlying.
|
|
|
|
|
(line_header::add_file_name): Use dir_index.
|
|
|
|
|
(read_formatted_entries): Use gdb::optional. Read form before
|
|
|
|
|
writting to file_entry.
|
|
|
|
|
(dwarf_decode_line_header): Use dir_index.
|
|
|
|
|
(lnp_state_machine::current_file): Use to_underlying.
|
|
|
|
|
(lnp_state_machine::file): Change type to file_name_index.
|
|
|
|
|
(dwarf_record_line): Use to_underlying.
|
|
|
|
|
(init_lnp_state_machine): Use file_name_index.
|
|
|
|
|
(dwarf_decode_lines_1): Use dir_index and file_name_index.
|
|
|
|
|
|
2017-04-04 21:03:25 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_optional.h (gdb::optiona): Add operator->, operator*,
|
|
|
|
|
operator bool, has_value and get methods.
|
|
|
|
|
|
dwarf2read.c: Some C++fycation, use std::vector, std::unique_ptr
This starts off as replacing a couple custom open coded vector
implementations in the file with std::vector, and then the rest falls
off of that. I.e., use new/delete instead of XCNEW/xfree, add
ctors/dtors/initializers where appropriate. And then use
std::unique_ptr instead of cleanups. Some functions became methods,
and in a couple spots, some single-use callback functions that would
have to be tweaked anyway are converted to lambdas instead.
gdb/ChangeLog:
2017-04-04 Pedro Alves <palves@redhat.com>
* dwarf2read.c (struct file_entry): Add ctors, and initialize all
fields.
(line_header): Initialize all data fields. Change type of
standard_opcode_lengths to std::unique_ptr<unsigned char[]>.
Change type of include_dirs to std::vector<const char *>. Remove
num_include_dirs, include_dirs_size. Change type of file_names to
std::vector<file_entry>. Remove num_file_names, file_names_size.
(line_header::line_header): New.
(line_header::add_include_dir, line_header::add_file_name): New
methods.
(line_header::include_dir_at): Remove NULL check.
(line_header::file_name_at): Add const overload.
(line_header_up): New unique_ptr typedef.
(dw2_get_file_names_reader): Use line_header_up. Adjust to use
std::vector. Remove free_line_header call.
(dwarf2_build_include_psymtabs): Use line_header_up. Remove
free_line_header call.
(free_cu_line_header): Delete.
(handle_DW_AT_stmt_list, handle_DW_AT_stmt_list)
(setup_type_unit_groups): Use line_header_up instead of cleanups.
Adjust to use std::vector.
(free_line_header): Delete.
(free_line_header_voidp): Use delete.
(add_include_dir): Replace with ...
(line_header::add_include_dir): ... this method. Use std::vector.
(add_file_name): Replace with ...
(line_header::add_file_name): ... this method. Use std::vector.
(add_include_dir_stub): Delete.
(read_formatted_entries): Remove memset.
(dwarf_decode_line_header): Return a line_header_up instead of a
raw pointer. Remove cleanup handling. Pass lambdas to
read_formatted_entries. Adjust to use line_header methods.
(dwarf_decode_lines_1): Adjust to use line_header methods.
(dwarf_decode_lines, file_file_name, file_full_name): Adjust to
use std::vector.
2017-04-04 21:03:25 +02:00
|
|
|
|
2017-04-04 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct file_entry): Add ctors, and initialize all
|
|
|
|
|
fields.
|
|
|
|
|
(line_header): Initialize all data fields. Change type of
|
|
|
|
|
standard_opcode_lengths to std::unique_ptr<unsigned char[]>.
|
|
|
|
|
Change type of include_dirs to std::vector<const char *>. Remove
|
|
|
|
|
num_include_dirs, include_dirs_size. Change type of file_names to
|
|
|
|
|
std::vector<file_entry>. Remove num_file_names, file_names_size.
|
|
|
|
|
(line_header::line_header): New.
|
|
|
|
|
(line_header::add_include_dir, line_header::add_file_name): New
|
|
|
|
|
methods.
|
|
|
|
|
(line_header::include_dir_at): Remove NULL check.
|
|
|
|
|
(line_header::file_name_at): Add const overload.
|
|
|
|
|
(line_header_up): New unique_ptr typedef.
|
|
|
|
|
(dw2_get_file_names_reader): Use line_header_up. Adjust to use
|
|
|
|
|
std::vector. Remove free_line_header call.
|
|
|
|
|
(dwarf2_build_include_psymtabs): Use line_header_up. Remove
|
|
|
|
|
free_line_header call.
|
|
|
|
|
(free_cu_line_header): Delete.
|
|
|
|
|
(handle_DW_AT_stmt_list, handle_DW_AT_stmt_list)
|
|
|
|
|
(setup_type_unit_groups): Use line_header_up instead of cleanups.
|
|
|
|
|
Adjust to use std::vector.
|
|
|
|
|
(free_line_header): Delete.
|
|
|
|
|
(free_line_header_voidp): Use delete.
|
|
|
|
|
(add_include_dir): Replace with ...
|
|
|
|
|
(line_header::add_include_dir): ... this method. Use std::vector.
|
|
|
|
|
(add_file_name): Replace with ...
|
|
|
|
|
(line_header::add_file_name): ... this method. Use std::vector.
|
|
|
|
|
(add_include_dir_stub): Delete.
|
|
|
|
|
(read_formatted_entries): Remove memset.
|
|
|
|
|
(dwarf_decode_line_header): Return a line_header_up instead of a
|
|
|
|
|
raw pointer. Remove cleanup handling. Pass lambdas to
|
|
|
|
|
read_formatted_entries. Adjust to use line_header methods.
|
|
|
|
|
(dwarf_decode_lines_1): Adjust to use line_header methods.
|
|
|
|
|
(dwarf_decode_lines, file_file_name, file_full_name): Adjust to
|
|
|
|
|
use std::vector.
|
|
|
|
|
|
2017-04-04 16:31:50 +02:00
|
|
|
|
2017-04-04 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* remote.c (set_general_thread, set_continue_thread): Use ptid_t
|
|
|
|
|
instead of struct ptid.
|
|
|
|
|
|
2017-04-04 09:42:30 +02:00
|
|
|
|
2017-05-04 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* frame.c (get_frame_register_bytes): Unwind using value.
|
|
|
|
|
(put_frame_register_bytes): Likewise.
|
|
|
|
|
|
2017-04-13 10:39:13 +02:00
|
|
|
|
2017-03-30 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (type_aggregate_p): Treat TYPE_CODE_MODULE as being
|
|
|
|
|
aggregate-like.
|
|
|
|
|
|
2017-03-29 21:53:43 +02:00
|
|
|
|
2017-03-29 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* auto-load.c (auto_load_section_scripts): Check SEC_HAS_CONTENTS.
|
|
|
|
|
|
2017-03-29 17:56:31 +02:00
|
|
|
|
2017-03-29 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (struct thread_info): Declare constructor and
|
|
|
|
|
destructor. Add some in-class member initializers.
|
|
|
|
|
* thread.c (free_thread): Remove.
|
|
|
|
|
(init_thread_list): Call delete instead of free_thread.
|
|
|
|
|
(new_thread): Call thread_info constructor.
|
|
|
|
|
(thread_info::thread_info): New function.
|
|
|
|
|
(thread_info::~thread_info): New function.
|
|
|
|
|
(delete_thread_1): Call delete instead of free_thread.
|
|
|
|
|
(make_cleanup_restore_current_thread): Move tp and frame to
|
|
|
|
|
inner block.
|
|
|
|
|
|
2017-02-10 12:12:09 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep.c (arc_frame_cache): Add support for prologue analysis.
|
|
|
|
|
(arc_skip_prologue): Likewise.
|
|
|
|
|
(arc_make_frame_cache): Likewise.
|
|
|
|
|
(arc_pv_get_operand): New function.
|
|
|
|
|
(arc_is_in_prologue): Likewise.
|
|
|
|
|
(arc_analyze_prologue): Likewise.
|
|
|
|
|
(arc_print_frame_cache): Likewise.
|
|
|
|
|
(MAX_PROLOGUE_LENGTH): New constant.
|
|
|
|
|
|
2017-02-10 12:12:06 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* configure.tgt: Add arc-insn.o.
|
|
|
|
|
* arc-tdep.c (arc_delayed_print_insn): Make non-static.
|
|
|
|
|
(dump_arc_instruction_command): New function.
|
|
|
|
|
(arc_fprintf_disasm): Likewise.
|
|
|
|
|
(arc_disassemble_info): Likewise.
|
|
|
|
|
(arc_insn_get_operand_value): Likewise.
|
|
|
|
|
(arc_insn_get_operand_value_signed): Likewise.
|
|
|
|
|
(arc_insn_get_memory_base_reg): Likewise.
|
|
|
|
|
(arc_insn_get_memory_offset): Likewise.
|
|
|
|
|
(arc_insn_get_branch_target): Likewise.
|
|
|
|
|
(arc_insn_dump): Likewise.
|
|
|
|
|
(arc_insn_get_linear_next_pc): Likewise.
|
|
|
|
|
* arc-tdep.h (arc_delayed_print_insn): Add function declaration.
|
|
|
|
|
(arc_disassemble_info): Likewise.
|
|
|
|
|
(arc_insn_get_branch_target): Likewise.
|
|
|
|
|
(arc_insn_get_linear_next_pc): Likewise.
|
|
|
|
|
* NEWS: Mention new "maint print arc arc-instruction".
|
|
|
|
|
|
2017-02-10 12:12:01 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep (maintenance_print_arc_list): New variable.
|
|
|
|
|
(maintenance_print_arc_command): New function.
|
|
|
|
|
|
2017-02-10 12:11:46 +01:00
|
|
|
|
2017-03-28 Anton Kolesov <anton.kolesov@synopsys.com>
|
|
|
|
|
|
|
|
|
|
* arc-tdep.c (core_v2_register_names, core_arcompact_register_names)
|
|
|
|
|
Add "limm" and "reserved".
|
|
|
|
|
(arc_cannot_fetch_register, arc_cannot_store_register): Add
|
|
|
|
|
ARC_RESERVED_REGNUM and ARC_LIMM_REGNUM.
|
|
|
|
|
* arc-tdep.h (arc_regnum): Likewise.
|
|
|
|
|
|
2016-11-18 20:39:47 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-linux-nat.c (fill_gregset): Call regcache_raw_collect
|
|
|
|
|
for THREADPTR register.
|
|
|
|
|
(supply_gregset_reg): Call regcache_raw_supply for THREADPTR
|
|
|
|
|
register.
|
|
|
|
|
* xtensa-tdep.c (XTENSA_DBREGN_UREG): New definition.
|
|
|
|
|
(xtensa_derive_tdep): Initialize tdep->threadptr_regnum.
|
|
|
|
|
* xtensa-tdep.h (gdbarch_tdep::threadptr_regnum): New field.
|
|
|
|
|
|
2017-02-22 00:41:31 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_pseudo_register_read): Treat all
|
|
|
|
|
registers above gdbarch_num_regs (gdbarch) as privileged in
|
|
|
|
|
call0 ABI.
|
|
|
|
|
|
2016-11-18 18:48:01 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-linux-nat.c (fill_gregset): Call regcache_raw_collect
|
|
|
|
|
for a single specified register or for all registers in
|
|
|
|
|
a0_base..a0_base + C0_NREGS range.
|
|
|
|
|
(supply_gregset_reg): Call regcache_raw_supply for a single
|
|
|
|
|
specified register or for all registers in a0_base..a0_base +
|
|
|
|
|
C0_NREGS range.
|
|
|
|
|
|
2017-02-22 02:14:37 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* arch/xtensa.h (C0_NREGS): Add definition.
|
|
|
|
|
* xtensa-tdep.c (C0_NREGS): Remove definition.
|
|
|
|
|
|
2016-11-18 18:39:41 +01:00
|
|
|
|
2017-03-27 Max Filippov <jcmvbkbc@gmail.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-tdep.c (xtensa_scan_prologue, call0_analyze_prologue):
|
|
|
|
|
Drop xtensa_default_isa initialization.
|
|
|
|
|
(xtensa_gdbarch_init): Initialize xtensa_default_isa.
|
|
|
|
|
|
2017-03-27 16:57:19 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (file_entry) <dir_index>: Add comment.
|
|
|
|
|
(file_entry::include_dir): New method.
|
|
|
|
|
(line_header::include_dir_at, line_header::file_name_at): New
|
|
|
|
|
methods.
|
|
|
|
|
(setup_type_unit_groups, setup_type_unit_groups)
|
|
|
|
|
(psymtab_include_file_name): Simplify using the new methods.
|
|
|
|
|
(lnp_state_machine) <the_line_header>: New field.
|
|
|
|
|
<file>: Add comment.
|
|
|
|
|
(lnp_state_machine::current_file): New method.
|
|
|
|
|
(dwarf_record_line): Simplify using the new methods.
|
|
|
|
|
(init_lnp_state_machine): Initialize the "the_line_header" field.
|
|
|
|
|
(dwarf_decode_lines_1, dwarf_decode_lines, file_file_name):
|
|
|
|
|
Simplify using the new methods.
|
|
|
|
|
|
gdb/cp-name-parser.y: Eliminate make_empty, use cplus_demangle_fill_component
The demangler exports the cplus_demangle_fill_component function that
clients should use to initialize demangle_component components that
use the "s_binary" union member. cp-name-parser.y uses it in some
places, via the fill_comp wrapper, but not all. Several places
instead use a GDB-specific "make_empty" function. Because this
function does not call any of the demangler "fill" functions, we had
to patch it recently to clear the allocated demangle_component's
"d_printing" field, which is supposedly a "private" demangler field.
To avoid such problems in the future, this commit switches those
places to use "fill_comp" instead, and eliminates the "make_empty"
function.
gdb/ChangeLog:
2017-03-27 Pedro Alves <palves@redhat.com>
* cp-name-parser.y (make_empty): Delete.
(demangler_special, nested_name, ptr_operator, array_indicator)
(direct_declarator, declarator_1): Use fill_comp instead of
make_empty.
2017-03-27 14:56:49 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (make_empty): Delete.
|
|
|
|
|
(demangler_special, nested_name, ptr_operator, array_indicator)
|
|
|
|
|
(direct_declarator, declarator_1): Use fill_comp instead of
|
|
|
|
|
make_empty.
|
|
|
|
|
|
2017-03-27 13:28:03 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* xml-support.h (gdb_xml_debug): Pass a "first-to-check" argument
|
|
|
|
|
to ATTRIBUTE_PRINTF.
|
|
|
|
|
* solib-target.c (library_list_start_list): Print "string" not
|
|
|
|
|
"version".
|
|
|
|
|
* xml-tdesc.c (tdesc_start_field): Pass "field_name" to
|
|
|
|
|
gdb_xml_error call.
|
|
|
|
|
|
2017-03-27 12:56:28 +02:00
|
|
|
|
2017-03-27 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (struct file_and_directory): New.
|
|
|
|
|
(dwarf2_get_dwz_file): Adjust to use std::string.
|
|
|
|
|
(dw2_get_file_names_reader): Adjust to use file_and_directory.
|
|
|
|
|
(find_file_and_directory): Adjust to return a file_and_directory
|
|
|
|
|
object.
|
|
|
|
|
(read_file_scope): Adjust to use file_and_directory. Remove
|
|
|
|
|
make_cleanup/do_cleanups calls.
|
|
|
|
|
(open_and_init_dwp_file): Adjust to use std::string. Remove
|
|
|
|
|
make_cleanup/do_cleanups calls.
|
|
|
|
|
* python/python.c (do_start_initialization): Adjust to ldirname
|
|
|
|
|
returning a std::string.
|
|
|
|
|
* utils.c (ldirname): Now returns a std::string.
|
|
|
|
|
* utils.h (ldirname): Change return type to std::string.
|
|
|
|
|
* xml-syscall.c (xml_init_syscalls_info): Adjust to ldirname
|
|
|
|
|
returning a std::string.
|
|
|
|
|
* xml-tdesc.c (file_read_description_xml): Likewise.
|
|
|
|
|
|
2017-03-24 17:53:05 +01:00
|
|
|
|
2017-03-24 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_debug_print_register): New function.
|
|
|
|
|
* regcache.h (regcache_debug_print_register): New declaration.
|
|
|
|
|
* target.c (debug_print_register): Remove.
|
|
|
|
|
(target_fetch_registers): Call regcache_debug_print_register.
|
|
|
|
|
(target_store_registers): Likewise.
|
|
|
|
|
|
2017-03-24 16:12:53 +01:00
|
|
|
|
2017-03-24 Pádraig Brady <pbrady@fb.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (setup_type_unit_groups): Ensure dir_index doesn't
|
|
|
|
|
reference beyond the 'lh->include_dirs' array before accessing to
|
|
|
|
|
it.
|
|
|
|
|
(psymtab_include_file_name): Likewise.
|
|
|
|
|
(dwarf_decode_lines_1): Likewise.
|
|
|
|
|
(dwarf_decode_lines): Likewise.
|
|
|
|
|
(file_file_name): Likewise.
|
|
|
|
|
|
Remove some unnecessary inferior_ptid setting/restoring when fetching/storing registers
Now that the to_fetch_registers, to_store_registers and
to_prepare_to_store target methods don't rely on the value of
inferior_ptid anymore, we can remove a bunch of now unnecessary setting
and restoring of inferior_ptid.
The asserts added recently in target_fetch_registers and
target_store_registers, which validate that inferior_ptid matches the
regcache's ptid, must go away. It's the whole point of this effort, to
not require inferior_ptid to have a particular value when calling these
functions.
One thing that I noticed is how sol-thread.c's ps_lgetregs and friends
use the current value of inferior_ptid instead of what's passed as
argument (ph->ptid), unlike proc-service.c's versions of the same
functions. Is it expected? I left it like this in the current patch,
but unless there's a good reason for it to be that way, I guess we
should make it use the parameter.
gdb/ChangeLog:
* fbsd-tdep.c (fbsd_corefile_thread): Don't set/restore
inferior_ptid.
* proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
ps_lsetfpregs): Likewise.
* regcache.c (regcache_raw_update, regcache_raw_write): Likewise.
* sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
ps_lsetfpregs): Likewise.
* target.c (target_fetch_registers, target_store_registers):
Remove asserts.
2017-03-23 18:37:06 +01:00
|
|
|
|
2017-03-23 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* fbsd-tdep.c (fbsd_corefile_thread): Don't set/restore
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
* proc-service.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
|
|
|
|
|
ps_lsetfpregs): Likewise.
|
|
|
|
|
* regcache.c (regcache_raw_update, regcache_raw_write): Likewise.
|
|
|
|
|
* sol-thread.c (ps_lgetregs, ps_lsetregs, ps_lgetfpregs,
|
|
|
|
|
ps_lsetfpregs): Likewise.
|
|
|
|
|
* target.c (target_fetch_registers, target_store_registers):
|
|
|
|
|
Remove asserts.
|
|
|
|
|
|
2017-03-23 15:40:58 +01:00
|
|
|
|
2017-03-23 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* sol-thread.c (sol_thread_store_registers): Remove regcache calls.
|
|
|
|
|
|
2017-03-23 15:11:04 +01:00
|
|
|
|
2017-03-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_process_record_test): Declare.
|
|
|
|
|
(_initialize_aarch64_tdep): Register it.
|
|
|
|
|
(aarch64_record_load_store): Handle PRFM instruction.
|
|
|
|
|
(aarch64_process_record_test): New function.
|
|
|
|
|
|
2017-03-23 15:11:04 +01:00
|
|
|
|
2017-03-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c (aarch64_record_load_store): Fix code
|
|
|
|
|
indentation.
|
|
|
|
|
|
2017-03-23 15:11:04 +01:00
|
|
|
|
2017-03-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c: Remove AARCH64_RECORD_FAILURE.
|
|
|
|
|
|
2017-03-23 12:22:11 +01:00
|
|
|
|
2017-03-23 Philipp Rudo <prudo@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
python/python.c (do_start_initialization): Fix memory leak.
|
|
|
|
|
|
Remove lwp -> pid conversion in linux_nat_xfer_partial
The linux_nat_xfer_partial does a conversion of inferior_ptid: if it's
an LWP (ptid::lwp != 0), it builds a new ptid with the lwp as
the pid and assigns that temporarily to inferior_ptid. For example, if
inferior_ptid is:
{ .pid = 1234, .lwp = 1235 }
it will assign this to inferior_ptid for the duration of the call:
{ .pid = 1235, .lwp = 0 }
Instead of doing this, this patch teaches the inf-ptrace implementation
of xfer_partial to deal with ptids representing lwps by using
get_ptrace_pid.
Also, in linux_proc_xfer_spu and linux_proc_xfer_partial, we use ptid_get_lwp
instead of ptid_get_pid. While not strictly necessary, since the content of
/proc/<pid> and /proc/<lwp> should be the same, it's a bit safer, because:
- some files under /proc/<pid>/ may not work if the <pid> thread is
running, just like ptrace requires a stopped thread. The current
thread's lwp id is more likely to be in the necessary state (stopped).
- if the leader (<pid>) had exited and is thus now zombie, then several
files under "/proc/<pid>" won't work, while they will if you use
"/proc/<lwp>".
The testsuite found no regression on native amd64 linux.
gdb/ChangeLog:
* inf-ptrace.c (inf_ptrace_xfer_partial): Get pid from ptid
using get_ptrace_pid.
* linux-nat.c (linux_nat_xfer_partial): Don't set/restore
inferior_ptid.
(linux_proc_xfer_partial, linux_proc_xfer_spu): Use lwp of
inferior_ptid instead of pid.
2017-03-22 15:35:07 +01:00
|
|
|
|
2017-03-22 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_xfer_partial): Get pid from ptid
|
|
|
|
|
using get_ptrace_pid.
|
|
|
|
|
* linux-nat.c (linux_nat_xfer_partial): Don't set/restore
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
(linux_proc_xfer_partial, linux_proc_xfer_spu): Use lwp of
|
|
|
|
|
inferior_ptid instead of pid.
|
|
|
|
|
|
2017-03-22 13:35:31 +01:00
|
|
|
|
2017-03-22 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* aarch64-tdep.c: Wrap locally used classes in anonymous
|
|
|
|
|
namespace.
|
|
|
|
|
* arm-tdep.c: Likewise.
|
|
|
|
|
* linespec.c: Likewise.
|
|
|
|
|
* ui-out.c: Likewise.
|
|
|
|
|
|
2017-03-22 12:19:44 +01:00
|
|
|
|
2017-03-22 Jonah Graham <jonah@kichwacoders.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/19637
|
|
|
|
|
* python/lib/gdb/printer/bound_registers.py: Import sys.
|
|
|
|
|
|
2017-03-21 16:35:54 +01:00
|
|
|
|
2017-03-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* windows-nat.c (do_windows_fetch_inferior_registers): Add
|
|
|
|
|
windows_thread_info parameter and use it instead of
|
|
|
|
|
current_thread.
|
|
|
|
|
(windows_fetch_inferior_registers): Don't set current_thread,
|
|
|
|
|
pass the thread to do_windows_fetch_inferior_registers. Use
|
|
|
|
|
ptid from regcache instead of inferior_ptid.
|
|
|
|
|
(do_windows_store_inferior_registers): Add windows_thread_info
|
|
|
|
|
parameter and use it instead of current_thread.
|
|
|
|
|
(windows_store_inferior_registers): Don't set current_thread,
|
|
|
|
|
pass the thread to do_windows_store_inferior_registers. Use
|
|
|
|
|
ptid from regcache instead of inferior_ptid.
|
|
|
|
|
|
2017-03-21 16:35:42 +01:00
|
|
|
|
2017-03-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* ser-mingw.c (ser_windows_raw): Remove reference to
|
|
|
|
|
struct serial::current_timeout.
|
|
|
|
|
|
2017-03-21 12:39:33 +01:00
|
|
|
|
2017-03-21 Ivo Raisr <ivo.raisr@oracle.com>
|
|
|
|
|
|
|
|
|
|
PR tdep/20928
|
|
|
|
|
* gdb/sparc-tdep.h (gdbarch_tdep) <sparc64_ccr_type>: New field.
|
|
|
|
|
* gdb/sparc64-tdep.c (sparc64_ccr_type): New function.
|
|
|
|
|
(sparc64_fsr_type): Fix %fsr decoding.
|
|
|
|
|
|
2017-03-21 08:19:59 +01:00
|
|
|
|
2017-03-21 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* python/py-record-btrace.c (btpy_insn_data): Change return type
|
|
|
|
|
for Python 2.
|
|
|
|
|
|
2017-03-20 23:23:47 +01:00
|
|
|
|
2017-03-20 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* spu-linux-nat.c (spu_fetch_inferior_registers,
|
|
|
|
|
spu_store_inferior_registers): Use ptid from regcache, set and
|
|
|
|
|
restore inferior_ptid.
|
|
|
|
|
* spu-multiarch.c (spu_fetch_registers, spu_store_registers):
|
|
|
|
|
Likewise.
|
|
|
|
|
|
Use ptid from regcache in almost all remaining nat files
This patch contains almost all of the remaining changes needed to make
to_fetch_registers/to_store_registers/to_prepare_to_store independent of
inferior_ptid. It contains only some "trivial" changes, the more
complicated ones are in separate patches.
gdb/ChangeLog:
* i386-linux-nat.c (fetch_register, store_register,
i386_linux_fetch_inferior_registers,
i386_linux_store_inferior_registers): Use ptid from regcache.
* ia64-linux-nat.c (ia64_linux_fetch_register,
ia64_linux_store_register): Likewise.
* inf-ptrace.c (inf_ptrace_fetch_register,
inf_ptrace_store_register): Likewise.
* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers,
m32r_linux_store_inferior_registers): Likewise.
* m68k-bsd-nat.c (m68kbsd_fetch_inferior_registers,
m68kbsd_store_inferior_registers): Likewise.
* m68k-linux-nat.c (fetch_register, store_register,
m68k_linux_fetch_inferior_registers,
m68k_linux_store_inferior_registers): Likewise.
* m88k-bsd-nat.c (m88kbsd_fetch_inferior_registers,
m88kbsd_store_inferior_registers): Likewise.
* mips-fbsd-nat.c (mips_fbsd_fetch_inferior_registers,
mips_fbsd_store_inferior_registers): Likewise.
* mips-linux-nat.c (mips64_linux_regsets_fetch_registers,
mips64_linux_regsets_store_registers): Likewise.
* mips-nbsd-nat.c (mipsnbsd_fetch_inferior_registers,
mipsnbsd_store_inferior_registers): Likewise.
* mips-obsd-nat.c (mips64obsd_fetch_inferior_registers,
mips64obsd_store_inferior_registers): Likewise.
* nto-procfs.c (procfs_fetch_registers, procfs_store_registers):
Likewise.
* ppc-fbsd-nat.c (ppcfbsd_fetch_inferior_registers,
ppcfbsd_store_inferior_registers): Likewise.
* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers,
ppc_linux_store_inferior_registers): Likewise.
* ppc-nbsd-nat.c (ppcnbsd_fetch_inferior_registers,
ppcnbsd_store_inferior_registers): Likewise.
* ppc-obsd-nat.c (ppcobsd_fetch_registers,
ppcobsd_store_registers): Likewise.
* procfs.c (procfs_fetch_registers, procfs_store_registers):
Likewise.
* ravenscar-thread.c (ravenscar_fetch_registers,
ravenscar_store_registers, ravenscar_prepare_to_store):
Likewise.
* record-btrace.c (record_btrace_fetch_registers,
record_btrace_store_registers, record_btrace_prepare_to_store):
Likewise.
* remote-sim.c (gdbsim_fetch_register, gdbsim_store_register):
Lookup inferior using ptid from regcache, instead of
current_inferior.
* remote.c (remote_fetch_registers, remote_store_registers): Use
ptid from regcache.
* rs6000-nat.c (fetch_register, store_register): Likewise.
* s390-linux-nat.c (s390_linux_fetch_inferior_registers,
s390_linux_store_inferior_registers): Likewise.
* sh-nbsd-nat.c (shnbsd_fetch_inferior_registers,
shnbsd_store_inferior_registers): Likewise.
* sol-thread.c (sol_thread_fetch_registers,
sol_thread_store_registers): Likewise.
* sparc-nat.c (sparc_fetch_inferior_registers,
sparc_store_inferior_registers): Likewise.
* tilegx-linux-nat.c (fetch_inferior_registers,
store_inferior_registers): Likewise.
* vax-bsd-nat.c (vaxbsd_fetch_inferior_registers,
vaxbsd_store_inferior_registers): Likewise.
* xtensa-linux-nat.c (fetch_gregs, store_gregs, fetch_xtregs,
store_xtregs): Likewise.
2017-03-20 22:37:36 +01:00
|
|
|
|
2017-03-20 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-linux-nat.c (fetch_register, store_register,
|
|
|
|
|
i386_linux_fetch_inferior_registers,
|
|
|
|
|
i386_linux_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
* ia64-linux-nat.c (ia64_linux_fetch_register,
|
|
|
|
|
ia64_linux_store_register): Likewise.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_fetch_register,
|
|
|
|
|
inf_ptrace_store_register): Likewise.
|
|
|
|
|
* m32r-linux-nat.c (m32r_linux_fetch_inferior_registers,
|
|
|
|
|
m32r_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* m68k-bsd-nat.c (m68kbsd_fetch_inferior_registers,
|
|
|
|
|
m68kbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* m68k-linux-nat.c (fetch_register, store_register,
|
|
|
|
|
m68k_linux_fetch_inferior_registers,
|
|
|
|
|
m68k_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* m88k-bsd-nat.c (m88kbsd_fetch_inferior_registers,
|
|
|
|
|
m88kbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* mips-fbsd-nat.c (mips_fbsd_fetch_inferior_registers,
|
|
|
|
|
mips_fbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* mips-linux-nat.c (mips64_linux_regsets_fetch_registers,
|
|
|
|
|
mips64_linux_regsets_store_registers): Likewise.
|
|
|
|
|
* mips-nbsd-nat.c (mipsnbsd_fetch_inferior_registers,
|
|
|
|
|
mipsnbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* mips-obsd-nat.c (mips64obsd_fetch_inferior_registers,
|
|
|
|
|
mips64obsd_store_inferior_registers): Likewise.
|
|
|
|
|
* nto-procfs.c (procfs_fetch_registers, procfs_store_registers):
|
|
|
|
|
Likewise.
|
|
|
|
|
* ppc-fbsd-nat.c (ppcfbsd_fetch_inferior_registers,
|
|
|
|
|
ppcfbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* ppc-linux-nat.c (ppc_linux_fetch_inferior_registers,
|
|
|
|
|
ppc_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* ppc-nbsd-nat.c (ppcnbsd_fetch_inferior_registers,
|
|
|
|
|
ppcnbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* ppc-obsd-nat.c (ppcobsd_fetch_registers,
|
|
|
|
|
ppcobsd_store_registers): Likewise.
|
|
|
|
|
* procfs.c (procfs_fetch_registers, procfs_store_registers):
|
|
|
|
|
Likewise.
|
|
|
|
|
* ravenscar-thread.c (ravenscar_fetch_registers,
|
|
|
|
|
ravenscar_store_registers, ravenscar_prepare_to_store):
|
|
|
|
|
Likewise.
|
|
|
|
|
* record-btrace.c (record_btrace_fetch_registers,
|
|
|
|
|
record_btrace_store_registers, record_btrace_prepare_to_store):
|
|
|
|
|
Likewise.
|
|
|
|
|
* remote-sim.c (gdbsim_fetch_register, gdbsim_store_register):
|
|
|
|
|
Lookup inferior using ptid from regcache, instead of
|
|
|
|
|
current_inferior.
|
|
|
|
|
* remote.c (remote_fetch_registers, remote_store_registers): Use
|
|
|
|
|
ptid from regcache.
|
|
|
|
|
* rs6000-nat.c (fetch_register, store_register): Likewise.
|
|
|
|
|
* s390-linux-nat.c (s390_linux_fetch_inferior_registers,
|
|
|
|
|
s390_linux_store_inferior_registers): Likewise.
|
|
|
|
|
* sh-nbsd-nat.c (shnbsd_fetch_inferior_registers,
|
|
|
|
|
shnbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* sol-thread.c (sol_thread_fetch_registers,
|
|
|
|
|
sol_thread_store_registers): Likewise.
|
|
|
|
|
* sparc-nat.c (sparc_fetch_inferior_registers,
|
|
|
|
|
sparc_store_inferior_registers): Likewise.
|
|
|
|
|
* tilegx-linux-nat.c (fetch_inferior_registers,
|
|
|
|
|
store_inferior_registers): Likewise.
|
|
|
|
|
* vax-bsd-nat.c (vaxbsd_fetch_inferior_registers,
|
|
|
|
|
vaxbsd_store_inferior_registers): Likewise.
|
|
|
|
|
* xtensa-linux-nat.c (fetch_gregs, store_gregs, fetch_xtregs,
|
|
|
|
|
store_xtregs): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:59 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* NEWS: Mention support for rvalue references in GDB and python.
|
|
|
|
|
* doc/gdb.texinfo (C Plus Plus Expressions): Mention that GDB
|
|
|
|
|
supports both lvalue and rvalue references.
|
|
|
|
|
|
2017-03-20 21:47:57 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* gdbtypes.c (rank_one_type): Implement overloading
|
|
|
|
|
resolution rules regarding rvalue references.
|
|
|
|
|
|
Convert lvalue reference type check to general reference type check
In almost all contexts (except for overload resolution rules and expression
semantics), lvalue and rvalue references are equivalent. That means that in all
but these cases we can replace a TYPE_CODE_REF check to a TYPE_IS_REFERENCE
check and, for switch statements, add a case label for a rvalue reference type
next to a case label for an lvalue reference type. This patch does exactly
that.
gdb/ChangeLog
PR gdb/14441
* aarch64-tdep.c (aarch64_type_align)
(aarch64_extract_return_value, aarch64_store_return_value): Change
lvalue reference type checks to general reference type checks.
* amd64-tdep.c (amd64_classify): Likewise.
* amd64-windows-tdep.c (amd64_windows_passed_by_integer_register):
Likewise.
* arm-tdep.c (arm_type_align, arm_extract_return_value)
(arm_store_return_value): Likewise.
* ax-gdb.c (gen_fetch, gen_cast): Likewise.
* c-typeprint.c (c_print_type): Likewise.
* c-varobj.c (adjust_value_for_child_access, c_value_of_variable)
(cplus_number_of_children, cplus_describe_child): Likewise.
* compile/compile-c-symbols.c (generate_vla_size): Likewise.
* completer.c (expression_completer): Likewise.
* cp-support.c (make_symbol_overload_list_adl_namespace):
Likewise.
* darwin-nat-info.c (info_mach_region_command): Likewise.
* dwarf2loc.c (entry_data_value_coerce_ref)
(value_of_dwarf_reg_entry): Likewise.
* eval.c (ptrmath_type_p, evaluate_subexp_standard)
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof):
Likewise.
* findvar.c (extract_typed_address, store_typed_address):
Likewise.
* gdbtypes.c (rank_one_type): Likewise.
* hppa-tdep.c (hppa64_integral_or_pointer_p): Likewise.
* infcall.c (value_arg_coerce): Likewise.
* language.c (pointer_type): Likewise.
* m32c-tdep.c (m32c_reg_arg_type, m32c_m16c_address_to_pointer):
Likewise.
* m88k-tdep.c (m88k_integral_or_pointer_p): Likewise.
* mn10300-tdep.c (mn10300_type_align): Likewise.
* msp430-tdep.c (msp430_push_dummy_call): Likewise.
* ppc-sysv-tdep.c (do_ppc_sysv_return_value)
(ppc64_sysv_abi_push_param, ppc64_sysv_abi_return_value):
Likewise.
* printcmd.c (print_formatted, x_command): Likewise.
* python/py-type.c (typy_get_composite, typy_template_argument):
Likewise.
* python/py-value.c (valpy_referenced_value)
(valpy_get_dynamic_type, value_has_field): Likewise.
* s390-linux-tdep.c (s390_function_arg_integer): Likewise.
* sparc-tdep.c (sparc_integral_or_pointer_p): Likewise.
* sparc64-tdep.c (sparc64_integral_or_pointer_p): Likewise.
* spu-tdep.c (spu_scalar_value_p): Likewise.
* symtab.c (lookup_symbol_aux): Likewise.
* typeprint.c (whatis_exp, print_type_scalar): Likewise.
* valarith.c (binop_types_user_defined_p, unop_user_defined_p):
Likewise.
* valops.c (value_cast_pointers, value_cast)
(value_reinterpret_cast, value_dynamic_cast, value_addr, typecmp)
(value_struct_elt, value_struct_elt_bitpos)
(value_find_oload_method_list, find_overload_match)
(value_rtti_indirect_type): Likewise.
* valprint.c (val_print_scalar_type_p, generic_val_print):
Likewise.
* value.c (value_actual_type, value_as_address, unpack_long)
(pack_long, pack_unsigned_long, coerce_ref_if_computed)
(coerce_ref): Likewise.
* varobj.c (varobj_get_value_type): Likewise.
2017-03-20 21:47:54 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* aarch64-tdep.c (aarch64_type_align)
|
|
|
|
|
(aarch64_extract_return_value, aarch64_store_return_value): Change
|
|
|
|
|
lvalue reference type checks to general reference type checks.
|
|
|
|
|
* amd64-tdep.c (amd64_classify): Likewise.
|
|
|
|
|
* amd64-windows-tdep.c (amd64_windows_passed_by_integer_register):
|
|
|
|
|
Likewise.
|
|
|
|
|
* arm-tdep.c (arm_type_align, arm_extract_return_value)
|
|
|
|
|
(arm_store_return_value): Likewise.
|
|
|
|
|
* ax-gdb.c (gen_fetch, gen_cast): Likewise.
|
|
|
|
|
* c-typeprint.c (c_print_type): Likewise.
|
|
|
|
|
* c-varobj.c (adjust_value_for_child_access, c_value_of_variable)
|
|
|
|
|
(cplus_number_of_children, cplus_describe_child): Likewise.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_vla_size): Likewise.
|
|
|
|
|
* completer.c (expression_completer): Likewise.
|
|
|
|
|
* cp-support.c (make_symbol_overload_list_adl_namespace):
|
|
|
|
|
Likewise.
|
|
|
|
|
* darwin-nat-info.c (info_mach_region_command): Likewise.
|
|
|
|
|
* dwarf2loc.c (entry_data_value_coerce_ref)
|
|
|
|
|
(value_of_dwarf_reg_entry): Likewise.
|
|
|
|
|
* eval.c (ptrmath_type_p, evaluate_subexp_standard)
|
|
|
|
|
(evaluate_subexp_for_address, evaluate_subexp_for_sizeof):
|
|
|
|
|
Likewise.
|
|
|
|
|
* findvar.c (extract_typed_address, store_typed_address):
|
|
|
|
|
Likewise.
|
|
|
|
|
* gdbtypes.c (rank_one_type): Likewise.
|
|
|
|
|
* hppa-tdep.c (hppa64_integral_or_pointer_p): Likewise.
|
|
|
|
|
* infcall.c (value_arg_coerce): Likewise.
|
|
|
|
|
* language.c (pointer_type): Likewise.
|
|
|
|
|
* m32c-tdep.c (m32c_reg_arg_type, m32c_m16c_address_to_pointer):
|
|
|
|
|
Likewise.
|
|
|
|
|
* m88k-tdep.c (m88k_integral_or_pointer_p): Likewise.
|
|
|
|
|
* mn10300-tdep.c (mn10300_type_align): Likewise.
|
|
|
|
|
* msp430-tdep.c (msp430_push_dummy_call): Likewise.
|
|
|
|
|
* ppc-sysv-tdep.c (do_ppc_sysv_return_value)
|
|
|
|
|
(ppc64_sysv_abi_push_param, ppc64_sysv_abi_return_value):
|
|
|
|
|
Likewise.
|
|
|
|
|
* printcmd.c (print_formatted, x_command): Likewise.
|
|
|
|
|
* python/py-type.c (typy_get_composite, typy_template_argument):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-value.c (valpy_referenced_value)
|
|
|
|
|
(valpy_get_dynamic_type, value_has_field): Likewise.
|
|
|
|
|
* s390-linux-tdep.c (s390_function_arg_integer): Likewise.
|
|
|
|
|
* sparc-tdep.c (sparc_integral_or_pointer_p): Likewise.
|
|
|
|
|
* sparc64-tdep.c (sparc64_integral_or_pointer_p): Likewise.
|
|
|
|
|
* spu-tdep.c (spu_scalar_value_p): Likewise.
|
|
|
|
|
* symtab.c (lookup_symbol_aux): Likewise.
|
|
|
|
|
* typeprint.c (whatis_exp, print_type_scalar): Likewise.
|
|
|
|
|
* valarith.c (binop_types_user_defined_p, unop_user_defined_p):
|
|
|
|
|
Likewise.
|
|
|
|
|
* valops.c (value_cast_pointers, value_cast)
|
|
|
|
|
(value_reinterpret_cast, value_dynamic_cast, value_addr, typecmp)
|
|
|
|
|
(value_struct_elt, value_struct_elt_bitpos)
|
|
|
|
|
(value_find_oload_method_list, find_overload_match)
|
|
|
|
|
(value_rtti_indirect_type): Likewise.
|
|
|
|
|
* valprint.c (val_print_scalar_type_p, generic_val_print):
|
|
|
|
|
Likewise.
|
|
|
|
|
* value.c (value_actual_type, value_as_address, unpack_long)
|
|
|
|
|
(pack_long, pack_unsigned_long, coerce_ref_if_computed)
|
|
|
|
|
(coerce_ref): Likewise.
|
|
|
|
|
* varobj.c (varobj_get_value_type): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:52 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* doc/python.texi (Types in Python): Add TYPE_CODE_RVALUE_REF to
|
|
|
|
|
table of constants.
|
|
|
|
|
* python/lib/gdb/command/explore.py: Support exploring values
|
|
|
|
|
of rvalue reference types.
|
|
|
|
|
* python/lib/gdb/types.py: Implement get_basic_type() for
|
|
|
|
|
rvalue reference types.
|
|
|
|
|
* python/py-type.c (pyty_codes) <TYPE_CODE_RVALUE_REF>: New
|
|
|
|
|
constant.
|
|
|
|
|
* python/py-value.c (valpy_getitem): Add an rvalue reference
|
|
|
|
|
check.
|
|
|
|
|
(valpy_reference_value): Add new parameter "refcode".
|
|
|
|
|
(valpy_lvalue_reference_value, valpy_rvalue_reference_value):
|
|
|
|
|
New wrappers for valpy_reference_value().
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_result_type)
|
|
|
|
|
(gdbpy_invoke_xmethod): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:50 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* dwarf2read.c (process_die, read_type_die_1): Handle the
|
|
|
|
|
DW_TAG_rvalue_reference_type DIE.
|
|
|
|
|
(read_tag_reference_type): Add new parameter "refcode".
|
|
|
|
|
|
2017-03-20 21:47:48 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* c-typeprint.c (c_print_type, c_type_print_varspec_prefix)
|
|
|
|
|
(c_type_print_modifier, c_type_print_varspec_suffix)
|
|
|
|
|
(c_type_print_base): Support printing rvalue reference types.
|
|
|
|
|
* c-valprint.c (c_val_print, c_value_print): Support printing
|
|
|
|
|
rvalue reference values.
|
|
|
|
|
|
2017-03-20 21:47:46 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* cp-name-parser.y (ptr_operator): Handle the '&&' token in
|
|
|
|
|
typename.
|
|
|
|
|
* cp-support.c (replace_typedefs): Handle
|
|
|
|
|
DEMANGLE_COMPONENT_RVALUE_REFERENCE.
|
|
|
|
|
* python/py-type.c (typy_lookup_type): Likewise.
|
|
|
|
|
|
2017-03-20 21:47:43 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* c-exp.y (ptr_operator): Handle the '&&' token in the typename.
|
|
|
|
|
* parse.c (insert_type): Change assert statement.
|
|
|
|
|
(follow_types): Handle rvalue reference types.
|
|
|
|
|
* parser-defs.h (enum type_pieces) <tp_rvalue_reference>: New
|
|
|
|
|
constant.
|
|
|
|
|
|
2017-03-20 21:47:41 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* ada-lang.c (ada_evaluate_subexp): Adhere to the new
|
|
|
|
|
value_ref() interface.
|
|
|
|
|
* c-valprint.c (c_value_print): Likewise.
|
|
|
|
|
* infcall.c (value_arg_coerce): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_reference_value): Likewise.
|
|
|
|
|
* valops.c (value_cast, value_reinterpret_cast)
|
|
|
|
|
(value_dynamic_cast, typecmp): Likewise.
|
|
|
|
|
(value_ref): Parameterize by kind of return value reference type.
|
|
|
|
|
* value.h (value_ref): Add new parameter "refcode".
|
|
|
|
|
|
2017-03-20 21:47:39 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* dwarf2read.c (read_tag_reference_type): Use
|
|
|
|
|
lookup_lvalue_reference_type() instead of lookup_reference_type().
|
|
|
|
|
* eval.c (evaluate_subexp_standard): Likewise.
|
|
|
|
|
* f-exp.y: Likewise.
|
|
|
|
|
* gdbtypes.c (make_reference_type, lookup_reference_type):
|
|
|
|
|
Generalize with rvalue reference types.
|
|
|
|
|
(lookup_lvalue_reference_type, lookup_rvalue_reference_type): New
|
|
|
|
|
convenience wrappers for lookup_reference_type().
|
|
|
|
|
* gdbtypes.h (make_reference_type, lookup_reference_type): Add a
|
|
|
|
|
reference kind parameter.
|
|
|
|
|
(lookup_lvalue_reference_type, lookup_rvalue_reference_type): Add
|
|
|
|
|
wrappers for lookup_reference_type().
|
|
|
|
|
* guile/scm-type.c (gdbscm_type_reference): Use
|
|
|
|
|
lookup_lvalue_reference_type() instead of lookup_reference_type().
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_dynamic_type): Likewise.
|
|
|
|
|
* parse.c (follow_types): Likewise.
|
|
|
|
|
* python/py-type.c (typy_reference, typy_lookup_type): Likewise.
|
|
|
|
|
* python/py-value.c (valpy_get_dynamic_type, valpy_getitem):
|
|
|
|
|
Likewise.
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_result_type)
|
|
|
|
|
(gdbpy_invoke_xmethod): Likewise.
|
|
|
|
|
* stabsread.c: Provide extra argument to make_reference_type()
|
|
|
|
|
call.
|
|
|
|
|
* valops.c (value_ref, value_rtti_indirect_type): Use
|
|
|
|
|
lookup_lvalue_reference_type() instead of lookup_reference_type().
|
|
|
|
|
|
2017-03-20 21:47:30 +01:00
|
|
|
|
2017-03-20 Artemiy Volkov <artemiyv@acm.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/14441
|
|
|
|
|
* gdbtypes.h (enum type_code) <TYPE_CODE_RVALUE_REF>: New constant.
|
|
|
|
|
(TYPE_IS_REFERENCE): New macro.
|
|
|
|
|
(struct type): Add rvalue_reference_type field.
|
|
|
|
|
(TYPE_RVALUE_REFERENCE_TYPE): New macro.
|
|
|
|
|
|
2017-03-20 19:57:51 +01:00
|
|
|
|
2017-03-20 Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add an entry about new '-file-list-shared-libraries' command.
|
|
|
|
|
* mi/mi-cmd-file.c (mi_cmd_file_list_shared_libraries):
|
|
|
|
|
New function definition.
|
|
|
|
|
* mi/mi-cmds.c (mi_cmds): Add -file-list-shared-libraries command.
|
|
|
|
|
* mi/mi-cmds.h (mi_cmd_file_list_shared_libraries):
|
|
|
|
|
New function declaration.
|
|
|
|
|
* mi/mi-interp.c (mi_output_solib_attribs): New Function.
|
|
|
|
|
* mi/mi-interp.h: New file.
|
|
|
|
|
* solib.c (info_sharedlibrary_command): Replace for loop with
|
|
|
|
|
ALL_SO_LIBS macro
|
|
|
|
|
* solib.h (update_solib_list): New function declaration.
|
|
|
|
|
(so_list_head): Move macro.
|
|
|
|
|
* solist.h (ALL_SO_LIBS): New macro.
|
|
|
|
|
|
2017-03-20 19:57:32 +01:00
|
|
|
|
2017-03-20 Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* infcmd.c (post_create_inferior): Remove unused argument in
|
|
|
|
|
call to solib_add.
|
|
|
|
|
* remote.c (remote_start_remote): Likewise.
|
|
|
|
|
* solib-frv.c (frv_fetch_objfile_link_map): Likewise.
|
|
|
|
|
* solib-svr4.c: (svr4_fetch_objfile_link_map): Likewise.
|
|
|
|
|
(enable_break): Likewise.
|
|
|
|
|
* solib.c (update_solib_list): Remove unused target argument
|
|
|
|
|
and its documentation.
|
|
|
|
|
(solib_add): Remove unused target argument. Remove unused
|
|
|
|
|
argument in call to update_solib_list.
|
|
|
|
|
(info_sharedlibrary_command): Remove unused argument in call
|
|
|
|
|
to update_solib_list.
|
|
|
|
|
(sharedlibrary_command): Remove unused argument in call to
|
|
|
|
|
solib_add.
|
|
|
|
|
(handle_solib_event): Likewise.
|
|
|
|
|
(reload_shared_libraries): Likewise.
|
|
|
|
|
* solib.h (solib_add): Remove unused target argument.
|
|
|
|
|
|
2017-03-20 17:30:01 +01:00
|
|
|
|
2017-03-20 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* s390-linux-tdep.c (is_rsi, is_rie): Remove functions.
|
|
|
|
|
(s390_displaced_step_fixup): Cover relative branches with the
|
|
|
|
|
default fixup handling. This fixes lack of support for some
|
|
|
|
|
relative branch instructions.
|
|
|
|
|
|
2017-03-17 18:55:57 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-gnu-nat.c (gnu_fetch_registers, gnu_store_registers): Use
|
|
|
|
|
ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:56 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-darwin-nat.c (i386_darwin_fetch_inferior_registers,
|
|
|
|
|
i386_darwin_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:55 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* i386-bsd-nat.c (i386bsd_fetch_inferior_registers,
|
|
|
|
|
i386bsd_store_inferior_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:55 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* hppa-obsd-nat.c (hppaobsd_fetch_registers,
|
|
|
|
|
hppaobsd_store_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:54 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* hppa-nbsd-nat.c (hppanbsd_fetch_registers,
|
|
|
|
|
hppanbsd_store_registers): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:53 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* hppa-linux-nat.c (fetch_register, store_register): Use ptid
|
|
|
|
|
from regcache. Use get_ptrace_pid.
|
|
|
|
|
|
2017-03-17 18:55:52 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* corelow.c (get_core_register_section): Use ptid from regcache,
|
|
|
|
|
update doc.
|
|
|
|
|
|
2017-03-17 18:55:51 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_fetch_registers,
|
|
|
|
|
bsd_uthread_store_registers): Use ptid from regcache, set and
|
|
|
|
|
restore inferior_ptid.
|
|
|
|
|
|
2017-03-17 18:55:50 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* arm-nbsd-nat.c (fetch_register, fetch_regs, fetch_fp_register,
|
|
|
|
|
fetch_fp_regs, store_register, store_regs, store_fp_register,
|
|
|
|
|
store_fp_regs): Use ptid from regcache.
|
|
|
|
|
|
2017-03-17 18:55:49 +01:00
|
|
|
|
2017-03-17 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* arm-linux-nat.c (fetch_fpregs, store_fpregs, fetch_regs,
|
|
|
|
|
store_regs, fetch_wmmx_regs, store_wmmx_regs, fetch_vfp_regs,
|
|
|
|
|
store_vfp_regs): Use ptid from regcache.
|
|
|
|
|
|
PR remote/21188: Fix remote serial timeout
As Gareth McMullin <gareth@blacksphere.co.nz> reports at
<https://sourceware.org/ml/gdb-patches/2017-02/msg00560.html>, the
timeout mechanism in ser-unix.c was broken by commit 048094acc
("target remote: Don't rely on immediate_quit (introduce quit
handlers)").
Instead of applying a local fix, and since we now finally always use
interrupt_select [1], let's get rid of hardwire_readchar entirely, and
use ser_base_readchar instead, which has similar timeout handling,
except for the bug.
Smoke tested with:
$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/14
2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/15
2017/03/14 14:08:13 socat[4994] N starting data transfer loop with FDs [3,3] and [5,5]
$ gdbserver /dev/pts/14 PROG
$ gdb PROG -ex "tar rem /dev/pts/15"
and then a few continues/ctrl-c's, plus killing gdbserver and socat.
[1] - See FIXME comments being removed.
gdb/ChangeLog:
2017-03-17 Pedro Alves <palves@redhat.com>
PR remote/21188
* ser-base.c (ser_base_wait_for): Add comment.
(do_ser_base_readchar): Improve comment based on the ser-unix.c's
version.
* ser-unix.c (hardwire_raw): Remove reference to
scb->current_timeout.
(wait_for, do_hardwire_readchar, hardwire_readchar): Delete.
(hardwire_ops): Install ser_base_readchar instead of
hardwire_readchar.
* serial.h (struct serial) <current_timeout, timeout_remaining>:
Remove fields.
2017-03-17 17:08:12 +01:00
|
|
|
|
2017-03-17 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR remote/21188
|
|
|
|
|
* ser-base.c (ser_base_wait_for): Add comment.
|
|
|
|
|
(do_ser_base_readchar): Improve comment based on the ser-unix.c's
|
|
|
|
|
version.
|
|
|
|
|
* ser-unix.c (hardwire_raw): Remove reference to
|
|
|
|
|
scb->current_timeout.
|
|
|
|
|
(wait_for, do_hardwire_readchar, hardwire_readchar): Delete.
|
|
|
|
|
(hardwire_ops): Install ser_base_readchar instead of
|
|
|
|
|
hardwire_readchar.
|
|
|
|
|
* serial.h (struct serial) <current_timeout, timeout_remaining>:
|
|
|
|
|
Remove fields.
|
|
|
|
|
|
2017-03-17 15:57:44 +01:00
|
|
|
|
2017-03-17 Jonah Graham <jonah@kichwacoders.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/19637
|
|
|
|
|
* python/lib/gdb/printer/bound_registers.py: Add support for
|
|
|
|
|
Python 3.
|
|
|
|
|
|
2017-03-16 19:50:24 +01:00
|
|
|
|
2017-03-16 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (indirect_synthetic_pointer): Get data type of
|
|
|
|
|
pointed-to DIE and pass it to dwarf2_evaluate_loc_desc_full.
|
|
|
|
|
(dwarf2_evaluate_loc_desc_full): New parameter subobj_type; rename
|
|
|
|
|
byte_offset to subobj_byte_offset. Fix the handling of
|
|
|
|
|
DWARF_VALUE_STACK on big-endian targets when coming via an
|
|
|
|
|
implicit pointer.
|
|
|
|
|
(dwarf2_evaluate_loc_desc): Adjust call to
|
|
|
|
|
dwarf2_evaluate_loc_desc_full.
|
|
|
|
|
* dwarf2loc.h (dwarf2_fetch_die_type_sect_off): New declaration.
|
|
|
|
|
* dwarf2read.c (dwarf2_fetch_die_type_sect_off): New function.
|
|
|
|
|
|
2017-03-16 17:35:18 +01:00
|
|
|
|
2017-03-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (thumb_record_misc): Decode CBNZ, CBZ, REV16,
|
|
|
|
|
and REVSH instructions.
|
|
|
|
|
|
2017-03-16 17:35:18 +01:00
|
|
|
|
2017-03-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c [GDB_SELF_TEST]: include "selftests.h".
|
|
|
|
|
(arm_record_test): Declare.
|
|
|
|
|
(_initialize_arm_tdep) [GDB_SELF_TEST]: call register_self_test.
|
|
|
|
|
(thumb_record_ld_st_reg_offset): Rewrite the opcode matching to
|
|
|
|
|
align with the manual.
|
|
|
|
|
(thumb_record_misc): Adjust the code order to align with the
|
|
|
|
|
manual.
|
|
|
|
|
(thumb2_record_decode_insn_handler): Fix instruction matching.
|
|
|
|
|
(instruction_reader_thumb): New class.
|
|
|
|
|
(arm_record_test): New function.
|
|
|
|
|
|
2017-03-16 17:35:18 +01:00
|
|
|
|
2017-03-16 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c (abstract_memory_reader): New class.
|
|
|
|
|
(instruction_reader): New class.
|
|
|
|
|
(extract_arm_insn): Add argument 'reader'. Callers updated.
|
|
|
|
|
(decode_insn): Likewise.
|
|
|
|
|
|
2017-03-15 23:35:13 +01:00
|
|
|
|
2017-03-16 Doug Evans <dje@google.com>
|
|
|
|
|
|
2017-03-15 23:44:45 +01:00
|
|
|
|
* guile/scm-lazy-string.c (lazy_string_smob): Clarify use of LENGTH
|
|
|
|
|
member. Change type of TYPE member to SCM. All uses updated.
|
|
|
|
|
(lsscm_make_lazy_string_smob): Add assert.
|
|
|
|
|
(lsscm_make_lazy_string): Flag bad length values.
|
|
|
|
|
(lsscm_elt_type): New function.
|
|
|
|
|
(gdbscm_lazy_string_to_value): Rewrite to use
|
|
|
|
|
lsscm_safe_lazy_string_to_value.
|
|
|
|
|
(lsscm_safe_lazy_string_to_value): Fix handling of TYPE_CODE_PTR.
|
|
|
|
|
* guile/scm-value.c (gdbscm_value_to_lazy_string): Flag bad length
|
|
|
|
|
values. Fix TYPE_CODE_PTR. Handle TYPE_CODE_ARRAY. Handle typedefs
|
|
|
|
|
in incoming type.
|
|
|
|
|
* guile/guile-internal.h (tyscm_scm_to_type): Declare.
|
|
|
|
|
* guile/scm-type.c (tyscm_scm_to_type): New function.
|
|
|
|
|
|
|
|
|
|
2017-03-15 Doug Evans <dje@google.com>
|
|
|
|
|
|
2017-03-15 23:35:13 +01:00
|
|
|
|
PR python/17728, python/18439, python/18779
|
|
|
|
|
* python/py-lazy-string.c (lazy_string_object): Clarify use of LENGTH
|
|
|
|
|
member. Change type of TYPE member to PyObject *. All uses updated.
|
|
|
|
|
(stpy_convert_to_value): Fix handling of TYPE_CODE_PTR.
|
|
|
|
|
(gdbpy_create_lazy_string_object): Flag bad length values.
|
|
|
|
|
Handle TYPE_CODE_ARRAY with possibly different user-provided length.
|
|
|
|
|
Handle typedefs in incoming type.
|
|
|
|
|
(stpy_lazy_string_elt_type): New function.
|
|
|
|
|
(gdbpy_extract_lazy_string): Call it.
|
|
|
|
|
* python/py-value.c (valpy_lazy_string): Flag bad length values.
|
|
|
|
|
Fix handling of TYPE_CODE_PTR. Handle TYPE_CODE_ARRAY. Handle
|
|
|
|
|
typedefs in incoming type.
|
|
|
|
|
|
2016-11-07 01:10:00 +01:00
|
|
|
|
2017-03-16 Doug Evans <dje@google.com>
|
|
|
|
|
|
|
|
|
|
* guile/guile-internal.h (tyscm_scm_to_type): Declare.
|
|
|
|
|
* guile/scm-type.c (tyscm_scm_to_type): New function.
|
|
|
|
|
|
2017-03-16 10:55:18 +01:00
|
|
|
|
2017-03-16 Jiong Wang <jiong.wang@arm.com>
|
|
|
|
|
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_peek_poke): Change the type to
|
|
|
|
|
"ULONGEST" for "skip".
|
|
|
|
|
|
inf-ptrace: Do not stop memory transfers after a single word
When inf_ptrace_xfer_partial performs a memory transfer via ptrace with
PT_READ_I, PT_WRITE_I (aka PTRACE_PEEKTEXT, PTRACE_POKETEXT), etc., then
it currently transfers at most one word. This behavior yields degraded
performance, particularly if the caller has significant preparation work
for each invocation. And indeed it has for writing, in
memory_xfer_partial in target.c, where all of the remaining data to be
transferred is copied to a temporary buffer each time, for breakpoint
shadow handling. Thus large writes have quadratic runtime and can take
hours.
Note: On GNU/Linux targets GDB usually does not use
inf_ptrace_xfer_partial for large memory transfers, but attempts a single
read/write from/to /proc/<pid>/mem instead. However, the kernel may
reject writes to /proc/<pid>/mem (such as kernels prior to 2.6.39), or
/proc may not be mounted. In both cases GDB falls back to the ptrace
mechanism.
This patch fixes the performance issue by attempting to fulfill the whole
transfer request in inf_ptrace_xfer_partial, using a loop around the
ptrace call.
gdb/ChangeLog:
PR gdb/21220
* inf-ptrace.c (inf_ptrace_xfer_partial): In "case
TARGET_OBJECT_MEMORY", extract the logic for ptrace peek/poke...
(inf_ptrace_peek_poke): ...here. New function. Now also loop
over ptrace peek/poke until end of buffer or error.
2017-03-14 19:20:46 +01:00
|
|
|
|
2017-03-14 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21220
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_xfer_partial): In "case
|
|
|
|
|
TARGET_OBJECT_MEMORY", extract the logic for ptrace peek/poke...
|
|
|
|
|
(inf_ptrace_peek_poke): ...here. New function. Now also loop
|
|
|
|
|
over ptrace peek/poke until end of buffer or error.
|
|
|
|
|
|
2017-03-14 15:25:39 +01:00
|
|
|
|
2017-03-14 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* parse.c (length_of_subexp): Make static.
|
|
|
|
|
* parser-defs.h (length_of_subexp): Remove.
|
|
|
|
|
|
2017-03-14 11:14:49 +01:00
|
|
|
|
2017-03-14 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_proc_xfer_partial): Handle write operations
|
|
|
|
|
as well.
|
|
|
|
|
|
2017-03-14 01:11:09 +01:00
|
|
|
|
2017-03-14 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (cp_demangled_name_to_comp): Update comment.
|
|
|
|
|
(main): Use std::unique_ptr. Remove calls to
|
|
|
|
|
cp_demangled_name_parse_free.
|
|
|
|
|
|
2017-03-13 23:51:40 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* alpha-bsd-nat.c (alphabsd_fetch_inferior_registers,
|
|
|
|
|
alphabsd_store_inferior_registers): Use regcache->ptid instead
|
|
|
|
|
of inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:40 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* aix-thread.c (aix_thread_fetch_registers,
|
|
|
|
|
aix_thread_store_registers): Use regcache->ptid instead of
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:39 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* aarch64-linux-nat.c (fetch_gregs_from_thread,
|
|
|
|
|
store_gregs_to_thread, fetch_fpregs_from_thread,
|
|
|
|
|
store_fpregs_to_thread): Use regcache->ptid instead of
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:39 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-nat.c (amd64_linux_fetch_inferior_registers,
|
|
|
|
|
amd64_linux_fetch_inferior_registers): Use regcache->ptid
|
|
|
|
|
instead of inferior_ptid.
|
|
|
|
|
|
2017-03-13 23:51:38 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* target.c (target_fetch_registers, target_store_registers): Add
|
|
|
|
|
assert.
|
|
|
|
|
|
2017-03-13 23:51:38 +01:00
|
|
|
|
2017-03-13 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* regcache.h (regcache_get_ptid): New function.
|
|
|
|
|
* regcache.c (regcache_get_ptid): New function.
|
|
|
|
|
|
2017-03-13 19:26:47 +01:00
|
|
|
|
2017-03-13 Mark Wielaard <mark@klomp.org>
|
|
|
|
|
|
|
|
|
|
* cp-name-parser.y (make_empty): Initialize d_printing to zero.
|
|
|
|
|
|
2017-03-10 19:32:09 +01:00
|
|
|
|
2017-03-10 Keith Seitz <keiths@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR c++/8218
|
|
|
|
|
* c-typeprint.c (cp_type_print_method_args): Skip artificial arguments.
|
|
|
|
|
|
Fix PR18360 - internal error when using "interrupt -a"
If you do "interrupt -a" just while some thread is stepping over a
breakpoint, gdb trips on an internal error.
The test added by this patch manages to trigger this consistently by
spawning a few threads that are constantly tripping on a conditional
breakpoint whose condition always evaluates to false. With current
gdb, you get:
~~~
interrupt -a
.../src/gdb/inline-frame.c:343: internal-error: void skip_inline_frames(ptid_t): Assertion `find_inline_frame_state (ptid) == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/interrupt-while-step-over.exp: displaced-stepping=on: iter=0: interrupt -a (GDB internal error)
[...]
.../src/gdb/inline-frame.c:343: internal-error: void skip_inline_frames(ptid_t): Assertion `find_inline_frame_state (ptid) == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) FAIL: gdb.threads/interrupt-while-step-over.exp: displaced-stepping=off: iter=0: wait for stops (GDB internal error)
~~~
The assertion triggers because we're processing a stop for a thread
that had already stopped before and thus had already its inline-frame
state filled in.
Calling handle_inferior_event_1 directly within a
"thread_stop_requested" observer is something that I've wanted to get
rid of before, for being fragile. Nowadays, infrun is aware of
threads with pending events, so we can use that instead, and let the
normal fetch_inferior_event -> handle_inferior_event code path handle
the forced stop.
The change to finish_step_over is necessary because sometimes a thread
that was told to PTRACE_SINGLESTEP reports back a SIGSTOP instead of a
SIGTRAP (i.e., we tell it to single-step, and then interrupt it quick
enough that on the kernel side the thread dequeues the SIGTOP before
ever having had a chance of executing the instruction to be stepped).
SIGSTOP gets translated to a GDB_SIGNAL_0. And then finish_step_over
would miss calling clear_step_over_info, and thus miss restarting the
other threads (which in this case of threads with pending events,
means setting their "resumed" flag, so their pending events can be
consumed).
And now that we always restart threads in finish_step_over, we no
longer need to do that in handle_signal_stop.
Tested on x86_64 Fedora 23, native and gdbserver.
gdb/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR gdb/18360
* infrun.c (start_step_over, do_target_resume, resume)
(restart_threads): Assert we're not resuming a thread that is
meant to be stopped.
(infrun_thread_stop_requested_callback): Delete.
(infrun_thread_stop_requested): If the thread is internally
stopped, queue a pending stop event and clear the thread's
inline-frame state.
(handle_stop_requested): New function.
(handle_syscall_event, handle_inferior_event_1): Use
handle_stop_requested.
(handle_stop_requested): New function.
(handle_signal_stop): Set the thread's stop_signal here instead of
at caller.
(finish_step_over): Clear step over info unconditionally.
(handle_signal_stop): If the user had interrupted the event
thread, consider the stop a random signal.
(handle_signal_stop) <signal arrived while stepping over
breakpoint>: Don't restart threads here.
(stop_waiting): Don't clear step-over info here.
gdb/testsuite/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR gdb/18360
* gdb.threads/interrupt-while-step-over.c: New file.
* gdb.threads/interrupt-while-step-over.exp: New file.
2017-03-08 19:54:34 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/18360
|
|
|
|
|
* infrun.c (start_step_over, do_target_resume, resume)
|
|
|
|
|
(restart_threads): Assert we're not resuming a thread that is
|
|
|
|
|
meant to be stopped.
|
|
|
|
|
(infrun_thread_stop_requested_callback): Delete.
|
|
|
|
|
(infrun_thread_stop_requested): If the thread is internally
|
|
|
|
|
stopped, queue a pending stop event and clear the thread's
|
|
|
|
|
inline-frame state.
|
|
|
|
|
(handle_stop_requested): New function.
|
|
|
|
|
(handle_syscall_event, handle_inferior_event_1): Use
|
|
|
|
|
handle_stop_requested.
|
|
|
|
|
(handle_stop_requested): New function.
|
|
|
|
|
(handle_signal_stop): Set the thread's stop_signal here instead of
|
|
|
|
|
at caller.
|
|
|
|
|
(finish_step_over): Clear step over info unconditionally.
|
|
|
|
|
(handle_signal_stop): If the user had interrupted the event
|
|
|
|
|
thread, consider the stop a random signal.
|
|
|
|
|
(handle_signal_stop) <signal arrived while stepping over
|
|
|
|
|
breakpoint>: Don't restart threads here.
|
|
|
|
|
(stop_waiting): Don't clear step-over info here.
|
|
|
|
|
|
2017-03-08 16:52:16 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR 21206
|
|
|
|
|
* common/gdb_unlinker.h (unlinker::unlinker): Attribute nonnull
|
|
|
|
|
goes to argument 2, not 1.
|
|
|
|
|
|
Fix PR 21218: GDB dumps core when escaping newline in multi-line command
With commit 3b12939dfc2399 ("Replace the sync_execution global with a
new enum prompt_state tristate"), GDB started aborting if you try
splitting an input line with a continuation char (backslash) while in
a multi-line command:
(gdb) commands
Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>print \
(gdb) 1 # note "(gdb)" incorrectly printed here.
>end
readline: readline_callback_read_char() called with no handler!
$
That abort is actually a symptom of an old problem introduced when
gdb_readline_wrapper was rewritten to use asynchronous readline, back
in 2007. Note how the "(gdb)" prompt is printed above in the "(gdb)
1" line. Clearly it shouldn't be there, but it already was before the
commit mentioned above. Fixing that also fixes the readline abort
shown above.
The problem starts when command_line_input passes a NULL prompt to
gdb_readline_wrapper when it finds previous incomplete input due to a
backslash, trying to fetch more input without printing another ">"
secondary prompt. That itself should not be a problem, because
passing NULL to gdb_readline_wrapper has the same meaning as passing a
pointer to empty string, since gdb_readline_wrapper exposes the same
interface as 'readline(char *)'. However, gdb_readline_wrapper passes
the prompt argument directly to display_gdb_prompt, and for the
latter, a NULL prompt argument has a different meaning - it requests
printing the primary prompt.
Before commit 782a7b8ef9c096 (which rewrote gdb_readline_wrapper to
use asynchronous readline), GDB behaved like this:
(gdb) commands
[....]
>print \
1
>end
(gdb)
The above is what this commit restores GDB back to.
New test included.
gdb/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR cli/21218
* top.c (gdb_readline_wrapper): Avoid passing NULL to
display_gdb_prompt.
(command_line_input): Add comment.
gdb/testsuite/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
Jan Kratochvil <jan.kratochvil@redhat.com>
PR cli/21218
* gdb.base/commands.exp (backslash_in_multi_line_command_test):
New proc.
(top level): Call it.
2017-03-08 12:41:35 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR cli/21218
|
|
|
|
|
* top.c (gdb_readline_wrapper): Avoid passing NULL to
|
|
|
|
|
display_gdb_prompt.
|
|
|
|
|
(command_line_input): Add comment.
|
|
|
|
|
|
Fix PR tui/21216: TUI line breaks regression
Commit d7e747318f4d04 ("Eliminate make_cleanup_ui_file_delete / make
ui_file a class hierarchy") regressed the TUI's command window.
Newlines miss doing a "carriage return", resulting in output like:
~~~~~~~~~~~~~~~~~~
(gdb) helpList of classes of commands:
aliases -- Aliases of other commands
breakpoints -- Making program stop at certain points
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Before the commit mentioned above, the default ui_file->to_write
implementation had a hack that would defer into the ui_file->to_fputs
method. The TUI's ui_file did not implement the to_write method, so
all writes would end up going to the ncurses window via tui_file_fputs
-> tui_puts.
After the commit above, the hack is gone, but the TUI's ui_file still
does not implement the ui_file::write method. Since tui_file inherits
from stdio_file, writing to a tui_file ends up doing fwrite on the
FILE stream the TUI is "associated" with, via stdio_file::write,
instead of writing to the ncurses window.
The fix is to have tui_file override the "write" method.
New test included.
gdb/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR tui/21216
* tui/tui-file.c (tui_file::write): New.
* tui/tui-file.h (tui_file): Override "write".
* tui/tui-io.c (do_tui_putc, update_start_line): New functions,
factored out from ...
(tui_puts): ... here.
(tui_putc): Use them.
(tui_write): New function.
* tui/tui-io.h (tui_write): Declare.
gdb/testsuite/ChangeLog:
2017-03-08 Pedro Alves <palves@redhat.com>
PR tui/21216
* gdb.tui/tui-nl-filtered-output.exp: New file.
2017-03-08 01:14:59 +01:00
|
|
|
|
2017-03-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR tui/21216
|
|
|
|
|
* tui/tui-file.c (tui_file::write): New.
|
|
|
|
|
* tui/tui-file.h (tui_file): Override "write".
|
|
|
|
|
* tui/tui-io.c (do_tui_putc, update_start_line): New functions,
|
|
|
|
|
factored out from ...
|
|
|
|
|
(tui_puts): ... here.
|
|
|
|
|
(tui_putc): Use them.
|
|
|
|
|
(tui_write): New function.
|
|
|
|
|
* tui/tui-io.h (tui_write): Declare.
|
|
|
|
|
|
2016-12-22 15:20:00 +01:00
|
|
|
|
2017-03-07 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Replace "environ.c" with
|
|
|
|
|
"common/environ.c".
|
|
|
|
|
(HFILES_NO_SRCDIR): Likewise, for "environ.h".
|
|
|
|
|
* environ.c: Include "common-defs.h" instead of "defs.h. Moved
|
|
|
|
|
to...
|
|
|
|
|
* common/environ.c: ... here.
|
|
|
|
|
* environ.h: Moved to...
|
|
|
|
|
* common/environ.h: ... here.
|
|
|
|
|
|
2017-03-07 16:49:10 +01:00
|
|
|
|
2017-03-07 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* gdbarch.sh (pstring_ptr): New static function.
|
|
|
|
|
(gdbarch_disassembler_options): Use it.
|
|
|
|
|
(gdbarch_verify_disassembler_options): Print valid_disassembler_options,
|
|
|
|
|
not valid_disassembler_option->name.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
|
2017-03-07 16:39:13 +01:00
|
|
|
|
2017-03-07 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* config/powerpc/ppc64-linux.mh (MH_CFLAGS): Delete.
|
|
|
|
|
|
Fix "layout reg" crash
Commit d7e747318f4d04 ("Eliminate make_cleanup_ui_file_delete / make
ui_file a class hierarchy") introduced a problem when using "layout
regs", that leads gdb to crash when issuing:
./gdb ./a.out -ex 'layout regs' -ex start
From the backtrace, it's caused by this 'delete' on tui_restore_gdbout():
(gdb) bt
#0 0x00007ffff6b962b2 in free () from /lib64/libc.so.6
#1 0x000000000059fa47 in tui_restore_gdbout (ui=0x22997b0) at ../../gdb/tui/tui-regs.c:714
#2 0x0000000000619996 in do_my_cleanups (pmy_chain=pmy_chain@entry=0x1e08320 <cleanup_chain>, old_chain=old_chain@entry=0x235b4b0) at ../../gdb/common/cleanups.c:154
#3 0x0000000000619b1d in do_cleanups (old_chain=old_chain@entry=0x235b4b0) at ../../gdb/common/cleanups.c:176
#4 0x000000000059fb0d in tui_register_format (frame=frame@entry=0x22564e0, regnum=regnum@entry=0) at ../../gdb/tui/tui-regs.c:747
#5 0x000000000059ffeb in tui_get_register (data=0x2434d18, changedp=0x0, regnum=0, frame=0x22564e0) at ../../gdb/tui/tui-regs.c:768
#6 tui_show_register_group (refresh_values_only=<optimized out>, frame=0x22564e0, group=0x1e09250 <general_group>) at ../../gdb/tui/tui-regs.c:287
#7 tui_show_registers (group=0x1e09250 <general_group>) at ../../gdb/tui/tui-regs.c:156
#8 0x00000000005a07cf in tui_check_register_values (frame=frame@entry=0x22564e0) at ../../gdb/tui/tui-regs.c:496
#9 0x00000000005a3e65 in tui_check_data_values (frame=frame@entry=0x22564e0) at ../../gdb/tui/tui-windata.c:232
#10 0x000000000059cf65 in tui_refresh_frame_and_register_information (registers_too_p=1) at ../../gdb/tui/tui-hooks.c:156
#11 0x00000000006d5c05 in generic_observer_notify (args=0x7fffffffdbe0, subject=<optimized out>) at ../../gdb/observer.c:167
#12 observer_notify_normal_stop (bs=<optimized out>, print_frame=print_frame@entry=1) at ./observer.inc:61
#13 0x00000000006a6409 in normal_stop () at ../../gdb/infrun.c:8364
#14 0x00000000006af8f5 in fetch_inferior_event (client_data=<optimized out>) at ../../gdb/infrun.c:3990
#15 0x000000000066f0fd in gdb_wait_for_event (block=block@entry=0) at ../../gdb/event-loop.c:859
#16 0x000000000066f237 in gdb_do_one_event () at ../../gdb/event-loop.c:322
#17 0x000000000066f386 in gdb_do_one_event () at ../../gdb/event-loop.c:353
#18 0x00000000007411bc in wait_sync_command_done () at ../../gdb/top.c:570
#19 0x0000000000741426 in maybe_wait_sync_command_done (was_sync=0) at ../../gdb/top.c:587
#20 execute_command (p=<optimized out>, p@entry=0x7fffffffe43a "start", from_tty=from_tty@entry=1) at ../../gdb/top.c:676
#21 0x00000000006c2048 in catch_command_errors (command=0x741200 <execute_command(char*, int)>, arg=0x7fffffffe43a "start", from_tty=1) at ../../gdb/main.c:376
#22 0x00000000006c2b60 in captured_main_1 (context=0x7fffffffde70) at ../../gdb/main.c:1119
#23 captured_main (data=0x7fffffffde70) at ../../gdb/main.c:1140
#24 gdb_main (args=args@entry=0x7fffffffdf90) at ../../gdb/main.c:1158
#25 0x0000000000408cf5 in main (argc=<optimized out>, argv=<optimized out>) at ../../gdb/gdb.c:32
(gdb) f 1
#1 0x000000000059fa47 in tui_restore_gdbout (ui=0x22997b0) at ../../gdb/tui/tui-regs.c:714
714 delete gdb_stdout;
The problem is simply that the commit mentioned above made the ui_file
that gdb_stdout is temporarily set to be a stack-allocated
string_file, while before it used to be a heap-allocated ui_file. The
fix is simply to remove the now-incorrect delete.
New test included, which exercises enabling all TUI layouts, with and
without execution. (This particular crash only triggers with
execution.)
gdb/ChangeLog:
2017-03-07 Pedro Alves <palves@redhat.com>
* tui/tui-regs.c (tui_restore_gdbout): Don't delete gdb_stdout.
gdb/testsuite/ChangeLog:
2017-03-07 Pedro Alves <palves@redhat.com>
* gdb.base/tui-layout.c: New file.
* gdb.base/tui-layout.exp: New file.
2017-03-07 13:44:58 +01:00
|
|
|
|
2017-03-07 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* tui/tui-regs.c (tui_restore_gdbout): Don't delete gdb_stdout.
|
|
|
|
|
|
2017-03-07 14:51:33 +01:00
|
|
|
|
2017-03-07 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
2017-03-07 13:53:41 +01:00
|
|
|
|
|
|
|
|
|
* i387-tdep.h (i387_reset_bnd_regs): Add function definition.
|
|
|
|
|
* i387-tdep.c (i387_reset_bnd_regs): Add function implementation.
|
|
|
|
|
* i386-tdep.c (i386_push_dummy_call): Call i387_reset_bnd_regs.
|
2017-03-07 14:51:33 +01:00
|
|
|
|
* amd64-tdep.c (amd64_push_dummy_call): Call i387_reset_bnd_regs.
|
2017-03-07 13:53:41 +01:00
|
|
|
|
|
2017-03-06 22:06:42 +01:00
|
|
|
|
2017-03-06 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* xtensa-linux-nat.c (fetch_gregs): Remove const.
|
|
|
|
|
|
2017-03-03 18:58:24 +01:00
|
|
|
|
2017-03-03 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_target_side_commands): Use range-based
|
|
|
|
|
for loop.
|
|
|
|
|
|
2017-03-03 18:16:19 +01:00
|
|
|
|
2017-03-03 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/21165
|
|
|
|
|
* ada-valprint.c (ada_val_print_ref): Call value_fetch_lazy if
|
|
|
|
|
value is lazy.
|
|
|
|
|
* valprint.c (common_val_print): Likewise.
|
|
|
|
|
|
2017-02-28 19:32:07 +01:00
|
|
|
|
2017-02-28 Peter Bergner <bergner@vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention new set/show disassembler-options commands.
|
|
|
|
|
* doc/gdb.texinfo: Document new set/show disassembler-options commands.
|
|
|
|
|
* disasm.c: Include "arch-utils.h", "gdbcmd.h" and "safe-ctype.h".
|
|
|
|
|
(prospective_options): New static variable.
|
|
|
|
|
(gdb_disassembler::gdb_disassembler): Initialize
|
|
|
|
|
m_di.disassembler_options.
|
|
|
|
|
(gdb_buffered_insn_length_init_dis): Initilize di->disassembler_options.
|
|
|
|
|
(get_disassembler_options): New function.
|
|
|
|
|
(set_disassembler_options): Likewise.
|
|
|
|
|
(set_disassembler_options_sfunc): Likewise.
|
|
|
|
|
(show_disassembler_options_sfunc): Likewise.
|
|
|
|
|
(disassembler_options_completer): Likewise.
|
|
|
|
|
(_initialize_disasm): Likewise.
|
|
|
|
|
* disasm.h (get_disassembler_options): New prototype.
|
|
|
|
|
(set_disassembler_options): Likewise.
|
|
|
|
|
* gdbarch.sh (gdbarch_disassembler_options): New variable.
|
|
|
|
|
(gdbarch_verify_disassembler_options): Likewise.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
* gdbarch.h: Likewise.
|
|
|
|
|
* arm-tdep.c (num_disassembly_options): Delete.
|
|
|
|
|
(set_disassembly_style): Likewise.
|
|
|
|
|
(arm_disassembler_options): New static variable.
|
|
|
|
|
(set_disassembly_style_sfunc): Convert short style name into long
|
|
|
|
|
option name. Call set_disassembler_options.
|
|
|
|
|
(show_disassembly_style_sfunc): New function.
|
|
|
|
|
(arm_gdbarch_init): Call set_gdbarch_disassembler_options and
|
|
|
|
|
set_gdbarch_verify_disassembler_options.
|
|
|
|
|
(_initialize_arm_tdep): Delete regnames variable and update callers.
|
|
|
|
|
(arm_disassembler_options): Initialize.
|
|
|
|
|
(disasm_options): New variable.
|
|
|
|
|
(num_disassembly_options): Rename from this...
|
|
|
|
|
(num_disassembly_styles): ...to this. Compute by scanning through
|
|
|
|
|
disasm_options.
|
|
|
|
|
(valid_disassembly_styles): Initialize using disasm_options.
|
|
|
|
|
Remove calls to parse_arm_disassembler_option, get_arm_regnames and
|
|
|
|
|
set_arm_regname_option.
|
|
|
|
|
Pass show_disassembly_style_sfunc to the "disassembler" setshow command.
|
|
|
|
|
* rs6000-tdep.c (powerpc_disassembler_options): New static variable.
|
|
|
|
|
(rs6000_gdbarch_init): Call set_gdbarch_disassembler_options and
|
|
|
|
|
set_gdbarch_verify_disassembler_options.
|
|
|
|
|
* s390-tdep.c (s390_disassembler_options): New static variable.
|
|
|
|
|
(s390_gdbarch_init):all set_gdbarch_disassembler_options and
|
|
|
|
|
set_gdbarch_verify_disassembler_options.
|
|
|
|
|
|
2017-02-27 20:09:34 +01:00
|
|
|
|
2017-02-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_target_side_condition): Remove "struct"
|
|
|
|
|
keyword from range-based for loop.
|
|
|
|
|
|
2017-02-27 19:54:53 +01:00
|
|
|
|
2017-02-27 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_add_target_side_condition): Use range-based
|
|
|
|
|
for loop. Update comment.
|
|
|
|
|
|
Fix array out of bound access
ASAN reports the following error,
(gdb) PASS: gdb.fortran/vla-ptr-info.exp: continue to breakpoint: pvla-associated
print &pvla^M
=================================================================^M
^[[1m^[[31m==14331==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000000ea569f at pc 0x0000008eb546 bp 0x7ffde0c1dc70 sp 0x7ffde0c1dc60^M
^[[1m^[[0m^[[1m^[[34mREAD of size 1 at 0x000000ea569f thread T0^[[1m^[[0m^M
#0 0x8eb545 in f_print_type(type*, char const*, ui_file*, int, int, type_print_options const*) ../../binutils-gdb/gdb/f-typeprint.c:89^M
#1 0xb611e2 in type_print(type*, char const*, ui_file*, int) ../../binutils-gdb/gdb/typeprint.c:365^M
#2 0x7b3471 in c_value_print(value*, ui_file*, value_print_options const*) ../../binutils-gdb/gdb/c-valprint.c:650^M
#3 0xb99517 in value_print(value*, ui_file*, value_print_options const*) ../../binutils-gdb/gdb/valprint.c:1233^M
#4 0xa42be8 in print_formatted ../../binutils-gdb/gdb/printcmd.c:321^M
#5 0xa46ac9 in print_value(value*, format_data const*) ../../binutils-gdb/gdb/printcmd.c:1233^M
#6 0xa46d82 in print_command_1 ../../binutils-gdb/gdb/printcmd.c:1261^M
#7 0xa46e3e in print_command ../../binutils-gdb/gdb/printcmd.c:1267
on this line of code
demangled_args = varstring[strlen (varstring) - 1] == ')';
because varstring is an empty string and strlen () is 0, so "strlen () - 1"
is definitely out of the bound of "varstring",
(gdb) bt 10
at /home/yao/SourceCode/gnu/gdb/git/gdb/f-typeprint.c:56
at /home/yao/SourceCode/gnu/gdb/git/gdb/typeprint.c:365
at /home/yao/SourceCode/gnu/gdb/git/gdb/c-valprint.c:650
at /home/yao/SourceCode/gnu/gdb/git/gdb/valprint.c:1236
This patch adds a pre-check that varstring is empty or not.
gdb:
2017-02-27 Yao Qi <yao.qi@linaro.org>
* f-typeprint.c (f_print_type): Check "varstring" is empty first.
2017-02-27 18:27:17 +01:00
|
|
|
|
2017-02-27 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* f-typeprint.c (f_print_type): Check "varstring" is empty first.
|
|
|
|
|
|
2017-02-27 10:58:35 +01:00
|
|
|
|
2017-02-26 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* regcache.c (regcache_raw_update): New function.
|
|
|
|
|
(regcache_raw_read): Move code to regcache_raw_update.
|
|
|
|
|
* regcache.h (regcache_raw_update): New declaration.
|
|
|
|
|
* remote.c (remote_prepare_to_store): Call regcache_raw_update.
|
|
|
|
|
|
2017-02-26 16:54:51 +01:00
|
|
|
|
2017-02-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (create_debug_type_hash_table): Initialize
|
|
|
|
|
header.signature and header.type_offset_in_tu.
|
|
|
|
|
|
2017-02-24 18:42:51 +01:00
|
|
|
|
2017-02-24 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (make_file_symbol_completion_list_1): Use
|
|
|
|
|
add_symtab_completions.
|
|
|
|
|
|
2017-02-24 17:09:48 +01:00
|
|
|
|
2017-02-24 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (frame_info): Use frame_unwind_register_value to avoid buf.
|
|
|
|
|
|
2017-02-24 17:09:43 +01:00
|
|
|
|
2017-02-24 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_pseudo_register_read_into_value): Use
|
|
|
|
|
I386_MAX_REGISTER_SIZE.
|
|
|
|
|
(i386_pseudo_register_write): Likewise.
|
|
|
|
|
(i386_process_record): Likewise.
|
|
|
|
|
* i387-tdep.c (i387_supply_xsave): Likewise.
|
|
|
|
|
* m68k-linux-nat.c (fetch_register): Use M68K_MAX_REGISTER_SIZE.
|
|
|
|
|
(store_register): Likewise.
|
|
|
|
|
|
Use gdb::function_view in iterate_over_symtabs & co
I wanted to pass a lambda to iterate_over_symtabs (see following
patch), so I converted it to function_view, and then the rest is
cascaded from that.
This gets rid of a bunch of single-use callback functions and
corresponding manually managed callback capture types
(add_partial_datum, search_symbols_data, etc.) in favor of letting the
compiler generate them for us by using lambdas with a capture. In a
couple cases, it was more natural to convert the existing function
callbacks to function objects (i.e., operator(), e.g.,
decode_compound_collector).
gdb/ChangeLog:
2017-02-23 Pedro Alves <palves@redhat.com>
* ada-lang.c: Include "common/function-view.h".
(ada_iterate_over_symbols): Adjust to use function_view as
callback type.
(struct add_partial_datum, ada_complete_symbol_matcher): Delete.
(ada_make_symbol_completion_list): Use a lambda.
(ada_exc_search_name_matches): Delete.
(name_matches_regex): New.
(ada_add_global_exceptions): Use a lambda and name_matches_regex.
* compile/compile-c-support.c: Include "common/function-view.h".
(print_one_macro): Change prototype to accept a ui_file pointer.
(write_macro_definitions): Use a lambda.
* dwarf2read.c: Include "common/function-view.h".
(dw2_map_expand_apply, dw2_map_symtabs_matching_filename)
(dw2_expand_symtabs_matching): Adjust to use function_view as
callback type.
* language.h: Include "common/function-view.h".
(struct language_defn) <la_iterate_over_symbols>: Adjust to use
function_view as callback type.
(LA_ITERATE_OVER_SYMBOLS): Remove DATA parameter.
* linespec.c: Include "common/function-view.h".
(collect_info::add_symbol): New method.
(struct symbol_and_data_callback, iterate_inline_only, struct
symbol_matcher_data, iterate_name_matcher): Delete.
(iterate_over_all_matching_symtabs): Adjust to use function_view
as callback type and lambdas.
(iterate_over_file_blocks): Adjust to use function_view as
callback type.
(decode_compound_collector): Now a class with private fields.
(decode_compound_collector::release_symbols): New method.
(collect_one_symbol): Rename to...
(decode_compound_collector::operator()): ... this and adjust.
(lookup_prefix_sym): decode_compound_collector construction bits
move to decode_compound_collector ctor. Pass the
decode_compound_collector object directly as callback. Remove
cleanups and use decode_compound_collector::release_symbols
instead.
(symtab_collector): Now a class with private fields.
(symtab_collector::release_symtabs): New method.
(add_symtabs_to_list): Rename to...
(symtab_collector::operator()): ... this and adjust.
(collect_symtabs_from_filename): symtab_collector construction
bits move to symtab_collector ctor. Pass the symtab_collector
object directly as callback. Remove cleanups and use
symtab_collector::release_symtabs instead.
(collect_symbols): Delete.
(add_matching_symbols_to_info): Use lambdas.
* macrocmd.c (print_macro_callback): Delete.
(info_macro_command): Use a lambda.
(info_macros_command): Pass print_macro_definition as callable
directly.
(print_one_macro): Remove 'ignore' parameter.
(macro_list_command): Adjust.
* macrotab.c (macro_for_each_data::fn): Now a function_view.
(macro_for_each_data::user_data): Delete field.
(foreach_macro): Adjust to call the function_view.
(macro_for_each): Adjust to use function_view as callback type.
(foreach_macro_in_scope): Adjust to call the function_view.
(macro_for_each_in_scope): Adjust to use function_view as callback
type.
* macrotab.h: Include "common/function-view.h".
(macro_callback_fn): Declare a prototype instead of a pointer.
Remove "user_data" parameter.
(macro_for_each, macro_for_each_in_scope): Adjust to use
function_view as callback type.
* psymtab.c (partial_map_expand_apply)
(psym_map_symtabs_matching_filename, recursively_search_psymtabs):
Adjust to use function_view as callback type and to return bool.
(psym_expand_symtabs_matching): Adjust to use function_view as
callback types.
* symfile-debug.c (debug_qf_map_symtabs_matching_filename): Adjust
to use function_view as callback type and to return bool.
(debug_qf_expand_symtabs_matching): Adjust to use function_view as
callback types.
* symfile.c (expand_symtabs_matching): Adjust to use function_view
as callback types.
* symfile.h: Include "common/function-view.h".
(expand_symtabs_file_matcher_ftype)
(expand_symtabs_symbol_matcher_ftype)
(expand_symtabs_exp_notify_ftype): Remove "data" parameter and
return bool.
(quick_symbol_functions::map_symtabs_matching_filename)
(quick_symbol_functions::expand_symtabs_matching): Adjust to use
function_view as callback type and return bool.
(expand_symtabs_matching): Adjust to use function_view as callback
type.
(maintenance_expand_name_matcher)
(maintenance_expand_file_matcher): Delete.
(maintenance_expand_symtabs): Use lambdas.
* symtab.c (iterate_over_some_symtabs): Adjust to use
function_view as callback types and return bool.
(iterate_over_symtabs): Likewise. Use unique_xmalloc_ptr instead
of a cleanup.
(lookup_symtab_callback): Delete.
(lookup_symtab): Use a lambda.
(iterate_over_symbols): Adjust to use function_view as callback
type.
(struct search_symbols_data, search_symbols_file_matches)
(search_symbols_name_matches): Delete.
(search_symbols): Use a pair of lambdas.
(struct add_name_data, add_macro_name, symbol_completion_matcher)
(symtab_expansion_callback): Delete.
(default_make_symbol_completion_list_break_on_1): Use lambdas.
* symtab.h: Include "common/function-view.h".
(iterate_over_some_symtabs): Adjust to use function_view as
callback type and return bool.
(iterate_over_symtabs): Adjust to use function_view as callback
type.
(symbol_found_callback_ftype): Remove 'data' parameter and return
bool.
(iterate_over_symbols): Adjust to use function_view as callback
type.
2017-02-22 15:43:35 +01:00
|
|
|
|
2017-02-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c: Include "common/function-view.h".
|
|
|
|
|
(ada_iterate_over_symbols): Adjust to use function_view as
|
|
|
|
|
callback type.
|
|
|
|
|
(struct add_partial_datum, ada_complete_symbol_matcher): Delete.
|
|
|
|
|
(ada_make_symbol_completion_list): Use a lambda.
|
|
|
|
|
(ada_exc_search_name_matches): Delete.
|
|
|
|
|
(name_matches_regex): New.
|
|
|
|
|
(ada_add_global_exceptions): Use a lambda and name_matches_regex.
|
|
|
|
|
* compile/compile-c-support.c: Include "common/function-view.h".
|
|
|
|
|
(print_one_macro): Change prototype to accept a ui_file pointer.
|
|
|
|
|
(write_macro_definitions): Use a lambda.
|
|
|
|
|
* dwarf2read.c: Include "common/function-view.h".
|
|
|
|
|
(dw2_map_expand_apply, dw2_map_symtabs_matching_filename)
|
|
|
|
|
(dw2_expand_symtabs_matching): Adjust to use function_view as
|
|
|
|
|
callback type.
|
|
|
|
|
* language.h: Include "common/function-view.h".
|
|
|
|
|
(struct language_defn) <la_iterate_over_symbols>: Adjust to use
|
|
|
|
|
function_view as callback type.
|
|
|
|
|
(LA_ITERATE_OVER_SYMBOLS): Remove DATA parameter.
|
|
|
|
|
* linespec.c: Include "common/function-view.h".
|
|
|
|
|
(collect_info::add_symbol): New method.
|
|
|
|
|
(struct symbol_and_data_callback, iterate_inline_only, struct
|
|
|
|
|
symbol_matcher_data, iterate_name_matcher): Delete.
|
|
|
|
|
(iterate_over_all_matching_symtabs): Adjust to use function_view
|
|
|
|
|
as callback type and lambdas.
|
|
|
|
|
(iterate_over_file_blocks): Adjust to use function_view as
|
|
|
|
|
callback type.
|
|
|
|
|
(decode_compound_collector): Now a class with private fields.
|
|
|
|
|
(decode_compound_collector::release_symbols): New method.
|
|
|
|
|
(collect_one_symbol): Rename to...
|
|
|
|
|
(decode_compound_collector::operator()): ... this and adjust.
|
|
|
|
|
(lookup_prefix_sym): decode_compound_collector construction bits
|
|
|
|
|
move to decode_compound_collector ctor. Pass the
|
|
|
|
|
decode_compound_collector object directly as callback. Remove
|
|
|
|
|
cleanups and use decode_compound_collector::release_symbols
|
|
|
|
|
instead.
|
|
|
|
|
(symtab_collector): Now a class with private fields.
|
|
|
|
|
(symtab_collector::release_symtabs): New method.
|
|
|
|
|
(add_symtabs_to_list): Rename to...
|
|
|
|
|
(symtab_collector::operator()): ... this and adjust.
|
|
|
|
|
(collect_symtabs_from_filename): symtab_collector construction
|
|
|
|
|
bits move to symtab_collector ctor. Pass the symtab_collector
|
|
|
|
|
object directly as callback. Remove cleanups and use
|
|
|
|
|
symtab_collector::release_symtabs instead.
|
|
|
|
|
(collect_symbols): Delete.
|
|
|
|
|
(add_matching_symbols_to_info): Use lambdas.
|
|
|
|
|
* macrocmd.c (print_macro_callback): Delete.
|
|
|
|
|
(info_macro_command): Use a lambda.
|
|
|
|
|
(info_macros_command): Pass print_macro_definition as callable
|
|
|
|
|
directly.
|
|
|
|
|
(print_one_macro): Remove 'ignore' parameter.
|
|
|
|
|
(macro_list_command): Adjust.
|
|
|
|
|
* macrotab.c (macro_for_each_data::fn): Now a function_view.
|
|
|
|
|
(macro_for_each_data::user_data): Delete field.
|
|
|
|
|
(foreach_macro): Adjust to call the function_view.
|
|
|
|
|
(macro_for_each): Adjust to use function_view as callback type.
|
|
|
|
|
(foreach_macro_in_scope): Adjust to call the function_view.
|
|
|
|
|
(macro_for_each_in_scope): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
* macrotab.h: Include "common/function-view.h".
|
|
|
|
|
(macro_callback_fn): Declare a prototype instead of a pointer.
|
|
|
|
|
Remove "user_data" parameter.
|
|
|
|
|
(macro_for_each, macro_for_each_in_scope): Adjust to use
|
|
|
|
|
function_view as callback type.
|
|
|
|
|
* psymtab.c (partial_map_expand_apply)
|
|
|
|
|
(psym_map_symtabs_matching_filename, recursively_search_psymtabs):
|
|
|
|
|
Adjust to use function_view as callback type and to return bool.
|
|
|
|
|
(psym_expand_symtabs_matching): Adjust to use function_view as
|
|
|
|
|
callback types.
|
|
|
|
|
* symfile-debug.c (debug_qf_map_symtabs_matching_filename): Adjust
|
|
|
|
|
to use function_view as callback type and to return bool.
|
|
|
|
|
(debug_qf_expand_symtabs_matching): Adjust to use function_view as
|
|
|
|
|
callback types.
|
|
|
|
|
* symfile.c (expand_symtabs_matching): Adjust to use function_view
|
|
|
|
|
as callback types.
|
|
|
|
|
* symfile.h: Include "common/function-view.h".
|
|
|
|
|
(expand_symtabs_file_matcher_ftype)
|
|
|
|
|
(expand_symtabs_symbol_matcher_ftype)
|
|
|
|
|
(expand_symtabs_exp_notify_ftype): Remove "data" parameter and
|
|
|
|
|
return bool.
|
|
|
|
|
(quick_symbol_functions::map_symtabs_matching_filename)
|
|
|
|
|
(quick_symbol_functions::expand_symtabs_matching): Adjust to use
|
|
|
|
|
function_view as callback type and return bool.
|
|
|
|
|
(expand_symtabs_matching): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
(maintenance_expand_name_matcher)
|
|
|
|
|
(maintenance_expand_file_matcher): Delete.
|
|
|
|
|
(maintenance_expand_symtabs): Use lambdas.
|
|
|
|
|
* symtab.c (iterate_over_some_symtabs): Adjust to use
|
|
|
|
|
function_view as callback types and return bool.
|
|
|
|
|
(iterate_over_symtabs): Likewise. Use unique_xmalloc_ptr instead
|
|
|
|
|
of a cleanup.
|
|
|
|
|
(lookup_symtab_callback): Delete.
|
|
|
|
|
(lookup_symtab): Use a lambda.
|
|
|
|
|
(iterate_over_symbols): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
(struct search_symbols_data, search_symbols_file_matches)
|
|
|
|
|
(search_symbols_name_matches): Delete.
|
|
|
|
|
(search_symbols): Use a pair of lambdas.
|
|
|
|
|
(struct add_name_data, add_macro_name, symbol_completion_matcher)
|
|
|
|
|
(symtab_expansion_callback): Delete.
|
|
|
|
|
(default_make_symbol_completion_list_break_on_1): Use lambdas.
|
|
|
|
|
* symtab.h: Include "common/function-view.h".
|
|
|
|
|
(iterate_over_some_symtabs): Adjust to use function_view as
|
|
|
|
|
callback type and return bool.
|
|
|
|
|
(iterate_over_symtabs): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
(symbol_found_callback_ftype): Remove 'data' parameter and return
|
|
|
|
|
bool.
|
|
|
|
|
(iterate_over_symbols): Adjust to use function_view as callback
|
|
|
|
|
type.
|
|
|
|
|
|
2017-02-23 17:14:08 +01:00
|
|
|
|
2017-02-23 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_UNITTESTS_SRCS, SUBDIR_UNITTESTS_OBS): New.
|
|
|
|
|
(%.o) <unittests/%.c>: New pattern.
|
|
|
|
|
* configure.ac ($development): Add $(SUBDIR_UNITTESTS_OBS) to
|
|
|
|
|
CONFIG_OBS, and $(SUBDIR_UNITTESTS_SRCS) to CONFIG_SRCS.
|
|
|
|
|
* common/function-view.h: New file.
|
|
|
|
|
* unittests/function-view-selftests.c: New file.
|
|
|
|
|
* configure: Regenerate.
|
|
|
|
|
|
2017-02-23 16:36:20 +01:00
|
|
|
|
2017-02-23 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* bsd-uthread.c (bsd_uthread_thread_alive): Use ptid instead of
|
|
|
|
|
inferior_ptid.
|
|
|
|
|
* go32-nat.c (go32_thread_alive): Likewise.
|
|
|
|
|
|
2017-02-23 12:57:46 +01:00
|
|
|
|
2017-02-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* varobj-iter.h (varobj_iter_delete): Call xfree instead of
|
|
|
|
|
delete.
|
|
|
|
|
|
Use delete instead of xfree for varobj_item
In commit 2f408ec (Use ui_file_as_string throughout more), we start to
new varobj_item,
> - vitem = XNEW (struct varobj_item);
> + vitem = new varobj_item ();
but we still use xfree. This causes some ASAN errors,
-var-update container^M
=================================================================^M
^[[1m^[[31m==20660==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs free) on 0x602000090c10^M
^[[1m^[[0m #0 0x2baa77d03631 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x54631)^M
#1 0x80e0c8 in xfree(void*) /home/yao/SourceCode/gnu/gdb/git/gdb/common/common-utils.c:100^M
#2 0xc13670 in varobj_clear_saved_item /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:727^M
#3 0xc13957 in update_dynamic_varobj_children /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:752^M
#4 0xc1841c in varobj_update(varobj**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:1699^M
#5 0x5a2bf7 in varobj_update_one /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:712^M
#6 0x5a2a41 in mi_cmd_var_update(char*, char**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:695^
........
^M
^[[1m^[[32m0x602000090c10 is located 0 bytes inside of 16-byte region [0x602000090c10,0x602000090c20)^M
^[[1m^[[0m^[[1m^[[35mallocated by thread T0 here:^[[1m^[[0m^M
#0 0x2baa77d0415f in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5515f)^M
#1 0x63613e in py_varobj_iter_next /home/yao/SourceCode/gnu/gdb/git/gdb/python/py-varobj.c:112^M
#2 0xc13b89 in update_dynamic_varobj_children /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:776^M
#3 0xc1841c in varobj_update(varobj**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:1699^M
#4 0x5a2bf7 in varobj_update_one /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:712^M
#5 0x5a2a41 in mi_cmd_var_update(char*, char**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:695^M
gdb:
2017-02-23 Yao Qi <yao.qi@linaro.org>
* varobj.c (varobj_clear_saved_item): Use delete instead of
xfree.
(update_dynamic_varobj_children): Likewise.
2017-02-23 12:05:03 +01:00
|
|
|
|
2017-02-23 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_clear_saved_item): Use delete instead of
|
|
|
|
|
xfree.
|
|
|
|
|
(update_dynamic_varobj_children): Likewise.
|
|
|
|
|
|
2017-02-22 00:13:03 +01:00
|
|
|
|
2017-02-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_record_block_ranges): Add forgotten BASEADDR.
|
|
|
|
|
|
2017-02-21 17:48:49 +01:00
|
|
|
|
2017-02-21 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* common/enum-flags.h (enum_flags::enum_flags): Initialize
|
|
|
|
|
m_enum_value to 0 in default constructor.
|
|
|
|
|
|
2017-02-21 15:14:56 +01:00
|
|
|
|
2017-02-21 Edjunior Barbosa Machado <emachado@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* rs6000-tdep.c (LOAD_AND_RESERVE_MASK): Rename from LWARX_MASK.
|
|
|
|
|
(STORE_CONDITIONAL_MASK): Rename from STWCX_MASK.
|
|
|
|
|
(LBARX_INSTRUCTION, LHARX_INSTRUCTION, LQARX_INSTRUCTION,
|
|
|
|
|
STBCX_INSTRUCTION, STHCX_INSTRUCTION, STQCX_INSTRUCTION): New defines.
|
|
|
|
|
(IS_LOAD_AND_RESERVE_INSN, IS_STORE_CONDITIONAL_INSN): New macros.
|
|
|
|
|
(ppc_displaced_step_copy_insn): Use IS_LOAD_AND_RESERVE_INSN.
|
|
|
|
|
(ppc_deal_with_atomic_sequence): Use IS_LOAD_AND_RESERVE_INSN and
|
|
|
|
|
IS_STORE_CONDITIONAL_INSN.
|
|
|
|
|
|
2017-02-21 09:14:37 +01:00
|
|
|
|
2017-02-21 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2_rnglists_process: Initialize range_beginning and range_end.
|
|
|
|
|
|
2017-02-20 20:53:22 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (Changes since GDB 7.12): Add DWARF-5.
|
|
|
|
|
|
2017-02-20 20:53:22 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (skip_one_die, read_attribute_value)
|
|
|
|
|
(dwarf2_const_value_attr, dump_die_shallow)
|
|
|
|
|
(dwarf2_get_attr_constant_value, dwarf2_fetch_constant_bytes)
|
|
|
|
|
(skip_form_bytes, attr_form_is_constant): Handle DW_FORM_data16.
|
|
|
|
|
|
2017-02-20 20:53:21 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (read_file_scope): Rename DW_MACRO_GNU_*.
|
|
|
|
|
(dwarf_parse_macro_header): Accept DWARF version 5.
|
|
|
|
|
(dwarf_decode_macro_bytes, dwarf_decode_macros): Rename DW_MACRO_GNU_*.
|
|
|
|
|
|
DWARF-5: call sites
this patch updates all call sites related DWARF-5 renames.
gdb/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* block.c (call_site_for_pc): Rename DW_OP_GNU_*, DW_TAG_GNU_* and
DW_AT_GNU_*.
* common/common-exceptions.h (enum errors): Likewise.
* dwarf2-frame.c (class dwarf_expr_executor): Likewise.
* dwarf2expr.c (dwarf_block_to_dwarf_reg)
(dwarf_expr_context::execute_stack_op): Likewise.
* dwarf2expr.h (struct dwarf_expr_context, struct dwarf_expr_piece):
Likewise.
* dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type)
(dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value)
(show_entry_values_debug, call_site_to_target_addr)
(func_addr_to_tail_call_list, func_verify_no_selftailcall)
(dwarf_expr_reg_to_entry_parameter, dwarf_entry_parameter_to_value)
(entry_data_value_free_closure, value_of_dwarf_reg_entry)
(value_of_dwarf_block_entry, indirect_pieced_value)
(symbol_needs_eval_context::push_dwarf_reg_entry_value):
(disassemble_dwarf_expression): Likewise.
* dwarf2read.c (process_die, inherit_abstract_dies)
(read_call_site_scope): Likewise.
* gdbtypes.h (struct func_type, struct call_site_parameter)
(struct call_site): Likewise.
* stack.c (read_frame_arg): Likewise.
* std-operator.def (OP_VAR_ENTRY_VALUE): Likewise.
gdb/doc/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.texinfo (Print Settings, Tail Call Frames): Rename DW_OP_GNU_*,
DW_TAG_GNU_* and DW_AT_GNU_*.
gdb/testsuite/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.arch/amd64-entry-value-param-dwarf5.S: New file.
* gdb.arch/amd64-entry-value-param-dwarf5.c: New file.
* gdb.arch/amd64-entry-value-param-dwarf5.exp: New file.
* gdb.arch/amd64-entry-value.exp: Rename DW_OP_GNU_*, DW_TAG_GNU_* and
DW_AT_GNU_*.
2017-02-20 20:53:21 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* block.c (call_site_for_pc): Rename DW_OP_GNU_*, DW_TAG_GNU_* and
|
|
|
|
|
DW_AT_GNU_*.
|
|
|
|
|
* common/common-exceptions.h (enum errors): Likewise.
|
|
|
|
|
* dwarf2-frame.c (class dwarf_expr_executor): Likewise.
|
|
|
|
|
* dwarf2expr.c (dwarf_block_to_dwarf_reg)
|
|
|
|
|
(dwarf_expr_context::execute_stack_op): Likewise.
|
|
|
|
|
* dwarf2expr.h (struct dwarf_expr_context, struct dwarf_expr_piece):
|
|
|
|
|
Likewise.
|
|
|
|
|
* dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type)
|
|
|
|
|
(dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value)
|
|
|
|
|
(show_entry_values_debug, call_site_to_target_addr)
|
|
|
|
|
(func_addr_to_tail_call_list, func_verify_no_selftailcall)
|
|
|
|
|
(dwarf_expr_reg_to_entry_parameter, dwarf_entry_parameter_to_value)
|
|
|
|
|
(entry_data_value_free_closure, value_of_dwarf_reg_entry)
|
|
|
|
|
(value_of_dwarf_block_entry, indirect_pieced_value)
|
|
|
|
|
(symbol_needs_eval_context::push_dwarf_reg_entry_value):
|
|
|
|
|
(disassemble_dwarf_expression): Likewise.
|
|
|
|
|
* dwarf2read.c (process_die, inherit_abstract_dies)
|
|
|
|
|
(read_call_site_scope): Likewise.
|
|
|
|
|
* gdbtypes.h (struct func_type, struct call_site_parameter)
|
|
|
|
|
(struct call_site): Likewise.
|
|
|
|
|
* stack.c (read_frame_arg): Likewise.
|
|
|
|
|
* std-operator.def (OP_VAR_ENTRY_VALUE): Likewise.
|
|
|
|
|
|
DWARF-5 basic functionality
this is a kitchen-sink patch for everything that did not fit into its own
patch.
DWO is not yet implemented.
gdb/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* defs.h (read_unsigned_leb128): New declaration.
* dwarf2loc.c (decode_debug_loclists_addresses): New function.
(decode_debug_loc_dwo_addresses): Update DEBUG_LOC_* to DW_LLE_*.
(dwarf2_find_location_expression): Call also
decode_debug_loclists_addresses. Handle DWARF-5 ULEB128 length.
* dwarf2loc.h (dwarf2_version): New declaration.
* dwarf2read.c (struct dwarf2_per_objfile): Add loclists, line_str,
rnglists.
(dwarf2_elf_names): Add .debug_loclists, .debug_line_str,
.debug_rnglists.
(struct dwop_section_names): Add loclists_dwo.
(dwop_section_names): Add .debug_loclists.dwo.
(struct comp_unit_head): Add unit_type, signature, type_offset_in_tu.
(struct dwarf2_per_cu_data): Add dwarf_version.
(struct dwo_sections): Add loclists.
(struct attr_abbrev): Add implicit_const.
(read_indirect_line_string): New declaration.
(read_unsigned_leb128): Delete declaration.
(rcuh_kind): New definition.
(read_and_check_comp_unit_head): Change parameter
is_debug_types_section to section_kind.
(dwarf2_locate_sections): Handle loclists, line_str and rnglists.
(read_comp_unit_head): Change parameter abfd to section, add parameter
section_kind. Handle DWARF-5.
(error_check_comp_unit_head): Accept also DWARF version 5.
(read_and_check_comp_unit_head): Change parameter
is_debug_types_section to section_kind.
(read_and_check_type_unit_head): Delete function.
(read_abbrev_offset): Handle DWARF-5.
(create_debug_type_hash_table): Add parameter section_kind. Process
only DW_UT_type. Use signature and type_offset_in_tu from struct
comp_unit_head.
(create_debug_types_hash_table): Update create_debug_type_hash_table
caller.
(create_all_type_units): Call create_debug_type_hash_table.
(read_cutu_die_from_dwo, init_cutu_and_read_dies): Change
read_and_check_type_unit_head caller to read_and_check_comp_unit_head
caller.
(skip_one_die): Handle DW_FORM_implicit_const.
(dwarf2_rnglists_process): New function.
(dwarf2_ranges_process): Call dwarf2_rnglists_process for DWARF-5.
(abbrev_table_read_table): Handle DW_FORM_implicit_const.
(read_attribute_value): Handle DW_FORM_implicit_const,
DW_FORM_line_strp.
(read_attribute): Handle DW_FORM_implicit_const.
(read_indirect_string_at_offset_from): New function from
read_indirect_string_at_offset.
(read_indirect_string_at_offset): Call
read_indirect_string_at_offset_from.
(read_indirect_line_string_at_offset): New function.
(read_indirect_string): New function comment.
(read_indirect_line_string): New function.
(read_unsigned_leb128): Make it global.
(dwarf2_string_attr): Handle DWARF-5.
(add_include_dir_stub, read_formatted_entries): New functions.
(dwarf_decode_line_header, dump_die_shallow, cu_debug_loc_section):
Handle DWARF-5.
(per_cu_header_read_in): Update read_comp_unit_head caller.
(dwarf2_version): New function.
* symfile.h (struct dwarf2_debug_sections): Add loclists, line_str and
rnglists.
* xcoffread.c (dwarf2_xcoff_names): Update struct dwarf2_debug_sections
fields.
gdb/testsuite/ChangeLog
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.dwarf2/dw2-error.exp (file $testfile): Update expected string.
2017-02-20 20:53:21 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* defs.h (read_unsigned_leb128): New declaration.
|
|
|
|
|
* dwarf2loc.c (decode_debug_loclists_addresses): New function.
|
|
|
|
|
(decode_debug_loc_dwo_addresses): Update DEBUG_LOC_* to DW_LLE_*.
|
|
|
|
|
(dwarf2_find_location_expression): Call also
|
|
|
|
|
decode_debug_loclists_addresses. Handle DWARF-5 ULEB128 length.
|
|
|
|
|
* dwarf2loc.h (dwarf2_version): New declaration.
|
|
|
|
|
* dwarf2read.c (struct dwarf2_per_objfile): Add loclists, line_str,
|
|
|
|
|
rnglists.
|
|
|
|
|
(dwarf2_elf_names): Add .debug_loclists, .debug_line_str,
|
|
|
|
|
.debug_rnglists.
|
|
|
|
|
(struct dwop_section_names): Add loclists_dwo.
|
|
|
|
|
(dwop_section_names): Add .debug_loclists.dwo.
|
|
|
|
|
(struct comp_unit_head): Add unit_type, signature, type_offset_in_tu.
|
|
|
|
|
(struct dwarf2_per_cu_data): Add dwarf_version.
|
|
|
|
|
(struct dwo_sections): Add loclists.
|
|
|
|
|
(struct attr_abbrev): Add implicit_const.
|
|
|
|
|
(read_indirect_line_string): New declaration.
|
|
|
|
|
(read_unsigned_leb128): Delete declaration.
|
|
|
|
|
(rcuh_kind): New definition.
|
|
|
|
|
(read_and_check_comp_unit_head): Change parameter
|
|
|
|
|
is_debug_types_section to section_kind.
|
|
|
|
|
(dwarf2_locate_sections): Handle loclists, line_str and rnglists.
|
|
|
|
|
(read_comp_unit_head): Change parameter abfd to section, add parameter
|
|
|
|
|
section_kind. Handle DWARF-5.
|
|
|
|
|
(error_check_comp_unit_head): Accept also DWARF version 5.
|
|
|
|
|
(read_and_check_comp_unit_head): Change parameter
|
|
|
|
|
is_debug_types_section to section_kind.
|
|
|
|
|
(read_and_check_type_unit_head): Delete function.
|
|
|
|
|
(read_abbrev_offset): Handle DWARF-5.
|
|
|
|
|
(create_debug_type_hash_table): Add parameter section_kind. Process
|
|
|
|
|
only DW_UT_type. Use signature and type_offset_in_tu from struct
|
|
|
|
|
comp_unit_head.
|
|
|
|
|
(create_debug_types_hash_table): Update create_debug_type_hash_table
|
|
|
|
|
caller.
|
|
|
|
|
(create_all_type_units): Call create_debug_type_hash_table.
|
|
|
|
|
(read_cutu_die_from_dwo, init_cutu_and_read_dies): Change
|
|
|
|
|
read_and_check_type_unit_head caller to read_and_check_comp_unit_head
|
|
|
|
|
caller.
|
|
|
|
|
(skip_one_die): Handle DW_FORM_implicit_const.
|
|
|
|
|
(dwarf2_rnglists_process): New function.
|
|
|
|
|
(dwarf2_ranges_process): Call dwarf2_rnglists_process for DWARF-5.
|
|
|
|
|
(abbrev_table_read_table): Handle DW_FORM_implicit_const.
|
|
|
|
|
(read_attribute_value): Handle DW_FORM_implicit_const,
|
|
|
|
|
DW_FORM_line_strp.
|
|
|
|
|
(read_attribute): Handle DW_FORM_implicit_const.
|
|
|
|
|
(read_indirect_string_at_offset_from): New function from
|
|
|
|
|
read_indirect_string_at_offset.
|
|
|
|
|
(read_indirect_string_at_offset): Call
|
|
|
|
|
read_indirect_string_at_offset_from.
|
|
|
|
|
(read_indirect_line_string_at_offset): New function.
|
|
|
|
|
(read_indirect_string): New function comment.
|
|
|
|
|
(read_indirect_line_string): New function.
|
|
|
|
|
(read_unsigned_leb128): Make it global.
|
|
|
|
|
(dwarf2_string_attr): Handle DWARF-5.
|
|
|
|
|
(add_include_dir_stub, read_formatted_entries): New functions.
|
|
|
|
|
(dwarf_decode_line_header, dump_die_shallow, cu_debug_loc_section):
|
|
|
|
|
Handle DWARF-5.
|
|
|
|
|
(per_cu_header_read_in): Update read_comp_unit_head caller.
|
|
|
|
|
(dwarf2_version): New function.
|
|
|
|
|
* symfile.h (struct dwarf2_debug_sections): Add loclists, line_str and
|
|
|
|
|
rnglists.
|
|
|
|
|
* xcoffread.c (dwarf2_xcoff_names): Update struct dwarf2_debug_sections
|
|
|
|
|
fields.
|
|
|
|
|
|
2017-02-20 20:53:20 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (abbrev_table_read_table): Read the data only once.
|
|
|
|
|
|
2017-02-20 20:53:20 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_ranges_process): New function from
|
|
|
|
|
dwarf2_ranges_read.
|
|
|
|
|
(dwarf2_ranges_read, dwarf2_record_block_ranges): Use
|
|
|
|
|
dwarf2_ranges_process.
|
|
|
|
|
|
2017-02-20 20:53:19 +01:00
|
|
|
|
2017-02-20 Jan Kratochvil <jan.kratochvil@redhat.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (create_debug_type_hash_table): New function from
|
|
|
|
|
create_debug_types_hash_table.
|
|
|
|
|
(create_debug_types_hash_table): Call create_debug_type_hash_table.
|
|
|
|
|
(create_all_type_units, open_and_init_dwo_file): Update
|
|
|
|
|
create_debug_types_hash_table callers.
|
|
|
|
|
|
2017-02-20 14:01:04 +01:00
|
|
|
|
2017-02-20 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/16188
|
|
|
|
|
* fork-child.c (trace_start_error): Fix thinko. va_end should
|
|
|
|
|
refer to 'ap', not 'args'.
|
|
|
|
|
|
2017-02-15 00:27:23 +01:00
|
|
|
|
2017-02-20 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/16188
|
|
|
|
|
* darwin-nat.c (darwin_ptrace_me): Check if calls to system
|
|
|
|
|
calls succeeded.
|
|
|
|
|
* fork-child.c (trace_start_error): New function.
|
|
|
|
|
(trace_start_error_with_name): Likewise.
|
|
|
|
|
* gnu-nat.c (gnu_ptrace_me): Check if call to PTRACE succeeded.
|
|
|
|
|
* inf-ptrace.c (inf_ptrace_me): Likewise.
|
|
|
|
|
* inferior.h (trace_start_error): New prototype.
|
|
|
|
|
(trace_start_error_with_name): Likewise.
|
|
|
|
|
|
2017-02-15 21:08:19 +01:00
|
|
|
|
2017-02-15 Sergio Durigan Junior <sergiodj@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/21164
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols): Verify if 'argv' is not
|
|
|
|
|
NULL before using it.
|
|
|
|
|
* symmisc.c (maintenance_print_symbols): Likewise.
|
|
|
|
|
(maintenance_print_msymbols): Likewise.
|
|
|
|
|
|
2017-02-15 08:08:17 +01:00
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Add record Python bindings entry.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_PYTHON_OBS): Add py-record-btrace.o,
|
|
|
|
|
py-record-full.o.
|
|
|
|
|
(SUBDIR_PYTHON_SRCS): Add py-record-btrace.c, py-record-full.c.
|
|
|
|
|
* python/py-record-btrace.c, python/py-record-btrace.h,
|
|
|
|
|
python/py-record-full.c, python/py-record-full.h: New file.
|
|
|
|
|
* python/py-record.c: Add include for py-record-btrace.h and
|
|
|
|
|
py-record-full.h.
|
|
|
|
|
(recpy_method, recpy_format, recpy_goto, recpy_replay_position,
|
|
|
|
|
recpy_instruction_history, recpy_function_call_history, recpy_begin,
|
|
|
|
|
recpy_end): Use functions from py-record-btrace.c and py-record-full.c.
|
|
|
|
|
* python/python-internal.h (PyInt_FromSsize_t, PyInt_AsSsize_t):
|
|
|
|
|
New definition.
|
|
|
|
|
(gdbpy_initialize_btrace): New export.
|
|
|
|
|
* python/python.c (_initialize_python): Add gdbpy_initialize_btrace.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SUBDIR_PYTHON_OBS): Add python/py-record.o.
|
|
|
|
|
(SUBDIR_PYTHON_SRCS): Add python/py-record.c.
|
|
|
|
|
* python/py-record.c: New file.
|
|
|
|
|
* python/python-internal.h (gdbpy_start_recording,
|
|
|
|
|
gdbpy_current_recording, gdpy_stop_recording,
|
|
|
|
|
gdbpy_initialize_record): New export.
|
|
|
|
|
* python/python.c (_initialize_python): Add gdbpy_initialize_record.
|
|
|
|
|
(python_GdbMethods): Add gdbpy_start_recording,
|
|
|
|
|
gdbpy_current_recording and gdbpy_stop_recording.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (record_btrace_record_method): New function.
|
|
|
|
|
(init_record_btrace_ops): Initialize to_record_method.
|
|
|
|
|
* record-full.c (record_full_record_method): New function.
|
|
|
|
|
(init_record_full_ops, init_record_full_core_ops): Add
|
|
|
|
|
record_full_record_method.
|
|
|
|
|
* record.h (enum record_method): New enum.
|
|
|
|
|
* target-debug.h (target_debug_print_enum_record_method: New define.
|
|
|
|
|
* target-delegates.c: Regenerate.
|
|
|
|
|
* target.c (target_record_method): New function.
|
|
|
|
|
* target.h: Include record.h.
|
|
|
|
|
(struct target_ops) <to_record_method>: New field.
|
|
|
|
|
(target_record_method): New export.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* record.h (record_start, record_stop): New export.
|
|
|
|
|
* record.c (record_start, record_stop): New function.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_fetch): Copy function call segments pointer
|
|
|
|
|
into a vector.
|
|
|
|
|
(btrace_clear): Clear the vector.
|
|
|
|
|
(btrace_find_insn_by_number): Use binary search to find the correct
|
|
|
|
|
function call segment.
|
|
|
|
|
* btrace.h (brace_fun_p): New typedef.
|
|
|
|
|
(struct btrace_thread_info) <functions>: New field.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* record-btrace.c (btrace_ui_out_decode_error): Move most of it ...
|
|
|
|
|
* btrace.c (btrace_decode_error): ... here. New function.
|
|
|
|
|
* btrace.h (btrace_decode_error): New export.
|
|
|
|
|
|
|
|
|
|
2017-02-14 Tim Wiederhake <tim.wiederhake@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_call_num_insn, btrace_insn_get_error): New function.
|
|
|
|
|
(ftrace_new_function, btrace_insn_number, btrace_insn_cmp,
|
|
|
|
|
btrace_find_insn_by_number): Remove special case for gaps.
|
|
|
|
|
* btrace.h (btrace_insn_get_error): New export.
|
|
|
|
|
(btrace_insn_number, btrace_find_insn_by_number): Adjust comment.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Print number for gaps.
|
|
|
|
|
(record_btrace_info, record_btrace_goto): Handle gaps.
|
|
|
|
|
|
2015-04-29 17:44:24 +02:00
|
|
|
|
2017-02-14 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR python/13598:
|
|
|
|
|
* python/python.c (gdbpy_before_prompt_hook): Emit before_prompt
|
|
|
|
|
event.
|
|
|
|
|
* python/py-evts.c (gdbpy_initialize_py_events): Add
|
|
|
|
|
before_prompt registry.
|
|
|
|
|
* python/py-events.h (events_object) <before_prompt>: New field.
|
|
|
|
|
|
2017-01-30 09:16:27 +01:00
|
|
|
|
2017-02-14 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (ftrace_new_switch): Preserve up link and flags.
|
|
|
|
|
|
2017-02-13 14:29:30 +01:00
|
|
|
|
2017-02-13 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* symfile (_initialize_symfile): Add usage text to the load command's
|
|
|
|
|
help text.
|
|
|
|
|
|
Do not send queries on secondary UIs
This is a follow-up to
https://sourceware.org/ml/gdb-patches/2017-02/msg00261.html
This patch restricts queries to the main UI, which allows to avoid two
different problems.
The first one is that GDB is issuing queries on secondary MI channels
for which a TTY is allocated. The second one is that GDB is not able to
handle queries on two (CLI) UIs simultaneously. Restricting queries to
the main UI allows to bypass these two problems.
More details on how/why these two problems happen:
1. Queries on secondary MI UI
The current criterion to decide if we should query the user is whether
the input stream is a TTY. The original way to start GDB in MI mode
from a front-end was to create a subprocess with pipes to its
stdin/stdout. In this case, the input was considered non-interactive
and queries were auto-answered. Now that front-ends can create the MI
channel as a separate UI connected to a dedicated TTY, GDB now
considers this input stream as interactive and sends queries to it.
By restricting queries to the main UI, we make sure we never query on
the secondary MI UI.
2. Simultaneous queries
As Pedro stated it, when you have two queries on two different CLI UIs
at the same time, you end up with the following pseudo stack:
#0 gdb_readline_wrapper
#1 defaulted_query // for UI #2
#2 handle_command
#3 execute_command ("handle SIGTRAP" ....
#4 stdin_event_handler // input on UI #2
#5 gdb_do_one_event
#7 gdb_readline_wrapper
#8 defaulted_query // for UI #1
#9 handle_command
#10 execute_command ("handle SIGINT" ....
#11 stdin_event_handler // input on UI #1
#12 gdb_do_one_event
#13 gdb_readline_wrapper
trying to answer the query on UI #1 will therefore answer for UI #2.
By restricting the queries to the main UI, we ensure that there will
never be more than one pending query, since you can't have two queries
on a UI at the same time.
I added a snippet to gdb.base/new-ui.exp to verify that we get a query
on the main UI, but that we don't on the secondary one (or, more
precisely, that it gets auto-answered).
gdb/ChangeLog:
* utils.c (defaulted_query): Don't query on secondary UIs.
gdb/testsuite/ChangeLog:
* gdb.base/new-ui.exp (do_test): Test queries behavior on main
and extra UIs.
2017-02-10 22:29:50 +01:00
|
|
|
|
2017-02-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* utils.c (defaulted_query): Don't query on secondary UIs.
|
|
|
|
|
|
2017-02-10 21:09:23 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.c (rust_get_disr_info): Remove unused variable.
|
|
|
|
|
|
2017-02-09 21:32:48 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (valpy_richcompare_throw): Remove unnecessary
|
|
|
|
|
"cleanup" local.
|
|
|
|
|
* python/py-type.c (typy_legacy_template_argument): Remove
|
|
|
|
|
unnecessary "cleanup" local.
|
|
|
|
|
|
2017-01-12 16:59:26 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (do_start_initialization): New function, from
|
|
|
|
|
_initialize_python.
|
|
|
|
|
(_initialize_python): Call do_start_initialization.
|
|
|
|
|
* python/py-linetable.c (ltpy_iternext): Use explicit returns, not
|
|
|
|
|
goto.
|
|
|
|
|
|
2017-01-12 15:46:07 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (pretty_print_one_value): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2017-01-12 00:28:43 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_destroyer): Use gdbpy_ref.
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_deleted): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-type.c (field_new): Use gdbpy_ref.
|
|
|
|
|
* python/py-symtab.c (symtab_and_line_to_sal_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-progspace.c (pspy_new): Use gdbpy_ref.
|
|
|
|
|
(py_free_pspace): Likewise.
|
|
|
|
|
(pspace_to_pspace_object): Likewise.
|
|
|
|
|
* python/py-objfile.c (objfpy_new): Use gdbpy_ref.
|
|
|
|
|
(py_free_objfile): Likewise.
|
|
|
|
|
(objfile_to_objfile_object): Likewise.
|
|
|
|
|
* python/py-inferior.c (delete_thread_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
(infpy_read_memory): Likewise.
|
|
|
|
|
(py_free_inferior): Likewise.
|
|
|
|
|
* python/py-evtregistry.c (create_eventregistry_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-event.c (create_event_object): Use gdbpy_ref.
|
|
|
|
|
|
Turn gdbpy_ref into a template
This turns gdbpy_ref into a template class, so that it can be used to
wrap subclasses of PyObject. The default argument remains PyObject;
and this necessitated renaming uses of "gdbpy_ref" to "gdbpy_ref<>".
gdb/ChangeLog
2017-02-10 Tom Tromey <tom@tromey.com>
* python/py-ref.h (gdbpy_ref_policy): Now a template.
(gdbpy_ref): Now a template; allow subclasses of PyObject to be
used.
* python/py-arch.c, python/py-bpevent.c, python/py-breakpoint.c,
python/py-cmd.c, python/py-continueevent.c, python/py-event.c,
python/py-exitedevent.c, python/py-finishbreakpoint.c,
python/py-framefilter.c, python/py-function.c,
python/py-inferior.c, python/py-infevents.c,
python/py-linetable.c, python/py-newobjfileevent.c,
python/py-param.c, python/py-prettyprint.c, python/py-ref.h,
python/py-signalevent.c, python/py-stopevent.c,
python/py-symbol.c, python/py-threadevent.c, python/py-type.c,
python/py-unwind.c, python/py-utils.c, python/py-value.c,
python/py-varobj.c, python/py-xmethods.c, python/python.c,
varobj.c: Change gdbpy_ref to gdbpy_ref<>.
2017-02-09 21:16:36 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-ref.h (gdbpy_ref_policy): Now a template.
|
|
|
|
|
(gdbpy_ref): Now a template; allow subclasses of PyObject to be
|
|
|
|
|
used.
|
|
|
|
|
* python/py-arch.c, python/py-bpevent.c, python/py-breakpoint.c,
|
|
|
|
|
python/py-cmd.c, python/py-continueevent.c, python/py-event.c,
|
|
|
|
|
python/py-exitedevent.c, python/py-finishbreakpoint.c,
|
|
|
|
|
python/py-framefilter.c, python/py-function.c,
|
|
|
|
|
python/py-inferior.c, python/py-infevents.c,
|
|
|
|
|
python/py-linetable.c, python/py-newobjfileevent.c,
|
|
|
|
|
python/py-param.c, python/py-prettyprint.c, python/py-ref.h,
|
|
|
|
|
python/py-signalevent.c, python/py-stopevent.c,
|
|
|
|
|
python/py-symbol.c, python/py-threadevent.c, python/py-type.c,
|
|
|
|
|
python/py-unwind.c, python/py-utils.c, python/py-value.c,
|
|
|
|
|
python/py-varobj.c, python/py-xmethods.c, python/python.c,
|
|
|
|
|
varobj.c: Change gdbpy_ref to gdbpy_ref<>.
|
|
|
|
|
|
Remove some ui_out-related cleanups from Python
This patch introduces a bit of infrastructure -- namely, a minimal
std::optional analogue called gdb::optional, and an RAII template
class that works like make_cleanup_ui_out_tuple_begin_end or
make_cleanup_ui_out_list_begin_end -- and then uses these in the
Python code. This removes a number of cleanups and generally
simplifies this code.
std::optional is only available in C++17. Normally I would have had
this code check __cplusplus, but my gcc apparently isn't new enough to
find <optional>, even with -std=c++1z; so, because I could not test
it, the patch does not do this.
gdb/ChangeLog
2017-02-10 Tom Tromey <tom@tromey.com>
* ui-out.h (ui_out_emit_type): New class.
(ui_out_emit_tuple, ui_out_emit_list): New typedefs.
* python/py-framefilter.c (py_print_single_arg): Use gdb::optional
and ui_out_emit_tuple.
(enumerate_locals): Likewise.
(py_mi_print_variables, py_print_locals, py_print_args): Use
ui_out_emit_list.
(py_print_frame): Use gdb::optional, ui_out_emit_tuple,
ui_out_emit_list.
* common/gdb_optional.h: New file.
2017-01-11 07:34:22 +01:00
|
|
|
|
2017-02-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* ui-out.h (ui_out_emit_type): New class.
|
|
|
|
|
(ui_out_emit_tuple, ui_out_emit_list): New typedefs.
|
|
|
|
|
* python/py-framefilter.c (py_print_single_arg): Use gdb::optional
|
|
|
|
|
and ui_out_emit_tuple.
|
|
|
|
|
(enumerate_locals): Likewise.
|
|
|
|
|
(py_mi_print_variables, py_print_locals, py_print_args): Use
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
(py_print_frame): Use gdb::optional, ui_out_emit_tuple,
|
|
|
|
|
ui_out_emit_list.
|
|
|
|
|
* common/gdb_optional.h: New file.
|
|
|
|
|
|
2017-02-10 17:46:56 +01:00
|
|
|
|
2017-02-10 Martin Galvan <martingalvan@sourceware.org>
|
|
|
|
|
|
|
|
|
|
* MAINTAINERS (Write After Approval): Update my e-mail address.
|
|
|
|
|
|
2017-02-10 17:37:31 +01:00
|
|
|
|
2017-02-10 Martin Galvan <martingalvan@sourceware.org>
|
|
|
|
|
|
|
|
|
|
PR gdb/21122
|
|
|
|
|
* breakpoint.c (_initialize_breakpoint): Update the help description
|
|
|
|
|
of the 'commands' command to indicate that it takes a list argument.
|
|
|
|
|
|
2017-02-09 22:24:40 +01:00
|
|
|
|
2017-02-09 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* interps.c (current_interp_set_logging): Remove "return".
|
|
|
|
|
|
2017-02-09 16:35:33 +01:00
|
|
|
|
2017-02-09 Gary Benson <gbenson@redhat.com>
|
|
|
|
|
|
|
|
|
|
* symtab.c (add_symtab_completions): Prevent NULL pointer
|
|
|
|
|
dereference.
|
|
|
|
|
|
Eliminate interp::quiet_p
This commit removes interp::quiet_p / interp_quiet_p /
interp_set_quiet, because AFAICS, it doesn't really do anything.
interp_quiet is only ever checked inside interp_set nowadays:
if (!first_time && !interp_quiet_p (interp))
{
xsnprintf (buffer, sizeof (buffer),
"Switching to interpreter \"%.24s\".\n", interp->name);
current_uiout->text (buffer);
}
I did a bit of archaelogy, and found that back in 4a8f6654 (2003), it
was also called in another place, to decide whether to print the CLI
prompt.
AFAICS, that condition is always false today, making that if/then
block always dead code. If we remove that code, then there are no
interp_quiet_p uses left in the tree, so we can remove it all.
There are two paths that lead to interp_set calls:
#1 - When installing the top level interpreter. In this case,
FIRST_TIME is true.
#2 - In interpreter_exec_cmd. In this case, the interpreter is always
set quiet before interp_set is called.
Grepping a gdb.log of an x86_64 GNU/Linux run for "Switching to
interpreter" (before this patch) doesn't find any hits.
I suspect the intention of this message was to support something like
a "set interpreter ..." command that would change the interpreter
permanently. But there's no such command.
Tested on x86_64 Fedora 23.
gdb/ChangeLog:
2017-02-08 Pedro Alves <palves@redhat.com>
* interps.c (interp::interp): Remove reference to quiet_p.
(interp_set): Make static. Remove dead "Switching to" output
code.
(interp_quiet_p, interp_set_quiet): Delete.
(interpreter_exec_cmd): Don't set the interpreter quiet.
* interps.h (interp_quiet_p): Make static.
(class interp) <quiet_p>: Remove field
2017-02-08 19:08:18 +01:00
|
|
|
|
2017-02-08 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* interps.c (interp::interp): Remove reference to quiet_p.
|
|
|
|
|
(interp_set): Make static. Remove dead "Switching to" output
|
|
|
|
|
code.
|
|
|
|
|
(interp_quiet_p, interp_set_quiet): Delete.
|
|
|
|
|
(interpreter_exec_cmd): Don't set the interpreter quiet.
|
|
|
|
|
* interps.h (interp_quiet_p): Make static.
|
|
|
|
|
(class interp) <quiet_p>: Remove field
|
|
|
|
|
|
2017-01-27 17:06:32 +01:00
|
|
|
|
2017-02-08 Jerome Guitton <guitton@adacore.com>
|
|
|
|
|
|
2017-01-10 15:15:53 +01:00
|
|
|
|
* cli/cli-decode.c (find_command_name_length): Make it extern.
|
|
|
|
|
* cli/cli-decode.h (find_command_name_length): Declare.
|
|
|
|
|
* cli/cli-script.c (command_name_equals, line_first_arg):
|
|
|
|
|
New functions.
|
|
|
|
|
(process_next_line): Use cli-decode to parse command names.
|
|
|
|
|
(build_command_line): Make args a constant pointer.
|
|
|
|
|
|
|
|
|
|
2017-02-08 Jerome Guitton <guitton@adacore.com>
|
2017-03-07 14:51:33 +01:00
|
|
|
|
|
2017-01-27 17:06:32 +01:00
|
|
|
|
* cli-decode.c (lookup_cmd_1, lookup_cmd_composition):
|
|
|
|
|
Remove case-insensitive search.
|
|
|
|
|
|
2017-02-07 22:21:54 +01:00
|
|
|
|
2017-02-07 Jose E. Marchesi <jose.marchesi@oracle.com>
|
|
|
|
|
|
|
|
|
|
* sparc-tdep.c (sparc32_gdbarch_init): Do not place a + operator
|
|
|
|
|
at the end of the line. Avoids an ARI warning.
|
|
|
|
|
|
2017-02-06 10:12:00 +01:00
|
|
|
|
2017-02-06 Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* NEWS: Mention support for record/replay of Intel 64 rdrand and
|
|
|
|
|
rdseed instructions.
|
|
|
|
|
i386-tdep.c (i386_process_record): Handle Intel 64 rdrand and rseed.
|
|
|
|
|
|
2017-02-06 08:44:03 +01:00
|
|
|
|
2017-02-06 Ivo Raisr <ivo.raisr@oracle.com>
|
|
|
|
|
|
|
|
|
|
PR tdep/20936
|
|
|
|
|
Provide and use sparc32 and sparc64 target description XML files.
|
|
|
|
|
* features/sparc/sparc32-cp0.xml, features/sparc/sparc32-cpu.xml,
|
|
|
|
|
features/sparc/sparc32-fpu.xml: New files for sparc 32-bit.
|
|
|
|
|
* features/sparc/sparc64-cp0.xml, features/sparc/sparc64-cpu.xml,
|
|
|
|
|
features/sparc/sparc64-fpu.xml: New files for sparc 64-bit.
|
|
|
|
|
* features/sparc/sparc32-solaris.xml: New file.
|
|
|
|
|
* features/sparc/sparc64-solaris.xml: New file.
|
|
|
|
|
* features/sparc/sparc32-solaris.c: Generated.
|
|
|
|
|
* features/sparc/sparc64-solaris.c: Generated.
|
|
|
|
|
* sparc-tdep.h: Account for differences in target descriptions.
|
|
|
|
|
* sparc-tdep.c (sparc32_register_name): Use target provided registers.
|
|
|
|
|
(sparc32_register_type): Use target provided registers.
|
|
|
|
|
(validate_tdesc_registers): New function.
|
|
|
|
|
(sparc32_gdbarch_init): Use tdesc_has_registers.
|
|
|
|
|
Set pseudoregister functions.
|
|
|
|
|
* sparc64-tdep.c (sparc64_register_name): Use target provided registers.
|
|
|
|
|
(sparc64_register_type): Use target provided registers.
|
|
|
|
|
(sparc64_init_abi): Set pseudoregister functions.
|
|
|
|
|
|
2017-02-04 06:11:46 +01:00
|
|
|
|
2017-02-03 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
PR rust/21097:
|
|
|
|
|
* rust-lang.c (rust_print_type) <TYPE_CODE_UNION>: Handle enums
|
|
|
|
|
with a single member.
|
|
|
|
|
|
C++-fy struct interp/cli_interp/tui_interp/mi_interp
- The interp->data field disappears, since we can put data in the
interpreter directly now. The "init" method remains in place, but
it now returns void.
- A few places check if the interpreter method is NULL before calling
it, and also check whether the method returns true/false. For some
of those methods, all current implementations always return true.
In those cases, this commit makes the C++-fied method return void
instead and cleans up the callers.
Tested on x86_64 Fedora 23.
gdb/ChangeLog:
2017-02-03 Pedro Alves <palves@redhat.com>
* cli/cli-interp.c (cli_interp_base::cli_interp_base)
(cli_interp_base::~cli_interp_base): New.
(cli_interp): New struct.
(as_cli_interp): Cast the interp itself to cli_interp.
(cli_interpreter_pre_command_loop): Rename to ...
(cli_interp_base::pre_command_loop): ... this. Remove 'self'
parameter.
(cli_interpreter_init): Rename to ...
(cli_interp::init): ... this. Remove 'self' parameter. Use
boolean. Make extern.
(cli_interpreter_resume): Rename to ...
(cli_interp::resume): ... this. Remove 'data' parameter. Make
extern.
(cli_interpreter_suspend): Rename to ...
(cli_interp::suspend): ... this. Remove 'data' parameter. Make
extern.
(cli_interpreter_exec): Rename to ...
(cli_interp::exec): ... this. Remove 'data' parameter. Make
extern.
(cli_interpreter_supports_command_editing): Rename to ...
(cli_interp_base::supports_command_editing): ... this. Remove
'interp' parameter. Make extern.
(cli_ui_out): Rename to ...
(cli_interp::interp_ui_out): ... this. Remove 'interp' parameter.
Make extern.
(cli_set_logging): Rename to ...
(cli_interp_base::set_logging): ... this. Remove 'interp'
parameter. Make extern.
(cli_interp_procs): Delete.
(cli_interp_factory): Adjust to use "new".
* cli/cli-interp.h: Include "interps.h".
(struct cli_interp_base): New struct.
* interps.c (struct interp): Delete. Fields moved to interps.h.
(interp_new): Delete.
(interp::interp, interp::~interp): New.
(interp_set): Use bool, and return void. Assume the interpreter
has suspend, init and resume methods, and that the all return
void.
(set_top_level_interpreter): interp_set returns void.
(interp_ui_out): Adapt.
(current_interp_set_logging): Adapt.
(interp_data): Delete.
(interp_pre_command_loop, interp_supports_command_editing): Adapt.
(interp_exec): Adapt.
(top_level_interpreter_data): Delete.
* interps.h (interp_init_ftype, interp_resume_ftype)
(interp_suspend_ftype, interp_exec_ftype)
(interp_pre_command_loop_ftype, interp_ui_out_ftype): Delete.
(class interp): New.
(interp_new): Delete.
(interp_set): Now returns void. Use bool.
(interp_data, top_level_interpreter_data): Delete.
* mi/mi-common.h: Include interps.h.
(class mi_interp): Inherit from interp. Define a ctor. Declare
init, resume, suspect, exec, interp_ui_out, set_logging and
pre_command_loop methods.
* mi/mi-interp.c (as_mi_interp): Cast the interp itself.
(mi_interpreter_init): Rename to ...
(mi_interp::init): ... this. Remove the 'interp' parameter, use
bool, return void and make extern. Adjust.
(mi_interpreter_resume): ... Rename to ...
(mi_interp::resume): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(mi_interpreter_suspend): ... Rename to ...
(mi_interp::suspend): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(mi_interpreter_exec): ... Rename to ...
(mi_interp::exec): ... this. Remove the 'data' parameter and make
extern. Adjust.
(mi_interpreter_pre_command_loop): ... Rename to ...
(mi_interp::pre_command_loop): ... this. Remove the 'self'
parameter and make extern.
(mi_on_normal_stop_1): Adjust.
(mi_ui_out): Rename to ...
(mi_interp::interp_ui_out): ... this. Remove the 'interp'
parameter and make extern. Adjust.
(mi_set_logging): Rename to ...
(mi_interp::set_logging): ... this. Remove the 'interp'
parameter and make extern. Adjust.
(mi_interp_procs): Delete.
(mi_interp_factory): Adjust to use 'new'.
* mi/mi-main.c (mi_cmd_gdb_exit, captured_mi_execute_command)
(mi_print_exception, mi_execute_command, mi_load_progress):
Adjust.
* tui/tui-interp.c (tui_interp): New class.
(as_tui_interp): Return a tui_interp pointer.
(tui_on_normal_stop, tui_on_signal_received)
(tui_on_end_stepping_range, tui_on_signal_exited, tui_on_exited)
(tui_on_no_history, tui_on_user_selected_context_changed): Adjust
to use interp::interp_ui_out.
(tui_init): Rename to ...
(tui_interp::init): ... this. Remove the 'self' parameter, use
bool, return void and make extern. Adjust.
(tui_resume): Rename to ...
(tui_interp::resume): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(tui_suspend): Rename to ...
(tui_interp::suspend): ... this. Remove the 'data' parameter,
return void and make extern. Adjust.
(tui_ui_out): Rename to ...
(tui_interp::interp_ui_out): ... this. Remove the 'self'
parameter, and make extern. Adjust.
(tui_exec): Rename to ...
(tui_interp::exec): ... this. Remove the 'data' parameter and
make extern.
(tui_interp_procs): Delete.
(tui_interp_factory): Use "new".
2017-02-03 17:30:04 +01:00
|
|
|
|
2017-02-03 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-interp.c (cli_interp_base::cli_interp_base)
|
|
|
|
|
(cli_interp_base::~cli_interp_base): New.
|
|
|
|
|
(cli_interp): New struct.
|
|
|
|
|
(as_cli_interp): Cast the interp itself to cli_interp.
|
|
|
|
|
(cli_interpreter_pre_command_loop): Rename to ...
|
|
|
|
|
(cli_interp_base::pre_command_loop): ... this. Remove 'self'
|
|
|
|
|
parameter.
|
|
|
|
|
(cli_interpreter_init): Rename to ...
|
|
|
|
|
(cli_interp::init): ... this. Remove 'self' parameter. Use
|
|
|
|
|
boolean. Make extern.
|
|
|
|
|
(cli_interpreter_resume): Rename to ...
|
|
|
|
|
(cli_interp::resume): ... this. Remove 'data' parameter. Make
|
|
|
|
|
extern.
|
|
|
|
|
(cli_interpreter_suspend): Rename to ...
|
|
|
|
|
(cli_interp::suspend): ... this. Remove 'data' parameter. Make
|
|
|
|
|
extern.
|
|
|
|
|
(cli_interpreter_exec): Rename to ...
|
|
|
|
|
(cli_interp::exec): ... this. Remove 'data' parameter. Make
|
|
|
|
|
extern.
|
|
|
|
|
(cli_interpreter_supports_command_editing): Rename to ...
|
|
|
|
|
(cli_interp_base::supports_command_editing): ... this. Remove
|
|
|
|
|
'interp' parameter. Make extern.
|
|
|
|
|
(cli_ui_out): Rename to ...
|
|
|
|
|
(cli_interp::interp_ui_out): ... this. Remove 'interp' parameter.
|
|
|
|
|
Make extern.
|
|
|
|
|
(cli_set_logging): Rename to ...
|
|
|
|
|
(cli_interp_base::set_logging): ... this. Remove 'interp'
|
|
|
|
|
parameter. Make extern.
|
|
|
|
|
(cli_interp_procs): Delete.
|
|
|
|
|
(cli_interp_factory): Adjust to use "new".
|
|
|
|
|
* cli/cli-interp.h: Include "interps.h".
|
|
|
|
|
(struct cli_interp_base): New struct.
|
|
|
|
|
* interps.c (struct interp): Delete. Fields moved to interps.h.
|
|
|
|
|
(interp_new): Delete.
|
|
|
|
|
(interp::interp, interp::~interp): New.
|
|
|
|
|
(interp_set): Use bool, and return void. Assume the interpreter
|
|
|
|
|
has suspend, init and resume methods, and that the all return
|
|
|
|
|
void.
|
|
|
|
|
(set_top_level_interpreter): interp_set returns void.
|
|
|
|
|
(interp_ui_out): Adapt.
|
|
|
|
|
(current_interp_set_logging): Adapt.
|
|
|
|
|
(interp_data): Delete.
|
|
|
|
|
(interp_pre_command_loop, interp_supports_command_editing): Adapt.
|
|
|
|
|
(interp_exec): Adapt.
|
|
|
|
|
(top_level_interpreter_data): Delete.
|
|
|
|
|
* interps.h (interp_init_ftype, interp_resume_ftype)
|
|
|
|
|
(interp_suspend_ftype, interp_exec_ftype)
|
|
|
|
|
(interp_pre_command_loop_ftype, interp_ui_out_ftype): Delete.
|
|
|
|
|
(class interp): New.
|
|
|
|
|
(interp_new): Delete.
|
|
|
|
|
(interp_set): Now returns void. Use bool.
|
|
|
|
|
(interp_data, top_level_interpreter_data): Delete.
|
|
|
|
|
* mi/mi-common.h: Include interps.h.
|
|
|
|
|
(class mi_interp): Inherit from interp. Define a ctor. Declare
|
|
|
|
|
init, resume, suspect, exec, interp_ui_out, set_logging and
|
|
|
|
|
pre_command_loop methods.
|
|
|
|
|
* mi/mi-interp.c (as_mi_interp): Cast the interp itself.
|
|
|
|
|
(mi_interpreter_init): Rename to ...
|
|
|
|
|
(mi_interp::init): ... this. Remove the 'interp' parameter, use
|
|
|
|
|
bool, return void and make extern. Adjust.
|
|
|
|
|
(mi_interpreter_resume): ... Rename to ...
|
|
|
|
|
(mi_interp::resume): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(mi_interpreter_suspend): ... Rename to ...
|
|
|
|
|
(mi_interp::suspend): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(mi_interpreter_exec): ... Rename to ...
|
|
|
|
|
(mi_interp::exec): ... this. Remove the 'data' parameter and make
|
|
|
|
|
extern. Adjust.
|
|
|
|
|
(mi_interpreter_pre_command_loop): ... Rename to ...
|
|
|
|
|
(mi_interp::pre_command_loop): ... this. Remove the 'self'
|
|
|
|
|
parameter and make extern.
|
|
|
|
|
(mi_on_normal_stop_1): Adjust.
|
|
|
|
|
(mi_ui_out): Rename to ...
|
|
|
|
|
(mi_interp::interp_ui_out): ... this. Remove the 'interp'
|
|
|
|
|
parameter and make extern. Adjust.
|
|
|
|
|
(mi_set_logging): Rename to ...
|
|
|
|
|
(mi_interp::set_logging): ... this. Remove the 'interp'
|
|
|
|
|
parameter and make extern. Adjust.
|
|
|
|
|
(mi_interp_procs): Delete.
|
|
|
|
|
(mi_interp_factory): Adjust to use 'new'.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_gdb_exit, captured_mi_execute_command)
|
|
|
|
|
(mi_print_exception, mi_execute_command, mi_load_progress):
|
|
|
|
|
Adjust.
|
|
|
|
|
* tui/tui-interp.c (tui_interp): New class.
|
|
|
|
|
(as_tui_interp): Return a tui_interp pointer.
|
|
|
|
|
(tui_on_normal_stop, tui_on_signal_received)
|
|
|
|
|
(tui_on_end_stepping_range, tui_on_signal_exited, tui_on_exited)
|
|
|
|
|
(tui_on_no_history, tui_on_user_selected_context_changed): Adjust
|
|
|
|
|
to use interp::interp_ui_out.
|
|
|
|
|
(tui_init): Rename to ...
|
|
|
|
|
(tui_interp::init): ... this. Remove the 'self' parameter, use
|
|
|
|
|
bool, return void and make extern. Adjust.
|
|
|
|
|
(tui_resume): Rename to ...
|
|
|
|
|
(tui_interp::resume): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(tui_suspend): Rename to ...
|
|
|
|
|
(tui_interp::suspend): ... this. Remove the 'data' parameter,
|
|
|
|
|
return void and make extern. Adjust.
|
|
|
|
|
(tui_ui_out): Rename to ...
|
|
|
|
|
(tui_interp::interp_ui_out): ... this. Remove the 'self'
|
|
|
|
|
parameter, and make extern. Adjust.
|
|
|
|
|
(tui_exec): Rename to ...
|
|
|
|
|
(tui_interp::exec): ... this. Remove the 'data' parameter and
|
|
|
|
|
make extern.
|
|
|
|
|
(tui_interp_procs): Delete.
|
|
|
|
|
(tui_interp_factory): Use "new".
|
|
|
|
|
|
2017-02-03 05:21:19 +01:00
|
|
|
|
2017-02-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-exp.y (ends_raw_string, space_then_number)
|
|
|
|
|
(rust_identifier_start_p): Return bool.
|
|
|
|
|
* rust-lang.c (rust_tuple_type_p, rust_underscore_fields)
|
|
|
|
|
(rust_tuple_struct_type_p, rust_tuple_variant_type_p)
|
|
|
|
|
(rust_slice_type_p, rust_range_type_p, rust_u8_type_p)
|
|
|
|
|
(rust_chartype_p): Return bool.
|
|
|
|
|
(val_print_struct, rust_print_struct_def, rust_print_type):
|
|
|
|
|
Update.
|
|
|
|
|
* rust-lang.h (rust_tuple_type_p, rust_tuple_struct_type_p):
|
|
|
|
|
Return bool.
|
|
|
|
|
|
2017-02-03 05:01:11 +01:00
|
|
|
|
2017-02-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.c: Reindent.
|
|
|
|
|
|
2017-02-03 04:58:12 +01:00
|
|
|
|
2017-02-02 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* rust-lang.h (rust_crate_for_block): Update.
|
|
|
|
|
* rust-lang.c (rust_crate_for_block): Return std::string.
|
|
|
|
|
(rust_get_disr_info): Use std:;string, not
|
|
|
|
|
gdb::unique_xmalloc_ptr.
|
|
|
|
|
* rust-exp.y (crate_name): Update.
|
|
|
|
|
|
Fix "maintenance selftest" printing stray instructions
The "maintenance selftest" command is printing odd bits of stray
instructions like:
~~~
brkwarning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default HS settings.
brkmov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0mov r0, #0breakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakbreakM3.L = 0xffff;/* ( -1) M3=0x0xffff(65535) */break 8break 8warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB. Attempting to continue with the default cris:common_v10_v32 settings.
~~~
etc. Those appear because here:
class gdb_disassembler_test : public gdb_disassembler
{
public:
const bool verbose = false;
explicit gdb_disassembler_test (struct gdbarch *gdbarch,
const gdb_byte *insn,
size_t len)
: gdb_disassembler (gdbarch,
(verbose ? gdb_stdout : &null_stream),
gdb_disassembler_test::read_memory),
specifically in this line:
(verbose ? gdb_stdout : &null_stream),
"verbose" has not been initialized yet, because the order of
initialization is base classes first, then members. I.e. "verbose" is
only initialized after the base constructor is called. Since the
gdb_disassembler_test object is created on the stack, "verbose" has
garbage at that point. If the gargage is non-zero, then we end up
with the gdb_disassembler_test's stream incorrectly pointing to
gdb_stdout.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* disasm-selftests.c (print_one_insn_test): Move the "verbose"
field out of gdb_disassembler_test and make it static.
2017-02-03 00:36:29 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm-selftests.c (print_one_insn_test): Move the "verbose"
|
|
|
|
|
field out of gdb_disassembler_test and make it static.
|
|
|
|
|
|
2017-02-03 00:08:12 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-common.h (struct mi_interp): Delete the mi2_interp,
|
|
|
|
|
mi1_interp and mi_interp fields.
|
|
|
|
|
|
Fix "-gdb-set logging redirect on" crash
This commit fixes a "-gdb-set logging redirect on" crash by not
handling "logging redirect on" on the fly.
Previous discussion here:
https://sourceware.org/ml/gdb-patches/2017-01/msg00467.html
Code for handling "logging redirect on" on the fly was added here:
https://sourceware.org/ml/gdb-patches/2010-08/msg00202.html
Meanwhile, MI gained support for logging, but flipping redirect "on"
on the fly was not considered. The result is that this sequence of
commands crashes GDB:
-gdb-set logging on
-gdb-set logging redirect on
Program received signal SIGSEGV, Segmentation fault.
0x00000000008dd7bc in gdb_flush (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
194 file->to_flush (file);
(top-gdb) bt
#0 0x00000000008dd7bc in gdb_flush(ui_file*) (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
#1 0x00000000007b5f34 in gdb_wait_for_event(int) (block=0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:752
#2 0x00000000007b52b6 in gdb_do_one_event() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:322
#3 0x00000000007b5362 in start_event_loop() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:371
#4 0x000000000082704a in captured_command_loop(void*) (data=0x0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:325
#5 0x00000000007b8d7c in catch_errors(int (*)(void*), void*, char*, return_mask) (func=0x827008 <captured_command_loop(void*)>, func_args=0x0, errstring=0x11dee51 "", mask=RETURN_MASK_ALL) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/exceptions.c:236
#6 0x000000000082839b in captured_main(void*) (data=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1148
During symbol reading, cannot get low and high bounds for subprogram DIE at 24065.
#7 0x00000000008283c4 in gdb_main(captured_main_args*) (args=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1158
#8 0x0000000000412d4d in main(int, char**) (argc=4, argv=0x7fffffffd928) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/gdb.c:32
The handling of redirect on the fly is not really a use case we need
to handle, IMO. Its inconsistent (other "set logging foo" commands
aren't handled on the fly), and complicates the code significantly.
Instead of complicating it further for MI, go back to the original
idea of warning, only:
https://sourceware.org/ml/gdb-patches/2010-08/msg00083.html
New test included.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* cli/cli-logging.c (maybe_warn_already_logging): New factored out
from ...
(set_logging_overwrite): ... here.
(logging_no_redirect_file): Delete.
(set_logging_redirect): Don't handle redirection on the fly.
Instead warn that "logging off" / "logging on" is necessary.
(pop_output_files): Delete references to logging_no_redirect_file.
(show_logging_command): Always speak in terms of what will happen
once logging is reenabled.
gdb/testsuite/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* gdb.mi/mi-logging.exp: Add "redirect while already logging"
tests.
2017-02-02 20:07:08 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
Move "tee" building down to interpreter::set_logging_proc
This patch gets rid of this hack in mi_set_logging:
/* The tee created already is based on gdb_stdout, which for MI
is a console and so we end up in an infinite loop of console
writing to ui_file writing to console etc. So discard the
existing tee (it hasn't been used yet, and MI won't ever use
it), and create one based on raw_stdout instead. */
By pushing down responsibility for the tee creation to the
interpreter. I.e., pushing the CLI bits out of handle_redirections
down to the CLI interpreter's set_logging_proc method.
This fixes a few leaks that I spotted, and then confirmed with
"valgrind --leak-check=full":
[...]
==21429== 56 (32 direct, 24 indirect) bytes in 1 blocks are definitely lost in loss record 30,243 of 34,980
==21429== at 0x4C29216: operator new(unsigned long) (vg_replace_malloc.c:334)
==21429== by 0x62D9A9: mi_set_logging(interp*, int, ui_file*, ui_file*) (mi-interp.c:1395)
==21429== by 0x810B8A: current_interp_set_logging(int, ui_file*, ui_file*) (interps.c:360)
==21429== by 0x61C537: handle_redirections(int) (cli-logging.c:162)
==21429== by 0x61C6EC: set_logging_on(char*, int) (cli-logging.c:190)
==21429== by 0x6163BE: do_cfunc(cmd_list_element*, char*, int) (cli-decode.c:105)
==21429== by 0x6193C1: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1913)
==21429== by 0x8DB790: execute_command(char*, int) (top.c:674)
==21429== by 0x632AE6: mi_execute_cli_command(char const*, int, char const*) (mi-main.c:2343)
==21429== by 0x6329BA: mi_cmd_execute(mi_parse*) (mi-main.c:2306)
==21429== by 0x631E19: captured_mi_execute_command(ui_out*, mi_parse*) (mi-main.c:1998)
==21429== by 0x632389: mi_execute_command(char const*, int) (mi-main.c:2163)
==21429==
[...]
==26635== 24 bytes in 1 blocks are definitely lost in loss record 20,740 of 34,995
==26635== at 0x4C29216: operator new(unsigned long) (vg_replace_malloc.c:334)
==26635== by 0x61C355: handle_redirections(int) (cli-logging.c:131)
==26635== by 0x61C6EC: set_logging_on(char*, int) (cli-logging.c:190)
==26635== by 0x6163BE: do_cfunc(cmd_list_element*, char*, int) (cli-decode.c:105)
==26635== by 0x6193C1: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1913)
==26635== by 0x8DB7BC: execute_command(char*, int) (top.c:674)
==26635== by 0x7B9132: command_handler(char*) (event-top.c:590)
==26635== by 0x7B94F7: command_line_handler(char*) (event-top.c:780)
==26635== by 0x7B8ABB: gdb_rl_callback_handler(char*) (event-top.c:213)
==26635== by 0x933CE9: rl_callback_read_char (callback.c:220)
==26635== by 0x7B89ED: gdb_rl_callback_read_char_wrapper_noexcept() (event-top.c:175)
==26635== by 0x7B8A49: gdb_rl_callback_read_char_wrapper(void*) (event-top.c:192)
One is fixed by transfering ownership of the log file to the tee. In
pseudo-patch, since the code was moved at the same time:
- out = new tee_file (curr_output, false, logfile.get (), false);
+ out = new tee_file (curr_output, false, logfile.get (), true);
The other is this bit in mi_set_logging:
else
{
+ delete mi->raw_stdout;
I tried to split the leak fixes to a smaller preparatory patch, but
that was difficult exactly because of the tee hack in
handle_redirections -> mi_set_logging.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* cli/cli-interp.c (struct saved_output_files, saved_output):
Moved from cli/cli-logging.c.
(cli_set_logging): New function.
(cli_interp_procs): Install cli_set_logging.
* cli/cli-interp.h (make_logging_output, cli_set_logging):
Declare.
* cli/cli-logging.c (struct saved_output_files, saved_output):
Moved to cli/cli-interp.c.
(pop_output_files): Don't save outputs here.
(make_logging_output): New function.
(handle_redirections): Don't build tee nor save previous outputs
here.
* interps.c (current_interp_set_logging): Change prototype.
Assume there's always a set_logging_proc method installed.
* interps.h (interp_set_logging_ftype): Change prototype.
(current_interp_set_logging): Change prototype and adjust comment.
* mi/mi-interp.c (mi_set_logging): Change protototype. Adjust to
use make_logging_output.
* tui/tui-interp.c (tui_interp_procs): Install cli_set_logging.
2017-02-02 23:00:43 +01:00
|
|
|
|
* cli/cli-interp.c (struct saved_output_files, saved_output):
|
|
|
|
|
Moved from cli/cli-logging.c.
|
|
|
|
|
(cli_set_logging): New function.
|
|
|
|
|
(cli_interp_procs): Install cli_set_logging.
|
|
|
|
|
* cli/cli-interp.h (make_logging_output, cli_set_logging):
|
|
|
|
|
Declare.
|
|
|
|
|
* cli/cli-logging.c (struct saved_output_files, saved_output):
|
|
|
|
|
Moved to cli/cli-interp.c.
|
|
|
|
|
(pop_output_files): Don't save outputs here.
|
|
|
|
|
(make_logging_output): New function.
|
|
|
|
|
(handle_redirections): Don't build tee nor save previous outputs
|
|
|
|
|
here.
|
|
|
|
|
* interps.c (current_interp_set_logging): Change prototype.
|
|
|
|
|
Assume there's always a set_logging_proc method installed.
|
|
|
|
|
* interps.h (interp_set_logging_ftype): Change prototype.
|
|
|
|
|
(current_interp_set_logging): Change prototype and adjust comment.
|
|
|
|
|
* mi/mi-interp.c (mi_set_logging): Change protototype. Adjust to
|
|
|
|
|
use make_logging_output.
|
|
|
|
|
* tui/tui-interp.c (tui_interp_procs): Install cli_set_logging.
|
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
Fix "-gdb-set logging redirect on" crash
This commit fixes a "-gdb-set logging redirect on" crash by not
handling "logging redirect on" on the fly.
Previous discussion here:
https://sourceware.org/ml/gdb-patches/2017-01/msg00467.html
Code for handling "logging redirect on" on the fly was added here:
https://sourceware.org/ml/gdb-patches/2010-08/msg00202.html
Meanwhile, MI gained support for logging, but flipping redirect "on"
on the fly was not considered. The result is that this sequence of
commands crashes GDB:
-gdb-set logging on
-gdb-set logging redirect on
Program received signal SIGSEGV, Segmentation fault.
0x00000000008dd7bc in gdb_flush (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
194 file->to_flush (file);
(top-gdb) bt
#0 0x00000000008dd7bc in gdb_flush(ui_file*) (file=0x2a097f0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/ui-file.c:95
#1 0x00000000007b5f34 in gdb_wait_for_event(int) (block=0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:752
#2 0x00000000007b52b6 in gdb_do_one_event() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:322
#3 0x00000000007b5362 in start_event_loop() () at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/event-loop.c:371
#4 0x000000000082704a in captured_command_loop(void*) (data=0x0) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:325
#5 0x00000000007b8d7c in catch_errors(int (*)(void*), void*, char*, return_mask) (func=0x827008 <captured_command_loop(void*)>, func_args=0x0, errstring=0x11dee51 "", mask=RETURN_MASK_ALL) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/exceptions.c:236
#6 0x000000000082839b in captured_main(void*) (data=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1148
During symbol reading, cannot get low and high bounds for subprogram DIE at 24065.
#7 0x00000000008283c4 in gdb_main(captured_main_args*) (args=0x7fffffffd820) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/main.c:1158
#8 0x0000000000412d4d in main(int, char**) (argc=4, argv=0x7fffffffd928) at /home/pedro/gdb/mygit/cxx-convertion/src/gdb/gdb.c:32
The handling of redirect on the fly is not really a use case we need
to handle, IMO. Its inconsistent (other "set logging foo" commands
aren't handled on the fly), and complicates the code significantly.
Instead of complicating it further for MI, go back to the original
idea of warning, only:
https://sourceware.org/ml/gdb-patches/2010-08/msg00083.html
New test included.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* cli/cli-logging.c (maybe_warn_already_logging): New factored out
from ...
(set_logging_overwrite): ... here.
(logging_no_redirect_file): Delete.
(set_logging_redirect): Don't handle redirection on the fly.
Instead warn that "logging off" / "logging on" is necessary.
(pop_output_files): Delete references to logging_no_redirect_file.
(show_logging_command): Always speak in terms of what will happen
once logging is reenabled.
gdb/testsuite/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* gdb.mi/mi-logging.exp: Add "redirect while already logging"
tests.
2017-02-02 20:07:08 +01:00
|
|
|
|
* cli/cli-logging.c (maybe_warn_already_logging): New factored out
|
|
|
|
|
from ...
|
|
|
|
|
(set_logging_overwrite): ... here.
|
|
|
|
|
(logging_no_redirect_file): Delete.
|
|
|
|
|
(set_logging_redirect): Don't handle redirection on the fly.
|
|
|
|
|
Instead warn that "logging off" / "logging on" is necessary.
|
|
|
|
|
(pop_output_files): Delete references to logging_no_redirect_file.
|
|
|
|
|
(show_logging_command): Always speak in terms of what will happen
|
|
|
|
|
once logging is reenabled.
|
|
|
|
|
|
2017-02-02 12:28:40 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm.h (gdb_pretty_print_disassembler): Tweak intro comment.
|
|
|
|
|
|
2017-02-02 12:11:47 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm.c (gdb_pretty_print_insn): Rename to ...
|
|
|
|
|
(gdb_pretty_print_disassembler::pretty_print_insn): ... this.
|
|
|
|
|
Remove gdbarch parameter. Adapt to clear the object's buffers
|
|
|
|
|
instead of allocating new buffers, and to print using the object's
|
|
|
|
|
gdb_disassembler instead of calling gdb_print_insn.
|
|
|
|
|
(dump_insns): Use gdb_pretty_print_disassembler.
|
|
|
|
|
* disasm.h (gdb_pretty_print_insn): Delete declaration.
|
|
|
|
|
(gdb_pretty_print_disassembler): New class.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Use
|
|
|
|
|
gdb_pretty_print_disassembler.
|
|
|
|
|
|
Eliminate make_cleanup_ui_file_delete / make ui_file a class hierarchy
This patch starts from the desire to eliminate
make_cleanup_ui_file_delete, but then goes beyond. It makes ui_file &
friends a real C++ class hierarchy, and switches temporary
ui_file-like objects to stack-based allocation.
- mem_fileopen -> string_file
mem_fileopen is replaced with a new string_file class that is treated
as a value class created on the stack. This alone eliminates most
make_cleanup_ui_file_delete calls, and, simplifies code a whole lot
(diffstat shows around 1k loc dropped.)
string_file's internal buffer is a std::string, thus the "string" in
the name. This simplifies the implementation much, compared to
mem_fileopen, which managed growing its internal buffer manually.
- ui_file_as_string, ui_file_strdup, ui_file_obsavestring all gone
The new string_file class has a string() method that provides direct
writable access to the internal std::string buffer. This replaced
ui_file_as_string, which forced a copy of the same data the stream had
inside. With direct access via a writable reference, we can instead
move the string out of the string_stream, avoiding deep string
copying.
Related, ui_file_xstrdup calls are replaced with xstrdup'ping the
stream's string, and ui_file_obsavestring is replaced by
obstack_copy0.
With all those out of the way, getting rid of the weird ui_file_put
mechanism was possible.
- New ui_file::printf, ui_file::puts, etc. methods
These simplify / clarify client code. I considered splitting
client-code changes, like these, e.g.:
- stb = mem_fileopen ();
- fprintf_unfiltered (stb, "%s%s%s",
- _("The valid values are:\n"),
- regdesc,
- _("The default is \"std\"."));
+ string_file stb;
+ stb.printf ("%s%s%s",
+ _("The valid values are:\n"),
+ regdesc,
+ _("The default is \"std\"."));
In two steps, with the first step leaving fprintf_unfiltered (etc.)
calls in place, and only afterwards do a pass to change all those to
call stb.printf etc.. I didn't do that split, because (when I tried),
it turned out to be pointless make-work: the first pass would have to
touch the fprintf_unfiltered line anyway, to replace "stb" with
"&stb".
- gdb_fopen replaced with stack-based objects
This avoids the need for cleanups or unique_ptr's. I.e., this:
struct ui_file *file = gdb_fopen (filename, "w");
if (filename == NULL)
perror_with_name (filename);
cleanups = make_cleanup_ui_file_delete (file);
// use file.
do_cleanups (cleanups);
is replaced with this:
stdio_file file;
if (!file.open (filename, "w"))
perror_with_name (filename);
// use file.
- odd contorsions in null_file_write / null_file_fputs around when to
call to_fputs / to_write eliminated.
- Global null_stream object
A few places that were allocating a ui_file in order to print to
"nowhere" are adjusted to instead refer to a new 'null_stream' global
stream.
- TUI's tui_sfileopen eliminated. TUI's ui_file much simplified
The TUI's ui_file was serving a dual purpose. It supported being used
as string buffer, and supported being backed by a stdio FILE. The
string buffer part is gone, replaced by using of string_file. The
'FILE *' support is now much simplified, by making the TUI's ui_file
inherit from stdio_file.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* ada-lang.c (type_as_string): Use string_file.
* ada-valprint.c (ada_print_floating): Use string_file.
* ada-varobj.c (ada_varobj_scalar_image)
(ada_varobj_get_value_image): Use string_file.
* aix-thread.c (aix_thread_extra_thread_info): Use string_file.
* arm-tdep.c (_initialize_arm_tdep): Use string_printf.
* breakpoint.c (update_inserted_breakpoint_locations)
(insert_breakpoint_locations, reattach_breakpoints)
(print_breakpoint_location, print_one_detail_ranged_breakpoint)
(print_it_watchpoint): Use string_file.
(save_breakpoints): Use stdio_file.
* c-exp.y (oper): Use string_file.
* cli/cli-logging.c (set_logging_redirect): Use ui_file_up and
tee_file.
(pop_output_files): Use delete.
(handle_redirections): Use stdio_file and tee_file.
* cli/cli-setshow.c (do_show_command): Use string_file.
* compile/compile-c-support.c (c_compute_program): Use
string_file.
* compile/compile-c-symbols.c (generate_vla_size): Take a
'string_file &' instead of a 'ui_file *'.
(generate_c_for_for_one_variable): Take a 'string_file &' instead
of a 'ui_file *'. Use string_file.
(generate_c_for_variable_locations): Take a 'string_file &'
instead of a 'ui_file *'.
* compile/compile-internal.h (generate_c_for_for_one_variable):
Take a 'string_file &' instead of a 'ui_file *'.
* compile/compile-loc2c.c (push, pushf, unary, binary)
(print_label, pushf_register_address, pushf_register)
(do_compile_dwarf_expr_to_c): Take a 'string_file &' instead of a
'ui_file *'. Adjust.
* compile/compile.c (compile_to_object): Use string_file.
* compile/compile.h (compile_dwarf_expr_to_c)
(compile_dwarf_bounds_to_c): Take a 'string_file &' instead of a
'ui_file *'.
* cp-support.c (inspect_type): Use string_file and obstack_copy0.
(replace_typedefs_qualified_name): Use string_file and
obstack_copy0.
* disasm.c (gdb_pretty_print_insn): Use string_file.
(gdb_disassembly): Adjust reference the null_stream global.
(do_ui_file_delete): Delete.
(gdb_insn_length): Use null_stream.
* dummy-frame.c (maintenance_print_dummy_frames): Use stdio_file.
* dwarf2loc.c (dwarf2_compile_property_to_c)
(locexpr_generate_c_location, loclist_generate_c_location): Take a
'string_file &' instead of a 'ui_file *'.
* dwarf2loc.h (dwarf2_compile_property_to_c): Likewise.
* dwarf2read.c (do_ui_file_peek_last): Delete.
(dwarf2_compute_name): Use string_file.
* event-top.c (gdb_setup_readline): Use stdio_file.
* gdbarch.sh (verify_gdbarch): Use string_file.
* gdbtypes.c (safe_parse_type): Use null_stream.
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
string_file.
* guile/scm-disasm.c (gdbscm_print_insn_from_port): Take a
'string_file *' instead of a 'ui_file *'.
(gdbscm_arch_disassemble): Use string_file.
* guile/scm-frame.c (frscm_print_frame_smob): Use string_file.
* guile/scm-ports.c (class ioscm_file_port): Now a class that
inherits from ui_file.
(ioscm_file_port_delete, ioscm_file_port_rewind)
(ioscm_file_port_put): Delete.
(ioscm_file_port_write): Rename to ...
(ioscm_file_port::write): ... this. Remove file_port_magic
checks.
(ioscm_file_port_new): Delete.
(ioscm_with_output_to_port_worker): Use ioscm_file_port and
ui_file_up.
* guile/scm-type.c (tyscm_type_name): Use string_file.
* guile/scm-value.c (vlscm_print_value_smob, gdbscm_value_print):
Use string_file.
* infcmd.c (print_return_value_1): Use string_file.
* infrun.c (print_target_wait_results): Use string_file.
* language.c (add_language): Use string_file.
* location.c (explicit_to_string_internal): Use string_file.
* main.c (captured_main_1): Use null_file.
* maint.c (maintenance_print_architecture): Use stdio_file.
* mi/mi-cmd-stack.c (list_arg_or_local): Use string_file.
* mi/mi-common.h (struct mi_interp) <out, err, log, targ,
event_channel>: Change type to mi_console_file pointer.
* mi/mi-console.c (mi_console_file_fputs, mi_console_file_flush)
(mi_console_file_delete): Delete.
(struct mi_console_file): Delete.
(mi_console_file_magic): Delete.
(mi_console_file_new): Delete.
(mi_console_file::mi_console_file): New.
(mi_console_file_delete): Delete.
(mi_console_file_fputs): Delete.
(mi_console_file::write): New.
(mi_console_raw_packet): Delete.
(mi_console_file::flush): New.
(mi_console_file_flush): Delete.
(mi_console_set_raw): Rename to ...
(mi_console_file::set_raw): ... this.
* mi/mi-console.h (class mi_console_file): New class.
(mi_console_file_new, mi_console_set_raw): Delete.
* mi/mi-interp.c (mi_interpreter_init): Use mi_console_file.
(mi_set_logging): Use delete and tee_file. Adjust.
* mi/mi-main.c (output_register): Use string_file.
(mi_cmd_data_evaluate_expression): Use string_file.
(mi_cmd_data_read_memory): Use string_file.
(mi_cmd_execute, print_variable_or_computed): Use string_file.
* mi/mi-out.c (mi_ui_out::main_stream): New.
(mi_ui_out::rewind): Use main_stream and
string_file.
(mi_ui_out::put): Use main_stream and string_file.
(mi_ui_out::mi_ui_out): Remove 'stream' parameter.
Allocate a 'string_file' instead.
(mi_out_new): Don't allocate a mem_fileopen stream here.
* mi/mi-out.h (mi_ui_out::mi_ui_out): Remove 'stream' parameter.
(mi_ui_out::main_stream): Declare method.
* printcmd.c (eval_command): Use string_file.
* psymtab.c (maintenance_print_psymbols): Use stdio_file.
* python/py-arch.c (archpy_disassemble): Use string_file.
* python/py-breakpoint.c (bppy_get_commands): Use string_file.
* python/py-frame.c (frapy_str): Use string_file.
* python/py-framefilter.c (py_print_type, py_print_single_arg):
Use string_file.
* python/py-type.c (typy_str): Use string_file.
* python/py-unwind.c (unwind_infopy_str): Use string_file.
* python/py-value.c (valpy_str): Use string_file.
* record-btrace.c (btrace_insn_history): Use string_file.
* regcache.c (regcache_print): Use stdio_file.
* reggroups.c (maintenance_print_reggroups): Use stdio_file.
* remote.c (escape_buffer): Use string_file.
* rust-lang.c (rust_get_disr_info): Use string_file.
* serial.c (serial_open_ops_1): Use stdio_file.
(do_serial_close): Use delete.
* stack.c (print_frame_arg): Use string_file.
(print_frame_args): Remove local mem_fileopen stream, not used.
(print_frame): Use string_file.
* symmisc.c (maintenance_print_symbols): Use stdio_file.
* symtab.h (struct symbol_computed_ops) <generate_c_location>:
Take a 'string_file *' instead of a 'ui_file *'.
* top.c (new_ui): Use stdio_file and stderr_file.
(free_ui): Use delete.
(execute_command_to_string): Use string_file.
(quit_confirm): Use string_file.
* tracepoint.c (collection_list::append_exp): Use string_file.
* tui/tui-disasm.c (tui_disassemble): Use string_file.
* tui/tui-file.c: Don't include "ui-file.h".
(enum streamtype, struct tui_stream): Delete.
(tui_file_new, tui_file_delete, tui_fileopen, tui_sfileopen)
(tui_file_isatty, tui_file_rewind, tui_file_put): Delete.
(tui_file::tui_file): New method.
(tui_file_fputs): Delete.
(tui_file_get_strbuf): Delete.
(tui_file::puts): New method.
(tui_file_adjust_strbuf): Delete.
(tui_file_flush): Delete.
(tui_file::flush): New method.
* tui/tui-file.h: Tweak intro comment.
Include ui-file.h.
(tui_fileopen, tui_sfileopen, tui_file_get_strbuf)
(tui_file_adjust_strbuf): Delete declarations.
(class tui_file): New class.
* tui/tui-io.c (tui_initialize_io): Use tui_file.
* tui/tui-regs.c (tui_restore_gdbout): Use delete.
(tui_register_format): Use string_stream.
* tui/tui-stack.c (tui_make_status_line): Use string_file.
(tui_get_function_from_frame): Use string_file.
* typeprint.c (type_to_string): Use string_file.
* ui-file.c (struct ui_file, ui_file_magic, ui_file_new): Delete.
(null_stream): New global.
(ui_file_delete): Delete.
(ui_file::ui_file): New.
(null_file_isatty): Delete.
(ui_file::~ui_file): New.
(null_file_rewind): Delete.
(ui_file::printf): New.
(null_file_put): Delete.
(null_file_flush): Delete.
(ui_file::putstr): New.
(null_file_write): Delete.
(ui_file::putstrn): New.
(null_file_read): Delete.
(ui_file::putc): New.
(null_file_fputs): Delete.
(null_file_write_async_safe): Delete.
(ui_file::vprintf): New.
(null_file_delete): Delete.
(null_file::write): New.
(null_file_fseek): Delete.
(null_file::puts): New.
(ui_file_data): Delete.
(null_file::write_async_safe): New.
(gdb_flush, ui_file_isatty): Adjust.
(ui_file_put, ui_file_rewind): Delete.
(ui_file_write): Adjust.
(ui_file_write_for_put): Delete.
(ui_file_write_async_safe, ui_file_read): Adjust.
(ui_file_fseek): Delete.
(fputs_unfiltered): Adjust.
(set_ui_file_flush, set_ui_file_isatty, set_ui_file_rewind)
(set_ui_file_put, set_ui_file_write, set_ui_file_write_async_safe)
(set_ui_file_read, set_ui_file_fputs, set_ui_file_fseek)
(set_ui_file_data): Delete.
(string_file::~string_file, string_file::write)
(struct accumulated_ui_file, do_ui_file_xstrdup, ui_file_xstrdup)
(do_ui_file_as_string, ui_file_as_string): Delete.
(do_ui_file_obsavestring, ui_file_obsavestring): Delete.
(struct mem_file): Delete.
(mem_file_new): Delete.
(stdio_file::stdio_file): New.
(mem_file_delete): Delete.
(stdio_file::stdio_file): New.
(mem_fileopen): Delete.
(stdio_file::~stdio_file): New.
(mem_file_rewind): Delete.
(stdio_file::set_stream): New.
(mem_file_put): Delete.
(stdio_file::open): New.
(mem_file_write): Delete.
(stdio_file_magic, struct stdio_file): Delete.
(stdio_file_new, stdio_file_delete, stdio_file_flush): Delete.
(stdio_file::flush): New.
(stdio_file_read): Rename to ...
(stdio_file::read): ... this. Adjust.
(stdio_file_write): Rename to ...
(stdio_file::write): ... this. Adjust.
(stdio_file_write_async_safe): Rename to ...
(stdio_file::write_async_safe) ... this. Adjust.
(stdio_file_fputs): Rename to ...
(stdio_file::puts) ... this. Adjust.
(stdio_file_isatty): Delete.
(stdio_file_fseek): Delete.
(stdio_file::isatty): New.
(stderr_file_write): Rename to ...
(stderr_file::write) ... this. Adjust.
(stderr_file_fputs): Rename to ...
(stderr_file::puts) ... this. Adjust.
(stderr_fileopen, stdio_fileopen, gdb_fopen): Delete.
(stderr_file::stderr_file): New.
(tee_file_magic): Delete.
(struct tee_file): Delete.
(tee_file::tee_file): New.
(tee_file_new): Delete.
(tee_file::~tee_file): New.
(tee_file_delete): Delete.
(tee_file_flush): Rename to ...
(tee_file::flush): ... this. Adjust.
(tee_file_write): Rename to ...
(tee_file::write): ... this. Adjust.
(tee_file::write_async_safe): New.
(tee_file_fputs): Rename to ...
(tee_file::puts): ... this. Adjust.
(tee_file_isatty): Rename to ...
(tee_file::isatty): ... this. Adjust.
* ui-file.h (struct obstack, struct ui_file): Don't
forward-declare.
(ui_file_new, ui_file_flush_ftype, set_ui_file_flush)
(ui_file_write_ftype)
(set_ui_file_write, ui_file_fputs_ftype, set_ui_file_fputs)
(ui_file_write_async_safe_ftype, set_ui_file_write_async_safe)
(ui_file_read_ftype, set_ui_file_read, ui_file_isatty_ftype)
(set_ui_file_isatty, ui_file_rewind_ftype, set_ui_file_rewind)
(ui_file_put_method_ftype, ui_file_put_ftype, set_ui_file_put)
(ui_file_delete_ftype, set_ui_file_data, ui_file_fseek_ftype)
(set_ui_file_fseek): Delete.
(ui_file_data, ui_file_delete, ui_file_rewind)
(struct ui_file): New.
(ui_file_up): New.
(class null_file): New.
(null_stream): Declare.
(ui_file_write_for_put, ui_file_put): Delete.
(ui_file_xstrdup, ui_file_as_string, ui_file_obsavestring):
Delete.
(ui_file_fseek, mem_fileopen, stdio_fileopen, stderr_fileopen)
(gdb_fopen, tee_file_new): Delete.
(struct string_file): New.
(struct stdio_file): New.
(stdio_file_up): New.
(struct stderr_file): New.
(class tee_file): New.
* ui-out.c (ui_out::field_stream): Take a 'string_file &' instead
of a 'ui_file *'. Adjust.
* ui-out.h (class ui_out) <field_stream>: Likewise.
* utils.c (do_ui_file_delete, make_cleanup_ui_file_delete)
(null_stream): Delete.
(error_stream): Take a 'string_file &' instead of a 'ui_file *'.
Adjust.
* utils.h (struct ui_file): Delete forward declaration..
(make_cleanup_ui_file_delete, null_stream): Delete declarations.
(error_stream): Take a 'string_file &' instead of a
'ui_file *'.
* varobj.c (varobj_value_get_print_value): Use string_file.
* xtensa-tdep.c (xtensa_verify_config): Use string_file.
* gdbarch.c: Regenerate.
2017-02-02 12:11:47 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* ada-lang.c (type_as_string): Use string_file.
|
|
|
|
|
* ada-valprint.c (ada_print_floating): Use string_file.
|
|
|
|
|
* ada-varobj.c (ada_varobj_scalar_image)
|
|
|
|
|
(ada_varobj_get_value_image): Use string_file.
|
|
|
|
|
* aix-thread.c (aix_thread_extra_thread_info): Use string_file.
|
|
|
|
|
* arm-tdep.c (_initialize_arm_tdep): Use string_printf.
|
|
|
|
|
* breakpoint.c (update_inserted_breakpoint_locations)
|
|
|
|
|
(insert_breakpoint_locations, reattach_breakpoints)
|
|
|
|
|
(print_breakpoint_location, print_one_detail_ranged_breakpoint)
|
|
|
|
|
(print_it_watchpoint): Use string_file.
|
|
|
|
|
(save_breakpoints): Use stdio_file.
|
|
|
|
|
* c-exp.y (oper): Use string_file.
|
|
|
|
|
* cli/cli-logging.c (set_logging_redirect): Use ui_file_up and
|
|
|
|
|
tee_file.
|
|
|
|
|
(pop_output_files): Use delete.
|
|
|
|
|
(handle_redirections): Use stdio_file and tee_file.
|
|
|
|
|
* cli/cli-setshow.c (do_show_command): Use string_file.
|
|
|
|
|
* compile/compile-c-support.c (c_compute_program): Use
|
|
|
|
|
string_file.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_vla_size): Take a
|
|
|
|
|
'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
(generate_c_for_for_one_variable): Take a 'string_file &' instead
|
|
|
|
|
of a 'ui_file *'. Use string_file.
|
|
|
|
|
(generate_c_for_variable_locations): Take a 'string_file &'
|
|
|
|
|
instead of a 'ui_file *'.
|
|
|
|
|
* compile/compile-internal.h (generate_c_for_for_one_variable):
|
|
|
|
|
Take a 'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
* compile/compile-loc2c.c (push, pushf, unary, binary)
|
|
|
|
|
(print_label, pushf_register_address, pushf_register)
|
|
|
|
|
(do_compile_dwarf_expr_to_c): Take a 'string_file &' instead of a
|
|
|
|
|
'ui_file *'. Adjust.
|
|
|
|
|
* compile/compile.c (compile_to_object): Use string_file.
|
|
|
|
|
* compile/compile.h (compile_dwarf_expr_to_c)
|
|
|
|
|
(compile_dwarf_bounds_to_c): Take a 'string_file &' instead of a
|
|
|
|
|
'ui_file *'.
|
|
|
|
|
* cp-support.c (inspect_type): Use string_file and obstack_copy0.
|
|
|
|
|
(replace_typedefs_qualified_name): Use string_file and
|
|
|
|
|
obstack_copy0.
|
|
|
|
|
* disasm.c (gdb_pretty_print_insn): Use string_file.
|
|
|
|
|
(gdb_disassembly): Adjust reference the null_stream global.
|
|
|
|
|
(do_ui_file_delete): Delete.
|
|
|
|
|
(gdb_insn_length): Use null_stream.
|
|
|
|
|
* dummy-frame.c (maintenance_print_dummy_frames): Use stdio_file.
|
|
|
|
|
* dwarf2loc.c (dwarf2_compile_property_to_c)
|
|
|
|
|
(locexpr_generate_c_location, loclist_generate_c_location): Take a
|
|
|
|
|
'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
* dwarf2loc.h (dwarf2_compile_property_to_c): Likewise.
|
|
|
|
|
* dwarf2read.c (do_ui_file_peek_last): Delete.
|
|
|
|
|
(dwarf2_compute_name): Use string_file.
|
|
|
|
|
* event-top.c (gdb_setup_readline): Use stdio_file.
|
|
|
|
|
* gdbarch.sh (verify_gdbarch): Use string_file.
|
|
|
|
|
* gdbtypes.c (safe_parse_type): Use null_stream.
|
|
|
|
|
* guile/scm-breakpoint.c (gdbscm_breakpoint_commands): Use
|
|
|
|
|
string_file.
|
|
|
|
|
* guile/scm-disasm.c (gdbscm_print_insn_from_port): Take a
|
|
|
|
|
'string_file *' instead of a 'ui_file *'.
|
|
|
|
|
(gdbscm_arch_disassemble): Use string_file.
|
|
|
|
|
* guile/scm-frame.c (frscm_print_frame_smob): Use string_file.
|
|
|
|
|
* guile/scm-ports.c (class ioscm_file_port): Now a class that
|
|
|
|
|
inherits from ui_file.
|
|
|
|
|
(ioscm_file_port_delete, ioscm_file_port_rewind)
|
|
|
|
|
(ioscm_file_port_put): Delete.
|
|
|
|
|
(ioscm_file_port_write): Rename to ...
|
|
|
|
|
(ioscm_file_port::write): ... this. Remove file_port_magic
|
|
|
|
|
checks.
|
|
|
|
|
(ioscm_file_port_new): Delete.
|
|
|
|
|
(ioscm_with_output_to_port_worker): Use ioscm_file_port and
|
|
|
|
|
ui_file_up.
|
|
|
|
|
* guile/scm-type.c (tyscm_type_name): Use string_file.
|
|
|
|
|
* guile/scm-value.c (vlscm_print_value_smob, gdbscm_value_print):
|
|
|
|
|
Use string_file.
|
|
|
|
|
* infcmd.c (print_return_value_1): Use string_file.
|
|
|
|
|
* infrun.c (print_target_wait_results): Use string_file.
|
|
|
|
|
* language.c (add_language): Use string_file.
|
|
|
|
|
* location.c (explicit_to_string_internal): Use string_file.
|
|
|
|
|
* main.c (captured_main_1): Use null_file.
|
|
|
|
|
* maint.c (maintenance_print_architecture): Use stdio_file.
|
|
|
|
|
* mi/mi-cmd-stack.c (list_arg_or_local): Use string_file.
|
|
|
|
|
* mi/mi-common.h (struct mi_interp) <out, err, log, targ,
|
|
|
|
|
event_channel>: Change type to mi_console_file pointer.
|
|
|
|
|
* mi/mi-console.c (mi_console_file_fputs, mi_console_file_flush)
|
|
|
|
|
(mi_console_file_delete): Delete.
|
|
|
|
|
(struct mi_console_file): Delete.
|
|
|
|
|
(mi_console_file_magic): Delete.
|
|
|
|
|
(mi_console_file_new): Delete.
|
|
|
|
|
(mi_console_file::mi_console_file): New.
|
|
|
|
|
(mi_console_file_delete): Delete.
|
|
|
|
|
(mi_console_file_fputs): Delete.
|
|
|
|
|
(mi_console_file::write): New.
|
|
|
|
|
(mi_console_raw_packet): Delete.
|
|
|
|
|
(mi_console_file::flush): New.
|
|
|
|
|
(mi_console_file_flush): Delete.
|
|
|
|
|
(mi_console_set_raw): Rename to ...
|
|
|
|
|
(mi_console_file::set_raw): ... this.
|
|
|
|
|
* mi/mi-console.h (class mi_console_file): New class.
|
|
|
|
|
(mi_console_file_new, mi_console_set_raw): Delete.
|
|
|
|
|
* mi/mi-interp.c (mi_interpreter_init): Use mi_console_file.
|
|
|
|
|
(mi_set_logging): Use delete and tee_file. Adjust.
|
|
|
|
|
* mi/mi-main.c (output_register): Use string_file.
|
|
|
|
|
(mi_cmd_data_evaluate_expression): Use string_file.
|
|
|
|
|
(mi_cmd_data_read_memory): Use string_file.
|
|
|
|
|
(mi_cmd_execute, print_variable_or_computed): Use string_file.
|
|
|
|
|
* mi/mi-out.c (mi_ui_out::main_stream): New.
|
|
|
|
|
(mi_ui_out::rewind): Use main_stream and
|
|
|
|
|
string_file.
|
|
|
|
|
(mi_ui_out::put): Use main_stream and string_file.
|
|
|
|
|
(mi_ui_out::mi_ui_out): Remove 'stream' parameter.
|
|
|
|
|
Allocate a 'string_file' instead.
|
|
|
|
|
(mi_out_new): Don't allocate a mem_fileopen stream here.
|
|
|
|
|
* mi/mi-out.h (mi_ui_out::mi_ui_out): Remove 'stream' parameter.
|
|
|
|
|
(mi_ui_out::main_stream): Declare method.
|
|
|
|
|
* printcmd.c (eval_command): Use string_file.
|
|
|
|
|
* psymtab.c (maintenance_print_psymbols): Use stdio_file.
|
|
|
|
|
* python/py-arch.c (archpy_disassemble): Use string_file.
|
|
|
|
|
* python/py-breakpoint.c (bppy_get_commands): Use string_file.
|
|
|
|
|
* python/py-frame.c (frapy_str): Use string_file.
|
|
|
|
|
* python/py-framefilter.c (py_print_type, py_print_single_arg):
|
|
|
|
|
Use string_file.
|
|
|
|
|
* python/py-type.c (typy_str): Use string_file.
|
|
|
|
|
* python/py-unwind.c (unwind_infopy_str): Use string_file.
|
|
|
|
|
* python/py-value.c (valpy_str): Use string_file.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Use string_file.
|
|
|
|
|
* regcache.c (regcache_print): Use stdio_file.
|
|
|
|
|
* reggroups.c (maintenance_print_reggroups): Use stdio_file.
|
|
|
|
|
* remote.c (escape_buffer): Use string_file.
|
|
|
|
|
* rust-lang.c (rust_get_disr_info): Use string_file.
|
|
|
|
|
* serial.c (serial_open_ops_1): Use stdio_file.
|
|
|
|
|
(do_serial_close): Use delete.
|
|
|
|
|
* stack.c (print_frame_arg): Use string_file.
|
|
|
|
|
(print_frame_args): Remove local mem_fileopen stream, not used.
|
|
|
|
|
(print_frame): Use string_file.
|
|
|
|
|
* symmisc.c (maintenance_print_symbols): Use stdio_file.
|
|
|
|
|
* symtab.h (struct symbol_computed_ops) <generate_c_location>:
|
|
|
|
|
Take a 'string_file *' instead of a 'ui_file *'.
|
|
|
|
|
* top.c (new_ui): Use stdio_file and stderr_file.
|
|
|
|
|
(free_ui): Use delete.
|
|
|
|
|
(execute_command_to_string): Use string_file.
|
|
|
|
|
(quit_confirm): Use string_file.
|
|
|
|
|
* tracepoint.c (collection_list::append_exp): Use string_file.
|
|
|
|
|
* tui/tui-disasm.c (tui_disassemble): Use string_file.
|
|
|
|
|
* tui/tui-file.c: Don't include "ui-file.h".
|
|
|
|
|
(enum streamtype, struct tui_stream): Delete.
|
|
|
|
|
(tui_file_new, tui_file_delete, tui_fileopen, tui_sfileopen)
|
|
|
|
|
(tui_file_isatty, tui_file_rewind, tui_file_put): Delete.
|
|
|
|
|
(tui_file::tui_file): New method.
|
|
|
|
|
(tui_file_fputs): Delete.
|
|
|
|
|
(tui_file_get_strbuf): Delete.
|
|
|
|
|
(tui_file::puts): New method.
|
|
|
|
|
(tui_file_adjust_strbuf): Delete.
|
|
|
|
|
(tui_file_flush): Delete.
|
|
|
|
|
(tui_file::flush): New method.
|
|
|
|
|
* tui/tui-file.h: Tweak intro comment.
|
|
|
|
|
Include ui-file.h.
|
|
|
|
|
(tui_fileopen, tui_sfileopen, tui_file_get_strbuf)
|
|
|
|
|
(tui_file_adjust_strbuf): Delete declarations.
|
|
|
|
|
(class tui_file): New class.
|
|
|
|
|
* tui/tui-io.c (tui_initialize_io): Use tui_file.
|
|
|
|
|
* tui/tui-regs.c (tui_restore_gdbout): Use delete.
|
|
|
|
|
(tui_register_format): Use string_stream.
|
|
|
|
|
* tui/tui-stack.c (tui_make_status_line): Use string_file.
|
|
|
|
|
(tui_get_function_from_frame): Use string_file.
|
|
|
|
|
* typeprint.c (type_to_string): Use string_file.
|
|
|
|
|
* ui-file.c (struct ui_file, ui_file_magic, ui_file_new): Delete.
|
|
|
|
|
(null_stream): New global.
|
|
|
|
|
(ui_file_delete): Delete.
|
|
|
|
|
(ui_file::ui_file): New.
|
|
|
|
|
(null_file_isatty): Delete.
|
|
|
|
|
(ui_file::~ui_file): New.
|
|
|
|
|
(null_file_rewind): Delete.
|
|
|
|
|
(ui_file::printf): New.
|
|
|
|
|
(null_file_put): Delete.
|
|
|
|
|
(null_file_flush): Delete.
|
|
|
|
|
(ui_file::putstr): New.
|
|
|
|
|
(null_file_write): Delete.
|
|
|
|
|
(ui_file::putstrn): New.
|
|
|
|
|
(null_file_read): Delete.
|
|
|
|
|
(ui_file::putc): New.
|
|
|
|
|
(null_file_fputs): Delete.
|
|
|
|
|
(null_file_write_async_safe): Delete.
|
|
|
|
|
(ui_file::vprintf): New.
|
|
|
|
|
(null_file_delete): Delete.
|
|
|
|
|
(null_file::write): New.
|
|
|
|
|
(null_file_fseek): Delete.
|
|
|
|
|
(null_file::puts): New.
|
|
|
|
|
(ui_file_data): Delete.
|
|
|
|
|
(null_file::write_async_safe): New.
|
|
|
|
|
(gdb_flush, ui_file_isatty): Adjust.
|
|
|
|
|
(ui_file_put, ui_file_rewind): Delete.
|
|
|
|
|
(ui_file_write): Adjust.
|
|
|
|
|
(ui_file_write_for_put): Delete.
|
|
|
|
|
(ui_file_write_async_safe, ui_file_read): Adjust.
|
|
|
|
|
(ui_file_fseek): Delete.
|
|
|
|
|
(fputs_unfiltered): Adjust.
|
|
|
|
|
(set_ui_file_flush, set_ui_file_isatty, set_ui_file_rewind)
|
|
|
|
|
(set_ui_file_put, set_ui_file_write, set_ui_file_write_async_safe)
|
|
|
|
|
(set_ui_file_read, set_ui_file_fputs, set_ui_file_fseek)
|
|
|
|
|
(set_ui_file_data): Delete.
|
|
|
|
|
(string_file::~string_file, string_file::write)
|
|
|
|
|
(struct accumulated_ui_file, do_ui_file_xstrdup, ui_file_xstrdup)
|
|
|
|
|
(do_ui_file_as_string, ui_file_as_string): Delete.
|
|
|
|
|
(do_ui_file_obsavestring, ui_file_obsavestring): Delete.
|
|
|
|
|
(struct mem_file): Delete.
|
|
|
|
|
(mem_file_new): Delete.
|
|
|
|
|
(stdio_file::stdio_file): New.
|
|
|
|
|
(mem_file_delete): Delete.
|
|
|
|
|
(stdio_file::stdio_file): New.
|
|
|
|
|
(mem_fileopen): Delete.
|
|
|
|
|
(stdio_file::~stdio_file): New.
|
|
|
|
|
(mem_file_rewind): Delete.
|
|
|
|
|
(stdio_file::set_stream): New.
|
|
|
|
|
(mem_file_put): Delete.
|
|
|
|
|
(stdio_file::open): New.
|
|
|
|
|
(mem_file_write): Delete.
|
|
|
|
|
(stdio_file_magic, struct stdio_file): Delete.
|
|
|
|
|
(stdio_file_new, stdio_file_delete, stdio_file_flush): Delete.
|
|
|
|
|
(stdio_file::flush): New.
|
|
|
|
|
(stdio_file_read): Rename to ...
|
|
|
|
|
(stdio_file::read): ... this. Adjust.
|
|
|
|
|
(stdio_file_write): Rename to ...
|
|
|
|
|
(stdio_file::write): ... this. Adjust.
|
|
|
|
|
(stdio_file_write_async_safe): Rename to ...
|
|
|
|
|
(stdio_file::write_async_safe) ... this. Adjust.
|
|
|
|
|
(stdio_file_fputs): Rename to ...
|
|
|
|
|
(stdio_file::puts) ... this. Adjust.
|
|
|
|
|
(stdio_file_isatty): Delete.
|
|
|
|
|
(stdio_file_fseek): Delete.
|
|
|
|
|
(stdio_file::isatty): New.
|
|
|
|
|
(stderr_file_write): Rename to ...
|
|
|
|
|
(stderr_file::write) ... this. Adjust.
|
|
|
|
|
(stderr_file_fputs): Rename to ...
|
|
|
|
|
(stderr_file::puts) ... this. Adjust.
|
|
|
|
|
(stderr_fileopen, stdio_fileopen, gdb_fopen): Delete.
|
|
|
|
|
(stderr_file::stderr_file): New.
|
|
|
|
|
(tee_file_magic): Delete.
|
|
|
|
|
(struct tee_file): Delete.
|
|
|
|
|
(tee_file::tee_file): New.
|
|
|
|
|
(tee_file_new): Delete.
|
|
|
|
|
(tee_file::~tee_file): New.
|
|
|
|
|
(tee_file_delete): Delete.
|
|
|
|
|
(tee_file_flush): Rename to ...
|
|
|
|
|
(tee_file::flush): ... this. Adjust.
|
|
|
|
|
(tee_file_write): Rename to ...
|
|
|
|
|
(tee_file::write): ... this. Adjust.
|
|
|
|
|
(tee_file::write_async_safe): New.
|
|
|
|
|
(tee_file_fputs): Rename to ...
|
|
|
|
|
(tee_file::puts): ... this. Adjust.
|
|
|
|
|
(tee_file_isatty): Rename to ...
|
|
|
|
|
(tee_file::isatty): ... this. Adjust.
|
|
|
|
|
* ui-file.h (struct obstack, struct ui_file): Don't
|
|
|
|
|
forward-declare.
|
|
|
|
|
(ui_file_new, ui_file_flush_ftype, set_ui_file_flush)
|
|
|
|
|
(ui_file_write_ftype)
|
|
|
|
|
(set_ui_file_write, ui_file_fputs_ftype, set_ui_file_fputs)
|
|
|
|
|
(ui_file_write_async_safe_ftype, set_ui_file_write_async_safe)
|
|
|
|
|
(ui_file_read_ftype, set_ui_file_read, ui_file_isatty_ftype)
|
|
|
|
|
(set_ui_file_isatty, ui_file_rewind_ftype, set_ui_file_rewind)
|
|
|
|
|
(ui_file_put_method_ftype, ui_file_put_ftype, set_ui_file_put)
|
|
|
|
|
(ui_file_delete_ftype, set_ui_file_data, ui_file_fseek_ftype)
|
|
|
|
|
(set_ui_file_fseek): Delete.
|
|
|
|
|
(ui_file_data, ui_file_delete, ui_file_rewind)
|
|
|
|
|
(struct ui_file): New.
|
|
|
|
|
(ui_file_up): New.
|
|
|
|
|
(class null_file): New.
|
|
|
|
|
(null_stream): Declare.
|
|
|
|
|
(ui_file_write_for_put, ui_file_put): Delete.
|
|
|
|
|
(ui_file_xstrdup, ui_file_as_string, ui_file_obsavestring):
|
|
|
|
|
Delete.
|
|
|
|
|
(ui_file_fseek, mem_fileopen, stdio_fileopen, stderr_fileopen)
|
|
|
|
|
(gdb_fopen, tee_file_new): Delete.
|
|
|
|
|
(struct string_file): New.
|
|
|
|
|
(struct stdio_file): New.
|
|
|
|
|
(stdio_file_up): New.
|
|
|
|
|
(struct stderr_file): New.
|
|
|
|
|
(class tee_file): New.
|
|
|
|
|
* ui-out.c (ui_out::field_stream): Take a 'string_file &' instead
|
|
|
|
|
of a 'ui_file *'. Adjust.
|
|
|
|
|
* ui-out.h (class ui_out) <field_stream>: Likewise.
|
|
|
|
|
* utils.c (do_ui_file_delete, make_cleanup_ui_file_delete)
|
|
|
|
|
(null_stream): Delete.
|
|
|
|
|
(error_stream): Take a 'string_file &' instead of a 'ui_file *'.
|
|
|
|
|
Adjust.
|
|
|
|
|
* utils.h (struct ui_file): Delete forward declaration..
|
|
|
|
|
(make_cleanup_ui_file_delete, null_stream): Delete declarations.
|
|
|
|
|
(error_stream): Take a 'string_file &' instead of a
|
|
|
|
|
'ui_file *'.
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Use string_file.
|
|
|
|
|
* xtensa-tdep.c (xtensa_verify_config): Use string_file.
|
|
|
|
|
* gdbarch.c: Regenerate.
|
|
|
|
|
|
Add back gdb_pretty_print_insn
ui_file_rewind is a ui_file method that only really works with mem
buffer files, and is a nop on other ui_file types. It'd be desirable
to eliminate it from the base ui_file interface, and move it to the
"mem_fileopen" subclass of ui_file instead. A following patch does
just that.
Unfortunately, there are a couple references to ui_file_rewind inside
gdb_disassembler::pretty_print_insn that were made harder to eliminate
with the recent addition of the gdb_disassembler wrapper.
Before the gdb_disassembler wrapper was added, in commit
e47ad6c0bd7aa3 ("Refactor disassembly code"), gdb_pretty_print_insn
used to be passed a ui_file pointer as argument, and it was simple to
adjust that pointer be a "mem_fileopen" ui_file pointer instead, since
there's only one gdb_pretty_print_insn caller.
That commit made gdb_pretty_print_insn be a method of
gdb_disassembler, and removed the method's ui_file parameter at the
same time, replaced by referencing the gdb_disassembler's stream
instead. The trouble is that a gdb_disassembler can be instantiated
with a pointer any kind of ui_file. Casting the gdb_disassembler's
stream to a mem_fileopen ui_file inside
gdb_disassembler::pretty_print_insn in order to call the reset method
would be gross hack.
The fix here is to:
- make gdb_disassembler::pretty_print_insn a be free function again
instead of a method of gdb_disassembler. I.e., bring back
gdb_pretty_print_insn.
- but, don't add back the ui_file * parameter. Instead, move the
mem_fileopen allocation inside. That is a better interface, given
that the ui_file is only ever used as temporary scratch buffer as
an implementation detail of gdb_pretty_print_insn. The function's
real "where to send output" parameter is the ui_out pointer. (A
following patch will add back buffer reuse across invocations
differently).
- don't add back a disassemble_info pointer either. That used to be
necessary for this bit:
err = m_di.read_memory_func (pc, &data, 1, &m_di);
if (err != 0)
m_di.memory_error_func (err, pc, &m_di);
... but AFAIK, it's not really necessary. We can replace those
three lines with a call to read_code. This seems to fix a
regression even, because before commit d8b49cf0c891d0 ("Don't throw
exception in dis_asm_memory_error"), that memory_error_func call
would throw an error/exception, but now it only records the error
in the gdb_disassembler's m_err_memaddr field. (read_code throws
on error.)
With all these, gdb_pretty_print_insn is completely layered on top of
gdb_disassembler only using the latter's public API.
gdb/ChangeLog:
2017-02-02 Pedro Alves <palves@redhat.com>
* disasm.c (gdb_disassembler::pretty_print_insn): Rename to...
(gdb_pretty_print_insn): ... this. Now a free function. Add back
a 'gdbarch' parameter. Allocate a mem_fileopen stream here.
Adjust to call gdb_print_insn instead of
gdb_disassembler::print_insn.
(dump_insns, do_mixed_source_and_assembly_deprecated)
(do_mixed_source_and_assembly, do_assembly_only): Add back a
'gdbarch' parameter. Remove gdb_disassembler parameter.
(gdb_disassembly): Don't allocate a gdb_disassembler here.
* disasm.h (gdb_disassembler::pretty_print_insn): Delete
declaration.
(gdb_pretty_print_insn): Re-add declaration.
* record-btrace.c (btrace_insn_history): Don't allocate a
gdb_disassembler here. Adjust to call gdb_pretty_print_insn.
2017-02-02 12:11:47 +01:00
|
|
|
|
2017-02-02 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* disasm.c (gdb_disassembler::pretty_print_insn): Rename to...
|
|
|
|
|
(gdb_pretty_print_insn): ... this. Now a free function. Add back
|
|
|
|
|
a 'gdbarch' parameter. Allocate a mem_fileopen stream here.
|
|
|
|
|
Adjust to call gdb_print_insn instead of
|
|
|
|
|
gdb_disassembler::print_insn.
|
|
|
|
|
(dump_insns, do_mixed_source_and_assembly_deprecated)
|
|
|
|
|
(do_mixed_source_and_assembly, do_assembly_only): Add back a
|
|
|
|
|
'gdbarch' parameter. Remove gdb_disassembler parameter.
|
|
|
|
|
(gdb_disassembly): Don't allocate a gdb_disassembler here.
|
|
|
|
|
* disasm.h (gdb_disassembler::pretty_print_insn): Delete
|
|
|
|
|
declaration.
|
|
|
|
|
(gdb_pretty_print_insn): Re-add declaration.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Don't allocate a
|
|
|
|
|
gdb_disassembler here. Adjust to call gdb_pretty_print_insn.
|
|
|
|
|
|
2017-02-02 04:54:35 +01:00
|
|
|
|
2017-02-01 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* disasm.h (gdb_disassembly): Remove file_string parameter.
|
|
|
|
|
* disasm.c (gdb_disassembly): Likewise.
|
|
|
|
|
* cli/cli-cmds.c (print_disassembly): Adapt.
|
|
|
|
|
* mi/mi-cmd-disas.c (mi_cmd_disassemble): Likewise.
|
|
|
|
|
* stack.c (do_gdb_disassembly): Likewise.
|
|
|
|
|
|
2017-02-01 16:59:00 +01:00
|
|
|
|
2017-02-01 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): For
|
|
|
|
|
DWARF_VALUE_LITERAL, no longer ignore the offset on big-endian
|
|
|
|
|
targets. And if the implicit value is longer than needed, extract
|
|
|
|
|
the first bytes instead of the "least significant" ones.
|
|
|
|
|
|
2016-11-30 11:05:38 +01:00
|
|
|
|
2017-02-01 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* btrace.c (btrace_enable): Do not call btrace_add_pc for
|
|
|
|
|
BTRACE_FORMAT_PT or if can_access_registers_ptid returns false.
|
|
|
|
|
(btrace_fetch): Assert can_access_registers_ptid.
|
|
|
|
|
* record-btrace.c (require_btrace_thread, record_btrace_info): Call
|
|
|
|
|
validate_registers_access.
|
|
|
|
|
|
2017-01-20 09:05:03 +01:00
|
|
|
|
2017-02-01 Markus Metzger <markus.t.metzger@intel.com>
|
|
|
|
|
|
|
|
|
|
* gdbthread.h (can_access_registers_ptid): New.
|
|
|
|
|
* thread.c (can_access_registers_ptid): New.
|
|
|
|
|
|
2017-02-01 01:07:50 +01:00
|
|
|
|
2017-02-01 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* i386-tdep.c (i386_fast_tracepoint_valid_at): Use gdb_insn_length.
|
|
|
|
|
|
2017-01-31 18:56:36 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* mi/mi-interp.c (mi_breakpoint_created, mi_breakpoint_modified):
|
|
|
|
|
Fix typos.
|
|
|
|
|
|
2017-01-31 18:56:36 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (print_frame_args): Remove local mem_fileopen stream,
|
|
|
|
|
not used.
|
|
|
|
|
|
2017-01-31 18:56:36 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Remove xstrdup call.
|
|
|
|
|
|
gdb: make_scoped_restore and types convertible to T
A following patch will want to do
string_file str_file;
scoped_restore save_stdout
= make_scoped_restore (&gdb_stdout, &str_file);
where gdb_stdout is a ui_file *, and string_file is a type that
inherits from ui_file, but that doesn't compile today:
src/gdb/top.c: In function ‘std::__cxx11::string execute_command_to_string(char*, int)’:
src/gdb/top.c:710:50: error: no matching function for call to ‘make_scoped_restore(ui_file**, string_file*)’
= make_scoped_restore (&gdb_stdout, &str_file);
^
[...]
In file included from src/gdb/utils.h:25:0,
from src/gdb/defs.h:732,
from src/gdb/top.c:20:
src/gdb/common/scoped_restore.h:94:24: note: candidate: template<class T> scoped_restore_tmpl<T> make_scoped_restore(T*, T)
scoped_restore_tmpl<T> make_scoped_restore (T *var, T value)
^
src/gdb/common/scoped_restore.h:94:24: note: template argument deduction/substitution failed:
src/gdb/top.c:710:50: note: deduced conflicting types for parameter ‘T’ (‘ui_file*’ and ‘string_file*’)
= make_scoped_restore (&gdb_stdout, &str_file);
^
This commit makes code such as the above possible.
gdb/ChangeLog:
2017-01-31 Pedro Alves <palves@redhat.com>
* common/scoped_restore.h
(scoped_restore_tmpl::scoped_restore_tmpl): Template on T2, and
change the value's parameter type to T2.
(make_scoped_restore): Likewise.
2017-01-31 18:56:35 +01:00
|
|
|
|
2017-01-31 Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
* common/scoped_restore.h
|
|
|
|
|
(scoped_restore_tmpl::scoped_restore_tmpl): Template on T2, and
|
|
|
|
|
change the value's parameter type to T2.
|
|
|
|
|
(make_scoped_restore): Likewise.
|
|
|
|
|
|
2017-01-27 15:19:14 +01:00
|
|
|
|
2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
Richard Henderson <rth@redhat.com>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-nat.c (PTRACE_ARCH_PRCTL): New define.
|
|
|
|
|
(amd64_linux_fetch_inferior_registers): Add case to fetch FS_BASE
|
|
|
|
|
GS_BASE for older kernels.
|
|
|
|
|
(amd64_linux_store_inferior_registers): Add case to store FS_BASE
|
|
|
|
|
GS_BASE for older kernels.
|
|
|
|
|
* amd64-linux-tdep.c (amd64_linux_gregset_reg_offset): Add FS_BASE
|
|
|
|
|
and GS_BASE to the offset table.
|
|
|
|
|
(amd64_linux_register_reggroup_p): Add FS_BASE and GS_BASE to the
|
|
|
|
|
system register group.
|
|
|
|
|
* amd64-nat.c (amd64_native_gregset_reg_offset): Implements case
|
|
|
|
|
for older kernels.
|
|
|
|
|
* amd64-tdep.c (amd64_init_abi): Add segment registers for the
|
|
|
|
|
amd64 ABI.
|
|
|
|
|
* amd64-tdep.h (amd64_regnum): Add AMD64_FSBASE_REGNUM and
|
|
|
|
|
AMD64_GSBASE_REGNUM.
|
|
|
|
|
(AMD64_NUM_REGS): Set to AMD64_GSBASE_REGNUM + 1.
|
|
|
|
|
* features/Makefile (amd64-linux.dat, amd64-avx-linux.dat)
|
|
|
|
|
(amd64-mpx-linux.dat, amd64-avx512-linux.dat, x32-linux.dat)
|
|
|
|
|
(x32-avx-linux.dat, x32-avx512-linux.dat): Add
|
|
|
|
|
i386/64bit-segments.xml in those rules.
|
|
|
|
|
* features/i386/64bit-segments.xml: New file.
|
|
|
|
|
* features/i386/amd64-avx-mpx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx512-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-mpx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/x32-avx512-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/x32-avx-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-linux.xml: Add 64bit-segments.xml.
|
|
|
|
|
* features/i386/amd64-avx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx-mpx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx-mpx.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-avx512-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-linux.c: Regenerated.
|
|
|
|
|
* features/i386/amd64-mpx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/i386-avx-mpx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/i386-avx-mpx.c: Regenerated.
|
|
|
|
|
* features/i386/x32-avx-linux.c: Regenerated.
|
|
|
|
|
* features/i386/x32-avx512-linux.c: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx-mpx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-avx512-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/amd64-mpx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/x32-avx-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/x32-avx512-linux.dat: Regenerated.
|
|
|
|
|
* regformats/i386/x32-linux.dat: Regenerated.
|
|
|
|
|
|
2017-01-27 15:19:13 +01:00
|
|
|
|
2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM):
|
|
|
|
|
Set to AMD64_NUM_REGS.
|
|
|
|
|
|
2017-01-27 15:19:12 +01:00
|
|
|
|
2017-01-27 Walfred Tedeschi <walfred.tedeschi@intel.com>
|
|
|
|
|
|
|
|
|
|
* amd64-nat.c (amd64_native_gregset_reg_offset): Simplify logic
|
|
|
|
|
that checks validity of a register number.
|
|
|
|
|
|
2017-01-27 12:14:47 +01:00
|
|
|
|
2017-01-27 Kees Cook <keescook@google.com>
|
|
|
|
|
|
|
|
|
|
* gdb/arm-linux-nat.c (arm_linux_fetch_inferior_registers): Call
|
|
|
|
|
fetch_fpregs if target has fpa registers.
|
|
|
|
|
(arm_linux_store_inferior_registers): Call store_fpregs if target
|
|
|
|
|
has fpa registers.
|
|
|
|
|
|
2017-01-26 19:33:54 +01:00
|
|
|
|
2017-01-26 Andreas Arnez <arnez@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
* cris-tdep.c (cris_gdbarch_init): Remove check for
|
|
|
|
|
info.byte_order and force it to BFD_ENDIAN_LITTLE.
|
|
|
|
|
|
Fix crash when loading a core with unexpected register section size
When loading a core without an executable like so:
$ gdb --core core
for example often the gdbarch won't contain the
iterate_over_regset_sections method. For example on ARM.
This will generate a call to get_core_register_section with a NULL regset
like at corelow.c:628
get_core_register_section (regcache, NULL, ".reg", 0, 0, "general-purpose", 1);
However a check for REGSET_VARIABLE_SIZE in get_core_register_section
assumes that regset is != NULL thus leading to a crash with this backtrace:
(gdb) bt
#0 0x000000000065907b in get_core_register_section
(regcache=regcache@entry=0x2c26260, regset=regset@entry=0x0,
name=name@entry=0xdbf7b2 ".reg", min_size=min_size@entry=0,
which=which@entry=0, human_name=human_name@entry=0xdbac28
"general-purpose", required=1)
at ../../gdb/corelow.c:542
#1 0x0000000000659b70 in get_core_registers (ops=<optimized out>,
regcache=0x2c26260, regno=<optimized out>) at ../../gdb/corelow.c:628
#2 0x000000000076e5fb in target_fetch_registers
(regcache=regcache@entry=0x2c26260, regno=regno@entry=15)
at ../../gdb/target.c:3590
Note that commit: f962539ad23759 ("Warn if core file register
section is larger than expected") introduced this issue.
Thus releases > 7.8.2 are affected.
Also, this would have been caught by gdb.base/corefile.exp but the
problem is that this triggers only if the core dump is missing some data
so that it's not recognized as a linux core dump, or it's not a linux core
dump and the core file register section is larger than expected.
So if you just create a core and read it on linux with ARM the osabi is
detected properly and iterate_over_regset_sections is present and so the
problem is not triggered.
Thus creating a linux test for this with a crafted core that meets the
problem requirements is non-trivial.
This patch fixes this crash by adding a check for regset existence before
running the condition.
gdb/ChangeLog:
* corelow.c (get_core_register_section): Check for regset
existence before checking for REGSET_VARIABLE_SIZE.
2017-01-26 16:47:27 +01:00
|
|
|
|
2017-01-26 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* corelow.c (get_core_register_section): Check for regset
|
|
|
|
|
existence before checking for REGSET_VARIABLE_SIZE.
|
|
|
|
|
|
Don't throw exception in dis_asm_memory_error
Hi,
GDB calls some APIs from opcodes to do disassembly and provide some
call backs. This model makes troubles on C++ exception unwinding,
because GDB is a C++ program, and opcodes is still compiled as C.
As we can see, frame #10 and #12 are C++, while #frame 11 is C,
#10 0x0000000000544228 in memory_error (err=TARGET_XFER_E_IO, memaddr=<optimized out>) at ../../binutils-gdb/gdb/corefile.c:237
#11 0x00000000006b0a54 in print_insn_aarch64 (pc=0, info=0xffffffffeeb0) at ../../binutils-gdb/opcodes/aarch64-dis.c:3185
#12 0x0000000000553590 in gdb_pretty_print_insn (gdbarch=gdbarch@entry=0xbbceb0, uiout=uiout@entry=0xbc73d0, di=di@entry=0xffffffffeeb0,
insn=0xffffffffed40, insn@entry=0xffffffffed90, flags=flags@entry=0,
C++ exception unwinder can't go across frame #11 unless it has
unwind table. However, C program on many architectures doesn't
have it in default. As a result, GDB aborts, which is described
in PR 20939.
This is not the first time we see this kind of problem. We've
had a commit 89525768cd086a0798a504c81fdf7ebcd4c904e1
"Propagate GDB/C++ exceptions across readline using sj/lj-based TRY/CATCH".
We can fix the disassembly bug in a similar way, this is the option one.
Since opcodes is built with gdb, we fix this problem in a different
way as we did for the same issue with readline. Instead of throwing
exception in dis_asm_memory_error, we record the failed memory
address, and throw exception when GDB returns from opcodes disassemblers.
gdb:
2017-01-26 Yao Qi <yao.qi@linaro.org>
Pedro Alves <palves@redhat.com>
PR gdb/20939
* disasm.c (gdb_disassembler::dis_asm_memory_error): Don't
call memory_error, save memaddr instead.
(gdb_disassembler::print_insn): If gdbarch_print_insn returns
negative, cal memory_error.
* disasm.h (gdb_disassembler) <m_err_memaddr>: New field.
gdb/testsuite:
2017-01-26 Yao Qi <yao.qi@linaro.org>
* gdb.base/all-architectures.exp.in (do_arch_tests): Test
disassemble on address 0.
2017-01-26 15:29:20 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
Pedro Alves <palves@redhat.com>
|
|
|
|
|
|
|
|
|
|
PR gdb/20939
|
|
|
|
|
* disasm.c (gdb_disassembler::dis_asm_memory_error): Don't
|
|
|
|
|
call memory_error, save memaddr instead.
|
|
|
|
|
(gdb_disassembler::print_insn): If gdbarch_print_insn returns
|
|
|
|
|
negative, cal memory_error.
|
|
|
|
|
* disasm.h (gdb_disassembler) <m_err_memaddr>: New field.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* disasm-selftests.c (memory_error_test): New function.
|
|
|
|
|
(_initialize_disasm_selftests): Register memory_error_test.
|
|
|
|
|
|
Disassembly unit test: disassemble one instruction
This patch adds one unit test, which disassemble one instruction for
every gdbarch if available. The test needs one valid instruction of
each gdbarch, and most of them are got from breakpoint instruction.
For the rest gdbarch whose breakpoint instruction isn't a valid
instruction, I copy one instruction from the gas/testsuite/gas/
directory.
I get the valid instruction of most gdbarch except ia64, mep, mips,
tic6x, and xtensa. People familiar with these arch should be easy
to extend the test.
In order to achieve "do the unit test for every gdbarch", I add
selftest-arch.[c,h], so that we can register a function pointer,
which has one argument gdbarch. selftest.c will iterate over all
gdbarches to call the registered function pointer.
gdb:
2017-01-26 Yao Qi <yao.qi@linaro.org>
* Makefile.in (SFILES): Add disasm-selftests.c and
selftest-arch.c.
(COMMON_OBS): Add disasm-selftests.o and selftest-arch.o.
* disasm-selftests.c: New file.
* selftest-arch.c: New file.
* selftest-arch.h: New file.
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (SFILES): Add disasm-selftests.c and
|
|
|
|
|
selftest-arch.c.
|
|
|
|
|
(COMMON_OBS): Add disasm-selftests.o and selftest-arch.o.
|
|
|
|
|
* disasm-selftests.c: New file.
|
|
|
|
|
* selftest-arch.c: New file.
|
|
|
|
|
* selftest-arch.h: New file.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mep-tdep.c (mep_gdb_print_insn): Set info->arch
|
|
|
|
|
to bfd_arch_mep. Don't return 0 if section is not
|
|
|
|
|
found. Call print_insn_mep.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Pedro Alves <palves@redhat.com>
|
|
|
|
|
Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* arm-tdep.c: Include "disasm.h".
|
|
|
|
|
(gdb_print_insn_arm): Update code to get gdbarch.
|
|
|
|
|
* disasm.c (dis_asm_read_memory): Change it to
|
|
|
|
|
gdb_disassembler::dis_asm_read_memory.
|
|
|
|
|
(dis_asm_memory_error): Likewise.
|
|
|
|
|
(dis_asm_print_address): Likewise.
|
|
|
|
|
(gdb_pretty_print_insn): Change it to
|
|
|
|
|
gdb_disassembler::pretty_print_insn.
|
|
|
|
|
(dump_insns): Add one argument gdb_disassemlber. All
|
|
|
|
|
callers updated.
|
|
|
|
|
(do_mixed_source_and_assembly_deprecated): Likewise.
|
|
|
|
|
(do_mixed_source_and_assembly): Likewise.
|
|
|
|
|
(do_assembly_only): Likewise.
|
|
|
|
|
(gdb_disassembler::gdb_disassembler): New.
|
|
|
|
|
(gdb_disassembler::print_insn): New.
|
|
|
|
|
* disasm.h (class gdb_disassembler): New.
|
|
|
|
|
(gdb_pretty_print_insn): Remove declaration.
|
|
|
|
|
(gdb_disassemble_info): Likewise.
|
|
|
|
|
* guile/scm-disasm.c (class gdbscm_disassembler): New.
|
|
|
|
|
(gdbscm_disasm_read_memory_worker): Update.
|
|
|
|
|
(gdbscm_disasm_read_memory): Update.
|
|
|
|
|
(gdbscm_disasm_memory_error): Remove.
|
|
|
|
|
(gdbscm_disasm_print_address): Remove.
|
|
|
|
|
(gdbscm_disassembler::gdbscm_disassembler): New.
|
|
|
|
|
(gdbscm_print_insn_from_port): Update.
|
|
|
|
|
* mips-tdep.c: Include disasm.h.
|
|
|
|
|
(gdb_print_insn_mips): Update code to get gdbarch.
|
|
|
|
|
* record-btrace.c (btrace_insn_history): Update.
|
|
|
|
|
* spu-tdep.c: Include disasm.h.
|
|
|
|
|
(struct spu_dis_asm_data): Remove.
|
|
|
|
|
(struct spu_dis_asm_info): New.
|
|
|
|
|
(spu_dis_asm_print_address): Use spu_dis_asm_info to get
|
|
|
|
|
SPU id.
|
|
|
|
|
(gdb_print_insn_spu): Cast disassemble_info to
|
|
|
|
|
spu_dis_asm_info.
|
|
|
|
|
|
2017-01-26 15:29:19 +01:00
|
|
|
|
2017-01-26 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* disasm.c (do_ui_file_delete): Delete.
|
|
|
|
|
(gdb_insn_length): Move code creating stream to ...
|
|
|
|
|
* utils.c (null_stream): ... here. New function.
|
|
|
|
|
* utils.h (null_stream): Declare.
|
|
|
|
|
|
2017-01-23 21:31:40 +01:00
|
|
|
|
2017-01-23 Simon Marchi <simon.marchi@polymtl.ca>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (find_thread_object): Return directly
|
|
|
|
|
from the loop. Remove "found" variable.
|
|
|
|
|
|
2017-01-21 14:59:40 +01:00
|
|
|
|
2017-01-21 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
GDB 7.12.1 released.
|
|
|
|
|
|
Fix Py_DECREF being executed without holding the GIL
When the gdbpy_ref objects get destroyed, they call Py_DECREF to
decrement the reference counter of the python object they hold a
reference to. Any time we call into the Python API, we should be
holding the GIL. The gdbpy_enter object does that for us in an
RAII-fashion.
However, if gdbpy_enter is declared after a gdbpy_ref object in a
function, gdbpy_enter's destructor will be called (and the GIL will be
released) before gdbpy_ref's destructor is called. Therefore, we will
end up calling Py_DECREF without holding the GIL.
This became obvious with Python 3.6, where memory management functions
have asserts to make sure that the GIL is held. This was exposed by
tests py-as-string.exp, py-function.exp and py-xmethods. For example:
(gdb) p $_as_string(enum_valid)
Fatal Python error: Python memory allocator called without holding the GIL
Current thread 0x00007f7f7b21c780 (most recent call first):
[1] 18678 abort (core dumped) ./gdb -nx testsuite/outputs/gdb.python/py-as-string/py-as-string
#0 0x00007ffff618bc37 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff618f028 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff6b104d6 in Py_FatalError (msg=msg@entry=0x7ffff6ba15b8 "Python memory allocator called without holding the GIL") at Python/pylifecycle.c:1457
#3 0x00007ffff6a37a68 in _PyMem_DebugCheckGIL () at Objects/obmalloc.c:1972
#4 0x00007ffff6a3804e in _PyMem_DebugFree (ctx=0x7ffff6e65290 <_PyMem_Debug+48>, ptr=0x24f8830) at Objects/obmalloc.c:1994
#5 0x00007ffff6a38e1d in PyMem_Free (ptr=<optimized out>) at Objects/obmalloc.c:442
#6 0x00007ffff6b866c6 in _PyFaulthandler_Fini () at ./Modules/faulthandler.c:1369
#7 0x00007ffff6b104bd in Py_FatalError (msg=msg@entry=0x7ffff6ba15b8 "Python memory allocator called without holding the GIL") at Python/pylifecycle.c:1431
#8 0x00007ffff6a37a68 in _PyMem_DebugCheckGIL () at Objects/obmalloc.c:1972
#9 0x00007ffff6a3804e in _PyMem_DebugFree (ctx=0x7ffff6e652c0 <_PyMem_Debug+96>, ptr=0x7ffff46b6040) at Objects/obmalloc.c:1994
#10 0x00007ffff6a38f55 in PyObject_Free (ptr=<optimized out>) at Objects/obmalloc.c:503
#11 0x00007ffff6a5f27e in unicode_dealloc (unicode=unicode@entry=0x7ffff46b6040) at Objects/unicodeobject.c:1794
#12 0x00007ffff6a352a9 in _Py_Dealloc (op=0x7ffff46b6040) at Objects/object.c:1786
#13 0x000000000063f28b in gdb_Py_DECREF (op=0x7ffff46b6040) at /home/emaisin/src/binutils-gdb/gdb/python/python-internal.h:192
#14 0x000000000063fa33 in gdbpy_ref_policy::decref (ptr=0x7ffff46b6040) at /home/emaisin/src/binutils-gdb/gdb/python/py-ref.h:35
#15 0x000000000063fa77 in gdb::ref_ptr<_object, gdbpy_ref_policy>::~ref_ptr (this=0x7fffffffcdf0, __in_chrg=<optimized out>) at /home/emaisin/src/binutils-gdb/gdb/common/gdb_ref_ptr.h:91
#16 0x000000000064d8b8 in fnpy_call (gdbarch=0x2b50010, language=0x115d2c0 <c_language_defn>, cookie=0x7ffff46b7468, argc=1, argv=0x7fffffffcf48)
at /home/emaisin/src/binutils-gdb/gdb/python/py-function.c:145
The fix is to place the gdbpy_enter first in the function. I also
cleaned up the comments a bit and removed the unnecessary initialization
of the value variable.
gdb/ChangeLog:
* python/py-function.c (fnpy_call): Reorder declarations to have
the gdbpy_enter object declared first.
* python/py-xmethods.c (gdbpy_get_xmethod_arg_types): Likewise.
2017-01-21 03:02:05 +01:00
|
|
|
|
2017-01-20 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* python/py-function.c (fnpy_call): Reorder declarations to have
|
|
|
|
|
the gdbpy_enter object declared first.
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_arg_types): Likewise.
|
|
|
|
|
|
2017-01-21 02:39:08 +01:00
|
|
|
|
2017-01-20 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
2017-01-21 02:47:41 +01:00
|
|
|
|
PR python/21068
|
2017-01-21 02:39:08 +01:00
|
|
|
|
* python/python-internal.h (PyMem_RawMalloc): Define for
|
|
|
|
|
Python < 3.4.
|
|
|
|
|
* python/py-gdb-readline.c (gdbpy_readline_wrapper): Use
|
|
|
|
|
PyMem_RawMalloc instead of PyMem_Malloc.
|
|
|
|
|
|
2017-01-20 15:13:03 +01:00
|
|
|
|
2017-01-20 Mike Wrighton <mike_wrighton@codesourcery.com>
|
|
|
|
|
Luis Machado <lgustavo@codesourcery.com>
|
|
|
|
|
|
|
|
|
|
* NEWS (New commands): Mention flash-erase.
|
|
|
|
|
(New MI commands): Mention target-flash-erase.
|
|
|
|
|
* mi/mi-cmds.c (mi_cmd_target_flash_erase): Add target-flash-erase MI
|
|
|
|
|
command.
|
|
|
|
|
* mi/mi-cmds.h (mi_cmd_target_flash_erase): New declaration.
|
|
|
|
|
* mi/mi-main.c (mi_cmd_target_flash_erase): New function.
|
|
|
|
|
* target.c (flash_erase_command): New function.
|
|
|
|
|
(initialize_targets): Add new flash-erase command.
|
|
|
|
|
* target.h (flash_erase_command): New declaration.
|
|
|
|
|
|
2017-01-17 13:08:02 +01:00
|
|
|
|
2017-01-20 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
|
|
|
|
* nat/linux-ptrace.c: Only include <sys/procfs.h> if
|
|
|
|
|
HAVE_SYS_PROCFS_H is defined.
|
|
|
|
|
|
2017-01-18 16:15:50 +01:00
|
|
|
|
2017-01-18 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (struct cached_reg): Change data into a pointer.
|
|
|
|
|
* (stop_reply_dtr): Free data pointers before deleting vector.
|
|
|
|
|
(process_stop_reply): Likewise.
|
|
|
|
|
(remote_parse_stop_reply): Allocate space for data
|
|
|
|
|
|
2017-01-18 12:23:02 +01:00
|
|
|
|
2017-01-18 Alan Hayward <alan.hayward@arm.com>
|
|
|
|
|
|
|
|
|
|
* amd64-tdep.c (amd64_pseudo_register_read_value): remove
|
|
|
|
|
MAX_REGISTER_SIZE.
|
|
|
|
|
(amd64_pseudo_register_read_value): Likewise.
|
|
|
|
|
* remote.c (fetch_register_using_p): Remove MAX_REGISTER_SIZE.
|
|
|
|
|
(store_register_using_P): Likewise.
|
|
|
|
|
* regcache.c (regcache_xfer_part): Likewise.
|
|
|
|
|
|
2017-01-16 17:45:48 +01:00
|
|
|
|
2017-01-16 Ivo Raisr <ivo.raisr@oracle.com>
|
|
|
|
|
|
|
|
|
|
Split real and pseudo registers.
|
|
|
|
|
* sparc-tdep.h (SPARC_CORE_REGISTERS): New macro.
|
|
|
|
|
(sparc32_pseudo_regnum): New enum.
|
|
|
|
|
* sparc64-tdep.h (sparc64_pseudo_regnum): New enum.
|
|
|
|
|
* sparc-tdep.c (SPARC32_FPU_REGISTERS): New macro.
|
|
|
|
|
(SPARC32_CP0_REGISTERS): New macro.
|
|
|
|
|
(sparc32_pseudo_register_name): New function.
|
|
|
|
|
(sparc32_register_name): Use sparc32_pseudo_register_name.
|
|
|
|
|
(sparc32_pseudo_register_type): New function.
|
|
|
|
|
(sparc32_register_type): Use sparc32_pseudo_register_type.
|
|
|
|
|
(sparc32_pseudo_register_read, sparc32_pseudo_register_write): Handle
|
|
|
|
|
pseudo register numbers.
|
|
|
|
|
* sparc64-tdep.c SPARC64_FPU_REGISTERS): New macro.
|
|
|
|
|
(SPARC64_CP0_REGISTERS): New macro.
|
|
|
|
|
(sparc64_pseudo_register_name): New function.
|
|
|
|
|
(sparc64_register_name): Use sparc64_pseudo_register_name.
|
|
|
|
|
(sparc64_pseudo_register_type): New function.
|
|
|
|
|
(sparc64_register_type): Use sparc64_pseudo_register_type.
|
|
|
|
|
(sparc64_pseudo_register_read, sparc64_pseudo_register_write): Handle
|
|
|
|
|
pseudo register numbers.
|
|
|
|
|
(sparc64_store_floating_fields, sparc64_extract_floating_fields,
|
|
|
|
|
sparc64_store_arguments): Handle pseudo register numbers.
|
|
|
|
|
|
2017-01-13 16:45:33 +01:00
|
|
|
|
2017-01-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* remote.c (REMOTE_DEBUG_MAX_CHAR): New macro.
|
|
|
|
|
(putpkt_binary): Print only REMOTE_DEBUG_MAX_CHAR chars in debug
|
|
|
|
|
output.
|
|
|
|
|
(getpkt_or_notif_sane_1): Likewise.
|
|
|
|
|
|
2017-01-13 15:40:11 +01:00
|
|
|
|
2017-01-13 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (checker-headers): Use CXX and CXX_DIALET instead
|
|
|
|
|
of CC. Pass "-x c++-header" instead of "-x c".
|
|
|
|
|
|
2017-01-12 17:15:01 +01:00
|
|
|
|
2017-01-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* remote.c (remote_can_async_p): Update comment.
|
|
|
|
|
|
2017-01-12 17:04:53 +01:00
|
|
|
|
2017-01-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* linux-nat.c (linux_nat_can_async_p): Update comment.
|
|
|
|
|
|
2017-01-12 16:39:35 +01:00
|
|
|
|
2017-01-12 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* serial.c (serial_open): Forget about "pc" and "lpt" serial interface.
|
|
|
|
|
|
2017-01-11 17:15:26 +01:00
|
|
|
|
2017-01-11 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* cli/cli-decode.c (lookup_cmd_1): Fix typo in comment.
|
|
|
|
|
|
2016-11-29 05:39:47 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (typy_legacy_template_argument): Update.
|
|
|
|
|
* cp-support.h (struct demangle_parse_info) (demangle_parse_info,
|
|
|
|
|
~demangle_parse_info): Declare new members.
|
|
|
|
|
(cp_demangled_name_to_comp): Return unique_ptr.
|
|
|
|
|
(cp_demangled_name_parse_free)
|
|
|
|
|
(make_cleanup_cp_demangled_name_parse_free)
|
|
|
|
|
(cp_new_demangle_parse_info): Remove.
|
|
|
|
|
* cp-support.c (do_demangled_name_parse_free_cleanup)
|
|
|
|
|
(make_cleanup_cp_demangled_name_parse_free): Remove.
|
|
|
|
|
(inspect_type, cp_canonicalize_string_full)
|
|
|
|
|
(cp_canonicalize_string): Update.
|
|
|
|
|
(mangled_name_to_comp): Change return type.
|
|
|
|
|
(cp_class_name_from_physname, method_name_from_physname)
|
|
|
|
|
(cp_func_name, cp_remove_params): Update.
|
|
|
|
|
* cp-name-parser.y (demangle_parse_info): New constructor, from
|
|
|
|
|
cp_new_demangle_parse_info.
|
|
|
|
|
(~demangle_parse_info): New destructor, from
|
|
|
|
|
cp_demangled_name_parse_free.
|
|
|
|
|
(cp_merge_demangle_parse_infos): Update.
|
|
|
|
|
(cp_demangled_name_to_comp): Change return type.
|
|
|
|
|
|
2016-11-29 05:11:53 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* top.c (prevent_dont_repeat): Change return type.
|
|
|
|
|
* python/python.c (execute_gdb_command): Use std::string.
|
|
|
|
|
Update.
|
|
|
|
|
* guile/guile.c (gdbscm_execute_gdb_command): Update.
|
|
|
|
|
* command.h (prevent_dont_repeat): Change return type.
|
|
|
|
|
* breakpoint.c (bpstat_do_actions_1): Update.
|
|
|
|
|
|
2016-11-22 05:04:59 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* value.h (scoped_value_mark::~scoped_value_mark): Call
|
|
|
|
|
free_to_mark.
|
|
|
|
|
(scoped_value_mark::free_to_mark): New method.
|
|
|
|
|
* dwarf2loc.c (dwarf2_evaluate_loc_desc_full): Use
|
|
|
|
|
scoped_value_mark.
|
|
|
|
|
|
Add scoped_value_mark
This adds a scoped_value_mark class, that records the value mark in
the constructor and then calls value_free_to_mark in the destructor.
It then updates various spots in gdb to use this class, rather than a
cleanup.
It would be better overall to replace "struct value *" with a
shared_ptr, maybe eliminating the need for this class (watchpoints
would perhaps need some new mechanism as well). However, that's
difficult to do.
2017-01-10 Tom Tromey <tom@tromey.com>
* python/py-value.c (valpy_dereference, valpy_referenced_value)
(valpy_reference_value, valpy_const_value, valpy_get_address)
(valpy_get_dynamic_type, valpy_lazy_string, valpy_do_cast)
(valpy_getitem, valpy_call, valpy_binop_throw, valpy_negative)
(valpy_absolute, valpy_richcompare_throw): Use scoped_value_mark.
* dwarf2loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
scoped_value_mark.
* dwarf2-frame.c (execute_stack_op): Use scoped_value_mark.
* value.h (scoped_value_mark): New class.
2016-11-22 02:02:11 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (valpy_dereference, valpy_referenced_value)
|
|
|
|
|
(valpy_reference_value, valpy_const_value, valpy_get_address)
|
|
|
|
|
(valpy_get_dynamic_type, valpy_lazy_string, valpy_do_cast)
|
|
|
|
|
(valpy_getitem, valpy_call, valpy_binop_throw, valpy_negative)
|
|
|
|
|
(valpy_absolute, valpy_richcompare_throw): Use scoped_value_mark.
|
|
|
|
|
* dwarf2loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
|
|
|
|
|
scoped_value_mark.
|
|
|
|
|
* dwarf2-frame.c (execute_stack_op): Use scoped_value_mark.
|
|
|
|
|
* value.h (scoped_value_mark): New class.
|
|
|
|
|
|
2016-11-22 00:50:20 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* dwarf2read.c (dwarf2_build_psymtabs): Use psymtab_discarder.
|
|
|
|
|
* psympriv.h (make_cleanup_discard_psymtabs): Don't declare.
|
|
|
|
|
* psymtab.c (discard_psymtabs_upto): Remove.
|
|
|
|
|
(make_cleanup_discard_psymtabs): Remove.
|
|
|
|
|
(struct psymtab_state): Remove.
|
|
|
|
|
|
2016-11-22 00:26:20 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* record-full.c (record_full_save_cleanups): Remove.
|
|
|
|
|
(record_full_save): Use gdb::unlinker.
|
|
|
|
|
* gcore.c (do_bfd_delete_cleanup): Remove.
|
|
|
|
|
(gcore_command): Use gdb::unlinker, unique_xmalloc_ptr. Remove
|
|
|
|
|
cleanups.
|
|
|
|
|
* dwarf2read.c (unlink_if_set): Remove.
|
|
|
|
|
(write_psymtabs_to_index): Use gdb::unlinker.
|
|
|
|
|
* common/gdb_unlinker.h: New file.
|
|
|
|
|
|
Use class to manage BFD reference counts
This introduces a new specialization of gdb::ref_ptr that can be used
to manage BFD reference counts. Then it changes most places in gdb to
use this new class, rather than explicit reference-counting or
cleanups. This patch removes make_cleanup_bfd_unref.
If you look you will see a couple of spots using "release" where a use
of gdb_bfd_ref_ptr would be cleaner. These will be fixed in the next
patch.
I think this patch fixes some latent bugs. For example, it seems to
me that previously objfpy_add_separate_debug_file leaked a BFD.
I'm not 100% certain that the macho_symfile_read_all_oso change is
correct. The existing code here is hard for me to follow. One goal
of this sort of automated reference counting, though, is to make it
more difficult to make logic errors; so hopefully the code is clear
now.
2017-01-10 Tom Tromey <tom@tromey.com>
* windows-tdep.c (windows_xfer_shared_library): Update.
* windows-nat.c (windows_make_so): Update.
* utils.h (make_cleanup_bfd_unref): Remove.
* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_unref): Remove.
* symfile.h (symfile_bfd_open)
(find_separate_debug_file_in_section): Return gdb_bfd_ref_ptr.
* symfile.c (read_symbols, symbol_file_add)
(separate_debug_file_exists): Update.
(symfile_bfd_open): Return gdb_bfd_ref_ptr.
(generic_load, reread_symbols): Update.
* symfile-mem.c (symbol_file_add_from_memory): Update.
* spu-linux-nat.c (spu_bfd_open): Return gdb_bfd_ref_ptr.
(spu_symbol_file_add_from_memory): Update.
* solist.h (struct target_so_ops) <bfd_open>: Return
gdb_bfd_ref_ptr.
(solib_bfd_fopen, solib_bfd_open): Return gdb_bfd_ref_ptr.
* solib.c (solib_bfd_fopen, solib_bfd_open): Return
gdb_bfd_ref_ptr.
(solib_map_sections, reload_shared_libraries_1): Update.
* solib-svr4.c (enable_break): Update.
* solib-spu.c (spu_bfd_fopen): Return gdb_bfd_ref_ptr.
* solib-frv.c (enable_break2): Update.
* solib-dsbt.c (enable_break): Update.
* solib-darwin.c (gdb_bfd_mach_o_fat_extract): Return
gdb_bfd_ref_ptr.
(darwin_solib_get_all_image_info_addr_at_init): Update.
(darwin_bfd_open): Return gdb_bfd_ref_ptr.
* solib-aix.c (solib_aix_bfd_open): Return gdb_bfd_ref_ptr.
* record-full.c (record_full_save): Update.
* python/py-objfile.c (objfpy_add_separate_debug_file): Update.
* procfs.c (insert_dbx_link_bpt_in_file): Update.
* minidebug.c (find_separate_debug_file_in_section): Return
gdb_bfd_ref_ptr.
* machoread.c (macho_add_oso_symfile): Change abfd to
gdb_bfd_ref_ptr.
(macho_symfile_read_all_oso): Update.
(macho_check_dsym): Return gdb_bfd_ref_ptr.
(macho_symfile_read): Update.
* jit.c (bfd_open_from_target_memory): Return gdb_bfd_ref_ptr.
(jit_bfd_try_read_symtab): Update.
* gdb_bfd.h (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec)
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
gdb_bfd_ref_ptr.
(gdb_bfd_ref_policy): New struct.
(gdb_bfd_ref_ptr): New typedef.
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
(gdb_bfd_openw, gdb_bfd_openr_iovec)
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
gdb_bfd_ref_ptr.
* gcore.h (create_gcore_bfd): Return gdb_bfd_ref_ptr.
* gcore.c (create_gcore_bfd): Return gdb_bfd_ref_ptr.
(gcore_command): Update.
* exec.c (exec_file_attach): Update.
* elfread.c (elf_symfile_read): Update.
* dwarf2read.c (dwarf2_get_dwz_file): Update.
(try_open_dwop_file, open_dwo_file): Return gdb_bfd_ref_ptr.
(open_and_init_dwo_file): Update.
(open_dwp_file): Return gdb_bfd_ref_ptr.
(open_and_init_dwp_file): Update.
* corelow.c (core_open): Update.
* compile/compile-object-load.c (compile_object_load): Update.
* common/gdb_ref_ptr.h (ref_ptr::operator->): New operator.
* coffread.c (coff_symfile_read): Update.
* cli/cli-dump.c (bfd_openr_or_error, bfd_openw_or_error): Return
gdb_bfd_ref_ptr. Rename.
(dump_bfd_file, restore_command): Update.
* build-id.h (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
* build-id.c (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
(find_separate_debug_file_by_buildid): Update.
2016-11-21 19:12:23 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* windows-tdep.c (windows_xfer_shared_library): Update.
|
|
|
|
|
* windows-nat.c (windows_make_so): Update.
|
|
|
|
|
* utils.h (make_cleanup_bfd_unref): Remove.
|
|
|
|
|
* utils.c (do_bfd_close_cleanup, make_cleanup_bfd_unref): Remove.
|
|
|
|
|
* symfile.h (symfile_bfd_open)
|
|
|
|
|
(find_separate_debug_file_in_section): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* symfile.c (read_symbols, symbol_file_add)
|
|
|
|
|
(separate_debug_file_exists): Update.
|
|
|
|
|
(symfile_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(generic_load, reread_symbols): Update.
|
|
|
|
|
* symfile-mem.c (symbol_file_add_from_memory): Update.
|
|
|
|
|
* spu-linux-nat.c (spu_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(spu_symbol_file_add_from_memory): Update.
|
|
|
|
|
* solist.h (struct target_so_ops) <bfd_open>: Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(solib_bfd_fopen, solib_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* solib.c (solib_bfd_fopen, solib_bfd_open): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(solib_map_sections, reload_shared_libraries_1): Update.
|
|
|
|
|
* solib-svr4.c (enable_break): Update.
|
|
|
|
|
* solib-spu.c (spu_bfd_fopen): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* solib-frv.c (enable_break2): Update.
|
|
|
|
|
* solib-dsbt.c (enable_break): Update.
|
|
|
|
|
* solib-darwin.c (gdb_bfd_mach_o_fat_extract): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(darwin_solib_get_all_image_info_addr_at_init): Update.
|
|
|
|
|
(darwin_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* solib-aix.c (solib_aix_bfd_open): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* record-full.c (record_full_save): Update.
|
|
|
|
|
* python/py-objfile.c (objfpy_add_separate_debug_file): Update.
|
|
|
|
|
* procfs.c (insert_dbx_link_bpt_in_file): Update.
|
|
|
|
|
* minidebug.c (find_separate_debug_file_in_section): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
* machoread.c (macho_add_oso_symfile): Change abfd to
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(macho_symfile_read_all_oso): Update.
|
|
|
|
|
(macho_check_dsym): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(macho_symfile_read): Update.
|
|
|
|
|
* jit.c (bfd_open_from_target_memory): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(jit_bfd_try_read_symtab): Update.
|
|
|
|
|
* gdb_bfd.h (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
|
|
|
|
|
(gdb_bfd_openw, gdb_bfd_openr_iovec)
|
|
|
|
|
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
(gdb_bfd_ref_policy): New struct.
|
|
|
|
|
(gdb_bfd_ref_ptr): New typedef.
|
|
|
|
|
* gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr)
|
|
|
|
|
(gdb_bfd_openw, gdb_bfd_openr_iovec)
|
|
|
|
|
(gdb_bfd_openr_next_archived_file, gdb_bfd_fdopenr): Return
|
|
|
|
|
gdb_bfd_ref_ptr.
|
|
|
|
|
* gcore.h (create_gcore_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* gcore.c (create_gcore_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(gcore_command): Update.
|
|
|
|
|
* exec.c (exec_file_attach): Update.
|
|
|
|
|
* elfread.c (elf_symfile_read): Update.
|
|
|
|
|
* dwarf2read.c (dwarf2_get_dwz_file): Update.
|
|
|
|
|
(try_open_dwop_file, open_dwo_file): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(open_and_init_dwo_file): Update.
|
|
|
|
|
(open_dwp_file): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(open_and_init_dwp_file): Update.
|
|
|
|
|
* corelow.c (core_open): Update.
|
|
|
|
|
* compile/compile-object-load.c (compile_object_load): Update.
|
|
|
|
|
* common/gdb_ref_ptr.h (ref_ptr::operator->): New operator.
|
|
|
|
|
* coffread.c (coff_symfile_read): Update.
|
|
|
|
|
* cli/cli-dump.c (bfd_openr_or_error, bfd_openw_or_error): Return
|
|
|
|
|
gdb_bfd_ref_ptr. Rename.
|
|
|
|
|
(dump_bfd_file, restore_command): Update.
|
|
|
|
|
* build-id.h (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
* build-id.c (build_id_to_debug_bfd): Return gdb_bfd_ref_ptr.
|
|
|
|
|
(find_separate_debug_file_by_buildid): Update.
|
|
|
|
|
|
2016-11-21 01:48:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* common/gdb_ref_ptr.h: New file.
|
|
|
|
|
* python/py-ref.h (struct gdbpy_ref_policy): New.
|
|
|
|
|
(gdbpy_ref): Now a typedef.
|
|
|
|
|
|
Remove make_cleanup_htab_delete
This removes make_cleanup_htab_delete in favor of destructors,
building on an earlier patch that added the htab_up typedef.
Testing revealed that more cleanup-removal work was needed in
dwarf2loc.c, so this version of the patch changes code there to use
unordered_set and vector, removing some more cleanups.
2017-01-10 Tom Tromey <tom@tromey.com>
* utils.h (make_cleanup_htab_delete): Don't declare.
* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete):
Remove.
* linespec.c (decode_compound_collector): Add constructor,
destructor.
(lookup_prefix_sym): Remove cleanup.
(symtab_collector): Add constructor, destructor.
(collect_symtabs_from_filename): Remove cleanup.
* disasm.c (do_mixed_source_and_assembly): Use htab_up.
* compile/compile-c-symbols.c (generate_c_for_variable_locations):
Use htab_up.
* gnu-v3-abi.c (gnuv3_print_vtable): Use htab_up.
* dwarf2read.c (dw2_expand_symtabs_matching)
(dw2_map_symbol_filenames, dwarf_decode_macros)
(write_psymtabs_to_index): Use htab_up.
* dwarf2loc.c (func_verify_no_selftailcall)
(call_site_find_chain_1, func_verify_no_selftailcall)
(chain_candidate, call_site_find_chain_1): Use std::unordered_set,
std::vector, gdb::unique_xmalloc_ptr.
(call_sitep): Remove typedef.
(dwarf2_locexpr_baton_eval): Remove unused variable.
2016-11-20 21:20:32 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (make_cleanup_htab_delete): Don't declare.
|
|
|
|
|
* utils.c (do_htab_delete_cleanup, make_cleanup_htab_delete):
|
|
|
|
|
Remove.
|
|
|
|
|
* linespec.c (decode_compound_collector): Add constructor,
|
|
|
|
|
destructor.
|
|
|
|
|
(lookup_prefix_sym): Remove cleanup.
|
|
|
|
|
(symtab_collector): Add constructor, destructor.
|
|
|
|
|
(collect_symtabs_from_filename): Remove cleanup.
|
|
|
|
|
* disasm.c (do_mixed_source_and_assembly): Use htab_up.
|
|
|
|
|
* compile/compile-c-symbols.c (generate_c_for_variable_locations):
|
|
|
|
|
Use htab_up.
|
|
|
|
|
* gnu-v3-abi.c (gnuv3_print_vtable): Use htab_up.
|
|
|
|
|
* dwarf2read.c (dw2_expand_symtabs_matching)
|
|
|
|
|
(dw2_map_symbol_filenames, dwarf_decode_macros)
|
|
|
|
|
(write_psymtabs_to_index): Use htab_up.
|
|
|
|
|
* dwarf2loc.c (func_verify_no_selftailcall)
|
|
|
|
|
(call_site_find_chain_1, func_verify_no_selftailcall)
|
|
|
|
|
(chain_candidate, call_site_find_chain_1): Use std::unordered_set,
|
|
|
|
|
std::vector, gdb::unique_xmalloc_ptr.
|
|
|
|
|
(call_sitep): Remove typedef.
|
|
|
|
|
(dwarf2_locexpr_baton_eval): Remove unused variable.
|
|
|
|
|
|
2016-11-20 19:16:41 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python-internal.h (make_cleanup_py_decref)
|
|
|
|
|
(make_cleanup_py_xdecref): Don't declare.
|
|
|
|
|
* python/py-utils.c (py_decref, make_cleanup_py_decref)
|
|
|
|
|
(py_xdecref, make_cleanup_py_xdecref): Remove.
|
|
|
|
|
|
2016-11-20 19:04:40 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_mi_print_variables): Use gdbpy_ref.
|
|
|
|
|
(py_print_locals, enumerate_locals, py_print_args): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:57:28 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (enumerate_args): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:52:25 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-utils.c (unicode_to_encoded_string)
|
|
|
|
|
(python_string_to_target_string)
|
|
|
|
|
(python_string_to_target_python_string)
|
|
|
|
|
(python_string_to_host_string, gdbpy_obj_to_string)
|
|
|
|
|
(get_addr_from_python): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:48:51 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pyuw_object_attribute_to_pointer): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:46:23 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (eval_python_command, gdbpy_decode_line)
|
|
|
|
|
(gdbpy_run_events, gdbpy_start_type_printers)
|
|
|
|
|
(gdbpy_apply_type_printers): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:34:34 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (get_doc_string, compute_enum_values): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:31:17 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (find_thread_object, build_inferior_list):
|
|
|
|
|
Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:27:59 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:25:29 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_out_of_scope): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:23:08 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_completer_helper): Use gdbpy_ref. Remove
|
|
|
|
|
extra incref.
|
|
|
|
|
(cmdpy_completer_handle_brkchars, cmdpy_completer, cmdpy_init):
|
|
|
|
|
Use gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:13:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-20 18:10:58 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-arch.c (archpy_disassemble): Use gdbpy_ref. Don't
|
|
|
|
|
decref results of PyArg_ParseTupleAndKeywords.
|
|
|
|
|
|
2016-11-12 20:08:17 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_run_simple_file): Use
|
|
|
|
|
unique_xmalloc_ptr, gdbpy_ref.
|
|
|
|
|
|
2016-11-12 20:07:16 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (print_stack_unless_memory_error)
|
|
|
|
|
(print_string_repr, print_children): Use gdbpy_ref.
|
|
|
|
|
(dummy_python_frame): New class.
|
|
|
|
|
(dummy_python_frame::dummy_python_frame): Rename from
|
|
|
|
|
push_dummy_python_frame.
|
|
|
|
|
(py_restore_tstate): Remove.
|
|
|
|
|
|
2016-11-12 19:57:45 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (py_print_frame): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-12 19:53:50 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (ensure_python_env, restore_python_env):
|
|
|
|
|
Remove.
|
|
|
|
|
* python/python-internal.h (ensure_python_env): Don't declare.
|
|
|
|
|
* varobj.h (varobj_ensure_python_env): Don't declare.
|
|
|
|
|
* varobj.c (varobj_ensure_python_env): Remove.
|
|
|
|
|
|
2016-11-12 19:51:59 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Use
|
|
|
|
|
gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-12 19:48:48 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (print_string_repr, print_children):
|
|
|
|
|
Update.
|
|
|
|
|
* python/py-lazy-string.c (gdbpy_extract_lazy_string): Change type
|
|
|
|
|
of "encoding".
|
|
|
|
|
* varobj.c (varobj_value_get_print_value): Update.
|
|
|
|
|
* python/python-internal.h (gdbpy_extract_lazy_string): Update.
|
|
|
|
|
|
2016-11-12 19:37:52 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (varobj_get_display_hint)
|
|
|
|
|
(dynamic_varobj_has_child_method, install_new_value_visualizer)
|
|
|
|
|
(varobj_set_visualizer, free_variable): Use
|
|
|
|
|
gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-12 19:32:05 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_command): Use gdbpy_enter, gdbpy_ref.
|
|
|
|
|
(do_finish_initialization): New function. Use gdbpy_ref.
|
|
|
|
|
(gdbpy_finish_initialization): Use gdbpy_enter. Call
|
|
|
|
|
do_finish_initialization.
|
|
|
|
|
|
2016-11-12 19:23:36 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (get_set_value, get_show_value): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-12 19:15:46 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-function.c (fnpy_call): Use gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-12 19:12:41 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_function): Use gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-09 04:14:32 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-varobj.c (py_varobj_iter_dtor, py_varobj_iter_next):
|
|
|
|
|
Use gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-09 00:18:24 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* varobj.c (gdbpy_enter_varobj): New constructor.
|
|
|
|
|
* python/python-internal.h (gdbpy_enter_varobj): New class.
|
|
|
|
|
* python/py-varobj.c (py_varobj_get_iterator): Use
|
|
|
|
|
gdbpy_enter_varobj.
|
|
|
|
|
|
2016-11-08 23:47:39 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_xmethod_result_type): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.
|
|
|
|
|
(gdbpy_invoke_xmethod): Use gdbpy_ref, gdbpy_enter.
|
|
|
|
|
(gdbpy_get_xmethod_arg_types): Use gdbpy_ref,
|
|
|
|
|
unique_xmalloc_ptr.
|
|
|
|
|
(gdbpy_get_xmethod_arg_types): Use gdbpy_ref, gdbpy_enter.
|
|
|
|
|
|
2016-11-08 23:35:24 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (invoke_match_method): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-08 23:34:55 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (gdbpy_get_matching_xmethod_workers): use
|
|
|
|
|
gdbpy_enter, gdbpy_ref.
|
|
|
|
|
|
2016-11-08 23:15:01 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (python_interactive_command): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 23:13:49 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_before_prompt_hook): Use gdbpy_enter,
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-08 19:38:22 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (gdbpy_apply_val_pretty_printer): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref, unique_xmalloc_ptr.
|
|
|
|
|
|
2016-11-08 19:11:55 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* utils.h (htab_deleter): New struct.
|
|
|
|
|
(htab_up): New typedef.
|
|
|
|
|
* python/py-framefilter.c (gdbpy_apply_frame_filter): Use
|
|
|
|
|
gdbpy_enter, gdbpy_ref, htab_up.
|
|
|
|
|
|
2016-11-08 04:41:50 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-unwind.c (pending_frame_invalidate): Remove.
|
|
|
|
|
(pyuw_sniffer): Use gdbpy_enter and gdbpy_ref.
|
|
|
|
|
|
2016-11-08 00:13:40 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-xmethods.c (gdbpy_free_xmethod_worker_data)
|
|
|
|
|
(gdbpy_clone_xmethod_worker_data): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:12:17 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (save_objfile_types): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:11:37 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_eval_from_control_command)
|
|
|
|
|
(gdbpy_source_script, gdbpy_run_events)
|
|
|
|
|
(gdbpy_source_objfile_script, gdbpy_execute_objfile_script)
|
|
|
|
|
(gdbpy_free_type_printers, gdbpy_finish_initialization): Use
|
|
|
|
|
gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:08:36 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-progspace.c (py_free_pspace): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:07:53 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-objfile.c (py_free_objfile): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:06:26 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (python_on_normal_stop, python_on_resume)
|
|
|
|
|
(python_on_inferior_call_pre, python_on_inferior_call_post)
|
|
|
|
|
(python_on_memory_change, python_on_register_change)
|
|
|
|
|
(python_inferior_exit, python_new_objfile, add_thread_object)
|
|
|
|
|
(delete_thread_object, py_free_inferior): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:03:10 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-finishbreakpoint.c (bpfinishpy_handle_stop)
|
|
|
|
|
(bpfinishpy_handle_exit): Use gdbpy_enter.
|
|
|
|
|
|
2016-11-08 00:02:16 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (cmdpy_destroyer)
|
|
|
|
|
(cmdpy_completer_handle_brkchars, cmdpy_completer): Use
|
|
|
|
|
gdbpy_enter.
|
|
|
|
|
|
2016-11-07 23:59:41 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_cond_says_stop): Use
|
|
|
|
|
gdbpy_enter.
|
|
|
|
|
(gdbpy_breakpoint_has_cond): Likewise.
|
|
|
|
|
|
2016-11-07 23:56:57 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_enter): New constructor.
|
|
|
|
|
(~gdbpy_enter): New destructor.
|
|
|
|
|
(restore_python_env, ensure_python_env): Rewrite.
|
|
|
|
|
* python/python-internal.h (gdbpy_enter): New class.
|
|
|
|
|
|
2016-11-07 05:51:20 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-symbol.c (gdbpy_lookup_symbol): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:50:36 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-value.c (value_has_field, get_field_flag)
|
|
|
|
|
(get_field_type, valpy_getitem, convert_value_from_python): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:49:34 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/python.c (gdbpy_progspaces, gdbpy_objfiles): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:37:01 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-prettyprint.c (search_pp_list)
|
|
|
|
|
(find_pretty_printer_from_objfiles)
|
|
|
|
|
(find_pretty_printer_from_progspace)
|
|
|
|
|
(find_pretty_printer_from_gdb, find_pretty_printer)
|
|
|
|
|
(gdbpy_get_display_hint, gdbpy_get_varobj_pretty_printer): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:29:12 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-param.c (call_doc_function): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:25:34 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-linetable.c (build_line_table_tuple_from_pcs)
|
|
|
|
|
(ltpy_get_all_source_lines): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:25:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-framefilter.c (extract_sym, extract_value)
|
|
|
|
|
(get_py_iter_from_func, bootstrap_python_frame_filters): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:25:22 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoints): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:23:31 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-inferior.c (gdbpy_inferiors): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:21:14 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-function.c (convert_values_to_python, fnpy_init): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-07 05:10:18 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-cmd.c (gdbpy_string_to_argv): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 04:59:51 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-type.c (convert_field, make_fielditem, typy_fields)
|
|
|
|
|
(typy_range): Use gdbpy_ref.
|
|
|
|
|
|
2016-11-07 04:42:32 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-threadevent.c (create_thread_event_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-stopevent.c (create_stop_event_object): Simplify.
|
|
|
|
|
(emit_stop_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-signalevent.c (create_signal_event_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-newobjfileevent.c (create_new_objfile_event_object)
|
|
|
|
|
(emit_new_objfile_event, create_clear_objfiles_event_object)
|
|
|
|
|
(emit_clear_objfiles_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-infevents.c (create_inferior_call_event_object)
|
|
|
|
|
(create_register_changed_event_object)
|
|
|
|
|
(create_memory_changed_event_object, emit_inferior_call_event)
|
|
|
|
|
(emit_memory_changed_event, emit_register_changed_event): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-exitedevent.c (create_exited_event_object)
|
|
|
|
|
(emit_exited_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-event.h (evpy_emit_event): Remove
|
|
|
|
|
CPYCHECKER_STEALS_REFERENCE_TO_ARG annotation.
|
|
|
|
|
* python/py-event.c (evpy_emit_event): Use gdbpy_ref.
|
|
|
|
|
* python/py-continueevent.c (emit_continue_event): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-breakpoint.c (gdbpy_breakpoint_created)
|
|
|
|
|
(gdbpy_breakpoint_deleted, gdbpy_breakpoint_modified): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
* python/py-bpevent.c (create_breakpoint_event_object): Use
|
|
|
|
|
gdbpy_ref.
|
|
|
|
|
|
2016-11-05 20:43:23 +01:00
|
|
|
|
2017-01-10 Tom Tromey <tom@tromey.com>
|
|
|
|
|
|
|
|
|
|
* python/py-ref.h: New file.
|
|
|
|
|
|
2017-01-10 17:30:47 +01:00
|
|
|
|
2017-01-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* cli-out.c (cli_ui_out::do_redirect): Change return type to
|
|
|
|
|
void.
|
|
|
|
|
* cli-out.h (cli_ui_out::do_redirect): Likewise.
|
|
|
|
|
* mi/mi-out.c (mi_ui_out::do_redirect): Likewise.
|
|
|
|
|
* mi/mi-out.h (mi_ui_out::do_redirect): Likewise.
|
|
|
|
|
* ui-out.c (ui_out::redirect): Likewise.
|
|
|
|
|
* ui-out.h (ui_out::redirect, ui_out::do_redirect): Likewise.
|
|
|
|
|
* cli/cli-logging.c (set_logging_redirect): Update call site of
|
|
|
|
|
ui_out::redirect.
|
|
|
|
|
(handle_redirections): Likewise.
|
|
|
|
|
* scm-ports.c (ioscm_with_output_to_port_worker): Likewise.
|
|
|
|
|
* top.c (execute_command_to_string): Likewise.
|
|
|
|
|
* utils.c (do_ui_out_redirect_pop): Likewise.
|
|
|
|
|
|
2017-01-10 16:16:26 +01:00
|
|
|
|
2017-01-10 Simon Marchi <simon.marchi@ericsson.com>
|
|
|
|
|
|
|
|
|
|
* stack.c (_initialize_stack): Update "frame" command help message.
|
|
|
|
|
|
2017-01-08 11:17:54 +01:00
|
|
|
|
2017-01-08 Iain Buclaw <ibuclaw@gdcproject.org>
|
|
|
|
|
|
|
|
|
|
* d-exp.y (CastExpression): Emit UNOP_CAST_TYPE.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* x86-linux-nat.h: Include gdb_proc_service.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ser-base.h: Include serial.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ppc-linux-tdep.h: Include ppc-tdep.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* nat/amd64-linux-siginfo.h: Include signal.h.
|
|
|
|
|
|
2017-01-06 15:33:01 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* nat/aarch64-linux-hw-point.h: Include break-common.h.
|
|
|
|
|
|
2017-01-06 15:33:00 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mi/mi-parse.h: Include mi-cmds.h.
|
|
|
|
|
|
2017-01-06 15:26:45 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* inf-loop.c: Don't include "target.h".
|
|
|
|
|
* inf-loop.h: Include it here.
|
|
|
|
|
|
2017-01-06 15:26:45 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dfp.h: Include "dboulest.h" and "expression.h".
|
|
|
|
|
|
2017-01-06 15:26:45 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* ax-gdb.h: Include "ax.h".
|
|
|
|
|
|
2017-01-06 15:03:02 +01:00
|
|
|
|
2017-01-06 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (HFILES_NO_SRCDIR): Replace gdb_ptrace.h
|
|
|
|
|
with nat/gdb_ptrace.h.
|
|
|
|
|
|
2017-01-05 15:44:20 +01:00
|
|
|
|
2017-01-05 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-tdep.c (mips_fbsd_sigframe_init): Move && to
|
|
|
|
|
new line.
|
|
|
|
|
(mips64_fbsd_sigframe_init): Likewise.
|
|
|
|
|
|
2017-01-04 21:15:22 +01:00
|
|
|
|
2017-01-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* mips-fbsd-tdep.c (_initialize_mips_fbsd_tdep): Use
|
|
|
|
|
GDB_OSABI_FREEBSD instead of GDB_OSABI_FREEBSD_ELF.
|
|
|
|
|
|
2017-01-04 18:41:58 +01:00
|
|
|
|
2017-01-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALLDEPFILES): Add mips-fbsd-nat.c.
|
|
|
|
|
* NEWS: Mention new FreeBSD/mips native configuration.
|
|
|
|
|
* config/mips/fbsd.mh: New file.
|
|
|
|
|
* configure.host: Add mips*-*-freebsd*.
|
|
|
|
|
* mips-fbsd-nat.c: New file.
|
|
|
|
|
|
2017-01-04 18:41:58 +01:00
|
|
|
|
2017-01-04 John Baldwin <jhb@FreeBSD.org>
|
|
|
|
|
|
|
|
|
|
* Makefile.in (ALL_TARGET_OBS): Add mips-fbsd-tdep.o.
|
|
|
|
|
(ALLDEPFILES): Add mips-fbsd-tdep.c.
|
|
|
|
|
* NEWS: Mention new FreeBSD/mips target.
|
|
|
|
|
* configure.tgt: Add mips*-*-freebsd*.
|
|
|
|
|
* mips-fbsd-tdep.c: New file.
|
|
|
|
|
* mips-fbsd-tdep.h: New file.
|
|
|
|
|
|
2017-01-04 10:32:46 +01:00
|
|
|
|
2017-01-04 Yao Qi <yao.qi@linaro.org>
|
|
|
|
|
|
|
|
|
|
* dwarf2loc.c (write_pieced_value): Don't use VALUE_FRAME_ID (to),
|
|
|
|
|
use c->frame_id when the piece location is DWARF_VALUE_REGISTER.
|
|
|
|
|
|
2017-01-01 07:50:51 +01:00
|
|
|
|
2017-01-01 Joel Brobecker <brobecker@adacore.com>
|
|
|
|
|
|
2017-03-07 14:51:33 +01:00
|
|
|
|
Update copyright year range in all GDB files.
|
2017-01-01 07:50:51 +01:00
|
|
|
|
|
2017-01-01 07:39:54 +01:00
|
|
|
|
2017-01-01 Joel Brobecker <brobecker@adacore.com>
|
2016-12-23 00:50:10 +01:00
|
|
|
|
|
2017-01-01 07:39:54 +01:00
|
|
|
|
* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2016.
|
2016-12-23 00:50:10 +01:00
|
|
|
|
|
2017-01-01 07:39:54 +01:00
|
|
|
|
For older changes see ChangeLog-2016.
|
1999-04-16 03:35:26 +02:00
|
|
|
|
|
|
|
|
|
Local Variables:
|
|
|
|
|
mode: change-log
|
|
|
|
|
left-margin: 8
|
|
|
|
|
fill-column: 74
|
|
|
|
|
version-control: never
|
2007-08-10 00:44:38 +02:00
|
|
|
|
coding: utf-8
|
1999-04-16 03:35:26 +02:00
|
|
|
|
End:
|