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
next prev parent 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).