diff options
author | Martin Storsjö <martin@martin.st> | 2024-06-20 11:20:16 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-20 11:20:16 +0300 |
commit | acf675b63f9426e61aac2155e29280f7d21f9421 (patch) | |
tree | 2331d8628fbd43e1ff9bbff4d516b705e344c6fa | |
parent | b9ad0b6875950a0e161ad31447f796562f55a83a (diff) | |
download | llvm-acf675b63f9426e61aac2155e29280f7d21f9421.zip llvm-acf675b63f9426e61aac2155e29280f7d21f9421.tar.gz llvm-acf675b63f9426e61aac2155e29280f7d21f9421.tar.bz2 |
[LLD] [MinGW] Interpret an empty -entry option as no entry point (#96055)
This fixes https://github.com/llvm/llvm-project/issues/93309, and seems
to match how GNU ld handles this case.
-rw-r--r-- | lld/MinGW/Driver.cpp | 4 | ||||
-rw-r--r-- | lld/test/MinGW/driver.test | 2 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lld/MinGW/Driver.cpp b/lld/MinGW/Driver.cpp index 0d55d5b..35fd478 100644 --- a/lld/MinGW/Driver.cpp +++ b/lld/MinGW/Driver.cpp @@ -223,8 +223,10 @@ bool link(ArrayRef<const char *> argsArr, llvm::raw_ostream &stdoutOS, StringRef s = a->getValue(); if (args.getLastArgValue(OPT_m) == "i386pe" && s.starts_with("_")) add("-entry:" + s.substr(1)); - else + else if (!s.empty()) add("-entry:" + s); + else + add("-noentry"); } if (args.hasArg(OPT_major_os_version, OPT_minor_os_version, diff --git a/lld/test/MinGW/driver.test b/lld/test/MinGW/driver.test index 619fee8..b723c0a 100644 --- a/lld/test/MinGW/driver.test +++ b/lld/test/MinGW/driver.test @@ -60,6 +60,8 @@ RUN: ld.lld -### foo.o -m i386pep --entry bar 2>&1 | FileCheck -check-prefix=ENT RUN: ld.lld -### foo.o -m i386pep -entry=bar 2>&1 | FileCheck -check-prefix=ENTRY %s RUN: ld.lld -### foo.o -m i386pep --entry=bar 2>&1 | FileCheck -check-prefix=ENTRY %s ENTRY: -entry:bar +RUN: ld.lld -### foo.o -m i386pep -e bar -entry= 2>&1 | FileCheck -check-prefix=NOENTRY --implicit-check-not=-entry %s +NOENTRY: -noentry RUN: ld.lld -### foo.o -m i386pep -mllvm bar -mllvm baz 2>&1 | FileCheck -check-prefix=MLLVM %s MLLVM: -mllvm:bar -mllvm:baz |