[PyObjC-svn] r1980 - in trunk/pyobjc/pyobjc-core: . Modules/objc libffi-src/include libffi-src/include/ffi libffi-src/powerpc libffi-src/tests/testsuite/libffi.call setup-lib

[email protected]
Newsgroups gmane.comp.python.pyobjc.cvs
Message-ID <[email protected]>
Author: ronaldoussoren
Date: Sun Jan 13 13:29:11 2008
New Revision: 1980

Log:
* Change code to avoid compiler warnings on ppc32 
* Add ffi testcases that show a bad interaction
  between libffi and exceptions on PPC64.



Added:
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/ffi.h
      - copied unchanged from r1977, /trunk/pyobjc/pyobjc-core/libffi-src/include/ffi.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/ffi_common.h
      - copied unchanged from r1977, /trunk/pyobjc/pyobjc-core/libffi-src/include/ffi_common.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/fficonfig.h
      - copied unchanged from r1977, /trunk/pyobjc/pyobjc-core/libffi-src/include/fficonfig.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/ffitarget.h
      - copied unchanged from r1977, /trunk/pyobjc/pyobjc-core/libffi-src/include/ffitarget.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/ppc-ffitarget.h
      - copied unchanged from r1977, /trunk/pyobjc/pyobjc-core/libffi-src/include/ppc-ffitarget.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi/x86-ffitarget.h
      - copied unchanged from r1977, /trunk/pyobjc/pyobjc-core/libffi-src/include/x86-ffitarget.h
   trunk/pyobjc/pyobjc-core/libffi-src/tests/testsuite/libffi.call/exception1.m
   trunk/pyobjc/pyobjc-core/libffi-src/tests/testsuite/libffi.call/exception2.m
Removed:
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffi_common.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/fficonfig.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ffitarget.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/ppc-ffitarget.h
   trunk/pyobjc/pyobjc-core/libffi-src/include/x86-ffitarget.h
Modified:
   trunk/pyobjc/pyobjc-core/Modules/objc/libffi_support.h
   trunk/pyobjc/pyobjc-core/Modules/objc/objc_super.m
   trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-darwin.h
   trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-ffi_darwin.c
   trunk/pyobjc/pyobjc-core/setup-lib/dejagnu.py
   trunk/pyobjc/pyobjc-core/setup.py

Modified: trunk/pyobjc/pyobjc-core/Modules/objc/libffi_support.h
==============================================================================
--- trunk/pyobjc/pyobjc-core/Modules/objc/libffi_support.h	(original)
+++ trunk/pyobjc/pyobjc-core/Modules/objc/libffi_support.h	Sun Jan 13 13:29:11 2008
@@ -1,11 +1,7 @@
 #ifndef PyObjC_FFI_SUPPORT_H
 #define PyObjC_FFI_SUPPORT_H
 
-#ifdef WITH_SYSTEM_FFI
-#include <ffi/ffi.h>
-#else
-#include "ffi.h"
-#endif
+#include "ffi/ffi.h"
 
 #ifndef FFI_CLOSURES
 #    error "Need FFI_CLOSURES!"

Modified: trunk/pyobjc/pyobjc-core/Modules/objc/objc_super.m
==============================================================================
--- trunk/pyobjc/pyobjc-core/Modules/objc/objc_super.m	(original)
+++ trunk/pyobjc/pyobjc-core/Modules/objc/objc_super.m	Sun Jan 13 13:29:11 2008
@@ -148,5 +148,4 @@
 	PyType_GenericAlloc,			/* tp_alloc */
 	PyType_GenericNew,			/* tp_new */
 	PyObject_GC_Del,        		/* tp_free */
-	1,					/* tp_is_gc */
 };

Modified: trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-darwin.h
==============================================================================
--- trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-darwin.h	(original)
+++ trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-darwin.h	Sun Jan 13 13:29:11 2008
@@ -22,6 +22,7 @@
    OTHER DEALINGS IN THE SOFTWARE.
    ----------------------------------------------------------------------- */
 
+
 #define L(x) x
 
 #define SF_ARG9		MODE_CHOICE(56,112)
@@ -56,6 +57,7 @@
 	((x) == FFI_TYPE_UINT32 || (x) == FFI_TYPE_SINT32 ||\
 	(x) == FFI_TYPE_INT || (x) == FFI_TYPE_FLOAT)
 
+
 #if !defined(LIBFFI_ASM)
 
 enum {
@@ -73,6 +75,7 @@
 	FLAG_RETVAL_REFERENCE	= 1 << (31 - 4)
 };
 
