From f93a40eaa321c7c6cd47790dd30ddb774d33d8ed Mon Sep 17 00:00:00 2001
From: John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
Date: Mon, 14 Dec 2009 02:42:18 +0000
Subject: [PATCH] ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
 type on HP-UX.

	* src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
	type on HP-UX.

From-SVN: r155205
---
 libffi/ChangeLog    | 5 +++++
 libffi/src/pa/ffi.c | 7 +++++++
 2 files changed, 12 insertions(+)

diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index 517ac4eff639..647e91f55da5 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2009-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+	* src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
+	type on HP-UX.
+
 2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
 
 	* src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
diff --git a/libffi/src/pa/ffi.c b/libffi/src/pa/ffi.c
index c7a14359a0be..6d7606f89bcf 100644
--- a/libffi/src/pa/ffi.c
+++ b/libffi/src/pa/ffi.c
@@ -492,6 +492,13 @@ ffi_status ffi_closure_inner_pa32(ffi_closure *closure, UINT32 *stack)
 	  avalue[i] = (void *)(stack - slot);
 	  break;
 
+#ifdef PA_HPUX
+	case FFI_TYPE_LONGDOUBLE:
+	  /* Long doubles are treated like a big structure.  */
+	  avalue[i] = (void *) *(stack - slot);
+	  break;
+#endif
+
 	case FFI_TYPE_STRUCT:
 	  /* Structs smaller or equal than 4 bytes are passed in one
 	     register. Structs smaller or equal 8 bytes are passed in two
-- 
GitLab