PATCH: Don't allow ia64 unwind section to point to section in different files
David Mosberger
davidm@napali.hpl.hp.com
Tue May 17 21:28:00 GMT 2005
>>>>> On Tue, 17 May 2005 13:38:57 -0700, James E Wilson <wilson@specifixinc.com> said:
Jim> On Fri, 2005-05-13 at 14:46, H. J. Lu wrote:
>> When weak functions are used on ia64, part of the unwind section may
>> point to the strong definition in a different file. This will lead to
>> wrong unwind info. Basically, on ia64, we have to use comdat to get the
>> right unwind info. This patch will check it.
Jim> This doesn't look like the right fix to me.
Jim> I looked at the unwind info with old and new binutils, and noticed that
Jim> the relocs are different. In old binutils, we have
Jim> RELOCATION RECORDS FOR [.IA_64.unwind]:
Jim> OFFSET TYPE VALUE
Jim> 0000000000000000 SEGREL64LSB .text
Jim> in new binutils we have
Jim> RELOCATION RECORDS FOR [.IA_64.unwind]:
Jim> OFFSET TYPE VALUE
Jim> 0000000000000000 SEGREL64LSB _start
Jim> Since _start is at offset 0 in .text, these are the same value normally,
Jim> but they aren't if we have duplicate weak/strong functions. Since the
Jim> unwind info should always bind locally, I think it is wrong to have the
Jim> unresolved _start symbol here.
Ah, so it wasn't by coincidence that the old(er) binutils worked right.
It's encouraging to see that this problem is eminently fixable.
--david
More information about the Binutils
mailing list