smeenai added a comment. In https://reviews.llvm.org/D47233#1129810, @DHowett-MSFT wrote:
> In https://reviews.llvm.org/D47233#1129207, @rjmccall wrote: > > > In https://reviews.llvm.org/D47233#1129110, @smeenai wrote: > > > > > WinObjC does this wrapping, for example. > > > > > > I see. The idea of creating the type descriptors and mangled names ad-hoc > > for the catchable-types array is clever, and it's nice that the ABI is > > defined in a way that makes that work. (Expensive, but hey, it's the > > exceptions path.) > > > We ran into some critical issues with this approach on x64. The pointers in > the exception record are supposed to be image-relative instead of absolute, > so I tried to make them absolute to libobjc2's load address, but I never > quite solved it. > > A slightly better-documented and cleaner version of the code you linked is > here > <https://github.com/Microsoft/libobjc2/blob/upstream-staging/eh_win32_msvc.cc>. We solved the x64 issue by just calling RaiseException directly and supplying a fake ImageBase. It's a bit kludgy, but it works well. (_CxxThrowException's source is included with MSVC, so we just looked at how that was calling RaiseException and altered it accordingly.) Repository: rC Clang https://reviews.llvm.org/D47233 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits