blob: 05a5b52658dbbb41f09b865380489ca9fe8438b0 [file] [log] [blame]
Ulrich Drepperb08d5a82005-07-26 05:00:05 +00001/* Return string associated with given attribute.
2 Copyright (C) 2003, 2005 Red Hat, Inc.
3 Written by Ulrich Drepper <drepper@redhat.com>, 2003.
4
5 This program is Open Source software; you can redistribute it and/or
6 modify it under the terms of the Open Software License version 1.0 as
7 published by the Open Source Initiative.
8
9 You should have received a copy of the Open Software License along
10 with this program; if not, you may obtain a copy of the Open Software
11 License version 1.0 from http://www.opensource.org/licenses/osl.php or
12 by writing the Open Source Initiative c/o Lawrence Rosen, Esq.,
13 3001 King Ranch Road, Ukiah, CA 95482. */
14
15#ifdef HAVE_CONFIG_H
16# include <config.h>
17#endif
18
19#include "libdwP.h"
20#include <string.h>
21
22
23int
24dwarf_haschildren (die)
25 Dwarf_Die *die;
26{
27 /* Find the abbreviation entry. */
28 Dwarf_Abbrev *abbrevp = die->abbrev;
29 if (abbrevp != (Dwarf_Abbrev *) -1l)
30 {
31 const unsigned char *readp = (unsigned char *) die->addr;
32
33 /* First we have to get the abbreviation code so that we can decode
34 the data in the DIE. */
35 unsigned int abbrev_code;
36 get_uleb128 (abbrev_code, readp);
37
38 abbrevp = __libdw_findabbrev (die->cu, abbrev_code);
39 die->abbrev = abbrevp ?: (Dwarf_Abbrev *) -1l;
40 }
41 if (unlikely (die->abbrev == (Dwarf_Abbrev *) -1l))
42 {
43 __libdw_seterrno (DWARF_E_INVALID_DWARF);
44 return 0;
45 }
46
47 return die->abbrev->has_children;
48}
49INTDEF (dwarf_haschildren)