From 54933667296d687743e8bd44048389b01f2cb94b Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Tue, 8 Oct 2019 08:03:40 +0000 Subject: [PATCH] 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 llvm-svn: 374022 --- lld/ELF/Driver.cpp | 2 ++ lld/test/ELF/driver.test | 4 ++++ lld/test/ELF/lto/relocation-model.ll | 6 ------ 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp index fbdf28b1a202..616718b69d81 100644 --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -334,6 +334,8 @@ static void checkOptions() { 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 index 77f9828a0357..c6fbacf0bea2 100644 --- a/lld/test/ELF/driver.test +++ b/lld/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/lld/test/ELF/lto/relocation-model.ll b/lld/test/ELF/lto/relocation-model.ll index beb693ebeab5..45e21db64187 100644 --- 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.