summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
diff options
context:
space:
mode:
authorMichael J. Spencer <bigcheesegs@gmail.com>2013-11-08 21:04:20 +0000
committerMichael J. Spencer <bigcheesegs@gmail.com>2013-11-08 21:04:20 +0000
commitb8ab9f52ca7b5995e4926ab49c2f7559eb5bf401 (patch)
tree591fe39ecbe3864736477e78cba5c4f51bf3a07e /lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
parent1a642aef3792dc28ba270d821e73f7484e2edd4d (diff)
downloadbcm5719-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.cpp16
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));
OpenPOWER on IntegriCloud