[ELF] Replace error() with errorOrWarn() for the ASSERT command

Summary:
ld.bfd produces an output with --noinhibit-exec when an ASSERT fails.
Use errorOrWarn() so that we can produce an output as well.

An interesting case is that symbol assignments may execute multiple
times, so we probably want to suppress errors for non-final runs.

Reviewed By: peter.smith

Differential Revision: https://reviews.llvm.org/D67285

llvm-svn: 371225
This commit is contained in:
Fangrui Song 2019-09-06 16:30:22 +00:00
parent 52614dfc7f
commit 2682bc3c9d
2 changed files with 3 additions and 3 deletions

View File

@ -720,7 +720,7 @@ Expr ScriptParser::readAssert() {
return [=] {
if (!e().getValue())
error(msg);
errorOrWarn(msg);
return script->getDot();
};
}

View File

@ -6,8 +6,8 @@
# RUN: llvm-readobj %t1 > /dev/null
# RUN: echo "SECTIONS { ASSERT(0, fail) }" > %t3.script
# RUN: not ld.lld -shared -o /dev/null --script %t3.script %t1.o > %t.log 2>&1
# RUN: FileCheck %s -check-prefix=FAIL < %t.log
# RUN: not ld.lld -o /dev/null -T %t3.script %t1.o 2>&1 | FileCheck --check-prefix=FAIL %s
# RUN: ld.lld -o /dev/null -T %t3.script %t1.o --noinhibit-exec 2>&1 | FileCheck --check-prefix=FAIL %s
# FAIL: fail
# RUN: echo "SECTIONS { . = ASSERT(0x1000, fail); }" > %t4.script