[llvm-commits] [llvm-gcc-4.2] r44975 - in /llvm-gcc-4.2/trunk/gcc: config/darwin.h except.c unwind-dw2.c

Dale Johannesen dalej at apple.com
Wed Dec 12 17:51:56 PST 2007


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 */
 }
 
 





More information about the llvm-commits mailing list