LLVM  10.0.0svn
DWARFDebugPubTable.h
Go to the documentation of this file.
1 //===- DWARFDebugPubTable.h -------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLVM_DEBUGINFO_DWARF_DWARFDEBUGPUBTABLE_H
10 #define LLVM_DEBUGINFO_DWARF_DWARFDEBUGPUBTABLE_H
11 
12 #include "llvm/ADT/ArrayRef.h"
13 #include "llvm/ADT/StringRef.h"
16 #include <cstdint>
17 #include <vector>
18 
19 namespace llvm {
20 
21 class raw_ostream;
22 
23 /// Represents structure for holding and parsing .debug_pub* tables.
25 public:
26  struct Entry {
27  /// Section offset from the beginning of the compilation unit.
28  uint64_t SecOffset;
29 
30  /// An entry of the various gnu_pub* debug sections.
32 
33  /// The name of the object as given by the DW_AT_name attribute of the
34  /// referenced DIE.
36  };
37 
38  /// Each table consists of sets of variable length entries. Each set describes
39  /// the names of global objects and functions, or global types, respectively,
40  /// whose definitions are represented by debugging information entries owned
41  /// by a single compilation unit.
42  struct Set {
43  /// The total length of the entries for that set, not including the length
44  /// field itself.
46 
47  /// This number is specific to the name lookup table and is independent of
48  /// the DWARF version number.
49  uint16_t Version;
50 
51  /// The offset from the beginning of the .debug_info section of the
52  /// compilation unit header referenced by the set.
53  uint64_t Offset;
54 
55  /// The size in bytes of the contents of the .debug_info section generated
56  /// to represent that compilation unit.
58 
59  std::vector<Entry> Entries;
60  };
61 
62 private:
63  std::vector<Set> Sets;
64 
65  /// gnu styled tables contains additional information.
66  /// This flag determines whether or not section we parse is debug_gnu* table.
67  bool GnuStyle;
68 
69 public:
70  DWARFDebugPubTable(const DWARFObject &Obj, const DWARFSection &Sec,
71  bool LittleEndian, bool GnuStyle);
72 
73  void dump(raw_ostream &OS) const;
74 
75  ArrayRef<Set> getData() { return Sets; }
76 };
77 
78 } // end namespace llvm
79 
80 #endif // LLVM_DEBUGINFO_DWARF_DWARFDEBUGPUBTABLE_H
This class represents lattice values for constants.
Definition: AllocatorList.h:23
Represents structure for holding and parsing .debug_pub* tables.
void dump(raw_ostream &OS) const
uint64_t Offset
The offset from the beginning of the .debug_info section of the compilation unit header referenced by...
Each table consists of sets of variable length entries.
DWARFDebugPubTable(const DWARFObject &Obj, const DWARFSection &Sec, bool LittleEndian, bool GnuStyle)
Describes an entry of the various gnu_pub* debug sections.
Definition: Dwarf.h:561
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
Definition: APInt.h:32
uint64_t SecOffset
Section offset from the beginning of the compilation unit.
uint32_t Size
The size in bytes of the contents of the .debug_info section generated to represent that compilation ...
uint32_t Length
The total length of the entries for that set, not including the length field itself.
This file contains constants used for implementing Dwarf debug support.
dwarf::PubIndexEntryDescriptor Descriptor
An entry of the various gnu_pub* debug sections.
uint16_t Version
This number is specific to the name lookup table and is independent of the DWARF version number...
This class implements an extremely fast bulk output stream that can only output to a stream...
Definition: raw_ostream.h:45
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:48
StringRef Name
The name of the object as given by the DW_AT_name attribute of the referenced DIE.