r189535 - Add missing definitions to unwind.h.

Alexey Samsonov samsonov at google.com
Thu Aug 29 01:57:31 PDT 2013


Hi!

This is causing Android build failures on our bot:

[  0%] Building CXX object
projects/compiler-rt/lib/sanitizer_common/CMakeFiles/RTSanitizerCommon.arm.android.dir/sanitizer_posix.cc.o
In file included from
/build/llvm/projects/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc:43:
/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 *')
typedef uintptr_t _Unwind_Ptr;
                  ^
/build/../../../android-ndk/standalone/sysroot/usr/include/link.h:47:28:
note: previous definition is here
typedef long unsigned int* _Unwind_Ptr;


On Thu, Aug 29, 2013 at 3:16 AM, Peter Collingbourne <peter at pcc.me.uk>wrote:

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



-- 
Alexey Samsonov, MSK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130829/45fe8eb4/attachment.html>


More information about the cfe-commits mailing list