Allow empty mappings for optional YAML input
authorDave Lee <davelee.com@gmail.com>
Thu, 16 Nov 2017 17:46:11 +0000 (17:46 +0000)
committerDave Lee <davelee.com@gmail.com>
Thu, 16 Nov 2017 17:46:11 +0000 (17:46 +0000)
commitc6f2e696958a6eb8c19c0d04dbde0b5c713afb62
treeb20eecd1358f03383e3c04cb64631493645b82ba
parent8010bf0a9269cbe8b2ce8618a7e8597ea52ae9ec
Allow empty mappings for optional YAML input

Summary:
This change fixes a bug where `obj2yaml` can in some cases produce YAML that
causes `yaml2obj` to error.

The ELF YAML document structure has a `Sections` mapping, which contains three
mappings, all of which are optional: `Local`, `Global`, and `Weak.` Any one of
these can be missing, but if all three are missing, then `yaml2obj` errors. This
change allows YAML input for cases like this one.

I have tested this with check-llvm and check-lld, and all tests passed.

This change is the result of test failures while working on D39582, which
introduces a `DynamicSymbols` mapping, which will be empty at times.

Reviewers: compnerd, jakehehrlich, silvas, kledzik, mehdi_amini, pcc

Reviewed By: compnerd

Subscribers: silvas, llvm-commits

Differential Revision: https://reviews.llvm.org/D39908

llvm-svn: 318428
llvm/lib/Support/YAMLTraits.cpp
llvm/test/tools/yaml2obj/empty-symbols.yaml [new file with mode: 0644]