149d3bc91SRichard Lowe /*
249d3bc91SRichard Lowe 
307dc1947SRichard Lowe   Copyright (C) 2000,2004 Silicon Graphics, Inc.  All Rights Reserved.
4*4d9fdb46SRobert Mustacchi   Portions Copyright 2011 David Anderson.  All Rights Reserved.
549d3bc91SRichard Lowe 
649d3bc91SRichard Lowe   This program is free software; you can redistribute it and/or modify it
7*4d9fdb46SRobert Mustacchi   under the terms of version 2.1 of the GNU Lesser General Public License
849d3bc91SRichard Lowe   as published by the Free Software Foundation.
949d3bc91SRichard Lowe 
1049d3bc91SRichard Lowe   This program is distributed in the hope that it would be useful, but
1149d3bc91SRichard Lowe   WITHOUT ANY WARRANTY; without even the implied warranty of
12*4d9fdb46SRobert Mustacchi   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1349d3bc91SRichard Lowe 
1449d3bc91SRichard Lowe   Further, this software is distributed without any warranty that it is
15*4d9fdb46SRobert Mustacchi   free of the rightful claim of any third person regarding infringement
16*4d9fdb46SRobert Mustacchi   or the like.  Any license provided herein, whether implied or
1749d3bc91SRichard Lowe   otherwise, applies only to this software file.  Patent licenses, if
18*4d9fdb46SRobert Mustacchi   any, provided herein do not apply to combinations of this program with
19*4d9fdb46SRobert Mustacchi   other software, or any other product whatsoever.
2049d3bc91SRichard Lowe 
21*4d9fdb46SRobert Mustacchi   You should have received a copy of the GNU Lesser General Public
22*4d9fdb46SRobert Mustacchi   License along with this program; if not, write the Free Software
2307dc1947SRichard Lowe   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
2449d3bc91SRichard Lowe   USA.
2549d3bc91SRichard Lowe 
2649d3bc91SRichard Lowe */
2749d3bc91SRichard Lowe 
2849d3bc91SRichard Lowe #include "config.h"
2949d3bc91SRichard Lowe #include "libdwarfdefs.h"
3049d3bc91SRichard Lowe #include <stdio.h>
3149d3bc91SRichard Lowe #include <string.h>
3249d3bc91SRichard Lowe #ifdef HAVE_ELFACCESS_H
3349d3bc91SRichard Lowe #include <elfaccess.h>
3449d3bc91SRichard Lowe #endif
3549d3bc91SRichard Lowe #include "pro_incl.h"
36*4d9fdb46SRobert Mustacchi #include <stddef.h>
37*4d9fdb46SRobert Mustacchi #include "dwarf.h"
38*4d9fdb46SRobert Mustacchi #include "libdwarf.h"
39*4d9fdb46SRobert Mustacchi #include "pro_opaque.h"
40*4d9fdb46SRobert Mustacchi #include "pro_error.h"
4149d3bc91SRichard Lowe #include "pro_section.h"
4249d3bc91SRichard Lowe 
4349d3bc91SRichard Lowe 
44*4d9fdb46SRobert Mustacchi /*  This function adds another public name to the
45*4d9fdb46SRobert Mustacchi     list of public names for the given Dwarf_P_Debug.
46*4d9fdb46SRobert Mustacchi     It returns 0 on error, and 1 otherwise.  */
4749d3bc91SRichard Lowe 
4849d3bc91SRichard Lowe Dwarf_Unsigned
dwarf_add_pubname(Dwarf_P_Debug dbg,Dwarf_P_Die die,char * pubname_name,Dwarf_Error * error)4949d3bc91SRichard Lowe dwarf_add_pubname(Dwarf_P_Debug dbg,
50*4d9fdb46SRobert Mustacchi     Dwarf_P_Die die,
51*4d9fdb46SRobert Mustacchi     char *pubname_name, Dwarf_Error * error)
52*4d9fdb46SRobert Mustacchi {
53*4d9fdb46SRobert Mustacchi     int res = 0;
54*4d9fdb46SRobert Mustacchi 
55*4d9fdb46SRobert Mustacchi     res =  _dwarf_add_simple_name_entry(dbg, die, pubname_name,
56*4d9fdb46SRobert Mustacchi         dwarf_snk_pubname, error);
57*4d9fdb46SRobert Mustacchi     if (res != DW_DLV_OK) {
58*4d9fdb46SRobert Mustacchi         return 0;
59*4d9fdb46SRobert Mustacchi     }
60*4d9fdb46SRobert Mustacchi     return 1;
61*4d9fdb46SRobert Mustacchi }
62*4d9fdb46SRobert Mustacchi 
63*4d9fdb46SRobert Mustacchi int
dwarf_add_pubname_a(Dwarf_P_Debug dbg,Dwarf_P_Die die,char * pubname_name,Dwarf_Error * error)64*4d9fdb46SRobert Mustacchi dwarf_add_pubname_a(Dwarf_P_Debug dbg,
65*4d9fdb46SRobert Mustacchi     Dwarf_P_Die die,
66*4d9fdb46SRobert Mustacchi     char *pubname_name, Dwarf_Error * error)
6749d3bc91SRichard Lowe {
68*4d9fdb46SRobert Mustacchi     int res = 0;
69*4d9fdb46SRobert Mustacchi 
70*4d9fdb46SRobert Mustacchi     res = _dwarf_add_simple_name_entry(dbg, die,
71*4d9fdb46SRobert Mustacchi         pubname_name,
72*4d9fdb46SRobert Mustacchi         dwarf_snk_pubname, error);
73*4d9fdb46SRobert Mustacchi     return res;
74*4d9fdb46SRobert Mustacchi }
75*4d9fdb46SRobert Mustacchi 
76*4d9fdb46SRobert Mustacchi 
77*4d9fdb46SRobert Mustacchi 
78*4d9fdb46SRobert Mustacchi Dwarf_Unsigned
dwarf_add_pubtype(Dwarf_P_Debug dbg,Dwarf_P_Die die,char * pubtype_name,Dwarf_Error * error)79*4d9fdb46SRobert Mustacchi dwarf_add_pubtype(Dwarf_P_Debug dbg,
80*4d9fdb46SRobert Mustacchi     Dwarf_P_Die die,
81*4d9fdb46SRobert Mustacchi     char *pubtype_name, Dwarf_Error * error)
82*4d9fdb46SRobert Mustacchi {
83*4d9fdb46SRobert Mustacchi     int res  = 0;
84*4d9fdb46SRobert Mustacchi 
85*4d9fdb46SRobert Mustacchi     res = _dwarf_add_simple_name_entry(dbg, die, pubtype_name,
86*4d9fdb46SRobert Mustacchi         dwarf_snk_pubtype, error);
87*4d9fdb46SRobert Mustacchi     if (res != DW_DLV_OK) {
88*4d9fdb46SRobert Mustacchi         return 0;
89*4d9fdb46SRobert Mustacchi     }
90*4d9fdb46SRobert Mustacchi     return 1;
91*4d9fdb46SRobert Mustacchi }
92*4d9fdb46SRobert Mustacchi int
dwarf_add_pubtype_a(Dwarf_P_Debug dbg,Dwarf_P_Die die,char * pubtype_name,Dwarf_Error * error)93*4d9fdb46SRobert Mustacchi dwarf_add_pubtype_a(Dwarf_P_Debug dbg,
94*4d9fdb46SRobert Mustacchi     Dwarf_P_Die die,
95*4d9fdb46SRobert Mustacchi     char *pubtype_name,
96*4d9fdb46SRobert Mustacchi     Dwarf_Error * error)
97*4d9fdb46SRobert Mustacchi {
98*4d9fdb46SRobert Mustacchi     int res = 0;
99*4d9fdb46SRobert Mustacchi 
100*4d9fdb46SRobert Mustacchi     res =    _dwarf_add_simple_name_entry(dbg, die, pubtype_name,
101*4d9fdb46SRobert Mustacchi         dwarf_snk_pubtype, error);
102*4d9fdb46SRobert Mustacchi     return res;
10349d3bc91SRichard Lowe }
104