#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <strings.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <rld_interface.h>#include <objlist.h>#include <obj_list.h>#include <elf.h>#include <sys/types.h>#include <sys/mman.h>#include <sys/stat.h>#include <sys/unwind.h>#include <link.h>#include "unwind_consumer.h"

Go to the source code of this file.
| void _Unwind_DeleteException | ( | struct _Unwind_Exception * | exception_object | ) |
Definition at line 2168 of file consumer.c.
| static void _Unwind_Find_Entry | ( | struct _Unwind_Context * | scp | ) | [static] |
Definition at line 2009 of file consumer.c.
References __UNW_CONTEXT_ACCESS_IP, __UNW_OK, __UNW_VERBOSE_ERRORS, __unw_table_entry_struct::_end, __unw_table_entry_struct::_start, _unwind_verbose, bsearch(), L, NULL, size_t, unwind_get_unwind_table_data(), _Unwind_Context::unwind_info_addr, unwind_output(), _Unwind_Context::unwind_table_addr, and unwind_table_entry_compare().
| _Unwind_Reason_Code _Unwind_ForceUnwind | ( | struct _Unwind_Exception * | exception_object, | |
| _Unwind_Stop_Fn | stop, | |||
| void * | stop_parameter | |||
| ) |
Definition at line 2118 of file consumer.c.
References _UA_CLEANUP_PHASE, _UA_FORCE_UNWIND, _URC_FATAL_PHASE2_ERROR, _URC_INSTALL_CONTEXT, _URC_NO_REASON, abort, _Unwind_Exception::exception_class, _Unwind_Exception::exception_cleanup, fprintf(), and VERSION_NUMBER.
| uint64_t _Unwind_GetGR | ( | struct _Unwind_Context * | context, | |
| int | index | |||
| ) | [inline] |
| uint64_t _Unwind_GetIP | ( | struct _Unwind_Context * | context | ) | [inline] |
| uint64_t _Unwind_GetLanguageSpecificData | ( | struct _Unwind_Context * | context | ) |
Definition at line 2224 of file consumer.c.
References __UNW_LENGTH, return, and _Unwind_Context::unwind_info_addr.
| uint64_t _Unwind_GetRegionStart | ( | struct _Unwind_Context * | context | ) |
Definition at line 2234 of file consumer.c.
References __unw_table_entry_struct::_start, and _Unwind_Context::unwind_table_addr.
| _Unwind_Reason_Code _Unwind_RaiseException | ( | struct _Unwind_Exception * | exception_object | ) |
Definition at line 2089 of file consumer.c.
References _URC_END_OF_STACK, _URC_FATAL_PHASE2_ERROR, abort, _Unwind_Context::context, and _Unwind_Exception::exception_cleanup.
| void _Unwind_Resume | ( | struct _Unwind_Exception * | exception_object | ) |
Definition at line 2155 of file consumer.c.
| void _Unwind_SetGR | ( | struct _Unwind_Context * | context, | |
| int | index, | |||
| uint64_t | new_value | |||
| ) |
Definition at line 2187 of file consumer.c.
References __UNW_CONTEXT_ACCESS_AR, __UNW_CONTEXT_ACCESS_GR, __UNW_RNAT, __UNW_UNAT, _unw_ar_map, and assert.
Referenced by __gnu_unwind_pr_common(), and PERSONALITY_FUNCTION().
| void _Unwind_SetIP | ( | struct _Unwind_Context * | context, | |
| uint64_t | new_value | |||
| ) |
| void unwind_debugger_init | ( | int(*)(__uint64_t, __uint64_t *, __uint64_t *) | dbg_unwind_table_addr_arg, | |
| int(*)(__uint64_t, __uint64_t *, __uint64_t *) | dbg_unwind_info_addr_arg, | |||
| int(*)(__uint64_t, __uint64_t *) | dbg_unwind_info_target_addr_arg, | |||
| int(*)(__uint64_t, __uint64_t *) | dbg_text_segment_target_addr_arg, | |||
| int(*)(__uint64_t, __uint64_t *) | dbg_restore_gp_arg, | |||
| int(*)(__uint64_t, __uint64_t, void *) | dbg_addr_read_arg | |||
| ) |
Definition at line 132 of file consumer.c.
References __dbg_addr_read, __dbg_restore_gp, __dbg_text_segment_target_addr, __dbg_unwind_info_addr, __dbg_unwind_info_target_addr, and __dbg_unwind_table_addr.
| __unw_error_t unwind_fini | ( | void | ) |
Definition at line 807 of file consumer.c.
References __UNW_OK, __UNW_VERBOSE_INTERNAL_MSGS, _unwind_finalized, _unwind_state_stack_total_size, _unwind_verbose, munmap(), and unwind_output().
| __unw_error_t unwind_frame | ( | unw_sigcontext_t * | scp | ) |
Definition at line 848 of file consumer.c.
References __dbg_addr_read, __dbg_restore_gp, __dbg_text_segment_target_addr, __dbg_unwind_info_addr, __dbg_unwind_info_target_addr, __dbg_unwind_table_addr, __UNW_AR_MAP, __UNW_BR_STD_END, __UNW_BR_STD_START, __UNW_BSP, __UNW_CONTEXT_ACCESS_AR, __UNW_CONTEXT_ACCESS_AR_EC, __UNW_CONTEXT_ACCESS_BR, __UNW_CONTEXT_ACCESS_FR, __UNW_CONTEXT_ACCESS_GP, __UNW_CONTEXT_ACCESS_GR, __UNW_CONTEXT_ACCESS_IP, __UNW_CONTEXT_ACCESS_PREDS, __UNW_CONTEXT_ACCESS_PRIUNAT, __UNW_GR_STD_END, __UNW_GR_STD_START, __UNW_INTERNAL_ERROR, __UNW_INV_OP_ERROR, __UNW_LENGTH, __UNW_MAX_AR_PRESERVED, __UNW_MAX_FR_PRESERVED, __UNW_OK, __UNW_PFS, __UNW_RESTORE_FIXED_VALUE, __UNW_RESTORE_OFF_BR, __UNW_RESTORE_OFF_GR, __UNW_RESTORE_PSP_RELATIVE, __UNW_RESTORE_SP_RELATIVE, __UNW_RP, __UNW_SP, __UNW_STRUCT_FPREG, __UNW_TO_RESTORE_PSP_RELATIVE, __UNW_VERBOSE_ERRORS, __UNW_VERBOSE_INTERNAL_MSGS, __UNW_VERBOSE_MSGS, __UNW_VERBOSE_WARNINGS, __unw_state_info_struct::_ar, __unw_state_info_struct::_br, __unw_reg_info_struct::_code, _debugger_string, __unw_table_entry_struct::_end, __unw_state_info_struct::_fr, __unw_state_info_struct::_frame_size, __unw_state_info_struct::_gr, __unw_info_struct::_header, __unw_table_entry_struct::_info, __unw_reg_info_struct::_offset, __unw_state_info_struct::_preds, __unw_state_info_struct::_priunat, __unw_reg_info_struct::_reg, __unw_table_entry_struct::_start, _unw_br_map, _unw_fr_map, _unw_gr_map, _unwind_initialized, _unwind_verbose, addr(), bsearch(), fprintf(), if(), L, NULL, preds, ptr, size_t, slots, sp, sz(), ulong, unwind_get_unwind_table_data(), unwind_init(), unwind_output(), unwind_process_desc(), unwind_restore_gp(), and unwind_table_entry_compare().
Referenced by unwind_stack().
| static __unw_error_t unwind_get_obj_data | ( | __uint64_t | ip, | |
| Elf64_Ehdr ** | ehdr, | |||
| Elf64_Phdr ** | phdr, | |||
| __uint64_t * | runtime_offset, | |||
| __uint64_t * | text_segment_addr | |||
| ) | [static] |
Definition at line 266 of file consumer.c.
References __UNW_INTERNAL_ERROR, __UNW_OK, __UNW_VERBOSE_ERRORS, __UNW_VERBOSE_INTERNAL_MSGS, _unwind_verbose, i, if(), L, PF_R, PF_X, PT_LOAD, unwind_get_obj_phdr(), and unwind_output().
Referenced by unwind_get_unwind_table_data(), and unwind_restore_gp().
| static __unw_error_t unwind_get_obj_phdr | ( | const char * | name, | |
| char * | dsoname, | |||
| __uint32_t * | load_address, | |||
| Elf64_Phdr ** | phdr, | |||
| Elf64_Half * | phnum | |||
| ) | [static] |
Definition at line 162 of file consumer.c.
References __UNW_NULL_ERROR, __UNW_OK, addr(), dirname, Elf64_Ehdr::e_phnum, Elf64_Ehdr::e_phoff, f, fclose(), feof(), fgets(), fopen, getpid, i, in, len, min, NULL, perm, pid, readlink(), slash, sprintf(), sscanf(), stat::st_dev, stat::st_ino, stat, strcpy, and strrchr().
Referenced by unwind_get_obj_data().
| static __unw_error_t unwind_get_unwind_table_data | ( | __uint64_t | ip, | |
| __uint64_t * | unwind_table_addr, | |||
| __uint64_t * | unwind_table_size, | |||
| __uint64_t * | text_segment_addr | |||
| ) | [static] |
Definition at line 402 of file consumer.c.
References __UNW_INTERNAL_ERROR, __UNW_OK, __UNW_VERBOSE_ERRORS, __UNW_VERBOSE_INTERNAL_MSGS, _unwind_verbose, Elf64_Ehdr::e_phnum, i, p_type(), PT_IA64_UNWIND, ret, unwind_get_obj_data(), and unwind_output().
Referenced by _Unwind_Find_Entry(), and unwind_frame().
| __unw_error_t unwind_init | ( | void | ) |
Definition at line 732 of file consumer.c.
References __UNW_CONSUMER_VERBOSE_ENV_VAR, __UNW_MMAP_ERROR, __UNW_OK, __UNW_STATE_STACK_ENTRIES_SIZE, __UNW_SYSCALL_ERROR, __UNW_VERBOSE_ERRORS, __UNW_VERBOSE_INTERNAL_MSGS, _unwind_initialized, _unwind_state_stack_total_size, _unwind_verbose, atoi(), close, errno, getenv(), mmap(), NULL, O_RDONLY, open, str, and unwind_output().
Referenced by unwind_frame().
| static __unw_error_t unwind_restore_gp | ( | __uint64_t | ip, | |
| __uint64_t * | gp | |||
| ) | [static] |
Definition at line 455 of file consumer.c.
References __UNW_INTERNAL_ERROR, __UNW_OK, __UNW_VERBOSE_ERRORS, __UNW_VERBOSE_INTERNAL_MSGS, _unwind_verbose, DT_MIPS_GP_VALUE, DT_NULL, Elf64_Ehdr::e_phnum, i, p_type(), PT_DYNAMIC, ret, unwind_get_obj_data(), and unwind_output().
Referenced by unwind_frame().
| __unw_error_t unwind_state_stack_pop | ( | __uint64_t | num | ) |
Definition at line 552 of file consumer.c.
References __UNW_INV_ARG_ERROR, __UNW_NULL_ERROR, __UNW_OK, __UNW_VERBOSE_ERRORS, _unwind_state_stack_size, _unwind_verbose, NULL, and unwind_output().
Referenced by unwind_process_body_desc().
| __unw_error_t unwind_state_stack_push | ( | __unw_state_info_t ** | ptr | ) |
Definition at line 579 of file consumer.c.
References __UNW_MMAP_ERROR, __UNW_NULL_ERROR, __UNW_OK, __UNW_SYSCALL_ERROR, __UNW_VERBOSE_ERRORS, __UNW_VERBOSE_INTERNAL_MSGS, _unwind_state_stack_size, _unwind_state_stack_total_size, _unwind_verbose, bcopy(), bzero(), close, errno, mmap(), munmap(), NULL, O_RDONLY, open, and unwind_output().
Referenced by unwind_process_header_desc().
| __unw_error_t unwind_state_stack_reset | ( | void | ) |
Definition at line 716 of file consumer.c.
References __UNW_NULL_ERROR, __UNW_OK, _unwind_state_stack_size, and NULL.
Referenced by unwind_process_desc().
| __unw_error_t unwind_state_stack_search | ( | __unw_state_info_t ** | ptr, | |
| __uint64_t | label | |||
| ) |
Definition at line 689 of file consumer.c.
References __UNW_NOT_FOUND_ERROR, __UNW_NULL_ERROR, __UNW_OK, __UNW_VERBOSE_ERRORS, _unwind_state_stack_size, _unwind_verbose, NULL, and unwind_output().
Referenced by unwind_process_body_desc().
| __unw_error_t unwind_state_stack_top | ( | __unw_state_info_t ** | ptr | ) |
Definition at line 667 of file consumer.c.
References __UNW_NULL_ERROR, __UNW_OK, _unwind_state_stack_size, bzero(), and NULL.
Referenced by unwind_process_body_desc().
Definition at line 522 of file consumer.c.
References __unw_table_entry_struct::_end, __unw_table_entry_struct::_start, t1, t2, and unwind_output().
Referenced by _Unwind_Find_Entry(), and unwind_frame().
int(* __dbg_addr_read)(__uint64_t, __uint64_t, void *) = NULL [static] |
Referenced by unwind_debugger_init(), and unwind_frame().
int(* __dbg_restore_gp)(__uint64_t, __uint64_t *) = NULL [static] |
Referenced by unwind_debugger_init(), and unwind_frame().
int(* __dbg_text_segment_target_addr)(__uint64_t, __uint64_t *) = NULL [static] |
Referenced by unwind_debugger_init(), and unwind_frame().
int(* __dbg_unwind_info_addr)(__uint64_t, __uint64_t *, __uint64_t *) = NULL [static] |
Referenced by unwind_debugger_init(), and unwind_frame().
int(* __dbg_unwind_info_target_addr)(__uint64_t, __uint64_t *) = NULL [static] |
Referenced by unwind_debugger_init(), and unwind_frame().
int(* __dbg_unwind_table_addr)(__uint64_t, __uint64_t *, __uint64_t *) = NULL [static] |
Referenced by unwind_debugger_init(), and unwind_frame().
char* _debugger_string = "gdb" [static] |
__uint64_t _rld_end_addr = 0L [static] |
Definition at line 106 of file consumer.c.
__uint64_t _rld_runtime_offset = 0L [static] |
Definition at line 107 of file consumer.c.
__uint64_t _rld_start_addr = 0L [static] |
Definition at line 105 of file consumer.c.
__unw_info_t* _rld_unwind_table = NULL [static] |
Definition at line 108 of file consumer.c.
__uint64_t _rld_unwind_table_size = 0L [static] |
Definition at line 109 of file consumer.c.
| const __uint32_t _unw_ar_map[__UNW_MAX_AR_PRESERVED] |
Initial value:
{ 0, 0, 1, 3, 4, 5, 7 }
Definition at line 95 of file consumer.c.
Referenced by _Unwind_SetGR().
| const __uint32_t _unw_br_map[__UNW_MAX_BR_PRESERVED] |
Initial value:
{ 0, 1, 2, 3, 4, 5 }
Definition at line 89 of file consumer.c.
Referenced by unwind_frame().
| const __uint32_t _unw_fr_map[__UNW_MAX_FR_PRESERVED] |
Initial value:
{ 2, 3, 4, 5, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31 }
Definition at line 86 of file consumer.c.
Referenced by unwind_frame().
| const __uint32_t _unw_gr_map[__UNW_MAX_GR_PRESERVED] |
Initial value:
{ 4, 5, 6, 7, 12 }
Definition at line 84 of file consumer.c.
Referenced by unwind_frame().
__uint32_t _unwind_finalized = 0 [static] |
| __unw_info_t* _unwind_info = NULL |
Definition at line 75 of file consumer.c.
Referenced by unwind_info_add_body_copy_state_info(), unwind_info_add_body_epilogue_info(), unwind_info_add_body_header(), unwind_info_add_body_label_state_info(), unwind_info_add_prologue_br_gr_info(), unwind_info_add_prologue_br_mem_info(), unwind_info_add_prologue_bsp_gr_info(), unwind_info_add_prologue_bsp_psprel_info(), unwind_info_add_prologue_bsp_sprel_info(), unwind_info_add_prologue_bsp_when_info(), unwind_info_add_prologue_bspstore_gr_info(), unwind_info_add_prologue_bspstore_psprel_info(), unwind_info_add_prologue_bspstore_sprel_info(), unwind_info_add_prologue_bspstore_when_info(), unwind_info_add_prologue_fpsr_gr_info(), unwind_info_add_prologue_fpsr_psprel_info(), unwind_info_add_prologue_fpsr_sprel_info(), unwind_info_add_prologue_fpsr_when_info(), unwind_info_add_prologue_fr_mem_info(), unwind_info_add_prologue_frgr_mem_info(), unwind_info_add_prologue_gr_gr_info(), unwind_info_add_prologue_gr_header(), unwind_info_add_prologue_gr_mem_info(), unwind_info_add_prologue_header(), unwind_info_add_prologue_lc_gr_info(), unwind_info_add_prologue_lc_psprel_info(), unwind_info_add_prologue_lc_sprel_info(), unwind_info_add_prologue_lc_when_info(), unwind_info_add_prologue_mem_stack_f_info(), unwind_info_add_prologue_mem_stack_v_info(), unwind_info_add_prologue_pfs_gr_info(), unwind_info_add_prologue_pfs_psprel_info(), unwind_info_add_prologue_pfs_sprel_info(), unwind_info_add_prologue_pfs_when_info(), unwind_info_add_prologue_preds_gr_info(), unwind_info_add_prologue_preds_psprel_info(), unwind_info_add_prologue_preds_sprel_info(), unwind_info_add_prologue_preds_when_info(), unwind_info_add_prologue_priunat_gr_info(), unwind_info_add_prologue_priunat_psprel_info(), unwind_info_add_prologue_priunat_sprel_info(), unwind_info_add_prologue_priunat_when_info(), unwind_info_add_prologue_psp_gr_info(), unwind_info_add_prologue_psp_sprel_info(), unwind_info_add_prologue_rnat_gr_info(), unwind_info_add_prologue_rnat_psprel_info(), unwind_info_add_prologue_rnat_sprel_info(), unwind_info_add_prologue_rnat_when_info(), unwind_info_add_prologue_rp_br_info(), unwind_info_add_prologue_rp_gr_info(), unwind_info_add_prologue_rp_psprel_info(), unwind_info_add_prologue_rp_sprel_info(), unwind_info_add_prologue_rp_when_info(), unwind_info_add_prologue_spill_base_info(), unwind_info_add_prologue_spill_mask_info(), unwind_info_add_prologue_unat_gr_info(), unwind_info_add_prologue_unat_psprel_info(), unwind_info_add_prologue_unat_sprel_info(), unwind_info_add_prologue_unat_when_info(), unwind_info_add_restore_reg_info(), unwind_info_add_spill_psprel_info(), unwind_info_add_spill_reg_to_gr_info(), and unwind_info_add_spill_sprel_info().
Definition at line 76 of file consumer.c.
Referenced by unwind_info_add_body_copy_state_info(), unwind_info_add_body_epilogue_info(), unwind_info_add_body_header(), unwind_info_add_body_label_state_info(), unwind_info_add_language_specific_info(), unwind_info_add_personality_routine_info(), unwind_info_add_prologue_br_gr_info(), unwind_info_add_prologue_br_mem_info(), unwind_info_add_prologue_bsp_gr_info(), unwind_info_add_prologue_bsp_psprel_info(), unwind_info_add_prologue_bsp_sprel_info(), unwind_info_add_prologue_bsp_when_info(), unwind_info_add_prologue_bspstore_gr_info(), unwind_info_add_prologue_bspstore_psprel_info(), unwind_info_add_prologue_bspstore_sprel_info(), unwind_info_add_prologue_bspstore_when_info(), unwind_info_add_prologue_fpsr_gr_info(), unwind_info_add_prologue_fpsr_psprel_info(), unwind_info_add_prologue_fpsr_sprel_info(), unwind_info_add_prologue_fpsr_when_info(), unwind_info_add_prologue_fr_mem_info(), unwind_info_add_prologue_frgr_mem_info(), unwind_info_add_prologue_gr_gr_info(), unwind_info_add_prologue_gr_header(), unwind_info_add_prologue_gr_mem_info(), unwind_info_add_prologue_header(), unwind_info_add_prologue_lc_gr_info(), unwind_info_add_prologue_lc_psprel_info(), unwind_info_add_prologue_lc_sprel_info(), unwind_info_add_prologue_lc_when_info(), unwind_info_add_prologue_mem_stack_f_info(), unwind_info_add_prologue_mem_stack_v_info(), unwind_info_add_prologue_pfs_gr_info(), unwind_info_add_prologue_pfs_psprel_info(), unwind_info_add_prologue_pfs_sprel_info(), unwind_info_add_prologue_pfs_when_info(), unwind_info_add_prologue_preds_gr_info(), unwind_info_add_prologue_preds_psprel_info(), unwind_info_add_prologue_preds_sprel_info(), unwind_info_add_prologue_preds_when_info(), unwind_info_add_prologue_priunat_gr_info(), unwind_info_add_prologue_priunat_psprel_info(), unwind_info_add_prologue_priunat_sprel_info(), unwind_info_add_prologue_priunat_when_info(), unwind_info_add_prologue_psp_gr_info(), unwind_info_add_prologue_psp_sprel_info(), unwind_info_add_prologue_rnat_gr_info(), unwind_info_add_prologue_rnat_psprel_info(), unwind_info_add_prologue_rnat_sprel_info(), unwind_info_add_prologue_rnat_when_info(), unwind_info_add_prologue_rp_br_info(), unwind_info_add_prologue_rp_gr_info(), unwind_info_add_prologue_rp_psprel_info(), unwind_info_add_prologue_rp_sprel_info(), unwind_info_add_prologue_rp_when_info(), unwind_info_add_prologue_spill_base_info(), unwind_info_add_prologue_spill_mask_info(), unwind_info_add_prologue_unat_gr_info(), unwind_info_add_prologue_unat_psprel_info(), unwind_info_add_prologue_unat_sprel_info(), unwind_info_add_prologue_unat_when_info(), unwind_info_add_restore_reg_info(), unwind_info_add_spill_psprel_info(), unwind_info_add_spill_reg_to_gr_info(), unwind_info_add_spill_sprel_info(), unwind_info_finalize(), unwind_info_initialize(), and unwind_process().
__uint32_t _unwind_initialized = 0 [static] |
const char* _Unwind_Reason_Strings[_URC_INSTALL_CONTEXT+1] [static] |
Initial value:
{
"_URC_NO_REASON",
"_URC_FOREIGN_EXCEPTION_CAUGHT",
"_URC_FATAL_PHASE2_ERROR",
"_URC_FATAL_PHASE1_ERROR",
"_URC_NORMAL_STOP",
"_URC_END_OF_STACK",
"_URC_HANDLER_FOUND",
"_URC_INSTALL_CONTEXT"
}
Definition at line 2060 of file consumer.c.
Definition at line 79 of file consumer.c.
Definition at line 81 of file consumer.c.
Referenced by unwind_state_stack_pop(), unwind_state_stack_push(), unwind_state_stack_reset(), unwind_state_stack_search(), and unwind_state_stack_top().
Definition at line 80 of file consumer.c.
Referenced by unwind_fini(), unwind_init(), and unwind_state_stack_push().
| __unw_table_entry_t* _unwind_table = NULL |
Definition at line 71 of file consumer.c.
Definition at line 72 of file consumer.c.
Referenced by unwind_info_finalize(), and unwind_process().
Definition at line 68 of file consumer.c.
Referenced by _Unwind_Find_Entry(), unwind_fini(), unwind_frame(), unwind_get_obj_data(), unwind_get_unwind_table_data(), unwind_init(), unwind_process_body_desc(), unwind_process_desc(), unwind_process_header_desc(), unwind_process_prologue_desc(), unwind_restore_gp(), unwind_state_stack_pop(), unwind_state_stack_push(), and unwind_state_stack_search().
__uint64_t _xeq_end_addr = 0L [static] |
Definition at line 113 of file consumer.c.
__uint64_t _xeq_runtime_offset = 0L [static] |
Definition at line 114 of file consumer.c.
__uint64_t _xeq_start_addr = 0L [static] |
Definition at line 112 of file consumer.c.
__unw_info_t* _xeq_unwind_table = NULL [static] |
Definition at line 115 of file consumer.c.
__uint64_t _xeq_unwind_table_size = 0L [static] |
Definition at line 116 of file consumer.c.
1.5.6