This is the mail archive of the libffi-discuss@sourceware.org mailing list for the libffi 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, libffi] Sync merge libffi


Hello Anthony,

On 4 Mar 2012, at 21:20, Anthony Green wrote:

The attached patch includes changes that have been reviewed, approved and merged into the stand-alone libffi release tree**.

This hunk (and an identical change in src/powerpc/darwin.S) ..


Index: src/powerpc/darwin_closure.S
===================================================================
--- src/powerpc/darwin_closure.S	(revision 184894)
+++ src/powerpc/darwin_closure.S	(working copy)
@@ -484,7 +484,7 @@
 	.byte	EH_DATA_ALIGN_FACT ; sleb128 -4; CIE Data Alignment Factor
 	.byte	0x41	; CIE RA Column
 	.byte	0x1	; uleb128 0x1; Augmentation size
-	.byte	0x90	; FDE Encoding (indirect pcrel)
+	.byte	0x10	; FDE Encoding (indirect pcrel)
 	.byte	0xc	; DW_CFA_def_cfa
 	.byte	0x1	; uleb128 0x1
 	.byte	0x0	; uleb128 0x0

.. appear to be incomplete - they change the FDE encoding - without changing the way in which the information is provided (and the parenthesized portion of the comment is now misleading).

Consequently, unwinding through libffi for m32/m64 powerpc-darwin is not working on trunk at present which causes fails in libffi.special/ special.exp (and also causes some additional fails for libjava).

===

Reverting the hunks is one possibility; however the use of indirect- pcrel is somewhat out-of-line with what the system compiler produces for FDE encoding (although it is the preferred method for personality routine encoding)...

... so the following patch modifies the provided data to use just pcrel (as per the usual output of the system gcc-4.2.1).

I have tested this on a quad G5 running darwin9
libffi/libjava: \{,-mmacosx-version-min=10.4\}\{-m32,-m64\}

The patch restores libffi/libjava to the pre-merge results.

[one new libffi test - err_bad_abi.c - is also failing on trunk for ppc-darwin, but that's to be investigated separately].

Mike, do you know any special reason that indirect-pcrel was being used there?

.. or, is this OK for trunk?
Iain


libffi:


	* src/powerpc/darwin_closure.S (EH_FRAME_LABEL): New.
	Remove indirect reference for Lstartcode.  Change comment on FDE
	encoding.  Use amended EH_FRAME_LABEL for CIE offset.
	Adjust initial location to use PCrel, and no indirection.
	* src/powerpc/darwin.S: Likewise.

Attachment: 185095-libffi-unwind-a.txt
Description: Text document





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