PR 10141
authorIan Lance Taylor <ian@airs.com>
Mon, 22 Jun 2009 20:23:21 +0000 (20:23 +0000)
committerIan Lance Taylor <ian@airs.com>
Mon, 22 Jun 2009 20:23:21 +0000 (20:23 +0000)
* options.h (class General_options): Add -z lazy and -z now.  Sort
-z options into alphabetical order.
* layout.cc (Layout::finish_dynamic_section): Handle -z now.

gold/ChangeLog
gold/layout.cc
gold/options.h

index cf4425f6d14556c134320c08f7279bc0dfcc2632..fea0a34d2c42155a8d94afe8fba8b4c6138ac8e1 100644 (file)
@@ -1,3 +1,10 @@
+2009-06-22  Ian Lance Taylor  <ian@airs.com>
+
+       PR 10141
+       * options.h (class General_options): Add -z lazy and -z now.  Sort
+       -z options into alphabetical order.
+       * layout.cc (Layout::finish_dynamic_section): Handle -z now.
+
 2009-06-21  Ian Lance Taylor  <iant@google.com>
 
        * layout.cc (Layout::make_output_section): Call
index c3020cd843b7e6ca24c8df31909b029c32d96d9a..ae2a5dc8e7dcbfc6c279d8d092ee5b7daabd8149 100644 (file)
@@ -2835,6 +2835,8 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
     flags |= elfcpp::DF_STATIC_TLS;
   if (parameters->options().origin())
     flags |= elfcpp::DF_ORIGIN;
+  if (parameters->options().now())
+    flags |= elfcpp::DF_BIND_NOW;
   odyn->add_constant(elfcpp::DT_FLAGS, flags);
 
   flags = 0;
@@ -2858,6 +2860,8 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
               | elfcpp::DF_1_NOOPEN);
   if (parameters->options().origin())
     flags |= elfcpp::DF_1_ORIGIN;
+  if (parameters->options().now())
+    flags |= elfcpp::DF_1_NOW;
   if (flags)
     odyn->add_constant(elfcpp::DT_FLAGS_1, flags);
 }
index d4255f1fb622e66f866674ff1f3caa477e8585b3..c31f6b101a456f79e9829f0a2d8ad8a62b3844cd 100644 (file)
@@ -896,19 +896,20 @@ class General_options
               NULL);
   DEFINE_bool(execstack, options::DASH_Z, '\0', false,
               N_("Mark output as requiring executable stack"), NULL);
-  DEFINE_uint64(max_page_size, options::DASH_Z, '\0', 0,
-                N_("Set maximum page size to SIZE"), N_("SIZE"));
-  DEFINE_bool(noexecstack, options::DASH_Z, '\0', false,
-              N_("Mark output as not requiring executable stack"), NULL);
   DEFINE_bool(initfirst, options::DASH_Z, '\0', false,
              N_("Mark DSO to be initialized first at runtime"),
              NULL);
   DEFINE_bool(interpose, options::DASH_Z, '\0', false,
              N_("Mark object to interpose all DSOs but executable"),
              NULL);
+  DEFINE_bool(lazy, options::DASH_Z, '\0', false,
+             N_("Mark object for lazy runtime binding (default)"),
+             NULL);
   DEFINE_bool(loadfltr, options::DASH_Z, '\0', false,
              N_("Mark object requiring immediate process"),
              NULL);
+  DEFINE_uint64(max_page_size, options::DASH_Z, '\0', 0,
+                N_("Set maximum page size to SIZE"), N_("SIZE"));
   DEFINE_bool(nodefaultlib, options::DASH_Z, '\0', false,
              N_("Mark object not to use default search paths"),
              NULL);
@@ -921,12 +922,17 @@ class General_options
   DEFINE_bool(nodump, options::DASH_Z, '\0', false,
              N_("Mark DSO not available to dldump"),
              NULL);
-  DEFINE_bool(relro, options::DASH_Z, '\0', false,
-             N_("Where possible mark variables read-only after relocation"),
-             N_("Don't mark variables read-only after relocation"));
+  DEFINE_bool(noexecstack, options::DASH_Z, '\0', false,
+              N_("Mark output as not requiring executable stack"), NULL);
+  DEFINE_bool(now, options::DASH_Z, '\0', false,
+             N_("Mark object for immediate function binding"),
+             NULL);
   DEFINE_bool(origin, options::DASH_Z, '\0', false,
              N_("Mark DSO to indicate that needs immediate $ORIGIN "
                  "processing at runtime"), NULL);
+  DEFINE_bool(relro, options::DASH_Z, '\0', false,
+             N_("Where possible mark variables read-only after relocation"),
+             N_("Don't mark variables read-only after relocation"));
 
  public:
   typedef options::Dir_list Dir_list;