summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvin Wong <alvin@alvinhc.com>2023-04-23 23:52:55 +0800
committerTom Stellard <tstellar@redhat.com>2023-05-01 21:12:25 -0700
commit4676274c9eb222c745c7402d83872b4a28d66f41 (patch)
treee64ca7345918c224e2d5ee3336cced5a4de4246e
parente861196707993f45503621cd8472e94ddd1d8c97 (diff)
downloadllvm-4676274c9eb222c745c7402d83872b4a28d66f41.tar.gz
[LLD][COFF] Print object file name for unsupported directives
This is a small QoL improvement suggested by FrancescElies in https://github.com/llvm/llvm-project/issues/56300#issuecomment-1172104966. Differential Revision: https://reviews.llvm.org/D149022 (cherry picked from commit 9b15e9840f5073aa38939fbef1cb0c64dcc5f02f)
-rw-r--r--lld/COFF/Driver.cpp3
-rw-r--r--lld/test/COFF/directives-unsupported.s15
2 files changed, 17 insertions, 1 deletions
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index 0a153c8f6cb7..241331b8f161 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -438,7 +438,8 @@ void LinkerDriver::parseDirectives(InputFile *file) {
case OPT_throwingnew:
break;
default:
- error(arg->getSpelling() + " is not allowed in .drectve");
+ error(arg->getSpelling() + " is not allowed in .drectve (" +
+ toString(file) + ")");
}
}
}
diff --git a/lld/test/COFF/directives-unsupported.s b/lld/test/COFF/directives-unsupported.s
new file mode 100644
index 000000000000..1b8231178df8
--- /dev/null
+++ b/lld/test/COFF/directives-unsupported.s
@@ -0,0 +1,15 @@
+# REQUIRES: x86
+
+# RUN: llvm-mc -triple=x86_64-windows %s -filetype=obj -o %t.obj
+
+# RUN: not lld-link -dll -out:%t.dll -entry:entry %t.obj -subsystem:console 2>&1 | FileCheck %s
+
+# CHECK: warning: ignoring unknown argument: -unknowndirectivename
+# CHECK: error: -unknowndirectivename is not allowed in .drectve ({{.*}}.obj)
+
+ .global entry
+ .text
+entry:
+ ret
+ .section .drectve
+ .ascii " -unknowndirectivename "