Skip to content

Commit defcde6

Browse files
committed
[LLD] [COFF] Print a warning when using /dependentloadflag without load config
1 parent 1fd8d3f commit defcde6

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

lld/COFF/Driver.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2307,8 +2307,11 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
23072307

23082308
// Handle /dependentloadflag
23092309
for (auto *arg :
2310-
args.filtered(OPT_dependentloadflag, OPT_dependentloadflag_opt))
2310+
args.filtered(OPT_dependentloadflag, OPT_dependentloadflag_opt)) {
23112311
parseDependentLoadFlags(arg);
2312+
if (!ctx.symtab.findUnderscore("_load_config_used"))
2313+
warn("_load_config_used not found, /delayloadflag will have no effect");
2314+
}
23122315

23132316
if (tar) {
23142317
llvm::TimeTraceScope timeScope("Reproducer: response file");

lld/test/COFF/dependentflags.test

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ RUN: not lld-link %S/Inputs/precomp-a.obj %t.ldcfg.obj /out:%t.exe /nodefaultlib
2020
RUN: not lld-link %S/Inputs/precomp-a.obj %t.ldcfg.obj /out:%t.exe /nodefaultlib /force /dependentloadflag:zz 2>&1 | FileCheck %s --check-prefix FAIL
2121
RUN: not lld-link %S/Inputs/precomp-a.obj %t.ldcfg.obj /out:%t.exe /nodefaultlib /force /dependentloadflag:0xf0000 2>&1 | FileCheck %s --check-prefix FAIL-RANGE
2222

23+
// ---- Warn if _load_config_used is missing
24+
RUN: lld-link %S/Inputs/precomp-a.obj /out:%t.exe /nodefaultlib /force /dependentloadflag:0x800 2>&1 | FileCheck %s --check-prefix WARN-NOBASE
25+
RUN: lld-link %S/Inputs/precomp-a.obj %t.ldcfg.obj /out:%t.exe /nodefaultlib /force /dependentloadflag:0x800 2>&1 | FileCheck %s --allow-empty --check-prefix NO-WARN
2326

2427
BASE: DependentLoadFlags: 0x0
2528
FLAGS-800: DependentLoadFlags: 0x800
@@ -29,3 +32,5 @@ FAIL: lld-link: error: /dependentloadflag: invalid argument: zz
2932
FAIL-RANGE: lld-link: error: /dependentloadflag: invalid argument: 0xf0000
3033
FAIL-NOARG: lld-link: error: /dependentloadflag: no argument specified
3134

35+
WARN-NOBASE: lld-link: warning: _load_config_used not found, /delayloadflag will have no effect
36+
NO-WARN-NOT: lld-link: warning: _load_config_used not found, /delayloadflag will have no effect

0 commit comments

Comments
 (0)