mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
3d6eb7afcf
This fixed the MySQL bug# 20338 about misuse of double underscore prefix __WIN__, which was old MySQL's idea of identifying Windows Replace it by _WIN32 standard symbol for targeting Windows OS (both 32 and 64 bit) Not that connect storage engine is not fixed in this patch (must be fixed in "upstream" branch)
109 lines
3.1 KiB
C
109 lines
3.1 KiB
C
/*
|
|
Copyright (c) 2001, 2011, Oracle and/or its affiliates.
|
|
Copyright (c) 2020, MariaDB Corporation.
|
|
|
|
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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
|
|
|
|
#ifndef _my_stacktrace_h_
|
|
#define _my_stacktrace_h_
|
|
|
|
#ifdef TARGET_OS_LINUX
|
|
#if defined (__x86_64__) || defined (__i386__) || \
|
|
(defined(__alpha__) && defined(__GNUC__))
|
|
#define HAVE_STACKTRACE 1
|
|
#endif
|
|
#elif defined(_WIN32) || defined(HAVE_PRINTSTACK)
|
|
#define HAVE_STACKTRACE 1
|
|
#endif
|
|
|
|
#if HAVE_BACKTRACE && (HAVE_BACKTRACE_SYMBOLS || HAVE_BACKTRACE_SYMBOLS_FD)
|
|
#undef HAVE_STACKTRACE
|
|
#define HAVE_STACKTRACE 1
|
|
#endif
|
|
|
|
#define HAVE_WRITE_CORE
|
|
|
|
#if HAVE_BACKTRACE && HAVE_BACKTRACE_SYMBOLS && HAVE_ABI_CXA_DEMANGLE && \
|
|
HAVE_WEAK_SYMBOL
|
|
#define BACKTRACE_DEMANGLE 1
|
|
#endif
|
|
|
|
C_MODE_START
|
|
|
|
#if defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)
|
|
void my_print_stacktrace(uchar* stack_bottom, ulong thread_stack,
|
|
my_bool silent);
|
|
int my_safe_print_str(const char* val, size_t max_len);
|
|
void my_write_core(int sig);
|
|
# if BACKTRACE_DEMANGLE
|
|
char *my_demangle(const char *mangled_name, int *status);
|
|
# endif /* BACKTRACE_DEMANGLE */
|
|
# ifdef _WIN32
|
|
# define my_setup_stacktrace()
|
|
void my_set_exception_pointers(EXCEPTION_POINTERS *ep);
|
|
# else
|
|
void my_setup_stacktrace(void);
|
|
# endif /* _WIN32 */
|
|
#else
|
|
# define my_setup_stacktrace()
|
|
#endif /* ! (defined(HAVE_STACKTRACE) || defined(HAVE_BACKTRACE)) */
|
|
|
|
#ifndef _WIN32
|
|
#define MY_ADDR_RESOLVE_FORK
|
|
#endif
|
|
|
|
#if defined(HAVE_BFD_H) || defined(MY_ADDR_RESOLVE_FORK)
|
|
#define HAVE_MY_ADDR_RESOLVE 1
|
|
#endif
|
|
|
|
typedef struct {
|
|
const char *file;
|
|
const char *func;
|
|
uint line;
|
|
} my_addr_loc;
|
|
|
|
#ifdef HAVE_MY_ADDR_RESOLVE
|
|
int my_addr_resolve(void *ptr, my_addr_loc *loc);
|
|
const char *my_addr_resolve_init();
|
|
#else
|
|
#define my_addr_resolve_init() (0)
|
|
#define my_addr_resolve(A,B) (1)
|
|
#endif
|
|
|
|
#ifdef HAVE_WRITE_CORE
|
|
void my_write_core(int sig);
|
|
#endif
|
|
|
|
/**
|
|
A (very) limited version of snprintf, which writes the result to STDERR.
|
|
@sa my_safe_snprintf
|
|
Implemented with simplicity, and async-signal-safety in mind.
|
|
@note Has an internal buffer capacity of 512 bytes,
|
|
which should suffice for our signal handling routines.
|
|
*/
|
|
size_t my_safe_printf_stderr(const char* fmt, ...)
|
|
ATTRIBUTE_FORMAT(printf, 1, 2);
|
|
|
|
/**
|
|
Writes up to count bytes from buffer to STDERR.
|
|
Implemented with simplicity, and async-signal-safety in mind.
|
|
@param buf Buffer containing data to be written.
|
|
@param count Number of bytes to write.
|
|
@returns Number of bytes written.
|
|
*/
|
|
size_t my_write_stderr(const void *buf, size_t count);
|
|
|
|
C_MODE_END
|
|
|
|
#endif /* _my_stacktrace_h_ */
|