On Fri, May 12, 2006 at 05:52:46PM -0700, H. J. Lu wrote: > On Fri, May 12, 2006 at 01:54:13PM -0700, H. J. Lu wrote: > > On Fri, May 12, 2006 at 10:05:12AM -0700, H. J. Lu wrote: > > > Hi Richard, > > > > > > Your patch: > > > > > > http://sourceware.org/ml/binutils/2004-11/msg00226.html > > > > > > assumes that CIE/FDE are aligned at the pointer size. But it isn't > > > necessarily true. See > > > > > > http://sources.redhat.com/bugzilla/show_bug.cgi?id=2657 > > > > > > > This patch fixes 2 PRs 2655/2657. PR 2655 is a gcc bug > > > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27576 > > > > PR 2657 is we don't properly shrink CIE/FDE. > > > > It turns out that _bfd_elf_discard_section_eh_frame will always pad > CIE/FDE record to the pointer size boundary since it calls > size_of_output_cie_fde to set the CIE/FDE record size. Even if the next > .eh_frame section is marked for 4 byte alignment, it always will be > aligned at the pointer size. Fixing PR 2657 will also fix PR 2655. > I am enclosing an upated patch and 2 testcases for x86-64. > > We shouldn't pad the .eh_frame section to its section alignment. We only need to make sure that CIE/FDE records are aligned at pointer size. Otherwise, we may generate bad .eh_frame section if the input section alignment isn't pointer size. I am enclosing a new patch. I also added a new testcase. H.J.