[RFC][PATCH 6/6] Implement and document DF_1_UNIQUE handling in gold

Vivek Das Mohapatra vivek@collabora.com
Mon Mar 30 17:42:07 GMT 2020


---
 gold/layout.cc | 2 ++
 gold/options.h | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/gold/layout.cc b/gold/layout.cc
index be437f3900..d97ac57afc 100644
--- a/gold/layout.cc
+++ b/gold/layout.cc
@@ -5351,6 +5351,8 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
     flags |= elfcpp::DF_1_NOW;
   if (parameters->options().Bgroup())
     flags |= elfcpp::DF_1_GROUP;
+  if (parameters->options().unique())
+    flags |= elfcpp::DF_1_UNIQUE;
   if (flags != 0)
     odyn->add_constant(elfcpp::DT_FLAGS_1, flags);
 }
diff --git a/gold/options.h b/gold/options.h
index b2059d984c..de151642c7 100644
--- a/gold/options.h
+++ b/gold/options.h
@@ -1459,6 +1459,9 @@ class General_options
   DEFINE_bool(interpose, options::DASH_Z, '\0', false,
 	      N_("Mark object to interpose all DSOs but executable"),
 	      NULL);
+  DEFINE_bool(unique, options::DASH_Z, '\0', false,
+              N_("Mark DSO to be loaded at most once, and only in the main namespace"),
+              NULL);
   DEFINE_bool_alias(lazy, now, options::DASH_Z, '\0',
 		    N_("Mark object for lazy runtime binding"),
 		    NULL, true);
-- 
2.11.0



More information about the Libc-alpha mailing list