Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 Mar 2016 00:19:42 -0800
From:      Mark Millard <markmi@dsl-only.net>
To:        Roman Divacky <rdivacky@vlakno.cz>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>, FreeBSD Toolchain <freebsd-toolchain@freebsd.org>
Subject:   Re: 207732 submitted: libgcc_s .eh_frame handling messes up interpreting powerpc/powerpc64 frame pointer register use produced by clang 3.8.0 [I was wrong]
Message-ID:  <76083A2C-9659-46A9-B9DC-6944C50AF4E9@dsl-only.net>
In-Reply-To: <7BC7F7FF-FF5C-4BE9-875C-6997BC194295@dsl-only.net>
References:  <7BC7F7FF-FF5C-4BE9-875C-6997BC194295@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2016-Mar-5, at 5:13 PM, Mark Millard <markmi@dsl-only.net> wrote:
>=20
> I have submitted FreeBSD bug 207732:
>=20
> libgcc_s .eh_frame handling messes up interpreting powerpc/powerpc64 =
frame pointer register use produced by clang 3.8.0
>=20
> In essence clang++ 3.8.0 generates Frame Pointer Register based code =
(r31 in addition to the r1 stack pointer) that g++ 4.2.1/4.9/5.3 =
(normally) do not and so the clang++ 3.8.0 code ends up touching an =
error in libgcc_s interpreting .eh_frame information for C++ exception =
handling that gcc 4.2.1 and the like side step by not using such a Frame =
Pointer register.
>=20
> Note: The context for libgcc_s was a clang 3.8.0 based buildworld. A =
gcc buildworld does not involve such a Frame Pointer Register.
>=20
> I do not know if any TARGET_ARCH's other than powerpc/powerpc64 also =
generate such Frame Pointer Register like code and so might touch the =
same error.
>=20
>=20
> =3D=3D=3D
> Mark Millard
> markmi at dsl-only.net

With the other errors identified and reported for .eh_frame and C++ =
exception handling for powerpc it is getting harder to tell if a problem =
is a new problem or a consequence of the other ones. (Various problems =
have no work around yet to avoid them.)

This turned out to be a consequence of other problems.

Such was easier to discover once I induced gcc 4.2.1 to generate some =
example code with r31 in use as a frame pointer. (I used alloca and =
default optimization.) Observing the result's behavior and the .eh_frame =
output indicated I'd originally misinterpreted where the earliest =
problem was in the clang 3.8.0 context.


=3D=3D=3D
Mark Millard
markmi at dsl-only.net



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?76083A2C-9659-46A9-B9DC-6944C50AF4E9>