summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRui Ueyama <ruiu@google.com>2014-05-02 23:45:28 +0000
committerRui Ueyama <ruiu@google.com>2014-05-02 23:45:28 +0000
commit82d62c442011e0401544db96a77770432ce43411 (patch)
treedbe20a265655e20dd753af4933dc6979f118ddb1
parent3872d0ae26cb6d56373c8640cef2df86499d13e9 (diff)
downloadbcm5719-llvm-82d62c442011e0401544db96a77770432ce43411.tar.gz
bcm5719-llvm-82d62c442011e0401544db96a77770432ce43411.zip
Revert "Remove dead code."
This reverts commit r207884 which was prematurely committed by accident. llvm-svn: 207886
-rw-r--r--lld/include/lld/Core/DefinedAtom.h6
-rw-r--r--lld/include/lld/ReaderWriter/Simple.h2
-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
8 files changed, 27 insertions, 0 deletions
diff --git a/lld/include/lld/Core/DefinedAtom.h b/lld/include/lld/Core/DefinedAtom.h
index f2bcce4d02e..3e340eb4504 100644
--- a/lld/include/lld/Core/DefinedAtom.h
+++ b/lld/include/lld/Core/DefinedAtom.h
@@ -270,6 +270,12 @@ public:
/// is R__.
virtual ContentPermissions permissions() const;
+ /// \brief means this is a zero size atom that exists to provide an alternate
+ /// name for another atom. Alias atoms must have a special Reference to the
+ /// atom they alias which the layout engine recognizes and forces the alias
+ /// atom to layout right before the target atom.
+ virtual bool isAlias() const = 0;
+
/// \brief returns a reference to the raw (unrelocated) bytes of this Atom's
/// content.
virtual ArrayRef<uint8_t> rawContent() const = 0;
diff --git a/lld/include/lld/ReaderWriter/Simple.h b/lld/include/lld/ReaderWriter/Simple.h
index c8e2b20d4bd..aff987a6c6d 100644
--- a/lld/include/lld/ReaderWriter/Simple.h
+++ b/lld/include/lld/ReaderWriter/Simple.h
@@ -140,6 +140,8 @@ public:
return DefinedAtom::deadStripNormal;
}
+ bool isAlias() const override { return false; }
+
DefinedAtom::reference_iterator begin() const override {
uintptr_t index = 0;
const void *it = reinterpret_cast<const void *>(index);
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