This is the mail archive of the
mailing list for the GCC project.
Re: libgcc_s, Linux, and PT_GNU_EH_FRAME, and binutils
- From: Jakub Jelinek <jakub at redhat dot com>
- To: "Martin v. Loewis" <martin at v dot loewis dot de>
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 5 Aug 2002 08:11:07 +0200
- Subject: Re: libgcc_s, Linux, and PT_GNU_EH_FRAME, and binutils
- References: <200208050443.g754hHEi007363@mira.informatik.hu-berlin.de>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Mon, Aug 05, 2002 at 06:43:17AM +0200, Martin v. Loewis wrote:
> Further analysis shows that the incompatibility was caused due to
> different binutils versions. On the system where the binary was
> compiled, binutils 2.12 was present, which has --eh-frame-hdr.
> On the system where the binary was run, binutils 2.11 was present,
> which does not support this option.
> So binutils versions that differ by one minor can cause binary
> incompatibilities for C++ :-(
Here I don't understand what you mean. If one gcc was configured against
2.12 binutils (2.12.1+ or plain 2.12 (which shouldn't be used)?), then
it forever requires those binutils, as it passes --eh-frame-hdr from
specs (and relies on PT_GNU_EH_FRAME being present, so
that __register_frame* calls are not necessary in the crtstuff).
Which crtstuff is used is picked at link time and at the same time
you either pass or don't pass --eh-frame-hdr, so you either rely on
PT_GNU_EH_FRAME or don't.