This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


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

Re: Bug in Dwarf2 .debug_frame section [RE: Gcc 3.0 and ARM Stackfram e]


On Thu, Sep 27, 2001 at 04:46:42PM -0700, Fabrice Gautier wrote:
> Now i can generate the .debug_frame by a gross hack.

Bother.  This got fixed on mainline, but not the 3.0 branch.
Also, as Jason and I discussed a while back we should no longer
try to re-use .eh_frame as debug info, since it's now encoded
differently.

> Actually if you look at the way it is coded at the lowest level the offset
> shown here is calculated by (value coded) * (data align factor). You can see
> in the first line the data align factor is fffffffc (= -4) so when the debug
> info has been coded by gcc it had forgotten the "data align factor" in this
> case.

Incorrect.  While the language is unclear in the dwarf 2.0 text,
section 6.4.2/15 of the dwarf 2.1 draft explicitly says that the
value is not factored.


r~


	* dwarf2out.c (dwarf2out_frame_finish): Never elide .debug_frame
	in favour of .eh_frame; fix eh test wrt USING_SJLJ_EXCEPTIONS.

Index: dwarf2out.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/dwarf2out.c,v
retrieving revision 1.242.2.23
diff -c -p -d -r1.242.2.23 dwarf2out.c
*** dwarf2out.c	2001/09/10 18:29:37	1.242.2.23
--- dwarf2out.c	2001/09/28 00:09:50
*************** void
*** 2098,2113 ****
  dwarf2out_frame_finish ()
  {
    /* Output call frame information.  */
- #ifdef MIPS_DEBUGGING_INFO
    if (write_symbols == DWARF2_DEBUG)
      output_call_frame_info (0);
!   if (flag_unwind_tables || (flag_exceptions && ! USING_SJLJ_EXCEPTIONS))
!     output_call_frame_info (1);
! #else
!   if (write_symbols == DWARF2_DEBUG
!       || flag_unwind_tables || (flag_exceptions && ! USING_SJLJ_EXCEPTIONS))
      output_call_frame_info (1);
- #endif
  }
  
  /* And now, the subset of the debugging information support code necessary
--- 2098,2107 ----
  dwarf2out_frame_finish ()
  {
    /* Output call frame information.  */
    if (write_symbols == DWARF2_DEBUG)
      output_call_frame_info (0);
!   if (! USING_SJLJ_EXCEPTIONS && (flag_unwind_tables || flag_exceptions))
      output_call_frame_info (1);
  }
  
  /* And now, the subset of the debugging information support code necessary


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