~drizzle-trunk/drizzle/development

1999.6.1 by kalebral at gmail
update Copyright strings to a more common format to help with creating the master debian copyright file
1
dnl  Copyright (C) 2009 Sun Microsystems, Inc.
2
dnl This file is free software; Sun Microsystems, Inc.
1259.7.1 by Monty Taylor
Updated to pandora-buld v0.94
3
dnl gives unlimited permission to copy and/or distribute it,
4
dnl with or without modifications, as long as this notice is preserved.
5
6
dnl Try to define a macro to dump the current callstack.
7
AC_DEFUN([PANDORA_PRINT_CALLSTACK],[
8
  AC_CHECK_HEADERS([ucontext.h])
9
  AS_IF([test "x$ac_cv_header_ucontext_h" = "xyes"],
10
  	[ AC_CHECK_FUNCS([printstack]) ])
11
12
13
  AS_IF([ test "x$ac_cv_func_printstack" != "xyes"],
14
        [ AC_CHECK_HEADERS([dlfcn.h])
15
          AC_CHECK_HEADERS([execinfo.h])
16
          AC_CHECK_FUNCS([backtrace])
17
          AC_CHECK_FUNCS([backtrace_symbols_fd]) ])
18
19
  AH_BOTTOM([
20
#ifdef __cplusplus
21
#include <cstdio>
22
#define PANDORA_PRINTSTACK_STD_PREFIX std::
23
#else
24
#include <stdio.h>
25
#define PANDORA_PRINTSTACK_STD_PREFIX
26
#endif
27
28
#if defined(HAVE_UCONTEXT_H) && defined(HAVE_PRINTSTACK)
29
#include <ucontext.h>
30
#define pandora_print_callstack(a) \
31
printstack(PANDORA_PRINTSTACK_STD_PREFIX fileno(a))
32
#elif defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && defined(HAVE_BACKTRACE_SYMBOLS_FD)
33
34
#include <execinfo.h>
35
36
#define pandora_print_callstack(a) \
37
{ \
38
  void *stack[100];  \
39
  int depth = backtrace(stack, 100); \
40
  backtrace_symbols_fd(stack, depth, PANDORA_PRINTSTACK_STD_PREFIX fileno(a)); \
41
}
42
#elif defined(HAVE_EXECINFO_H) && defined(HAVE_BACKTRACE) && defined(HAVE_BACKTRACE_SYMBOLS) && !defined(HAVE_BACKTRACE_SYMBOLS_FD)
43
44
#include <execinfo.h>
45
46
#define pandora_print_callstack(a) \
47
{ \
48
  void *stack[100];  \
49
  int depth= backtrace(stack, 100); \
50
  char **symbol= backtrace_symbols(stack, depth); \
51
  for (int x= 0; x < size; ++x) \
52
    PANDORA_PRINTSTACK_STD_PREFIX fprintf(a, "%s\n", symbol[x]); \
53
}
54
#else
55
#define pandora_print_callstack(a) \
56
    PANDORA_PRINTSTACK_STD_PREFIX fprintf(a, \
57
      "Stackdump not supported for this platform\n");
58
#endif
59
  ])
60
61
])