+
 void ffi_prep_args(extended_cif*   inEcif, unsigned *const stack);
 
 typedef union
@@ -86,7 +89,6 @@
         ffi_dblfl*              pfr);
 
 
-
 #if defined(__ppc64__)
 void ffi64_struct_to_ram_form(const ffi_type*, const char*, unsigned int*,
 	const char*, unsigned int*, unsigned int*, char*, unsigned int*);

Modified: trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-ffi_darwin.c
==============================================================================
--- trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-ffi_darwin.c	(original)
+++ trunk/pyobjc/pyobjc-core/libffi-src/powerpc/ppc-ffi_darwin.c	Sun Jan 13 13:29:11 2008
@@ -28,13 +28,13 @@
    OTHER DEALINGS IN THE SOFTWARE.
    ----------------------------------------------------------------------- */
 
-#include <ffi.h>
-#include <ffi_common.h>
+#include "ffi.h"
+#include "ffi_common.h"
 
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <ppc-darwin.h>
+#include "ppc-darwin.h"
 #include <architecture/ppc/mode_independent_asm.h>
 
 #if defined(POWERPC_DARWIN)
@@ -815,7 +815,7 @@
 	unsigned int		nf = 0;	/* number of FPRs already used.  */
 	unsigned int		ng = 0;	/* number of GPRs already used.  */
 	ffi_cif*			cif = closure->cif;
-	long				avn = cif->nargs;
+	unsigned int				avn = cif->nargs;
 	void**				avalue = alloca(cif->nargs * sizeof(void*));
 	ffi_type**			arg_types = cif->arg_types;
 
@@ -892,9 +892,9 @@
 						size_al = ALIGN(arg_types[i]->size, 8);
 
 					if (size_al < 3)
-						avalue[i] = (void*)pgr + MODE_CHOICE(4,8) - size_al;
+						avalue[i] = (char*)pgr + MODE_CHOICE(4,8) - size_al;
 					else
-						avalue[i] = (void*)pgr;
+						avalue[i] = (char*)pgr;
 
 					ng	+= (size_al + 3) / sizeof(long);
 					pgr += (size_al + 3) / sizeof(long);

Modified: trunk/pyobjc/pyobjc-core/setup-lib/dejagnu.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/setup-lib/dejagnu.py	(original)
+++ trunk/pyobjc/pyobjc-core/setup-lib/dejagnu.py	Sun Jan 13 13:29:11 2008
@@ -106,9 +106,15 @@
         libdir = os.path.join('build', 'temp.%s-%d.%d'%(get_platform(), sys.version_info[0], sys.version_info[1]), 'libffi-src')
         libffiobjects = self.object_files(libdir)
 
-        commandline='MACOSX_DEPLPOYMENT_TARGET=%s cc %s -g -DMACOSX -Ilibffi-src/include -Ilibffi-src/powerpc -o /tmp/test.bin %s %s 2>&1'%(
+        if self.filename.endswith('.m'):
+            extra_link = '-framework Foundation'
+        else:
+            extra_link = ''
+
+        commandline='MACOSX_DEPLPOYMENT_TARGET=%s cc %s -g -DMACOSX -Ilibffi-src/include -Ilibffi-src/powerpc -o /tmp/test.bin %s %s %s 2>&1'%(
                 get_config_var('MACOSX_DEPLOYMENT_TARGET'),
-                get_config_var('CFLAGS'), self.filename, ' '.join(libffiobjects))
+                get_config_var('CFLAGS'), self.filename, ' '.join(libffiobjects),
+		extra_link)
 
         fp = os.popen(commandline)
         data = fp.read()
@@ -140,7 +146,7 @@
 def testSuiteForDirectory(dirname):
     tests = []
     for fn in os.listdir(dirname):
-        if not fn.endswith('.c'): continue
+        if not fn.endswith('.c') and not fn.endswith('.m'): continue
         tst = DgTestCase(os.path.join(dirname, fn))
         if alltests and tst.shortDescription() not in alltests:
             continue

Modified: trunk/pyobjc/pyobjc-core/setup.py
==============================================================================
--- trunk/pyobjc/pyobjc-core/setup.py	(original)
+++ trunk/pyobjc/pyobjc-core/setup.py	Sun Jan 13 13:29:11 2008
@@ -185,6 +185,8 @@
 
 EXTRA_SOURCE = FFI_SOURCE
 EXTRA_CFLAGS = FFI_CFLAGS
+#EXTRA_SOURCE = []
+#EXTRA_CFLAGS = []
 
 CorePackages = [ 'objc' ]
 objcExtension = Extension("objc._objc",

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.