To: vim_dev@googlegroups.com Subject: Patch 7.3.1040 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.1040 Problem: Python: Problems with debugging dynamic build. Solution: Python patch 1. (ZyX) Files: src/if_python.c, src/if_python3.c *** ../vim-7.3.1039/src/if_python.c 2013-05-21 22:23:51.000000000 +0200 --- src/if_python.c 2013-05-29 21:32:46.000000000 +0200 *************** *** 21,26 **** --- 21,35 ---- #include + /* uncomment this if used with the debug version of python. + * Checked on 2.7.4. */ + /* #define Py_DEBUG */ + /* Note: most of time you can add -DPy_DEBUG to CFLAGS in place of uncommenting + */ + /* uncomment this if used with the debug version of python, but without its + * allocator */ + /* #define Py_DEBUG_NO_PYMALLOC */ + /* Python.h defines _POSIX_THREADS itself (if needed) */ #ifdef _POSIX_THREADS # undef _POSIX_THREADS *************** *** 240,247 **** # define PyType_IsSubtype dll_PyType_IsSubtype # endif # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02030000 ! # define PyObject_Malloc dll_PyObject_Malloc ! # define PyObject_Free dll_PyObject_Free # endif # ifdef PY_USE_CAPSULE # define PyCapsule_New dll_PyCapsule_New --- 249,266 ---- # define PyType_IsSubtype dll_PyType_IsSubtype # endif # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02030000 ! # ifdef Py_DEBUG ! # define _Py_NegativeRefcount dll__Py_NegativeRefcount ! # define _Py_RefTotal (*dll__Py_RefTotal) ! # define _Py_Dealloc dll__Py_Dealloc ! # endif ! # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) ! # define _PyObject_DebugMalloc dll__PyObject_DebugMalloc ! # define _PyObject_DebugFree dll__PyObject_DebugFree ! # else ! # define PyObject_Malloc dll_PyObject_Malloc ! # define PyObject_Free dll_PyObject_Free ! # endif # endif # ifdef PY_USE_CAPSULE # define PyCapsule_New dll_PyCapsule_New *************** *** 350,357 **** --- 369,386 ---- static int (*dll_PyType_IsSubtype)(PyTypeObject *, PyTypeObject *); # endif # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02030000 + # ifdef Py_DEBUG + static void (*dll__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); + static Py_ssize_t* dll__Py_RefTotal; + static void (*dll__Py_Dealloc)(PyObject *obj); + # endif + # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) + static void (*dll__PyObject_DebugFree)(void*); + static void* (*dll__PyObject_DebugMalloc)(size_t); + # else static void* (*dll_PyObject_Malloc)(size_t); static void (*dll_PyObject_Free)(void*); + # endif # endif # ifdef PY_USE_CAPSULE static PyObject* (*dll_PyCapsule_New)(void *, char *, PyCapsule_Destructor); *************** *** 469,480 **** {"PyType_Type", (PYTHON_PROC*)&dll_PyType_Type}, {"PyType_Ready", (PYTHON_PROC*)&dll_PyType_Ready}, {"Py_FindMethod", (PYTHON_PROC*)&dll_Py_FindMethod}, - # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ - && SIZEOF_SIZE_T != SIZEOF_INT - {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, - # else - {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, - # endif {"Py_SetPythonHome", (PYTHON_PROC*)&dll_Py_SetPythonHome}, {"Py_Initialize", (PYTHON_PROC*)&dll_Py_Initialize}, {"Py_Finalize", (PYTHON_PROC*)&dll_Py_Finalize}, --- 498,503 ---- *************** *** 496,503 **** --- 519,550 ---- {"PyType_IsSubtype", (PYTHON_PROC*)&dll_PyType_IsSubtype}, # endif # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02030000 + # ifdef Py_DEBUG + {"_Py_NegativeRefcount", (PYTHON_PROC*)&dll__Py_NegativeRefcount}, + {"_Py_RefTotal", (PYTHON_PROC*)&dll__Py_RefTotal}, + {"_Py_Dealloc", (PYTHON_PROC*)&dll__Py_Dealloc}, + # endif + # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) + {"_PyObject_DebugFree", (PYTHON_PROC*)&dll__PyObject_DebugFree}, + {"_PyObject_DebugMalloc", (PYTHON_PROC*)&dll__PyObject_DebugMalloc}, + # else {"PyObject_Malloc", (PYTHON_PROC*)&dll_PyObject_Malloc}, {"PyObject_Free", (PYTHON_PROC*)&dll_PyObject_Free}, + # endif + # endif + # if defined(PY_VERSION_HEX) && PY_VERSION_HEX >= 0x02050000 \ + && SIZEOF_SIZE_T != SIZEOF_INT + # ifdef Py_DEBUG + {"Py_InitModule4TraceRefs_64", (PYTHON_PROC*)&dll_Py_InitModule4}, + # else + {"Py_InitModule4_64", (PYTHON_PROC*)&dll_Py_InitModule4}, + # endif + # else + # ifdef Py_DEBUG + {"Py_InitModule4TraceRefs", (PYTHON_PROC*)&dll_Py_InitModule4}, + # else + {"Py_InitModule4", (PYTHON_PROC*)&dll_Py_InitModule4}, + # endif # endif # ifdef PY_USE_CAPSULE {"PyCapsule_New", (PYTHON_PROC*)&dll_PyCapsule_New}, *** ../vim-7.3.1039/src/if_python3.c 2013-05-21 22:23:51.000000000 +0200 --- src/if_python3.c 2013-05-29 21:32:46.000000000 +0200 *************** *** 24,29 **** --- 24,34 ---- /* uncomment this if used with the debug version of python */ /* #define Py_DEBUG */ + /* Note: most of time you can add -DPy_DEBUG to CFLAGS in place of uncommenting + */ + /* uncomment this if used with the debug version of python, but without its + * allocator */ + /* #define Py_DEBUG_NO_PYMALLOC */ #include "vim.h" *************** *** 207,212 **** --- 212,222 ---- # define _Py_NegativeRefcount py3__Py_NegativeRefcount # define _Py_RefTotal (*py3__Py_RefTotal) # define _Py_Dealloc py3__Py_Dealloc + # define PyModule_Create2TraceRefs py3_PyModule_Create2TraceRefs + # else + # define PyModule_Create2 py3_PyModule_Create2 + # endif + # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) # define _PyObject_DebugMalloc py3__PyObject_DebugMalloc # define _PyObject_DebugFree py3__PyObject_DebugFree # else *************** *** 218,224 **** # define PyObject_GC_UnTrack py3_PyObject_GC_UnTrack # define PyType_GenericAlloc py3_PyType_GenericAlloc # define PyType_GenericNew py3_PyType_GenericNew - # define PyModule_Create2 py3_PyModule_Create2 # undef PyUnicode_FromString # define PyUnicode_FromString py3_PyUnicode_FromString # undef PyUnicode_Decode --- 228,233 ---- *************** *** 227,233 **** # define PyCapsule_New py3_PyCapsule_New # define PyCapsule_GetPointer py3_PyCapsule_GetPointer ! # ifdef Py_DEBUG # undef PyObject_NEW # define PyObject_NEW(type, typeobj) \ ( (type *) PyObject_Init( \ --- 236,242 ---- # define PyCapsule_New py3_PyCapsule_New # define PyCapsule_GetPointer py3_PyCapsule_GetPointer ! # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) # undef PyObject_NEW # define PyObject_NEW(type, typeobj) \ ( (type *) PyObject_Init( \ *************** *** 317,323 **** static PyObject* (*py3_PyFloat_FromDouble)(double num); static double (*py3_PyFloat_AsDouble)(PyObject *); static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name); - static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); static PyObject* (*py3_PyType_GenericAlloc)(PyTypeObject *type, Py_ssize_t nitems); static PyObject* (*py3_PyType_GenericNew)(PyTypeObject *type, PyObject *args, PyObject *kwds); static PyTypeObject* py3_PyType_Type; --- 326,331 ---- *************** *** 328,341 **** static PyObject* (*py3_PyCapsule_New)(void *, char *, PyCapsule_Destructor); static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *); # ifdef Py_DEBUG ! static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); ! static Py_ssize_t* py3__Py_RefTotal; ! static void (*py3__Py_Dealloc)(PyObject *obj); ! static void (*py3__PyObject_DebugFree)(void*); ! static void* (*py3__PyObject_DebugMalloc)(size_t); # else ! static void (*py3_PyObject_Free)(void*); ! static void* (*py3_PyObject_Malloc)(size_t); # endif static PyObject*(*py3__PyObject_GC_New)(PyTypeObject *); static void(*py3_PyObject_GC_Del)(void *); --- 336,354 ---- static PyObject* (*py3_PyCapsule_New)(void *, char *, PyCapsule_Destructor); static void* (*py3_PyCapsule_GetPointer)(PyObject *, char *); # ifdef Py_DEBUG ! static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); ! static Py_ssize_t* py3__Py_RefTotal; ! static void (*py3__Py_Dealloc)(PyObject *obj); ! static PyObject* (*py3_PyModule_Create2TraceRefs)(struct PyModuleDef* module, int module_api_version); ! # else ! static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); ! # endif ! # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) ! static void (*py3__PyObject_DebugFree)(void*); ! static void* (*py3__PyObject_DebugMalloc)(size_t); # else ! static void (*py3_PyObject_Free)(void*); ! static void* (*py3_PyObject_Malloc)(size_t); # endif static PyObject*(*py3__PyObject_GC_New)(PyTypeObject *); static void(*py3_PyObject_GC_Del)(void *); *************** *** 451,457 **** {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr}, - {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, {"PyType_GenericAlloc", (PYTHON_PROC*)&py3_PyType_GenericAlloc}, {"PyType_GenericNew", (PYTHON_PROC*)&py3_PyType_GenericNew}, {"PyType_Type", (PYTHON_PROC*)&py3_PyType_Type}, --- 464,469 ---- *************** *** 463,468 **** --- 475,485 ---- {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, {"_Py_RefTotal", (PYTHON_PROC*)&py3__Py_RefTotal}, {"_Py_Dealloc", (PYTHON_PROC*)&py3__Py_Dealloc}, + {"PyModule_Create2TraceRefs", (PYTHON_PROC*)&py3_PyModule_Create2TraceRefs}, + # else + {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, + # endif + # if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) {"_PyObject_DebugFree", (PYTHON_PROC*)&py3__PyObject_DebugFree}, {"_PyObject_DebugMalloc", (PYTHON_PROC*)&py3__PyObject_DebugMalloc}, # else *************** *** 656,662 **** static void call_PyObject_Free(void *p) { ! #ifdef Py_DEBUG _PyObject_DebugFree(p); #else PyObject_Free(p); --- 673,679 ---- static void call_PyObject_Free(void *p) { ! #if defined(Py_DEBUG) && !defined(Py_DEBUG_NO_PYMALLOC) _PyObject_DebugFree(p); #else PyObject_Free(p); *** ../vim-7.3.1039/src/version.c 2013-05-29 21:14:37.000000000 +0200 --- src/version.c 2013-05-29 21:32:32.000000000 +0200 *************** *** 730,731 **** --- 730,733 ---- { /* Add new patch number below this line */ + /**/ + 1040, /**/ -- hundred-and-one symptoms of being an internet addict: 17. You turn on your intercom when leaving the room so you can hear if new e-mail arrives. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///