This is the mail archive of the binutils@sourceware.cygnus.com 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]

Re: PATCH for uninitialized junk in .dynsym


>>>>> "Richard" == Richard Henderson <rth@cygnus.com> writes:

    Richard> On Sun, Jun 13, 1999 at 08:29:45PM -0400, Ian Lance
    Richard> Taylor wrote:
    >> > + /* Remove the section from the output list.  */ > + for
    >> (spp = &abfd->sections; > + *spp != section->output_section; >
    >> + spp = &(*spp)->next) > + ; > + *spp =
    >> section->output_section->next; > + --abfd->section_count;
    >> 
    >> ... In this case, there is no input section to pass it.

    Richard> Certainly there is: `section'.  That's where
    Richard> `section->output_section' comes from.

I just moved the code in question from one place to another; I didn't
really investigate its properties.

I've committed the following patch.

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com

1999-06-13  Mark Mitchell  <mark@codesourcery.com>

	* elflink.h (elf_link_remove_section_and_adjust_dynindices):
	Remove abfd parameter.  Use _bfd_strip_section_from_output.
	(bfd_elf_size_dynamic_sections): Adjust callers accordingly.

Index: elflink.h
===================================================================
RCS file: /cvs/binutils/binutils/bfd/elflink.h,v
retrieving revision 1.3
diff -u -p -r1.3 elflink.h
--- elflink.h	1999/06/13 14:49:48	1.3
+++ elflink.h	1999/06/14 01:33:12
@@ -55,7 +55,7 @@ static boolean elf_collect_hash_codes
 static boolean elf_link_read_relocs_from_section 
   PARAMS ((bfd *, Elf_Internal_Shdr *, PTR, Elf_Internal_Rela *));
 static void elf_link_remove_section_and_adjust_dynindices 
-  PARAMS ((bfd *, struct bfd_link_info *, asection *));
+  PARAMS ((struct bfd_link_info *, asection *));
 
 /* Given an ELF BFD, add symbols to the global hash table as
    appropriate.  */
@@ -2408,20 +2408,14 @@ compute_bucket_count (info)
    subsequent entries.  */
 
 static void
-elf_link_remove_section_and_adjust_dynindices (abfd, info, section)
-     bfd *abfd;
+elf_link_remove_section_and_adjust_dynindices (info, section)
      struct bfd_link_info *info;
      asection *section;
 {
   asection **spp;
 
   /* Remove the section from the output list.  */
-  for (spp = &abfd->sections;
-       *spp != section->output_section;
-       spp = &(*spp)->next)
-    ;
-  *spp = section->output_section->next;
-  --abfd->section_count;
+  _bfd_strip_section_from_output (section);
 
   if (elf_section_data (section->output_section)->dynindx)
     {
@@ -2648,9 +2642,7 @@ NAME(bfd_elf,size_dynamic_sections) (out
       verdefs = asvinfo.verdefs;
 
       if (verdefs == NULL)
-	elf_link_remove_section_and_adjust_dynindices (output_bfd,
-						       info,
-						       s);
+	elf_link_remove_section_and_adjust_dynindices (info, s);
       else
 	{
 	  unsigned int cdefs;
@@ -2843,9 +2835,7 @@ NAME(bfd_elf,size_dynamic_sections) (out
 				(PTR) &sinfo);
 
 	if (elf_tdata (output_bfd)->verref == NULL)
-	  elf_link_remove_section_and_adjust_dynindices (output_bfd,
-							 info,
-							 s);
+	  elf_link_remove_section_and_adjust_dynindices (info, s);
 	else
 	  {
 	    Elf_Internal_Verneed *t;
@@ -2945,9 +2935,7 @@ NAME(bfd_elf,size_dynamic_sections) (out
       if (dynsymcount == 0
 	  || (verdefs == NULL && elf_tdata (output_bfd)->verref == NULL))
 	{
-	  elf_link_remove_section_and_adjust_dynindices (output_bfd,
-							 info,
-							 s);
+	  elf_link_remove_section_and_adjust_dynindices (info, s);
 	  /* The DYNSYMCOUNT might have changed if we were going to
 	     output a dynamic symbol table entry for S.  */
 	  dynsymcount = elf_hash_table (info)->dynsymcount;

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