xref: /trunk/main/sal/osl/unx/backtrace.h (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 
29 #if defined (SOLARIS) || (FREEBSD)
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /* backtrace function with same behaviour as defined in GNU libc */
36 
37 int backtrace( void **buffer, int max_frames );
38 
39 void backtrace_symbols_fd( void **buffer, int size, int fd );
40 
41 /* no frame.h on FreeBSD */
42 #if defined FREEBSD
43 struct frame {
44 	long	arg0[8];
45 	long	arg1[6];
46 	struct frame *fr_savfp;
47 	long	fr_savpc;
48 };
49 #endif
50 
51 
52 #ifdef __cplusplus
53 } /* extern "C" */
54 #endif
55 
56 #endif /* defined SOLARIS || FREEBSD */
57 
58 #if defined (LINUX) && defined (SPARC)
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62 
63 /* backtrace function with same behaviour as defined in GNU libc */
64 
65 int backtrace( void **buffer, int max_frames );
66 
67 void backtrace_symbols_fd( void **buffer, int size, int fd );
68 
69 /* no frame.h on linux sparc */
70 struct frame {
71 	long	arg0[8];
72 	long	arg1[6];
73 	struct frame *fr_savfp;
74 	long	fr_savpc;
75 };
76 
77 #ifdef __cplusplus
78 } /* extern "C" */
79 #endif
80 
81 #endif /* defined LINUX && SPARC */
82 
83 #if defined (MACOSX)
84 
85 #ifdef __cplusplus
86 extern "C" {
87 #endif
88 
89 /* backtrace function with same behaviour as defined in GNU libc */
90 
91 int backtrace( void **buffer, int max_frames );
92 
93 void backtrace_symbols_fd( void **buffer, int size, int fd );
94 
95 #ifdef __cplusplus
96 } /* extern "C" */
97 #endif
98 
99 #endif /* defined MACOSX */
100