003 File Manager
Current Path:
/usr/src/contrib/llvm-project/llvm/lib/ObjectYAML
usr
/
src
/
contrib
/
llvm-project
/
llvm
/
lib
/
ObjectYAML
/
📁
..
📄
COFFEmitter.cpp
(23.04 KB)
📄
COFFYAML.cpp
(21.38 KB)
📄
CodeViewYAMLDebugSections.cpp
(33.73 KB)
📄
CodeViewYAMLSymbols.cpp
(22.05 KB)
📄
CodeViewYAMLTypeHashing.cpp
(2.89 KB)
📄
CodeViewYAMLTypes.cpp
(30.23 KB)
📄
DWARFEmitter.cpp
(18.58 KB)
📄
DWARFVisitor.cpp
(6.63 KB)
📄
DWARFVisitor.h
(2.8 KB)
📄
DWARFYAML.cpp
(8.96 KB)
📄
ELFEmitter.cpp
(67.52 KB)
📄
ELFYAML.cpp
(54.88 KB)
📄
MachOEmitter.cpp
(22.41 KB)
📄
MachOYAML.cpp
(21.85 KB)
📄
MinidumpEmitter.cpp
(8.41 KB)
📄
MinidumpYAML.cpp
(21.67 KB)
📄
ObjectYAML.cpp
(2.67 KB)
📄
WasmEmitter.cpp
(21.57 KB)
📄
WasmYAML.cpp
(20.39 KB)
📄
XCOFFYAML.cpp
(2.86 KB)
📄
YAML.cpp
(2.11 KB)
📄
yaml2obj.cpp
(2.22 KB)
Editing: yaml2obj.cpp
//===-- yaml2obj.cpp ------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "llvm/ObjectYAML/yaml2obj.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/Twine.h" #include "llvm/Object/ObjectFile.h" #include "llvm/ObjectYAML/ObjectYAML.h" #include "llvm/Support/Errc.h" #include "llvm/Support/WithColor.h" #include "llvm/Support/YAMLTraits.h" namespace llvm { namespace yaml { bool convertYAML(yaml::Input &YIn, raw_ostream &Out, ErrorHandler ErrHandler, unsigned DocNum, uint64_t MaxSize) { unsigned CurDocNum = 0; do { if (++CurDocNum != DocNum) continue; yaml::YamlObjectFile Doc; YIn >> Doc; if (std::error_code EC = YIn.error()) { ErrHandler("failed to parse YAML input: " + EC.message()); return false; } if (Doc.Elf) return yaml2elf(*Doc.Elf, Out, ErrHandler, MaxSize); if (Doc.Coff) return yaml2coff(*Doc.Coff, Out, ErrHandler); if (Doc.MachO || Doc.FatMachO) return yaml2macho(Doc, Out, ErrHandler); if (Doc.Minidump) return yaml2minidump(*Doc.Minidump, Out, ErrHandler); if (Doc.Wasm) return yaml2wasm(*Doc.Wasm, Out, ErrHandler); ErrHandler("unknown document type"); return false; } while (YIn.nextDocument()); ErrHandler("cannot find the " + Twine(DocNum) + getOrdinalSuffix(DocNum).data() + " document"); return false; } std::unique_ptr<object::ObjectFile> yaml2ObjectFile(SmallVectorImpl<char> &Storage, StringRef Yaml, ErrorHandler ErrHandler) { Storage.clear(); raw_svector_ostream OS(Storage); yaml::Input YIn(Yaml); if (!convertYAML(YIn, OS, ErrHandler)) return {}; Expected<std::unique_ptr<object::ObjectFile>> ObjOrErr = object::ObjectFile::createObjectFile( MemoryBufferRef(OS.str(), "YamlObject")); if (ObjOrErr) return std::move(*ObjOrErr); ErrHandler(toString(ObjOrErr.takeError())); return {}; } } // namespace yaml } // namespace llvm
Upload File
Create Folder