1b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma/* libunwind - a platform-independent unwind library
2b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
3b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaThis file is part of libunwind.
4b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
5b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaPermission is hereby granted, free of charge, to any person obtaining
6b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaa copy of this software and associated documentation files (the
7b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma"Software"), to deal in the Software without restriction, including
8b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmawithout limitation the rights to use, copy, modify, merge, publish,
9b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmadistribute, sublicense, and/or sell copies of the Software, and to
10b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmapermit persons to whom the Software is furnished to do so, subject to
11b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmathe following conditions:
12b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
13b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaThe above copyright notice and this permission notice shall be
14b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaincluded in all copies or substantial portions of the Software.
15b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
16b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22b08ae72d6c041c2c9d72d049f815d001032169caArun SharmaWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
23b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
24b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#ifndef libunwind_coredump_h
25b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#define libunwind_coredump_h
26b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
27b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#include <libunwind.h>
28b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
29b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#if defined(__cplusplus) || defined(c_plusplus)
30b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern "C" {
31b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#endif
32b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
33b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma/* Helper routines which make it easy to use libunwind on a coredump.
34b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma   They're available only if UNW_REMOTE_ONLY is _not_ defined and they
35b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma   aren't really part of the libunwind API.  They are implemented in a
36b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma   archive library called libunwind-coredump.a.  */
37b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
38b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmastruct UCD_info;
39b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
40b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern struct UCD_info *_UCD_create(const char *filename);
41b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern void _UCD_destroy(struct UCD_info *);
42b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
430c0ea23cf2ea57c168ef20956a4c4183efa13d0dAlexander Larssonextern int _UCD_get_num_threads(struct UCD_info *);
440c0ea23cf2ea57c168ef20956a4c4183efa13d0dAlexander Larssonextern void _UCD_select_thread(struct UCD_info *, int);
45b9ff650a2286978e0901cab2c5735482bfc45b7bAlexander Larssonextern pid_t _UCD_get_pid(struct UCD_info *);
46b9ff650a2286978e0901cab2c5735482bfc45b7bAlexander Larssonextern int _UCD_get_cursig(struct UCD_info *);
47b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_add_backing_file_at_segment(struct UCD_info *, int phdr_no, const char *filename);
48b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_add_backing_file_at_vaddr(struct UCD_info *,
49b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma				          unsigned long vaddr,
50b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma					  const char *filename);
51b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
52b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_find_proc_info (unw_addr_space_t, unw_word_t,
53b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma				unw_proc_info_t *, int, void *);
54b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern void _UCD_put_unwind_info (unw_addr_space_t, unw_proc_info_t *, void *);
55b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_get_dyn_info_list_addr (unw_addr_space_t, unw_word_t *,
56b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma					void *);
57b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_access_mem (unw_addr_space_t, unw_word_t, unw_word_t *, int,
58b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma			    void *);
59b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_access_reg (unw_addr_space_t, unw_regnum_t, unw_word_t *,
60b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma			    int, void *);
61b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_access_fpreg (unw_addr_space_t, unw_regnum_t, unw_fpreg_t *,
62b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma			      int, void *);
63b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_get_proc_name (unw_addr_space_t, unw_word_t, char *, size_t,
64b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma			       unw_word_t *, void *);
65b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern int _UCD_resume (unw_addr_space_t, unw_cursor_t *, void *);
66b08ae72d6c041c2c9d72d049f815d001032169caArun Sharmaextern unw_accessors_t _UCD_accessors;
67b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
68b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
69b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#if defined(__cplusplus) || defined(c_plusplus)
70b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma}
71b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#endif
72b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma
73b08ae72d6c041c2c9d72d049f815d001032169caArun Sharma#endif /* libunwind_coredump_h */
74