diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-03-09 12:41:04 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2018-03-09 12:41:04 +0000 |
commit | 0771c604c9dfd214571fab4ec583d36568d53f3b (patch) | |
tree | c320987f340370b7c74a4012213dc36e43cf9ace | |
parent | 3ef4eebc2713aaf1e05cd8d75215f85e57313c0e (diff) | |
download | bcm5719-llvm-0771c604c9dfd214571fab4ec583d36568d53f3b.tar.gz bcm5719-llvm-0771c604c9dfd214571fab4ec583d36568d53f3b.zip |
[lld-link] Add support for /ignore:4037.
Fixes PR36657.
https://reviews.llvm.org/D44286
llvm-svn: 327124
-rw-r--r-- | lld/COFF/Config.h | 1 | ||||
-rw-r--r-- | lld/COFF/Driver.cpp | 10 | ||||
-rw-r--r-- | lld/test/COFF/order.test | 9 |
3 files changed, 16 insertions, 4 deletions
diff --git a/lld/COFF/Config.h b/lld/COFF/Config.h index c3e973077cf..a120435a69f 100644 --- a/lld/COFF/Config.h +++ b/lld/COFF/Config.h @@ -187,6 +187,7 @@ struct Configuration { bool HighEntropyVA = false; bool AppContainer = false; bool MinGW = false; + bool WarnMissingOrderSymbol = true; bool WarnLocallyDefinedImported = true; bool Incremental = true; }; diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index e493bdea59b..86a769002fd 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -804,8 +804,10 @@ static void parseOrderFile(StringRef Arg) { if (Config->Machine == I386 && !isDecorated(S)) S = "_" + S; - if (Set.count(S) == 0) - warn("/order:" + Arg + ": missing symbol: " + S); + if (Set.count(S) == 0) { + if (Config->WarnMissingOrderSymbol) + warn("/order:" + Arg + ": missing symbol: " + S); + } else Config->Order[S] = INT_MIN + Config->Order.size(); } @@ -899,7 +901,9 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) { // Handle /ignore for (auto *Arg : Args.filtered(OPT_ignore)) { - if (StringRef(Arg->getValue()) == "4217") + if (StringRef(Arg->getValue()) == "4037") + Config->WarnMissingOrderSymbol = false; + else if (StringRef(Arg->getValue()) == "4217") Config->WarnLocallyDefinedImported = false; // Other warning numbers are ignored. } diff --git a/lld/test/COFF/order.test b/lld/test/COFF/order.test index a01f820e784..0006550e56a 100644 --- a/lld/test/COFF/order.test +++ b/lld/test/COFF/order.test @@ -16,7 +16,7 @@ # CHECK: unrelated2 # RUN: lld-link -entry:fn1 -subsystem:console -opt:noref -debug %t1.obj %t2.obj \ -# RUN: -lldmap:- -out:%t.exe | FileCheck -check-prefix=DEFAULT %s +# RUN: -lldmap:- -ignore:4037 -out:%t.exe | FileCheck -check-prefix=DEFAULT %s # DEFAULT: fn2 # DEFAULT: fn3 # DEFAULT: unrelated1 @@ -35,6 +35,13 @@ # WARN-NOT: f2 # WARN-NOT: f3 # WARN-NOT: f4 +# RUN: lld-link -entry:fn1 -subsystem:console -debug %t1.obj %t2.obj \ +# RUN: -out:%t.exe -order:@%t2.order -ignore:4037 2>&1 | \ +# RUN: FileCheck -allow-empty -check-prefix=NOWARN %s +# NOWARN-NOT: warning: /order:{{.*}} missing symbol: foo +# NOWARN-NOT: f2 +# NOWARN-NOT: f3 +# NOWARN-NOT: f4 --- !COFF header: |