unwind.h: Add include guards and don't mess with visibility if HIDE_EXPORTS is specified.
For GCC compatibility.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171991 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Headers/unwind.h b/lib/Headers/unwind.h
index 55ebd54..dbdbaf4 100644
--- a/lib/Headers/unwind.h
+++ b/lib/Headers/unwind.h
@@ -23,6 +23,9 @@
/* See "Data Definitions for libgcc_s" in the Linux Standard Base.*/
+#ifndef __CLANG_UNWIND_H
+#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,
@@ -59,7 +62,9 @@
/* It is a bit strange for a header to play with the visibility of the
symbols it declares, but this matches gcc's behavior and some programs
depend on it */
+#ifndef HIDE_EXPORTS
#pragma GCC visibility push(default)
+#endif
struct _Unwind_Context;
typedef enum {
@@ -115,10 +120,14 @@
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
+#endif
#ifdef __cplusplus
}
#endif
#endif
+
+#endif /* __CLANG_UNWIND_H */