Implement -rpath.
llvm-svn: 247475
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 3dac96c..85b6016 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -221,6 +221,12 @@
++NumEntries; // DT_STRTAB
++NumEntries; // DT_STRSZ
+ StringRef RPath = Config->RPath;
+ if (!RPath.empty()) {
+ ++NumEntries; // DT_RUNPATH
+ DynStrSec.add(RPath);
+ }
+
const std::vector<std::unique_ptr<SharedFileBase>> &SharedFiles =
SymTab.getSharedFiles();
for (const std::unique_ptr<SharedFileBase> &File : SharedFiles)
@@ -251,6 +257,13 @@
P->d_un.d_val = DynStrSec.data().size();
++P;
+ StringRef RPath = Config->RPath;
+ if (!RPath.empty()) {
+ P->d_tag = DT_RUNPATH;
+ P->d_un.d_val = DynStrSec.getFileOff(RPath);
+ ++P;
+ }
+
const std::vector<std::unique_ptr<SharedFileBase>> &SharedFiles =
SymTab.getSharedFiles();
for (const std::unique_ptr<SharedFileBase> &File : SharedFiles) {