This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH/RFC] PR other/22313: Hot/cold sections vs. dwarf2 (take 2)
- From: Roger Sayle <roger at eyesopen dot com>
- To: David Daney <ddaney at avtrex dot com>
- Cc: gcc-patches at gcc dot gnu dot org, Jason Merrill <jason at redhat dot com>
- Date: Mon, 18 Sep 2006 13:37:48 -0600 (MDT)
- Subject: Re: [PATCH/RFC] PR other/22313: Hot/cold sections vs. dwarf2 (take 2)
Hi David,
On Mon, 18 Sep 2006, David Daney wrote:
> > 2006-08-31 Roger Sayle <roger@eyesopen.com>
> >
> > PR other/22313
> > * dwarf2out.c (add_fde_cfi): Use a set_loc if the current label is
> > NULL, otherwise use an advance_loc4 to adjust relative to the
> > current label.
> > (output_cfi) <DW_CFA_set_loc>: Update the current label.
> > (dwarf2out_switch_text_section): Reset the current label to avoid
> > using advance_loc4 over section boundaries.
> >
> >
>
> This breaks exception handling on mipsel-linux-gnu. I did a regression
> hunt and r116604 (this patch) fails, where as r116603 works.
>
> The problem is that with this patch applied the first instruction in a
> FDE is typically DW_CFA_set_loc, before the patch it was DW_CFA_advance_loc.
Grr! Thanks for tracking down the change that broke EH on MIPS!
I think I can provide a temporary work-around for this problem (to
resolve the immediate regression) by initializing the current label
to the start of the function. This'll mean that we'll resume using
advance_loc as the first instruction in the FDE. However, profiled
bootstrap and/or hot/cold partitioning will still continue to introduce
DW_CFA_set_loc, which presumably can't be handled by current binutils.
Not ideal, but it will restore libgcj whilst the necessary bintuils
functionality is added.
Sorry for the inconvenience,
Roger
--