diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 35fd478a21905..c7d7b9cfca386 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -448,6 +448,9 @@ bool link(ArrayRef argsArr, llvm::raw_ostream &stdoutOS, add("-errorlimit:" + s); } + if (auto *a = args.getLastArg(OPT_rpath)) + warn("parameter " + a->getSpelling() + " has no effect on PE/COFF targets"); + for (auto *a : args.filtered(OPT_mllvm)) add("-mllvm:" + StringRef(a->getValue())); diff --git a/lld/MinGW/Options.td b/lld/MinGW/Options.td index 56f67e3dd96c4..7bd5fb80749da 100644 --- a/lld/MinGW/Options.td +++ b/lld/MinGW/Options.td @@ -243,6 +243,9 @@ defm: EqNoHelp<"sysroot">; def: F<"sort-common">; def: F<"start-group">; +// Ignored options, that produce warnings +defm rpath: EqNoHelp<"rpath">; + // Ignore GCC collect2 LTO plugin related options. Note that we don't support // GCC LTO, but GCC collect2 passes these options even in non-LTO mode. def: J<"plugin-opt=-fresolution=">; diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index cbccd09793c2f..0dab66b613c77 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -446,3 +446,9 @@ RUN: ld.lld -### foo.o -m i386pep --build-id=none 2>&1 | FileCheck -check-prefix RUN: ld.lld -### foo.o -m i386pep -s 2>&1 | FileCheck -check-prefix=NO_BUILD_ID %s RUN: ld.lld -### foo.o -m i386pep -S 2>&1 | FileCheck -check-prefix=NO_BUILD_ID %s NO_BUILD_ID: -build-id:no + +RUN: ld.lld -### foo.o -m i386pep -rpath foo 2>&1 | FileCheck -check-prefix=WARN_RPATH %s +RUN: ld.lld -### foo.o -m i386pep --rpath foo 2>&1 | FileCheck -check-prefix=WARN_RPATH %s +RUN: ld.lld -### foo.o -m i386pep -rpath=foo 2>&1 | FileCheck -check-prefix=WARN_RPATH %s +RUN: ld.lld -### foo.o -m i386pep --rpath=foo 2>&1 | FileCheck -check-prefix=WARN_RPATH %s +WARN_RPATH: warning: parameter -{{-?}}rpath has no effect on PE/COFF targets