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;

Reply via email to