http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52497

             Bug #: 52497
           Summary: libffi doesn't build on powerpc64-linux after latest
                    upstream merge
    Classification: Unclassified
           Product: gcc
           Version: 4.7.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libffi
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: berg...@gcc.gnu.org
              Host: powerpc*-linux
            Target: powerpc*-linux
             Build: powerpc*-linux


libffi/powerpc/ffi.c fails to build on powerpc64-linux with the following
errors:

libtool: compile:  /home/bergner/gcc/build/gcc-mainline-libffi/./gcc/xgcc
-B/home/bergner/gcc/build/gcc-mainline-libffi/./gcc/
-B/home/bergner/gcc/install/gcc-mainline-libffi/powerpc64-linux/bin/
-B/home/bergner/gcc/install/gcc-mainline-libffi/powerpc64-linux/lib/ -isystem
/home/bergner/gcc/install/gcc-mainline-libffi/powerpc64-linux/include -isystem
/home/bergner/gcc/install/gcc-mainline-libffi/powerpc64-linux/sys-include
-DHAVE_CONFIG_H -I. -I/home/bergner/gcc/gcc-mainline-testsuite-base/libffi -I.
-I/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/include -Iinclude
-I/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src -Wall -g
-fexceptions -g -O2 -m32 -fPIC -mstrict-align -MT src/powerpc/ffi.lo -MD -MP
-MF src/powerpc/.deps/ffi.Tpo -c
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c  -fPIC
-DPIC -o src/powerpc/.libs/ffi.o
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c: In
function ‘ffi_prep_args_SYSV’:
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c:199:4:
error: ‘double_tmp’ undeclared (first use in this function)
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c:199:4:
note: each undeclared identifier is reported only once for each function it
appears in
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c:215:6:
error: label ‘soft_double_prep’ used but not defined
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c: In
function ‘ffi_closure_helper_SYSV’:
/home/bergner/gcc/gcc-mainline-testsuite-base/libffi/src/powerpc/ffi.c:1135:8:
error: ‘temp’ undeclared (first use in this function)
make[7]: *** [src/powerpc/ffi.lo] Error 1


The double_tmp and temp bugs are easy to fix with the following patch, but
without knowing more about the missing label, I don't feel confident on where
to place it.

I checked the upstream libffi source and it fails the exact same way, so
another merge won't help yet.


Index: libffi/src/powerpc/ffi.c
===================================================================
--- libffi/src/powerpc/ffi.c    (revision 184944)
+++ libffi/src/powerpc/ffi.c    (working copy)
@@ -146,6 +146,7 @@ ffi_prep_args_SYSV (extended_cif *ecif,
   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);
@@ -1132,7 +1133,7 @@ ffi_closure_helper_SYSV (ffi_closure *cl

       if (nf < 8)
         {
-          temp = pfr->d;
+          double temp = pfr->d;
           pfr->f = (float) temp;
           avalue[i] = pfr;
           nf++;

Reply via email to