1 //===--- DWARFEmitter.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 /// \file
9 /// Common declarations for yaml2obj
10 //===----------------------------------------------------------------------===//
11 
12 #ifndef LLVM_OBJECTYAML_DWARFEMITTER_H
13 #define LLVM_OBJECTYAML_DWARFEMITTER_H
14 
15 #include "llvm/ADT/StringMap.h"
16 #include "llvm/ADT/StringRef.h"
17 #include "llvm/Support/Error.h"
18 #include "llvm/Support/MemoryBuffer.h"
19 #include "llvm/TargetParser/Host.h"
20 #include <memory>
21 
22 namespace llvm {
23 
24 class raw_ostream;
25 
26 namespace DWARFYAML {
27 
28 struct Data;
29 
30 Error emitDebugAbbrev(raw_ostream &OS, const Data &DI);
31 Error emitDebugStr(raw_ostream &OS, const Data &DI);
32 
33 Error emitDebugAranges(raw_ostream &OS, const Data &DI);
34 Error emitDebugRanges(raw_ostream &OS, const Data &DI);
35 Error emitDebugPubnames(raw_ostream &OS, const Data &DI);
36 Error emitDebugPubtypes(raw_ostream &OS, const Data &DI);
37 Error emitDebugGNUPubnames(raw_ostream &OS, const Data &DI);
38 Error emitDebugGNUPubtypes(raw_ostream &OS, const Data &DI);
39 Error emitDebugInfo(raw_ostream &OS, const Data &DI);
40 Error emitDebugLine(raw_ostream &OS, const Data &DI);
41 Error emitDebugAddr(raw_ostream &OS, const Data &DI);
42 Error emitDebugStrOffsets(raw_ostream &OS, const Data &DI);
43 Error emitDebugRnglists(raw_ostream &OS, const Data &DI);
44 Error emitDebugLoclists(raw_ostream &OS, const Data &DI);
45 
46 std::function<Error(raw_ostream &, const Data &)>
47 getDWARFEmitterByName(StringRef SecName);
48 Expected<StringMap<std::unique_ptr<MemoryBuffer>>>
49 emitDebugSections(StringRef YAMLString,
50                   bool IsLittleEndian = sys::IsLittleEndianHost,
51                   bool Is64BitAddrSize = true);
52 } // end namespace DWARFYAML
53 } // end namespace llvm
54 
55 #endif // LLVM_OBJECTYAML_DWARFEMITTER_H
56