This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

gdb and binutils branch master updated. a25a5a45ef9340eb9a435f9b70599a90bb142658


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".

The branch, master has been updated
       via  a25a5a45ef9340eb9a435f9b70599a90bb142658 (commit)
       via  04086b458aebb38994486b09f4492645f03e971f (commit)
       via  447023601a12d18573ea6acf75a3778a55d809e1 (commit)
      from  c3eb94b43ee8cd748a3b03a5c3eed90f19e18a4b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=a25a5a45ef9340eb9a435f9b70599a90bb142658

commit a25a5a45ef9340eb9a435f9b70599a90bb142658
Author: Pedro Alves <palves@redhat.com>
Date:   Mon Sep 22 09:56:55 2014 +0100

    Fix "breakpoint always-inserted off"; remove "breakpoint always-inserted auto"
    
    By default, GDB removes all breakpoints from the target when the
    target stops and the prompt is given back to the user.  This is useful
    in case GDB crashes while the user is interacting, as otherwise,
    there's a higher chance breakpoints would be left planted on the
    target.
    
    But, as long as any thread is running free, we need to make sure to
    keep breakpoints inserted, lest a thread misses a breakpoint.  With
    that in mind, in preparation for non-stop mode, we added a "breakpoint
    always-inserted on" mode.  This traded off the extra crash protection
    for never having threads miss breakpoints, and in addition is more
    efficient if there's a ton of breakpoints to remove/insert at each
    user command (e.g., at each "step").
    
    When we added non-stop mode, and for a period, we required users to
    manually set "always-inserted on" when they enabled non-stop mode, as
    otherwise GDB removes all breakpoints from the target as soon as any
    thread stops, which means the other threads still running will miss
    breakpoints.  The test added by this patch exercises this.
    
    That soon revealed a nuisance, and so later we added an extra
    "breakpoint always-inserted auto" mode, that made GDB behave like
    "always-inserted on" when non-stop was enabled, and "always-inserted
    off" when non-stop was disabled.  "auto" was made the default at the
    same time.
    
    In hindsight, this "auto" setting was unnecessary, and not the ideal
    solution.  Non-stop mode does depends on breakpoints always-inserted
    mode, but only as long as any thread is running.  If no thread is
    running, no breakpoint can be missed.  The same is true for all-stop
    too.  E.g., if, in all-stop mode, and the user does:
    
     (gdb) c&
     (gdb) b foo
    
    That breakpoint at "foo" should be inserted immediately, but it
    currently isn't -- currently it'll end up inserted only if the target
    happens to trip on some event, and is re-resumed, e.g., an internal
    breakpoint triggers that doesn't cause a user-visible stop, and so we
    end up in keep_going calling insert_breakpoints.  The test added by
    this patch also covers this.
    
    IOW, no matter whether in non-stop or all-stop, if the target fully
    stops, we can remove breakpoints.  And no matter whether in all-stop
    or non-stop, if any thread is running in the target, then we need
    breakpoints to be immediately inserted.  And then, if the target has
    global breakpoints, we need to keep breakpoints even when the target
    is stopped.
    
    So with that in mind, and aiming at reducing all-stop vs non-stop
    differences for all-stop-on-stop-of-non-stop, this patch fixes
    "breakpoint always-inserted off" to not remove breakpoints from the
    target until it fully stops, and then removes the "auto" setting as
    unnecessary.  I propose removing it straight away rather than keeping
    it as an alias, unless someone complains they have scripts that need
    it and that can't adjust.
    
    Tested on x86_64 Fedora 20.
    
    gdb/
    2014-09-22  Pedro Alves  <palves@redhat.com>
    
    	* NEWS: Mention merge of "breakpoint always-inserted" modes "off"
    	and "auto" merged.
    	* breakpoint.c (enum ugll_insert_mode): New enum.
    	(always_inserted_mode): Now a plain boolean.
    	(show_always_inserted_mode): No longer handle AUTO_BOOLEAN_AUTO.
    	(breakpoints_always_inserted_mode): Delete.
    	(breakpoints_should_be_inserted_now): New function.
    	(insert_breakpoints): Pass UGLL_INSERT to
    	update_global_location_list instead of calling
    	insert_breakpoint_locations manually.
    	(create_solib_event_breakpoint_1): New, factored out from ...
    	(create_solib_event_breakpoint): ... this.
    	(create_and_insert_solib_event_breakpoint): Use
    	create_solib_event_breakpoint_1 instead of calling
    	insert_breakpoint_locations manually.
    	(update_global_location_list): Change parameter type from boolean
    	to enum ugll_insert_mode.  All callers adjusted.  Adjust to use
    	breakpoints_should_be_inserted_now and handle UGLL_INSERT.
    	(update_global_location_list_nothrow): Change parameter type from
    	boolean to enum ugll_insert_mode.
    	(_initialize_breakpoint): "breakpoint always-inserted" option is
    	now a boolean command.  Update help text.
    	* breakpoint.h (breakpoints_always_inserted_mode): Delete declaration.
    	(breakpoints_should_be_inserted_now): New declaration.
    	* infrun.c (handle_inferior_event) <TARGET_WAITKIND_LOADED>:
    	Remove breakpoints_always_inserted_mode check.
    	(normal_stop): Adjust to use breakpoints_should_be_inserted_now.
    	* remote.c (remote_start_remote): Likewise.
    
    gdb/doc/
    2014-09-22  Pedro Alves  <palves@redhat.com>
    
    	* gdb.texinfo (Set Breaks): Document that "set breakpoint
    	always-inserted off" is the default mode now.  Delete
    	documentation of "set breakpoint always-inserted auto".
    
    gdb/testsuite/
    2014-09-22  Pedro Alves  <palves@redhat.com>
    
    	* gdb.threads/break-while-running.exp: New file.
    	* gdb.threads/break-while-running.c: New file.

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=04086b458aebb38994486b09f4492645f03e971f

