This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC 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][ARM] FreeBSD ARM support, EABI, v3


On 08.01.15 17:27, Richard Earnshaw wrote:
On 29/12/14 18:44, Andreas Tobler wrote:
All,

here is the third attempt to support ARM with FreeBSD.

In the meantime we found another issue in the unwinder where I had to
adapt some stuff.

The unwind_phase2_forced function in libgcc calls a stop_fn function.
This stop_fn is in FreeBSD's libthr implementation and is called
thread_unwind_stop. This thread_unwind_stop is a generic function used
on all FreeBSD archs.

The issue is now that this thread_unwind_stop expects a double int for
the exception_class, like on every other arch. For ARM EABI this
exception_class is an array of char which is passed in one register as
pointer vs. two registers for a double int.

To solve this issue we defined the exception_class as double integer for
FreeBSD.

This adaptation reduced the failure count in libstdc++ by about 40 fails.

I build and test this port on a regular basis and I post the results to
the usual place.

...

Umm, sorry, just seen this update to the previous patch.

The changes to the exception unwinding look a bit more involved.  Could
you separate that out into a separate patch, so that it's easier to see
what you're changing?

Ok, here the mentioned part as separate diff. The comments are above. The CL below :)

Thank you very much!

Andreas

gcc:

	* ginclude/unwind-arm-common.h (_Uwind_Control_Block): Define
	exception_class as double integer for FreeBSD ARM.
	(_Unwind_Exception): Define _Unwind_Exception_Class as double integer
	for FreeBSD ARM.

libstc++-v3:

	* libsupc++/unwind-cxx.h (__is_gxx_exception_class,
	__is_dependent_exception): Exclude FreeBSD ARM from the
	__ARM_EABI_UNWINDER__ ifdef.


Attachment: gcc5_arm_unwind_20150108.diff
Description: Text document


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