~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/stacktrace.h

pandora-build v0.72 - Moved remaining hard-coded tests into pandora-build
macros.
Add PANDORA_DRIZZLE_BUILD to run the extra checks that drizzle needs that 
plugins would also need to run so we can just use that macro in generated
external plugin builds.
Added support to register_plugins for external plugin building.
Renamed register_plugins.py to pandora-plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2000 MySQL AB
2
 
 
3
 
   This program is free software; you can redistribute it and/or modify
4
 
   it under the terms of the GNU General Public License as published by
5
 
   the Free Software Foundation; version 2 of the License.
6
 
 
7
 
   This program is distributed in the hope that it will be useful,
8
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 
   GNU General Public License for more details.
11
 
 
12
 
   You should have received a copy of the GNU General Public License
13
 
   along with this program; if not, write to the Free Software
14
 
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
 
 
16
 
#include "global.h"
17
 
 
18
 
#ifdef  __cplusplus
 
1
/* -*- mode: c; c-basic-offset: 2; indent-tabs-mode: nil; -*-
 
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
 *
 
4
 *  Copyright (C) 2008 Sun Microsystems
 
5
 *
 
6
 *  This program is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; version 2 of the License.
 
9
 *
 
10
 *  This program is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
 */
 
19
 
 
20
#ifndef DRIZZLED_STACKTRACE_H
 
21
#define DRIZZLED_STACKTRACE_H
 
22
 
 
23
#ifdef __cplusplus
19
24
extern "C" {
20
25
#endif
21
26
 
22
 
#if HAVE_BACKTRACE && HAVE_BACKTRACE_SYMBOLS && HAVE_CXXABI_H && HAVE_ABI_CXA_DEMANGLE
 
27
#if defined(HAVE_BACKTRACE) && HAVE_BACKTRACE_SYMBOLS && HAVE_CXXABI_H && HAVE_ABI_CXA_DEMANGLE
23
28
#define BACKTRACE_DEMANGLE 1
24
29
#endif
25
30
 
26
 
#if BACKTRACE_DEMANGLE
27
 
char *my_demangle(const char *mangled_name, int *status);
 
31
#if defined(BACKTRACE_DEMANGLE)
 
32
  char *my_demangle(const char *mangled_name, int *status);
28
33
#endif
29
34
 
30
35
#ifdef TARGET_OS_LINUX
31
 
#if defined(HAVE_STACKTRACE) || (defined (__x86_64__) || defined (__i386__) || (defined(__alpha__) && defined(__GNUC__)))
 
36
#if defined(HAVE_STACKTRACE) || (defined (__x86_64__) || defined (__i386__) )
32
37
#undef HAVE_STACKTRACE
33
38
#define HAVE_STACKTRACE
34
39
 
35
 
extern char* __bss_start;
36
 
extern char* heap_start;
 
40
  extern char* __bss_start;
 
41
  extern char* heap_start;
37
42
 
38
43
#define init_stacktrace() do {                                 \
39
 
                            heap_start = (char*) &__bss_start; \
40
 
                          } while(0);
41
 
void check_thread_lib(void);
42
 
#endif /* defined (__i386__) || (defined(__alpha__) && defined(__GNUC__))) */
43
 
#elif defined (__WIN__)
44
 
#define HAVE_STACKTRACE
45
 
extern void set_exception_pointers(EXCEPTION_POINTERS *ep);
46
 
#define init_stacktrace() {}
47
 
#endif
 
44
    heap_start = (char*) &__bss_start; \
 
45
  } while(0);
 
46
  void check_thread_lib(void);
 
47
#endif /* defined (__i386__) */
 
48
#endif /* defined HAVE_OS_LINUX */
48
49
 
49
50
#ifdef HAVE_STACKTRACE
50
 
void print_stacktrace(uchar* stack_bottom, ulong thread_stack);
51
 
void safe_print_str(const char* name, const char* val, int max_len);
 
51
  void print_stacktrace(unsigned char* stack_bottom, size_t thread_stack);
 
52
  void safe_print_str(const char* name, const char* val, int max_len);
52
53
#else
53
54
/* Define empty prototypes for functions that are not implemented */
54
55
#define init_stacktrace() {}
57
58
#endif /* HAVE_STACKTRACE */
58
59
 
59
60
 
60
 
void write_core(int sig);
 
61
  void write_core(int sig);
61
62
 
62
 
#ifdef  __cplusplus
 
63
#ifdef  __cplusplus
63
64
}
64
65
#endif
 
66
 
 
67
#endif /* DRIZZLED_STACKTRACE_H */