r79515 - in python/trunk: Lib/ctypes/test/test_win32.py Modules/_ctypes/callbacks.c Modules/_ctypes/callproc.c Modules/_ctypes/ctypes.h Modules/_ctypes/libffi_msvc/LICENSE Modules/_ctypes/libffi_msvc/README Modules/_ctypes/libffi_msvc/README.ctypes Modules/_ctypes/libffi_msvc/ffi.c Modules/_ctypes/libffi_msvc/ffi.h Modules/_ctypes/libffi_msvc/ffi_common.h Modules/_ctypes/libffi_msvc/fficonfig.h Modules/_ctypes/libffi_msvc/ffitarget.h Modules/_ctypes/libffi_msvc/prep_cif.c Modules/_ctypes/l
![](https://secure.gravatar.com/avatar/8ac615df352a970211b0e3d94a307c6d.jpg?s=120&d=mm&r=g)
Author: thomas.heller Date: Tue Mar 30 22:57:06 2010 New Revision: 79515 Log: Revert rev. 79509; ctypes doesn't build on linux. Added: python/trunk/Modules/_ctypes/libffi_msvc/LICENSE - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/LICENSE python/trunk/Modules/_ctypes/libffi_msvc/README - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/README python/trunk/Modules/_ctypes/libffi_msvc/README.ctypes - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/README.ctypes python/trunk/Modules/_ctypes/libffi_msvc/ffi.c - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/ffi.c python/trunk/Modules/_ctypes/libffi_msvc/ffi_common.h - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/ffi_common.h python/trunk/Modules/_ctypes/libffi_msvc/ffitarget.h - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/ffitarget.h python/trunk/Modules/_ctypes/libffi_msvc/prep_cif.c - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/prep_cif.c python/trunk/Modules/_ctypes/libffi_msvc/types.c - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/types.c python/trunk/Modules/_ctypes/libffi_msvc/win32.c - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/win32.c python/trunk/Modules/_ctypes/libffi_msvc/win64.asm - copied unchanged from r79508, /python/trunk/Modules/_ctypes/libffi_msvc/win64.asm python/trunk/Modules/_ctypes/malloc_closure.c - copied unchanged from r79508, /python/trunk/Modules/_ctypes/malloc_closure.c Modified: python/trunk/Lib/ctypes/test/test_win32.py python/trunk/Modules/_ctypes/callbacks.c python/trunk/Modules/_ctypes/callproc.c python/trunk/Modules/_ctypes/ctypes.h python/trunk/Modules/_ctypes/libffi_msvc/ffi.h python/trunk/Modules/_ctypes/libffi_msvc/fficonfig.h python/trunk/PCbuild/_ctypes.vcproj Modified: python/trunk/Lib/ctypes/test/test_win32.py ============================================================================== --- python/trunk/Lib/ctypes/test/test_win32.py (original) +++ python/trunk/Lib/ctypes/test/test_win32.py Tue Mar 30 22:57:06 2010 @@ -6,6 +6,32 @@ import _ctypes_test +if sys.platform == "win32" and sizeof(c_void_p) == sizeof(c_int): + # Only windows 32-bit has different calling conventions. + + class WindowsTestCase(unittest.TestCase): + def test_callconv_1(self): + # Testing stdcall function + + IsWindow = windll.user32.IsWindow + # ValueError: Procedure probably called with not enough arguments (4 bytes missing) + self.assertRaises(ValueError, IsWindow) + + # This one should succeeed... + self.assertEqual(0, IsWindow(0)) + + # ValueError: Procedure probably called with too many arguments (8 bytes in excess) + self.assertRaises(ValueError, IsWindow, 0, 0, 0) + + def test_callconv_2(self): + # Calling stdcall function as cdecl + + IsWindow = cdll.user32.IsWindow + + # ValueError: Procedure called with not enough arguments (4 bytes missing) + # or wrong calling convention + self.assertRaises(ValueError, IsWindow, None) + if sys.platform == "win32": class FunctionCallTestCase(unittest.TestCase): Modified: python/trunk/Modules/_ctypes/callbacks.c ============================================================================== --- python/trunk/Modules/_ctypes/callbacks.c (original) +++ python/trunk/Modules/_ctypes/callbacks.c Tue Mar 30 22:57:06 2010 @@ -22,7 +22,7 @@ Py_XDECREF(self->callable); Py_XDECREF(self->restype); if (self->pcl) - ffi_closure_free(self->pcl); + _ctypes_free_closure(self->pcl); PyObject_GC_Del(self); } @@ -421,7 +421,8 @@ assert(CThunk_CheckExact(p)); - if (ffi_closure_alloc(sizeof(ffi_closure), &p->pcl) == NULL) { + p->pcl = _ctypes_alloc_closure(); + if (p->pcl == NULL) { PyErr_NoMemory(); goto error; } Modified: python/trunk/Modules/_ctypes/callproc.c ============================================================================== --- python/trunk/Modules/_ctypes/callproc.c (original) +++ python/trunk/Modules/_ctypes/callproc.c Tue Mar 30 22:57:06 2010 @@ -771,6 +771,7 @@ ffi_cif cif; int cc; #ifdef MS_WIN32 + int delta; #ifndef DONT_USE_SEH DWORD dwExceptionCode = 0; EXCEPTION_RECORD record; @@ -821,8 +822,9 @@ #ifndef DONT_USE_SEH __try { #endif + delta = #endif - ffi_call(&cif, (void *)pProc, resmem, avalues); + ffi_call(&cif, (void *)pProc, resmem, avalues); #ifdef MS_WIN32 #ifndef DONT_USE_SEH } @@ -854,6 +856,35 @@ return -1; } #endif +#ifdef MS_WIN64 + if (delta != 0) { + PyErr_Format(PyExc_RuntimeError, + "ffi_call failed with code %d", + delta); + return -1; + } +#else + if (delta < 0) { + if (flags & FUNCFLAG_CDECL) + PyErr_Format(PyExc_ValueError, + "Procedure called with not enough " + "arguments (%d bytes missing) " + "or wrong calling convention", + -delta); + else + PyErr_Format(PyExc_ValueError, + "Procedure probably called with not enough " + "arguments (%d bytes missing)", + -delta); + return -1; + } else if (delta > 0) { + PyErr_Format(PyExc_ValueError, + "Procedure probably called with too many " + "arguments (%d bytes in excess)", + delta); + return -1; + } +#endif #endif if ((flags & FUNCFLAG_PYTHONAPI) && PyErr_Occurred()) return -1; @@ -1130,7 +1161,11 @@ } for (i = 0; i < argcount; ++i) { atypes[i] = args[i].ffi_type; - if (atypes[i]->type == FFI_TYPE_STRUCT) + if (atypes[i]->type == FFI_TYPE_STRUCT +#ifdef _WIN64 + && atypes[i]->size <= sizeof(void *) +#endif + ) avalues[i] = (void *)args[i].value.p; else avalues[i] = (void *)&args[i].value; Modified: python/trunk/Modules/_ctypes/ctypes.h ============================================================================== --- python/trunk/Modules/_ctypes/ctypes.h (original) +++ python/trunk/Modules/_ctypes/ctypes.h Tue Mar 30 22:57:06 2010 @@ -428,6 +428,9 @@ #endif #endif +extern void _ctypes_free_closure(void *); +extern void *_ctypes_alloc_closure(void); + extern void _ctypes_add_traceback(char *, char *, int); extern PyObject *PyCData_FromBaseObj(PyObject *type, PyObject *base, Py_ssize_t index, char *adr); Modified: python/trunk/Modules/_ctypes/libffi_msvc/ffi.h ============================================================================== --- python/trunk/Modules/_ctypes/libffi_msvc/ffi.h (original) +++ python/trunk/Modules/_ctypes/libffi_msvc/ffi.h Tue Mar 30 22:57:06 2010 @@ -1,5 +1,5 @@ /* -----------------------------------------------------------------*-C-*- - libffi @VERSION@ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc. + libffi 2.00-beta - Copyright (c) 1996-2003 Red Hat, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -12,14 +12,13 @@ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. + THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. ----------------------------------------------------------------------- */ @@ -57,7 +56,7 @@ #endif /* Specify which architecture libffi is configured for. */ -/* #define @TARGET@ */ +//XXX #define X86 /* ---- System configuration information --------------------------------- */ @@ -65,10 +64,6 @@ #ifndef LIBFFI_ASM -#ifdef _MSC_VER -#define __attribute__(X) -#endif - #include <stddef.h> #include <limits.h> @@ -84,21 +79,12 @@ # ifdef __GNUC__ # define FFI_LONG_LONG_MAX __LONG_LONG_MAX__ # endif +# ifdef _MSC_VER +# define FFI_LONG_LONG_MAX _I64_MAX +# endif # endif #endif -/* The closure code assumes that this works on pointers, i.e. a size_t */ -/* can hold a pointer. */ - -typedef struct _ffi_type -{ - size_t size; - unsigned short alignment; - unsigned short type; - struct _ffi_type **elements; -} ffi_type; - -#ifndef LIBFFI_HIDE_BASIC_TYPES #if SCHAR_MAX == 127 # define ffi_type_uchar ffi_type_uint8 # define ffi_type_schar ffi_type_sint8 @@ -129,23 +115,26 @@ #error "int size not supported" #endif +#define ffi_type_ulong ffi_type_uint64 +#define ffi_type_slong ffi_type_sint64 #if LONG_MAX == 2147483647 # if FFI_LONG_LONG_MAX != 9223372036854775807 - #error "no 64-bit data type supported" + #error "no 64-bit data type supported" # endif #elif LONG_MAX != 9223372036854775807 #error "long size not supported" #endif -#if LONG_MAX == 2147483647 -# define ffi_type_ulong ffi_type_uint32 -# define ffi_type_slong ffi_type_sint32 -#elif LONG_MAX == 9223372036854775807 -# define ffi_type_ulong ffi_type_uint64 -# define ffi_type_slong ffi_type_sint64 -#else - #error "long size not supported" -#endif +/* The closure code assumes that this works on pointers, i.e. a size_t */ +/* can hold a pointer. */ + +typedef struct _ffi_type +{ + size_t size; + unsigned short alignment; + unsigned short type; + /*@null@*/ struct _ffi_type **elements; +} ffi_type; /* These are defined in types.c */ extern ffi_type ffi_type_void; @@ -159,19 +148,14 @@ extern ffi_type ffi_type_sint64; extern ffi_type ffi_type_float; extern ffi_type ffi_type_double; +extern ffi_type ffi_type_longdouble; extern ffi_type ffi_type_pointer; -#if HAVE_LONG_DOUBLE -extern ffi_type ffi_type_longdouble; -#else -#define ffi_type_longdouble ffi_type_double -#endif -#endif /* LIBFFI_HIDE_BASIC_TYPES */ typedef enum { FFI_OK = 0, FFI_BAD_TYPEDEF, - FFI_BAD_ABI + FFI_BAD_ABI } ffi_status; typedef unsigned FFI_TYPE; @@ -179,8 +163,8 @@ typedef struct { ffi_abi abi; unsigned nargs; - ffi_type **arg_types; - ffi_type *rtype; + /*@dependent@*/ ffi_type **arg_types; + /*@dependent@*/ ffi_type *rtype; unsigned bytes; unsigned flags; #ifdef FFI_EXTRA_CIF_FIELDS @@ -190,16 +174,10 @@ /* ---- Definitions for the raw API -------------------------------------- */ -#ifndef FFI_SIZEOF_ARG -# if LONG_MAX == 2147483647 -# define FFI_SIZEOF_ARG 4 -# elif LONG_MAX == 9223372036854775807 -# define FFI_SIZEOF_ARG 8 -# endif -#endif - -#ifndef FFI_SIZEOF_JAVA_RAW -# define FFI_SIZEOF_JAVA_RAW FFI_SIZEOF_ARG +#ifdef _WIN64 +#define FFI_SIZEOF_ARG 8 +#else +#define FFI_SIZEOF_ARG 4 #endif typedef union { @@ -210,25 +188,10 @@ void* ptr; } ffi_raw; -#if FFI_SIZEOF_JAVA_RAW == 4 && FFI_SIZEOF_ARG == 8 -/* This is a special case for mips64/n32 ABI (and perhaps others) where - sizeof(void *) is 4 and FFI_SIZEOF_ARG is 8. */ -typedef union { - signed int sint; - unsigned int uint; - float flt; - char data[FFI_SIZEOF_JAVA_RAW]; - void* ptr; -} ffi_java_raw; -#else -typedef ffi_raw ffi_java_raw; -#endif - - -void ffi_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_raw *avalue); +void ffi_raw_call (/*@dependent@*/ ffi_cif *cif, + void (*fn)(), + /*@out@*/ void *rvalue, + /*@dependent@*/ ffi_raw *avalue); void ffi_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); void ffi_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); @@ -238,35 +201,25 @@ /* packing, even on 64-bit machines. I.e. on 64-bit machines */ /* longs and doubles are followed by an empty 64-bit word. */ -void ffi_java_raw_call (ffi_cif *cif, - void (*fn)(void), - void *rvalue, - ffi_java_raw *avalue); +void ffi_java_raw_call (/*@dependent@*/ ffi_cif *cif, + void (*fn)(), + /*@out@*/ void *rvalue, + /*@dependent@*/ ffi_raw *avalue); -void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_java_raw *raw); -void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_java_raw *raw, void **args); +void ffi_java_ptrarray_to_raw (ffi_cif *cif, void **args, ffi_raw *raw); +void ffi_java_raw_to_ptrarray (ffi_cif *cif, ffi_raw *raw, void **args); size_t ffi_java_raw_size (ffi_cif *cif); /* ---- Definitions for closures ----------------------------------------- */ #if FFI_CLOSURES -#ifdef _MSC_VER -__declspec(align(8)) -#endif typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; ffi_cif *cif; void (*fun)(ffi_cif*,void*,void**,void*); void *user_data; -#ifdef __GNUC__ -} ffi_closure __attribute__((aligned (8))); -#else } ffi_closure; -#endif - -void *ffi_closure_alloc (size_t size, void **code); -void ffi_closure_free (void *); ffi_status ffi_prep_closure (ffi_closure*, @@ -274,13 +227,6 @@ void (*fun)(ffi_cif*,void*,void**,void*), void *user_data); -ffi_status -ffi_prep_closure_loc (ffi_closure*, - ffi_cif *, - void (*fun)(ffi_cif*,void*,void**,void*), - void *user_data, - void*codeloc); - typedef struct { char tramp[FFI_TRAMPOLINE_SIZE]; @@ -302,27 +248,6 @@ } ffi_raw_closure; -typedef struct { - char tramp[FFI_TRAMPOLINE_SIZE]; - - ffi_cif *cif; - -#if !FFI_NATIVE_RAW_API - - /* if this is enabled, then a raw closure has the same layout - as a regular closure. We use this to install an intermediate - handler to do the transaltion, void** -> ffi_raw*. */ - - void (*translate_args)(ffi_cif*,void*,void**,void*); - void *this_closure; - -#endif - - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*); - void *user_data; - -} ffi_java_raw_closure; - ffi_status ffi_prep_raw_closure (ffi_raw_closure*, ffi_cif *cif, @@ -330,42 +255,29 @@ void *user_data); ffi_status -ffi_prep_raw_closure_loc (ffi_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_raw*,void*), - void *user_data, - void *codeloc); - -ffi_status -ffi_prep_java_raw_closure (ffi_java_raw_closure*, +ffi_prep_java_raw_closure (ffi_raw_closure*, ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), + void (*fun)(ffi_cif*,void*,ffi_raw*,void*), void *user_data); -ffi_status -ffi_prep_java_raw_closure_loc (ffi_java_raw_closure*, - ffi_cif *cif, - void (*fun)(ffi_cif*,void*,ffi_java_raw*,void*), - void *user_data, - void *codeloc); - #endif /* FFI_CLOSURES */ /* ---- Public interface definition -------------------------------------- */ -ffi_status ffi_prep_cif(ffi_cif *cif, +ffi_status ffi_prep_cif(/*@out@*/ /*@partial@*/ ffi_cif *cif, ffi_abi abi, - unsigned int nargs, - ffi_type *rtype, - ffi_type **atypes); - -void ffi_call(ffi_cif *cif, - void (*fn)(void), - void *rvalue, - void **avalue); + unsigned int nargs, + /*@dependent@*/ /*@out@*/ /*@partial@*/ ffi_type *rtype, + /*@dependent@*/ ffi_type **atypes); + +int +ffi_call(/*@dependent@*/ ffi_cif *cif, + void (*fn)(), + /*@out@*/ void *rvalue, + /*@dependent@*/ void **avalue); /* Useful for eliminating compiler warnings */ -#define FFI_FN(f) ((void (*)(void))f) +#define FFI_FN(f) ((void (*)())f) /* ---- Definitions shared with assembly code ---------------------------- */ @@ -376,7 +288,7 @@ #define FFI_TYPE_INT 1 #define FFI_TYPE_FLOAT 2 #define FFI_TYPE_DOUBLE 3 -#if HAVE_LONG_DOUBLE +#if 1 #define FFI_TYPE_LONGDOUBLE 4 #else #define FFI_TYPE_LONGDOUBLE FFI_TYPE_DOUBLE @@ -400,3 +312,4 @@ #endif #endif + Modified: python/trunk/Modules/_ctypes/libffi_msvc/fficonfig.h ============================================================================== --- python/trunk/Modules/_ctypes/libffi_msvc/fficonfig.h (original) +++ python/trunk/Modules/_ctypes/libffi_msvc/fficonfig.h Tue Mar 30 22:57:06 2010 @@ -1,186 +1,96 @@ /* fficonfig.h. Originally created by configure, now hand_maintained for MSVC. */ -/* fficonfig.h.in. Generated from configure.ac by autoheader. */ +/* fficonfig.h. Generated automatically by configure. */ +/* fficonfig.h.in. Generated automatically from configure.in by autoheader. */ -/* Define if building universal (internal helper macro) */ -/* #undef AC_APPLE_UNIVERSAL_BUILD */ +/* Define this for MSVC, but not for mingw32! */ +#ifdef _MSC_VER +#define __attribute__(x) /* */ +#endif +#define alloca _alloca -/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP - systems. This function is required for `alloca.c' support on those systems. - */ -/* #undef CRAY_STACKSEG_END */ +/*----------------------------------------------------------------*/ -/* Define to 1 if using `alloca.c'. */ +/* Define if using alloca.c. */ /* #undef C_ALLOCA */ -/* Define to the flags needed for the .section .eh_frame directive. */ -/* #undef EH_FRAME_FLAGS */ - -/* Define this if you want extra debugging. */ -/* #undef FFI_DEBUG */ - -/* Cannot use malloc on this target, so, we revert to alternative means */ -/* #undef FFI_MMAP_EXEC_WRIT */ - -/* Define this is you do not want support for the raw API. */ -#define FFI_NO_RAW_API 1 - -/* Define this is you do not want support for aggregate types. */ -/* #undef FFI_NO_STRUCTS */ +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +/* #undef CRAY_STACKSEG_END */ -/* Define to 1 if you have `alloca', as a function or macro. */ +/* Define if you have alloca, as a function or macro. */ #define HAVE_ALLOCA 1 -/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix). - */ -/* #undef HAVE_ALLOCA_H */ - -/* Define if your assembler supports .cfi_* directives. */ -/* #undef HAVE_AS_CFI_PSEUDO_OP */ +/* Define if you have <alloca.h> and it should be used (not on Ultrix). */ +/* #define HAVE_ALLOCA_H 1 */ -/* Define if your assembler supports .register. */ -/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ - -/* Define if your assembler and linker support unaligned PC relative relocs. - */ -/* #undef HAVE_AS_SPARC_UA_PCREL */ - -/* Define if your assembler supports PC relative relocs. */ -/* #undef HAVE_AS_X86_PCREL */ - -/* Define to 1 if you have the <dlfcn.h> header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define if __attribute__((visibility("hidden"))) is supported. */ -/* #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE */ - -/* Define to 1 if you have the <inttypes.h> header file. */ -/* #undef HAVE_INTTYPES_H */ +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +/* #undef STACK_DIRECTION */ -/* Define if you have the long double type and it is bigger than a double */ -/* #undef HAVE_LONG_DOUBLE */ +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 -/* Define to 1 if you have the `memcpy' function. */ +/* Define if you have the memcpy function. */ #define HAVE_MEMCPY 1 -/* Define to 1 if you have the <memory.h> header file. */ -/* #undef HAVE_MEMORY_H */ - -/* Define to 1 if you have the `mmap' function. */ -/* #undef HAVE_MMAP */ - -/* Define if mmap with MAP_ANON(YMOUS) works. */ -/* #undef HAVE_MMAP_ANON */ - -/* Define if mmap of /dev/zero works. */ -/* #undef HAVE_MMAP_DEV_ZERO */ - /* Define if read-only mmap of a plain file works. */ -/* #undef HAVE_MMAP_FILE */ - -/* Define if .eh_frame sections should be read-only. */ -/* #undef HAVE_RO_EH_FRAME */ - -/* Define to 1 if you have the <stdint.h> header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the <stdlib.h> header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the <strings.h> header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the <string.h> header file. */ -#undef HAVE_STRING_H +//#define HAVE_MMAP_FILE 1 -/* Define to 1 if you have the <sys/mman.h> header file. */ -/* #undef HAVE_SYS_MMAN_H */ - -/* Define to 1 if you have the <sys/stat.h> header file. */ -/* #undef HAVE_SYS_STAT_H */ +/* Define if mmap of /dev/zero works. */ +//#define HAVE_MMAP_DEV_ZERO 1 -/* Define to 1 if you have the <sys/types.h> header file. */ -/* #undef HAVE_SYS_TYPES_H */ +/* Define if mmap with MAP_ANON(YMOUS) works. */ +//#define HAVE_MMAP_ANON 1 -/* Define to 1 if you have the <unistd.h> header file. */ -/* #undef HAVE_UNISTD_H */ +/* The number of bytes in type double */ +#define SIZEOF_DOUBLE 8 -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -/* #undef LT_OBJDIR */ +/* The number of bytes in type long double */ +#define SIZEOF_LONG_DOUBLE 12 -/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -/* #undef NO_MINUS_C_MINUS_O */ +/* Define if you have the long double type and it is bigger than a double */ +#define HAVE_LONG_DOUBLE 1 -/* Name of package */ -/* #undef PACKAGE */ +/* whether byteorder is bigendian */ +/* #undef WORDS_BIGENDIAN */ -/* Define to the address where bug reports for this package should be sent. */ -/* #undef PACKAGE_BUGREPORT */ +/* Define if the host machine stores words of multi-word integers in + big-endian order. */ +/* #undef HOST_WORDS_BIG_ENDIAN */ -/* Define to the full name of this package. */ -/* #undef PACKAGE_NAME */ +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#define BYTEORDER 1234 -/* Define to the full name and version of this package. */ -/* #undef PACKAGE_STRING */ +/* Define if your assembler and linker support unaligned PC relative relocs. */ +/* #undef HAVE_AS_SPARC_UA_PCREL */ -/* Define to the one symbol short name of this package. */ -/* #undef PACKAGE_TARNAME */ +/* Define if your assembler supports .register. */ +/* #undef HAVE_AS_REGISTER_PSEUDO_OP */ -/* Define to the home page for this package. */ -/* #undef PACKAGE_URL */ +/* Define if .eh_frame sections should be read-only. */ +/* #undef HAVE_RO_EH_FRAME */ -/* Define to the version of this package. */ -/* #undef PACKAGE_VERSION */ +/* Define to the flags needed for the .section .eh_frame directive. */ +/* #define EH_FRAME_FLAGS "aw" */ -/* The size of `double', as computed by sizeof. */ -#define SIZEOF_DOUBLE 8 +/* Define to the flags needed for the .section .eh_frame directive. */ +/* #define EH_FRAME_FLAGS "aw" */ -/* The size of `long double', as computed by sizeof. */ -#undef SIZEOF_LONG_DOUBLE +/* Define this if you want extra debugging. */ +/* #undef FFI_DEBUG */ -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at runtime. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown */ -/* #undef STACK_DIRECTION */ +/* Define this is you do not want support for aggregate types. */ +/* #undef FFI_NO_STRUCTS */ -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 +/* Define this is you do not want support for the raw API. */ +/* #undef FFI_NO_RAW_API */ -/* Define this if you are using Purify and want to suppress spurious messages. - */ +/* Define this if you are using Purify and want to suppress spurious messages. */ /* #undef USING_PURIFY */ -/* Version number of package */ -/* #undef VERSION */ - -/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most - significant byte first (like Motorola and SPARC, unlike Intel). */ -#if defined AC_APPLE_UNIVERSAL_BUILD -# if defined __BIG_ENDIAN__ -# define WORDS_BIGENDIAN 1 -# endif -#else -# ifndef WORDS_BIGENDIAN -# undef WORDS_BIGENDIAN -# endif -#endif - - -#ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) .hidden name -#else -#define FFI_HIDDEN __attribute__ ((visibility ("hidden"))) -#endif -#else -#ifdef LIBFFI_ASM -#define FFI_HIDDEN(name) -#else -#define FFI_HIDDEN -#endif -#endif - Modified: python/trunk/PCbuild/_ctypes.vcproj ============================================================================== --- python/trunk/PCbuild/_ctypes.vcproj (original) +++ python/trunk/PCbuild/_ctypes.vcproj Tue Mar 30 22:57:06 2010 @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" - Version="9,00" + Version="9.00" Name="_ctypes" ProjectGUID="{0E9791DB-593A-465F-98BC-681011311618}" RootNamespace="_ctypes" @@ -42,8 +42,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN32" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -104,8 +103,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN64" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -166,8 +164,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN32" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -231,8 +228,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN64" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -295,8 +291,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN32" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -360,8 +355,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN64" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -425,8 +419,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN32" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -490,8 +483,7 @@ /> <Tool Name="VCCLCompilerTool" - AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc;..\Modules\_ctypes\libffi\include;..\Modules\_ctypes\libffi\src\x86" - PreprocessorDefinitions="X86_WIN64" + AdditionalIncludeDirectories="..\Modules\_ctypes\libffi_msvc" /> <Tool Name="VCManagedResourceCompilerTool" @@ -551,7 +543,7 @@ > </File> <File - RelativePath="..\Modules\_ctypes\libffi\include\ffi_common.h" + RelativePath="..\Modules\_ctypes\libffi_msvc\ffi_common.h" > </File> <File @@ -559,7 +551,7 @@ > </File> <File - RelativePath="..\Modules\_ctypes\libffi\src\x86\ffitarget.h" + RelativePath="..\Modules\_ctypes\libffi_msvc\ffitarget.h" > </File> </Filter> @@ -583,23 +575,15 @@ > </File> <File - RelativePath="..\Modules\_ctypes\libffi\src\closures.c" + RelativePath="..\Modules\_ctypes\libffi_msvc\ffi.c" > </File> <File - RelativePath="..\Modules\_ctypes\libffi\src\x86\ffi.c" + RelativePath="..\Modules\_ctypes\malloc_closure.c" > - <FileConfiguration - Name="Debug|x64" - > - <Tool - Name="VCCLCompilerTool" - PreprocessorDefinitions="X86_WIN64" - /> - </FileConfiguration> </File> <File - RelativePath="..\Modules\_ctypes\libffi\src\prep_cif.c" + RelativePath="..\Modules\_ctypes\libffi_msvc\prep_cif.c" > </File> <File @@ -607,32 +591,14 @@ > </File> <File - RelativePath="..\Modules\_ctypes\libffi\src\x86\win32.S" + RelativePath="..\Modules\_ctypes\libffi_msvc\win32.c" > <FileConfiguration - Name="Debug|Win32" - > - <Tool - Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml /nologo /Zi /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" - /> - </FileConfiguration> - <FileConfiguration Name="Debug|x64" ExcludedFromBuild="true" > <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="Release|Win32" - > - <Tool - Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml /nologo /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration @@ -640,16 +606,7 @@ ExcludedFromBuild="true" > <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="PGInstrument|Win32" - > - <Tool - Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml /nologo /Zi /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration @@ -657,16 +614,7 @@ ExcludedFromBuild="true" > <Tool - Name="VCCustomBuildTool" - /> - </FileConfiguration> - <FileConfiguration - Name="PGUpdate|Win32" - > - <Tool - Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml /nologo /Zi /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + Name="VCCLCompilerTool" /> </FileConfiguration> <FileConfiguration @@ -674,12 +622,12 @@ ExcludedFromBuild="true" > <Tool - Name="VCCustomBuildTool" + Name="VCCLCompilerTool" /> </FileConfiguration> </File> <File - RelativePath="..\Modules\_ctypes\libffi\src\x86\win64.S" + RelativePath="..\Modules\_ctypes\libffi_msvc\win64.asm" > <FileConfiguration Name="Debug|Win32" @@ -694,8 +642,8 @@ > <Tool Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml64 /Zi /nologo /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + CommandLine="ml64 /nologo /c /Zi /Fo "$(IntDir)\win64.obj" "$(InputPath)" " + Outputs="$(IntDir)\win64.obj" /> </FileConfiguration> <FileConfiguration @@ -711,8 +659,8 @@ > <Tool Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml64 /nologo /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + CommandLine="ml64 /nologo /c /Fo "$(IntDir)\win64.obj" "$(InputPath)" " + Outputs="$(IntDir)\win64.obj" /> </FileConfiguration> <FileConfiguration @@ -728,8 +676,8 @@ > <Tool Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml64 /nologo /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + CommandLine="ml64 /nologo /c /Fo "$(IntDir)\win64.obj" "$(InputPath)" " + Outputs="$(IntDir)\win64.obj" /> </FileConfiguration> <FileConfiguration @@ -745,8 +693,8 @@ > <Tool Name="VCCustomBuildTool" - CommandLine="cl /nologo /EP /I ..\Modules\_ctypes\libffi_msvc /I ..\Modules\_ctypes\libffi\src\x86 $(InputPath) > $(IntDir)$(InputName).asm ml64 /nologo /c /Fo $(IntDir)$(InputName).obj $(IntDir)$(InputName).asm " - Outputs="$(IntDir)$(InputName).obj" + CommandLine="ml64 /nologo /c /Fo "$(IntDir)\win64.obj" "$(InputPath)" " + Outputs="$(IntDir)\win64.obj" /> </FileConfiguration> </File>
participants (1)
-
thomas.heller