<div dir="ltr">Hi!<div><br></div><div>This is causing Android build failures on our bot:</div><div><br></div><div><div>[  0%] Building CXX object projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.arm.android.dir/sanitizer_posix.cc.o</div>
<div>In file included from /build/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc:43:</div><div>/build/llvm_build64/bin/../lib/clang/3.4/include/unwind.h:71:19: error: typedef redefinition with different types ('uintptr_t' (aka 'unsigned int') vs 'unsigned long *')</div>
<div>typedef uintptr_t _Unwind_Ptr;</div><div>                  ^</div><div>/build/../../../android-ndk/standalone/sysroot/usr/include/link.h:47:28: note: previous definition is here</div><div>typedef long unsigned int* _Unwind_Ptr;</div>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 29, 2013 at 3:16 AM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: pcc<br>
Date: Wed Aug 28 18:16:49 2013<br>
New Revision: 189535<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=189535&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=189535&view=rev</a><br>
Log:<br>
Add missing definitions to unwind.h.<br>
<br>
Original patch by Charles Davis.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Headers/unwind.h<br>
    cfe/trunk/test/Headers/Inputs/include/stdint.h<br>
<br>
Modified: cfe/trunk/lib/Headers/unwind.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/unwind.h?rev=189535&r1=189534&r2=189535&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/unwind.h?rev=189535&r1=189534&r2=189535&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Headers/unwind.h (original)<br>
+++ cfe/trunk/lib/Headers/unwind.h Wed Aug 28 18:16:49 2013<br>
@@ -27,8 +27,8 @@<br>
 #define __CLANG_UNWIND_H<br>
<br>
 #if __has_include_next(<unwind.h>)<br>
-/* Darwin and libunwind provide an unwind.h. If that's available, use<br>
- * it. libunwind wraps some of its definitions in #ifdef _GNU_SOURCE,<br>
+/* Darwin (from 11.x on) and libunwind provide an unwind.h. If that's available,<br>
+ * use it. libunwind wraps some of its definitions in #ifdef _GNU_SOURCE,<br>
  * so define that around the include.*/<br>
 # ifndef _GNU_SOURCE<br>
 #  define _SHOULD_UNDEFINE_GNU_SOURCE<br>
