提示词:补齐 PythonPlugin C API WASM shim 符号
结论:按 LinuxCNC src/emc/pythonplugin/python_plugin.cc 的初始化、导入、配置和 callable 调用路径,把 PyConfig/PyStatus、PyImport_*、PyDict_SetItemString、Py_InitializeFromConfig、PyRun_SimpleString、Py_GetVersion、PyObject_Call 等符号纳入 inert WASM Python C API shim;真实 Python 执行仍保持禁用。 检查:./test-linuxcnc-wasm-python-c-api-symbols.sh 通过;./test-native.sh 通过;./test-linuxcnc-source-link.sh 通过。
This commit is contained in:
@@ -85,6 +85,18 @@ struct _inittab {
|
||||
PyObject *(*initfunc)(void);
|
||||
};
|
||||
|
||||
struct PyStatus {
|
||||
int _type;
|
||||
const char *func;
|
||||
const char *err_msg;
|
||||
int exitcode;
|
||||
};
|
||||
|
||||
struct PyConfig {
|
||||
wchar_t *program_name;
|
||||
int buffered_stdio;
|
||||
};
|
||||
|
||||
using PyCFunction = PyObject *(*)(PyObject *, PyObject *);
|
||||
using getter = PyObject *(*)(PyObject *, void *);
|
||||
using setter = int (*)(PyObject *, PyObject *, void *);
|
||||
@@ -146,6 +158,7 @@ void Py_DecRef(PyObject *);
|
||||
int PyArg_ParseTuple(PyObject *, const char *, ...);
|
||||
int PyArg_VaParse(PyObject *, const char *, va_list);
|
||||
PyObject *PyObject_CallMethod(PyObject *, char *, char *, ...);
|
||||
PyObject *PyObject_Call(PyObject *, PyObject *, PyObject *);
|
||||
PyObject *PyObject_GetAttrString(PyObject *, const char *);
|
||||
int PyObject_SetAttrString(PyObject *, const char *, PyObject *);
|
||||
int PyObject_IsTrue(PyObject *);
|
||||
@@ -165,6 +178,17 @@ Py_ssize_t PySequence_Length(PyObject *);
|
||||
PyObject *Py_BuildValue(const char *, ...);
|
||||
PyObject *PyModule_Create(PyModuleDef *);
|
||||
int PyModule_AddObject(PyObject *, const char *, PyObject *);
|
||||
int PyImport_ExtendInittab(_inittab *);
|
||||
PyObject *PyImport_GetModuleDict(void);
|
||||
PyObject *PyImport_AddModule(const char *);
|
||||
int PyDict_SetItemString(PyObject *, const char *, PyObject *);
|
||||
void PyConfig_InitPythonConfig(PyConfig *);
|
||||
PyStatus PyConfig_SetString(PyConfig *, wchar_t **, const wchar_t *);
|
||||
void PyConfig_Clear(PyConfig *);
|
||||
PyStatus Py_InitializeFromConfig(PyConfig *);
|
||||
wchar_t *Py_DecodeLocale(const char *, std::size_t *);
|
||||
int PyRun_SimpleString(const char *);
|
||||
const char *Py_GetVersion(void);
|
||||
int PyType_Ready(PyTypeObject *);
|
||||
PyObject *PyType_GenericNew(PyTypeObject *, PyObject *, PyObject *);
|
||||
void *PyObject_NewShim(std::size_t, PyTypeObject *);
|
||||
|
||||
Reference in New Issue
Block a user