This is the mail archive of the gcc-patches@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]

Re: [RFC] Win64 SEH support


Hi Richard,

Out of curiosity, how does this avoid the well-known SEH patents by borland and Microsoft?

-Chris

On Oct 22, 2010, at 7:49 PM, Richard Henderson <rth@redhat.com> wrote:

> This is a consolidated patch for the work I've been doing
> on a (git) branch for SEH support.  I've been intending to
> mash the branch patches together and separate them back
> out into logical units.  To some extent I've already begun
> that with some of the patches that have already been applied
> to mainline, however, I realize that I'm running out of time
> to officially submit this before the end of stage1.
> 
> Logically, there are 3 different portions in this patch:
> 
> (1) SEH unwind info generation,
> 
> (2) Changes to prologue/epilogue generation forced
>    by limitations in unwind info representation,
> 
> (3) SEH unwind runtime, and the symbol name changes
>    and preprocessor defines within the compiler to
>    support that.
> 
> I think the only real question that's open is if we should
> have a configure switch a-la --enable-sjlj-exceptions in
> order to switch between dwarf2 and seh based exceptions.
> 
> I personally don't think that's very useful.  The main
> reason to want to use the x64 seh unwind info is that it
> is supported by the object format and the system similar
> to how PT_GNU_FRAME is supported under ELF -- one no longer
> has to register and de-register eh_frame data during
> shared library load and unload.
> 
> Comments?
> 
> 
> r~
> 
> 
> 
> gcc/ada/raise-gcc.c                                    |   15
> gcc/config/i386/cygming.h                              |   40 +
> gcc/config/i386/i386-protos.h                          |   11
> gcc/config/i386/i386.c                                 |  197 ++++++
> gcc/config/i386/i386.h                                 |    9
> gcc/config/i386/i386.md                                |  115 +---
> gcc/config/i386/libgcc-cygming.ver                     |   28
> gcc/config/i386/t-cygming                              |    3
> gcc/config/i386/t-mingw-w64                            |    5
> gcc/config/i386/winnt.c                                |  460 ++++++++++++++++
> gcc/coretypes.h                                        |    3
> gcc/dwarf2out.c                                        |   10
> gcc/expr.c                                             |    3
> gcc/opts.c                                             |    6
> gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp |   12
> gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp |   11
> gcc/testsuite/lib/target-supports.exp                  |   11
> gcc/unwind-c.c                                         |   15
> gcc/unwind-seh.c                                       |  483 +++++++++++++++++
> gcc/unwind-seh.h                                       |  258 +++++++++
> libjava/exception.cc                                   |   20
> libjava/libgcj.ver                                     |    1
> libobjc/exception.c                                    |   15
> libstdc++-v3/config/abi/pre/gnu.ver                    |    1
> libstdc++-v3/libsupc++/eh_personality.cc               |   20
> 25 files changed, 1612 insertions(+), 140 deletions(-)
> 
> <d-seh-1>


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