public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: "H. J. Lu" <hjl@lucon.org>
To: Mike Bland <mbland@google.com>,
	binutils@sourceware.org, 	iant@google.com
Subject: Re: _bfd_elf_init_private_section_data setting output section type improperly for .stabstr
Date: Thu, 11 May 2006 23:18:00 -0000	[thread overview]
Message-ID: <20060511190220.GA22858@lucon.org> (raw)
In-Reply-To: <20060511171053.GA22035@lucon.org>

On Thu, May 11, 2006 at 10:10:53AM -0700, H. J. Lu wrote:
> On Thu, May 11, 2006 at 09:45:41PM +0930, Alan Modra wrote:
> > On Wed, May 10, 2006 at 09:32:22PM -0700, Mike Bland wrote:
> > > Long and short of it, an update to this conditional in
> > > _bfd_elf_init_private_section_data was causing the section type of
> > > .stabstr to get set to SHT_PROGBITS, when it should have been
> > > SHT_STRTAB.
> > 
> > Yes, it appears that HJ checked this change in without approval.
> > 
> > > Hope this is in an acceptable format; let me know if there are any
> > > problems, questions, concerns, etc.
> > 
> > We normally want a changelog entry, and the testcase needed a little
> > teaking for 64-bit targets but other than that this is OK.  Thanks!
> > Committing.
> > 
> 
> Unfortunately, the fix is incorrect. The ELF backend creates a
> .stabstr section. But _bfd_link_section_stabs creates a new
> .stabstr section. When linker sets the output .stabstr section flags
> from the input .stabstr section, the wrong input .stabstr section
> is used. This patch makes sure that only one .stabstr section is used.
> 

bfd_make_section_anyway is used to create a new fake input .stabstr
section. The SEC_LINKER_CREATED bit should be passed to
_bfd_elf_new_section_hook so that the proper ELF fields will be
set. This patch calls bfd_make_section_anyway_with_flags so that
the ELF fields of the new fake input .stabstr section will be set
properly.


H.J.
---
2006-05-11  H.J. Lu  <hongjiu.lu@intel.com>

	* elf.c (_bfd_elf_init_private_section_data): Undo the last
	change.

	* stabs.c (_bfd_link_section_stabs): Call
	bfd_make_section_anyway_with_flags instead of
	bfd_make_section_anyway.

--- bfd/elf.c.stabs	2006-05-11 08:52:56.000000000 -0700
+++ bfd/elf.c	2006-05-11 09:26:36.000000000 -0700
@@ -5911,8 +5911,7 @@ _bfd_elf_init_private_section_data (bfd 
      output BFD section flags has been set to something different.
      elf_fake_sections will set ELF section type based on BFD
      section flags.  */
-  if (osec->flags == isec->flags
-      || (osec->flags == 0 && elf_section_type (osec) == SHT_NULL))
+  if (osec->flags == isec->flags || !osec->flags)
     elf_section_type (osec) = elf_section_type (isec);
 
   /* Set things up for objcopy and relocatable link.  The output
--- bfd/stabs.c.stabs	2006-03-16 12:37:43.000000000 -0800
+++ bfd/stabs.c	2006-05-11 11:53:54.000000000 -0700
@@ -198,11 +198,14 @@ _bfd_link_section_stabs (bfd *abfd,
 				 stab_link_includes_newfunc,
 				 sizeof (struct stab_link_includes_entry)))
 	goto error_return;
-      sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
+      sinfo->stabstr = bfd_make_section_anyway_with_flags (abfd,
+							   ".stabstr",
+							   (SEC_HAS_CONTENTS
+							    | SEC_READONLY
+							    | SEC_DEBUGGING |
+							    SEC_LINKER_CREATED));
       if (sinfo->stabstr == NULL)
 	goto error_return;
-      sinfo->stabstr->flags |= (SEC_HAS_CONTENTS | SEC_READONLY
-				| SEC_DEBUGGING | SEC_LINKER_CREATED);
     }
 
   /* Initialize the information we are going to store for this .stab

  reply	other threads:[~2006-05-11 19:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-11 12:24 Mike Bland
2006-05-11 15:55 ` Alan Modra
2006-05-11 22:21   ` H. J. Lu
2006-05-11 23:18     ` H. J. Lu [this message]
2006-05-12  2:14       ` Ian Lance Taylor
2006-05-15  9:32         ` H. J. Lu
2006-06-01  4:02       ` Alan Modra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060511190220.GA22858@lucon.org \
    --to=hjl@lucon.org \
    --cc=binutils@sourceware.org \
    --cc=iant@google.com \
    --cc=mbland@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).