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.