From 1df3d3128b4be66869660512fc3d9553aa5bc1e4 Mon Sep 17 00:00:00 2001 From: Mingchuan Wu Date: Fri, 23 May 2025 10:56:32 +0800 Subject: [PATCH] [Sync] Sync patch from openEuler/pin-server (cherry picked from commit effbac2fe32451a18ceb7684f2762bf6534a8779) --- ...nServer-Add-class-for-Server-Command.patch | 159 ++++++++++++++++++ pin-server.spec | 9 +- 2 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 0035-PluginServer-Add-class-for-Server-Command.patch diff --git a/0035-PluginServer-Add-class-for-Server-Command.patch b/0035-PluginServer-Add-class-for-Server-Command.patch new file mode 100644 index 0000000..1c44463 --- /dev/null +++ b/0035-PluginServer-Add-class-for-Server-Command.patch @@ -0,0 +1,159 @@ +From 0a5d8bf7fb666ed62f902f517c2c78e46413b66e Mon Sep 17 00:00:00 2001 +From: Mingchuan Wu +Date: Fri, 23 May 2025 10:02:47 +0800 +Subject: [PATCH] [PluginServer] Add class for Server Command. + +--- + include/PluginAPI/BasicPluginOpsAPI.h | 1 + + include/PluginAPI/PluginServerAPI.h | 1 + + include/PluginServer/PluginOptBase.h | 2 +- + include/PluginServer/PluginServer.h | 44 +++++++++++++++++++++++++++ + lib/PluginAPI/PluginServerAPI.cpp | 5 +++ + lib/PluginServer/main.cpp | 5 +-- + 6 files changed, 55 insertions(+), 3 deletions(-) + +diff --git a/include/PluginAPI/BasicPluginOpsAPI.h b/include/PluginAPI/BasicPluginOpsAPI.h +index 4e05e6f..803ce22 100644 +--- a/include/PluginAPI/BasicPluginOpsAPI.h ++++ b/include/PluginAPI/BasicPluginOpsAPI.h +@@ -44,6 +44,7 @@ public: + virtual string GetIncludeFile() = 0; + virtual int GetDeclSourceLine(int64_t) = 0; + virtual int GetDeclSourceColumn(int64_t) = 0; ++ virtual void ShutdownCompile() = 0; + + // CGnodeOp + virtual vector GetAllCGnode() = 0; +diff --git a/include/PluginAPI/PluginServerAPI.h b/include/PluginAPI/PluginServerAPI.h +index 236c8a1..d5db965 100644 +--- a/include/PluginAPI/PluginServerAPI.h ++++ b/include/PluginAPI/PluginServerAPI.h +@@ -129,6 +129,7 @@ public: + string GetIncludeFile() override; + int GetDeclSourceLine(int64_t) override; + int GetDeclSourceColumn(int64_t) override; ++ void ShutdownCompile() override; + private: + mlir::Block* BlockResult(const string& funName, const string& params); + vector BlocksResult(const string& funName, const string& params); +diff --git a/include/PluginServer/PluginOptBase.h b/include/PluginServer/PluginOptBase.h +index 474d072..926ab7a 100755 +--- a/include/PluginServer/PluginOptBase.h ++++ b/include/PluginServer/PluginOptBase.h +@@ -74,9 +74,9 @@ public: + } + + private: +- mlir::MLIRContext context; + InjectPoint inject; + uint64_t func; // 保存managerSetup fun参数指针 ++ mlir::MLIRContext context; + }; + } // namespace PluginOpt + #endif +diff --git a/include/PluginServer/PluginServer.h b/include/PluginServer/PluginServer.h +index b44c1d6..1420604 100644 +--- a/include/PluginServer/PluginServer.h ++++ b/include/PluginServer/PluginServer.h +@@ -98,8 +98,51 @@ private: + std::shared_ptr opt; + }; + ++class ServerCommand { ++public: ++ ServerCommand() = default; ++ ~ServerCommand() = default; ++ ServerCommand(const string& input, const string& dir, const string& common, ++ const string& extra, const string& output) { ++ this->input = input; ++ this->dir = dir; ++ this->common = common; ++ this->extra = extra; ++ this->output = output; ++ } ++ ++ void SetInput(const string& input) { this->input = input; } ++ void SetDir(const string& dir) { this->dir = dir; } ++ void SetCommon(const string& common) { this->common = common; } ++ void SetExtra(const string& extra) { this->extra = extra; } ++ void SetOutput(const string& output) { this->output = output; } ++ ++ string GetInput() { return this->input; } ++ string GetDir() { return this->dir; } ++ string GetCommon() { return this->common; } ++ string GetExtra() { return this->extra; } ++ string GetOutput() { return this->output; } ++private: ++ string input; ++ string dir; ++ string common; ++ string extra; ++ string output; ++}; ++ + class PluginServer { + public: ++ void SetServerCommand( ++ const string& input, const string& dir, const string& common, ++ const string& extra, const string& output) { ++ this->serverCMD.SetInput(input); ++ this->serverCMD.SetDir(dir); ++ this->serverCMD.SetCommon(common); ++ this->serverCMD.SetExtra(extra); ++ this->serverCMD.SetOutput(output); ++ } ++ ServerCommand GetServerCommand() { return this->serverCMD; } ++ + PluginServer(LogPriority priority, const string& port) + { + userFunState = STATE_WAIT_BEGIN; +@@ -281,6 +324,7 @@ public: + void RemoteCallClientWithAPI(const string& api, const string& params); + + private: ++ ServerCommand serverCMD; + /* 用户函数执行状态,client返回结果后为STATE_RETURN,开始执行下一个函数 */ + volatile UserFunStateEnum userFunState; + mlir::MLIRContext *context; +diff --git a/lib/PluginAPI/PluginServerAPI.cpp b/lib/PluginAPI/PluginServerAPI.cpp +index fc36b62..11a6537 100644 +--- a/lib/PluginAPI/PluginServerAPI.cpp ++++ b/lib/PluginAPI/PluginServerAPI.cpp +@@ -481,6 +481,11 @@ llvm::SmallVector PluginServerAPI::GetFields(uint64_t + return PluginServer::GetInstance()->GetFieldsResult(funName, params); + } + ++void PluginServerAPI::ShutdownCompile() { ++ string funName = __func__; ++ PluginServer::GetInstance()->RemoteCallClientWithAPI(funName, ""); ++} ++ + void PluginServerAPI::SetDeclName(uint64_t newfieldId, uint64_t fieldId) + { + Json::Value root; +diff --git a/lib/PluginServer/main.cpp b/lib/PluginServer/main.cpp +index 333d55e..669d5e4 100644 +--- a/lib/PluginServer/main.cpp ++++ b/lib/PluginServer/main.cpp +@@ -24,7 +24,7 @@ using namespace PinServer; + + int main(int argc, char** argv) + { +- const int argcNum = 2; // 参数只有2个,argv[0]:port argv[1]:log级别 ++ const int argcNum = 7; + if (argc != argcNum) { + printf("param num:%d, should be:%d\n", argc, argcNum); + return -1; +@@ -32,6 +32,7 @@ int main(int argc, char** argv) + std::string port = argv[0]; + LogPriority priority = (LogPriority)atoi(argv[1]); + PluginServer server(priority, port); ++ server.SetServerCommand(argv[2], argv[3], argv[4], argv[5], argv[6]); + server.RunServer(); + return 0; +-} +\ No newline at end of file ++} +-- +2.33.0 + diff --git a/pin-server.spec b/pin-server.spec index 258d6f6..ff31449 100644 --- a/pin-server.spec +++ b/pin-server.spec @@ -1,6 +1,6 @@ Name: pin-server Version: 0.4.0 -Release: 16 +Release: 17 Summary: Pin (Plug-IN framework) server provides plugin APIs for compiler optimization developers to develop optimization pass. License: Apache 2.0 URL: https://gitee.com/openeuler/pin-server @@ -44,6 +44,7 @@ Patch31: 0031-Pin-Server-Added-null-pointer-check-to-avoid-potenti.patch Patch32: 0032-Pin-server-Bugfix-for-the-operation-sequence-of-user.patch Patch33: 0033-Pin-server-Add-DataFlow-APIs.patch Patch34: 0034-MLIR17-Adaptation-to-llvm17-mlir17.patch +Patch35: 0035-PluginServer-Add-class-for-Server-Command.patch %description Pin (Plug-IN framework) server provides plugin APIs for compiler optimization developers to develop optimization pass. @@ -98,6 +99,12 @@ find %{_libdir} -type f -name "libMLIRServerAPI.so" -exec strip "{}" ";" %config(noreplace) /etc/ld.so.conf.d/%{name}-%{_arch}.conf %changelog +* Fri May 23 2025 wumingchuan - 0.4.0-17 +- Type:Update +- ID:NA +- SUG:NA +- DESC:Add class for Server Command. + * Tue Apr 09 2024 wumingchuan - 0.4.0-16 - Type:FIX - ID:NA -- Gitee