aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2019-04-23gdb/sh: Use default gdbarch methods where possibleAndrew Burgess2-25/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * sh-tdep.c (sh_unwind_sp): Delete. (sh_unwind_pc): Delete. (sh_dummy_id): Delete. (sh_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/score: Use default gdbarch methods where possibleAndrew Burgess2-23/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * score-tdep.c (score_unwind_sp): Delete. (score_unwind_pc): Delete. (score_dummy_id): Delete. (score_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/rx: Use default gdbarch methods where possibleAndrew Burgess2-36/+10
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * rx-tdep.c (rx_unwind_pc): Delete. (rx_unwind_sp): Delete. (rx_dummy_id): Delete. (rx_gdbarch_init): Don't register deleted functions with gdbarch. Update comment.
2019-04-23gdb/rs6000: Use default gdbarch methods where possibleAndrew Burgess2-18/+7
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * rs6000-tdep.c (rs6000_unwind_pc): Delete. (rs6000_dummy_id): Delete. (rs6000_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/or1k: Use default gdbarch methods where possibleAndrew Burgess2-9/+5
Make use of the default gdbarch method gdbarch_dummy_id where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. This commit leaves or1k_unwind_sp and or1k_unwind_pc in place. These functions do match the default methods except that they add additional debugging code. In order to preserve the debug I have left these functions unchanged. gdb/ChangeLog: * or1k-tdep.c (or1k_dummy_id): Delete. (or1k_gdbarch_init): Don't register deleted function with gdbarch.
2019-04-23gdb/nios2: Use default gdbarch methods where possibleAndrew Burgess2-20/+7
Make use of the default gdbarch methods for gdbarch_dummy_id, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * nios2-tdep.c (nios2_dummy_id): Delete. (nios2_unwind_sp): Delete. (nios2_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/nds32: Use default gdbarch methods where possibleAndrew Burgess2-28/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * nds32-tdep.c (nds32_dummy_id): Delete. (nds32_unwind_pc): Delete. (nds32_unwind_sp): Delete. (nds32_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/msp430: Use default gdbarch methods where possibleAndrew Burgess2-32/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * msp430-tdep.c (msp430_unwind_pc): Delete. (msp430_unwind_sp): Delete. (msp430_dummy_id): Delete. (msp430_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/moxie: Use default gdbarch methods where possibleAndrew Burgess2-33/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * moxie-tdep.c (moxie_unwind_sp): Delete. (moxie_unwind_pc): Delete. (moxie_dummy_id): Delete. (moxie_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/mn10300: Use default gdbarch methods where possibleAndrew Burgess2-31/+11
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * mn10300-tdep.c (mn10300_dummy_id): Delete. (mn10300_unwind_pc): Delete. (mn10300_unwind_sp): Delete. (mn10300_push_dummy_call): Use gdbarch_unwind_sp not mn10300_unwind_sp. (mn10300_frame_unwind_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/mep: Use default gdbarch methods where possibleAndrew Burgess2-29/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * mep-tdep.c (mep_unwind_pc): Delete. (mep_unwind_sp): Delete. (mep_dummy_id): Delete. (mep_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/m68hc11: Use default gdbarch methods where possibleAndrew Burgess2-24/+7
Make use of the default gdbarch methods for gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * m68hc11-tdep.c (m68hc11_unwind_pc): Delete. (m68hc11_unwind_sp): Delete. (m68hc11_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/m32r: Use default gdbarch methods where possibleAndrew Burgess2-37/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * m32r-tdep.c (m32r_unwind_sp): Delete. (m32r_unwind_pc): Delete. (m32r_dummy_id): Delete. (m32r_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/m32c: Use default gdbarch methods where possibleAndrew Burgess2-34/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * m32c-tdep.c (m32c_unwind_pc): Delete. (m32c_unwind_sp): Delete. (m32c_dummy_id): Delete. (m32c_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/lm32: Use default gdbarch methods where possibleAndrew Burgess2-23/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * gdb/lm32-tdep.c (lm32_unwind_sp): Delete. (lm32_unwind_pc): Delete. (lm32_dummy_id): Delete. (lm32_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/iq2000: Use default gdbarch methods where possibleAndrew Burgess2-22/+8
Make use of the default gdbarch methods for gdbarch_dummy_id, gdbarch_unwind_pc, and gdbarch_unwind_sp where possible. I have not tested this change but, by inspecting the code, I believe the default methods are equivalent to the code being deleted. gdb/ChangeLog: * gdb/iq2000-tdep.c (iq2000_unwind_sp): Delete. (iq2000_unwind_pc): Delete. (iq2000_dummy_id): Delete. (iq2000_gdbarch_init): Don't register deleted functions with gdbarch.
2019-04-23gdb/nds32: Use type_align instead of nds32_type_alignAndrew Burgess2-47/+7
The general type_align method should be a suitable alternative to nds32_type_align, so switch to use that. The only change this will introduce is related to static fields in a struct or union, the existing code doesn't take account of static fields when computing the alignment for structs of unions, though this is probably a bug - which would probably be exposed by the test case gdb.cp/many-args.exp, though I don't have any way to test this target right now. gdb/ChangeLog: * nds32-tdep.c (nds32_type_align): Delete. (nds32_push_dummy_call): Use type_align instead.
2019-04-23gdb/arm: Use type_align instead of arm_type_alignAndrew Burgess2-51/+23
Replaces use of arm_type_align with common type_align function. Doing this fixes a bug in arm_type_align where static fields are considered as part of the alignment calculation of a struct, which results in arguments passed on the stack being misaligned, this bug was causing a failure in gdb.cp/many-args.exp. Part of the old arm_type_align is retained and used as the gdbarch type align callback in order to correctly align vectors. gdb/ChangeLog: * arm-tdep.c (arm_type_align): Only handle vector override case. (arm_push_dummy_call): Use type_align. (arm_gdbarch_init): Register arm_type_align gdbarch function.
2019-04-23gdb/aarch64: Use type_align instead of aarch64_type_alignAndrew Burgess5-51/+144
Replaces use of aarch64_type_align with common type_align function. Doing this fixes a bug in aarch64_type_align where static fields are considered as part of the alignment calculation of a struct, which results in arguments passed on the stack being misaligned. This bug is exposed in the new test gdb.cp/many-args.exp. Part of the old aarch64_type_align is retained and used as the gdbarch type align callback in order to correctly align vectors. gdb/ChangeLog: * aarch64-tdep.c (aarch64_type_align): Only handle vector override case. (pass_on_stack): Use type_align. (aarch64_gdbarch_init): Register aarch64_type_align gdbarch function. gdb/testsuite/ChangeLog: * gdb.cp/many-args.cc: New file. * gdb.cp/many-args.exp: New file.
2019-04-23Remove unused overload of line_header::file_name_atTom Tromey2-8/+5
I noticed that one of the overloads of line_header::file_name_at is unused. This patch removes it. gdb/ChangeLog 2019-04-23 Tom Tromey <tromey@adacore.com> * dwarf2read.c (line_header::file_name_at): Remove unused overload.
2019-04-23[gdb/testsuite] Fix gdb.btrace/reconnect.exp with native-gdbserverTom de Vries2-1/+6
When running gdb.btrace/reconnect.exp with native-gdbserver, we run into: ... FAIL: gdb.btrace/reconnect.exp: first: stepi 19 ... due to the fact that we're trying to match: ... stepi 19^M 0x00007ffff7dd8b57 in _dl_start () from /lib64/ld-linux-x86-64.so.2^M ... using pattern: ... gdb_test "stepi 19" "0x.* in .* from target.*" ... Fix this by changing the pattern to: ... gdb_test "stepi 19" "0x.* in .* from .*" ... Tested on x86_64-linux with native and native-gdbserver. gdb/testsuite/ChangeLog: 2019-04-23 Tom de Vries <tdevries@suse.de> PR gdb/24433 * gdb.btrace/reconnect.exp: Fix stepi 19 pattern.
2019-04-23[gdb/contrib] Remove superfluous .alt file after dwz invocation in ↵Tom de Vries2-0/+7
cc-with-tweaks.sh The -m option of cc-with-tweaks.sh sets want_multi to true, invoking dwz like this: ... elif [ "$want_multi" = true ]; then cp $output_file ${output_file}.alt $DWZ -m ${output_file}.dwz "$output_file" ${output_file}.alt \ > /dev/null 2>&1 fi ... The problem that is being solved here, is that we want to test dwz in multifile mode, which requires more than one input file, while we only have (at the scope of cc-with-tweaks.sh) one executable. We handle this by copying the executable and offering this as a second input (and using a copy has the additional benefit that it maximally enables dwz transformation). However, after the dwz invocation, the copy is no longer used, and the presence of the file actually causes a test regression: ... FAIL: gdb.base/jit-so.exp: test jit-reader-load filename completion ... Fix this by removing the superflous copy after dwz invocation. Tested on x86_64-linux. gdb/ChangeLog: 2019-04-23 Tom de Vries <tdevries@suse.de> PR gdb/24438 * contrib/cc-with-tweaks.sh: Remove superfluous .alt file after dwz invocation.
2019-04-23Testsuite: Remove pie from trace testsAlan Hayward13-12/+27
Ubuntu/Debian defaults PIE to enabled. This causes the trace tests to fall over due to variables being returned as "unavailable". The tests were never designed to work with pie. Simply ensure the nopie flag is always used for the failing tests. This removes 100+ failures when running native-gdbserver on Ubuntu 18.04. gdb/testsuite/ChangeLog: * gdb.trace/backtrace.exp: Use nopie flag. * gdb.trace/circ.exp: Likewise. * gdb.trace/collection.exp: Likewise. * gdb.trace/ftrace.exp: Likewise. * gdb.trace/mi-trace-unavailable.exp: Likewise. * gdb.trace/mi-traceframe-changed.exp: Likewise. * gdb.trace/qtro.exp: Likewise. * gdb.trace/read-memory.exp: Likewise. * gdb.trace/report.exp: Likewise. * gdb.trace/tfile.exp: Likewise. * gdb.trace/tfind.exp: Likewise. * gdb.trace/unavailable.exp: Likewise.
2019-04-23Update binutils release making documenation to mention changing the symbolic ↵Nick Clifton2-0/+7
documentation link. * README-how-to-make-a-release: Add note to update the symbolic link from "docs" to "docs-2.x" on the sourceware website.
2019-04-23Fix automatic makefile dependencies for generated ld/e*.cAlan Modra4-17/+36
Commit c40e31a121 broke --enable-dependency-tracking=no. * Makefile.am (GENDEPDIR): New var, used.. (GENSCRIPTS): ..here. * Makefile.in: Regenerate. * genscripts.sh: Test for $DEPDIR set before every use.
2019-04-22Fix M5100 flags test with interAptiv-MR2Matthew Fortune2-1/+7
ld/ * testsuite/ld-mips-elf/mips-elf-flags.exp: Fix expected ASEs for M5100.
2019-04-22Support for DW_OP_addrx and DW_FORM_addrx tagsAli Tamur6-10/+44
DW_OP_addrx is the new name of DW_OP_GNU_addr_index, and DW_FORM_addrx is the name of DW_FORM_addr_index in the Dwarf 5 standard. This is a small step towards supporting Dwarf 5 in gdb. Note: I could not find any tests specifically for *_GNU_addr_index, and I did not add any new tests, please advise.
2019-04-23Automatic date update in version.inGDB Administrator1-1/+1
2019-04-22[FYI] Add myself to gdb/MAINTAINERSAli Tamur2-0/+5
2019-04-22RISC-V: Enable 32-bit linux gdb core file support.Jim Wilson2-1/+5
bfd/ * elfnn-riscv.c (PRSTATUS_SIZE) [ARCH_SIZE==32]: Change from 0 to 204.
2019-04-22solib-svr4: Pass down svr4_info as much as possibleSimon Marchi2-43/+76
While reviewing https://sourceware.org/ml/gdb-patches/2019-04/msg00141.html I noticed that we relied heavily on global state through the get_svr4_info function, which uses current_program_space. I thought we could improve this (make things more explicit and easier to follow) by - Making get_svr4_info accept a program_space parameter, making it return the SVR4 info for that program space. - Passing down the svr4_info object from callers as much as possible. This means looking up the svr4_info for the appropriate program space at the entry points of the solib-svr4.c file and passing it down. For now, these entry points (most of them are "methods" of svr4_so_ops) rely on current_program_space, but we can later try to change the target_so_ops interface to pass down the program space. gdb/ChangeLog: * solib-svr4.c (get_svr4_info): Add pspace parameter. (svr4_keep_data_in_core): Pass current_program_space to get_svr4_info. (open_symbol_file_object): Likewise. (svr4_default_sos): Add info parameter. (svr4_read_so_list): Likewise. (svr4_current_sos_direct): Adjust functions calls to pass down info. (svr4_current_sos_1): Add info parameter. (svr4_current_sos): Call get_svr4_info, pass info down to svr4_current_sos_1. (svr4_fetch_objfile_link_map): Pass objfile->pspace to get_svr4_info. (svr4_in_dynsym_resolve_code): Pass current_program_space to get_svr4_info. (probes_table_htab_remove_objfile_probes): Pass objfile->pspace to get_svr4_info. (probes_table_remove_objfile_probes): Likewise. (register_solib_event_probe): Add info parameter. (solist_update_incremental): Pass info parameter down to svr4_read_so_list. (disable_probes_interface): Add info parameter. (svr4_handle_solib_event): Pass current_program_space to get_svr4_info. Adjust disable_probes_interface cleanup. (svr4_create_probe_breakpoints): Add info parameter, pass it down to register_solib_event_probe. (svr4_create_solib_event_breakpoints): Add info parameter, pass it down to svr4_create_probe_breakpoints. (enable_break): Pass info down to svr4_create_solib_event_breakpoints. (svr4_solib_create_inferior_hook): Pass current_program_space to get_svr4_info. (svr4_clear_solib): Likewise.
2019-04-22Fix "nosharedlibrary + continue + shared lib event" crashPedro Alves5-3/+133
On systems that use the probes-based solib interface, GDB misbehaves if you run the "nosharelibrary" command, continue execution, and then the program hits the shared library event breakpoint. On my system it aborts like this: (gdb) nosharedlibrary (gdb) c Continuing. pure virtual method called terminate called without an active exception Aborted (core dumped) Though it's really undefined behavior territory, caused by deferencing a dangling solib event probe pointer. I've observed this by running "nosharedlibrary" when stopped at the entry point, but it should happen at any other point, if the program does a dlopen/dlclose after. The fix is to discard an objfile's probes from the svr4 probes table when an objfile is about to be released. New test included, works with both native and gdbserver testing. Valgrind log: (gdb) starti (gdb) nosharedlibrary (gdb) c Continuing. ==24895== Invalid read of size 8 ==24895== at 0x89E5FB: solib_event_probe_action(probe_and_action*) (solib-svr4.c:1735) ==24895== by 0x89E95A: svr4_handle_solib_event() (solib-svr4.c:1872) ==24895== by 0x8A7198: handle_solib_event() (solib.c:1274) ==24895== by 0x4E3407: bpstat_stop_status(address_space const*, unsigned long, thread_info*, target_waitstatus const*, bpstats*) (breakpoint.c:5407) ==24895== by 0x721F41: handle_signal_stop(execution_control_state*) (infrun.c:5685) ==24895== by 0x720B11: handle_inferior_event(execution_control_state*) (infrun.c:5129) ==24895== by 0x71DD93: fetch_inferior_event(void*) (infrun.c:3748) ==24895== by 0x7059C3: inferior_event_handler(inferior_event_type, void*) (inf-loop.c:43) ==24895== by 0x874DF0: remote_async_serial_handler(serial*, void*) (remote.c:14039) ==24895== by 0x894101: run_async_handler_and_reschedule(serial*) (ser-base.c:137) ==24895== by 0x8941E6: fd_event(int, void*) (ser-base.c:188) ==24895== by 0x67AFEF: handle_file_event(file_handler*, int) (event-loop.c:732) ==24895== Address 0x18b63860 is 0 bytes inside a block of size 136 free'd ==24895== at 0x4C2E616: operator delete(void*, unsigned long) (vg_replace_malloc.c:585) ==24895== by 0x8C6A12: stap_probe::~stap_probe() (stap-probe.c:124) ==24895== by 0x66F7DB: probe_key_free(bfd*, void*) (elfread.c:1382) ==24895== by 0x69B705: bfdregistry_callback_adaptor(void (*)(registry_container*, void*), registry_container*, void*) (gdb_bfd.c:131) ==24895== by 0x855A57: registry_clear_data(registry_data_registry*, void (*)(void (*)(registry_container*, void*), registry_container*, void*), registry_container*, registry_fields*) (registry.c:79) ==24895== by 0x855B01: registry_container_free_data(registry_data_registry*, void (*)(void (*)(registry_container*, void*), registry_container*, void*), registry_container*, registry_fields*) (registry.c:92) ==24895== by 0x69B783: bfd_free_data(bfd*) (gdb_bfd.c:131) ==24895== by 0x69C4BA: gdb_bfd_unref(bfd*) (gdb_bfd.c:609) ==24895== by 0x7CC33F: objfile::~objfile() (objfiles.c:651) ==24895== by 0x7CD559: objfile_purge_solibs() (objfiles.c:1021) ==24895== by 0x8A7132: no_shared_libraries(char const*, int) (solib.c:1252) ==24895== by 0x548E3D: do_const_cfunc(cmd_list_element*, char const*, int) (cli-decode.c:106) ==24895== Block was alloc'd at ==24895== at 0x4C2D42A: operator new(unsigned long) (vg_replace_malloc.c:334) ==24895== by 0x8C527C: handle_stap_probe(objfile*, sdt_note*, std::vector<probe*, std::allocator<probe*> >*, unsigned long) (stap-probe.c:1561) ==24895== by 0x8C5535: stap_static_probe_ops::get_probes(std::vector<probe*, std::allocator<probe*> >*, objfile*) const (stap-probe.c:1656) ==24895== by 0x66F71B: elf_get_probes(objfile*) (elfread.c:1365) ==24895== by 0x7EDD85: find_probes_in_objfile(objfile*, char const*, char const*) (probe.c:227) ==24895== by 0x4DF382: create_longjmp_master_breakpoint() (breakpoint.c:3275) ==24895== by 0x4F6562: breakpoint_re_set() (breakpoint.c:13828) ==24895== by 0x8A66AA: solib_add(char const*, int, int) (solib.c:1010) ==24895== by 0x89F7C6: enable_break(svr4_info*, int) (solib-svr4.c:2360) ==24895== by 0x8A104C: svr4_solib_create_inferior_hook(int) (solib-svr4.c:2992) ==24895== by 0x8A70B9: solib_create_inferior_hook(int) (solib.c:1215) ==24895== by 0x70C073: post_create_inferior(target_ops*, int) (infcmd.c:467) ==24895== pure virtual method called terminate called without an active exception ==24895== ==24895== Process terminating with default action of signal 6 (SIGABRT): dumping core ==24895== at 0x7CF3750: raise (raise.c:51) ==24895== by 0x7CF4D30: abort (abort.c:79) ==24895== by 0xB008F4: __gnu_cxx::__verbose_terminate_handler() (in build/gdb/gdb) ==24895== by 0xAFF845: __cxxabiv1::__terminate(void (*)()) (in build/gdb/gdb) ==24895== by 0xAFF890: std::terminate() (in build/gdb/gdb) ==24895== by 0xAFF95E: __cxa_pure_virtual (in build/gdb/gdb) ==24895== by 0x89E610: solib_event_probe_action(probe_and_action*) (solib-svr4.c:1735) ==24895== by 0x89E95A: svr4_handle_solib_event() (solib-svr4.c:1872) ==24895== by 0x8A7198: handle_solib_event() (solib.c:1274) ==24895== by 0x4E3407: bpstat_stop_status(address_space const*, unsigned long, thread_info*, target_waitstatus const*, bpstats*) (breakpoint.c:5407) ==24895== by 0x721F41: handle_signal_stop(execution_control_state*) (infrun.c:5685) ==24895== by 0x720B11: handle_inferior_event(execution_control_state*) (infrun.c:5129) ==24895== Note, this little bit in the patch is just a cleanup that I noticed: - lookup.prob = prob; lookup.address = address; That line isn't necessary because hashing/comparison only looks at the address. gdb/ChangeLog: 2019-04-22 Pedro Alves <palves@redhat.com> * solib-svr4.c (svr4_free_objfile_observer): New. (probe_and_action::objfile): New field. (probes_table_htab_remove_objfile_probes) (probes_table_remove_objfile_probes): New functions. (register_solib_event_probe): Add 'objfile' parameter. Store it in the new probe_and_action. Don't store the probe in 'lookup'. (svr4_create_probe_breakpoints): Pass objfile to register_solib_event_probe. (_initialize_svr4_solib): Register a free_objfile observer. gdb/testsuite/ChangeLog: 2019-04-22 Pedro Alves <palves@redhat.com> * gdb.base/solib-probes-nosharedlibrary.c, gdb.base/solib-probes-nosharedlibrary.exp: New files.
2019-04-22Improve reverse debugging docs, mention built-in support and supports archsPedro Alves2-7/+27
gdb/doc/ChangeLog: 2019-04-22 Pedro Alves <palves@redhat.com> * gdb.texinfo (Reverse Execution): Mention and xref process record and replay. Mention remote and system emulators. (Process Record and Replay): List supported architectures. Mention that "record btrace" is only supported on Intel processors.
2019-04-22Automatic date update in version.inGDB Administrator1-1/+1
2019-04-21Automatic date update in version.inGDB Administrator1-1/+1
2019-04-20Fix GDB crash when registers cannot be modified.Philippe Waroquiers1-0/+5
This crash was detected when using GDB with the valgrind gdbserver. To reproduce: valgrind sleep 10000 In another window: gdb target remote | vgdb p printf("make sleep print something\n") => terminate called after throwing an instance of 'gdb_exception_error' Aborted The problem is that the valgrind gdbserver does not allow to change registers when the inferior is blocked in a system call. GDB then raises an exception. The exception causes the destructor of typedef std::unique_ptr<infcall_suspend_state, infcall_suspend_state_deleter> infcall_suspend_state_up; to be called. This destructor itself tries to restore the value of the registers, and fails similarly. We must catch the exception in the destructor to avoid crashing GDB. If the destructor encounters a problem, no warning is produced if there is an uncaught exception, as in this case, the user will already be informed of a problem via this exception. With this change, no crash anymore, and all the valgrind 3.15 tests pass succesfully. gdb/ChangeLog 2019-04-19 Philippe Waroquiers <philippe.waroquiers@skynet.be> * inferior.h (struct infcall_suspend_state_deleter): Catch exception in destructor to avoid crash.
2019-04-20Automatic date update in version.inGDB Administrator1-1/+1
2019-04-19Remove common/queue.hTom Tromey2-298/+4
gdb no longer needs common/queue.h, so this removes it. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * common/queue.h: Remove.
2019-04-19Remove an include of common/queue.hTom Tromey2-1/+4
event-loop.c does not need to include common/queue.h, so this removes it. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * event-loop.c: Don't include "common/queue.h".
2019-04-19Use std::list for remote_notif_state::notif_queueTom Tromey4-33/+38
This changes remote_notif_state::notif_queue to be a std::list and updates all the uses. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * remote.c (remote_target): Use delete. * remote-notif.h: Include <list>, not "common/queue.h". (notif_client_p): Remove typedef. (remote_notif_state): Add constructor, destructor, initializer. <notif_queue>: Now a std::list. (remote_notif_state_xfree): Don't declare. * remote-notif.c (remote_notif_process, handle_notification) (remote_notif_state_allocate): Update. (~remote_notif_state): Rename from remote_notif_state_xfree.
2019-04-19Use std::list for event notifications in gdbserverTom Tromey4-79/+78
This changes gdbserver to use std::list rather than common/queue.h for event notifications. gdb/gdbserver/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * server.c (struct vstop_notif): Derive from notif_event. <base>: Remove. (queue_stop_reply): Update. (remove_all_on_match_ptid): Change type. Rewrite. (discard_queued_stop_replies): Rewrite. (in_queued_stop_replies_ptid): Change type. (in_queued_stop_replies): Rewrite. (notif_stop): Update. (queue_stop_reply_callback): Update. (captured_main): Don't call initialize_notif. (push_stop_notification): Update. * notif.c (notif_write_event, handle_notif_ack) (notif_event_enque, notif_push): Update. (notif_event_xfree, initialize_notif): Remove. * notif.h (struct notif_event): Include <list>, not "common/queue.h". (struct notif_server) <queue>: Now a std::list. (notif_event_p): Remove typedef. (initialize_notif): Don't declare. (struct notif_event): Add virtual destructor.
2019-04-19Make objfile::static_links an htab_upTom Tromey4-13/+15
This changes objfile::static_links to be an htab_up, so that ~objfile no longer has to explicitly destroy it. Tested by the buildbot. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * symfile.c (reread_symbols): Update. * objfiles.c (objfile_register_static_link) (objfile_lookup_static_link): Update (~objfile) Don't delete static_links. * objfiles.h (struct objfile) <static_links>: Now an htab_up.
2019-04-19Make copy_name return std::stringTom Tromey13-176/+195
This changes copy_name to return a std::string, updating all the callers. In some cases, an extra copy was removed. This also required a little bit of constification. Tested by the buildbot. gdb/ChangeLog 2019-04-19 Tom Tromey <tom@tromey.com> * type-stack.h (struct type_stack) <insert>: Constify string. * type-stack.c (type_stack::insert): Constify string. * gdbtypes.h (lookup_template_type): Update. (address_space_name_to_int): Update. * gdbtypes.c (address_space_name_to_int): Make space_identifier const. (lookup_template_type): Make name const. * c-exp.y: Update rules. (lex_one_token, classify_name, classify_inner_name) (c_print_token): Update. * p-exp.y: Update rules. (yylex): Update. * f-exp.y: Update rules. (yylex): Update. * d-exp.y: Update rules. (lex_one_token, classify_name, classify_inner_name): Update. * parse.c (write_dollar_variable, copy_name): Return std::string. * parser-defs.h (copy_name): Change return type. * m2-exp.y: Update rules. (yylex): Update. * go-exp.y (lex_one_token): Update. Update rules. (classify_unsafe_function, classify_packaged_name) (classify_name, yylex): Update.
2019-04-19gdb/configure.ac: add --enable-source-highlightSergei Trofimovich4-14/+73
Allow disabling source-highlight dependency autodetection even it exists in the system. More details on problem of automatic dependencies: https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Automagic_dependencies Noticed by Jeroen Roovers in https://bugs.gentoo.org/680238 * configure.ac: add --enable-source-highlight switch. * configure: Regenerate. * top.c (print_gdb_version): plumb --enable-source-highlight status to "show configuration". gdb/ChangeLog 2019-04-19 Sergei Trofimovich <siarheit@google.com> * configure.ac: add --enable-source-highlight switch. * configure: Regenerate. * top.c (print_gdb_version): plumb --enable-source-highlight status to "show configuration".
2019-04-19Print non-Ada unions without crashingTom Tromey7-5/+116
ada-lang.c is a bit too eager trying to decode unions in the Ada style -- looking for discriminants and such. This causes crashes when printing a non-Ada union in Ada mode, something that can easily happen when printing a value from history or certain registers on AArch64. This patch fixes the bug by changing ada-lang.c to only apply special Ada treatment to types coming from an Ada CU. This in turn required a couple of surprising changes. First, some of the Ada code was already using HAVE_GNAT_AUX_INFO to decide whether a type had already been fixed -- such types had INIT_CPLUS_SPECIFIC called on them. This patch changes these spots to use the "none" identifier instead. This then required changing value_rtti_type to avoid changing the language-specific object attached to an Ada type, which seems like a good change regardless. Tested on x86-64 Fedora 29. gdb/ChangeLog 2019-04-19 Tom Tromey <tromey@adacore.com> * ada-lang.c (ada_is_variant_part, ada_to_fixed_type_1): Check ADA_TYPE_P. (empty_record, ada_template_to_fixed_record_type_1) (template_to_static_fixed_type) (to_record_with_fixed_variant_part): Use INIT_NONE_SPECIFIC. * cp-abi.c (value_rtti_type): Check HAVE_CPLUS_STRUCT. * gdbtypes.h (INIT_NONE_SPECIFIC, ADA_TYPE_P): New macros. gdb/testsuite/ChangeLog 2019-04-19 Tom Tromey <tromey@adacore.com> * gdb.ada/ptype_union.c: New file. * gdb.ada/ptype_union.exp: New file.
2019-04-19Fix "list" when control characters are seenTom Tromey4-3/+18
PR symtab/24423 points out that control characters in a source file cause a hang in the "list" command, a regression introduced by the styling changes. This patch, from the PR, fixes the bug. I've included a minimal change to the "list" test that exercises this code. I recall that this bug was discussed on gdb-patches, and I thought there was a patch there as well, but I was unable to find it. gdb/ChangeLog 2019-04-19 Ilya Yu. Malakhov <malakhov@mcst.ru> PR symtab/24423: * source.c (print_source_lines_base): Advance "iter" when a control character is seen. gdb/testsuite/ChangeLog 2019-04-19 Tom Tromey <tromey@adacore.com> PR symtab/24423: * gdb.base/list0.h (foo): Add a control-l character.
2019-04-19Fix GDB crash when registers cannot be modified.Philippe Waroquiers1-1/+12
This crash was detected when using GDB with the valgrind gdbserver. To reproduce: valgrind sleep 10000 In another window: gdb target remote | vgdb p printf("make sleep print something\n") => terminate called after throwing an instance of 'gdb_exception_error' Aborted The problem is that the valgrind gdbserver does not allow to change registers when the inferior is blocked in a system call. GDB then raises an exception. The exception causes the destructor of typedef std::unique_ptr<infcall_suspend_state, infcall_suspend_state_deleter> infcall_suspend_state_up; to be called. This destructor itself tries to restore the value of the registers, and fails similarly. We must catch the exception in the destructor to avoid crashing GDB. If the destructor encounters a problem, no warning is produced if there is an uncaught exception, as in this case, the user will already be informed of a problem via this exception. With this change, no crash anymore, and all the valgrind 3.15 tests pass succesfully. gdb/ChangeLog 2019-04-19 Philippe Waroquiers <philippe.waroquiers@skynet.be> * inferior.h (struct infcall_suspend_state_deleter): Catch exception in destructor to avoid crash.
2019-04-19OBVIOUS move add_comm_alias "!" <=> "shell" near the add_com "shell"Philippe Waroquiers2-2/+7
gdb/ChangeLog 2019-04-19 Philippe Waroquiers <philippe.waroquiers@skynet.be> * cli/cli-cmds.c (_initialize_cli_cmds): Move "shell" "!" alias close to the add_com "shell".
2019-04-19RX Assembler: Ensure that the internal limit on the number of relaxation ↵Nick Clifton3-8/+31
iterations is not larger that the external limit. PR 24464 * config/tc-rx.h (md_relax_frag): Pass the max_iterations variable to the relaxation function. * config/tc-rx.c (rx_relax_frag): Add new parameter - the maximum number of iterations. Make sure that our internal iteration limit does not exceed this external iteration limit.
2019-04-19s12z and h8300 no-print-map-discarded failsAlan Modra5-3/+14
This tidies the remaining --no-print-map-discarded fails. h8300-elf warns on a section without flags, and s12z doesn't support --gc-sections. bfd/ * elf32-s12z.c (elf_backend_can_gc_sections): Don't define ld/ * testsuite/ld-gc/skip-map-discarded.s: Add section attributes. * testsuite/lib/ld-lib.exp (check_gc_sections_available): Add s12z to list of targets not supporting --gc-sections.