public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* _bfd_elf_init_private_section_data setting output section type improperly for .stabstr
@ 2006-05-11 12:24 Mike Bland
  2006-05-11 15:55 ` Alan Modra
  0 siblings, 1 reply; 7+ messages in thread
From: Mike Bland @ 2006-05-11 12:24 UTC (permalink / raw)
  To: binutils; +Cc: iant

I've a small patch for a bug I believe I've found in the binutils/ld
mainline.  I stumbled across it when trying to build and prelink a
libc-2.3.2.so containing .stab and .stabstr sections.

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.  This caused assign_section_numbers to fail to process
.stabstr as SHT_PROGBITS, causing the .stab section to get output with
a sh_entsize of zero.  This, in turn, triggered an assertion in the
prelink tool:

prelink: stabs.c:100: adjust_stabs: Assertion `dso->shdr[n].sh_entsize
== 12' failed.

This patch passes all current bintuils test cases.  My new test case
fails with the original _bfd_elf_init_private_section_data, and passes
with the new change.

Hope this is in an acceptable format; let me know if there are any
problems, questions, concerns, etc.

Thanks,

Mike

==== src/bfd/elf.c#3 - src/bfd/elf.c ====
--- src/bfd/elf.c#3     2006-05-10 21:10:55.000000000 -0700
+++ src/bfd/elf.c       2006-05-10 19:52:30.000000000 -0700
@@ -6054,7 +6054,8 @@ _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)
+  if (osec->flags == isec->flags
+      || (!osec->flags && elf_section_type (osec) == SHT_NULL))
     elf_section_type (osec) = elf_section_type (isec);

   /* Set things up for objcopy and relocatable link.  The output
==== (added) src/ld/testsuite/ld-elf/stab.d ====
--- /dev/null   2006-04-17 10:27:56.868292750 -0700
+++ src/ld/testsuite/ld-elf/stab.d      2006-05-10 19:53:55.000000000 -0700
@@ -0,0 +1,12 @@
+#source: start.s
+#as: -gstabs
+#readelf: -N
+#ld:
+
+#...
+  \[[0-9 ][0-9]\] \.stab
+       PROGBITS        00000000 0000[0-9a-f][0-9a-f]
0000[0-9a-f][0-9a-f] 0c   [1-9]+   0  4
+#...
+  \[[0-9 ][0-9]\] \.stabstr
+       STRTAB          00000000 0000[0-9a-f][0-9a-f]
0000[0-9a-f][0-9a-f] 00   0   0  1
+#...

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2006-06-01  4:02 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-11 12:24 _bfd_elf_init_private_section_data setting output section type improperly for .stabstr 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
2006-05-12  2:14       ` Ian Lance Taylor
2006-05-15  9:32         ` H. J. Lu
2006-06-01  4:02       ` Alan Modra

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).