commit 04086b458aebb38994486b09f4492645f03e971f
Author: Pedro Alves <palves@redhat.com>
Date:   Mon Sep 22 09:56:55 2014 +0100

    Tell update_global_location_list to insert breakpoints
    
    This adds a new mode for update_global_location_list, that allows
    callers saying "please insert breakpoints, even if
    breakpoints_always_inserted_mode() is false".  This allows removing a
    couple breakpoints_always_inserted_mode checks.
    
    gdb/
    2014-09-22  Pedro Alves  <palves@redhat.com>
    
    	* breakpoint.c (enum ugll_insert_mode): Add UGLL_INSERT.
    	(insert_breakpoints): Don't call insert_breakpoint_locations here.
    	Instead, pass UGLL_INSERT to update_global_location_list.
    	(update_global_location_list): Change parameter type from boolean
    	to enum ugll_insert_mode.  All callers adjusted.  Adjust to use
    	breakpoints_should_be_inserted_now and handle UGLL_INSERT.
    	(create_solib_event_breakpoint_1): New, factored out from ...
    	(create_solib_event_breakpoint): ... this.
    	(create_and_insert_solib_event_breakpoint): Use
    	create_solib_event_breakpoint_1 instead of calling
    	insert_breakpoint_locations manually.
    	(update_global_location_list): Handle UGLL_INSERT.

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=447023601a12d18573ea6acf75a3778a55d809e1

commit 447023601a12d18573ea6acf75a3778a55d809e1
Author: Pedro Alves <palves@redhat.com>
Date:   Mon Sep 22 09:56:54 2014 +0100

    Change parameter type of update_global_location_list from boolean to enum
    
    Later we'll want a tristate, but for now, convert to an enum that maps 1-1
    with the current boolean's true/false.
    
    gdb/
    2014-09-22  Pedro Alves  <palves@redhat.com>
    
    	* breakpoint.c (enum ugll_insert_mode): New enum.
    	(update_global_location_list)
    	(update_global_location_list_nothrow): Change parameter type from
    	boolean to enum ugll_insert_mode.  All callers adjusted.

-----------------------------------------------------------------------

Summary of changes:
 gdb/ChangeLog                                     |   53 +++++
 gdb/NEWS                                          |    7 +
 gdb/breakpoint.c                                  |  241 +++++++++++++--------
 gdb/breakpoint.h                                  |    2 +-
 gdb/doc/ChangeLog                                 |    6 +
 gdb/doc/gdb.texinfo                               |   13 +-
 gdb/infrun.c                                      |    5 +-
 gdb/remote.c                                      |    5 +-
 gdb/testsuite/ChangeLog                           |    5 +
 gdb/testsuite/gdb.threads/break-while-running.c   |  101 +++++++++
 gdb/testsuite/gdb.threads/break-while-running.exp |  151 +++++++++++++
 11 files changed, 475 insertions(+), 114 deletions(-)
 create mode 100644 gdb/testsuite/gdb.threads/break-while-running.c
 create mode 100644 gdb/testsuite/gdb.threads/break-while-running.exp


hooks/post-receive
-- 
gdb and binutils


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]