Diff below adds support for -Wl,-znodlopen. This fixes the libexec/ld.so/df_1_noopen regression test.
ok? Index: gnu/llvm/tools/lld/ELF/Config.h =================================================================== RCS file: /cvs/src/gnu/llvm/tools/lld/ELF/Config.h,v retrieving revision 1.2 diff -u -p -r1.2 Config.h --- gnu/llvm/tools/lld/ELF/Config.h 24 Jan 2017 10:20:27 -0000 1.2 +++ gnu/llvm/tools/lld/ELF/Config.h 18 Mar 2017 15:14:56 -0000 @@ -135,6 +135,7 @@ struct Configuration { bool ZCombreloc; bool ZExecstack; bool ZNodelete; + bool ZNodlopen; bool ZNow; bool ZOrigin; bool ZRelro; Index: gnu/llvm/tools/lld/ELF/Driver.cpp =================================================================== RCS file: /cvs/src/gnu/llvm/tools/lld/ELF/Driver.cpp,v retrieving revision 1.4 diff -u -p -r1.4 Driver.cpp --- gnu/llvm/tools/lld/ELF/Driver.cpp 14 Mar 2017 08:11:34 -0000 1.4 +++ gnu/llvm/tools/lld/ELF/Driver.cpp 18 Mar 2017 15:14:56 -0000 @@ -537,6 +537,7 @@ void LinkerDriver::readConfigs(opt::Inpu Config->ZCombreloc = !hasZOption(Args, "nocombreloc"); Config->ZExecstack = hasZOption(Args, "execstack"); Config->ZNodelete = hasZOption(Args, "nodelete"); + Config->ZNodlopen = hasZOption(Args, "nodlopen"); Config->ZNow = hasZOption(Args, "now"); Config->ZOrigin = hasZOption(Args, "origin"); Config->ZRelro = !hasZOption(Args, "norelro"); Index: gnu/llvm/tools/lld/ELF/SyntheticSections.cpp =================================================================== RCS file: /cvs/src/gnu/llvm/tools/lld/ELF/SyntheticSections.cpp,v retrieving revision 1.3 diff -u -p -r1.3 SyntheticSections.cpp --- gnu/llvm/tools/lld/ELF/SyntheticSections.cpp 14 Mar 2017 08:11:34 -0000 1.3 +++ gnu/llvm/tools/lld/ELF/SyntheticSections.cpp 18 Mar 2017 15:14:56 -0000 @@ -816,6 +816,8 @@ template <class ELFT> void DynamicSectio DtFlags |= DF_SYMBOLIC; if (Config->ZNodelete) DtFlags1 |= DF_1_NODELETE; + if (Config->ZNodlopen) + DtFlags1 |= DF_1_NOOPEN; if (Config->ZNow) { DtFlags |= DF_BIND_NOW; DtFlags1 |= DF_1_NOW;