summaryrefslogtreecommitdiff
path: root/include/my_stacktrace.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/my_stacktrace.h')
-rw-r--r--include/my_stacktrace.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/my_stacktrace.h b/include/my_stacktrace.h
new file mode 100644
index 00000000000..3d51ba92ee1
--- /dev/null
+++ b/include/my_stacktrace.h
@@ -0,0 +1,61 @@
+/* Copyright (C) 2000 MySQL AB
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
+
+#ifndef _my_stacktrace_h_
+#define _my_stacktrace_h_
+
+#include <my_global.h>
+
+#ifdef TARGET_OS_LINUX
+#if defined (__x86_64__) || defined (__i386__) || \
+ (defined(__alpha__) && defined(__GNUC__))
+#define HAVE_STACKTRACE 1
+#endif
+#elif defined(__WIN__)
+#define HAVE_STACKTRACE 1
+#endif
+
+#if !defined(__NETWARE__)
+#define HAVE_WRITE_CORE
+#endif
+
+#if HAVE_BACKTRACE && HAVE_BACKTRACE_SYMBOLS && \
+ HAVE_CXXABI_H && HAVE_ABI_CXA_DEMANGLE && \
+ HAVE_WEAK_SYMBOL
+#define BACKTRACE_DEMANGLE 1
+#endif
+
+C_MODE_START
+
+#if defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)
+void my_init_stacktrace();
+void my_print_stacktrace(uchar* stack_bottom, ulong thread_stack);
+void my_safe_print_str(const char* name, const char* val, int max_len);
+void my_write_core(int sig);
+#if BACKTRACE_DEMANGLE
+char *my_demangle(const char *mangled_name, int *status);
+#endif
+#ifdef __WIN__
+void my_set_exception_pointers(EXCEPTION_POINTERS *ep);
+#endif
+#endif
+
+#ifdef HAVE_WRITE_CORE
+void my_write_core(int sig);
+#endif
+
+C_MODE_END
+
+#endif /* _my_stacktrace_h_ */