#include "tconfig.h"#include "tsystem.h"#include "coretypes.h"#include "tm.h"#include "dwarf2.h"#include "unwind.h"#include "unwind-pe.h"#include "unwind-dw2-fde.h"#include "gthr.h"


Go to the source code of this file.
| #define init_object_mutex_once | ( | ) |
Definition at line 72 of file unwind-dw2-fde.c.
| #define NO_BASE_OF_ENCODED_VALUE |
Definition at line 39 of file unwind-dw2-fde.c.
Definition at line 472 of file unwind-dw2-fde.c.
| typedef int(* fde_compare_t)(struct object *, const fde *, const fde *) |
Definition at line 373 of file unwind-dw2-fde.c.
Definition at line 174 of file unwind-dw2-fde.c.
References __gthread_mutex_lock, __gthread_mutex_unlock, abort, free(), gcc_assert, init_object_mutex_once, object::next, out, p, object::sort, and object::u.
| void __register_frame_info_bases | ( | const void * | begin, | |
| struct object * | ob, | |||
| void * | tbase, | |||
| void * | dbase | |||
| ) |
Definition at line 78 of file unwind-dw2-fde.c.
References __gthread_mutex_lock, __gthread_mutex_unlock, object::b, object::dbase, DW_EH_PE_omit, object::i, init_object_mutex_once, object::next, NULL, object::pc_begin, object::s, object::single, object::tbase, and object::u.
| void __register_frame_info_table_bases | ( | void * | begin, | |
| struct object * | ob, | |||
| void * | tbase, | |||
| void * | dbase | |||
| ) |
Definition at line 128 of file unwind-dw2-fde.c.
References __gthread_mutex_lock, __gthread_mutex_unlock, object::array, object::b, object::dbase, DW_EH_PE_omit, object::i, init_object_mutex_once, object::next, object::pc_begin, object::s, object::tbase, and object::u.
Definition at line 155 of file unwind-dw2-fde.c.
References __register_frame_info_table(), and malloc.
| const fde* _Unwind_Find_FDE | ( | void * | pc, | |
| struct dwarf_eh_bases * | bases | |||
| ) |
Definition at line 971 of file unwind-dw2-fde.c.
References __gthread_mutex_lock, __gthread_mutex_unlock, _keymgr_get_and_lock_processwide_ptr(), _keymgr_set_and_unlock_processwide_ptr(), _Unwind_Find_registered_FDE(), object::b, base_from_object(), calloc(), dwarf_eh_bases::dbase, object::dbase, object::encoding, examine_objects(), f, dwarf_eh_bases::func, func, get_fde_encoding(), init_object_mutex_once, KEYMGR_GCC3_DW2_OBJ_LIST, object::next, NULL, p, dwarf_fde::pc_begin, object::pc_begin, read_encoded_value_with_base(), ret, object::s, search_object(), seen_objects, km_object_info::seen_objects, dwarf_eh_bases::tbase, object::tbase, km_object_info::unseen_objects, and unseen_objects.
| static void add_fdes | ( | struct object * | ob, | |
| struct fde_accumulator * | accu, | |||
| const fde * | this_fde | |||
| ) | [static] |
Definition at line 653 of file unwind-dw2-fde.c.
References object::b, base, base_from_object(), dwarf_fde::CIE_delta, DW_EH_PE_absptr, fde_insert(), get_cie(), get_cie_encoding(), L, last_fde(), next_fde(), dwarf_fde::pc_begin, read_encoded_value_with_base(), object::s, and size_of_encoded_value().
Definition at line 240 of file unwind-dw2-fde.c.
References object::dbase, DW_EH_PE_absptr, DW_EH_PE_aligned, DW_EH_PE_datarel, DW_EH_PE_omit, DW_EH_PE_pcrel, DW_EH_PE_textrel, gcc_unreachable, and object::tbase.
| static const fde* binary_search_mixed_encoding_fdes | ( | struct object * | ob, | |
| void * | pc | |||
| ) | [inline, static] |
Definition at line 896 of file unwind-dw2-fde.c.
References fde_vector::array, base_from_object(), fde_vector::count, f, get_fde_encoding(), i, lo, NULL, p, dwarf_fde::pc_begin, read_encoded_value_with_base(), object::sort, object::u, and vec.
| static const fde* binary_search_single_encoding_fdes | ( | struct object * | ob, | |
| void * | pc | |||
| ) | [inline, static] |
Definition at line 866 of file unwind-dw2-fde.c.
References fde_vector::array, object::b, base, base_from_object(), fde_vector::count, f, i, lo, NULL, p, dwarf_fde::pc_begin, read_encoded_value_with_base(), object::s, object::sort, object::u, and vec.
Definition at line 839 of file unwind-dw2-fde.c.
References fde_vector::array, fde_vector::count, f, i, lo, NULL, dwarf_fde::pc_begin, object::sort, object::u, and vec.
Definition at line 598 of file unwind-dw2-fde.c.
References object::b, base, base_from_object(), dwarf_fde::CIE_delta, count, DW_EH_PE_absptr, DW_EH_PE_omit, get_cie(), get_cie_encoding(), L, last_fde(), next_fde(), dwarf_fde::pc_begin, object::pc_begin, read_encoded_value_with_base(), object::s, and size_of_encoded_value().
| static void end_fde_sort | ( | struct object * | ob, | |
| struct fde_accumulator * | accu, | |||
| size_t | count | |||
| ) | [inline, static] |
Definition at line 563 of file unwind-dw2-fde.c.
References object::b, fde_vector::count, DW_EH_PE_absptr, fde_accumulator::erratic, fde_merge(), fde_mixed_encoding_compare(), fde_single_encoding_compare(), fde_split(), fde_unencoded_compare(), frame_heapsort(), free(), gcc_assert, fde_accumulator::linear, and object::s.
| static void fde_insert | ( | struct fde_accumulator * | accu, | |
| const fde * | this_fde | |||
| ) | [inline, static] |
Definition at line 413 of file unwind-dw2-fde.c.
References fde_vector::array, fde_vector::count, and fde_accumulator::linear.
| static void fde_merge | ( | struct object * | ob, | |
| fde_compare_t | fde_compare, | |||
| struct fde_vector * | v1, | |||
| struct fde_vector * | v2 | |||
| ) | [inline, static] |
Definition at line 536 of file unwind-dw2-fde.c.
References fde_vector::array, fde_vector::count, i1, and i2.
Definition at line 353 of file unwind-dw2-fde.c.
References base_from_object(), get_fde_encoding(), dwarf_fde::pc_begin, and read_encoded_value_with_base().
| static int fde_single_encoding_compare | ( | struct object * | ob, | |
| const fde * | x, | |||
| const fde * | y | |||
| ) | [static] |
Definition at line 337 of file unwind-dw2-fde.c.
References object::b, base, base_from_object(), dwarf_fde::pc_begin, read_encoded_value_with_base(), and object::s.
| static void fde_split | ( | struct object * | ob, | |
| fde_compare_t | fde_compare, | |||
| struct fde_vector * | linear, | |||
| struct fde_vector * | erratic | |||
| ) | [inline, static] |
Definition at line 432 of file unwind-dw2-fde.c.
References fde_vector::array, count, fde_vector::count, gcc_assert, i, and NULL.
| static void frame_downheap | ( | struct object * | ob, | |
| fde_compare_t | fde_compare, | |||
| const fde ** | a, | |||
| int | lo, | |||
| int | hi | |||
| ) | [static] |
| static void frame_heapsort | ( | struct object * | ob, | |
| fde_compare_t | fde_compare, | |||
| struct fde_vector * | erratic | |||
| ) | [static] |
Definition at line 504 of file unwind-dw2-fde.c.
References a, fde_vector::array, fde_vector::count, frame_downheap(), n, and SWAP.
Definition at line 265 of file unwind-dw2-fde.c.
References dwarf_cie::augmentation, DW_EH_PE_absptr, p, read_encoded_value_with_base(), read_sleb128(), read_uleb128(), strlen(), and dwarf_cie::version.
Definition at line 716 of file unwind-dw2-fde.c.
References add_fdes(), object::array, object::b, classify_object_over_fdes(), count, end_fde_sort(), fde_accumulator::linear, fde_vector::orig_data, p, object::s, object::single, object::sort, start_fde_sort(), and object::u.
| static const fde* linear_search_fdes | ( | struct object * | ob, | |
| const fde * | this_fde, | |||
| void * | pc | |||
| ) | [static] |
Definition at line 770 of file unwind-dw2-fde.c.
References object::b, base, base_from_object(), dwarf_fde::CIE_delta, DW_EH_PE_absptr, get_cie(), get_cie_encoding(), L, last_fde(), next_fde(), NULL, p, dwarf_fde::pc_begin, read_encoded_value_with_base(), object::s, and size_of_encoded_value().
Definition at line 927 of file unwind-dw2-fde.c.
References object::array, object::b, binary_search_mixed_encoding_fdes(), binary_search_single_encoding_fdes(), binary_search_unencoded_fdes(), DW_EH_PE_absptr, f, init_object(), linear_search_fdes(), NULL, p, object::s, object::single, and object::u.
| static int start_fde_sort | ( | struct fde_accumulator * | accu, | |
| size_t | count | |||
| ) | [inline, static] |
Definition at line 394 of file unwind-dw2-fde.c.
References fde_vector::count, fde_accumulator::erratic, fde_accumulator::linear, malloc, and size.
__gthread_mutex_t object_mutex = __GTHREAD_MUTEX_INIT [static] |
Definition at line 53 of file unwind-dw2-fde.c.
struct object* seen_objects [static] |
Definition at line 50 of file unwind-dw2-fde.c.
struct object* unseen_objects [static] |
Definition at line 49 of file unwind-dw2-fde.c.
1.5.6