This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Adding -z nonow to complement -z now


On Tue, 13 Jun 2006 10:23:21 -0700
Ulrich Drepper <drepper@redhat.com> wrote:

> Alan Modra wrote:
> > On Mon, Jun 12, 2006 at 08:00:03PM +0200, Kevin F. Quinn wrote:
> >> Attached is a little patch that adds '-z nonow' as the opposite of
> >> '-z now'.  Could it be considered for inclusion, please?
> > 
> > You need to provide a proper changelog entry, and describe the
> > option in [...]
> 
> You cannot honestly consider allowing a patch introducing -z nonow.
> What is the opposite to 'now' in ELF terms?  It's not 'nonow', it's
> 'lazy'.

Ok; attached is an updated patch, hopefully I've addressed issues as
required so far.  Anything more, please say.

Thanks,
-- 
Kevin F. Quinn
2006-06-13	Kevin F. Quinn	<kevquinn@gentoo.org>

ld/

	* ld.texinfo: document new -z lazy option, inverse of -z now

ld/emultempl/

	* elf32.em (gld${EMULATION_NAME}_list_options): update help text
	(gld${EMULATION_NAME}_handle_option): handle new option

Index: ld/ld.texinfo
===================================================================
RCS file: /cvs/src/src/ld/ld.texinfo,v
retrieving revision 1.163
diff -u -r1.163 ld.texinfo
--- ld/ld.texinfo	30 May 2006 16:45:31 -0000	1.163
+++ ld/ld.texinfo	13 Jun 2006 18:25:10 -0000
@@ -962,6 +962,12 @@
 Marks the object that its symbol table interposes before all symbols
 but the primary executable.
 
+@item lazy
+When generating an executable or shared library, mark it to tell the
+dynamic linker to defer function call resolution to the point when
+the function is called (lazy binding), rather than at load time.
+Lazy binding is the default.
+
 @item loadfltr
 Marks  the object that its filters be processed immediately at
 runtime.
Index: ld/emultempl/elf32.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/elf32.em,v
retrieving revision 1.166
diff -u -r1.166 elf32.em
--- ld/emultempl/elf32.em	3 Jun 2006 02:45:26 -0000	1.166
+++ ld/emultempl/elf32.em	13 Jun 2006 18:25:11 -0000
@@ -1826,6 +1826,11 @@
 	  link_info.flags |= (bfd_vma) DF_BIND_NOW;
 	  link_info.flags_1 |= (bfd_vma) DF_1_NOW;
 	}
+      else if (strcmp (optarg, "lazy") == 0)
+	{
+	  link_info.flags &= ~((bfd_vma) DF_BIND_NOW);
+	  link_info.flags_1 &= ~((bfd_vma) DF_1_NOW);
+	}
       else if (strcmp (optarg, "origin") == 0)
 	{
 	  link_info.flags |= (bfd_vma) DF_ORIGIN;
@@ -1909,6 +1914,7 @@
   fprintf (file, _("  -z execstack\t\tMark executable as requiring executable stack\n"));
   fprintf (file, _("  -z initfirst\t\tMark DSO to be initialized first at runtime\n"));
   fprintf (file, _("  -z interpose\t\tMark object to interpose all DSOs but executable\n"));
+  fprintf (file, _("  -z lazy\t\tMark object lazy runtime binding (default)\n"));
   fprintf (file, _("  -z loadfltr\t\tMark object requiring immediate process\n"));
   fprintf (file, _("  -z muldefs\t\tAllow multiple definitions\n"));
   fprintf (file, _("  -z nocombreloc\tDon't merge dynamic relocs into one section\n"));

Attachment: signature.asc
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]