diff options
-rwxr-xr-x | Modules/ld_so_aix | 58 | ||||
-rwxr-xr-x | Modules/makexp_aix | 71 | ||||
-rw-r--r-- | Modules/python.exp | 439 |
3 files changed, 568 insertions, 0 deletions
diff --git a/Modules/ld_so_aix b/Modules/ld_so_aix new file mode 100755 index 0000000..77605c8 --- /dev/null +++ b/Modules/ld_so_aix @@ -0,0 +1,58 @@ +#!/bin/sh +# +# ======================================================================== +# FILE: ld_so_aix +# TYPE: executable, uses makexp_aix +# SYSTEM: AIX +# +# DESCRIPTION: Creates a shareable .o from a pre-compiled (unshared) +# .o file +# +# ARGUMENTS: Same as for "ld". The -bM, -bE, -bI, -H, -T, and -lc +# arguments of "ld" will be supplied by this script. +# +# NOTES: 1. Currently specific to the building of Python +# interpreter shared objects, in that the entry +# point name is hardcoded based on the object file +# name (the "mathmodule.o" file will expect an +# entry point of "initmath"). This could be remedied +# by the support (or simple expectation) of a "-e" +# argument. +# 2. The resulting shared object file is left in the +# current directory with the extension .so +# 3. Uncommenting the "echo" lines gives detailed output +# about the commands executed in the script. +# +# HISTORY: Jul-1-1996 -- Make sure to use /usr/ccs/bin/ld -- +# -- Use makexp_aix for the export list. -- +# Vladimir Marangozov (Vladimir.Marangozov@imag.fr) +# +# Manus Hand (mhand@csn.net) -- Initial code -- 6/24/96 +# ======================================================================== +# + +# Variables +objfile=$1 +shift +filename=`echo $objfile | sed -e "s:.*/\([^/]*\)$:\1:" -e "s/\..*$//"` +entry=init`echo $filename | sed "s/module.*//"` +ldopts="-e$entry -bE:$filename.exp -bI:python.exp -bM:SRE -T512 -H512 -lc" +ldargs="$objfile $*" + +# Export list generation +makexp_aix $filename.exp "$objfile" $objfile + +# Perform the link. +#echo "ld $ldopts $ldargs" +/usr/ccs/bin/ld $ldopts $ldargs + +# Delete the module's export list file. +# Comment this line if you need it. +rm -f $filename.exp + +# Remove the exec rights on the shared module. +#echo chmod -x `echo $objfile | sed "s/\.o$/.so/"` +chmod -x `echo $objfile | sed "s/\.o$/.so/"` + + + diff --git a/Modules/makexp_aix b/Modules/makexp_aix new file mode 100755 index 0000000..733013f --- /dev/null +++ b/Modules/makexp_aix @@ -0,0 +1,71 @@ +#!/bin/sh +# +# =========================================================================== +# FILE: makexp_aix +# TYPE: standalone executable +# SYSTEM: AIX 3.2.5 and AIX 4 +# +# DESCRIPTION: This script creates an export list of ALL global symbols +# from a list of object or archive files. +# +# USAGE: makexp_aix <OutputFile> "<FirstLine>" <InputFile> ... +# +# where: +# <OutputFile> is the target export list filename. +# <FirstLine> is the path/file string to be appended +# after the "#!" symbols in the first line of the +# export file. Passing "" means deferred resolution. +# <InputFile> is an object (.o) or an archive file (.a). +# +# HISTORY: +# 1-Jul-1996 -- added header information +# Vladimir Marangozov +# +# 28-Jun-1996 -- initial code +# Vladimir Marangozov (Vladimir.Marangozov@imag.fr) +# ========================================================================== + +# Variables +expFileName=$1 +toAppendStr=$2 +shift; shift; +inputFiles=$* +automsg="Generated automatically by makexp_aix" +notemsg="NOTE: lists _all_ global symbols defined in the above file(s)." +curwdir=`pwd` + +# Create the export file and setup the header info +echo "#!"$toAppendStr > $expFileName +echo "*" >> $expFileName +echo "* $automsg (`date -u`)" >> $expFileName +echo "*" >> $expFileName +echo "* Base Directory: $curwdir" >> $expFileName +echo "* Input File(s) : $inputFiles" >> $expFileName +echo "*" >> $expFileName +echo "* $notemsg" >> $expFileName +echo "*" >> $expFileName + +# Extract the symbol list using 'nm' which produces quite +# different output under AIX 4 than under AIX 3.2.5. +# The following handles both versions by using a common flagset. +# Here are some hidden tricks: +# 1. Use /usr/ccs/bin/nm. Relevant to AIX 3.2.5 which has +# another version under /usr/ucb/bin/nm. +# 2. Use the -B flag to have a standard BSD representation +# of the symbol list on both AIX 3.2.5 and AIX 4. The "-B" +# flag is missing in the AIX 3.2.5 online usage help of 'nm'. +# 3. Use the -x flag to have a hex representation of the symbol +# values. This fills the leading whitespaces on AIX 4, +# thus simplifying the sed statement. +# 4. Eliminate all entries except those with either "B", "D" +# or "T" key letters. We are interested only in the global +# (extern) BSS, DATA and TEXT symbols. With the same statement +# we eliminate object member lines relevant to AIX 4. +# 5. Eliminate entries containing a dot. We can have a dot only +# as a symbol prefix, but such symbols are undefined externs. +# 6. Eliminate everything including the key letter, so that we're +# left with just the symbol name. +# +/usr/ccs/bin/nm -Bex $inputFiles \ +| sed -e '/ [^BDT] /d' -e '/\./d' -e 's/.* [BDT] //' \ +| sort | uniq >> $expFileName diff --git a/Modules/python.exp b/Modules/python.exp new file mode 100644 index 0000000..86fd6af --- /dev/null +++ b/Modules/python.exp @@ -0,0 +1,439 @@ +#! +* +* ========================================================= +* This is the default export list of the python executable. +* This file is used for the AIX platform ONLY. It provides +* a list of all variables in the python executable that are +* "exported" -- that is, which may be used by any extension +* modules that are created. This file should be used as an +* AIX "import" file when creating extension modules on that +* platform. +* +* This file was generated from the default configuration of +* the distribution (that is, from a build in which NONE of +* the python Modules were built as shared libraries). +* +* THIS FILE IS OVERWRITTEN anytime the python executable is +* re-built using a Modules/Setup file that was customized +* to call for the building of some or all python Modules as +* shared libraries and with the definition of LINKCC having +* been uncommented. A new python.exp will be generated by +* such a build; it will list ONLY the global symbols which +* are defined in the statically-bound modules and libraries. +* ========================================================= +* +PyAccess_AsValue +PyAccess_Clone +PyAccess_FromValue +PyAccess_HasValue +PyAccess_SetOwner +PyAccess_SetValue +PyAccess_Type +PyAnyMapping_Type +PyAnyNumber_Type +PyAnySequence_Type +PyArg_GetChar +PyArg_GetDoubleArray +PyArg_GetFloat +PyArg_GetFloatArray +PyArg_GetLong +PyArg_GetLongArray +PyArg_GetLongArraySize +PyArg_GetObject +PyArg_GetShort +PyArg_GetShortArray +PyArg_GetShortArraySize +PyArg_GetString +PyArg_Parse +PyArg_ParseTuple +PyArgs_VaParse +PyBuiltin_GetDict +PyBuiltin_GetModule +PyBuiltin_Init +PyCFunction_GetFlags +PyCFunction_GetFunction +PyCFunction_GetSelf +PyCFunction_New +PyCFunction_Type +PyCObject_AsVoidPtr +PyCObject_FromVoidPtr +PyCObject_Type +PyCallable_Check +PyClass_IsSubclass +PyClass_New +PyClass_Type +PyCode_New +PyCode_Type +PyComplex_AsCComplex +PyComplex_FromCComplex +PyComplex_FromDoubles +PyComplex_ImagAsDouble +PyComplex_RealAsDouble +PyComplex_Type +PyDict_Clear +PyDict_DelItem +PyDict_DelItemString +PyDict_GetItem +PyDict_GetItemString +PyDict_Items +PyDict_Keys +PyDict_New +PyDict_Next +PyDict_SetItem +PyDict_SetItemString +PyDict_Size +PyDict_Type +PyDict_Values +PyErr_BadArgument +PyErr_BadInternalCall +PyErr_CheckSignals +PyErr_Clear +PyErr_Fetch +PyErr_NoMemory +PyErr_Occurred +PyErr_Print +PyErr_Restore +PyErr_SetFromErrno +PyErr_SetInterrupt +PyErr_SetNone +PyErr_SetObject +PyErr_SetString +PyEval_CallFunction +PyEval_CallMethod +PyEval_CallObject +PyEval_CallObjectWithKeywords +PyEval_EvalCode +PyEval_GetBuiltins +PyEval_GetFrame +PyEval_GetGlobals +PyEval_GetLocals +PyEval_GetOwner +PyEval_GetRestricted +PyEval_RestoreThread +PyEval_SaveThread +PyExc_AccessError +PyExc_AttributeError +PyExc_ConflictError +PyExc_EOFError +PyExc_IOError +PyExc_ImportError +PyExc_IndexError +PyExc_KeyError +PyExc_KeyboardInterrupt +PyExc_MemoryError +PyExc_NameError +PyExc_OverflowError +PyExc_RuntimeError +PyExc_SyntaxError +PyExc_SystemError +PyExc_SystemExit +PyExc_TypeError +PyExc_ValueError +PyExc_ZeroDivisionError +PyFile_AsFile +PyFile_FromFile +PyFile_FromString +PyFile_GetLine +PyFile_Name +PyFile_SetBufSize +PyFile_SoftSpace +PyFile_Type +PyFile_WriteObject +PyFile_WriteString +PyFloat_AsDouble +PyFloat_AsString +PyFloat_FromDouble +PyFloat_Type +PyFrame_BlockPop +PyFrame_BlockSetup +PyFrame_ExtendStack +PyFrame_FastToLocals +PyFrame_LocalsToFast +PyFrame_New +PyFrame_Type +PyFunction_GetCode +PyFunction_GetDefaults +PyFunction_GetGlobals +PyFunction_New +PyFunction_SetDefaults +PyFunction_Type +PyGrammar_AddAccelerators +PyGrammar_FindDFA +PyGrammar_LabelRepr +PyImport_AddModule +PyImport_Cleanup +PyImport_ExecCodeModule +PyImport_FrozenModules +PyImport_GetMagicNumber +PyImport_GetModuleDict +PyImport_ImportFrozenModule +PyImport_ImportModule +PyImport_Init +PyImport_ReloadModule +PyInstance_DoBinOp +PyInstance_New +PyInstance_Type +PyInt_AsLong +PyInt_FromLong +PyInt_GetMax +PyInt_Type +PyList_Append +PyList_AsTuple +PyList_GetItem +PyList_GetSlice +PyList_Insert +PyList_New +PyList_Reverse +PyList_SetItem +PyList_SetSlice +PyList_Size +PyList_Sort +PyList_Type +PyLong_AsDouble +PyLong_AsLong +PyLong_FromDouble +PyLong_FromLong +PyLong_FromString +PyLong_Type +PyMapping_Check +PyMapping_GetItemString +PyMapping_HasKey +PyMapping_HasKeyString +PyMapping_Length +PyMapping_SetItemString +PyMarshal_Init +PyMarshal_ReadLongFromFile +PyMarshal_ReadObjectFromFile +PyMarshal_ReadObjectFromString +PyMarshal_WriteLongToFile +PyMarshal_WriteObjectToFile +PyMember_Get +PyMember_Set +PyMethod_Class +PyMethod_Function +PyMethod_New +PyMethod_Self +PyMethod_Type +PyModule_GetDict +PyModule_GetName +PyModule_New +PyModule_Type +PyNode_AddChild +PyNode_Compile +PyNode_Free +PyNode_ListTree +PyNode_New +PyNumber_Absolute +PyNumber_Add +PyNumber_And +PyNumber_Check +PyNumber_Coerce +PyNumber_Divide +PyNumber_Divmod +PyNumber_Float +PyNumber_Int +PyNumber_Invert +PyNumber_Long +PyNumber_Lshift +PyNumber_Multiply +PyNumber_Negative +PyNumber_Or +PyNumber_Positive +PyNumber_Power +PyNumber_Remainder +PyNumber_Rshift +PyNumber_Subtract +PyNumber_Xor +PyOS_GetLastModificationTime +PyOS_InitInterrupts +PyOS_InterruptOccurred +PyOS_Readline +PyOS_strtol +PyOS_strtoul +PyObject_CallFunction +PyObject_CallMethod +PyObject_CallObject +PyObject_Cmp +PyObject_Compare +PyObject_GetAttr +PyObject_GetAttrString +PyObject_GetItem +PyObject_HasAttrString +PyObject_Hash +PyObject_IsTrue +PyObject_Length +PyObject_Print +PyObject_Repr +PyObject_SetAttr +PyObject_SetAttrString +PyObject_SetItem +PyObject_Str +PyObject_Type +PyParser_AddToken +PyParser_Delete +PyParser_New +PyParser_ParseFile +PyParser_ParseString +PyParser_SimpleParseFile +PyParser_SimpleParseString +PyRange_New +PyRange_Type +PyRun_AnyFile +PyRun_File +PyRun_InteractiveLoop +PyRun_InteractiveOne +PyRun_SimpleFile +PyRun_SimpleString +PyRun_String +PySequence_Check +PySequence_Concat +PySequence_Count +PySequence_GetItem +PySequence_GetSlice +PySequence_In +PySequence_Index +PySequence_Length +PySequence_Repeat +PySequence_SetItem +PySequence_SetSlice +PySequence_Tuple +PySlice_GetIndices +PySlice_New +PySlice_Type +PyString_AsString +PyString_Concat +PyString_ConcatAndDel +PyString_Format +PyString_FromString +PyString_FromStringAndSize +PyString_Size +PyString_Type +PySys_GetFile +PySys_GetObject +PySys_Init +PySys_SetArgv +PySys_SetObject +PySys_SetPath +PyToken_OneChar +PyToken_TwoChars +PyTokenizer_Free +PyTokenizer_FromFile +PyTokenizer_FromString +PyTokenizer_Get +PyTraceBack_Fetch +PyTraceBack_Here +PyTraceBack_Print +PyTraceBack_Store +PyTraceBack_Type +PyTuple_GetItem +PyTuple_GetSlice +PyTuple_New +PyTuple_SetItem +PyTuple_Size +PyTuple_Type +PyType_Type +Py_AddPendingCall +Py_AtExit +Py_BuildValue +Py_Cleanup +Py_CompileString +Py_DebugFlag +Py_Exit +Py_FatalError +Py_FindMethod +Py_FindMethodInChain +Py_FlushLine +Py_GetArgcArgv +Py_GetCompiler +Py_GetCopyright +Py_GetExecPrefix +Py_GetPath +Py_GetPlatform +Py_GetPrefix +Py_GetProgramName +Py_GetVersion +Py_InitModule4 +Py_Initialize +Py_MakePendingCalls +Py_ReturnNullError +Py_SuppressPrintingFlag +Py_VaBuildValue +Py_VerboseFlag +_PyImport_Filetab +_PyImport_LoadDynamicModule +_PyImport_MaxSuffixSize +_PyLong_New +_PyObject_New +_PyObject_NewVar +_PyParser_Grammar +_PyParser_TokenNames +_PyString_Resize +_PySys_CheckInterval +_PySys_ProfileFunc +_PySys_TraceFunc +_PyTuple_Resize +_Py_EllipsesObject +_Py_MD5Final +_Py_MD5Init +_Py_MD5Update +_Py_NoneStruct +_Py_TrueStruct +_Py_ZeroStruct +_Py_addarc +_Py_addbit +_Py_adddfa +_Py_addfirstsets +_Py_addlabel +_Py_addstate +_Py_c_diff +_Py_c_neg +_Py_c_pow +_Py_c_prod +_Py_c_quot +_Py_c_sum +_Py_delbitset +_Py_findlabel +_Py_mergebitset +_Py_meta_grammar +_Py_newbitset +_Py_newgrammar +_Py_pgen +_Py_printgrammar +_Py_printnonterminals +_Py_re_compile_fastmap +_Py_re_compile_pattern +_Py_re_match +_Py_re_match_2 +_Py_re_search +_Py_re_search_2 +_Py_re_set_syntax +_Py_re_syntax +_Py_samebitset +_Py_translatelabels +import_modules +initarray +initaudioop +initbinascii +initcmath +initcrypt +initerrno +initfcntl +initgrp +initimageop +initimp +initmath +initmd5 +initoperator +initposix +initpwd +initregex +initrgbimg +initrotor +initselect +initsignal +initsocket +initstrop +initstruct +inittab +inittime +main |