diff options
Diffstat (limited to 'contrib/llvm/lib/ObjectYAML/MachOYAML.cpp')
-rw-r--r-- | contrib/llvm/lib/ObjectYAML/MachOYAML.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/contrib/llvm/lib/ObjectYAML/MachOYAML.cpp b/contrib/llvm/lib/ObjectYAML/MachOYAML.cpp index d819e80..a033a79 100644 --- a/contrib/llvm/lib/ObjectYAML/MachOYAML.cpp +++ b/contrib/llvm/lib/ObjectYAML/MachOYAML.cpp @@ -14,6 +14,7 @@ #include "llvm/ObjectYAML/MachOYAML.h" #include "llvm/Support/Casting.h" #include "llvm/Support/Format.h" +#include "llvm/Support/Host.h" #include "llvm/Support/MachO.h" #include <string.h> // For memcpy, memset and strnlen. @@ -22,6 +23,13 @@ namespace llvm { MachOYAML::LoadCommand::~LoadCommand() {} +bool MachOYAML::LinkEditData::isEmpty() const { + return 0 == + RebaseOpcodes.size() + BindOpcodes.size() + WeakBindOpcodes.size() + + LazyBindOpcodes.size() + ExportTrie.Children.size() + + NameList.size() + StringTable.size(); +} + namespace yaml { void ScalarTraits<char_16>::output(const char_16 &Val, void *, @@ -93,9 +101,17 @@ void MappingTraits<MachOYAML::Object>::mapping(IO &IO, IO.setContext(&Object); } IO.mapTag("!mach-o", true); + IO.mapOptional("IsLittleEndian", Object.IsLittleEndian, + sys::IsLittleEndianHost); + Object.DWARF.IsLittleEndian = Object.IsLittleEndian; + IO.mapRequired("FileHeader", Object.Header); IO.mapOptional("LoadCommands", Object.LoadCommands); - IO.mapOptional("LinkEditData", Object.LinkEdit); + if(!Object.LinkEdit.isEmpty() || !IO.outputting()) + IO.mapOptional("LinkEditData", Object.LinkEdit); + + if(!Object.DWARF.isEmpty() || !IO.outputting()) + IO.mapOptional("DWARF", Object.DWARF); if (IO.getContext() == &Object) IO.setContext(nullptr); @@ -138,7 +154,8 @@ void MappingTraits<MachOYAML::LinkEditData>::mapping( IO.mapOptional("BindOpcodes", LinkEditData.BindOpcodes); IO.mapOptional("WeakBindOpcodes", LinkEditData.WeakBindOpcodes); IO.mapOptional("LazyBindOpcodes", LinkEditData.LazyBindOpcodes); - IO.mapOptional("ExportTrie", LinkEditData.ExportTrie); + if(LinkEditData.ExportTrie.Children.size() > 0 || !IO.outputting()) + IO.mapOptional("ExportTrie", LinkEditData.ExportTrie); IO.mapOptional("NameList", LinkEditData.NameList); IO.mapOptional("StringTable", LinkEditData.StringTable); } |