diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2014-06-06 07:41:57 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2014-06-06 07:41:57 +0000 |
commit | 3c9a2ee891cad60e8fd9ffe72c95b9ade3ece270 (patch) | |
tree | af269c16b4f27b2772f34bb1120f67025bdcb2bc /lib/Object | |
parent | 2c3e3b491eb60d61e0780c34fcf0b20355d2e431 (diff) | |
download | llvm-3c9a2ee891cad60e8fd9ffe72c95b9ade3ece270.tar.gz llvm-3c9a2ee891cad60e8fd9ffe72c95b9ade3ece270.tar.bz2 llvm-3c9a2ee891cad60e8fd9ffe72c95b9ade3ece270.tar.xz |
[yaml2obj][obj2yaml] Support ELF symbol's visibility flags (default/hidden/protected).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210316 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Object')
-rw-r--r-- | lib/Object/ELFYAML.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/Object/ELFYAML.cpp b/lib/Object/ELFYAML.cpp index 4c52f9c0be..dc3d467825 100644 --- a/lib/Object/ELFYAML.cpp +++ b/lib/Object/ELFYAML.cpp @@ -368,6 +368,16 @@ void ScalarEnumerationTraits<ELFYAML::ELF_STT>::enumeration( #undef ECase } +void ScalarEnumerationTraits<ELFYAML::ELF_STV>::enumeration( + IO &IO, ELFYAML::ELF_STV &Value) { +#define ECase(X) IO.enumCase(Value, #X, ELF::X); + ECase(STV_DEFAULT) + ECase(STV_INTERNAL) + ECase(STV_HIDDEN) + ECase(STV_PROTECTED) +#undef ECase +} + void ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration( IO &IO, ELFYAML::ELF_REL &Value) { const auto *Object = static_cast<ELFYAML::Object *>(IO.getContext()); @@ -649,6 +659,7 @@ void MappingTraits<ELFYAML::Symbol>::mapping(IO &IO, ELFYAML::Symbol &Symbol) { IO.mapOptional("Section", Symbol.Section, StringRef()); IO.mapOptional("Value", Symbol.Value, Hex64(0)); IO.mapOptional("Size", Symbol.Size, Hex64(0)); + IO.mapOptional("Visibility", Symbol.Visibility, ELFYAML::ELF_STV(0)); } void MappingTraits<ELFYAML::LocalGlobalWeakSymbols>::mapping( |