Author: johannes Date: Wed Dec 12 19:51:55 2007 New Revision: 44975 URL: http://llvm.org/viewvc/llvm-project?rev=44975&view=rev Log: Use Unwind_Resume_or_Rethrow instead of Unwind_Resume for Darwin stack unwind.
Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h llvm-gcc-4.2/trunk/gcc/except.c llvm-gcc-4.2/trunk/gcc/unwind-dw2.c Modified: llvm-gcc-4.2/trunk/gcc/config/darwin.h URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/config/darwin.h?rev=44975&r1=44974&r2=44975&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/config/darwin.h (original) +++ llvm-gcc-4.2/trunk/gcc/config/darwin.h Wed Dec 12 19:51:55 2007 @@ -1277,6 +1277,10 @@ else if (!MACHO_DYNAMIC_NO_PIC_P) \ argvec.push_back ("--relocation-model=static") #endif /* defined (TARGET_386) */ + +/* On Darwin _Unwind_Resume is sensitive to the dynamic stack layout; we + use _Unwind_Resume_or_Rethrow instead. */ +#define LLVM_STACKSENSITIVE_UNWIND_RESUME 1 #endif /* LLVM LOCAL end */ Modified: llvm-gcc-4.2/trunk/gcc/except.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/except.c?rev=44975&r1=44974&r2=44975&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/except.c (original) +++ llvm-gcc-4.2/trunk/gcc/except.c Wed Dec 12 19:51:55 2007 @@ -4054,8 +4054,12 @@ /* The default c++ routines aren't actually c++ specific, so use those. */ /* LLVM local begin */ llvm_unwind_resume_libfunc = llvm_init_one_libfunc ( USING_SJLJ_EXCEPTIONS ? - "_Unwind_SjLj_Resume" - : "_Unwind_Resume"); + "_Unwind_SjLj_Resume" +#ifdef LLVM_STACKSENSITIVE_UNWIND_RESUME + : "_Unwind_Resume_or_Rethrow"); +#else + : "_Unwind_Resume"); +#endif /* LLVM local end */ } Modified: llvm-gcc-4.2/trunk/gcc/unwind-dw2.c URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/unwind-dw2.c?rev=44975&r1=44974&r2=44975&view=diff ============================================================================== --- llvm-gcc-4.2/trunk/gcc/unwind-dw2.c (original) +++ llvm-gcc-4.2/trunk/gcc/unwind-dw2.c Wed Dec 12 19:51:55 2007 @@ -1511,7 +1511,14 @@ static inline _Unwind_Ptr uw_identify_context (struct _Unwind_Context *context) { +/* LLVM LOCAL begin + This change is needed to match Apple's installed libgcc. */ +#ifdef LLVM_STACKSENSITIVE_UNWIND_RESUME + return _Unwind_GetCFA (context); +#else return _Unwind_GetIP (context); +#endif +/* LLVM LOCAL end */ } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits