------- Comment #20 from rob1weld at aol dot com  2009-04-07 04:00 -------
(In reply to comment #8)
> Bug is not in an FSF-GCC supported port.
> Does the problem reproduce on supported targets?  Otherwise this bug 
> should be closed as "INVALID".

(In reply to comment #12)
>> As for the backend issue, may be it will show up on i386-unknown-freebsd
>> too (a primary platform), and there's a gcc/ada/system-freebsd-x86.ads 
>> in the FSF tree.
> Most probably not, you need FE SJLJ exceptions.


I did some studying ;) .


The "current" Docs do not show this info but 4.2.4 does.

These 'quotes' are derived from this URL:
http://gcc.gnu.org/onlinedocs/gcc-4.2.4/gnat_ugn_unw/Exception-Handling-Control.html

0. Any Target may be configured to use SJLJ.

1. GNAT uses two methods for handling exceptions at run-time. The 
setjmp/longjmp method and “zero cost” exception handling.

2. The setjmp/longjmp approach is available on all targets, while 
the zero cost approach is available on selected targets. With ZCX
to propagate an exception through a C/C++ code, the C/C++ code must
be compiled with the -funwind-tables GCC's option. 

3. To determine whether zero cost exceptions can be used for a particular
target, look at the private part of the file system.ads. Either 
GCC_ZCX_Support or Front_End_ZCX_Support must be True to use the zero 
cost approach. If both of these switches are set to False, this means 
that zero cost exception handling is not yet available for that target.


So ... Two strikes and your out:


# grep ZCX /mnt/drive2/gcc_trunk/gcc/ada/system* | grep False

/mnt/drive2/gcc_trunk/gcc/ada/system.ads:   ZCX_By_Default            :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system.ads:   GCC_ZCX_Support           :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system.ads:   Front_End_ZCX_Support     :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-aix.ads:   ZCX_By_Default            :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-hpux-ia64.ads:   ZCX_By_Default           
: constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-hpux-ia64.ads:   GCC_ZCX_Support          
: constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-alpha.ads:   Front_End_ZCX_Support  
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-mips.ads:   Front_End_ZCX_Support   
 : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-mipsel.ads:   Front_End_ZCX_Support 
   : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-s390.ads:   Front_End_ZCX_Support   
 : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-s390x.ads:   Front_End_ZCX_Support  
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-sparc.ads:   Front_End_ZCX_Support  
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-linux-sparcv9.ads:   Front_End_ZCX_Support
    : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-lynxos-ppc.ads:   ZCX_By_Default          
 : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-lynxos-ppc.ads:   GCC_ZCX_Support         
 : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-lynxos-x86.ads:   ZCX_By_Default          
 : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-lynxos-x86.ads:   GCC_ZCX_Support         
 : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-mingw.ads:   ZCX_By_Default            :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-rtems.ads:   ZCX_By_Default            :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vms.ads:   GCC_ZCX_Support           :
constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-arm.ads:   ZCX_By_Default         
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-arm.ads:   GCC_ZCX_Support        
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-m68k.ads:   ZCX_By_Default        
   : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-m68k.ads:   GCC_ZCX_Support       
   : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-mips.ads:   ZCX_By_Default        
   : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-mips.ads:   GCC_ZCX_Support       
   : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-ppc.ads:   ZCX_By_Default         
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-sparcv9.ads:   ZCX_By_Default     
      : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-sparcv9.ads:   GCC_ZCX_Support    
      : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-x86.ads:   ZCX_By_Default         
  : constant Boolean := False;
/mnt/drive2/gcc_trunk/gcc/ada/system-vxworks-x86.ads:   GCC_ZCX_Support        
  : constant Boolean := False;


It looks like this would affect: hpux-ia64, lynxos-ppc, lynxos-x86,
vxworks-arm, vxworks-m68k, vxworks-mips, vxworks-sparcv9 and vxworks-x86
with the "default" ./configure _AND_ every other Target _IF_ the Builder
chooses to use "--enable-sjlj-exceptions" (which is 'legal').


Is this the correct way to determine the answer to this issue ?
There are at lease eight Targets affected by default.


Someone else "confirmed" this on "i686-pc-cygwin". 

The "Component" and "Severity" keep changing (without anyone giving
a rationale or credit). Would someone (else) agree we are: 
confirmed, middle-end (or is it Ada), and blocker. 

Thanks, one and all,
Rob


-- 


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

Reply via email to