149d3bc91SRichard Lowe /*
249d3bc91SRichard Lowe 
307dc1947SRichard Lowe   Copyright (C) 2000,2004 Silicon Graphics, Inc.  All Rights Reserved.
449d3bc91SRichard Lowe 
549d3bc91SRichard Lowe   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
749d3bc91SRichard Lowe   as published by the Free Software Foundation.
849d3bc91SRichard Lowe 
949d3bc91SRichard Lowe   This program is distributed in the hope that it would be useful, but
1049d3bc91SRichard Lowe   WITHOUT ANY WARRANTY; without even the implied warranty of
11*4d9fdb46SRobert Mustacchi   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1249d3bc91SRichard Lowe 
1349d3bc91SRichard Lowe   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
1649d3bc91SRichard Lowe   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.
1949d3bc91SRichard Lowe 
2007dc1947SRichard Lowe   You should have received a copy of the GNU Lesser General Public
2107dc1947SRichard Lowe   License along with this program; if not, write the Free Software
2207dc1947SRichard Lowe   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
2349d3bc91SRichard Lowe   USA.
2449d3bc91SRichard Lowe 
2549d3bc91SRichard Lowe */
2649d3bc91SRichard Lowe 
2749d3bc91SRichard Lowe 
2849d3bc91SRichard Lowe 
2949d3bc91SRichard Lowe 
30*4d9fdb46SRobert Mustacchi /*
31*4d9fdb46SRobert Mustacchi     This struct holds the abbreviation table, before they are written
32*4d9fdb46SRobert Mustacchi     on disk. Holds a linked list of abbreviations, each consisting of
33*4d9fdb46SRobert Mustacchi     a bitmap for attributes and a bitmap for forms
3449d3bc91SRichard Lowe */
3549d3bc91SRichard Lowe typedef struct Dwarf_P_Abbrev_s *Dwarf_P_Abbrev;
3649d3bc91SRichard Lowe 
3749d3bc91SRichard Lowe struct Dwarf_P_Abbrev_s {
38*4d9fdb46SRobert Mustacchi     Dwarf_Unsigned abb_idx;   /* index of abbreviation */
39*4d9fdb46SRobert Mustacchi     Dwarf_Tag abb_tag; 	      /* tag of die */
40*4d9fdb46SRobert Mustacchi     Dwarf_Ubyte abb_children; /* if children are present */
41*4d9fdb46SRobert Mustacchi     Dwarf_Unsigned *abb_attrs;  /* holds names of attrs */
42*4d9fdb46SRobert Mustacchi     Dwarf_Unsigned *abb_forms;  /* forms of attributes */
43*4d9fdb46SRobert Mustacchi 
44*4d9fdb46SRobert Mustacchi     /* 0 but if DW_FORM_implicit_value is value */
45*4d9fdb46SRobert Mustacchi     Dwarf_Signed *abb_implicits;
46*4d9fdb46SRobert Mustacchi     int abb_n_attr;           /* num of attrs = # of forms */
4749d3bc91SRichard Lowe     Dwarf_P_Abbrev abb_next;
4849d3bc91SRichard Lowe };
4949d3bc91SRichard Lowe 
5049d3bc91SRichard Lowe /* used in pro_section.c */
5149d3bc91SRichard Lowe 
5249d3bc91SRichard Lowe int _dwarf_pro_add_AT_fde(Dwarf_P_Debug dbg, Dwarf_P_Die die,
53*4d9fdb46SRobert Mustacchi     Dwarf_Unsigned offset, Dwarf_Error * error);
5449d3bc91SRichard Lowe 
5549d3bc91SRichard Lowe int _dwarf_pro_add_AT_stmt_list(Dwarf_P_Debug dbg,
56*4d9fdb46SRobert Mustacchi     Dwarf_P_Die first_die,
57*4d9fdb46SRobert Mustacchi     Dwarf_Error * error);
58*4d9fdb46SRobert Mustacchi 
5949d3bc91SRichard Lowe 
6049d3bc91SRichard Lowe int _dwarf_pro_add_AT_macro_info(Dwarf_P_Debug dbg,
61*4d9fdb46SRobert Mustacchi     Dwarf_P_Die first_die,
62*4d9fdb46SRobert Mustacchi     Dwarf_Unsigned offset,
63*4d9fdb46SRobert Mustacchi     Dwarf_Error * error);
64*4d9fdb46SRobert Mustacchi 
65*4d9fdb46SRobert Mustacchi int _dwarf_pro_set_string_attr(Dwarf_P_Attribute new_attr,
66*4d9fdb46SRobert Mustacchi     Dwarf_P_Debug dbg,
67*4d9fdb46SRobert Mustacchi     char *name,
68*4d9fdb46SRobert Mustacchi     Dwarf_Error *error);
69*4d9fdb46SRobert Mustacchi 
70*4d9fdb46SRobert Mustacchi /* adds an attribute to a die */
71*4d9fdb46SRobert Mustacchi void _dwarf_pro_add_at_to_die(Dwarf_P_Die die, Dwarf_P_Attribute attr);
72