1*4d9fdb46SRobert Mustacchi /*
2*4d9fdb46SRobert Mustacchi   Copyright (C) 2018 David Anderson  All Rights Reserved.
3*4d9fdb46SRobert Mustacchi 
4*4d9fdb46SRobert Mustacchi   This program is free software; you can redistribute it
5*4d9fdb46SRobert Mustacchi   and/or modify it under the terms of version 2.1 of the
6*4d9fdb46SRobert Mustacchi   GNU Lesser General Public License as published by the Free
7*4d9fdb46SRobert Mustacchi   Software Foundation.
8*4d9fdb46SRobert Mustacchi 
9*4d9fdb46SRobert Mustacchi   This program is distributed in the hope that it would be
10*4d9fdb46SRobert Mustacchi   useful, but WITHOUT ANY WARRANTY; without even the implied
11*4d9fdb46SRobert Mustacchi   warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12*4d9fdb46SRobert Mustacchi   PURPOSE.
13*4d9fdb46SRobert Mustacchi 
14*4d9fdb46SRobert Mustacchi   Further, this software is distributed without any warranty
15*4d9fdb46SRobert Mustacchi   that it is free of the rightful claim of any third person
16*4d9fdb46SRobert Mustacchi   regarding infringement or the like.  Any license provided
17*4d9fdb46SRobert Mustacchi   herein, whether implied or otherwise, applies only to this
18*4d9fdb46SRobert Mustacchi   software file.  Patent licenses, if any, provided herein
19*4d9fdb46SRobert Mustacchi   do not apply to combinations of this program with other
20*4d9fdb46SRobert Mustacchi   software, or any other product whatsoever.
21*4d9fdb46SRobert Mustacchi 
22*4d9fdb46SRobert Mustacchi   You should have received a copy of the GNU Lesser General
23*4d9fdb46SRobert Mustacchi   Public License along with this program; if not, write the
24*4d9fdb46SRobert Mustacchi   Free Software Foundation, Inc., 51 Franklin Street - Fifth
25*4d9fdb46SRobert Mustacchi   Floor, Boston MA 02110-1301, USA.
26*4d9fdb46SRobert Mustacchi 
27*4d9fdb46SRobert Mustacchi */
28*4d9fdb46SRobert Mustacchi 
29*4d9fdb46SRobert Mustacchi /*  The numbers here are almost all 32 bits.
30*4d9fdb46SRobert Mustacchi     Not long  long ever.
31*4d9fdb46SRobert Mustacchi     In the public function interfaces we'll use Dwarf_Unsigned though,
32*4d9fdb46SRobert Mustacchi     for call consistency with everything else.
33*4d9fdb46SRobert Mustacchi     Here we use Dwarf_Unsigned to avoid having to
34*4d9fdb46SRobert Mustacchi     even know what is or is not 32 bits. */
35*4d9fdb46SRobert Mustacchi 
36*4d9fdb46SRobert Mustacchi typedef Dwarf_Unsigned dn_type;
37*4d9fdb46SRobert Mustacchi 
38*4d9fdb46SRobert Mustacchi struct Dwarf_P_Dnames_Head_s {
39*4d9fdb46SRobert Mustacchi     Dwarf_Unsigned dh_unit_length;
40*4d9fdb46SRobert Mustacchi     unsigned       dh_version;
41*4d9fdb46SRobert Mustacchi     dn_type dh_comp_unit_count;
42*4d9fdb46SRobert Mustacchi     dn_type dh_local_type_unit_count;
43*4d9fdb46SRobert Mustacchi     dn_type dh_foreign_type_unit_count;
44*4d9fdb46SRobert Mustacchi     dn_type dh_bucket_count;
45*4d9fdb46SRobert Mustacchi     dn_type dh_name_count;
46*4d9fdb46SRobert Mustacchi     dn_type dh_abbrev_table_size;
47*4d9fdb46SRobert Mustacchi     dn_type dh_augmentation_string_size;
48*4d9fdb46SRobert Mustacchi     const char *   dh_augmentation_string;
49*4d9fdb46SRobert Mustacchi };
50*4d9fdb46SRobert Mustacchi 
51*4d9fdb46SRobert Mustacchi struct Dwarf_P_Dnames_uarray_s {
52*4d9fdb46SRobert Mustacchi     dn_type  dne_allocated;
53*4d9fdb46SRobert Mustacchi     dn_type  dne_used;
54*4d9fdb46SRobert Mustacchi     dn_type  *dne_values;
55*4d9fdb46SRobert Mustacchi };
56*4d9fdb46SRobert Mustacchi struct Dwarf_P_Dnames_sarray_s {
57*4d9fdb46SRobert Mustacchi     dn_type     dne_allocated;
58*4d9fdb46SRobert Mustacchi     dn_type     dne_used;
59*4d9fdb46SRobert Mustacchi     Dwarf_Sig8 *dne_values;
60*4d9fdb46SRobert Mustacchi };
61*4d9fdb46SRobert Mustacchi 
62*4d9fdb46SRobert Mustacchi 
63*4d9fdb46SRobert Mustacchi struct Dwarf_P_Dnames_s {
64*4d9fdb46SRobert Mustacchi     Dwarf_Small dn_create_section;
65*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_Head_s dn_header;
66*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_uarray_s dn_cunit_offset;
67*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_uarray_s dn_tunit_offset;
68*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_sarray_s dn_sunit_sigs;
69*4d9fdb46SRobert Mustacchi 
70*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_uarray_s dn_buckets;
71*4d9fdb46SRobert Mustacchi 
72*4d9fdb46SRobert Mustacchi     /* Hashes count applies to string offsets and entry offsets arrays too. */
73*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_uarray_s dn_hashes;
74*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_uarray_s dn_string_offsets;
75*4d9fdb46SRobert Mustacchi     struct Dwarf_P_Dnames_uarray_s dn_entry_pool;
76*4d9fdb46SRobert Mustacchi 
77*4d9fdb46SRobert Mustacchi     Dwarf_Small *dn_index_entry_pool;
78*4d9fdb46SRobert Mustacchi     Dwarf_Small  dn_index_entry_pool_size;
79*4d9fdb46SRobert Mustacchi     Dwarf_Small  dn_index_entry_pool_used;
80*4d9fdb46SRobert Mustacchi 
81*4d9fdb46SRobert Mustacchi };
82