From: Brendon C. <bc...@av...> - 2005-03-18 01:47:14
|
Hi, I am writing some code in C++, and i have come across a problem under windows where it seems that windows is throwing a structured exception. I have read a little bit about windows structured exceptions and have decided that the best method to use to overcome my problem is to register a structured exception handler/converter that allows for me to convert the structured windows exceptions into standard C++ exceptions. The problem is that in MSYS/MinGW, there seems to be no "eh.h" header file which has the declarations required. I need to use a function called "_set_se_translator()" but it does not exist as of yet. The version of MSYS/MinGW i am using is: MinGW-3.1.0-1 MSYS-1.0.10 Is there any way i can use this structured exception translator method in MSYS/MinGW? If not what would need to be done to add support for this? Thanks, Brendon. |
From: John G. <jo...@jo...> - 2005-03-18 03:26:56
|
Brendon Costa wrote: > Is there any way i can use this structured exception translator > method in MSYS/MinGW? If not what would need to be done to add > support for this? Structured exceptions are a Microsoft proprietary extension to the C language and only work with their compiler as far as I know. Odds are slim that MinGW will ever support this extension. Could you please post a minimal code example that illustrates what you are doing to trigger a structured exception? I have never heard of Windows itself throwing one to a user application. -- John Gaughan http://www.johngaughan.net/ jo...@jo... |
From: Aaron W. L. <aar...@aa...> - 2005-03-18 05:39:59
|
John Gaughan wrote: > Brendon Costa wrote: > >>Is there any way i can use this structured exception translator >>method in MSYS/MinGW? If not what would need to be done to add >>support for this? > > Structured exceptions are a Microsoft proprietary extension to the C > language and only work with their compiler as far as I know. Odds are > slim that MinGW will ever support this extension. MinGW supports SEH in the excpt.h header, which is Microsoft-compatible. Someone wrote some patches to GCC for it to generate SEH frames, but I'm not sure what happened to this. I don't know anything about eh.h though. Anyway, for catching SEH exceptions on the current MinGW tools, you want to use <excpt.h>. Aaron W. LaFramboise |
From: Jonathan W. <jo...@tp...> - 2005-03-18 13:22:15
|
I dont remember exactly what happened but I remember someone (connected with the ReactOS project?) stating that the microsoft implementation of SEH or some aspect of it was Patented and that said patent was a problem for implementing a 100% MS compatible implementation of SEH for ReactOS. |
From: John G. <jo...@jo...> - 2005-03-18 16:52:28
|
Aaron W. LaFramboise wrote: > MinGW supports SEH in the excpt.h header, which is > Microsoft-compatible. Someone wrote some patches to GCC for it to > generate SEH frames, but I'm not sure what happened to this. I don't > know anything about eh.h though. I guess I learn something new every day. Thank you, sir. -- John Gaughan http://www.johngaughan.net/ jo...@jo... |
From: Brendon C. <bc...@av...> - 2005-03-20 22:07:34
|
Aaron W. LaFramboise wrote: >John Gaughan wrote: > > >>Brendon Costa wrote: >> >> >> >>>Is there any way i can use this structured exception translator >>>method in MSYS/MinGW? If not what would need to be done to add >>>support for this? >>> >>> >>Structured exceptions are a Microsoft proprietary extension to the C >>language and only work with their compiler as far as I know. Odds are >>slim that MinGW will ever support this extension. >> >> > >MinGW supports SEH in the excpt.h header, which is Microsoft-compatible. > Someone wrote some patches to GCC for it to generate SEH frames, but >I'm not sure what happened to this. I don't know anything about eh.h >though. > >Anyway, for catching SEH exceptions on the current MinGW tools, you want >to use <excpt.h>. > > >Aaron W. LaFramboise > > I had a look in this header, it seems that there are defines for __try1 and __except1 but not __finally and __leave. I am not overly worried about those structured exception handling statements. I read in a book (Debugging Windows Programs, Everett N McKay & Mike Woodring) that you can register a handler for any structured exceptions that are generated for your program. When one is generated, it will call this handler. The idea of the handler is that you can use the throw keyword in it and so whenever a structured exception is generated, the handler will eat the structured exception event and generate a C++ exception to replace that structured exception. This uses a method called: __set_se_translator() to register a new structured exception handler. By doing this there should be no reason to use the __try, __exception clauses in your code. Instead you can just use the standard try and catch of C++. Anyhow, i guess it is not supported by MinGW. Thanks for the replies. Brendon. |