diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp --- a/lld/ELF/Driver.cpp +++ b/lld/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/lld/test/ELF/driver.test b/lld/test/ELF/driver.test --- a/lld/test/ELF/driver.test +++ b/lld/test/ELF/driver.test @@ -50,6 +50,7 @@ # RUN: not ld.lld -r -pie %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR6 %s # ERR6: -r and -pie may not be used together +## Attempt to use -shared and -pie together ## Attempt to use -shared and -pie together # RUN: not ld.lld -shared -pie %t -o %tfail 2>&1 | FileCheck -check-prefix=ERR7 %s # ERR7: -shared and -pie may not be used together @@ -72,6 +73,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/lld/test/ELF/lto/relocation-model.ll b/lld/test/ELF/lto/relocation-model.ll --- a/lld/test/ELF/lto/relocation-model.ll +++ b/lld/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.