summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/ReaderWriter')
-rw-r--r--lld/lib/ReaderWriter/CoreLinkingContext.cpp5
-rw-r--r--lld/lib/ReaderWriter/ELF/Atoms.h7
-rw-r--r--lld/lib/ReaderWriter/Native/ReaderNative.cpp4
-rw-r--r--lld/lib/ReaderWriter/Native/WriterNative.cpp1
-rw-r--r--lld/lib/ReaderWriter/PECOFF/Atoms.h1
-rw-r--r--lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp1
6 files changed, 19 insertions, 0 deletions
diff --git a/lld/lib/ReaderWriter/CoreLinkingContext.cpp b/lld/lib/ReaderWriter/CoreLinkingContext.cpp
index 36ec7a2ed5c..0ee4b51af92 100644
--- a/lld/lib/ReaderWriter/CoreLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/CoreLinkingContext.cpp
@@ -63,6 +63,8 @@ public:
return DefinedAtom::permR_X;
}
+ bool isAlias() const override { return false; }
+
ArrayRef<uint8_t> rawContent() const override { return ArrayRef<uint8_t>(); }
reference_iterator begin() const override {
@@ -126,6 +128,8 @@ public:
return DefinedAtom::permRW_;
}
+ bool isAlias() const override { return false; }
+
ArrayRef<uint8_t> rawContent() const override { return ArrayRef<uint8_t>(); }
reference_iterator begin() const override {
@@ -269,3 +273,4 @@ void CoreLinkingContext::addPasses(PassManager &pm) {
}
Writer &CoreLinkingContext::writer() const { return *_writer; }
+
diff --git a/lld/lib/ReaderWriter/ELF/Atoms.h b/lld/lib/ReaderWriter/ELF/Atoms.h
index 81d1c7ee6f3..6fec07c18e8 100644
--- a/lld/lib/ReaderWriter/ELF/Atoms.h
+++ b/lld/lib/ReaderWriter/ELF/Atoms.h
@@ -381,6 +381,9 @@ public:
}
}
+ // FIXME: Not Sure if ELF supports alias atoms. Find out more.
+ bool isAlias() const override { return false; }
+
ArrayRef<uint8_t> rawContent() const override { return _contentData; }
DefinedAtom::reference_iterator begin() const override {
@@ -484,6 +487,8 @@ public:
virtual bool isThumb() const { return false; }
+ bool isAlias() const override { return false; }
+
ArrayRef<uint8_t> rawContent() const override { return _contentData; }
DefinedAtom::reference_iterator begin() const override {
@@ -566,6 +571,8 @@ public:
ContentPermissions permissions() const override { return permRW_; }
+ bool isAlias() const override { return false; }
+
ArrayRef<uint8_t> rawContent() const override { return ArrayRef<uint8_t>(); }
DefinedAtom::reference_iterator begin() const override {
diff --git a/lld/lib/ReaderWriter/Native/ReaderNative.cpp b/lld/lib/ReaderWriter/Native/ReaderNative.cpp
index 9b8a749aee2..f338e81ea95 100644
--- a/lld/lib/ReaderWriter/Native/ReaderNative.cpp
+++ b/lld/lib/ReaderWriter/Native/ReaderNative.cpp
@@ -98,6 +98,10 @@ public:
return (DefinedAtom::ContentPermissions)(attributes().permissions);
}
+ bool isAlias() const override {
+ return (attributes().alias != 0);
+ }
+
ArrayRef<uint8_t> rawContent() const override;
reference_iterator begin() const override;
diff --git a/lld/lib/ReaderWriter/Native/WriterNative.cpp b/lld/lib/ReaderWriter/Native/WriterNative.cpp
index 80f50e866f4..5d56c7a295e 100644
--- a/lld/lib/ReaderWriter/Native/WriterNative.cpp
+++ b/lld/lib/ReaderWriter/Native/WriterNative.cpp
@@ -431,6 +431,7 @@ private:
attrs.deadStrip = atom.deadStrip();
attrs.dynamicExport = atom.dynamicExport();
attrs.permissions = atom.permissions();
+ attrs.alias = atom.isAlias();
return attrs;
}
diff --git a/lld/lib/ReaderWriter/PECOFF/Atoms.h b/lld/lib/ReaderWriter/PECOFF/Atoms.h
index c4ae1271c0b..a7477ddffa6 100644
--- a/lld/lib/ReaderWriter/PECOFF/Atoms.h
+++ b/lld/lib/ReaderWriter/PECOFF/Atoms.h
@@ -105,6 +105,7 @@ public:
return sectionPositionAny;
}
DeadStripKind deadStrip() const override { return deadStripNormal; }
+ bool isAlias() const override { return false; }
Kind getKind() const { return _kind; }
diff --git a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
index dbc50873f75..e9bfc1a8233 100644
--- a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
+++ b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
@@ -892,6 +892,7 @@ template <> struct MappingTraits<const lld::DefinedAtom *> {
DeadStripKind deadStrip() const override { return _deadStrip; }
DynamicExport dynamicExport() const override { return _dynamicExport; }
ContentPermissions permissions() const override { return _permissions; }
+ bool isAlias() const override { return false; }
bool isGroupChild() const { return _isGroupChild; }
ArrayRef<uint8_t> rawContent() const override {
if (!occupiesDiskSpace())
OpenPOWER on IntegriCloud