diff options
author | Michael J. Spencer <bigcheesegs@gmail.com> | 2013-11-08 21:04:20 +0000 |
---|---|---|
committer | Michael J. Spencer <bigcheesegs@gmail.com> | 2013-11-08 21:04:20 +0000 |
commit | b8ab9f52ca7b5995e4926ab49c2f7559eb5bf401 (patch) | |
tree | 591fe39ecbe3864736477e78cba5c4f51bf3a07e /lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp | |
parent | 1a642aef3792dc28ba270d821e73f7484e2edd4d (diff) | |
download | bcm5719-llvm-b8ab9f52ca7b5995e4926ab49c2f7559eb5bf401.tar.gz bcm5719-llvm-b8ab9f52ca7b5995e4926ab49c2f7559eb5bf401.zip |
Add explictly exported atoms and export R_*_COPY'ed atoms.
llvm-svn: 194278
Diffstat (limited to 'lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp')
-rw-r--r-- | lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp index 8a7eb4c5296..9fb136ff0af 100644 --- a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp +++ b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp @@ -384,6 +384,13 @@ template <> struct ScalarEnumerationTraits<lld::DefinedAtom::DeadStripKind> { } }; +template <> struct ScalarEnumerationTraits<lld::DefinedAtom::DynamicExport> { + static void enumeration(IO &io, lld::DefinedAtom::DynamicExport &value) { + io.enumCase(value, "normal", lld::DefinedAtom::dynamicExportNormal); + io.enumCase(value, "always", lld::DefinedAtom::dynamicExportAlways); + } +}; + template <> struct ScalarEnumerationTraits<lld::DefinedAtom::ContentPermissions> { static void enumeration(IO &io, lld::DefinedAtom::ContentPermissions &value) { @@ -812,8 +819,9 @@ template <> struct MappingTraits<const lld::DefinedAtom *> { _merge(atom->merge()), _contentType(atom->contentType()), _alignment(atom->alignment()), _sectionChoice(atom->sectionChoice()), _sectionPosition(atom->sectionPosition()), - _deadStrip(atom->deadStrip()), _permissions(atom->permissions()), - _size(atom->size()), _sectionName(atom->customSectionName()) { + _deadStrip(atom->deadStrip()), _dynamicExport(atom->dynamicExport()), + _permissions(atom->permissions()), _size(atom->size()), + _sectionName(atom->customSectionName()) { for (const lld::Reference *r : *atom) _references.push_back(r); if (!atom->occupiesDiskSpace()) @@ -862,6 +870,7 @@ template <> struct MappingTraits<const lld::DefinedAtom *> { virtual StringRef customSectionName() const { return _sectionName; } virtual SectionPosition sectionPosition() const { return _sectionPosition; } virtual DeadStripKind deadStrip() const { return _deadStrip; } + virtual DynamicExport dynamicExport() const { return _dynamicExport; } virtual ContentPermissions permissions() const { return _permissions; } virtual bool isAlias() const { return false; } ArrayRef<uint8_t> rawContent() const { @@ -905,6 +914,7 @@ template <> struct MappingTraits<const lld::DefinedAtom *> { SectionChoice _sectionChoice; SectionPosition _sectionPosition; DeadStripKind _deadStrip; + DynamicExport _dynamicExport; ContentPermissions _permissions; uint32_t _ordinal; std::vector<ImplicitHex8> _content; @@ -949,6 +959,8 @@ template <> struct MappingTraits<const lld::DefinedAtom *> { lld::DefinedAtom::sectionPositionAny); io.mapOptional("dead-strip", keys->_deadStrip, lld::DefinedAtom::deadStripNormal); + io.mapOptional("dynamic-export", keys->_dynamicExport, + lld::DefinedAtom::dynamicExportNormal); // default permissions based on content type io.mapOptional("permissions", keys->_permissions, lld::DefinedAtom::permissions(keys->_contentType)); |