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) {