summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/COFF/Config.h1
-rw-r--r--lld/COFF/Driver.cpp10
-rw-r--r--lld/test/COFF/order.test9
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:
OpenPOWER on IntegriCloud