This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Bug in Dwarf2 .debug_frame section [RE: Gcc 3.0 and ARM Stackfram e]
- To: Fabrice Gautier <Fabrice_Gautier at sdesigns dot com>
- Subject: Re: Bug in Dwarf2 .debug_frame section [RE: Gcc 3.0 and ARM Stackfram e]
- From: Richard Henderson <rth at redhat dot com>
- Date: Thu, 27 Sep 2001 17:19:45 -0700
- Cc: "'gcc at gcc dot gnu dot org'" <gcc at gcc dot gnu dot org>
- References: <B1F6452C89AFD411AE0800A0CC734C230150E4@EMAIL1>
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