summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2013-10-17 03:57:41 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2013-10-17 03:57:41 +0000
commit55410fff8e40daf9d08439b2eb8fd14c0e4f46fb (patch)
tree14ff42f01e02c305c9d808b9fa569b070bc712a8
parentb4d179cc4f15ba0220caf459e9a92017e45bd63d (diff)
downloadbcm5719-llvm-55410fff8e40daf9d08439b2eb8fd14c0e4f46fb.tar.gz
bcm5719-llvm-55410fff8e40daf9d08439b2eb8fd14c0e4f46fb.zip
unwinder: conditionalise availability
__attribute__ (( unavailable )) is for Apple specific builds. Create a macro to conditionalise the usage of the macro. This is to aid in porting the unwinder to other platforms. llvm-svn: 192868
-rw-r--r--libcxxabi/include/unwind.h24
1 files changed, 15 insertions, 9 deletions
diff --git a/libcxxabi/include/unwind.h b/libcxxabi/include/unwind.h
index bd791da92b8..4372dcadf80 100644
--- a/libcxxabi/include/unwind.h
+++ b/libcxxabi/include/unwind.h
@@ -17,6 +17,12 @@
#include <stdint.h>
#include <stddef.h>
+#if defined(__APPLE__)
+#define LIBUNWIND_AVAIL __attribute__ (( unavailable ))
+#else
+#define LIBUNWIND_AVAIL
+#endif
+
typedef enum {
_URC_NO_REASON = 0,
_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
@@ -181,28 +187,28 @@ extern void *_Unwind_FindEnclosingFunction(void *pc);
// Mac OS X does not support text-rel and data-rel addressing so these functions
// are unimplemented
extern uintptr_t _Unwind_GetDataRelBase(struct _Unwind_Context *context)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
extern uintptr_t _Unwind_GetTextRelBase(struct _Unwind_Context *context)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
// Mac OS X 10.4 and 10.5 had implementations of these functions in
// libgcc_s.dylib, but they never worked.
/// These functions are no longer available on Mac OS X.
extern void __register_frame_info_bases(const void *fde, void *ob, void *tb,
- void *db) __attribute__((unavailable));
+ void *db) LIBUNWIND_AVAIL;
extern void __register_frame_info(const void *fde, void *ob)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
extern void __register_frame_info_table_bases(const void *fde, void *ob,
void *tb, void *db)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
extern void __register_frame_info_table(const void *fde, void *ob)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
extern void __register_frame_table(const void *fde)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
extern void *__deregister_frame_info(const void *fde)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
extern void *__deregister_frame_info_bases(const void *fde)
- __attribute__((unavailable));
+ LIBUNWIND_AVAIL;
#ifdef __cplusplus
}
OpenPOWER on IntegriCloud