Revert [ELF] Simplify the condition to create .interp

This reverts r362355 (git commit c78c999a9cd7a77b9d13c610c9faebac5d560a55)

This causes some internal tests to fail; details provided offthread.

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@362755 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/ELF/Writer.cpp b/ELF/Writer.cpp
index b71a87c..1ee1322 100644
--- a/ELF/Writer.cpp
+++ b/ELF/Writer.cpp
@@ -138,7 +138,8 @@
 }
 
 static bool needsInterpSection() {
-  return !Config->DynamicLinker.empty() && Script->needsInterpSection();
+  return !SharedFiles.empty() && !Config->DynamicLinker.empty() &&
+         Script->needsInterpSection();
 }
 
 template <class ELFT> void elf::writeResult() { Writer<ELFT>().run(); }
diff --git a/test/ELF/dynamic-linker.s b/test/ELF/dynamic-linker.s
index ac7ec6a..3faf8e8 100644
--- a/test/ELF/dynamic-linker.s
+++ b/test/ELF/dynamic-linker.s
@@ -1,19 +1,21 @@
 # REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/shared.s -o %t1.o
+# RUN: ld.lld -shared %t1.o -o %t.so
 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
 
-# RUN: ld.lld --dynamic-linker foo %t.o -o %t
-# RUN: llvm-readelf --program-headers %t | FileCheck %s
+# RUN: ld.lld --dynamic-linker foo %t.o %t.so -o %t
+# RUN: llvm-readelf -program-headers %t | FileCheck %s
 
-# RUN: ld.lld --dynamic-linker=foo %t.o -o %t
-# RUN: llvm-readelf --program-headers %t | FileCheck %s
+# RUN: ld.lld --dynamic-linker=foo %t.o %t.so -o %t
+# RUN: llvm-readelf -program-headers %t | FileCheck %s
 
 # CHECK: [Requesting program interpreter: foo]
 
-# RUN: ld.lld %t.o -o %t
+# RUN: ld.lld %t.o %t.so -o %t
 # RUN: llvm-readelf -program-headers %t | FileCheck --check-prefix=NO %s
 
-# RUN: ld.lld --dynamic-linker foo --no-dynamic-linker %t.o -o %t
-# RUN: llvm-readelf --program-headers %t | FileCheck --check-prefix=NO %s
+# RUN: ld.lld --dynamic-linker foo --no-dynamic-linker %t.o %t.so -o %t
+# RUN: llvm-readelf -program-headers %t | FileCheck --check-prefix=NO %s
 
 # NO-NOT: PT_INTERP