aboutsummaryrefslogtreecommitdiff
path: root/gdb
AgeCommit message (Collapse)AuthorFilesLines
2012-08-16fix internal_error during fork event handling.Joel Brobecker2-3/+57
When running on ia64-hpux a program that calls fork, GDB currently reports the following internal error: internal-error: Can't determine the current address space of thread process 1882 Here is what happens: 1. GDB receives a "fork" event; 2. handle_inferior_event calls detach_breakpoints for the child process; 3. detach_breakpoints calls ia64's gdbarch remove_breakpoint hook, which needs to read an entire instruction slot in order to remove a breakpoint instruction from memory; 4. To read inferior memory, the ia64-hpux code needs to know where that memory is located relative to the bsp..bspstore area, and thus needs to read the value of those registers; 5. To get the value of those registers, ia64_hpux_xfer_memory current uses the current regcache. The problem is that at the time we are trying to remove the breakpoints from the child, the child process is not part of the list of inferiors really known to GDB (it has not been added to inferior_list), so trying to create a regcache for it triggers an internal error when creating address space for the regcache (as the address space is ultimately fetched from the inferior). To work around this limitation, ia64_hpux_xfer_memory has been modified to detect the fact the current inferior is not in our inferior list, and to go, in that case, straight to the source to fetch the registers it needs. gdb/ChangeLog: * ia64-hpux-nat.c (ia64_hpux_get_register_from_save_state_t): New function. (ia64_hpux_xfer_memory): Check if inferior_ptid is known before using the regache. Use ia64_hpux_get_register_from_save_state_t to access the bsp and bspstore registers if not.
2012-08-16Change detach_breakpoints to take a ptid instead of a pidJoel Brobecker6-11/+22
Before this change, detach_breakpoints would take a pid, and then set inferior_ptid to a ptid that it constructs using pid_to_ptid (pid). Unfortunately, this ptid is not necessarily valid. Consider for instance the case of ia64-hpux, where ttrace refuses a register-read operation if the LWP is not provided. This problems shows up when GDB is trying to handle fork events. Assuming GDB is configured to follow the parent, GDB will try to detach from the child. But before doing so, it needs to remove all breakpoints inside that child. On ia64, this involves reading inferior (the child's) memory. And on ia64-hpux, reading memory requires us to read the bsp and bspstore registers, in order to determine where that memory is relative to the value of those registers, and thus to determine which ttrace operation to use in order to fetch that memory (see ia64_hpux_xfer_memory). This patch therefore changes detach_breakpoints to take a ptid instead of a pid, and then updates all callers. One of the consequences of this patch is that it trips an assert on GNU/Linux targets. But this assert appears to have not actual purpose, and is thus removed. gdb/ChangeLog: * breakpoint.h (detach_breakpoints): pid parameter is now a ptid. * breakpoint.c (detach_breakpoints): Change pid parameter into a ptid. Adjust code accordingly. * infrun.c (handle_inferior_event): Delete variable child_pid. Update call to detach_breakpoints to pass the child ptid for fork events. * linux-nat.c (linux_nat_iterate_watchpoint_lwps): Remove assert that inferior_ptid's lwp is zero. (linux_handle_extended_wait): Update call to detach_breakpoints. * inf-ttrace.c (inf_ttrace_follow_fork): Update call to detach_breakpoints.
2012-08-16inf_ttrace_follow_fork: detach_breakpoints called twice for child.Joel Brobecker2-1/+11
When debugging a program that forks with follow-fork set to follow the parent, we end up calling detach_breakpoints for the child twice. On ia64-hpux, this leads to a warning when trying to remove the breakpoints the second time around, because the ia64 code detects that the address does not point to a breakpoint instruction. gdb/ChangeLog: * inf-ttrace.c (inf_ttrace_follow_fork): When following the parent, only call detach_breakpoints if tts.tts_event == TTEVT_VFORK.
2012-08-16DWARF frame unwinder executes one too many rowsJoel Brobecker7-2/+143
The problem is trying to unwind from a function where %ebp is NOT used as the frame pointer, and the size of the frame changes over the lifetime of that function. For instance, trying to unwind past the GNAT runtime function called system.tasking.rendezvous.timed_selective_wait on x86-linux, one can get: (gdb) bt [...] #3 0x0805364b in system.tasking.rendezvous.timed_selective_wait () #4 0xb7fe5068 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) Looking at the CFI, we find the following initial instructions... > DW_CFA_def_cfa: %esp+4 (r4 ofs 4) > DW_CFA_offset: %eip at cfa-4 (r8 = %eip) ... and the associated FDE: > 00001be4 00000054 00001be8 FDE cie=00000000 pc=08053310..08053951 [...] > DW_CFA_advance_loc: 8 to 080534ad > DW_CFA_def_cfa_offset: 112 > DW_CFA_advance_loc2: 414 to 0805364b > DW_CFA_def_cfa_offset: 108 [...] The problem is that the DWARF frame unwinder executed the FDE until the row for PC == 0x0805364b. But in reality, our program hasn't executed the instruction at that address yet (it is the return address). So GDB executed a little too much of the FDE, giving us the wrong offset for the frame base, and thus the wrong address where %eip got saved. This patch fixes the problem by using a more correct PC as the bound for executing the FDE. gdb/ChangeLog: * dwarf2-frame.c (dwarf2_frame_cache): Use get_frame_address_in_block instead of get_frame_pc as the bound for executing the frame's FDE. gdb/testsuite/ChangeLog: * gdb.ada/rdv_wait: New testcase.
2012-08-16gdb/Yao Qi18-142/+53
* gdbtypes.h (enum type_code): Define TYPE_CODE_BITSTRING -1. * arm-tdep.c (arm_type_align): Remove code handling TYPE_CODE_BITSTRING. * c-typeprint.c (c_type_print_varspec_prefix): Likewise. (c_type_print_varspec_suffix): Likewise. * eval.c (evaluate_subexp_standard): Likewise. * f-typeprint.c (f_type_print_varspec_prefix): Likewise. (f_type_print_varspec_suffix): Likewise. * gdbtypes.c (is_scalar_type): Likewise. (recursive_dump_type): Likewise. * infcall.c (value_arg_coerce): Likewise. * m2-valprint.c (m2_val_print): Likewise. * p-typeprint.c (pascal_type_print_varspec_prefix): Likewise. (pascal_type_print_varspec_suffix): Likewise. (pascal_type_print_base): Likewise. * p-valprint.c (pascal_val_print): Likewise. (pascal_val_print): Likewise. * valops.c (value_slice): Likewise. * valprint.c (scalar_type_p): Likewise. * valarith.c (value_bitstring_subscript): Remove. (value_concat): Remove code handling TYPE_CODE_BITSTRING. Remove comment on TYPE_CODE_BITSTRING. * stabsread.c (read_type): Don't set TYPE_CODE (type) to TYPE_CODE_BITSTRING. * python/py-type.c (pyty_codes): Move ENTRY (TYPE_CODE_BITSTRING) to slot 0. gdb/doc: * gdb.texinfo (Types In Python): Mention gdb.TYPE_CODE_BITSTRING is deprecated.
2012-08-16gdb/Yao Qi2-11/+6
* tracepoint.c (trace_find_none_command): Remove. (_initialize_tracepoint): Call add_alias_cmd for "tfind none".
2012-08-16gdb/Yao Qi2-3/+8
* remote.c (handle_notification): Remove parameter 'length'. (putpkt_binary, getpkt_or_notif_sane_1): Caller update.
2012-08-16*** empty log message ***gdbadmin1-1/+1
2012-08-15 * gdbtypes.c (opaque_type_resolution): Make static.Keith Seitz2-6/+23
Add missing comment. (overload_debug): Add missing comment. (show_opaque_type_resolution): Likewise. (show_overload_debug): Likewise. (print_bit_vector): Remove unnecessary forward declaration. (print_arg_types): Likewise. (dump_fn_fieldlists): Likewise. (print_cplus_stuff): Likewise.
2012-08-15Forgotten commit from 2012-07-30.Keith Seitz1-0/+5
2012-08-15 * gdb_bfd.c (struct gdb_bfd_data) <archive_bfd>: New field.Tom Tromey2-1/+26
(gdb_bfd_ref): Initialize new field. (gdb_bfd_unref): Unref the archive BFD. (gdb_bfd_openr_next_archived_file): Acquire a reference to the parent archive.
2012-08-15 PR python/14387:Tom Tromey9-19/+63
* python/py-bpevent.c (create_breakpoint_event_object): Update comment. * python/py-event.c (evpy_add_attribute): Update comment. * python/py-exitedevent.c (create_exited_event_object): Fix reference counting and error handling. * python/py-newobjfileevent.c (create_new_objfile_event_object): Fix reference counting. * python/py-signalevent.c (create_signal_event_object): Fix reference counting and error handling. * python/py-stopevent.c (emit_stop_event): Fix reference counting. * python/py-threadevent.c (get_event_thread): Return a borrowed reference. * python/py-type.c (convert_field): Fix reference counting.
2012-08-15 * dwarf2read.c (dwarf_decode_macro_bytes)Tom Tromey2-24/+31
<DW_MACRO_GNU_transparent_include>: Use pointer to included data as hash key.
2012-08-15gdb: improve usage stringsMike Frysinger3-9/+33
This adds Usage strings to a bunch of commands, tweaks the grammar in a few, and improves the help text for the handle command. Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-08-15*** empty log message ***gdbadmin1-1/+1
2012-08-14 * gdbtypes.c (struct extra): Delete, unused.Doug Evans2-6/+2
2012-08-14 * gdbtypes.c: Whitespace cleanup.Doug Evans2-17/+34
(address_space_name_to_int): Remove "extern" from definition. (_initialize_gdbtypes): Declare with initialize_file_ftype.
2012-08-14 * gdbtypes.c (make_pointer_type): Remove redundant setting ofDoug Evans2-3/+5
TYPE_POINTER_TYPE (type).
2012-08-14gdb/testsuite/Jan Kratochvil2-1/+4
* gdb.base/attach-twice.exp: Remove excessive ps exec.
2012-08-142012-08-14 Gary Benson <gbenson@redhat.com>Gary Benson2-1/+5
* solib-svr4.c (svr4_free_library_list): Use free_so.
2012-08-14*** empty log message ***gdbadmin1-1/+1
2012-08-13 * gdb.base/help.exp: Update expected output.Doug Evans2-1/+2
2012-08-13gdb: ignore generated go-exp.cMike Frysinger2-0/+5
2012-08-13 * value.c (show_convenience): Tweak comment.Doug Evans6-17/+55
(_initialize_values): Mention convenience functions in the help text for "show convenience". doc/ * gdb.texinfo (Convenience Vars): Update text for "show convenience" to include functions. testsuite/ * gdb.base/default.exp: Update expected output of "show convenience".
2012-08-13gdb/Yao Qi6-20/+10
* std-operator.def: Remove TERNOP_SLICE_COUNT. * breakpoint.c (watchpoint_exp_is_const): Remove handling to TERNOP_SLICE_COUNT. * eval.c (evaluate_subexp_standard): Likewise. * expprint.c (print_subexp_standard): Likewise. (dump_subexp_body_standard): Likewise. * parse.c (operator_length_standard): Likewise.
2012-08-13gdb/Yao Qi8-46/+12
* std-operator.def: Remove OP_BITSTRING. * breakpoint.c (watchpoint_exp_is_const): Update. * eval.c (evaluate_subexp_standard): Remove handling to OP_BITSTRING. * expprint.c (print_subexp_standard): Likewise. (dump_subexp_body_standard): Likewise. * parse.c (operator_length_standard): Likewise. * valops.c (value_bitstring): Remove. * value.h: Remove the declaration of 'value_bitstring'.
2012-08-13*** empty log message ***gdbadmin1-1/+1
2012-08-12*** empty log message ***gdbadmin1-1/+1
2012-08-112012-08-10 Sergio Durigan Junior <sergiodj@redhat.com>Sergio Durigan Junior2-3/+6
* linespec.c (find_methods): Remove unused variables `i1' and `name_len'. (decode_line_full): Likewise for `arg_start'.
2012-08-112012-08-10 Sergio Durigan Junior <sergiodj@redhat.com>Sergio Durigan Junior2-3/+6
* gdb_bfd.c (gdb_bfd_unref): Remove unused variable `slot'. (zlib_decompress_section): Likewise for `section_data'. (gdb_bfd_map_section): Likewise for `buf' and `retbuf'.
2012-08-11*** empty log message ***gdbadmin1-1/+1
2012-08-10 Add $_memeq, $_regex, $_streq, $_strlen convenience functions.Doug Evans12-3/+405
* NEWS: Document them. * data-directory/Makefile.in (PYTHON_FILES): Add function/__init__.py, function/strfns.py. * python/py-type.c (typy_array_1): New function. (typy_array): Call it. (typy_vector): New function. (type_object_methods): Add "vector". * python/lib/gdb/function/__init__.py: New file. * python/lib/gdb/function/strfns.py: New file. doc/ * gdb.texinfo (Convenience Funs): New node. (Types In Python): Document Type.vector. testsuite/ * gdb.python/py-strfns.c: New file. * gdb.python/py-strfns.exp: New file. * gdb.python/py-type.exp (test_fields): Add vector tests.
2012-08-10 * python/py-type.c (convert_field): Use gdb_py_long_from_longestSiddhesh Poyarekar2-2/+8
for TYPE_FIELD_BITPOS. (typy_get_sizeof): Likewise for TYPE_LENGTH.
2012-08-10gdb: add completion handler for "handle" and "signal"Mike Frysinger8-2/+192
The command line completion has spoiled me. Thus the lack of completion with the "handle" command annoys me. Patch! This does a few things: - adds a VEC_merge helper - adds a generic signal completer - adds a completion handler for the "handle" command - sets the completion handler for the "signal" command URL: http://sourceware.org/bugzilla/show_bug.cgi?id=10436 Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-08-10*** empty log message ***gdbadmin1-1/+1
2012-08-09gdb/Yao Qi21-237/+721
* cli/cli-decode.c (set_cmd_prefix): New. (lookup_cmd_for_prefixlist): New. (add_prefix_cmd): Call set_cmd_prefix and update field 'prefix' of each cmd_list_element in *prefixlist. (add_setshow_cmd_full): set_cmd_prefix. (add_alias_cmd): Likewise. * cli/cli-decode.h (struct cmd_list_element) <prefix>: New field. Declare 'auto_boolean_enums'. * cli/cli-setshow.c: Include "observer.h". (notify_command_param_changed_p): New. (add_setshow_auto_boolean_cmd): Move auto_boolean_enums out. Remove 'static'. (do_setshow_command): Split it to ... (do_set_command, do_show_command): ... them. New. (do_set_command): Call observer_notify_command_param_changed if notify_command_param_changed_p returns true. (cmd_show_list): Caller update. * auto-load.c (set_auto_load_cmd): Likewise. * remote.c (show_remote_cmd): Likewise. * cli/cli-setshow.h: Update declarations. * top.c (execute_command): Call do_set_command and do_show_command. * NEWS: Mention new MI notification. * mi/mi-interp.c: Declare mi_command_param_changed. (mi_interpreter_init): Attach mi_command_param_changed to observer command_param_changed. (mi_command_param_changed): New. Remove mi_suppress_breakpoint_notifications. Define global variable mi_suppress_notification. (mi_breakpoint_created): Update. (mi_breakpoint_deleted): Likewise. (mi_breakpoint_modified): Likewise. * mi/mi-main.c (mi_cmd_execute): Likewise. Check command 'gdb-set' and set mi_suppress_notification. * mi/mi-main.h: (mi_suppress_notification): New struct. gdb/doc/ * observer.texi: New observer command_param_changed. * gdb.texinfo (GDB/MI Async Records): Doc for '=cmd-param-changed'. gdb/testsuite/ * gdb.mi/mi-cmd-param-changed.exp: New. * gdb.mi/mi-cli.exp: Update for MI notification "=cmd-param-changed". * gdb.mi/mi-var-rtti.exp, gdb.mi/mi2-cli.exp: Likewise. * gdb.mi/mi2-prompt.exp: Likewise.
2012-08-09gdb/Jan Kratochvil2-3/+6
* fbsd-nat.h (fbsd_find_memory_regions): Use find_memory_region_ftype.
2012-08-09gdb/Yao Qi6-20/+18
* cli/cli-cmds.c (enablebreaklist): Move it to breakpoint.c. (skiplist): Move it to skip.c. (init_cmd_lists): Remove code setting enablebreaklist and skiplist to NULL. * breakpoint.c (enablebreaklist): Moved from cli/cli-cmds.c. * cli/cli-cmds.h: Remove declaration of enablebreaklist and skiplist. * gdbcmd.h: Likewise. * skip.c (_initialize_step_skip): Move 'skiplist' from cli/cli-cmds.c.
2012-08-09gdb/Yao Qi4-10/+15
* cli/cli-dump.c: Add 'static' to some cmd_list_element variables. * gnu-nat.c, symfile.c: Likewise.
2012-08-09*** empty log message ***gdbadmin1-1/+1
2012-08-08 * utils.c (prompt_for_continue_wait_time): New static global.Doug Evans2-0/+47
(make_command_stats_cleanup): Initialize it. (report_command_stats): Subtract time waiting for user. (prompt_for_continue): Track time waiting for user. (defaulted_query): Track time waiting for user.
2012-08-08 * eval.c (evaluate_subexp_standard): Fix thinko in handlingDoug Evans8-11/+137
UNOP_MEMVAL_TYPE. * expprint.c (print_subexp_standard, case OP_TYPE): New. (print_subexp_standard, case UNOP_CAST_TYPE): Don't increment pos. (print_subexp_standard, case UNOP_DYNAMIC_CAST): Ditto. (print_subexp_standard, case UNOP_REINTERPRET_CAST): Ditto. (print_subexp_standard, case UNOP_MEMVAL_TYPE): Ditto. (dump_subexp_body_standard, case UNOP_DYNAMIC_CAST): Don't increment elt. (dump_subexp_body_standard, case UNOP_REINTERPRET_CAST): Ditto. (dump_subexp_body_standard, case UNOP_CAST_TYPE): Ditto. (dump_subexp_body_standard, case UNOP_MEMVAL_TYPE): Ditto. (dump_prefix_expression): Handle OP_TYPE. testsuite/ * gdb.base/debug-expr.c: New file. * gdb.base/debug-expr.exp: New file. * gdb.base/exprs.exp: Test {type} casts. * gdb.cp/debug-expr.exp: New file.
2012-08-08 * breakpoint.c (parse_breakpoint_sals): Remove unused variableKeith Seitz2-2/+5
addr_start.
2012-08-08 * gdb_string.h: Moved to ...Doug Evans10-57/+112
* common/gdb_string.h: ... here. * common/vec.h: Remove #ifndef GDBSERVER conditional inclusion of gdb_string.h and gdb_assert.h. gdbserver/ * configure.ac: Add check for strstr. * config.in: Regenerate. * configure: Regenerate. * linux-thread-db.c: #include "gdb_vecs.h". (try_thread_db_load_from_pdir_1): New arg "subdir". All callers updated. (try_thread_db_load_from_pdir): New arg "subdir". All callers updated. (thread_db_load_search): Use a vector to iterate over path elements. Handle text appearing after "$pdir". gdbserver/ * Makefile.in (SFILES): Add gdb_vecs.c. (OBS): Add gdb_vecs.o. (gdb_vecs_h, host_defs_h): New variables. (thread-db.o): Add $(gdb_vecs_h) dependency. (gdb_vecs.o): New rule. * thread-db.c: #include "gdb_vecs.h". (thread_db_load_search): Use a vector to iterate over path elements. Handle text appearing after "$pdir".
2012-08-08gdb/Yao Qi2-24/+7
* tic6x-tdep.c (tic6x_register_to_value): Remove. (tic6x_value_to_register): Likewise. (tic6x_gdbarch_init): Don't call set_gdbarch_register_to_value and set_gdbarch_value_to_register.
2012-08-08*** empty log message ***gdbadmin1-1/+1
2012-08-07gdb/testsuite/Jan Kratochvil2-2/+14
* gdb.base/valgrind-infcall.exp (continue #$continue_count): Use global variable loop, not a 'break'. Add loop count limit to 100. Add new fail case for terminated vgdb.
2012-08-07gdb/doc/Jan Kratochvil2-5/+11
* gdbint.texinfo (Debugging GDB): In section 'Debugging @value{GDBN} with itself' change .gdbinit for gdb-gdb.gdb. Mention also gdb-gdb.py.
2012-08-07gdb/Jan Kratochvil11-12/+219
PR 11804 * defs.h (find_memory_region_ftype): New comment. New arg modified. * fbsd-nat.c (fbsd_find_memory_regions): Add the passed modified value. * gcore.c (gcore_create_callback): New function comment. Add modified parameter. Only write modified regions. Set SEC_READONLY exactly according to MODIFIED. (objfile_find_memory_regions): Ignore separate debug info files. Ass the passed modified value to FUNC. * gnu-nat.c (gnu_find_memory_regions): Add the passed modified value. * linux-tdep.c (linux_find_memory_regions): Try to reads smaps file first. New variables modified and has_anonymous. Parse the lines of smaps file. Add the passed MODIFIED value to FUNC. * procfs.c (find_memory_regions_callback): Add the passed modified value. gdb/testsuite/ PR 11804 * gdb.base/gcore-relro.exp: New file. * gdb.base/gcore-relro-main.c: New file. * gdb.base/gcore-relro-lib.c: New file.
2012-08-07gdb/testsuite/Jan Kratochvil2-1/+27
Do not false FAIL with old GCCs. * gdb.base/watchpoint.exp (self-delete local watch) <$no_hw>: XFAIL for GCC < 4.5 in $no_hw mode.