From 4ee893fe39f11aca1cfcf7472c95c10e61d4aedd Mon Sep 17 00:00:00 2001 From: Andrew MacIntyre Date: Sun, 13 Jul 2003 13:41:59 +0000 Subject: [PATCH] More pre-2.3 build tweaks for the OS/2 EMX port: - separate the building of the core from the wrapper executables and the external modules (.PYDs), based on the Py_BUILD_CORE define; - clean up the generated import library definiton (.DEF file) to remove references to a number of non-static symbols that aren't part of the Python API and which shouldn't be exported by the core DLL; - compile the release build with -fomit-frame-pointer, for a small performance gain; - make "make clean" remove byte compiled Python library files. --- PC/os2emx/Makefile | 39 ++- PC/os2emx/pyconfig.h | 12 + PC/os2emx/python23.def | 725 +++++++++++++++++++++++++---------------- 3 files changed, 493 insertions(+), 283 deletions(-) diff --git a/PC/os2emx/Makefile b/PC/os2emx/Makefile index 17266136fc8..296200b6e08 100644 --- a/PC/os2emx/Makefile +++ b/PC/os2emx/Makefile @@ -83,6 +83,7 @@ ARFLAGS= crs IMPLIB= emximp EXPLIB= emxexp EXEOPT= emxbind +PY_DEF= -DPy_BUILD_CORE # adjust C compiler settings based on build options @@ -90,9 +91,10 @@ ifeq ($(MODE),debug) CFLAGS+= -g -O LDFLAGS+= -g else - CFLAGS+= -s -O2 + CFLAGS+= -s -O2 -fomit-frame-pointer LDFLAGS+= -s endif +CFLAGS+= $(PY_DEF) ifeq ($(ASSERTIONS),no) CFLAGS+= -DNDEBUG endif @@ -474,12 +476,16 @@ EXTERNDLLS+= $(addsuffix $(MODULE.EXT),$(patsubst %module,%,$(HARDEXTMODULES))) # Targets all: $(OUT) $(PYTHON.LIB) $(PYTHON.DEF) $(PYTHON.IMPLIB) $(PYTHON.DLL) \ - $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE) $(EXTERNDLLS) + python_noncore + +python_noncore: + make PY_DEF= $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE) $(EXTERNDLLS) clean: rm -f $(OUT)* rm -f $(PYTHON.LIB) $(PYTHON.IMPLIB) $(PYTHON.EXEIMP) $(PYTHON.DLL) \ $(PYTHON.EXE) $(PYTHONPM.EXE) $(PGEN.EXE) *$(MODULE.EXT) + find ../../Lib -name "*.py[co]" -exec rm {} ";" lx: @echo Packing everything with lxLite... @@ -498,6 +504,9 @@ $(PYTHON.LIB): $(OBJ.LIB) rm.exe -f $@ $(AR) $(ARFLAGS) $@ $^ +# the Python core DLL .def file needs to have a number of non-static +# symbols that aren't part of the Python C API removed (commented out) +# from the DLL export list. $(PYTHON.DEF): $(PYTHON.LIB) @echo Creating .DEF file: $@ @echo LIBRARY $(PYTHON_LIB) INITINSTANCE TERMINSTANCE >$@ @@ -505,7 +514,29 @@ $(PYTHON.DEF): $(PYTHON.LIB) @echo PROTMODE >>$@ @echo DATA MULTIPLE NONSHARED >>$@ @echo EXPORTS >>$@ - $(EXPLIB) -u $(PYTHON.LIB) >>$@ + $(EXPLIB) -u $(PYTHON.LIB) |\ + sed -e "/ .init.*/s/^ /; /" \ + -e "/ .pcre_.*/s/^ /; /" \ + -e "/ .array_methods/s/^ /; /" \ + -e "/ .fast_save_leave/s/^ /; /" \ + -e "/ .dlopen/s/^ /; /" \ + -e "/ .dlsym/s/^ /; /" \ + -e "/ .dlclose/s/^ /; /" \ + -e "/ .dlerror/s/^ /; /" \ + -e "/ .cycle_type/s/^ /; /" \ + -e "/ .dropwhile_type/s/^ /; /" \ + -e "/ .takewhile_type/s/^ /; /" \ + -e "/ .islice_type/s/^ /; /" \ + -e "/ .starmap_type/s/^ /; /" \ + -e "/ .imap_type/s/^ /; /" \ + -e "/ .chain_type/s/^ /; /" \ + -e "/ .ifilter_type/s/^ /; /" \ + -e "/ .ifilterfalse_type/s/^ /; /" \ + -e "/ .count_type/s/^ /; /" \ + -e "/ .izip_type/s/^ /; /" \ + -e "/ .repeat_type/s/^ /; /" \ + -e "/ ._Py_re_.*/s/^ /; /" \ + -e "/ ._Py_MD5.*/s/^ /; /" >>$@ $(PYTHON.IMPLIB): $(PYTHON.DEF) $(IMPLIB) -o $@ $^ @@ -627,7 +658,7 @@ readline$(MODULE.EXT): $(OUT)readline$O $(OUT)readline_m.def $(PYTHON.IMPLIB) #_tkinter$(MODULE.EXT): $(OUT)_tkinter$O $(OUT)tclNotify$O $(OUT)tkappinit$O _tkinter$(MODULE.EXT): $(OUT)_tkinter$O $(OUT)tclNotify$O \ - $(OUT)_tkinter_m.def $(PYTHON.IMPLIB) + $(OUT)_tkinter_m.def $(PYTHON.IMPLIB) $(LD) $(LDFLAGS.DLL) -o $@ $(^^) $(L^) $(LIBS) $(TK_LIBS) zlib$(MODULE.EXT): $(OUT)zlibmodule$O $(OUT)zlib_m.def $(PYTHON.IMPLIB) diff --git a/PC/os2emx/pyconfig.h b/PC/os2emx/pyconfig.h index 209d161d374..206223f4b86 100644 --- a/PC/os2emx/pyconfig.h +++ b/PC/os2emx/pyconfig.h @@ -26,6 +26,18 @@ /*#define Py_DEBUG 1*/ #endif +/* if building an extension or wrapper executable, + * mark Python API symbols "extern" so that symbols + * imported from the Python core DLL aren't duplicated. + */ +#ifdef Py_BUILD_CORE +# define PyAPI_FUNC(RTYPE) RTYPE +#else +# define PyAPI_FUNC(RTYPE) extern RTYPE +#endif +#define PyAPI_DATA(RTYPE) extern RTYPE +#define PyMODINIT_FUNC void + /* Use OS/2 flavour of threads */ #define WITH_THREAD 1 #define OS2_THREADS 1 diff --git a/PC/os2emx/python23.def b/PC/os2emx/python23.def index f6c507a3313..7c33327e1f1 100644 --- a/PC/os2emx/python23.def +++ b/PC/os2emx/python23.def @@ -8,16 +8,16 @@ EXPORTS "_PyImport_Inittab" ; From python23_s.lib(dlfcn) - "dlopen" - "dlsym" - "dlclose" - "dlerror" +; "dlopen" +; "dlsym" +; "dlclose" +; "dlerror" ; From python23_s.lib(getpathp) - "Py_GetPath" + "Py_GetProgramFullPath" "Py_GetPrefix" "Py_GetExecPrefix" - "Py_GetProgramFullPath" + "Py_GetPath" ; From python23_s.lib(getbuildinfo) "Py_GetBuildInfo" @@ -38,22 +38,22 @@ EXPORTS "PyNode_ListTree" ; From python23_s.lib(node) - "PyNode_New" "PyNode_AddChild" + "PyNode_New" "PyNode_Free" ; From python23_s.lib(parser) + "PyParser_AddToken" "PyParser_New" "PyParser_Delete" - "PyParser_AddToken" ; From python23_s.lib(parsetok) "Py_TabcheckFlag" "PyParser_ParseString" "PyParser_ParseStringFlags" - "PyParser_ParseStringFlagsFilename" "PyParser_ParseFile" "PyParser_ParseFileFlags" + "PyParser_ParseStringFlagsFilename" ; From python23_s.lib(bitset) "_Py_newbitset" @@ -64,14 +64,15 @@ EXPORTS ; From python23_s.lib(metagrammar) "_Py_meta_grammar" + "Py_meta_grammar" ; From python23_s.lib(tokenizer) - "PyTokenizer_FromString" - "PyTokenizer_FromFile" - "PyTokenizer_Free" "PyToken_OneChar" "PyToken_TwoChars" "PyToken_ThreeChars" + "PyTokenizer_FromString" + "PyTokenizer_FromFile" + "PyTokenizer_Free" "PyTokenizer_Get" "_PyParser_TokenNames" @@ -82,97 +83,97 @@ EXPORTS "PyOS_InputHook" ; From python23_s.lib(abstract) - "PyObject_Cmp" - "PyObject_Type" - "PyObject_Size" - "PyMapping_Size" - "PyObject_Length" "PyObject_GetItem" "PySequence_GetItem" "PyObject_SetItem" "PySequence_SetItem" "PyObject_DelItem" "PySequence_DelItem" - "PyObject_DelItemString" - "PyObject_AsCharBuffer" - "PyObject_CheckReadBuffer" - "PyObject_AsReadBuffer" - "PyObject_AsWriteBuffer" - "PyNumber_Check" - "PyNumber_Or" - "PyNumber_Xor" - "PyNumber_And" - "PyNumber_Lshift" - "PyNumber_Rshift" - "PyNumber_Subtract" - "PyNumber_Divide" - "PyNumber_Divmod" - "PyNumber_Add" "PyNumber_Multiply" - "PyNumber_FloorDivide" - "PyNumber_TrueDivide" - "PyNumber_Remainder" - "PyNumber_Power" - "PyNumber_InPlaceOr" - "PyNumber_InPlaceXor" - "PyNumber_InPlaceAnd" - "PyNumber_InPlaceLshift" - "PyNumber_InPlaceRshift" - "PyNumber_InPlaceSubtract" - "PyNumber_InPlaceDivide" - "PyNumber_InPlaceFloorDivide" - "PyNumber_InPlaceTrueDivide" "PyNumber_InPlaceAdd" "PyNumber_InPlaceMultiply" - "PyNumber_InPlaceRemainder" - "PyNumber_InPlacePower" - "PyNumber_Negative" - "PyNumber_Positive" - "PyNumber_Invert" - "PyNumber_Absolute" "PyNumber_Int" "PyNumber_Long" "PyNumber_Float" - "PySequence_Check" - "PySequence_Size" - "PySequence_Length" - "PySequence_Concat" - "PySequence_Repeat" - "PySequence_InPlaceConcat" - "PySequence_InPlaceRepeat" "PySequence_GetSlice" "PySequence_SetSlice" - "PySequence_DelSlice" "PySequence_Tuple" "PyObject_GetIter" "PyIter_Next" "PySequence_List" - "PySequence_Fast" "_PySequence_IterSearch" - "PySequence_Count" - "PySequence_Contains" - "PySequence_In" - "PySequence_Index" - "PyMapping_Check" - "PyMapping_Length" - "PyMapping_GetItemString" - "PyMapping_SetItemString" - "PyMapping_HasKeyString" - "PyMapping_HasKey" - "PyObject_CallObject" - "PyObject_Call" "PyObject_CallFunction" "PyObject_CallMethod" "PyObject_CallMethodObjArgs" "PyObject_CallFunctionObjArgs" "PyObject_IsInstance" "PyObject_IsSubclass" + "PyObject_Cmp" + "PyObject_Call" + "PyObject_CallObject" + "PyObject_Type" + "PyObject_Size" + "PyMapping_Size" + "PyObject_Length" + "PyObject_DelItemString" + "PyObject_AsCharBuffer" + "PyObject_CheckReadBuffer" + "PyObject_AsReadBuffer" + "PyObject_AsWriteBuffer" + "PyNumber_Check" + "PyNumber_Add" + "PyNumber_Subtract" + "PyNumber_Divide" + "PyNumber_FloorDivide" + "PyNumber_TrueDivide" + "PyNumber_Remainder" + "PyNumber_Divmod" + "PyNumber_Power" + "PyNumber_Negative" + "PyNumber_Positive" + "PyNumber_Absolute" + "PyNumber_Invert" + "PyNumber_Lshift" + "PyNumber_Rshift" + "PyNumber_And" + "PyNumber_Xor" + "PyNumber_Or" + "PyNumber_InPlaceSubtract" + "PyNumber_InPlaceDivide" + "PyNumber_InPlaceFloorDivide" + "PyNumber_InPlaceTrueDivide" + "PyNumber_InPlaceRemainder" + "PyNumber_InPlacePower" + "PyNumber_InPlaceLshift" + "PyNumber_InPlaceRshift" + "PyNumber_InPlaceAnd" + "PyNumber_InPlaceXor" + "PyNumber_InPlaceOr" + "PySequence_Check" + "PySequence_Size" + "PySequence_Length" + "PySequence_Concat" + "PySequence_Repeat" + "PySequence_DelSlice" + "PySequence_Fast" + "PySequence_Count" + "PySequence_Contains" + "PySequence_In" + "PySequence_Index" + "PySequence_InPlaceConcat" + "PySequence_InPlaceRepeat" + "PyMapping_Check" + "PyMapping_Length" + "PyMapping_HasKeyString" + "PyMapping_HasKey" + "PyMapping_GetItemString" + "PyMapping_SetItemString" ; From python23_s.lib(boolobject) "PyBool_FromLong" + "PyBool_Type" "_Py_ZeroStruct" "_Py_TrueStruct" - "PyBool_Type" ; From python23_s.lib(bufferobject) "PyBuffer_FromObject" @@ -190,17 +191,18 @@ EXPORTS ; From python23_s.lib(classobject) "PyClass_New" - "PyMethod_Function" - "PyMethod_Self" - "PyMethod_Class" "PyClass_IsSubclass" "PyInstance_New" "PyInstance_NewRaw" "PyMethod_New" + "PyMethod_Function" + "PyMethod_Self" + "PyMethod_Class" + "_PyInstance_Lookup" "PyMethod_Fini" "PyClass_Type" - "PyMethod_Type" "PyInstance_Type" + "PyMethod_Type" ; From python23_s.lib(cobject) "PyCObject_FromVoidPtr" @@ -211,12 +213,12 @@ EXPORTS "PyCObject_Type" ; From python23_s.lib(complexobject) + "_Py_c_pow" "_Py_c_sum" "_Py_c_diff" "_Py_c_neg" "_Py_c_prod" "_Py_c_quot" - "_Py_c_pow" "PyComplex_FromCComplex" "PyComplex_FromDoubles" "PyComplex_RealAsDouble" @@ -236,20 +238,20 @@ EXPORTS "PyProperty_Type" ; From python23_s.lib(dictobject) - "PyDict_New" - "PyDict_GetItem" "PyDict_SetItem" "PyDict_DelItem" "PyDict_Clear" - "PyDict_Next" - "PyDict_Update" "PyDict_MergeFromSeq2" "PyDict_Merge" "PyDict_Copy" - "PyDict_Size" "PyDict_Keys" "PyDict_Values" + "PyDict_New" + "PyDict_GetItem" + "PyDict_Next" "PyDict_Items" + "PyDict_Size" + "PyDict_Update" "PyDict_GetItemString" "PyDict_SetItemString" "PyDict_DelItemString" @@ -260,11 +262,6 @@ EXPORTS "PyEnum_Type" ; From python23_s.lib(fileobject) - "PyFile_AsFile" - "PyFile_Name" - "PyFile_FromFile" - "PyFile_FromString" - "PyFile_SetBufSize" "Py_UniversalNewlineFread" "PyFile_GetLine" "PyFile_SoftSpace" @@ -272,26 +269,36 @@ EXPORTS "PyFile_WriteString" "PyObject_AsFileDescriptor" "Py_UniversalNewlineFgets" + "PyFile_FromString" + "PyFile_SetBufSize" + "PyFile_SetEncoding" + "PyFile_FromFile" + "PyFile_AsFile" + "PyFile_Name" "PyFile_Type" ; From python23_s.lib(floatobject) - "PyFloat_FromDouble" "PyFloat_FromString" "PyFloat_AsDouble" - "PyFloat_AsStringEx" - "PyFloat_AsString" - "PyFloat_AsReprString" "PyFloat_Fini" + "_PyFloat_Pack4" + "_PyFloat_Pack8" + "PyFloat_FromDouble" + "PyFloat_AsReprString" + "PyFloat_AsString" + "_PyFloat_Unpack4" + "_PyFloat_Unpack8" + "PyFloat_AsStringEx" "PyFloat_Type" ; From python23_s.lib(frameobject) - "PyFrame_FastToLocals" - "_PyFrame_Init" "PyFrame_New" + "PyFrame_FastToLocals" + "PyFrame_LocalsToFast" + "_PyFrame_Init" + "PyFrame_Fini" "PyFrame_BlockSetup" "PyFrame_BlockPop" - "PyFrame_LocalsToFast" - "PyFrame_Fini" "PyFrame_Type" ; From python23_s.lib(funcobject) @@ -310,13 +317,15 @@ EXPORTS "PyStaticMethod_Type" ; From python23_s.lib(intobject) - "PyInt_GetMax" - "PyInt_FromLong" "PyInt_AsLong" + "PyInt_AsUnsignedLongMask" + "PyInt_AsUnsignedLongLongMask" "PyInt_FromString" - "PyInt_FromUnicode" - "_PyInt_Init" "PyInt_Fini" + "PyInt_FromUnicode" + "PyInt_FromLong" + "PyInt_GetMax" + "_PyInt_Init" "PyInt_Type" ; From python23_s.lib(iterobject) @@ -327,11 +336,11 @@ EXPORTS ; From python23_s.lib(listobject) "PyList_New" + "PyList_Insert" + "PyList_Append" "PyList_Size" "PyList_GetItem" "PyList_SetItem" - "PyList_Insert" - "PyList_Append" "PyList_GetSlice" "PyList_SetSlice" "PyList_Sort" @@ -341,90 +350,93 @@ EXPORTS "PyListIter_Type" ; From python23_s.lib(longobject) - "_PyLong_New" - "_PyLong_Copy" - "PyLong_FromLong" - "PyLong_FromUnsignedLong" "PyLong_FromDouble" "PyLong_AsLong" - "PyLong_AsUnsignedLong" - "_PyLong_Sign" - "_PyLong_NumBits" "_PyLong_FromByteArray" "_PyLong_AsByteArray" - "_PyLong_AsScaledDouble" "PyLong_AsDouble" + "PyLong_FromString" + "PyLong_FromLong" + "PyLong_FromUnsignedLong" + "PyLong_AsUnsignedLong" + "PyLong_AsUnsignedLongMask" + "_PyLong_AsScaledDouble" "PyLong_FromVoidPtr" "PyLong_AsVoidPtr" "PyLong_FromLongLong" "PyLong_FromUnsignedLongLong" "PyLong_AsLongLong" "PyLong_AsUnsignedLongLong" - "PyLong_FromString" + "PyLong_AsUnsignedLongLongMask" "PyLong_FromUnicode" + "_PyLong_Sign" + "_PyLong_NumBits" + "_PyLong_New" + "_PyLong_Copy" "PyLong_Type" ; From python23_s.lib(methodobject) - "PyCFunction_NewEx" + "PyCFunction_Call" + "Py_FindMethodInChain" "PyCFunction_GetFunction" "PyCFunction_GetSelf" "PyCFunction_GetFlags" - "PyCFunction_Call" - "Py_FindMethodInChain" "Py_FindMethod" + "PyCFunction_NewEx" "PyCFunction_Fini" "PyCFunction_New" "PyCFunction_Type" ; From python23_s.lib(moduleobject) "PyModule_New" + "_PyModule_Clear" "PyModule_GetDict" "PyModule_GetName" "PyModule_GetFilename" - "_PyModule_Clear" "PyModule_Type" ; From python23_s.lib(object) "Py_DivisionWarningFlag" - "PyObject_Init" - "PyObject_InitVar" - "_PyObject_New" - "_PyObject_NewVar" - "_PyObject_Del" "PyObject_Str" "PyObject_Repr" - "PyObject_Print" - "_PyObject_Dump" "PyObject_Unicode" "PyObject_GetAttr" "PyObject_IsTrue" "PyNumber_CoerceEx" "PyObject_Compare" "PyObject_RichCompare" - "PyObject_RichCompareBool" "_Py_HashDouble" "PyObject_Hash" - "_Py_HashPointer" - "PyObject_GetAttrString" - "PyObject_HasAttrString" - "PyObject_SetAttrString" "PyObject_SetAttr" - "PyObject_HasAttr" - "_PyObject_GetDictPtr" "PyObject_GenericGetAttr" "PyObject_GenericSetAttr" - "PyObject_Not" - "PyNumber_Coerce" "PyCallable_Check" "PyObject_Dir" - "_Py_ReadyTypes" "PyMem_Malloc" "PyMem_Realloc" "PyMem_Free" + "PyObject_Print" + "_PyObject_Dump" + "PyObject_RichCompareBool" + "PyObject_GetAttrString" + "PyObject_SetAttrString" + "PyObject_HasAttrString" + "PyObject_HasAttr" + "_PyObject_GetDictPtr" + "PyObject_SelfIter" + "PyObject_Not" + "PyNumber_Coerce" "Py_ReprEnter" "Py_ReprLeave" + "_Py_HashPointer" "_PyTrash_deposit_object" "_PyTrash_destroy_chain" + "PyObject_Init" + "PyObject_InitVar" + "_PyObject_New" + "_PyObject_NewVar" + "_PyObject_Del" + "_Py_ReadyTypes" "_Py_NotImplementedStruct" "_Py_NoneStruct" "_Py_cobject_hack" @@ -442,9 +454,9 @@ EXPORTS "PyRange_Type" ; From python23_s.lib(sliceobject) - "PySlice_New" "PySlice_GetIndices" "PySlice_GetIndicesEx" + "PySlice_New" "_Py_EllipsisObject" "PySlice_Type" @@ -456,60 +468,58 @@ EXPORTS "PyString_AsString" "_PyString_Resize" "PyString_FromFormat" - "PyString_Decode" "PyString_AsDecodedString" - "PyString_AsDecodedObject" - "PyString_Encode" "PyString_AsEncodedString" - "PyString_AsEncodedObject" "PyString_DecodeEscape" "PyString_Size" - "PyString_AsStringAndSize" "PyString_Repr" - "_PyString_Eq" - "_PyString_Join" + "PyString_AsStringAndSize" + "_PyString_FormatLong" "PyString_Format" + "_Py_ReleaseInternedStrings" "PyString_Concat" "PyString_ConcatAndDel" - "_PyString_FormatLong" + "_PyString_Eq" "PyString_InternImmortal" "PyString_InternFromString" + "_PyString_Join" + "PyString_Decode" + "PyString_Encode" + "PyString_AsEncodedObject" + "PyString_AsDecodedObject" "PyString_Fini" - "_Py_ReleaseInternedStrings" "PyString_Type" "PyBaseString_Type" ; From python23_s.lib(structseq) - "PyStructSequence_New" "PyStructSequence_InitType" + "PyStructSequence_New" "PyStructSequence_UnnamedField" ; From python23_s.lib(tupleobject) "PyTuple_New" + "_PyTuple_Resize" "PyTuple_Size" "PyTuple_GetItem" "PyTuple_SetItem" "PyTuple_GetSlice" - "_PyTuple_Resize" "PyTuple_Fini" "PyTuple_Type" "PyTupleIter_Type" ; From python23_s.lib(typeobject) "PyType_IsSubtype" - "PyType_GenericAlloc" - "PyType_GenericNew" "_PyType_Lookup" "PyType_Ready" + "PyType_GenericAlloc" "_PyObject_SlotCompare" + "PyType_GenericNew" "PyType_Type" "PyBaseObject_Type" "PySuper_Type" ; From python23_s.lib(unicodeobject) - "PyUnicodeUCS2_GetMax" "PyUnicodeUCS2_Resize" - "PyUnicodeUCS2_FromUnicode" "PyUnicodeUCS2_FromOrdinal" "PyUnicodeUCS2_FromObject" "PyUnicodeUCS2_FromEncodedObject" @@ -518,34 +528,21 @@ EXPORTS "PyUnicodeUCS2_DecodeUTF8" "PyUnicodeUCS2_DecodeLatin1" "PyUnicodeUCS2_DecodeASCII" - "PyUnicodeUCS2_Encode" "PyUnicodeUCS2_AsEncodedString" "PyUnicodeUCS2_AsUTF8String" "PyUnicodeUCS2_AsLatin1String" "PyUnicodeUCS2_AsASCIIString" - "_PyUnicodeUCS2_AsDefaultEncodedString" - "PyUnicodeUCS2_AsUnicode" - "PyUnicodeUCS2_GetSize" - "PyUnicodeUCS2_SetDefaultEncoding" "PyUnicode_DecodeUTF7" "PyUnicode_EncodeUTF7" "PyUnicodeUCS2_EncodeUTF8" "PyUnicodeUCS2_DecodeUTF16" - "PyUnicodeUCS2_EncodeUTF16" "PyUnicodeUCS2_AsUTF16String" "PyUnicodeUCS2_DecodeUnicodeEscape" - "PyUnicodeUCS2_EncodeUnicodeEscape" - "PyUnicodeUCS2_AsUnicodeEscapeString" "PyUnicodeUCS2_DecodeRawUnicodeEscape" "PyUnicodeUCS2_EncodeRawUnicodeEscape" - "PyUnicodeUCS2_AsRawUnicodeEscapeString" - "PyUnicodeUCS2_EncodeLatin1" - "PyUnicodeUCS2_EncodeASCII" "PyUnicodeUCS2_DecodeCharmap" "PyUnicodeUCS2_EncodeCharmap" - "PyUnicodeUCS2_AsCharmapString" "PyUnicodeUCS2_TranslateCharmap" - "PyUnicodeUCS2_Translate" "PyUnicodeUCS2_EncodeDecimal" "PyUnicodeUCS2_Count" "PyUnicodeUCS2_Find" @@ -559,34 +556,49 @@ EXPORTS "PyUnicodeUCS2_Replace" "PyUnicodeUCS2_Split" "PyUnicodeUCS2_Format" - "_PyUnicodeUCS2_Init" "_PyUnicodeUCS2_Fini" + "PyUnicodeUCS2_FromUnicode" + "PyUnicodeUCS2_AsUnicode" + "PyUnicodeUCS2_GetSize" + "PyUnicodeUCS2_GetMax" + "_PyUnicodeUCS2_AsDefaultEncodedString" + "PyUnicodeUCS2_SetDefaultEncoding" + "PyUnicodeUCS2_Encode" + "PyUnicodeUCS2_EncodeUTF16" + "PyUnicodeUCS2_AsUnicodeEscapeString" + "PyUnicodeUCS2_EncodeUnicodeEscape" + "PyUnicodeUCS2_AsRawUnicodeEscapeString" + "PyUnicodeUCS2_EncodeLatin1" + "PyUnicodeUCS2_EncodeASCII" + "PyUnicodeUCS2_AsCharmapString" + "PyUnicodeUCS2_Translate" + "_PyUnicodeUCS2_Init" "PyUnicode_Type" ; From python23_s.lib(unicodectype) "_PyUnicode_TypeRecords" - "_PyUnicodeUCS2_IsLinebreak" - "_PyUnicodeUCS2_ToTitlecase" - "_PyUnicodeUCS2_IsTitlecase" - "_PyUnicodeUCS2_ToDecimalDigit" - "_PyUnicodeUCS2_IsDecimalDigit" - "_PyUnicodeUCS2_ToDigit" - "_PyUnicodeUCS2_IsDigit" "_PyUnicodeUCS2_ToNumeric" - "_PyUnicodeUCS2_IsNumeric" - "_PyUnicodeUCS2_IsWhitespace" "_PyUnicodeUCS2_IsLowercase" "_PyUnicodeUCS2_IsUppercase" - "_PyUnicodeUCS2_ToUppercase" + "_PyUnicodeUCS2_IsTitlecase" + "_PyUnicodeUCS2_IsWhitespace" + "_PyUnicodeUCS2_IsLinebreak" "_PyUnicodeUCS2_ToLowercase" + "_PyUnicodeUCS2_ToUppercase" + "_PyUnicodeUCS2_ToTitlecase" + "_PyUnicodeUCS2_ToDecimalDigit" + "_PyUnicodeUCS2_ToDigit" + "_PyUnicodeUCS2_IsDecimalDigit" + "_PyUnicodeUCS2_IsDigit" + "_PyUnicodeUCS2_IsNumeric" "_PyUnicodeUCS2_IsAlpha" ; From python23_s.lib(weakrefobject) - "_PyWeakref_GetWeakrefCount" "PyWeakref_NewRef" "PyWeakref_NewProxy" - "PyWeakref_GetObject" "PyObject_ClearWeakRefs" + "PyWeakref_GetObject" + "_PyWeakref_GetWeakrefCount" "_PyWeakref_RefType" "_PyWeakref_ProxyType" "_PyWeakref_CallableProxyType" @@ -596,11 +608,8 @@ EXPORTS "Py_FileSystemDefaultEncoding" ; From python23_s.lib(exceptions) - "PyExc_TypeError" "PyExc_Exception" - "PyExc_UnicodeEncodeError" - "PyExc_UnicodeDecodeError" - "PyExc_UnicodeTranslateError" + "PyExc_TypeError" "PyExc_StopIteration" "PyExc_StandardError" "PyExc_SystemExit" @@ -628,6 +637,9 @@ EXPORTS "PyExc_FloatingPointError" "PyExc_ValueError" "PyExc_UnicodeError" + "PyExc_UnicodeEncodeError" + "PyExc_UnicodeDecodeError" + "PyExc_UnicodeTranslateError" "PyExc_ReferenceError" "PyExc_SystemError" "PyExc_MemoryError" @@ -640,19 +652,24 @@ EXPORTS "PyExc_RuntimeWarning" "PyExc_FutureWarning" "PyExc_MemoryErrorInst" + "PyUnicodeEncodeError_GetStart" + "PyUnicodeDecodeError_GetStart" + "PyUnicodeEncodeError_GetEnd" + "PyUnicodeDecodeError_GetEnd" + "_PyExc_Init" + "_PyExc_Fini" + "PyUnicodeDecodeError_Create" + "PyUnicodeEncodeError_Create" + "PyUnicodeTranslateError_Create" "PyUnicodeEncodeError_GetEncoding" "PyUnicodeDecodeError_GetEncoding" "PyUnicodeEncodeError_GetObject" "PyUnicodeDecodeError_GetObject" "PyUnicodeTranslateError_GetObject" - "PyUnicodeEncodeError_GetStart" - "PyUnicodeDecodeError_GetStart" "PyUnicodeTranslateError_GetStart" "PyUnicodeEncodeError_SetStart" "PyUnicodeDecodeError_SetStart" "PyUnicodeTranslateError_SetStart" - "PyUnicodeEncodeError_GetEnd" - "PyUnicodeDecodeError_GetEnd" "PyUnicodeTranslateError_GetEnd" "PyUnicodeEncodeError_SetEnd" "PyUnicodeDecodeError_SetEnd" @@ -663,100 +680,94 @@ EXPORTS "PyUnicodeEncodeError_SetReason" "PyUnicodeDecodeError_SetReason" "PyUnicodeTranslateError_SetReason" - "PyUnicodeEncodeError_Create" - "PyUnicodeDecodeError_Create" - "PyUnicodeTranslateError_Create" - "_PyExc_Init" - "_PyExc_Fini" ; From python23_s.lib(ceval) + "PyEval_CallObjectWithKeywords" + "PyEval_EvalCodeEx" + "_PyEval_SliceIndex" + "PyEval_GetFrame" + "PyEval_CallObject" + "PyEval_SetProfile" + "PyEval_SetTrace" + "PyEval_GetBuiltins" + "PyEval_GetGlobals" + "PyEval_GetLocals" + "PyEval_GetRestricted" + "PyEval_MergeCompilerFlags" + "Py_FlushLine" + "Py_AddPendingCall" + "Py_MakePendingCalls" + "Py_SetRecursionLimit" + "Py_GetRecursionLimit" + "PyEval_GetFuncName" + "PyEval_GetFuncDesc" "PyEval_GetCallStats" + "PyEval_SaveThread" + "PyEval_RestoreThread" "PyEval_InitThreads" "PyEval_AcquireLock" "PyEval_ReleaseLock" "PyEval_AcquireThread" "PyEval_ReleaseThread" "PyEval_ReInitThreads" - "PyEval_SaveThread" - "PyEval_RestoreThread" - "Py_AddPendingCall" - "Py_MakePendingCalls" - "Py_GetRecursionLimit" - "Py_SetRecursionLimit" "PyEval_EvalCode" - "PyEval_EvalCodeEx" - "PyEval_CallObjectWithKeywords" - "PyEval_SetProfile" - "PyEval_SetTrace" - "PyEval_GetBuiltins" - "PyEval_GetFrame" - "PyEval_GetLocals" - "PyEval_GetGlobals" - "PyEval_GetRestricted" - "PyEval_MergeCompilerFlags" - "Py_FlushLine" - "PyEval_CallObject" - "PyEval_GetFuncName" - "PyEval_GetFuncDesc" - "_PyEval_SliceIndex" - "_Py_Ticker" + "_PyEval_CallTracing" "_Py_CheckInterval" + "_Py_Ticker" ; From python23_s.lib(compile) "PyCode_New" + "PySymtable_Free" "_Py_Mangle" "PyNode_Compile" "PyNode_CompileFlags" - "PyNode_CompileSymtable" - "PySymtable_Free" "PyCode_Addr2Line" + "PyNode_CompileSymtable" "Py_OptimizeFlag" "PyCode_Type" ; From python23_s.lib(codecs) - "PyCodec_Register" "_PyCodec_Lookup" - "PyCodec_Encoder" - "PyCodec_Decoder" "PyCodec_StreamReader" "PyCodec_StreamWriter" "PyCodec_Encode" "PyCodec_Decode" - "PyCodec_RegisterError" - "PyCodec_LookupError" - "PyCodec_StrictErrors" "PyCodec_IgnoreErrors" "PyCodec_ReplaceErrors" "PyCodec_XMLCharRefReplaceErrors" "PyCodec_BackslashReplaceErrors" - "_PyCodecRegistry_Init" - "_PyCodecRegistry_Fini" + "PyCodec_Register" + "PyCodec_Encoder" + "PyCodec_Decoder" + "PyCodec_RegisterError" + "PyCodec_LookupError" + "PyCodec_StrictErrors" ; From python23_s.lib(errors) - "PyErr_Restore" - "PyErr_SetObject" "PyErr_SetNone" "PyErr_SetString" - "PyErr_Occurred" - "PyErr_GivenExceptionMatches" "PyErr_ExceptionMatches" + "PyErr_GivenExceptionMatches" "PyErr_NormalizeException" "PyErr_Fetch" "PyErr_Clear" - "PyErr_BadArgument" "PyErr_NoMemory" "PyErr_SetFromErrnoWithFilenameObject" - "PyErr_SetFromErrnoWithFilename" - "PyErr_SetFromErrno" - "_PyErr_BadInternalCall" "PyErr_Format" - "PyErr_BadInternalCall" "PyErr_NewException" "PyErr_WriteUnraisable" - "PyErr_Warn" - "PyErr_WarnExplicit" "PyErr_SyntaxLocation" "PyErr_ProgramText" + "PyErr_SetObject" + "PyErr_Occurred" + "PyErr_Restore" + "PyErr_BadArgument" + "PyErr_SetFromErrno" + "PyErr_SetFromErrnoWithFilename" + "PyErr_BadInternalCall" + "_PyErr_BadInternalCall" + "PyErr_Warn" + "PyErr_WarnExplicit" ; From python23_s.lib(frozen) "PyImport_FrozenModules" @@ -770,9 +781,9 @@ EXPORTS ; From python23_s.lib(getargs) "PyArg_Parse" "PyArg_ParseTuple" - "PyArg_VaParse" "PyArg_ParseTupleAndKeywords" "PyArg_UnpackTuple" + "PyArg_VaParse" ; From python23_s.lib(getcompiler) "Py_GetCompiler" @@ -796,22 +807,22 @@ EXPORTS "_PyImport_Init" "_PyImportHooks_Init" "PyImport_ImportModule" - "_PyImport_Fini" - "PyImport_GetModuleDict" "PyImport_Cleanup" - "PyImport_GetMagicNumber" "_PyImport_FixupExtension" - "_PyImport_FindExtension" "PyImport_AddModule" - "PyImport_ExecCodeModule" "PyImport_ExecCodeModuleEx" "PyImport_ImportFrozenModule" - "PyImport_Import" "PyImport_ImportModuleEx" "PyImport_ReloadModule" + "PyImport_Import" ; "initimp" - "PyImport_ExtendInittab" + "_PyImport_Fini" + "PyImport_GetMagicNumber" + "PyImport_ExecCodeModule" + "PyImport_GetModuleDict" + "_PyImport_FindExtension" "PyImport_AppendInittab" + "PyImport_ExtendInittab" "PyImport_Inittab" "_PyImport_Filetab" @@ -819,14 +830,14 @@ EXPORTS "_PyImport_LoadDynamicModule" ; From python23_s.lib(marshal) - "PyMarshal_WriteLongToFile" - "PyMarshal_WriteObjectToFile" - "PyMarshal_ReadShortFromFile" "PyMarshal_ReadLongFromFile" "PyMarshal_ReadLastObjectFromFile" "PyMarshal_ReadObjectFromString" "PyMarshal_ReadObjectFromFile" "PyMarshal_WriteObjectToString" + "PyMarshal_WriteLongToFile" + "PyMarshal_WriteObjectToFile" + "PyMarshal_ReadShortFromFile" "PyMarshal_Init" ; From python23_s.lib(modsupport) @@ -852,20 +863,26 @@ EXPORTS "PyFPE_dummy" ; From python23_s.lib(pystate) - "PyInterpreterState_New" "PyInterpreterState_Clear" "PyThreadState_Clear" - "PyThreadState_Delete" + "PyGILState_Ensure" + "PyGILState_Release" + "PyInterpreterState_New" "PyInterpreterState_Delete" + "PyThreadState_Delete" "PyThreadState_New" "PyThreadState_DeleteCurrent" "PyThreadState_Get" "PyThreadState_Swap" "PyThreadState_GetDict" + "PyThreadState_SetAsyncExc" + "PyGILState_GetThisThreadState" "PyInterpreterState_Head" "PyInterpreterState_Next" "PyInterpreterState_ThreadHead" "PyThreadState_Next" + "_PyGILState_Init" + "_PyGILState_Fini" "_PyThreadState_Current" "_PyThreadState_GetFrame" @@ -876,78 +893,80 @@ EXPORTS "Py_NoSiteFlag" "Py_InteractiveFlag" "Py_FrozenFlag" - "Py_IsInitialized" "Py_Initialize" "Py_FatalError" - "Py_Finalize" "Py_NewInterpreter" "PyErr_Print" - "Py_EndInterpreter" + "PyRun_InteractiveOneFlags" + "PyRun_SimpleFileExFlags" + "PyRun_FileExFlags" + "Py_Exit" + "PyErr_PrintEx" + "PyErr_Display" "Py_SetProgramName" "Py_GetProgramName" "Py_SetPythonHome" "Py_GetPythonHome" + "Py_Finalize" + "Py_IsInitialized" + "Py_EndInterpreter" "PyRun_AnyFile" "PyRun_AnyFileExFlags" - "PyRun_AnyFileFlags" "PyRun_AnyFileEx" + "PyRun_AnyFileFlags" "Py_FdIsInteractive" "PyRun_InteractiveLoopFlags" - "PyRun_SimpleFileExFlags" - "PyRun_InteractiveLoop" - "PyRun_InteractiveOneFlags" - "PyRun_InteractiveOne" - "PyRun_SimpleFile" - "PyRun_SimpleFileEx" - "PyRun_FileExFlags" "PyRun_SimpleString" "PyRun_SimpleStringFlags" "PyRun_StringFlags" - "PyErr_PrintEx" - "Py_Exit" - "PyErr_Display" - "PyRun_String" + "PyRun_SimpleFile" + "PyRun_SimpleFileEx" + "PyRun_InteractiveOne" + "PyRun_InteractiveLoop" "PyParser_SimpleParseString" - "PyRun_File" - "PyRun_FileEx" "PyParser_SimpleParseFile" "PyParser_SimpleParseStringFlags" - "PyRun_FileFlags" + "PyParser_SimpleParseStringFlagsFilename" "PyParser_SimpleParseFileFlags" + "PyRun_String" + "PyRun_File" + "PyRun_FileEx" + "PyRun_FileFlags" "Py_CompileString" "Py_CompileStringFlags" - "PyParser_SimpleParseStringFlagsFilename" "Py_SymtableString" - "PyParser_SimpleParseStringFilename" "Py_AtExit" "PyOS_getsig" "PyOS_setsig" + "PyParser_SetError" + "PyParser_SimpleParseStringFilename" "Py_UseClassExceptionsFlag" "Py_UnicodeFlag" "_Py_QnewFlag" + "PyModule_WarningsModule" "_PyThread_Started" ; From python23_s.lib(structmember) "PyMember_Get" "PyMember_GetOne" - "PyMember_Set" "PyMember_SetOne" + "PyMember_Set" ; From python23_s.lib(symtable) "PySymtableEntry_New" "PySymtableEntry_Type" ; From python23_s.lib(sysmodule) - "PySys_GetObject" - "PySys_GetFile" - "PySys_SetObject" - "PySys_ResetWarnOptions" - "PySys_AddWarnOption" "_PySys_Init" "PySys_SetPath" "PySys_SetArgv" "PySys_WriteStdout" "PySys_WriteStderr" + "PySys_GetObject" + "PySys_SetObject" + "PySys_GetFile" + "PySys_ResetWarnOptions" + "PySys_AddWarnOption" ; From python23_s.lib(traceback) "PyTraceBack_Here" @@ -965,38 +984,44 @@ EXPORTS "_PyImport_GetDynLoadFunc" ; From python23_s.lib(thread) + "PyThread_delete_key_value" "PyThread_init_thread" "PyThread_start_new_thread" - "PyThread_get_thread_ident" "PyThread_exit_thread" - "PyThread__exit_thread" + "PyThread_get_thread_ident" "PyThread_allocate_lock" "PyThread_free_lock" "PyThread_acquire_lock" "PyThread_release_lock" + "PyThread_create_key" + "PyThread_delete_key" + "PyThread_set_key_value" + "PyThread_get_key_value" + "PyThread__exit_thread" ; From python23_s.lib(gcmodule) ; "initgc" - "_PyGC_Dump" - "PyObject_GC_Track" - "_PyObject_GC_Track" - "PyObject_GC_UnTrack" - "_PyObject_GC_UnTrack" - "_PyObject_GC_Malloc" "_PyObject_GC_New" "_PyObject_GC_NewVar" + "PyGC_Collect" "_PyObject_GC_Resize" + "_PyObject_GC_Malloc" + "PyObject_GC_Track" + "PyObject_GC_UnTrack" "PyObject_GC_Del" + "_PyGC_Dump" + "_PyObject_GC_Track" + "_PyObject_GC_UnTrack" "_PyObject_GC_Del" "_PyGC_generation0" ; From python23_s.lib(signalmodule) - "PyErr_CheckSignals" ; "initsignal" + "PyErr_CheckSignals" "PyErr_SetInterrupt" - "PyOS_InitInterrupts" "PyOS_FiniInterrupts" "PyOS_InterruptOccurred" + "PyOS_InitInterrupts" "PyOS_AfterFork" ; From python23_s.lib(posixmodule) @@ -1004,3 +1029,145 @@ EXPORTS ; From python23_s.lib(threadmodule) ; "initthread" + +; From python23_s.lib(arraymodule) +; "initarray" +; "array_methods" + +; From python23_s.lib(binascii) +; "initbinascii" + +; From python23_s.lib(cmathmodule) +; "initcmath" + +; From python23_s.lib(_codecsmodule) +; "init_codecs" + +; From python23_s.lib(cPickle) +; "initcPickle" +; "fast_save_leave" + +; From python23_s.lib(cStringIO) +; "initcStringIO" + +; From python23_s.lib(_csv) +; "init_csv" + +; From python23_s.lib(datetimemodule) +; "initdatetime" + +; From python23_s.lib(dlmodule) +; "initdl" + +; From python23_s.lib(errnomodule) +; "initerrno" + +; From python23_s.lib(fcntlmodule) +; "initfcntl" + +; From python23_s.lib(imageop) +; "initimageop" + +; From python23_s.lib(itertoolsmodule) +; "inititertools" +; "cycle_type" +; "dropwhile_type" +; "takewhile_type" +; "islice_type" +; "starmap_type" +; "imap_type" +; "chain_type" +; "ifilter_type" +; "ifilterfalse_type" +; "count_type" +; "izip_type" +; "repeat_type" + +; From python23_s.lib(_localemodule) +; "init_locale" + +; From python23_s.lib(mathmodule) +; "initmath" + +; From python23_s.lib(md5c) +; "_Py_MD5Final" +; "_Py_MD5Init" +; "_Py_MD5Update" + +; From python23_s.lib(md5module) +; "initmd5" + +; From python23_s.lib(operator) +; "initoperator" + +; From python23_s.lib(pcremodule) +; "initpcre" + +; From python23_s.lib(pypcre) +; "pcre_study" +; "pcre_compile" +; "pcre_exec" +; "pcre_info" +; "pcre_version" +; "pcre_lcc" +; "pcre_fcc" +; "pcre_cbits" +; "pcre_ctypes" +; "pcre_malloc" +; "pcre_free" + +; From python23_s.lib(_randommodule) +; "init_random" + +; From python23_s.lib(regexmodule) +; "initregex" + +; From python23_s.lib(regexpr) +; "_Py_re_syntax_table" +; "_Py_re_compile_initialize" +; "_Py_re_compile_pattern" +; "_Py_re_match" +; "_Py_re_search" +; "_Py_re_set_syntax" +; "_Py_re_compile_fastmap" +; "_Py_re_syntax" + +; From python23_s.lib(rgbimgmodule) +; "initrgbimg" + +; From python23_s.lib(shamodule) +; "initsha" + +; From python23_s.lib(_sre) +; "init_sre" + +; From python23_s.lib(stropmodule) +; "initstrop" + +; From python23_s.lib(structmodule) +; "initstruct" + +; From python23_s.lib(symtablemodule) +; "init_symtable" + +; From python23_s.lib(termios) +; "inittermios" + +; From python23_s.lib(timemodule) +; "inittime" +; "inittimezone" + +; From python23_s.lib(timingmodule) +; "inittiming" + +; From python23_s.lib(_weakref) +; "init_weakref" + +; From python23_s.lib(xreadlinesmodule) +; "initxreadlines" + +; From python23_s.lib(xxsubtype) +; "initxxsubtype" + +; From python23_s.lib(zipimport) +; "initzipimport"