From: Peter Bergner <bergner@vnet.ibm.com>
To: libffi-discuss@sourceware.org
Cc: Anthony Green <green@moxielogic.com>, dclarke@blastwave.org
Subject: Re: libffi fails to build on powerpc64-linux
Date: Tue, 06 Mar 2012 00:29:00 -0000 [thread overview]
Message-ID: <1330993709.21041.5.camel@otta> (raw)
In-Reply-To: <1330990156.29904.24.camel@otta>
Taking my best swag at where the soft_double_prep label should be
(comment said it should be handled like UINT64), I tried the following
patch which allows everything to build without warnings and seems to
pass the testsuite:
=== libffi Summary ===
# of expected passes 1659
# of unsupported tests 55
Comments?
Peter
* src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp.
Cast pointers to unsigned long.
Declare soft_double_prep label.
(ffi_call): Silence possibly undefined warning.
(ffi_closure_helper_SYSV): Declare variable type.
diff --git a/src/powerpc/ffi.c b/src/powerpc/ffi.c
index 1920c91..627b4cb 100644
--- a/src/powerpc/ffi.c
+++ b/src/powerpc/ffi.c
@@ -146,6 +146,7 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
gpr_base.u = stacktop.u - ASM_NEEDS_REGISTERS - NUM_GPR_ARG_REGISTERS;
intarg_count = 0;
#ifndef __NO_FPRS__
+ double double_tmp;
fpr_base.d = gpr_base.d - NUM_FPR_ARG_REGISTERS;
fparg_count = 0;
copy_space.c = ((flags & FLAG_FP_ARGUMENTS) ? fpr_base.c : gpr_base.c);
@@ -155,9 +156,9 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
next_arg.u = stack + 2;
/* Check that everything starts aligned properly. */
- FFI_ASSERT (((unsigned) (char *) stack & 0xF) == 0);
- FFI_ASSERT (((unsigned) copy_space.c & 0xF) == 0);
- FFI_ASSERT (((unsigned) stacktop.c & 0xF) == 0);
+ FFI_ASSERT (((unsigned long) (char *) stack & 0xF) == 0);
+ FFI_ASSERT (((unsigned long) copy_space.c & 0xF) == 0);
+ FFI_ASSERT (((unsigned long) stacktop.c & 0xF) == 0);
FFI_ASSERT ((bytes & 0xF) == 0);
FFI_ASSERT (copy_space.c >= next_arg.c);
@@ -293,6 +294,9 @@ ffi_prep_args_SYSV (extended_cif *ecif, unsigned *const stack)
case FFI_TYPE_UINT64:
case FFI_TYPE_SINT64:
+
+ soft_double_prep:
+
if (intarg_count == NUM_GPR_ARG_REGISTERS-1)
intarg_count++;
if (intarg_count >= NUM_GPR_ARG_REGISTERS)
@@ -925,7 +929,7 @@ ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
*/
unsigned int smst_buffer[2];
extended_cif ecif;
- unsigned int rsize;
+ unsigned int rsize = 0;
ecif.cif = cif;
ecif.avalue = avalue;
@@ -1132,7 +1136,7 @@ ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue,
if (nf < 8)
{
- temp = pfr->d;
+ double temp = pfr->d;
pfr->f = (float) temp;
avalue[i] = pfr;
nf++;
next prev parent reply other threads:[~2012-03-06 0:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-05 23:05 Dennis Clarke
2012-03-05 23:29 ` Peter Bergner
2012-03-06 0:29 ` Peter Bergner [this message]
2012-03-06 3:18 ` Anthony Green
2012-03-06 15:36 ` Peter Bergner
2012-03-06 16:16 ` Peter Bergner
2012-03-07 4:03 ` Peter Bergner
2012-03-08 23:14 ` Peter Bergner
2012-03-09 1:01 ` Peter Bergner
-- strict thread matches above, loose matches on Subject: below --
2012-03-09 2:37 David Edelsohn
2012-03-09 8:02 ` Kyle Moffett
2012-03-07 4:13 Dennis Clarke
2012-03-06 4:21 Dennis Clarke
2012-03-06 16:17 ` Peter Bergner
2012-03-05 22:56 Peter Bergner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1330993709.21041.5.camel@otta \
--to=bergner@vnet.ibm.com \
--cc=dclarke@blastwave.org \
--cc=green@moxielogic.com \
--cc=libffi-discuss@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).