This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: Don't allow ia64 unwind section to point to section indifferent files


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]