forked from OSchip/llvm-project
parent
195b3b0074
commit
57e40deb8d
|
@ -31,6 +31,7 @@ struct Configuration {
|
|||
bool DiscardNone;
|
||||
bool ExportDynamic;
|
||||
bool NoInhibitExec;
|
||||
bool NoUndefined;
|
||||
bool Shared;
|
||||
bool Static = false;
|
||||
bool WholeArchive = false;
|
||||
|
|
|
@ -126,6 +126,7 @@ void LinkerDriver::link(ArrayRef<const char *> ArgsArr) {
|
|||
Config->DiscardNone = Args.hasArg(OPT_discard_none);
|
||||
Config->ExportDynamic = Args.hasArg(OPT_export_dynamic);
|
||||
Config->NoInhibitExec = Args.hasArg(OPT_noinhibit_exec);
|
||||
Config->NoUndefined = Args.hasArg(OPT_no_undefined);
|
||||
Config->Shared = Args.hasArg(OPT_shared);
|
||||
|
||||
for (auto *Arg : Args) {
|
||||
|
|
|
@ -43,6 +43,9 @@ def no_whole_archive : Flag<["--"], "no-whole-archive">,
|
|||
def noinhibit_exec : Flag<["--"], "noinhibit-exec">,
|
||||
HelpText<"Retain the executable output file whenever it is still usable">;
|
||||
|
||||
def no_undefined : Flag<["--"], "no-undefined">,
|
||||
HelpText<"Report unresolved symbols even if the linker is creating a shared library">;
|
||||
|
||||
def output : Separate<["-"], "o">, MetaVarName<"<path>">,
|
||||
HelpText<"Path to file to write output">;
|
||||
|
||||
|
|
|
@ -271,7 +271,7 @@ 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)
|
||||
if (Config->Shared && !Config->NoUndefined)
|
||||
return;
|
||||
|
||||
const Elf_Sym &SymE = cast<ELFSymbolBody<ELFT>>(Sym).Sym;
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
|
||||
# RUN: not lld --no-undefined -shared -flavor gnu2 %t -o %t.so
|
||||
# RUN: lld -shared -flavor gnu2 %t -o %t1.so
|
||||
|
||||
.globl _shared
|
||||
_shared:
|
||||
call _unresolved
|
Loading…
Reference in New Issue