mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 18:56:43 +00:00
[LLD] [COFF] Don't crash on an empty -entry: argument (#96058)
We can't pass an empty string to addUndefined(). This fixes the crash that was encountered in https://github.com/llvm/llvm-project/issues/93309 (turning the crash into a properly handled error; making it do the right thing is handled in https://github.com/llvm/llvm-project/pull/96055).
This commit is contained in:
parent
7601ae125d
commit
cb248f8c2a
@ -413,6 +413,8 @@ void LinkerDriver::parseDirectives(InputFile *file) {
|
||||
enqueuePath(*path, false, false);
|
||||
break;
|
||||
case OPT_entry:
|
||||
if (!arg->getValue()[0])
|
||||
fatal("missing entry point symbol name");
|
||||
ctx.config.entry = addUndefined(mangle(arg->getValue()));
|
||||
break;
|
||||
case OPT_failifmismatch:
|
||||
@ -2249,6 +2251,8 @@ void LinkerDriver::linkerMain(ArrayRef<const char *> argsArr) {
|
||||
{
|
||||
llvm::TimeTraceScope timeScope("Entry point");
|
||||
if (auto *arg = args.getLastArg(OPT_entry)) {
|
||||
if (!arg->getValue()[0])
|
||||
fatal("missing entry point symbol name");
|
||||
config->entry = addUndefined(mangle(arg->getValue()));
|
||||
} else if (!config->entry && !config->noEntry) {
|
||||
if (args.hasArg(OPT_dll)) {
|
||||
|
20
lld/test/COFF/invalid-entry.s
Normal file
20
lld/test/COFF/invalid-entry.s
Normal file
@ -0,0 +1,20 @@
|
||||
# REQUIRES: x86
|
||||
# RUN: split-file %s %t.dir && cd %t.dir
|
||||
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-windows test.s -o test.obj
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-windows drectve.s -o drectve.obj
|
||||
|
||||
# RUN: env LLD_IN_TEST=1 not lld-link -out:out.dll test.obj -dll -entry: 2>&1 | FileCheck %s
|
||||
# RUN: env LLD_IN_TEST=1 not lld-link -out:out.dll test.obj -dll drectve.obj 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: error: missing entry point symbol name
|
||||
|
||||
#--- test.s
|
||||
.text
|
||||
.globl func
|
||||
func:
|
||||
ret
|
||||
|
||||
#--- drectve.s
|
||||
.section .drectve, "yn"
|
||||
.ascii " -entry:"
|
Loading…
x
Reference in New Issue
Block a user