aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2017-10-21Add overloads of for_each_thread/find_thread that filter on pidSimon Marchi4-15/+38
It happens often that we want to iterate or find threads restricted to a given pid. I think it's worth having an overload to help with this. Right now there is a single user of each of the find_thread and for_each_thread overload, but as we replace the usages of find_inferior with for_each_thread/find_thread, more usages will pop up. gdb/gdbserver/ChangeLog: * gdbthread.h (find_thread, for_each_thread): New functions. * inferiors.c (thread_of_pid): Remove. (find_any_thread_of_pid): Use find_thread. * linux-low.c (num_lwps): Use for_each_thread.
2017-10-21Get rid of VEC (mem_region)Simon Marchi10-275/+243
This patch removes VEC (mem_region). Doing so requires touching a lot of little things here and there. The fields in mem_attrib are now initialized during construction. The values match those that were in default_mem_attrib (now removed). unknown_mem_attrib is also removed, and replaced with a static method (mem_attrib::unknown) that returns the equivalent. mem_region is initialized in a way similar to mem_region_init (now removed) did. I found the organization of mem_region_list and target_mem_region_list a bit confusing. Sometimes mem_region_list points to the same vector as target_mem_region_list (and therefore does not own it), and sometimes (when the user manually edits the mem regions) points to another vector, and in this case owns it. To avoid this ambiguity, I think it is simpler to have two vectors, one for target-defined regions and one for user-defined regions, and have mem_region_list point to one or the other. There are now no vector objects dynamically allocated, both are static. The make-target-delegates script does not generate valid code when a target method returns a type with a parameter list. For this reason, I created a typedef (mem_region_vector) that's only used in the target_ops structure. If you speak perl, you are welcome to improve the script! Regtested on the buildbot. gdb/ChangeLog: * memattr.h: Don't include vec.h. (struct mem_attrib): Initialize fields. <unknown>: New static method. (struct mem_region): Add constructors, operator<, initialize fields. * memattr.c: Include algorithm. (default_mem_attrib, unknown_mem_attrib): Remove. (user_mem_region_list): New global. (target_mem_region_list, mem_region_list): Change type to std::vector<mem_region>. (mem_use_target): Now a function. (target_mem_regions_valid): Change type to bool. (mem_region_lessthan, mem_region_cmp, mem_region_init): Remove. (require_user_regions): Adjust. (require_target_regions): Adjust. (create_mem_region): Adjust. (lookup_mem_region): Adjust. (invalidate_target_mem_regions): Adjust. (mem_clear): Rename to... (user_mem_clear): ... this, and adjust. (mem_command): Adjust. (info_mem_command): Adjust. (mem_enable, enable_mem_command, mem_disable, disable_mem_command): Adjust. (mem_delete): Adjust. (delete_mem_command): Adjust. * memory-map.h (parse_memory_map): Return an std::vector. * memory-map.c (parse_memory_map): Likewise. (struct memory_map_parsing_data): Add constructor. <memory_map>: Point to std::vector. (memory_map_start_memory): Adjust. (memory_map_end_memory): Adjust. (memory_map_end_property): Adjust. (clear_result): Remove. * remote.c (remote_memory_map): Return an std::vector. * target-debug.h (target_debug_print_VEC_mem_region_s__p): Remove. (target_debug_print_mem_region_vector): New. * target-delegates.c: Regenerate. * target.h (mem_region_vector): New typedef. (to_memory_map): Return mem_region_vector. (target_memory_map): Return an std::vector. * target.c (target_memory_map): Return an std::vector. (flash_erase_command): Adjust.
2017-10-21Use std::string in memory_map_parsing_dataSimon Marchi2-8/+16
Replace the fixed-size array with a string. gdb/ChangeLog: * memory-map.c (struct memory_map_parsing_data) <property_name>: Change type to std::string. (memory_map_start_property): Adjust. (memory_map_end_property): Adjust.
2017-10-21Create a displaced_step_closure class hierarchySimon Marchi13-157/+340
displaced_step_closure is a type defined in multiple -tdep.c files. Trying to xfree it from the common code (infrun.c) is a problem when we try to poison xfree for non-POD types. Because there can be multiple of these types in the same build, this patch makes a hierarchy of classes with a virtual destructor. When the common code deletes the object through a displaced_step_closure pointer, it will invoke the right destructor. The amd64 used a last-member array with a variable size. That doesn't work with new, so I changed it for an std::vector. Other architectures which used a simple byte buffer as a closure now use a shared buf_displaced_step_closure, a closure type that only contains a gdb::byte_vector. Reg-tested on the buildbot. gdb/ChangeLog: * infrun.h: Include common/byte-vector.h. (struct displaced_step_closure): New struct. (struct buf_displaced_step_closure): New struct. * infrun.c (displaced_step_closure::~displaced_step_closure): Provide default implementation. (displaced_step_clear): Deallocate step closure with delete. * aarch64-tdep.c (displaced_step_closure): Rename to ... (aarch64_displaced_step_closure): ... this, extend displaced_step_closure. (aarch64_displaced_step_data) <dsc>: Change type to aarch64_displaced_step_closure. (aarch64_displaced_step_copy_insn): Adjust to type change, use unique_ptr. (aarch64_displaced_step_fixup): Add cast for displaced step closure. * amd64-tdep.c (displaced_step_closure): Rename to ... (amd64_displaced_step_closure): ... this, extend displaced_step_closure. <insn_buf>: Change type to std::vector<gdb_byte>. <max_len>: Remove. (fixup_riprel): Change type of DSC parameter, adjust to type change of insn_buf. (fixup_displaced_copy): Change type of DSC parameter. (amd64_displaced_step_copy_insn): Instantiate amd64_displaced_step_closure. (amd64_displaced_step_fixup): Add cast for closure type, adjust to type change of insn_buf. * arm-linux-tdep.c (arm_linux_cleanup_svc): Change type of parameter DSC. (arm_linux_copy_svc): Likewise. (cleanup_kernel_helper_return): Likewise. (arm_catch_kernel_helper_return): Likewise. (arm_linux_displaced_step_copy_insn): Instantiate arm_displaced_step_closure. * arm-tdep.c (arm_pc_is_thumb): Add cast for closure. (displaced_read_reg): Change type of parameter DSC. (branch_write_pc): Likewise. (load_write_pc): Likewise. (alu_write_pc): Likewise. (displaced_write_reg): Likewise. (arm_copy_unmodified): Likewise. (thumb_copy_unmodified_32bit): Likewise. (thumb_copy_unmodified_16bit): Likewise. (cleanup_preload): Likewise. (install_preload): Likewise. (arm_copy_preload): Likewise. (thumb2_copy_preload): Likewise. (install_preload_reg): Likewise. (arm_copy_preload_reg): Likewise. (cleanup_copro_load_store): Likewise. (install_copro_load_store): Likewise. (arm_copy_copro_load_store) Likewise. (thumb2_copy_copro_load_store): Likewise. (cleanup_branch): Likewise. (install_b_bl_blx): Likewise. (arm_copy_b_bl_blx): Likewise. (thumb2_copy_b_bl_blx): Likewise. (thumb_copy_b): Likewise. (install_bx_blx_reg): Likewise. (arm_copy_bx_blx_reg): Likewise. (thumb_copy_bx_blx_reg): Likewise. (cleanup_alu_imm): Likewise. (arm_copy_alu_imm): Likewise. (thumb2_copy_alu_imm): Likewise. (cleanup_alu_reg): Likewise. (install_alu_reg): Likewise. (arm_copy_alu_reg): Likewise. (thumb_copy_alu_reg): Likewise. (cleanup_alu_shifted_reg): Likewise. (install_alu_shifted_reg): Likewise. (arm_copy_alu_shifted_reg): Likewise. (cleanup_load): Likewise. (cleanup_store): Likewise. (arm_copy_extra_ld_st): Likewise. (install_load_store): Likewise. (thumb2_copy_load_literal): Likewise. (thumb2_copy_load_reg_imm): Likewise. (arm_copy_ldr_str_ldrb_strb): Likewise. (cleanup_block_load_all): Likewise. (cleanup_block_store_pc): Likewise. (cleanup_block_load_pc): Likewise. (arm_copy_block_xfer): Likewise. (thumb2_copy_block_xfer): Likewise. (cleanup_svc): Likewise. (install_svc): Likewise. (arm_copy_svc): Likewise. (thumb_copy_svc): Likewise. (arm_copy_undef): Likewise. (thumb_32bit_copy_undef): Likewise. (arm_copy_unpred): Likewise. (arm_decode_misc_memhint_neon): Likewise. (arm_decode_unconditional): Likewise. (arm_decode_miscellaneous): Likewise. (arm_decode_dp_misc): Likewise. (arm_decode_ld_st_word_ubyte): Likewise. (arm_decode_media): Likewise. (arm_decode_b_bl_ldmstm): Likewise. (arm_decode_ext_reg_ld_st): Likewise. (thumb2_decode_dp_shift_reg): Likewise. (thumb2_decode_ext_reg_ld_st): Likewise. (arm_decode_svc_copro): Likewise. (thumb2_decode_svc_copro): Likewise. (install_pc_relative): Likewise. (thumb_copy_pc_relative_16bit): Likewise. (thumb_decode_pc_relative_16bit): Likewise. (thumb_copy_pc_relative_32bit): Likewise. (thumb_copy_16bit_ldr_literal): Likewise. (thumb_copy_cbnz_cbz): Likewise. (thumb2_copy_table_branch): Likewise. (cleanup_pop_pc_16bit_all): Likewise. (thumb_copy_pop_pc_16bit): Likewise. (thumb_process_displaced_16bit_insn): Likewise. (decode_thumb_32bit_ld_mem_hints): Likewise. (thumb_process_displaced_32bit_insn): Likewise. (thumb_process_displaced_insn): Likewise. (arm_process_displaced_insn): Likewise. (arm_displaced_init_closure): Likewise. (arm_displaced_step_fixup): Add cast for closure. * arm-tdep.h: Include infrun.h. (displaced_step_closure): Rename to ... (arm_displaced_step_closure): ... this, extend displaced_step_closure. <u::svc::copy_svc_os>: Change type of parameter DSC. <cleanup>: Likewise. (arm_process_displaced_insn): Likewise. (arm_displaced_init_closure): Likewise. (displaced_read_reg): Likewise. (displaced_write_reg): Likewise. * i386-linux-tdep.c (i386_linux_displaced_step_copy_insn): Adjust. * i386-tdep.h: Include infrun.h. (i386_displaced_step_closure): New typedef. * i386-tdep.c (i386_displaced_step_copy_insn): Use i386_displaced_step_closure. (i386_displaced_step_fixup): Adjust. * rs6000-tdep.c (ppc_displaced_step_closure): New typedef. (ppc_displaced_step_copy_insn): Use ppc_displaced_step_closure and unique_ptr. (ppc_displaced_step_fixup): Adjust. * s390-linux-tdep.c (s390_displaced_step_closure): New typedef. (s390_displaced_step_copy_insn): Use s390_displaced_step_closure and unique_ptr. (s390_displaced_step_fixup): Adjust.
2017-10-21Remove leftover declarations in interps.hSimon Marchi2-3/+5
The corresponding definitions have already been removed. gdb/ChangeLog: * interps.h (interp_resume, interp_suspend, interp_set_temp): Remove declarations.
2017-10-20Use std::vector in gdb_bfd_dataTom Tromey2-14/+9
This changes gdb_bfd_data to use std::vector rather than VEC. ChangeLog 2017-10-20 Tom Tromey <tom@tromey.com> * gdb_bfd.c (struct gdb_bfd_data) <included_bfds>: Now a std::vector. (gdb_bfd_record_inclusion): Update. (bfdp): Remove typedef.
2017-10-20Use "new" to allocate gdb_bfd_dataTom Tromey2-32/+49
This changes gdb_bfd_data to be allocated with new and destroyed with delete. ChangeLog 2017-10-20 Tom Tromey <tom@tromey.com> * gdb_bfd.c (gdb_bfd_ref): Use new. (struct gdb_bfd_data): Add constructor, destructor, and member initializers. (gdb_bfd_unref): Use delete.
2017-10-20Introduce new_bfd_refTom Tromey5-28/+28
This introduces a helper function, new_bfd_ref, that calls gdb_bfd_ref and returns a gdb_bfd_ref_ptr. Then it updates several places to use this. ChangeLog 2017-10-20 Tom Tromey <tom@tromey.com> * exec.c (exec_file_attach): Use new_bfd_ref. * symfile-mem.c (symbol_file_add_from_memory): Use new_bfd_ref. * gdb_bfd.c (gdb_bfd_open, gdb_bfd_fopen, gdb_bfd_openr) (gdb_bfd_openw, gdb_bfd_openr_iovec, gdb_bfd_fdopenr): Use new_bfd_ref. * gdb_bfd.h (new_bfd_ref): New function.
2017-10-20Fix 'gdb.base/quit.exp hangs forever' if the test failsPedro Alves2-9/+16
The [wait -i $gdb_spawn_id] in the test is dangerous in the sense that it won't be subject to timeout logic. So if GDB fails quiting, this testcase hangs forever, hanging the test run with it. See: https://sourceware.org/ml/gdb-patches/2016-10/msg00728.html Instead of 'wait'ing directly, use gdb_test_multiple and expect 'eof'. Tested that the testcase no longer hangs by hacking the test to send "info threads" instead of "quit". Tested with --target_board={unix, native-gdbserver,native-extended-gdbserver} and tested with --host_board=local-remote-host as well. gdb/testsuite/ChangeLog: 2017-10-20 Pedro Alves <palves@redhat.com> * gdb.base/quit.exp: Use gdb_test_multiple and expect 'eof' before 'wait -i'. Use gdb_assert and remote_close.
2017-10-20Fix gdb.gdb/ selftest tests when testing optimized GDB buildsPedro Alves2-0/+9
After commit bf4692711232 ("Eliminate catch_errors"), GCC started inlining captured_command_loop in captured_main. And setting a breakpoint on captured_command_loop makes the inferior GDB stop in captured_main, _after_ captured_command_loop's call to interp_pre_command_loop, which prints the inferior GDB's prompt, has already executed, confusing the gdb.gdb/ selftest tests: (gdb) FAIL: gdb.gdb/complaints.exp: run until breakpoint at captured_command_loop WARNING: Couldn't test self Debugging GDB with GDB manually, we see: (top-gdb) b captured_command_loop Breakpoint 1 at 0x71ee60: file src/gdb/main.c, line 324. (top-gdb) r [....] (gdb) <<<<<< PROMPT HERE Thread 1 "gdb" hit Breakpoint 1, captured_main (data=<optimized out>) at src/gdb/main.c:1147 1147 captured_command_loop (); (top-gdb) Note the stop at 'captured_main', and the "PROMPT HERE" line. That prompt does not show up when debugging a non-optimized build of GDB. Fix this by preventing inlining of captured_command_loop. Ref: https://sourceware.org/ml/gdb-patches/2017-10/msg00522.html gdb/ChangeLog: 2017-10-20 Pedro Alves <palves@redhat.com> * main.c (captured_command_loop): Add attribute noinline.
2017-10-19Get rid of VEC(interp_factory_p)Simon Marchi2-38/+30
Replace it with an std::vector. gdb/ChangeLog: * interps.c (struct interp_factory): Add constructor. (interp_factory_p): Remove typedef. (DEF_VEC_P(interp_factory_p)): Remove. (interpreter_factories): Change type to std::vector. (interp_factory_register): Adjust. (interp_lookup): Adjust. (interpreter_completer): Adjust.
2017-10-19Remove cleanups from break-catch-syscall.cTom Tromey2-17/+23
This removes the remaining cleanups from break-catch-syscall.c by storing temporary strings in a vector. ChangeLog 2017-10-19 Tom Tromey <tom@tromey.com> * break-catch-syscall.c (catch_syscall_completer): Use std::string, gdb::unique_xmalloc_ptr.
2017-10-19Remove cleanup from call_function_by_hand_dummyTom Tromey2-8/+10
This changes call_function_by_hand_dummy to use std::string, removing a cleanup. ChangeLog 2017-10-19 Tom Tromey <tom@tromey.com> * infcall.c (call_function_by_hand_dummy): Use std::string.
2017-10-19Remove cleanups from prepare_execute_commandTom Tromey5-18/+21
This changes prepare_execute_command to return a scoped_value_mark rather than a cleanup. ChangeLog 2017-10-19 Tom Tromey <tom@tromey.com> * mi/mi-main.c (mi_cmd_execute): Update. * top.h (prepare_execute_command): Return scoped_value_mark. * value.h (class scoped_value_mark): Use DISABLE_COPY_AND_ASSIGN. Add move constructor. * top.c (prepare_execute_command): Return scoped_value_mark. (execute_command): Update.
2017-10-19gdb: Remove hard-coded line number from testAndrew Burgess2-2/+7
Removes the use of a hard-coded line number from a test. gdb/testsuite/ChangeLog: * gdb.linespec/ls-errs.exp (do_test): Update comment, use line number from variable rather than hard-coded.
2017-10-19Fix build breakage in gdb/xml-support.cPedro Alves2-2/+7
The buildbots are showing that the previous change to xml_fetch_content_from_file causes __wur warnings/errors: ../../binutils-gdb/gdb/xml-support.c: In function gdb::unique_xmalloc_ptr<char> xml_fetch_content_from_file(const char*, void*): ../../binutils-gdb/gdb/xml-support.c:1028:43: error: ignoring return value of size_t fread(void*, size_t, size_t, FILE*), declared with attribute warn_unused_result [-Werror=unused-result] fread (text.get (), 1, len, file.get ()); ^ This commit fixes it. gdb/ChangeLog: 2017-10-19 Pedro Alves <palves@redhat.com> * xml-support.c (xml_fetch_content_from_file): Check fread's return.
2017-10-19Fix inferior deadlock with "target remote | CMD"Pedro Alves5-0/+145
Comparing test results between --target_board=native-gdbserver --target_board=native-stdio-gdbserver I noticed that gdb.base/bigcore.exp is failing with native-stdio-gdbserver: Running src/gdb/testsuite/gdb.base/bigcore.exp ... FAIL: gdb.base/bigcore.exp: continue (timeout) ... The problem is that: 1. When debugging with "target remote | CMD", the inferior's stdout/stderr streams are connected to a pipe. 2. The bigcore.c program prints a lot to the screen before it reaches the breakpoint location that the "continue" shown above wants to reach. 3. GDB is not flushing the inferior's output pipe while the inferior is running. 4. The pipe becomes full. 5. The inferior thus deadlocks. The bug is #3 above, which is what this commit fixes. A new test is added, that specifically exercises this scenario. The test fails before the fix, and passes after, and gdb.base/bigcore.exp also starts passing. gdb/ChangeLog: 2017-10-19 Pedro Alves <palves@redhat.com> * ser-base.c (ser_base_read_error_fd): Delete the file handler if async. (handle_error_fd): New function. (ser_base_async): Add/delete an event loop file handler for error_fd. gdb/testsuite/ChangeLog: 2017-10-19 Pedro Alves <palves@redhat.com> * gdb.base/long-inferior-output.c: New file. * gdb.base/long-inferior-output.exp: New file.
2017-10-19xml_fetch_content_from_file: Read in whole file in one goPedro Alves2-23/+19
There doesn't seem to be a good reason we're reading the file one chunk at a time. gdb/ChangeLog: 2017-10-19 Pedro Alves <palves@redhat.com> * xml-support.c (xml_fetch_content_from_file): Don't read in chunks. Instead use fseek to determine the file's size, and read it in one go.
2017-10-18Canonicalize conversion operatorsKeith Seitz5-2/+40
Consider a conversion operator such as: operator foo const* const* (); There are two small parser problems, highlighted by this test: (gdb) p operator foo const* const* There is no field named operatorfoo const* const * GDB is looking up the symbol "operatorfoo const* const*" -- it is missing a space between the keyword "operator" and the type name "foo const* const*". Additionally, this input of the user-defined type needs to be canonicalized so that different "spellings" of the type are recognized: (gdb) p operator const foo* const * There is no field named operator const foo* const * gdb/ChangeLog: * c-exp.y (oper): Canonicalize conversion operators of user-defined types. Add whitespace to front of type name. gdb/testsuite/ChangeLog: * gdb.cp/cpexprs.cc (base) <operator fluff const* const*>: New method. (main): Call it. * gdb.cp/cpexprs.exp: Add new conversion operator to test matrix. Add additional user-defined conversion operator tests.
2017-10-18Issue complaint instead of assert for invalid/unhandled DW_AT_accessibilityKeith Seitz2-1/+7
A previous patch called gdb_assert_not_reached whenever reading the accessibility of a nested typedef definition. Wisely, Pedro has asked me not do this. This patch changes the previous one so that it issues a complaint instead. gdb/ChangeLog: * dwarf2read.c (dwarf2_add_typedef): Issue a complaint on unhandled DW_AT_accessibility.
2017-10-18Remove features/tic6x-c62x-linux.cYao Qi2-56/+4
c40c7bf (Remove features/tic6x-*.c files) doesn't remove features/tic6x-c62x-linux.c. This patch removes it. gdb: 2017-10-18 Yao Qi <yao.qi@linaro.org> * features/tic6x-c62x-linux.c: Remove.
2017-10-17Really make the native-stdio-gdbserver board non-remotePedro Alves2-0/+5
I've noticed now that due to a last-minute change, commit 739b3f1d8ff7 ("Make native gdbserver boards no longer be "remote" (in DejaGnu terms)") managed to miss loading "local-board" in the native-stdio-gdbserver board... gdb/testsuite/ChangeLog: 2017-10-17 Pedro Alves <palves@redhat.com> * boards/native-stdio-gdbserver.exp: Load "local-board".
2017-10-17Add several "quit with live inferior" testsPedro Alves3-0/+210
In my multi-target branch, I had managed to break GDB exiting successfuly in response to "quit" or SIGHUP/SIGTERM when: - you're debugging with "target extended-remote", - have more than one inferior loaded in gdb, some running, and at least one not running, and, - quit gdb with the inferior that is not running yet selected. The testsuite still passed cleanly anyway. I only noticed because I was left with a bunch of core dumps in the gdb/testsuite/ directory -- the testsuite infrastructure closes GDB's pty after running each testcase, which results in GDB getting a SIGHUP and should make GDB exit gracefully. If GDB crashes at that point though, there's no indication about it in gdb.sum/gdb.log. This commit adds a multitude of tests exercising quitting GDB with live inferiors, some of which would have caught the problem. gdb/testsuite/ChangeLog: 2017-10-17 Pedro Alves <palves@redhat.com> * gdb.base/quit-live.c: New file. * gdb.base/quit-live.exp: New file.
2017-10-17Remove cleanups from disasm.cTom Tromey2-53/+35
This changes the remaining spots in disasm.c to use the RAII ui-out emitters, removing a few cleanups. This also fixes a regression that Simon pointed out. 2017-10-17 Tom Tromey <tom@tromey.com> * disasm.c (do_mixed_source_and_assembly_deprecated): Use gdb::optional, ui_out_emit_list, ui_out_emit_tuple. (do_mixed_source_and_assembly): Likewise.
2017-10-17Remove obsolete assertion from regcache.cTom Tromey2-1/+4
When building I got: ../../binutils-gdb/gdb/regcache.c:935:24: error: the address of ‘ssize_t read(int, void*, size_t)’ will never be NULL [-Werror=address] This happens because "read" used to be a parameter to this function, which was then removed; but the assertion wasn't updated. I don't think the assertion is relevant any more, to this removes it. I'm checking it in as obvious. 2017-10-17 Tom Tromey <tom@tromey.com> * regcache.c (regcache::xfer_part): Remove assertion.
2017-10-17Fix double-free corruptionPedro Alves2-1/+7
Fixes a double-free regression introduced by commit b7b030adc405 ("Return unique_xmalloc_ptr from target_read_stralloc"): gdb.sum: Running src/gdb/testsuite/gdb.base/catch-syscall.exp ... ERROR: Process no longer exists Valgrind shows: (gdb) catch syscall ==3687== Thread 1: ==3687== Invalid free() / delete / delete[] / realloc() ==3687== at 0x4C29CF0: free (vg_replace_malloc.c:530) ==3687== by 0x610862: xfree(void*) (common-utils.c:101) ==3687== by 0x440D5D: gdb::xfree_deleter<char>::operator()(char*) const (gdb_unique_ptr.h:34) ==3687== by 0x446CC6: std::unique_ptr<char, gdb::xfree_deleter<char> >::reset(char*) (unique_ptr.h:344) ==3687== by 0x81BE50: xml_fetch_content_from_file(char const*, void*) (xml-support.c:1042) ==3687== by 0x81DA86: xml_init_syscalls_info(char const*) (xml-syscall.c:366) ==3687== by 0x81DBDD: init_syscalls_info(gdbarch*) (xml-syscall.c:398) ==3687== by 0x81E131: get_syscall_by_number(gdbarch*, int, syscall*) (xml-syscall.c:599) ==3687== by 0x5BE86F: catch_syscall_command_1(char*, int, cmd_list_element*) (break-catch-syscall.c:481) ==3687== by 0x4B46B1: do_sfunc(cmd_list_element*, char*, int) (cli-decode.c:138) ==3687== by 0x4B76B8: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1952) ==3687== by 0x7E91C7: execute_command(char*, int) (top.c:615) ==3687== Address 0x14332ae0 is 0 bytes inside a block of size 4,096 free'd ==3687== at 0x4C2AB8B: realloc (vg_replace_malloc.c:785) ==3687== by 0x610792: xrealloc (common-utils.c:62) ==3687== by 0x81BE3E: xml_fetch_content_from_file(char const*, void*) (xml-support.c:1042) ==3687== by 0x81DA86: xml_init_syscalls_info(char const*) (xml-syscall.c:366) ==3687== by 0x81DBDD: init_syscalls_info(gdbarch*) (xml-syscall.c:398) ==3687== by 0x81E131: get_syscall_by_number(gdbarch*, int, syscall*) (xml-syscall.c:599) ==3687== by 0x5BE86F: catch_syscall_command_1(char*, int, cmd_list_element*) (break-catch-syscall.c:481) ==3687== by 0x4B46B1: do_sfunc(cmd_list_element*, char*, int) (cli-decode.c:138) ==3687== by 0x4B76B8: cmd_func(cmd_list_element*, char*, int) (cli-decode.c:1952) ==3687== by 0x7E91C7: execute_command(char*, int) (top.c:615) ==3687== by 0x6A422D: command_handler(char*) (event-top.c:583) ==3687== by 0x6A45F2: command_line_handler(char*) (event-top.c:773) [...] The problem is that if xrealloc decides it needs a new memory block, it frees the previous block/pointer, and then text.reset() frees it again. gdb/ChangeLog: 2017-10-17 Pedro Alves <palves@redhat.com> * xml-support.c (xml_fetch_content_from_file): Call unique_ptr::release() instead unique_ptr::get() when passing through xrealloc.
2017-10-17Simplify regcache::xfer_partYao Qi3-20/+19
Since xfer_part is already a class method, and only {raw,cooked}_{read,write} are passed to it. We can remove these two arguments, but add a bool argument is_raw, indicating raw registers or cooked registers are accessed. gdb: 2017-10-17 Yao Qi <yao.qi@linaro.org> * regcache.c (regcache::xfer_part): Remove parameters read and write, add parameter is_raw. All callers are updated.
2017-10-17[GDBserver] Move aarch64-insn.o to arch/ and remove one Makefile ruleYao Qi3-5/+6
gdb/gdbserver: 2017-10-17 Yao Qi <yao.qi@linaro.org> * Makefile.in: Remove one rule. * configure.srv: Rename aarch64-insn.o with arch/aarch64-insn.o.
2017-10-17[GDBserver] Move arm-linux.o and arm-get-next-pcs.o to arch/Yao Qi2-2/+7
gdb/gdbserver: 2017-10-17 Yao Qi <yao.qi@linaro.org> * configure.srv: Rename arm-linux.o with arch/arm-linux.o. Rename arm-get-next-pcs.o with arch/arm-get-next-pcs.o.
2017-10-17[GDBserver] Move arm.o to arch/arm.oYao Qi2-2/+6
gdb/gdbserver: 2017-10-17 Yao Qi <yao.qi@linaro.org> * configure.srv: Rename arm.o with arch/arm.o.
2017-10-17[GDBserver] Replicate src dir in build dirYao Qi5-18/+64
Similar to f38307f5 (Replicate src dir in build dir), this patch change configure and Makefile to generate object files in arch/ directory. gdb/gdbserver: 2017-10-17 Yao Qi <yao.qi@linaro.org> * Makefile.in (CONFIG_SRC_SUBDIR): New variable. (clean): Remove .o files in CONFIG_SRC_SUBDIR. (distclean): Remove DEPDIR in CONFIG_SRC_SUBDIR. (arch-i386.o, arch-amd64.o): Remove rules. (arch/%.o): New rule. Update POSTCOMPILE and COMPILE.pre. * configure.ac: Invoke AC_CONFIG_COMMANDS. * configure: Re-generated. * configure.srv: Replace arch-i386.o with arch/i386.o. Replace arch-amd64.o with arch/amd64.o.
2017-10-16Add missing ChangeLog entries.Keith Seitz2-0/+24
2017-10-16Record and output access specifiers for nested typedefsKeith Seitz5-59/+264
We currently do not record access information for typedefs defined inside classes. Consider: struct foo { typedef int PUBLIC; private: typedef int PRIVATE; PRIVATE b; }; (gdb) ptype foo type = struct foo { private: PRIVATE b; typedef int PRIVATE; typedef int PUBLIC; } This patch fixes this: (gdb) ptype foo type = struct foo { private: PRIVATE b; typedef int PRIVATE; public: typedef int PUBLIC; } gdb/ChangeLog: * c-typeprint.c (enum access_specifier): Moved here from c_type_print_base. (output_access_specifier): New function. (c_type_print_base): Consider typedefs when assessing whether access labels are needed. Use output_access_specifier as needed. Output access specifier for typedefs, if needed. * dwarf2read.c (dwarf2_add_typedef): Record DW_AT_accessibility. * gdbtypes.h (struct typedef_field) <is_protected, is_private>: New fields. (TYPE_TYPEDEF_FIELD_PROTECTED, TYPE_TYPEDEF_FIELD_PRIVATE): New accessor macros. gdb/testsuite/ChangeLog: * gdb.cp/classes.cc (class_with_typedefs, class_with_public_typedef) (class_with_protected_typedef, class_with_private_typedef) (struct_with_public_typedef, struct_with_protected_typedef) (struct_with_private_typedef): New classes/structs. * gdb.cp/classes.exp (test_ptype_class_objects): Add tests for typedefs and access specifiers.
2017-10-16Return unique_xmalloc_ptr from target_fileio_read_strallocTom Tromey5-86/+64
Change target_fileio_read_stralloc to return unique_xmalloc_ptr and fix up the callers. This removes a number of cleanups. ChangeLog 2017-10-16 Tom Tromey <tom@tromey.com> * linux-tdep.c (linux_info_proc, linux_find_memory_regions_full) (linux_fill_prpsinfo, linux_vsyscall_range_raw): Update. * target.c (target_fileio_read_stralloc): Update. * sparc64-tdep.c (adi_is_addr_mapped): Update. * target.h (target_fileio_read_stralloc): Return unique_xmalloc_ptr.
2017-10-16Return unique_xmalloc_ptr from target_read_strallocTom Tromey12-168/+102
This changes target_read_stralloc to return a unique_xmalloc_ptr, and then fixes all the callers. unique_xmalloc_ptr is used, rather than std::string, because target_read_stralloc gives a special meaning to a NULL return. ChangeLog 2017-10-16 Tom Tromey <tom@tromey.com> * xml-syscall.c (xml_init_syscalls_info): Update. * xml-support.c (xinclude_start_include): Update. (xml_fetch_content_from_file): Return unique_xmalloc_ptr. * xml-support.h (xml_fetch_another): Return unique_xmalloc_ptr. (xml_fetch_content_from_file): Likewise. * osdata.c (get_osdata): Update. * target.h (target_read_stralloc, target_get_osdata): Return unique_xmalloc_ptr. * solib-aix.c (solib_aix_get_library_list): Update. * solib-target.c (solib_target_current_sos): Update. * solib-svr4.c (svr4_current_sos_via_xfer_libraries): Update. * xml-tdesc.c (fetch_available_features_from_target): Update. (target_fetch_description_xml): Update. (file_read_description_xml): Update. * remote.c (remote_get_threads_with_qxfer, remote_memory_map) (remote_traceframe_info, btrace_read_config, remote_read_btrace) (remote_pid_to_exec_file): Update. * target.c (target_read_stralloc): Return unique_xmalloc_ptr. (target_get_osdata): Likewise.
2017-10-16Simple cleanup removals in remote.cTom Tromey2-43/+35
This removes a few cleanups in remote.c using the usual techniques: std::vector, unique_xmalloc_ptr, and gdb::def_vector. ChangeLog 2017-10-16 Tom Tromey <tom@tromey.com> * remote.c (remote_register_number_and_offset): Use std::vector. (remote_set_syscall_catchpoint): Use gdb::unique_xmalloc_ptr. (putpkt_binary): Use gdb::def_vector. (compare_sections_command): Use gdb::byte_vector.
2017-10-16Remove cleanup from ppc-linux-nat.cTom Tromey2-8/+8
This removes a cleanup from ppc-linux-nat.c, by using unique_xmalloc_ptr. It also slightly simplifies the code by using XDUP rather than XNEW and memcpy. ChangeLog 2017-10-16 Tom Tromey <tom@tromey.com> * ppc-linux-nat.c (hwdebug_insert_point): Use gdb::unique_xmalloc_ptr, XDUP.
2017-10-16Remove some cleanups from probe.cTom Tromey2-20/+10
This removes some cleanups from parse_probes by using std::string; and removes some unnecessary cleanups from elsewhere in probe.c. ChangeLog 2017-10-16 Tom Tromey <tom@tromey.com> * probe.c (parse_probes): Use std::string. (info_probes_for_ops, enable_probes_command) (disable_probes_command): Remove cleanups.
2017-10-16Use std::vector in end_symtab_get_static_blockTom Tromey2-28/+16
Change end_symtab_get_static_block to use std::vector. This removes a cleanup. ChangeLog 2017-10-16 Tom Tromey <tom@tromey.com> * buildsym.c (block_compar): Remove. (end_symtab_get_static_block): Use std::vector.
2017-10-16Make native gdbserver boards no longer be "remote" (in DejaGnu terms)Pedro Alves8-124/+157
This commit finally clears the "isremote" flag in the native-gdbserver and native-stdio-gdbserver boards. The goal is to make all "native" boards be considered not remote in DejaGnu terms, like the native-extended-gdbserver board is too. DejaGnu automatically considers boards remote if their names don't match the local hostname. That means that native-gdbserver and native-extended-gdbserver are considered remote by default by DejaGnu, even though they run locally. native-extended-gdbserver, however, overrides its isremote flag to force it to be not remote. So we are in that weird state where native-gdbserver is considered remote, and native-extended-gdbserver is considered not remote. A recent set of commits fixed all the problems (and some more) exposed by testing with --target_board=native-gdbserver and --target_board=native-stdio-gdbserver with isremote forced off on x86-64 GNU/Linux. I believe we're good to go now. The native-stdio-gdbserver.exp/remote-stdio-gdbserver.exp boards required deep non-obvious modifications unfortunately... The problem is that if a board is not remote, then DejaGnu doesn't call ${board}_spawn / ${board}_exec at all, and the native-stdio-gdbserver.exp board relies on those procedures being called. To fix that, this commit redesigns how the stdio boards hook into the testing framework to spawn gdbserver. IMO, this is a good change anyway, because the way its done currently is a bit of a hack, and the result turns out to be simpler, even. With this commit, they now no longer load the "gdbserver" generic config, and hook at the mi_gdb_target_load/gdb_reload level instead, making them more like traditional board files. To share code between native-stdio-gdbserver.exp and remote-stdio-gdbserver.exp, a new shared stdio-gdbserver-base.exp file is created. Instead of having each native board clear isremote manually, boards source the new "local-board.exp" file. This also adds a new section to testsuite/README file discussing local/remote/native, so that we can easily refer to it. gdb/testsuite/ChangeLog: 2017-10-16 Pedro Alves <palves@redhat.com> Simon Marchi <simon.marchi@polymtl.ca> * README (Local vs Remote vs Native): New section. * boards/local-board.exp: New file, with bits factored out from ... * boards/native-extended-gdbserver.exp: ... here. Load "local-board". * boards/native-gdbserver.exp: Load "local-board". (${board}_spawn, ${board}_exec): Delete. * boards/native-stdio-gdbserver.exp: Most contents factored out to ... * boards/stdio-gdbserver-base.exp: ... this new file. * boards/native-stdio-gdbserver.exp: Reimplement, by loading "stdio-gdbserver-base" and defining a get_target_remote_pipe_cmd procedure. * boards/remote-stdio-gdbserver.exp: Load stdio-gdbserver-base instead of native-stdio-gdbserver. Don't set gdb_server_prog nor stdio_gdbserver_command. (${board}_get_remote_address, ${board}_get_comm_port) (${board}_download, ${board}_upload): Delete. (get_target_remote_pipe_cmd): New.
2017-10-16Use proc_with_prefix in py-breakpoint.expSimon Marchi2-394/+387
Use proc_with_prefix to avoid having to call with_test_prefix with a duplicate of the proc name. The diff is mostly lines being re-indented. gdb/testsuite/ChangeLog: * gdb.python/py-breakpoint.exp (test_bkpt_basic, test_bkpt_deletion, test_bkpt_cond_and_cmds, test_bkpt_invisible, test_watchpoints, test_bkpt_internal, test_bkpt_eval_funcs, test_bkpt_temporary, test_bkpt_address, test_bkpt_pending, test_bkpt_events): Use proc_with_prefix, remove with_test_prefix.
2017-10-16Get rid of VEC(mem_range_s)Simon Marchi10-110/+205
This patch replaces the last usages of VEC(mem_range_s) with std::vector<mem_range>. This allows getting rid of a few cleanups and of the DEF_VEC_O(mem_range_s). I added a test for normalize_mem_ranges to make sure I didn't break anything there. Regtested on the buildbot. gdb/ChangeLog: * memrange.h (struct mem_range): Define operator< and operator==. (mem_range_s): Remove. (DEF_VEC_O (mem_range_s)): Remove. (normalize_mem_ranges): Change parameter type to std::vector. * memrange.c (compare_mem_ranges): Remove. (normalize_mem_ranges): Change parameter type to std::vector, adjust to vector change. * exec.c (section_table_available_memory): Return vector, remove parameter. (section_table_read_available_memory): Adjust to std::vector change. * remote.c (remote_read_bytes): Adjust to std::vector change. * tracepoint.h (traceframe_available_memory): Change parameter type to std::vector. * tracepoint.c (traceframe_available_memory): Change parameter type to std::vector, adjust. * gdb/mi/mi-main.c (mi_cmd_trace_frame_collected): Adjust to std::vector change. * gdb/Makefile.in (SUBDIR_UNITTESTS_SRCS): Add unittests/memrange-selftests.c. (SUBDIR_UNITTESTS_OBS): Add memrange-selftests.o. * gdb/unittests/memrange-selftests.c: New file.
2017-10-16Work around GCC 6.3.1 bugPedro Alves3-20/+26
This commit works around a GCC 6.3.1 bug several people are hitting: https://sourceware.org/ml/gdb-patches/2017-09/msg00270.html https://sourceware.org/ml/gdb-patches/2017-10/msg00418.html It manifests like this: ../../../binutils-gdb/gdb/probe.c:68:12: error: types may not be defined in a for-range-declaration [-Werror] for (struct probe *probe : probes) ^~~~~~ Fix it by renaming the range-for named variables to something different from their type's name. gdb/ChangeLog: 2017-10-16 Pedro Alves <palves@redhat.com> * elfread.c (probe_key_free): Rename range-for variable. * probe.c (parse_probes_in_pspace, find_probes_in_objfile) (find_probe_by_pc, collect_probes): Rename range-for variable.
2017-10-16Regenerate gdbserver/configureYao Qi2-3/+14
4fa7574 (Fix gdb 8.1 Solaris compilation) changes warning.m4 and updates configure, but gdbserver/configure is not updated. gdb/gdbserver: 2017-10-16 Yao Qi <yao.qi@linaro.org> * configure: Regenerated.
2017-10-16Remove features/tic6x-*.c filesYao Qi9-443/+14
features/*.c are generated from *.xml files, in order to get pre-defined target descriptions, (for native debugging, for example). However, these pre-generated tdesc_tic6x_* are not used in GDB at all. This patch removes features/tic6x-*.c files. gdb: 2017-10-16 Yao Qi <yao.qi@linaro.org> * features/Makefile (XMLTOC): Remove tic6x-*.xml. * features/tic6x-c62x.c: Remove. * features/tic6x-c64x-linux.c: Remove. * features/tic6x-c64x.c: Remove. * features/tic6x-c64xp-linux.c: Remove. * features/tic6x-c64xp.c: Remove. * tic6x-linux-tdep.c (_initialize_tic6x_linux_tdep): Don't call initialize_tdesc_tic6x_*_linux functions. * tic6x-tdep.c (_initialize_tic6x_tdep): Don't call initialize_tdesc_tic6x_* functions.
2017-10-16Remove regformats/tic6x-{c62x,c64x,c64xp}.datYao Qi5-185/+8
tic6x-uclinux GDBserver uses linux target descriptions, instead of these non-linux target descriptions. So we can remove these *.dat files. gdb: 2017-10-16 Yao Qi <yao.qi@linaro.org> * features/Makefile (WHICH): Remove tic6x-c64xp, tic6x-c64x tic6x-c62x. * regformats/tic6x-c62x.dat: Remove. * regformats/tic6x-c64x.dat: Remove. * regformats/tic6x-c64xp.dat: Remove.
2017-10-15Fix GDB build without expatSimon Marchi2-1/+6
An earlier patch of mine changed parse_traceframe_info to make it return a unique_ptr. I forgot to update the version of the function used in an expat-less build, this patch fixes it. gdb/ChangeLog: * tracepoint.c (parse_traceframe_info): Return a unique_ptr (the !HAVE_LIBEXPAT version).
2017-10-14Fix build failure in linux-osdata.cSimon Marchi2-1/+6
Commit Use std::vector in linux_xfer_osdata_processgroups b129dcac882da87767cb863ad8b2572f90e9e5bc broke the build with older gcc (at least 4.7 and 4.8): In file included from /usr/include/c++/4.7/algorithm:63:0, from /home/emaisin/src/binutils-gdb/gdb/nat/linux-osdata.c:40: /usr/include/c++/4.7/bits/stl_algo.h: In instantiation of ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, const _Tp&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >; _Tp = pid_pgid_entry]’: /usr/include/c++/4.7/bits/stl_algo.h:2315:70: required from ‘_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >]’ /usr/include/c++/4.7/bits/stl_algo.h:2347:54: required from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >; _Size = long int]’ /usr/include/c++/4.7/bits/stl_algo.h:5483:4: required from ‘void std::sort(_RAIter, _RAIter) [with _RAIter = __gnu_cxx::__normal_iterator<pid_pgid_entry*, std::vector<pid_pgid_entry> >]’ /home/emaisin/src/binutils-gdb/gdb/nat/linux-osdata.c:480:57: required from here /usr/include/c++/4.7/bits/stl_algo.h:2277:4: error: passing ‘const pid_pgid_entry’ as ‘this’ argument of ‘bool pid_pgid_entry::operator<(const pid_pgid_entry&)’ discards qualifiers [-fpermissive] Making the operator< method const fixes it. gdb/ChangeLog: * nat/linux-osdata.c (struct pid_pgid_entry) <operator<>: Make const.
2017-10-14gdbserver: use std::list for all_threadsSimon Marchi15-454/+345
Remove the usage of inferior_list for the all_threads list in gdbserver. The entry field in thread_info is removed, and replaced by a simple ptid field. I added some functions to iterate (for_each_thread) and find threads (find_thread). However, changing all the users of find_inferior & co to use these new functions would have made the patch way too big. So I opted instead to make find_inferior & co some shims, so that the existing code only needs to be updated minimally. We can then update the existing code to use the new functions incrementally (I've started to do the work, but I'll post it afterwards, see [1] if you want a peek). This patch has been built-tested on all relevant platforms, except lynx. I also regtested using the native-gdbserver and native-extended-gdbserver boards on x86. [1] https://github.com/simark/binutils-gdb/commits/kill-inferior-list-entry gdb/gdbserver/ChangeLog: * inferiors.h: (struct inferior_list): Remove. (struct inferior_list_entry); Remove. (add_inferior_to_list, clear_inferior_list, one_inferior_p, A_I_NEXT, ALL_INFERIORS_TYPE, ALL_INFERIORS, remove_inferior, get_first_inferior): Remove. (for_each_inferior, for_each_inferior_with_data, find_inferior, find_inferior_id, find_inferior_in_random): Change signature. * inferiors.c (all_threads): Change type to std::list<thread_info *>. (get_thread): Remove macro. (find_inferior, find_inferior_id): Change signature, implement using find_thread. (find_inferior_in_random): Change signature, implement using find_thread_in_random. (for_each_inferior, for_each_inferior_with_data): Change signature, implement using for_each_thread. (add_inferior_to_list, remove_inferior): Remove. (add_thread, get_first_thread, thread_of_pid, find_any_thread_of_pid, free_one_thread, remove_thread): Update. (get_first_inferior, one_inferior_p, clear_inferior_list): Remove. (clear_inferiors, get_thread_process): Update. * gdbthread.h: Include <list>. (struct thread_info) <entry>: Remove field. <id>: New field. (all_threads): Change type to std::list<thread_info *>. (get_first_inferior): Add doc. (find_thread, for_each_thread, find_thread_in_random): New functions. (current_ptid, pid_of, ptid_of, lwpid_of): Update. * linux-arm-low.c (update_registers_callback): Update. * linux-low.c (second_thread_of_pid_p): Update. (kill_one_lwp_callback, linux_detach_lwp_callback, delete_lwp_callback, status_pending_p_callback, same_lwp, find_lwp_pid, num_lwps, iterate_over_lwps_filter, iterate_over_lwps, not_stopped_callback, resume_stopped_resumed_lwps, count_events_callback, select_singlestep_lwp_callback, select_event_lwp_callback, unsuspend_one_lwp, linux_wait_1, send_sigstop_callback, suspend_and_send_sigstop_callback, wait_for_sigstop, stuck_in_jump_pad_callback, move_out_of_jump_pad_callback, lwp_running, linux_set_resume_request, resume_status_pending_p, need_step_over_p, start_step_over, linux_resume_one_thread, proceed_one_lwp, unsuspend_and_proceed_one_lwp, reset_lwp_ptrace_options_callback): Update. * linux-mips-low.c (update_watch_registers_callback): Update. * regcache.c (regcache_invalidate_one, regcache_invalidate): Update. (free_register_cache_thread_one): Remove. (regcache_release): Update. * server.c (handle_btrace_enable_bts, handle_btrace_enable_pt, handle_qxfer_threads_worker): Update. (handle_query): Update, use list iterator. (visit_actioned_threads, handle_pending_status, queue_stop_reply_callback, gdb_wants_all_threads_stopped, clear_pending_status_callback, set_pending_status_callback, find_status_pending_thread_callback, handle_status, process_serial_event): Update. * target.c (thread_search_callback): Update. * thread-db.c (thread_db_get_tls_address): Update. * tracepoint.c (tracepoint_finished_step, tracepoint_was_hit): Update. * win32-i386-low.c (update_debug_registers_callback): Update. * win32-low.c (delete_thread_info, child_delete_thread, continue_one_thread, suspend_one_thread, get_child_debug_event): Adjust.
2017-10-14gdbserver: Use std::list for all_processesSimon Marchi8-190/+225
Remove the usage of inferior_list for the all_processes list in gdbserver, replace it with an std::list. The entry field in process_info is removed, and replaced by a simple pid field. The pid_of macro, used for both processes and threads, is replaced with separate functions. For completeness, I changed ptid_of and lwpid_of to functions as well. gdb/gdbserver/ChangeLog: * gdbthread.h (ptid_of, pid_of, lwpid_of): New functions. * inferiors.h: Include <list>. (struct process_info) <entry>: Remove field. <pid>: New field. (pid_of): Change macro to function. (ptid_of, lwpid_of): Remove macro. (all_processes): Change type to std::list<process_info *>. (ALL_PROCESSES): Remove macro. (for_each_process, find_process): New function. * inferiors.c (all_processes): Change type to std::list<process_info *>. (find_thread_process): Adjust. (add_process): Likewise. (remove_process): Likewise. (find_process_pid): Likewise. (get_first_process): Likewise. (started_inferior_callback): Remove. (have_started_inferiors_p): Adjust. (attached_inferior_callback): Remove. (have_attached_inferiors_p): Adjust. * linux-low.c (check_zombie_leaders): Likewise. * linux-x86-low.c (x86_arch_setup_process_callback): Remove. (x86_linux_update_xmltarget): Adjust. * server.c (handle_query): Likewise. (gdb_reattached_process): Remove. (handle_status): Adjust. (kill_inferior_callback): Likewise. (detach_or_kill_inferior): Remove. (print_started_pid): Likewise. (print_attached_pid): Likewise. (detach_or_kill_for_exit): Update. (process_serial_event): Likewise. * linux-arm-low.c (arm_new_fork): Likewise.