@@ -66,7 +66,14 @@ extern "C" {<br>
 #pragma GCC visibility push(default)<br>
 #endif<br>
<br>
+typedef uintptr_t _Unwind_Word;<br>
+typedef intptr_t _Unwind_Sword;<br>
+typedef uintptr_t _Unwind_Ptr;<br>
+typedef uintptr_t _Unwind_Internal_Ptr;<br>
+typedef uint64_t _Unwind_Exception_Class;<br>
+<br>
 struct _Unwind_Context;<br>
+struct _Unwind_Exception;<br>
 typedef enum {<br>
   _URC_NO_REASON = 0,<br>
   _URC_FOREIGN_EXCEPTION_CAUGHT = 1,<br>
@@ -81,6 +88,41 @@ typedef enum {<br>
   _URC_CONTINUE_UNWIND = 8<br>
 } _Unwind_Reason_Code;<br>
<br>
+typedef enum {<br>
+  _UA_SEARCH_PHASE = 1,<br>
+  _UA_CLEANUP_PHASE = 2,<br>
+<br>
+  _UA_HANDLER_FRAME = 4,<br>
+  _UA_FORCE_UNWIND = 8,<br>
+  _UA_END_OF_STACK = 16 /* gcc extension to C++ ABI */<br>
+} _Unwind_Action;<br>
+<br>
+typedef void (*_Unwind_Exception_Cleanup_Fn)(_Unwind_Reason_Code,<br>
+                                             struct _Unwind_Exception *);<br>
+<br>
+struct _Unwind_Exception {<br>
+  _Unwind_Exception_Class exception_class;<br>
+  _Unwind_Exception_Cleanup_Fn exception_cleanup;<br>
+  _Unwind_Word private_1;<br>
+  _Unwind_Word private_2;<br>
+  /* The Itanium ABI requires that _Unwind_Exception objects are "double-word<br>
+   * aligned".  GCC has interpreted this to mean "use the maximum useful<br>
+   * alignment for the target"; so do we. */<br>
+} __attribute__((__aligned__));<br>
+<br>
+typedef _Unwind_Reason_Code (*_Unwind_Stop_Fn)(int, _Unwind_Action,<br>
+                                               _Unwind_Exception_Class,<br>
+                                               struct _Unwind_Exception *,<br>
+                                               struct _Unwind_Context *,<br>
+                                               void *);<br>
+<br>
+typedef _Unwind_Reason_Code (*_Unwind_Personality_Fn)(int, _Unwind_Action,<br>
+                                                      _Unwind_Exception_Class,<br>
+                                                      struct _Unwind_Exception *,<br>
+                                                      struct _Unwind_Context *);<br>
+typedef _Unwind_Personality_Fn __personality_routine;<br>
+<br>
+typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *, void *);<br>
<br>
 #ifdef __arm__<br>
<br>
@@ -111,14 +153,81 @@ _Unwind_VRS_Result _Unwind_VRS_Get(struc<br>
   _Unwind_VRS_DataRepresentation __representation,<br>
   void *__valuep);<br>
<br>
+#endif<br>
+<br>
+_Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int);<br>
+void _Unwind_SetGR(struct _Unwind_Context *, int, _Unwind_Word);<br>
+<br>
+_Unwind_Word _Unwind_GetIP(struct _Unwind_Context *);<br>
+_Unwind_Word _Unwind_GetIPInfo(struct _Unwind_Context *, int *);<br>
+void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Word);<br>
+<br>
+_Unwind_Word _Unwind_GetCFA(struct _Unwind_Context *);<br>
+<br>
+void *_Unwind_GetLanguageSpecificData(struct _Unwind_Context *);<br>
+<br>
+_Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *);<br>
+<br>
+/* DWARF EH functions; currently not available on Darwin/ARM */<br>
+#if !defined(__APPLE__) || !defined(__arm__)<br>
+<br>
+_Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception *);<br>
+_Unwind_Reason_Code _Unwind_ForcedUnwind(struct _Unwind_Exception *, _Unwind_Stop_Fn,<br>
+                                         void *);<br>
+void _Unwind_DeleteException(struct _Unwind_Exception *);<br>
+void _Unwind_Resume(struct _Unwind_Exception *);<br>
+_Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct _Unwind_Exception *);<br>
+<br>
+#endif<br>
+<br>
+_Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *);<br>
+<br>
+/* setjmp(3)/longjmp(3) stuff */<br>
+typedef struct SjLj_Function_Context *_Unwind_FunctionContext_t;<br>
+<br>
+void _Unwind_SjLj_Register(_Unwind_FunctionContext_t);<br>
+void _Unwind_SjLj_Unregister(_Unwind_FunctionContext_t);<br>
+_Unwind_Reason_Code _Unwind_SjLj_RaiseException(struct _Unwind_Exception *);<br>
+_Unwind_Reason_Code _Unwind_SjLj_ForcedUnwind(struct _Unwind_Exception *, _Unwind_Stop_Fn,<br>
+                                         void *);<br>
+void _Unwind_SjLj_Resume(struct _Unwind_Exception *);<br>
+_Unwind_Reason_Code _Unwind_SjLj_Resume_or_Rethrow(struct _Unwind_Exception *);<br>
+<br>
+void *_Unwind_FindEnclosingFunction(void *);<br>
+<br>
+#ifdef __APPLE__<br>
+<br>
+_Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *) __attribute__((unavailable));<br>
+_Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *) __attribute__((unavailable));<br>
+<br>
+/* Darwin-specific functions */<br>
+void __register_frame(const void *);<br>
+void __deregister_frame(const void *);<br>
+<br>
+struct dwarf_eh_bases {<br>
+  uintptr_t tbase;<br>
+  uintptr_t dbase;<br>
+  uintptr_t func;<br>
+};<br>
+void *_Unwind_Find_FDE(const void *, struct dwarf_eh_bases *);<br>
+<br>
+void __register_frame_info_bases(const void *, void *, void *, void *)<br>
+  __attribute__((unavailable));<br>
+void __register_frame_info(const void *, void *) __attribute__((unavailable));<br>
+void __register_frame_info_table_bases(const void *, void*, void *, void *)<br>
+  __attribute__((unavailable));<br>
+void __register_frame_info_table(const void *, void *) __attribute__((unavailable));<br>
+void __register_frame_table(const void *) __attribute__((unavailable));<br>
+void __deregister_frame_info(const void *) __attribute__((unavailable));<br>
+void __deregister_frame_info_bases(const void *)__attribute__((unavailable));<br>
+<br>
 #else<br>
<br>
-uintptr_t _Unwind_GetIP(struct _Unwind_Context* __context);<br>
+_Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *);<br>
+_Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *);<br>
<br>
 #endif<br>
<br>
-typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context*, void*);<br>
-_Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void*);<br>
<br>
 #ifndef HIDE_EXPORTS<br>
 #pragma GCC visibility pop<br>
<br>
Modified: cfe/trunk/test/Headers/Inputs/include/stdint.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/Inputs/include/stdint.h?rev=189535&r1=189534&r2=189535&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Headers/Inputs/include/stdint.h?rev=189535&r1=189534&r2=189535&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/Headers/Inputs/include/stdint.h (original)<br>
+++ cfe/trunk/test/Headers/Inputs/include/stdint.h Wed Aug 28 18:16:49 2013<br>
@@ -10,6 +10,7 @@ typedef unsigned __INT64_TYPE__ uint64_t<br>
 #endif<br>
<br>
 #ifdef __INTPTR_TYPE__<br>
+typedef __INTPTR_TYPE__ intptr_t;<br>
 typedef unsigned __INTPTR_TYPE__ uintptr_t;<br>
 #else<br>
 #error Every target should have __INTPTR_TYPE__<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Alexey Samsonov, MSK</div>
</div>