Index: lld/trunk/ELF/Config.h =================================================================== --- lld/trunk/ELF/Config.h +++ lld/trunk/ELF/Config.h @@ -105,7 +105,6 @@ bool VersionScriptGlobalByDefault = true; bool WarnCommon; bool ZCombreloc; - bool ZDefs; bool ZExecStack; bool ZNodelete; bool ZNow; Index: lld/trunk/ELF/Driver.cpp =================================================================== --- lld/trunk/ELF/Driver.cpp +++ lld/trunk/ELF/Driver.cpp @@ -330,7 +330,8 @@ Config->GcSections = Args.hasArg(OPT_gc_sections); Config->ICF = Args.hasArg(OPT_icf); Config->NoGnuUnique = Args.hasArg(OPT_no_gnu_unique); - Config->NoUndefined = Args.hasArg(OPT_no_undefined); + Config->NoUndefined = + Args.hasArg(OPT_no_undefined) || hasZOption(Args, "defs"); Config->NoUndefinedVersion = Args.hasArg(OPT_no_undefined_version); Config->NoinhibitExec = Args.hasArg(OPT_noinhibit_exec); Config->Pie = Args.hasArg(OPT_pie); @@ -364,7 +365,6 @@ error("number of threads must be > 0"); Config->ZCombreloc = !hasZOption(Args, "nocombreloc"); - Config->ZDefs = hasZOption(Args, "defs"); Config->ZExecStack = hasZOption(Args, "execstack"); Config->ZNodelete = hasZOption(Args, "nodelete"); Config->ZNow = hasZOption(Args, "now"); Index: lld/trunk/ELF/Writer.cpp =================================================================== --- lld/trunk/ELF/Writer.cpp +++ lld/trunk/ELF/Writer.cpp @@ -277,9 +277,8 @@ if (!Config->NoUndefined) { if (Config->Relocatable) return; - if (Config->Shared && !Config->ZDefs) - if (Sym->symbol()->Visibility == STV_DEFAULT) - return; + if (Config->Shared && Sym->symbol()->Visibility == STV_DEFAULT) + return; } std::string Msg = "undefined symbol: " + Sym->getName().str();