Summary:
This follows the ld.bfd/gold behavior.
The error check is useful as it captures a common type of ld.so undefined symbol errors as link-time errors:
// a.cc => a.so (not linked with -z defs)
void f(); // f is undefined
void g() { f(); }
// b.cc => executable with a DT_NEEDED entry on a.so
void g();
int main() { g(); }
// ld.so errors when g() is executed (lazy binding) or when the program is started (-z now)
// symbol lookup error: ... undefined symbol: f
Reviewers: ruiu, grimar, pcc, espindola
Reviewed By: ruiu
Subscribers: llvm-commits, emaste, arichardson
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D57569
llvm-svn: 352943
16 lines
454 B
ArmAsm
16 lines
454 B
ArmAsm
# REQUIRES: x86
|
|
# RUN: llvm-mc %s -filetype=obj -triple=x86_64-pc-linux -o %t.o
|
|
# RUN: llvm-mc %p/Inputs/undefined-error.s -filetype=obj \
|
|
# RUN: -triple=x86_64-pc-linux -o %t2.o
|
|
# RUN: ld.lld -shared %t2.o -o %t2.so
|
|
# RUN: not ld.lld --allow-shlib-undefined %t2.so %t.o -o /dev/null 2>&1 | FileCheck %s
|
|
|
|
# CHECK: undefined symbol: fmod
|
|
# Check we're not emitting other diagnostics for this symbol.
|
|
# CHECK-NOT: fmod
|
|
|
|
.global main
|
|
|
|
main:
|
|
callq fmod
|