Report error if -export-dynamic is used with -r

The combination of the two flags doesn't make sense. And other linkers
seem to just ignore --export-dynamic if --relocatable is given, but
we probably should report it as an error to let users know that is
an invalid combination.

Fixes https://bugs.llvm.org/show_bug.cgi?id=43552

Differential Revision: https://reviews.llvm.org/D68441

git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@374022 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/ELF/Driver.cpp b/ELF/Driver.cpp
index fbdf28b..616718b 100644
--- a/ELF/Driver.cpp
+++ b/ELF/Driver.cpp
@@ -334,6 +334,8 @@
       error("-r and --icf may not be used together");
     if (config->pie)
       error("-r and -pie may not be used together");
+    if (config->exportDynamic)
+      error("-r and --export-dynamic may not be used together");
   }
 
   if (config->executeOnly) {
diff --git a/test/ELF/driver.test b/test/ELF/driver.test
index 77f9828..c6fbacf 100644
--- a/test/ELF/driver.test
+++ b/test/ELF/driver.test
@@ -72,6 +72,10 @@
 # RUN: not ld.lld %t -z max-page-size 2>&1 | FileCheck -check-prefix=ERR11 %s
 # ERR11: unknown -z value: max-page-size
 
+## Attempt to use -r and --export-dynamic together
+# RUN: not ld.lld -r -export-dynamic %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR12 %s
+# ERR12: -r and --export-dynamic may not be used together
+
 .globl _start
 _start:
   nop
diff --git a/test/ELF/lto/relocation-model.ll b/test/ELF/lto/relocation-model.ll
index beb693e..45e21db 100644
--- a/test/ELF/lto/relocation-model.ll
+++ b/test/ELF/lto/relocation-model.ll
@@ -14,9 +14,6 @@
 ; RUN: ld.lld %t.o -o %t-out -save-temps --export-dynamic --noinhibit-exec
 ; RUN: llvm-readobj -r %t-out.lto.o | FileCheck %s --check-prefix=STATIC
 
-; RUN: ld.lld %t.o -o %t-out -save-temps -r --export-dynamic
-; RUN: llvm-readobj -r %t-out.lto.o | FileCheck %s --check-prefix=STATIC
-
 
 ;; PIC source.
 
@@ -29,9 +26,6 @@
 ; RUN: ld.lld %t.pic.o -o %t-out -save-temps --export-dynamic --noinhibit-exec
 ; RUN: llvm-readobj -r %t-out.lto.o | FileCheck %s --check-prefix=STATIC
 
-; RUN: ld.lld %t.pic.o -o %t-out -save-temps -r --export-dynamic
-; RUN: llvm-readobj -r %t-out.lto.o | FileCheck %s --check-prefix=PIC
-
 
 ;; Explicit flag.