[RFC] Win64 SEH support
Chris Lattner
clattner@apple.com
Sat Oct 23 14:56:00 GMT 2010
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>
More information about the Gcc-patches
mailing list