LLVM
17.0.0git
include
llvm
DebugInfo
GSYM
DwarfTransformer.h
Go to the documentation of this file.
1
//===- DwarfTransformer.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_GSYM_DWARFTRANSFORMER_H
10
#define LLVM_DEBUGINFO_GSYM_DWARFTRANSFORMER_H
11
12
#include "
llvm/ADT/StringRef.h
"
13
#include "
llvm/DebugInfo/GSYM/ExtractRanges.h
"
14
#include "
llvm/Support/Error.h
"
15
16
namespace
llvm
{
17
18
class
raw_ostream;
19
20
namespace
gsym {
21
22
struct
CUInfo
;
23
struct
FunctionInfo
;
24
class
GsymCreator
;
25
26
/// A class that transforms the DWARF in a DWARFContext into GSYM information
27
/// by populating the GsymCreator object that it is constructed with. This
28
/// class supports converting all DW_TAG_subprogram DIEs into
29
/// gsym::FunctionInfo objects that includes line table information and inline
30
/// function information. Creating a separate class to transform this data
31
/// allows this class to be unit tested.
32
class
DwarfTransformer
{
33
public
:
34
35
/// Create a DWARF transformer.
36
///
37
/// \param D The DWARF to use when converting to GSYM.
38
///
39
/// \param OS The stream to log warnings and non fatal issues to.
40
///
41
/// \param G The GSYM creator to populate with the function information
42
/// from the debug info.
43
DwarfTransformer
(
DWARFContext
&
D
,
raw_ostream
&
OS
,
GsymCreator
&
G
) :
44
DICtx(
D
), Log(
OS
), Gsym(
G
) {}
45
46
/// Extract the DWARF from the supplied object file and convert it into the
47
/// Gsym format in the GsymCreator object that is passed in. Returns an
48
/// error if something fatal is encountered.
49
///
50
/// \returns An error indicating any fatal issues that happen when parsing
51
/// the DWARF, or Error::success() if all goes well.
52
llvm::Error
convert
(
uint32_t
NumThreads);
53
54
llvm::Error
verify
(
StringRef
GsymPath);
55
56
57
private
:
58
59
/// Parse the DWARF in the object file and convert it into the GsymCreator.
60
Error
parse
();
61
62
/// Handle any DIE (debug info entry) from the DWARF.
63
///
64
/// This function will find all DW_TAG_subprogram DIEs that convert them into
65
/// GSYM FuntionInfo objects and add them to the GsymCreator supplied during
66
/// construction. The DIE and all its children will be recursively parsed
67
/// with calls to this function.
68
///
69
/// \param Strm The thread specific log stream for any non fatal errors and
70
/// warnings. Once a thread has finished parsing an entire compile unit, all
71
/// information in this temporary stream will be forwarded to the member
72
/// variable log. This keeps logging thread safe.
73
///
74
/// \param CUI The compile unit specific information that contains the DWARF
75
/// line table, cached file list, and other compile unit specific
76
/// information.
77
///
78
/// \param Die The DWARF debug info entry to parse.
79
void
handleDie(
raw_ostream
&Strm,
CUInfo
&CUI,
DWARFDie
Die);
80
81
DWARFContext
&DICtx;
82
raw_ostream
&Log;
83
GsymCreator
&Gsym;
84
85
friend
class
DwarfTransformerTest
;
86
};
87
88
}
// namespace gsym
89
}
// namespace llvm
90
91
#endif
// LLVM_DEBUGINFO_GSYM_DWARFTRANSFORMER_H
D
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
convert
expand large fp convert
Definition:
ExpandLargeFpConvert.cpp:659
ExtractRanges.h
G
#define G(x, y, z)
Definition:
MD5.cpp:56
verify
ppc ctr loops verify
Definition:
PPCCTRLoopsVerify.cpp:76
OS
raw_pwrite_stream & OS
Definition:
SampleProfWriter.cpp:53
StringRef.h
llvm::DWARFContext
DWARFContext This data structure is the top level entity that deals with dwarf debug information pars...
Definition:
DWARFContext.h:46
llvm::DWARFDie
Utility class that carries the DWARF compile/type unit and the debug info entry in an object.
Definition:
DWARFDie.h:42
llvm::Error
Lightweight error class with error context and mandatory checking.
Definition:
Error.h:156
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition:
StringRef.h:50
llvm::gsym::DwarfTransformer
A class that transforms the DWARF in a DWARFContext into GSYM information by populating the GsymCreat...
Definition:
DwarfTransformer.h:32
llvm::gsym::DwarfTransformer::DwarfTransformerTest
friend class DwarfTransformerTest
Definition:
DwarfTransformer.h:85
llvm::gsym::DwarfTransformer::DwarfTransformer
DwarfTransformer(DWARFContext &D, raw_ostream &OS, GsymCreator &G)
Create a DWARF transformer.
Definition:
DwarfTransformer.h:43
llvm::gsym::GsymCreator
GsymCreator is used to emit GSYM data to a stand alone file or section within a file.
Definition:
GsymCreator.h:133
llvm::raw_ostream
This class implements an extremely fast bulk output stream that can only output to a stream.
Definition:
raw_ostream.h:52
uint32_t
Error.h
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::gsym::CUInfo
Definition:
DwarfTransformer.cpp:29
llvm::gsym::FunctionInfo
Function information in GSYM files encodes information for one contiguous address range.
Definition:
FunctionInfo.h:88
parse
Definition:
regcomp.c:192
Generated on Fri Mar 31 2023 19:07:10 for LLVM by
1.9.6