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