149d3bc91SRichard Lowe /* 2*4d9fdb46SRobert Mustacchi Copyright (C) 2000 Silicon Graphics, Inc. All Rights Reserved. 3*4d9fdb46SRobert Mustacchi Portions Copyright (C) 2008-2019 David Anderson. All Rights Reserved. 449d3bc91SRichard Lowe 5*4d9fdb46SRobert Mustacchi This program is free software; you can redistribute it 6*4d9fdb46SRobert Mustacchi and/or modify it under the terms of version 2.1 of the 7*4d9fdb46SRobert Mustacchi GNU Lesser General Public License as published by the Free 8*4d9fdb46SRobert Mustacchi Software Foundation. 949d3bc91SRichard Lowe 10*4d9fdb46SRobert Mustacchi This program is distributed in the hope that it would be 11*4d9fdb46SRobert Mustacchi useful, but WITHOUT ANY WARRANTY; without even the implied 12*4d9fdb46SRobert Mustacchi warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 13*4d9fdb46SRobert Mustacchi PURPOSE. 1449d3bc91SRichard Lowe 15*4d9fdb46SRobert Mustacchi Further, this software is distributed without any warranty 16*4d9fdb46SRobert Mustacchi that it is free of the rightful claim of any third person 17*4d9fdb46SRobert Mustacchi regarding infringement or the like. Any license provided 18*4d9fdb46SRobert Mustacchi herein, whether implied or otherwise, applies only to this 19*4d9fdb46SRobert Mustacchi software file. Patent licenses, if any, provided herein 20*4d9fdb46SRobert Mustacchi do not apply to combinations of this program with other 21*4d9fdb46SRobert Mustacchi software, or any other product whatsoever. 2249d3bc91SRichard Lowe 23*4d9fdb46SRobert Mustacchi You should have received a copy of the GNU Lesser General 24*4d9fdb46SRobert Mustacchi Public License along with this program; if not, write 25*4d9fdb46SRobert Mustacchi the Free Software Foundation, Inc., 51 Franklin Street - 26*4d9fdb46SRobert Mustacchi Fifth Floor, Boston MA 02110-1301, USA. 2749d3bc91SRichard Lowe 2849d3bc91SRichard Lowe */ 2949d3bc91SRichard Lowe 3049d3bc91SRichard Lowe 3149d3bc91SRichard Lowe 3249d3bc91SRichard Lowe 33*4d9fdb46SRobert Mustacchi /* In a given CU, one of these is (eventually) set up 34*4d9fdb46SRobert Mustacchi for every abbreviation we need to find (and for all. 35*4d9fdb46SRobert Mustacchi those ealier in the abbreviations for that CU). 36*4d9fdb46SRobert Mustacchi So we don't want elements needlessly big. 3707dc1947SRichard Lowe */ 3849d3bc91SRichard Lowe struct Dwarf_Abbrev_s { 39*4d9fdb46SRobert Mustacchi /* No TAG should exceed DW_TAG_hi_user, 0xffff, but 40*4d9fdb46SRobert Mustacchi we do allow a larger value here. */ 41*4d9fdb46SRobert Mustacchi Dwarf_Unsigned dab_tag; 42*4d9fdb46SRobert Mustacchi /* Abbreviations are numbered (normally sequentially from 43*4d9fdb46SRobert Mustacchi 1 and so 16 bits is not enough! */ 44*4d9fdb46SRobert Mustacchi Dwarf_Unsigned dab_code; 45*4d9fdb46SRobert Mustacchi Dwarf_Small dab_has_child; 46*4d9fdb46SRobert Mustacchi /* dab_abbrev_ptr points to the abbreviations 47*4d9fdb46SRobert Mustacchi themselves in memory, the list of attr/form 48*4d9fdb46SRobert Mustacchi integers terminated by 0,0. */ 49*4d9fdb46SRobert Mustacchi Dwarf_Byte_Ptr dab_abbrev_ptr; 50*4d9fdb46SRobert Mustacchi Dwarf_Debug dab_dbg; 51*4d9fdb46SRobert Mustacchi 52*4d9fdb46SRobert Mustacchi /* Section global offset of the abbrev. */ 53*4d9fdb46SRobert Mustacchi Dwarf_Off dab_goffset; 54*4d9fdb46SRobert Mustacchi /* dab_count is the number of attr/form uleb pairs */ 55*4d9fdb46SRobert Mustacchi Dwarf_Off dab_count; 56*4d9fdb46SRobert Mustacchi 57*4d9fdb46SRobert Mustacchi /* When the caller cycles through attr/form pairs 58*4d9fdb46SRobert Mustacchi by index from zero this lets the code read just one 59*4d9fdb46SRobert Mustacchi pair to work. */ 60*4d9fdb46SRobert Mustacchi Dwarf_Byte_Ptr dab_next_ptr; 61*4d9fdb46SRobert Mustacchi Dwarf_Unsigned dab_next_index; 6249d3bc91SRichard Lowe }; 63*4d9fdb46SRobert Mustacchi 64*4d9fdb46SRobert Mustacchi int _dwarf_count_abbrev_entries(Dwarf_Debug dbg, 65*4d9fdb46SRobert Mustacchi Dwarf_Byte_Ptr abbrev_ptr, 66*4d9fdb46SRobert Mustacchi Dwarf_Byte_Ptr abbrev_section_end, 67*4d9fdb46SRobert Mustacchi Dwarf_Unsigned *abbrev_count_out, 68*4d9fdb46SRobert Mustacchi Dwarf_Byte_Ptr *abbrev_ptr_out, 69*4d9fdb46SRobert Mustacchi Dwarf_Error *error); 70