This is the mail archive of the gcc-bugs@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]
Other format: [Raw text]

[Bug debug/29132] [4.1/4.2 Regression] Mips exception handling broken.



------- Comment #4 from ddaney at avtrex dot com  2006-09-18 21:59 -------
Subject: Re:  [4.2 Regression] Mips exception handling broken.

roger at eyesopen dot com wrote:
> ------- Comment #1 from roger at eyesopen dot com  2006-09-18 21:27 -------
> Hi David,
> 
> I was wondering if you have a MIPS tree handy, whether you could easily
> test the following single line patch:
> 
> Index: dwarf2out.c
> ===================================================================
> *** dwarf2out.c (revision 117035)
> --- dwarf2out.c (working copy)
> *************** dwarf2out_begin_prologue (unsigned int l
> *** 2572,2578 ****
>     fde = &fde_table[fde_table_in_use++];
>     fde->decl = current_function_decl;
>     fde->dw_fde_begin = dup_label;
> !   fde->dw_fde_current_label = NULL;
>     fde->dw_fde_hot_section_label = NULL;
>     fde->dw_fde_hot_section_end_label = NULL;
>     fde->dw_fde_unlikely_section_label = NULL;
> --- 2572,2578 ----
>     fde = &fde_table[fde_table_in_use++];
>     fde->decl = current_function_decl;
>     fde->dw_fde_begin = dup_label;
> !   fde->dw_fde_current_label = dup_label;
>     fde->dw_fde_hot_section_label = NULL;
>     fde->dw_fde_hot_section_end_label = NULL;
>     fde->dw_fde_unlikely_section_label = NULL;
> 
> Due to all the abstraction with debugging formats, its difficult to tell the
> order in which things get executed, and whether this initial value for
> dw_fde_current_label survives long enough to avoid use of a set_loc.
> 
> Many thanks in advance,
> 

Preliminary results using: readelf --debug-dump=frames libstdc++.so show 
that this patch is working.

I now get:

00000064 00000024 00000068 FDE cie=00000000 pc=0003ed40..0003eed4
   Augmentation data:     00 00 00 00

   DW_CFA_advance_loc: 16 to 0003ed50
   DW_CFA_def_cfa_offset: 48
   DW_CFA_advance_loc: 24 to 0003ed68
   DW_CFA_offset: r16 at cfa-24
   DW_CFA_offset: r17 at cfa-20
   DW_CFA_offset: r18 at cfa-16
   DW_CFA_offset: r19 at cfa-12
   DW_CFA_offset: r20 at cfa-8


Both addresses shown for DW_CFA_advance_loc are within the range of PC 
for the FDE.  It will take (a lot) more time to see if the code actually 
works on my test platform, but it looks good to me so far.

David Daney.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29132


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