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. b67a2c6fd4862b79c04c254fe2ba37c180b73d60


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  b67a2c6fd4862b79c04c254fe2ba37c180b73d60 (commit)
      from  9393ab1c00601a01ec25bbe0d8dc8430f62c9c13 (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=b67a2c6fd4862b79c04c254fe2ba37c180b73d60

commit b67a2c6fd4862b79c04c254fe2ba37c180b73d60
Author: Yao Qi <yao@codesourcery.com>
Date:   Wed Jun 25 11:52:52 2014 +0800

    Associate dummy_frame with ptid
    
    This patch is to add ptid into dummy_frame and extend frame_id to
    dummy_frame_id (which has a ptid field).  With this change, GDB uses
    dummy_frame_id (thread ptid and frame_id) to find the dummy frames.
    
    Currently, dummy frames are looked up by frame_id, which isn't
    accurate in non-stop or multi-process mode.  The test case
    gdb.multi/dummy-frame-restore.exp shows the problem and this patch can
    fix it.
    
    Test dummy-frame-restore.exp makes two inferiors stop at
    different functions, say, inferior 1 stops at f1 while inferior 2
    stops at f2.  Set a breakpoint to a function, do the inferior call
    in two inferiors, and GDB has two dummy frames of the same frame_id.
    When the inferior call is finished, GDB will look up a dummy frame
    from its stack/list and restore the inferior's regcache.  Two
    inferiors are finished in different orders, the inferiors' states are
    restored differently, which is wrong.  Running dummy-frame-restore.exp
    under un-patched GDB, we'll get two fails:
    
    FAIL: gdb.multi/dummy-frame-restore.exp: inf 2 first: after infcall: bt in inferior 2
    FAIL: gdb.multi/dummy-frame-restore.exp: inf 2 first: after infcall: bt in inferior 1
    
    With this patch applied, GDB will choose the correct dummy_frame to
    restore for a given inferior, because ptid is considered when looking up
    dummy frames.  Two fails above are fixed.
    
    Regression tested on x86_64-linux, both native and gdbserver.
    
    gdb:
    
    2014-06-27  Yao Qi  <yao@codesourcery.com>
    
    	* breakpoint.c (check_longjmp_breakpoint_for_call_dummy):
    	Change parameter type to 'struct thread_info *'.  Caller
    	updated.
    	* breakpoint.h (check_longjmp_breakpoint_for_call_dummy):
    	Update declaration.
    	* dummy-frame.c (struct dummy_frame_id): New.
    	(dummy_frame_id_eq): New function.
    	(struct dummy_frame) <id>: Change its type to 'struct
    	dummy_frame_id'.
    	(dummy_frame_push): Add parameter ptid and save it in
    	dummy_frame_id.
    	(pop_dummy_frame_bpt): Use ptid of dummy_frame instead of
    	inferior_ptid.
    	(pop_dummy_frame): Assert that the ptid of dummy_frame equals
    	to inferior_ptid.
    	(lookup_dummy_frame): Change parameter type to 'struct
    	dummy_frame_id *'.  Callers updated.  Call dummy_frame_id_eq
    	instead of frame_id_eq.
    	(dummy_frame_pop): Add parameter ptid.  Callers updated.
    	Update comments.  Compose dummy_frame_id and pass it to
    	lookup_dummy_frame.
    	(dummy_frame_discard): Add parameter ptid.
    	(dummy_frame_sniffer): Compose dummy_frame_id and call
    	dummy_frame_id_eq instead of frame_id_eq.
    	(fprint_dummy_frames): Print ptid.
    	* dummy-frame.h: Remove comments.
    	(dummy_frame_push): Add ptid in declaration.
    	(dummy_frame_pop, dummy_frame_discard): Likewise.
    
    gdb/testsuite:
    
    2014-06-27  Yao Qi  <yao@codesourcery.com>
    
    	* gdb.multi/dummy-frame-restore.exp: New.
    	* gdb.multi/dummy-frame-restore.c: New.
    
    gdb/doc:
    
    2014-06-27  Yao Qi  <yao@codesourcery.com>
    
    	* gdb.texinfo (Maintenance Commands): Update the output of
    	'maint print dummy-frames' command.

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

Summary of changes:
 gdb/ChangeLog                                   |   31 +++++++
 gdb/breakpoint.c                                |    8 +-
 gdb/breakpoint.h                                |    2 +-
 gdb/doc/ChangeLog                               |    5 +
 gdb/doc/gdb.texinfo                             |    4 +-
 gdb/dummy-frame.c                               |   72 +++++++++++------
 gdb/dummy-frame.h                               |   11 +--
 gdb/frame.c                                     |    2 +-
 gdb/infcall.c                                   |    6 +-
 gdb/infrun.c                                    |    2 +-
 gdb/testsuite/ChangeLog                         |    5 +
 gdb/testsuite/gdb.multi/dummy-frame-restore.c   |   36 +++++++++
 gdb/testsuite/gdb.multi/dummy-frame-restore.exp |   97 +++++++++++++++++++++++
 13 files changed, 236 insertions(+), 45 deletions(-)
 create mode 100644 gdb/testsuite/gdb.multi/dummy-frame-restore.c
 create mode 100644 gdb/testsuite/gdb.multi/dummy-frame-restore.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]