diff options
| author | Chris Bieneman <beanz@apple.com> | 2016-08-17 21:46:04 +0000 |
|---|---|---|
| committer | Chris Bieneman <beanz@apple.com> | 2016-08-17 21:46:04 +0000 |
| commit | 432ba9d89a0dfdeedc96a39cb302d9517ab6f559 (patch) | |
| tree | 31781d9a7c81d0e83eaa0c5d8210c04272a59cba /llvm/lib/ObjectYAML | |
| parent | 269762dad347a916e342360f0330869ca0938e60 (diff) | |
| download | bcm5719-llvm-432ba9d89a0dfdeedc96a39cb302d9517ab6f559.tar.gz bcm5719-llvm-432ba9d89a0dfdeedc96a39cb302d9517ab6f559.zip | |
[macho2yaml] Don't write empty linkedit data
Since I stopped writing empty export tries it causes LinkEdit to potentially be completely empty which results in invalid yaml being generated.
To prevent this we skip linkedit data if it is empty.
llvm-svn: 278985
Diffstat (limited to 'llvm/lib/ObjectYAML')
| -rw-r--r-- | llvm/lib/ObjectYAML/MachOYAML.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/ObjectYAML/MachOYAML.cpp b/llvm/lib/ObjectYAML/MachOYAML.cpp index 5825d0042eb..984ca0b9d01 100644 --- a/llvm/lib/ObjectYAML/MachOYAML.cpp +++ b/llvm/lib/ObjectYAML/MachOYAML.cpp @@ -22,6 +22,10 @@ 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 *, @@ -95,7 +99,8 @@ void MappingTraits<MachOYAML::Object>::mapping(IO &IO, IO.mapTag("!mach-o", true); 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 (IO.getContext() == &Object) IO.setContext(nullptr); |

