1*4d9fdb46SRobert Mustacchi /*
2*4d9fdb46SRobert Mustacchi 
3*4d9fdb46SRobert Mustacchi   Copyright (C) 2015-2015 David Anderson. All Rights Reserved.
4*4d9fdb46SRobert Mustacchi 
5*4d9fdb46SRobert Mustacchi   This program is free software; you can redistribute it and/or modify it
6*4d9fdb46SRobert Mustacchi   under the terms of version 2.1 of the GNU Lesser General Public License
7*4d9fdb46SRobert Mustacchi   as published by the Free Software Foundation.
8*4d9fdb46SRobert Mustacchi 
9*4d9fdb46SRobert Mustacchi   This program is distributed in the hope that it would be useful, but
10*4d9fdb46SRobert Mustacchi   WITHOUT ANY WARRANTY; without even the implied warranty of
11*4d9fdb46SRobert Mustacchi   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12*4d9fdb46SRobert Mustacchi 
13*4d9fdb46SRobert Mustacchi   Further, this software is distributed without any warranty that it is
14*4d9fdb46SRobert Mustacchi   free of the rightful claim of any third person regarding infringement
15*4d9fdb46SRobert Mustacchi   or the like.  Any license provided herein, whether implied or
16*4d9fdb46SRobert Mustacchi   otherwise, applies only to this software file.  Patent licenses, if
17*4d9fdb46SRobert Mustacchi   any, provided herein do not apply to combinations of this program with
18*4d9fdb46SRobert Mustacchi   other software, or any other product whatsoever.
19*4d9fdb46SRobert Mustacchi 
20*4d9fdb46SRobert Mustacchi   You should have received a copy of the GNU Lesser General Public
21*4d9fdb46SRobert Mustacchi   License along with this program; if not, write the Free Software
22*4d9fdb46SRobert Mustacchi   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
23*4d9fdb46SRobert Mustacchi   USA.
24*4d9fdb46SRobert Mustacchi 
25*4d9fdb46SRobert Mustacchi */
26*4d9fdb46SRobert Mustacchi 
27*4d9fdb46SRobert Mustacchi 
28*4d9fdb46SRobert Mustacchi 
29*4d9fdb46SRobert Mustacchi #define HASHSEARCH
30*4d9fdb46SRobert Mustacchi 
31*4d9fdb46SRobert Mustacchi #ifdef HASHSEARCH
32*4d9fdb46SRobert Mustacchi /* Only needed for hash based search in a tsearch style. */
33*4d9fdb46SRobert Mustacchi #define INITTREE(x,y) x = dwarf_initialize_search_hash(&(x),(y),0)
34*4d9fdb46SRobert Mustacchi #else
35*4d9fdb46SRobert Mustacchi #define INITTREE(x,y)
36*4d9fdb46SRobert Mustacchi #endif /* HASHSEARCH */
37*4d9fdb46SRobert Mustacchi 
38*4d9fdb46SRobert Mustacchi 
39*4d9fdb46SRobert Mustacchi /* Contexts are in a list in a dbg and
40*4d9fdb46SRobert Mustacchi    do not move once established.
41*4d9fdb46SRobert Mustacchi    So saving one is ok. as long as the dbg
42*4d9fdb46SRobert Mustacchi    exists. */
43*4d9fdb46SRobert Mustacchi struct Dwarf_Tied_Entry_s {
44*4d9fdb46SRobert Mustacchi   Dwarf_Sig8 dt_key;
45*4d9fdb46SRobert Mustacchi   Dwarf_CU_Context dt_context;
46*4d9fdb46SRobert Mustacchi };
47*4d9fdb46SRobert Mustacchi 
48*4d9fdb46SRobert Mustacchi int _dwarf_tied_compare_function(const void *l, const void *r);
49*4d9fdb46SRobert Mustacchi void * _dwarf_tied_make_entry(Dwarf_Sig8 *key, Dwarf_CU_Context val);
50*4d9fdb46SRobert Mustacchi DW_TSHASHTYPE _dwarf_tied_data_hashfunc(const void *keyp);
51*4d9fdb46SRobert Mustacchi 
52*4d9fdb46SRobert Mustacchi int
53*4d9fdb46SRobert Mustacchi _dwarf_loop_reading_debug_info_for_cu(
54*4d9fdb46SRobert Mustacchi     Dwarf_Debug tieddbg,
55*4d9fdb46SRobert Mustacchi     Dwarf_Sig8 sig,
56*4d9fdb46SRobert Mustacchi     Dwarf_Error *error);
57