forked from OSchip/llvm-project
[ELF2] Implement --allow-shlib-undefined as default behavior.
We ignore --{no,}allow-shlib-undefined options and always allow undefined symbols if we are building a DSO. llvm-svn: 249036
This commit is contained in:
parent
096492a07b
commit
ee05828261
|
@ -48,6 +48,12 @@ def shared : Flag<["-"], "shared">,
|
|||
def sysroot : Joined<["--"], "sysroot=">,
|
||||
HelpText<"Set the system root">;
|
||||
|
||||
def no_allow_shlib_undefined
|
||||
: Flag<["--"], "no-allow-shlib-undefined">;
|
||||
|
||||
def allow_shlib_undefined
|
||||
: Flag<["--"], "allow-shlib-undefined">;
|
||||
|
||||
// Aliases
|
||||
def alias_Bdynamic_call_shared: Flag<["-"], "call_shared">, Alias<Bdynamic>;
|
||||
def alias_Bdynamic_dy: Flag<["-"], "dy">, Alias<Bdynamic>;
|
||||
|
|
|
@ -271,6 +271,9 @@ static void reportUndefined(const SymbolTable &S, const SymbolBody &Sym) {
|
|||
typedef typename ELFFile<ELFT>::Elf_Sym Elf_Sym;
|
||||
typedef typename ELFFile<ELFT>::Elf_Sym_Range Elf_Sym_Range;
|
||||
|
||||
if (Config->Shared)
|
||||
return;
|
||||
|
||||
const Elf_Sym &SymE = cast<ELFSymbolBody<ELFT>>(Sym).Sym;
|
||||
ELFFileBase *SymFile = nullptr;
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
.globl _shared
|
||||
_shared:
|
||||
call _unresolved
|
|
@ -0,0 +1,25 @@
|
|||
# --allow-shlib-undefined and --no-allow-shlib-undefined are fully
|
||||
# ignored in linker implementation.
|
||||
# --allow-shlib-undefined is set by default
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux \
|
||||
# RUN: %p/Inputs/allow-shlib-undefined.s -o %t
|
||||
# RUN: lld -shared -flavor gnu2 %t -o %t.so
|
||||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1
|
||||
|
||||
# Executable: should link with DSO containing undefined symbols in any case.
|
||||
# RUN: lld -flavor gnu2 %t1 %t.so -o %t2
|
||||
# RUN: lld -flavor gnu2 --no-allow-shlib-undefined %t1 %t.so -o %t2
|
||||
# RUN: lld -flavor gnu2 --allow-shlib-undefined %t1 %t.so -o %t2
|
||||
|
||||
# DSO with undefines:
|
||||
# should link with or without any of these options.
|
||||
# RUN: lld -shared -flavor gnu2 %t -o %t.so
|
||||
# RUN: lld -shared --allow-shlib-undefined -flavor gnu2 %t -o %t.so
|
||||
# RUN: lld -shared --no-allow-shlib-undefined -flavor gnu2 %t -o %t.so
|
||||
|
||||
# Executable still should not link when have undefines inside.
|
||||
# RUN: not lld -flavor gnu2 %t -o %t.so
|
||||
|
||||
.globl _start
|
||||
_start:
|
||||
call _shared
|
Loading…
Reference in New Issue