aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2018-05-25s12z regenAlan Modra10-3/+27
This patch regenerates a number of files that either were edited by hand or not regenerated when s12z support was added to binutils. bfd/ * Makefile.in: Regenerate. * po/SRC-POTFILES.in: Regenerate. gas/ * po/POTFILES.in: Regenerate. ld/ * po/BLD-POTFILES.in: Regenerate. opcodes/ * Makefile.in: Regenerate. * po/POTFILES.in: Regenerate.
2018-05-25Fix hidden visibility compiler testAlan Modra3-0/+11
Warnings from configure tests aren't usually checked. gcc's "visibility attribute not supported in this configuration" warning is enabled by default so we don't need to add any warning flag except -Werror. * configure.ac (bfd_cv_hidden): Run test with -Werror in CFLAGS. * configure: Regenerate.
2018-05-25Automatic date update in version.inGDB Administrator1-1/+1
2018-05-24gdb: Split func_command into two parts.Andrew Burgess2-30/+46
The func_command function is used to emulate the dbx 'func' command. However, finding a stack frame based on function name might be a useful feature, and so the core of func_command is now split out into a separate function. gdb/ChangeLog: * stack.c (select_and_print_frame): Delete. (struct function_bounds): Move struct within function. (func_command): Most content moved into new function find_frame_for_function, use new function, print result, add function comment. (find_frame_for_function): New function, now returns a result.
2018-05-24PATCH (obvious): Fix a comment, and pass stream to cb_data.Philippe Waroquiers2-4/+7
iterate_over_block_arg_vars is a void function, so does not return 1 or 0. print_frame_arg_vars tells it prints on STREAM, so pass STREAM in the cb_data, not gdb_stdout. gdb/ChangeLog 2018-05-24 Philippe Waroquiers <philippe.waroquiers@skynet.be> * stack.c (iterate_over_block_arg_vars): Fix comment. (print_frame_arg_vars): Pass stream in cb_data, not gdb_stdout.
2018-05-24Update help text in record.cTom Tromey1-2/+2
This updates some help text in record.c to conform to GNU standards. I also added a "Usage" line to "record save". 2018-04-29 Tom Tromey <tom@tromey.com> * record.c (_initialize_record): Update help text.
2018-05-24Update help text in linux-fork.cTom Tromey1-2/+2
This updates some help text in linux-fork.c to conform to GNU standards. 2018-04-29 Tom Tromey <tom@tromey.com> * linux-fork.c (_initialize_linux_fork): Update help text.
2018-05-24Update help text in record-btrace.cTom Tromey1-2/+2
This updates the help text in record-btrace.c to conform to GNU standards. 2018-04-29 Tom Tromey <tom@tromey.com> * record-btrace.c (_initialize_record_btrace): Update help text.
2018-05-24Update help text in tracepoint.cTom Tromey2-4/+4
This changes the help text of a couple of commands in tracepoint.c to follow the GNU style. ChangeLog 2018-04-29 Tom Tromey <tom@tromey.com> * tracepoint.c (_initialize_tracepoint): Update help text. testsuite/ChangeLog 2018-04-30 Tom Tromey <tom@tromey.com> * gdb.trace/tfind.exp: Update help tests.
2018-05-24Update help text in disasm.cTom Tromey1-1/+1
This changes some help text in disasm.c to follow the GNU style. 2018-04-29 Tom Tromey <tom@tromey.com> * disasm.c (_initialize_disasm): Update help text.
2018-05-24Update help text for "jump" commandTom Tromey1-1/+1
This updates the usage text for the "jump" command to conform to the GNU style. 2018-04-29 Tom Tromey <tom@tromey.com> * infcmd.c (_initialize_infcmd): Update help text.
2018-05-24Update help text in dcache.cTom Tromey1-3/+4
This updates some text in dcache.c to follow GNU standards. Here, I found a couple of spots needing an update. 2018-04-29 Tom Tromey <tom@tromey.com> * dcache.c (dcache_info_1): Update usage text. (_initialize_dcache): Update help text.
2018-05-24Update help strings in TUITom Tromey2-15/+14
This updates some help strings in the TUI to more closely follow GNU standards. In this case I chose to reuse some existing "usage" macros in the help text. Also, I found that XDBWIN_HEIGHT_USAGE is unused, so I removed it. ChangeLog 2018-04-29 Tom Tromey <tom@tromey.com> * tui/tui-layout.c (_initialize_tui_layout): Update help text. * tui/tui-win.c (WIN_HEIGHT_USAGE, FOCUS_USAGE): Update (XDBWIN_HEIGHT_USAGE): Remove. (_initialize_tui_win): Use macros. Update help text.
2018-05-24Update memattr.c help stringsTom Tromey1-13/+13
This changes memattr.c to use the GNU style for help strings. 2018-04-29 Tom Tromey <tom@tromey.com> * memattr.c (_initialize_mem): Update help string.
2018-05-24Update core-related help stringsTom Tromey2-1/+3
This updates some help strings in corefile.c and gcore.c. 2018-04-27 Tom Tromey <tom@tromey.com> * corefile.c (_initialize_core): Update help string. * gcore.c (_initialize_gcore): Update help string.
2018-05-24Update help strings in skip.cTom Tromey1-7/+7
This changes help strings in skip.c to follow the GNU style. 2018-04-27 Tom Tromey <tom@tromey.com> * skip.c (_initialize_step_skip): Update help strings.
2018-05-24Fix help and documentation for inferior commandsTom Tromey2-7/+16
This changes inferior.c to add Usage lines for all commands, and to change how "metasyntactic variables" are written to conform to GNU style. While doing this I noticed that the manual doesn't document the argument to "info inferiors", so I've added that as well. ChangeLog 2018-04-27 Tom Tromey <tom@tromey.com> * inferior.c (initialize_inferiors): Update help strings. doc/ChangeLog 2018-04-27 Tom Tromey <tom@tromey.com> * gdb.texinfo (Inferiors and Programs): Document argument to "info inferiors".
2018-05-24RISC-V: Fix .align handling when .option norelax.Jim Wilson7-10/+75
gas/ PR gas/23219 * config/tc-riscv.c (riscv_frag_align_code): Move frag_more call after !riscv_opts.relax check. (riscv_handle_align): Rewrite !riscv_opts.relax support. * config/tc-riscv (MAX_MEM_FOR_RS_ALIGN_CODE): Update. * testsuite/gas/riscv/no-relax-align.d: New * testsuite/gas/riscv/no-relax-align.s: New * testsuite/gas/riscv/no-relax-align-2.d: New * testsuite/gas/riscv/no-relax-align-2.s: New
2018-05-24gdb: Restore selected frame in print_frame_local_varsAndrew Burgess8-20/+182
PR gdb/23203 reports 'bt full' causing the currently selected frame to change, this issue is fixed in this commit. Add a new class scoped_restore_selected_frame that saves and restores the selected frame. Make use of this in print_frame_local_vars to restore the selected frame on exit. gdb/ChangeLog: PR gdb/23203 * frame.c (scoped_restore_selected_frame::scoped_restore_selected_frame): Define. (scoped_restore_selected_frame::~scoped_restore_selected_frame): Define. * frame.h (class scoped_restore_selected_frame): New class. * stack.c (print_frame_local_vars): Remove catching and rethrowing of any exception, use scoped_restore_selected_frame to restore the frame instead. gdb/testsuite/ChangeLog: PR gdb/23203 * gdb.base/bt-selected-frame.c: New file. * gdb.base/bt-selected-frame.exp: New file. * lib/gdb.exp (get_current_frame_number): New function.
2018-05-24testsuite: Extend TLS core file testing with an OS-generated dumpMaciej W. Rozycki3-21/+53
Complementing commit 280ca31f4d60 ("Add test for fetching TLS from core file") extend gdb.threads/tls-core.exp with an OS-generated dump where supported. This verifies not only that our core dump interpreter is consistent with our producer, but that it matches the OS verified as well, avoiding a possible case where our interpreter would be bug-compatible with our producer but not the OS and it would go unnoticed in testing. This results in: PASS: gdb.threads/tls-core.exp: native: load core file PASS: gdb.threads/tls-core.exp: native: print thread-local storage variable PASS: gdb.threads/tls-core.exp: gcore: load core file PASS: gdb.threads/tls-core.exp: gcore: print thread-local storage variable with local testing and: UNSUPPORTED: gdb.threads/tls-core.exp: native: load core file UNSUPPORTED: gdb.threads/tls-core.exp: native: print thread-local storage variable PASS: gdb.threads/tls-core.exp: gcore: load core file PASS: gdb.threads/tls-core.exp: gcore: print thread-local storage variable with remote testing, or for testing on ports that don't supports cores. gdb/testsuite/ChangeLog: 2018-05-24 Maciej W. Rozycki <macro@mips.com> Pedro Alves <palves@redhat.com> * gdb.threads/tls-core.c: Include <stdlib.h> (thread_proc): Call `abort'. * gdb.threads/tls-core.exp: Generate a core with core_find too. (tls_core_test): New procedure, bits factored out from ... (top level): ... here. Test both native cores and gcore cores.
2018-05-24Fix macOS build, missing overridePedro Alves2-1/+6
Fixes: In file included from ../../src/gdb/darwin-nat.c:63:0: ../../src/gdb/darwin-nat.h:28:8: error: 'virtual void darwin_nat_target::create_inferior(const char*, const string&, char**, int)' can be marked override [-Werror=suggest-override] void create_inferior (const char *exec_file, ^ gdb/ChangeLog: 2018-05-24 Pedro Alves <palves@redhat.com> * darwin-nat.h (darwin_nat_target::create_inferior): Mark with override.
2018-05-24Automatic date update in version.inGDB Administrator1-1/+1
2018-05-23Add ATTRIBUTE_NONSTRING to ppc64_elf_write_core_noteH.J. Lu2-1/+6
This patch silences gcc8 -Wstringop-truncation warnings. * elf64-ppc.c (ppc64_elf_write_core_note): Add ATTRIBUTE_NONSTRING to data.
2018-05-23Remove struct complaintsTom Tromey2-11/+12
struct complaints now just holds a single enum value, so remove it and symfile_complaint_book and replace it with a global variable. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (struct complaints): Remove. (symfile_complaint_book): Remove. (series): New global. (complaint_internal): Update. (clear_complaints): Update.
2018-05-23Remove struct complainTom Tromey4-69/+23
At this point, struct complain is just holds a key, a value, and a "next" pointer to form a linked list. It's simpler to replace this with an unordered map. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (counters): New global. (struct complain): Remove. (struct complaints) <root>: Remove. (complaint_sentinel): Remove. (symfile_complaint_book): Update. (find_complaint) Remove. (complaint_internal, clear_complaints): Update. gdb/testsuite/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * gdb.gdb/complaints.exp (test_initial_complaints): Simplify.
2018-05-23Remove file and line from struct complainTom Tromey2-15/+11
The file and line handling in complaints.c wasn't used once internal_complaint was removed. This patch removes all the related code. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (struct complain) <file, line>: Remove. (find_complaint): Remove file, line parameters. (complaint_internal): Update.
2018-05-23Remove vcomplaintTom Tromey2-17/+13
vcomplaint now has a single caller, so merge it with that caller. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (vcomplaint): Remove. (complaint_internal) Merge in contents of vcomplaint.
2018-05-23Remove struct explanationTom Tromey2-48/+16
Now that there's only a single reason for a complaint to be emitted, this removes "struct explanation" and changes vcomplaint to emit the desired messages directly. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (struct complaints) <explanation>: Remove. (symfile_explanations): Remove. (symfile_complaint_book): Update. (vcomplaint): Update. (struct explanation): Remove.
2018-05-23Remove symfile_complaintsTom Tromey26-565/+427
The complaint system seems to allow for multiple different complaint topics. However, in practice only symfile_complaints has ever been defined. Seeing that complaints.c dates to 1992, and that no new complaints have been added in the intervening years, I think it is reasonable to admit that complaints are specifically related to debuginfo reading. This patch removes symfile_complaints and updates all the callers. Some of these spots should perhaps be calls to warning instead, but I did not make that change. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (symfile_complaints): Remove. (complaint_internal): Remove "complaints" parameter. (clear_complaints, vcomplaint): Remove "c" parameter. (get_complaints): Remove. * dwarf2read.c (dwarf2_statement_list_fits_in_line_number_section_complaint) (dwarf2_debug_line_missing_file_complaint) (dwarf2_debug_line_missing_end_sequence_complaint) (dwarf2_complex_location_expr_complaint) (dwarf2_const_value_length_mismatch_complaint) (dwarf2_section_buffer_overflow_complaint) (dwarf2_macro_malformed_definition_complaint) (dwarf2_invalid_attrib_class_complaint) (create_addrmap_from_index, dw2_symtab_iter_next) (dw2_expand_marked_cus) (dw2_debug_names_iterator::find_vec_in_debug_names) (dw2_debug_names_iterator::next, dw2_debug_names_iterator::next) (create_debug_type_hash_table, init_cutu_and_read_dies) (partial_die_parent_scope, add_partial_enumeration) (skip_one_die, fixup_go_packaging, quirk_rust_enum, process_die) (dwarf2_compute_name, dwarf2_physname, read_namespace_alias) (read_import_statement, read_file_scope, create_dwo_cu_reader) (create_cus_hash_table, create_dwp_hash_table) (inherit_abstract_dies, read_func_scope, read_call_site_scope) (dwarf2_rnglists_process, dwarf2_ranges_process) (dwarf2_add_type_defn, dwarf2_attach_fields_to_type) (dwarf2_add_member_fn, get_alignment, maybe_set_alignment) (handle_struct_member_die, process_structure_scope) (read_array_type, read_common_block, read_module_type) (read_tag_pointer_type, read_typedef, read_base_type) (read_subrange_type, load_partial_dies, partial_die_info::read) (partial_die_info::read, partial_die_info::read) (partial_die_info::read, read_checked_initial_length_and_offset) (dwarf2_string_attr, read_formatted_entries) (dwarf_decode_line_header) (lnp_state_machine::check_line_address, dwarf_decode_lines_1) (new_symbol, dwarf2_const_value_attr, lookup_die_type) (read_type_die_1, determine_prefix, dwarf2_get_ref_die_offset) (dwarf2_get_attr_constant_value, dwarf2_fetch_constant_bytes) (get_signatured_type, get_DW_AT_signature_type) (decode_locdesc, file_file_name, consume_improper_spaces) (skip_form_bytes, skip_unknown_opcode, dwarf_parse_macro_header) (dwarf_decode_macro_bytes, dwarf_decode_macros) (dwarf2_symbol_mark_computed, set_die_type) (read_attribute_value): Update. * stap-probe.c (handle_stap_probe, get_stap_base_address): Update. * dbxread.c (unknown_symtype_complaint) (lbrac_mismatch_complaint, repeated_header_complaint) (set_namestring, function_outside_compilation_unit_complaint) (read_dbx_symtab, process_one_symbol): Update. * gdbtypes.c (stub_noname_complaint): Update. * windows-nat.c (handle_unload_dll): Update. * coffread.c (coff_symtab_read, enter_linenos, decode_type) (decode_base_type): Update. * xcoffread.c (bf_notfound_complaint, ef_complaint) (eb_complaint, record_include_begin, record_include_end) (enter_line_range, xcoff_next_symbol_text, read_xcoff_symtab) (process_xcoff_symbol, read_symbol) (function_outside_compilation_unit_complaint) (scan_xcoff_symtab): Update. * machoread.c (macho_symtab_read, macho_add_oso_symfile): Update. * buildsym.c (finish_block_internal, make_blockvector) (end_symtab_get_static_block, augment_type_symtab): Update. * dtrace-probe.c (dtrace_process_dof) (dtrace_static_probe_ops::get_probes): Update. * complaints.h (struct complaint): Don't declare. (symfile_complaints): Remove. (complaint_internal): Remove "complaints" parameter. (complaint): Likewise. (clear_complaints): Likewise. * symfile.c (syms_from_objfile_1, finish_new_objfile) (reread_symbols): Update. * dwarf2-frame.c (dwarf2_restore_rule, execute_cfa_program) (dwarf2_frame_cache, decode_frame_entry): Update. * dwarf2loc.c (dwarf_reg_to_regnum): Update. * objc-lang.c (lookup_objc_class, lookup_child_selector) (info_selectors_command): Update. * macrotab.c (macro_include, check_for_redefinition) (macro_undef): Update. * objfiles.c (filter_overlapping_sections): Update. * stabsread.c (invalid_cpp_abbrev_complaint) (reg_value_complaint, stabs_general_complaint, dbx_lookup_type) (define_symbol, error_type, read_type, rs6000_builtin_type) (stabs_method_name_from_physname, read_member_functions) (read_cpp_abbrev, read_baseclasses, read_tilde_fields) (attach_fields_to_type, complain_about_struct_wipeout) (read_range_type, read_args, common_block_start) (common_block_end, cleanup_undefined_types_1, scan_file_globals): Update. * mdebugread.c (index_complaint, unknown_ext_complaint) (basic_type_complaint, bad_tag_guess_complaint) (bad_rfd_entry_complaint, unexpected_type_code_complaint) (reg_value_complaint, parse_symbol, parse_type, upgrade_type) (parse_procedure, parse_lines) (function_outside_compilation_unit_complaint) (parse_partial_symbols, psymtab_to_symtab_1, cross_ref) (bad_tag_guess_complaint, reg_value_complaint): Update. * cp-support.c (demangled_name_complaint): Update. * macroscope.c (sal_macro_scope): Update. * dwarf-index-write.c (class debug_names): Update. gdb/testsuite/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * gdb.gdb/complaints.exp (test_initial_complaints): Don't mention symfile_complaints. (test_short_complaints): Likewise. (test_empty_complaints): Likewise. (test_initial_complaints): Update.
2018-05-23Remove "noisy" parameter from clear_complaintsTom Tromey6-18/+23
After the previous patch, the "noisy" parameter to clear_complaints is no longer used, so this patch removes it. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (clear_complaints): Remove "noisy" parameter. * complaints.h (clear_complaints): Update. * symfile.c (syms_from_objfile_1, finish_new_objfile) (reread_symbols): Update. gdb/testsuite/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * gdb.gdb/complaints.exp (test_empty_complaints): Update.
2018-05-23Remove elements from complaint_seriesTom Tromey4-86/+15
I couldn't find a way to get complaints to use a couple of cases, and the difference between the actual printed output for these cases was minimal anyway. So, this patch removes a couple of constants from complaint_series, plus the associated code. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (enum complaint_series): Remove FIRST_MESSAGE, SUBSEQUENT_MESSAGE. (vcomplaint, clear_complaints): Update. (symfile_explanations): Remove some messages. gdb/testsuite/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * gdb.gdb/complaints.exp (test_serial_complaints): Remove. (test_short_complaints): Update.
2018-05-23Remove internal_complaintTom Tromey3-15/+5
I happened to notice that gdb has both complaint_internal and internal_complaint. The latter is unused, so this patch removes it. gdb/ChangeLog 2018-05-23 Tom Tromey <tom@tromey.com> * complaints.c (internal_complaint): Remove. * complaints.h (internal_complaint): Remove.
2018-05-23Improve File I/O overflow detection in gdbserver (PR server/23198)Erik Kurzinger2-4/+15
Currently, the function used by gdbserver to parse integers from received File I/O commands will detect overflow and fail for any value over 0xfffffff. Among other things, this has the effect of limiting the file offsets for reading or writing to about 268MB which can be insufficient for particularly large libraries. This change allows the parsing of integers up to the true maximum positive value of 0x7fffffff, increasing the file size limit to about 2GB. gdb/gdbserver/ChangeLog: 2018-05-23 Erik Kurzinger <ekurzinger@nvidia.com> PR server/23198 * hostio.c (require_int): Do not report overflow for integers between 0xfffffff and 0x7fffffff.
2018-05-23Automatic date update in version.inGDB Administrator1-1/+1
2018-05-22Fix gdb.base/remote.exp with native-extended-gdbserver boardPedro Alves2-2/+13
This fixes gdb.base/remote.exp regressions caused by the previous commit to the testcase, when tested with --target_board=native-extended-gdbserver. For example: ... show remote memory-write-packet-size The memory-write-packet-size is 0 (default). Packets are limited to 16383 bytes. (gdb) FAIL: gdb.base/remote.exp: write-packet default ... With that board, GDB connects to GDBserver at gdb_start time, so GDB is showing the actual remote/gdbserver packet size limits. Fix it using the usual "disconnect" pattern. While at it, there's no need to start GDB before compiling the testcase. gdb/testsuite/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * gdb.base/remote.exp: Only gdb_start after compiling the testcase. Issue "disconnect" before testing "set remote" command defaults. Issue clean_restart before running to main.
2018-05-22gdb/x86: Fix `-Wstrict-overflow' build error in `i387_collect_xsave'Maciej W. Rozycki2-1/+5
Make `i' defined within `i387_collect_xsave' unsigned, removing a `-Werror=strict-overflow' compilation error: .../gdb/i387-tdep.c: In function 'void i387_collect_xsave(const regcache*, int, void*, int)': .../gdb/i387-tdep.c:1348:1: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false [-Werror=strict-overflow] i387_collect_xsave (const struct regcache *regcache, int regnum, ^ cc1plus: all warnings being treated as errors Makefile:1610: recipe for target 'i387-tdep.o' failed make: *** [i387-tdep.o] Error 1 seen with GCC 5.4.0, a commit 8ee22052f690 ("gdb/x86: Handle kernels using compact xsave format") regression. While `regnum' can be -1 on entry to the function, to mean all registers, `i' is only used with non-negative register numbers. gdb/ * i387-tdep.c (i387_collect_xsave): Make `i' unsigned.
2018-05-22MIPS/gdbserver: Correctly handle narrow big-endian register transfersMaciej W. Rozycki2-4/+52
Fix an issue with `gdbserver' on big-endian n64 MIPS targets, where $dspctl is 32-bit while the `ptrace' transfer data type is 64-bit. Such register data is held in the low order 32 bits of the 64-bit data quantity exchanged with the buffer used by `fetch_register' and `store_register', however `supply_register' and `collect_register' access the same data as a 32-bit quantity. Consequently the register is presented and written as all-zeros held in the most-significant part of the big-endian 64-bit data quantity represented in the buffer: (gdb) info registers zero at v0 v1 R0 0000000000000000 0000000000000001 0000000000000001 0000000000000000 a0 a1 a2 a3 R4 00000001200212b0 0000000000000000 0000000000000021 000000012001a260 a4 a5 a6 a7 R8 000000012001a260 0000000000000004 800000010c60c000 fffffffffffffff8 t0 t1 t2 t3 R12 0000000000000000 000000fff7edab68 0000000000000001 0000000000000000 s0 s1 s2 s3 R16 000000fff7ee2068 0000000120008b80 0000000000000000 0000000000000000 s4 s5 s6 s7 R20 000000000052e5c8 000000000052f008 0000000000000000 0000000000000000 t8 t9 k0 k1 R24 0000000000000000 00000001200027c0 0000000000000000 0000000000000000 gp sp s8 ra R28 00000001200212b0 000000ffffffc850 000000ffffffc850 0000000120005ee8 status lo hi badvaddr 0000000000109cf3 0000000000943efe 000000000000000e 000000012001a008 cause pc 0000000000800024 0000000120005ee8 fcsr fir hi1 lo1 0e800000 00f30000 0000000000000000 0101010101010101 hi2 lo2 hi3 lo3 0202020202020202 0303030303030303 0404040404040404 0505050505050505 dspctl restart 00000000 0000000000000000 (gdb) Correct this problem then by using the `mips_supply_register' `mips_collect_register' accessors for 32-bit registers where the `ptrace' data type is 64-bit. These accessors already operate on 32-bit data quantities held in 64-bit containers: (gdb) info registers zero at v0 v1 R0 0000000000000000 0000000000000001 0000000000000001 0000000000000000 a0 a1 a2 a3 R4 00000001200212b0 0000000000000000 0000000000000021 000000012001a260 a4 a5 a6 a7 R8 000000012001a260 0000000000000004 800000010d82e900 fffffffffffffff8 t0 t1 t2 t3 R12 0000000000000000 000000fff7edab68 0000000000000001 0000000000000000 s0 s1 s2 s3 R16 000000fff7ee2068 0000000120008b80 0000000000000000 0000000000000000 s4 s5 s6 s7 R20 000000000052e5c8 000000000052f008 0000000000000000 0000000000000000 t8 t9 k0 k1 R24 0000000000000000 00000001200027c0 0000000000000000 0000000000000000 gp sp s8 ra R28 00000001200212b0 000000ffffffc850 000000ffffffc850 0000000120005ee8 status lo hi badvaddr 0000000000109cf3 0000000000943efe 000000000000000e 000000012001a008 cause pc 0000000000800024 0000000120005ee8 fcsr fir hi1 lo1 0e800000 00f30000 0000000000000000 0101010101010101 hi2 lo2 hi3 lo3 0202020202020202 0303030303030303 0404040404040404 0505050505050505 dspctl restart 55aa33cc 0000000000000000 (gdb) gdb/gdbserver/ * linux-mips-low.c [HAVE_PTRACE_GETREGS] (mips_collect_register) (mips_supply_register): Move outside HAVE_PTRACE_GETREGS. (mips_collect_ptrace_register, mips_supply_ptrace_register): New functions. (the_low_target): Wire them.
2018-05-22remote: one struct remote_state per struct remote_targetPedro Alves7-743/+1211
'struct remote_state' today contains per-connection state, however there's only a single global instance of that type. In order to support multiple connections, we must have one such object per connection. Thus this patch eliminates the 'remote_state' global in favor of having a remote_state instance per remote_target instance. The get_remote_state free function is eliminated as well, by making it a remote_target method instead. The patch then fixes the fallout by making all free functions that refer to get_remote_state() directly or indirectly be methods of remote_target too. Likewise, remote-fileio.c and remote-notif.c routines are parameterized with a remote_target pointer too, so they can call into the right remote_target instance. References to the global 'get_remote_state ()->remote_desc' to tell whether the remote target is open (!= nullptr) must be replaced with something else: - Command implementations use a new get_current_remote_target free function. - remote_target::open_1 checks the exception type instead. Finally, remote_target and extended_remote_target are made heap-allocated targets. As with the earlier core target patches, it still won't be possible to have more than one remote_target instance in practice, but this puts us closer. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote-fileio.c (remote_fileio_reply, remote_fileio_ioerror) (remote_fileio_badfd, remote_fileio_return_errno) (remote_fileio_return_success, remote_fileio_func_open) (remote_fileio_func_open, remote_fileio_func_close) (remote_fileio_func_read, remote_fileio_func_write) (remote_fileio_func_lseek, remote_fileio_func_rename) (remote_fileio_func_unlink, remote_fileio_func_stat) (remote_fileio_func_fstat, remote_fileio_func_gettimeofday) (remote_fileio_func_isatty, remote_fileio_func_system): Add remote_target parameter. (remote_fio_func_map) <func>: Add remote_target parameter. (do_remote_fileio_request, remote_fileio_request): * remote-fileio.h (remote_fileio_request): * remote-notif.c (remote_notif_ack, remote_notif_parse, ): Add remote_target parameter. (remote_notif_process, handle_notification): Adjust to pass down the remote. (remote_notif_state_allocate): Add remote_target parameter. Save it. * remote-notif.h (struct remote_target): Forward declare. (struct notif_client) <parse, ack, can_get_pending_events>: Add remote_target parameter. (struct remote_notif_state) <remote>: New field. (remote_notif_ack, remote_notif_parse): Add remote_target parameter. (remote_notif_state_allocate, remote_notif_state_allocate): Add remote_target parameter. * remote.c (OPAQUETHREADBYTES, threadref, gdb_ext_thread_info) (threads_listing_context, rmt_thread_action, protocol_feature) (packet_reg, stop_reply, stop_reply_p, enum packet_support) (packet_result, struct threads_listing_context, remote_state): Move definitions and declarations higher up. (remote_target) <~remote_target>: Declare. (remote_download_command_source, remote_file_put, remote_file_get) (remote_file_delete, remote_hostio_pread, remote_hostio_pwrite) (remote_hostio_pread_vFile, remote_hostio_send_command) (remote_hostio_set_filesystem, remote_hostio_open) (remote_hostio_close, remote_hostio_unlink, remote_state) (get_remote_state, get_remote_packet_size, get_memory_packet_size) (get_memory_write_packet_size, get_memory_read_packet_size) (append_pending_thread_resumptions, remote_detach_1) (append_resumption, remote_resume_with_vcont) (add_current_inferior_and_thread, wait_ns, wait_as) (process_stop_reply, remote_notice_new_inferior) (process_initial_stop_replies, remote_add_thread) (btrace_sync_conf, remote_btrace_maybe_reopen) (remove_new_fork_children, kill_new_fork_children) (discard_pending_stop_replies, stop_reply_queue_length) (check_pending_events_prevent_wildcard_vcont) (discard_pending_stop_replies_in_queue, stop_reply) (remote_notif_remove_queued_reply, stop_reply *queued_stop_reply) (peek_stop_reply, remote_parse_stop_reply, remote_stop_ns) (remote_interrupt_as, remote_interrupt_ns) (remote_get_noisy_reply, remote_query_attached) (remote_add_inferior, remote_current_thread, get_current_thread) (set_thread, set_general_thread, set_continue_thread) (set_general_process, write_ptid) (remote_unpack_thread_info_response, remote_get_threadinfo) (parse_threadlist_response, remote_get_threadlist) (remote_threadlist_iterator, remote_get_threads_with_ql) (remote_get_threads_with_qxfer) (remote_get_threads_with_qthreadinfo, extended_remote_restart) (get_offsets, remote_check_symbols, remote_supported_packet) (remote_query_supported, remote_packet_size) (remote_serial_quit_handler, remote_detach_pid) (remote_vcont_probe, remote_resume_with_hc) (send_interrupt_sequence, interrupt_query) (remote_notif_get_pending_events, fetch_register_using_p) (send_g_packet, process_g_packet, fetch_registers_using_g) (store_register_using_P, store_registers_using_G) (set_remote_traceframe, check_binary_download) (remote_write_bytes_aux, remote_write_bytes, remote_read_bytes_1) (remote_xfer_live_readonly_partial, remote_read_bytes) (remote_send_printf, remote_flash_write, readchar) (remote_serial_write, putpkt, putpkt_binary, skip_frame) (read_frame, getpkt, getpkt_or_notif_sane_1, getpkt_sane) (getpkt_or_notif_sane, remote_vkill, remote_kill_k) (extended_remote_disable_randomization, extended_remote_run) (send_environment_packet, extended_remote_environment_support) (extended_remote_set_inferior_cwd, remote_write_qxfer) (remote_read_qxfer, push_stop_reply, vcont_r_supported) (packet_command): Now methods of ... (remote_target): ... this class. (m_remote_state) <remote_target>: New field. (struct remote_state) <stop_reply_queue, remote_async_inferior_event_token, wait_forever_enabled_p>: New fields. (remote_state::remote_state): Allocate stop_reply_queue. (remote_state): Delete global. (get_remote_state_raw): Delete. (remote_target::get_remote_state): Allocate m_remote_state on demand. (get_current_remote_target): New. (remote_ops, extended_remote_ops): Delete. (wait_forever_enabled_p, remote_async_inferior_event_token): Delete, moved to struct remote_state. (remote_target::close): Delete self. Destruction bits split to ... (remote_target::~remote_target): ... this. (show_memory_packet_size): Adjust to use get_current_remote_target. (struct protocol_feature) <func>: Add remote_target parameter. All callers adjusted. (curr_quit_handler_target): New. (remote_serial_quit_handler): Reimplement. (remote_target::open_1): Adjust to use get_current_remote_target. Heap-allocate remote_target/extended_remote_target instances. (vcont_builder::vcont_builder): Add remote_target parameter, and save it in m_remote. All callers adjusted. (vcont_builder::m_remote): New field. (vcont_builder::restart, vcont_builder::flush) (vcont_builder::push_action): Use it. (remote_target::commit_resume): Use it. (struct queue_iter_param) <remote>: New field. (remote_target::remove_new_fork_children): Fill in 'remote' field. (check_pending_event_prevents_wildcard_vcont_callback_data): New. (check_pending_event_prevents_wildcard_vcont_callback) (remote_target::check_pending_events_prevent_wildcard_vcont) (remote_target::discard_pending_stop_replies) (remote_target::discard_pending_stop_replies_in_queue) (remote_target::remote_notif_remove_queued_reply): Fill in 'remote' field. (remote_notif_get_pending_events): New. (remote_target::readchar, remote_target::remote_serial_write): Save/restore curr_quit_handler_target. (putpkt): New. (kill_new_fork_children): Fill in 'remote' field. (packet_command): Use get_current_remote_target, defer to remote_target method of same name. (scoped_remote_fd::scoped_remote_fd): Add 'remote_target' parameter, and save it in m_remote. All callers adjusted. (scoped_remote_fd::release): Use m_remote. (scoped_remote_fd::m_remote): New field. (remote_file_put, remote_file_get, remote_file_delete): Use get_current_remote_target, defer to remote_target method of same name. (remote_btrace_reset): Add remote_state paremeter. Update all callers. (remote_async_inferior_event_handler). Pass down 'data'. (remote_new_objfile): Use get_current_remote_target. (remote_target::vcont_r_supported): New. (set_range_stepping): Use get_current_remote_target and remote_target::vcont_r_supported. (_initialize_remote): Don't allocate 'remote_state' and 'stop_reply_queue' globals. * remote.h (struct remote_target): Forward declare. (getpkt, putpkt, remote_notif_get_pending_events): Add 'remote_target' parameter.
2018-05-22remote: Make vcont_builder a classPedro Alves2-38/+59
gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (vcont_builder): Now a class. Make all data members private. (vcont_builder) <vcont_builder, restart, flush, push_action>: Declare methods. (vcont_builder_restart): Rename to ... (vcont_builder::restart): ... this. (vcont_builder_flush): Rename to ... (vcont_builder::flush): ... this. (vcont_builder_push_action): Rename to ... (vcont_builder::push_action): ... this. (remote_target::commit_resume): Adjust.
2018-05-22Handle "show remote memory-write-packet-size" when not connectedPedro Alves4-23/+86
Currently "show remote memory-write-packet-size" says that the packet size is limited to whatever is stored in the remote_state global, even if not connected to a target. When we get to support multiple instances of remote targets, there won't be a remote_state global anymore, so that must be replaced by something else. Since it doesn't make sense to print the limit of the packet size of a non-existing connection, this patch makes us say that the limit will be further reduced when we connect. The text is taken from the command's online help, which says: "The actual limit is further reduced dependent on the target." Note that a value of "0" is special, as per "help set remote memory-write-packet-size": ~~~ Specify the number of bytes in a packet or 0 (zero) for the default packet size. ~~~ I've tweaked "show remote memory-write-packet-size" to include "(default)" in the output in that case, like this: (gdb) show remote memory-write-packet-size The memory-write-packet-size is 0 (default). The actual limit will be further reduced dependent on the target. While working on this, I noticed that an explicit "set remote write-packet-size 0" does not makes GDB go back to the exact same state as the default state when GDB starts up: (gdb) show remote memory-write-packet-size The memory-write-packet-size is 0. [...] ^^ (gdb) set remote memory-write-packet-size 0 (gdb) show remote memory-write-packet-size The memory-write-packet-size is 16384. [...] ^^^^^ The "16384" number comes from DEFAULT_MAX_MEMORY_PACKET_SIZE. This happens because git commit a5c0808e221c ("gdb: remove packet size limit") at <https://sourceware.org/ml/gdb-patches/2015-08/msg00743.html>, added this: /* So that the query shows the correct value. */ if (size <= 0) size = DEFAULT_MAX_MEMORY_PACKET_SIZE; to set_memory_packet_size, but despite what the comment suggests, that also has the side-effect of recording DEFAULT_MAX_MEMORY_PACKET_SIZE in config->size. Finally, DEFAULT_MAX_MEMORY_PACKET_SIZE only makes sense for "set remote memory-write-packet-size fixed", so I've renamed it accordingly, to make it a little bit clearer. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (DEFAULT_MAX_MEMORY_PACKET_SIZE): Rename to ... (DEFAULT_MAX_MEMORY_PACKET_SIZE_FIXED): ... this. (get_fixed_memory_packet_size): New. (get_memory_packet_size): Use it. (set_memory_packet_size): Don't override the config size with DEFAULT_MAX_MEMORY_PACKET_SIZE. (show_memory_packet_size): Use get_fixed_memory_packet_size. Don't refer to get_memory_packet_size if not connected to a remote target. Show "(default)" if configured size is 0. gdb/testsuite/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * gdb.base/remote.exp: Adjust expected output of "show remote memory-write-packet-size". Add tests for "set remote memory-write-packet-size 0" and "set remote memory-write-packet-size fixed/limit".
2018-05-22remote: Move discard_pending_stop_replies callPedro Alves2-3/+10
This helps because discard_pending_stop_replies will later become a method of remote_target. Otherwise, when we have multiple instances of remote_target, we'd have to make discard_pending_stop_replies find the inferior's target_ops, and upcast it to remote_target (if indeed a remote) to find the pending stop replies queue to clear. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (remote_target::mourn_inferior): Move discard_pending_stop_replies call here from ... (_initialize_remote): ... here.
2018-05-22remote: Small cleanup in compare_section_commandPedro Alves2-3/+5
The set_general_process call in compare_sections_command isn't actually needed. remote_target::verify_memory and remote_target::xfer_partial already handle making sure the remote is pointing at the right process or thread. Getting this out of the way helps a bit with further elimination of the remote_state global, because we have to handle the case of a user invoking the command even if not connect to a remote target. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (compare_section_command): Remove set_general_process call.
2018-05-22remote: remote_arch_state pointers -> remote_arch_state objectsPedro Alves2-44/+59
The previous patch made the map store pointers to remote_arch_state instead of objects directly, simply because struct remote_arch_state is still incomplete where struct remote_state is declared. This patch thus moves the remote_arch_state declaration higher up in the file, and makes the map store remote_arch_state objects directly instead of pointers to objects. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (struct packet_reg, struct remote_arch_state): Move higher up in the file. (remote_state) <m_arch_states>: Store remote_arch_state values instead of remote_arch_state pointers. (remote_state::get_remote_arch_state): Adjust.
2018-05-22remote: multiple remote_arch_state instances per archPedro Alves2-48/+83
Currently, we associate gdbarch-related remote protocol state on a per-gdbarch data object. Things like the size of the g/G packet, and the max remote packet size. If we'll support being connected to different remote servers at the same time, then we need to cope with each having their own packet sizes, even if they are each debugging programs of the same architecture. I.e., a single instance of remote_arch_state per arch is not sufficient. This patch moves the remote_arch_state object to a map of gdbarch-to-remote_arch_state saved in the remote_state structure. Usually there will only be one entry in the map, though we may see more with stubs that support multi-process and/or archs with multiple ABIs (e.g, one remote_arch_state for 64-bit inferiors and another for 32-bit inferiors). gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c: Include <unordered_map>. (remote_state): Now a class. (remote_state) <get_remote_arch_state>: Declare method. <get_remote_arch_state>: New field. (remote_arch_state) <remote_arch_state>: Declare ctor. <regs>: Now a unique_ptr. (remote_gdbarch_data_handle): Delete. (get_remote_arch_state): Delete. (remote_state::get_remote_arch_state): New. (get_remote_state): Adjust to call remote_state's get_remote_arch_state method. (init_remote_state): Delete, bits factored out to ... (remote_arch_state::remote_arch_state): ... this new method. (get_remote_packet_size, get_memory_packet_size) (process_g_packet, remote_target::fetch_registers) (remote_target::prepare_to_store, store_registers_using_G) (remote_target::store_registers, remote_target::get_trace_status): Adjust to call remote_state's method. (_initialize_remote): Remove reference to remote_gdbarch_data_handle.
2018-05-22remote: Make readahead_cache a C++ classPedro Alves2-35/+52
The idea here is eliminate the get_remote_state calls from within readahead_cache_invalidate, readahead_cache_invalidate_fd, remote_hostio_pread_from_cache by making those functions be class methods instead. Later on we'll have one readahead_cache instance per remote connection, and this change makes that easier. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (struct readahead_cache) <invalidate, invalidate_fd, pread>: New method declarations. (remote_target::open_1): Adjust. (readahead_cache_invalidate): Rename to ... (readahead_cache::invalidate): ... this, and adjust to be a class method. (readahead_cache_invalidate_fd): Rename to ... (readahead_cache::invalidate_fd): ... this, and adjust to be a class method. (remote_hostio_pwrite): Adjust. (remote_hostio_pread_from_cache): Rename to ... (readahead_cache::pread): ... this, and adjust to be a class method. (remote_hostio_close): Adjust.
2018-05-22remote: Eliminate remote_hostio_close_cleanupPedro Alves2-29/+75
gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> * remote.c (remote_hostio_close_cleanup): Delete. (class scoped_remote_fd): New. (remote_file_put, remote_file_get): Use it.
2018-05-22remote: struct remote_state, use op new, fix leaksPedro Alves2-61/+70
A bit of C++ification. Also plugs a few leaks, since currently nothing is freeing a few fields of remote_state. They're now freed in the added destructor. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> (struct vCont_action_support): Use bool and initialize all fields. (struct readahead_cache): Initialize all fields. (remote_state): Use bool and initialize all fields. (remote_state::remote_state, remote_state::~remote_state): New. (new_remote_state): Delete. (_initialize_remote): Use new to allocate remote_state.
2018-05-22Support UTF-8 identifiers in C/C++ expressions (PR gdb/22973)Pedro Alves8-44/+240
Factor out cp_ident_is_alpha/cp_ident_is_alnum out of gdb/cp-name-parser.y and use it in the C/C++ expression parser too. New test included. gdb/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> 張俊芝 <zjz@zjz.name> PR gdb/22973 * c-exp.y: Include "c-support.h". (parse_number, c_parse_escape, lex_one_token): Use TOLOWER instead of tolower. Use c_ident_is_alpha to scan names. * c-lang.c: Include "c-support.h". (convert_ucn, convert_octal, convert_hex, convert_escape): Use ISXDIGIT instead of isxdigit and ISDIGIT instead of isdigit. * c-support.h: New file, with bits factored out from ... * cp-name-parser.y: ... this file. Include "c-support.h". (cp_ident_is_alpha, cp_ident_is_alnum): Deleted, moved to c-support.h and renamed. (symbol_end, yylex): Adjust. gdb/testsuite/ChangeLog: 2018-05-22 Pedro Alves <palves@redhat.com> PR gdb/22973 * gdb.base/utf8-identifiers.c: New file. * gdb.base/utf8-identifiers.exp: New file.
2018-05-22[PowerPC] Recognize isa205 in linux core filesPedro Franco de Carvalho7-7/+126
Currently the ppc linux core file target doesn't return target descriptions with the lager FPSCR introduced in isa205. This patch changes the core file target so that the auxv is read from the core file to determine the size of FPSCR, so that the appropriate target description is selected. gdb/ChangeLog: 2018-05-22 Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com> * arch/ppc-linux-common.c (ppc_linux_has_isa205): Change the parameter type to CORE_ADDR. * arch/ppc-linux-common.h (ppc_linux_has_isa205): Change the parameter type in declaration to CORE_ADDR. * ppc-linux-tdep.c (ppc_linux_core_read_description): Call target_auxv_search to get AT_HWCAP and use the result to get the target description. * ppc-linux-nat.c (ppc_linux_get_hwcap): Change the return type to CORE_ADDR. Remove the cast of the return value to unsigned long. Fix error predicate of target_auxv_search. (ppc_linux_nat_target::read_description): Change the type of the hwcap variable to CORE_ADDR. gdb/testsuite/ChangeLog: 2018-05-22 Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com> * gdb.arch/powerpc-fpscr-gcore.exp: New file.
2018-05-22[PowerPC] Fix inclusion of dfp pseudoregs in tdepPedro Franco de Carvalho2-4/+11
Previously, decimal floating point pseudoregisters were always included in the target if it had a floating point unit. This patch changes this to only include them if the target description indicates that they are present, i.e. if the FPSCR register has more than 32 bits. gdb/ChangeLog: 2018-05-22 Pedro Franco de Carvalho <pedromfc@linux.vnet.ibm.com> * rs6000-tdep.c (rs6000_gdbarch_init): Assign 1 to have_dfp only if the size of fpscr is larger than 32 bits.