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. 62261490a36c6911c5eb61be7cddcfb1bd19ba18


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  62261490a36c6911c5eb61be7cddcfb1bd19ba18 (commit)
      from  4d65956b033ebbbc965bac09c607c2300d9c2ea9 (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=62261490a36c6911c5eb61be7cddcfb1bd19ba18

commit 62261490a36c6911c5eb61be7cddcfb1bd19ba18
Author: Pedro Alves <palves@redhat.com>
Date:   Thu Jan 16 17:43:26 2014 +0000

    Fix gdb.trace/mi-traceframe-changed.exp on s390.
    
    The test fails on s390 with:
    
      -trace-find frame-number 0^M
      &"PC not available\n"^M
      ^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
      (gdb) ^M
      FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: -trace-find frame-number 0
    
    tfile knows to infer the PC from the tracepoint's address if the PC
    wasn't collected (tfile_fetch_registers) but, that only works on
    targets whose PC register is a raw register, and on s390, the PC
    register is a pseudo register.
    
    But even if GDB doesn't know how to infer the value of PC, saying the
    current frame is level -1 is a bug:
    
      ^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
                                                           ^^^^^^^^^
    
    '-1' is the level of the sentinel frame, which should never be visible.
    
    This is caused by the s390's heuristic unwinder accepting the frame
    (the fallback heuristic unwinders _always_ accept the frame), but then
    the unwind->this_id method throws that "PC not available\n" error.
    
    IOW, the s390's heuristic unwinder was never adjusted to handle
    unavailable register values gracefully, which can happen with e.g., a
    trimmed core file too.
    
    This is just the minimal necessary for
    <unavailable> frames, which at least gets us:
    
      (gdb) tfind
      Found trace frame 0, tracepoint 1
      #0  <unavailable> in ?? ()
    
    That is, frame #0 instead of -1.
    
    We could get better info out of "info frame" (this patch makes us show
    "outermost"), but this change would still be necessary.
    
    gdb/
    2014-01-16  Pedro Alves  <palves@redhat.com>
    
    	* s390-linux-tdep.c (s390_frame_unwind_cache): Swallow
    	NOT_AVAILABLE_ERROR errors while parsing the prologue or reading
    	the backchain.

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

Summary of changes:
 gdb/ChangeLog         |    6 ++++++
 gdb/s390-linux-tdep.c |   15 +++++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)


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]