From 41461bdddc0e581b01bf87c976ec414f07d87956 Mon Sep 17 00:00:00 2001 From: Denis Angell Date: Fri, 17 Mar 2023 17:13:18 +0000 Subject: [PATCH] patch: m1/llvm4 --- Builds/CMake/deps/WasmEdge.cmake | 5 + src/ripple/app/tx/impl/Invoke.cpp | 4 +- src/ripple/app/tx/impl/SetHook.cpp | 2 +- src/ripple/rpc/handlers/ServerInfo.cpp | 486 ++++++++++++------------- 4 files changed, 251 insertions(+), 246 deletions(-) diff --git a/Builds/CMake/deps/WasmEdge.cmake b/Builds/CMake/deps/WasmEdge.cmake index fd6f51a7a..75870b6bc 100644 --- a/Builds/CMake/deps/WasmEdge.cmake +++ b/Builds/CMake/deps/WasmEdge.cmake @@ -2,6 +2,8 @@ NIH dep: wasmedge: web assembly runtime for hooks. #]===================================================================] +find_package(Curses REQUIRED) +include_directories(${CURSES_INCLUDE_DIR}) find_package(LLVM REQUIRED CONFIG) message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}") @@ -24,6 +26,7 @@ ExternalProject_Add (wasmedge_src -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DLLVM_DIR=${LLVM_DIR} -DLLVM_LIBRARY_DIR=${LLVM_LIBRARY_DIR} + -DLLVM_ENABLE_TERMINFO=OFF $<$>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}> $<$: "-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP -march=native" @@ -63,4 +66,6 @@ set_target_properties (wasmedge PROPERTIES "${wasmedge_src_BINARY_DIR}/include/api/" ) target_link_libraries (ripple_libs INTERFACE wasmedge) +target_link_libraries(ripple_libs INTERFACE ${CURSES_LIBRARY}) +target_link_libraries(ripple_libs INTERFACE xar) add_library (NIH::WasmEdge ALIAS wasmedge) diff --git a/src/ripple/app/tx/impl/Invoke.cpp b/src/ripple/app/tx/impl/Invoke.cpp index e9801adca..71fbb3551 100644 --- a/src/ripple/app/tx/impl/Invoke.cpp +++ b/src/ripple/app/tx/impl/Invoke.cpp @@ -79,7 +79,7 @@ Invoke::calculateBaseFee(ReadView const& view, STTx const& tx) XRPAmount extraFee{0}; if (tx.isFieldPresent(sfBlob)) - extraFee += XRPAmount{ tx.getFieldVL(sfBlob).size() }; + extraFee += XRPAmount{ static_cast(tx.getFieldVL(sfBlob).size()) }; if (tx.isFieldPresent(sfHookParameters)) { @@ -93,7 +93,7 @@ Invoke::calculateBaseFee(ReadView const& view, STTx const& tx) (param.isFieldPresent(sfHookParameterValue) ? param.getFieldVL(sfHookParameterValue).size() : 0); } - extraFee += XRPAmount { paramBytes }; + extraFee += XRPAmount { static_cast(paramBytes) }; } return Transactor::calculateBaseFee(view, tx) + extraFee; diff --git a/src/ripple/app/tx/impl/SetHook.cpp b/src/ripple/app/tx/impl/SetHook.cpp index 05e19a914..e948f0070 100644 --- a/src/ripple/app/tx/impl/SetHook.cpp +++ b/src/ripple/app/tx/impl/SetHook.cpp @@ -547,7 +547,7 @@ SetHook::calculateBaseFee(ReadView const& view, STTx const& tx) (param.isFieldPresent(sfHookParameterValue) ? param.getFieldVL(sfHookParameterValue).size() : 0); } - extraFee += XRPAmount { paramBytes }; + extraFee += XRPAmount { static_cast(paramBytes) }; } } diff --git a/src/ripple/rpc/handlers/ServerInfo.cpp b/src/ripple/rpc/handlers/ServerInfo.cpp index 5586aeb6b..5c537b98e 100644 --- a/src/ripple/rpc/handlers/ServerInfo.cpp +++ b/src/ripple/rpc/handlers/ServerInfo.cpp @@ -69,281 +69,281 @@ private: Json::Value ret{Json::objectValue}; ret[jss::TYPES] = Json::objectValue; - auto const translate = [](std::string inp) -> std::string { - auto replace = [&](const char* f, const char* r) -> std::string { - std::string out = inp; - boost::replace_all(out, f, r); - return out; - }; + // auto const translate = [](std::string inp) -> std::string { + // auto replace = [&](const char* f, const char* r) -> std::string { + // std::string out = inp; + // boost::replace_all(out, f, r); + // return out; + // }; - auto find = [&](const char* s) -> bool { - return inp.find(s) != std::string::npos; - }; + // auto find = [&](const char* s) -> bool { + // return inp.find(s) != std::string::npos; + // }; - if (find("UINT")) - { - if (find("256") || find("160") || find("128")) - return replace("UINT", "Hash"); - else - return replace("UINT", "UInt"); - } + // if (find("UINT")) + // { + // if (find("256") || find("160") || find("128")) + // return replace("UINT", "Hash"); + // else + // return replace("UINT", "UInt"); + // } - if (inp == "OBJECT") - return "STObject"; - if (inp == "ARRAY") - return "STArray"; - if (inp == "AMM") - return "AMM"; - if (inp == "ACCOUNT") - return "AccountID"; - if (inp == "LEDGERENTRY") - return "LedgerEntry"; - if (inp == "NOTPRESENT") - return "NotPresent"; - if (inp == "PATHSET") - return "PathSet"; - if (inp == "VL") - return "Blob"; - if (inp == "DIR_NODE") - return "DirectoryNode"; - if (inp == "PAYCHAN") - return "PayChannel"; + // if (inp == "OBJECT") + // return "STObject"; + // if (inp == "ARRAY") + // return "STArray"; + // if (inp == "AMM") + // return "AMM"; + // if (inp == "ACCOUNT") + // return "AccountID"; + // if (inp == "LEDGERENTRY") + // return "LedgerEntry"; + // if (inp == "NOTPRESENT") + // return "NotPresent"; + // if (inp == "PATHSET") + // return "PathSet"; + // if (inp == "VL") + // return "Blob"; + // if (inp == "DIR_NODE") + // return "DirectoryNode"; + // if (inp == "PAYCHAN") + // return "PayChannel"; - static const std::map - capitalization_exceptions = { - {"NFTOKEN", "NFToken"}, - {"UNL", "UNL"}, - {"XCHAIN", "XChain"}, - {"ID", "ID"}, - {"AMM", "AMM"}, - {"URITOKEN", "URIToken"}, - {"URI", "URI"}}; + // static const std::map + // capitalization_exceptions = { + // {"NFTOKEN", "NFToken"}, + // {"UNL", "UNL"}, + // {"XCHAIN", "XChain"}, + // {"ID", "ID"}, + // {"AMM", "AMM"}, + // {"URITOKEN", "URIToken"}, + // {"URI", "URI"}}; - std::string out; - size_t pos = 0; - for (;;) - { - pos = inp.find("_"); - if (pos == std::string::npos) - pos = inp.size(); - std::string token = inp.substr(0, pos); - if (auto const e = capitalization_exceptions.find(token); - e != capitalization_exceptions.end()) - out += e->second; - else if (token.size() > 1) - { - boost::algorithm::to_lower(token); - token.data()[0] -= ('a' - 'A'); - out += token; - } - else - out += token; - if (pos == inp.size()) - break; - inp = inp.substr(pos + 1); - } - return out; - }; + // std::string out; + // size_t pos = 0; + // for (;;) + // { + // pos = inp.find("_"); + // if (pos == std::string::npos) + // pos = inp.size(); + // std::string token = inp.substr(0, pos); + // if (auto const e = capitalization_exceptions.find(token); + // e != capitalization_exceptions.end()) + // out += e->second; + // else if (token.size() > 1) + // { + // boost::algorithm::to_lower(token); + // token.data()[0] -= ('a' - 'A'); + // out += token; + // } + // else + // out += token; + // if (pos == inp.size()) + // break; + // inp = inp.substr(pos + 1); + // } + // return out; + // }; - ret[jss::TYPES]["Done"] = -1; - std::map type_map{{-1, "Done"}}; - for (auto [value, name] : magic_enum::enum_entries()) - { - std::string type_name = - translate(STR(name).substr(4) /* remove STI_ */); - int32_t type_value = std::stoi(STR(value)); - ret[jss::TYPES][type_name] = type_value; - type_map[type_value] = type_name; - } + // ret[jss::TYPES]["Done"] = -1; + // std::map type_map{{-1, "Done"}}; + // for (auto [value, name] : magic_enum::enum_entries()) + // { + // std::string type_name = + // translate(STR(name).substr(4) /* remove STI_ */); + // int32_t type_value = std::stoi(STR(value)); + // ret[jss::TYPES][type_name] = type_value; + // type_map[type_value] = type_name; + // } - ret[jss::LEDGER_ENTRY_TYPES] = Json::objectValue; - ret[jss::LEDGER_ENTRY_TYPES][jss::Invalid] = -1; + // ret[jss::LEDGER_ENTRY_TYPES] = Json::objectValue; + // ret[jss::LEDGER_ENTRY_TYPES][jss::Invalid] = -1; - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::LEDGER_ENTRY_TYPES] - [translate(STR(name).substr(2) /* remove lt_ */)] = - std::stoi(STR(value)); + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::LEDGER_ENTRY_TYPES] + // [translate(STR(name).substr(2) /* remove lt_ */)] = + // std::stoi(STR(value)); - ret[jss::FIELDS] = Json::arrayValue; + // ret[jss::FIELDS] = Json::arrayValue; - uint32_t i = 0; - { - Json::Value a = Json::arrayValue; - a[0U] = "Generic"; - Json::Value v = Json::objectValue; - v[jss::nth] = 0; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = false; - v[jss::type] = "Unknown"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // uint32_t i = 0; + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "Generic"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 0; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = false; + // v[jss::type] = "Unknown"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "Invalid"; - Json::Value v = Json::objectValue; - v[jss::nth] = -1; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = false; - v[jss::type] = "Unknown"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "Invalid"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = -1; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = false; + // v[jss::type] = "Unknown"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "ObjectEndMarker"; - Json::Value v = Json::objectValue; - v[jss::nth] = 1; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = true; - v[jss::type] = "STObject"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "ObjectEndMarker"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 1; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = true; + // v[jss::type] = "STObject"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "ArrayEndMarker"; - Json::Value v = Json::objectValue; - v[jss::nth] = 1; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = true; - v[jss::type] = "STArray"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "ArrayEndMarker"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 1; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = true; + // v[jss::type] = "STArray"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "hash"; - Json::Value v = Json::objectValue; - v[jss::nth] = 257; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = false; - v[jss::type] = "Hash256"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "hash"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 257; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = false; + // v[jss::type] = "Hash256"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "index"; - Json::Value v = Json::objectValue; - v[jss::nth] = 258; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = false; - v[jss::type] = "Hash256"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "index"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 258; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = false; + // v[jss::type] = "Hash256"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "taker_gets_funded"; - Json::Value v = Json::objectValue; - v[jss::nth] = 258; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = false; - v[jss::type] = "Amount"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "taker_gets_funded"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 258; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = false; + // v[jss::type] = "Amount"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - { - Json::Value a = Json::arrayValue; - a[0U] = "taker_pays_funded"; - Json::Value v = Json::objectValue; - v[jss::nth] = 259; - v[jss::isVLEncoded] = false; - v[jss::isSerialized] = false; - v[jss::isSigningField] = false; - v[jss::type] = "Amount"; - a[1U] = v; - ret[jss::FIELDS][i++] = a; - } + // { + // Json::Value a = Json::arrayValue; + // a[0U] = "taker_pays_funded"; + // Json::Value v = Json::objectValue; + // v[jss::nth] = 259; + // v[jss::isVLEncoded] = false; + // v[jss::isSerialized] = false; + // v[jss::isSigningField] = false; + // v[jss::type] = "Amount"; + // a[1U] = v; + // ret[jss::FIELDS][i++] = a; + // } - for (auto const& [code, f] : ripple::SField::knownCodeToField) - { - if (f->fieldName == "") - continue; + // for (auto const& [code, f] : ripple::SField::knownCodeToField) + // { + // if (f->fieldName == "") + // continue; - Json::Value innerObj = Json::objectValue; + // Json::Value innerObj = Json::objectValue; - uint32_t fc = code & 0xFFU; - uint32_t tc = code >> 16U; + // uint32_t fc = code & 0xFFU; + // uint32_t tc = code >> 16U; - innerObj[jss::nth] = fc; + // innerObj[jss::nth] = fc; - innerObj[jss::isVLEncoded] = - (tc == 7U /* Blob */ || tc == 8U /* AccountID */ || - tc == 19U /* Vector256 */); + // innerObj[jss::isVLEncoded] = + // (tc == 7U /* Blob */ || tc == 8U /* AccountID */ || + // tc == 19U /* Vector256 */); - innerObj[jss::isSerialized] = - (tc < - 10000); /* TRANSACTION, LEDGER_ENTRY, VALIDATION, METADATA */ + // innerObj[jss::isSerialized] = + // (tc < + // 10000); /* TRANSACTION, LEDGER_ENTRY, VALIDATION, METADATA */ - innerObj[jss::isSigningField] = f->shouldInclude(false); + // innerObj[jss::isSigningField] = f->shouldInclude(false); - innerObj[jss::type] = type_map[tc]; + // innerObj[jss::type] = type_map[tc]; - Json::Value innerArray = Json::arrayValue; - innerArray[0U] = f->fieldName; - innerArray[1U] = innerObj; + // Json::Value innerArray = Json::arrayValue; + // innerArray[0U] = f->fieldName; + // innerArray[1U] = innerObj; - ret[jss::FIELDS][i++] = innerArray; - } + // ret[jss::FIELDS][i++] = innerArray; + // } - ret[jss::TRANSACTION_RESULTS] = Json::objectValue; - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); + // ret[jss::TRANSACTION_RESULTS] = Json::objectValue; + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value)); - auto const translate_tt = [](std::string inp) -> std::string { - if (inp == "PaychanClaim") - return "PaymentChannelClaim"; - if (inp == "PaychanCreate") - return "PaymentChannelCreate"; - if (inp == "PaychanFund") - return "PaymentChannelFund"; - if (inp == "RegularKeySet") - return "SetRegularKey"; - if (inp == "HookSet") - return "SetHook"; - return inp; - }; + // auto const translate_tt = [](std::string inp) -> std::string { + // if (inp == "PaychanClaim") + // return "PaymentChannelClaim"; + // if (inp == "PaychanCreate") + // return "PaymentChannelCreate"; + // if (inp == "PaychanFund") + // return "PaymentChannelFund"; + // if (inp == "RegularKeySet") + // return "SetRegularKey"; + // if (inp == "HookSet") + // return "SetHook"; + // return inp; + // }; - ret[jss::TRANSACTION_TYPES] = Json::objectValue; - ret[jss::TRANSACTION_TYPES][jss::Invalid] = -1; - for (auto [value, name] : magic_enum::enum_entries()) - ret[jss::TRANSACTION_TYPES][translate_tt(translate(STR(name).substr(2)))] = - std::stoi(STR(value)); + // ret[jss::TRANSACTION_TYPES] = Json::objectValue; + // ret[jss::TRANSACTION_TYPES][jss::Invalid] = -1; + // for (auto [value, name] : magic_enum::enum_entries()) + // ret[jss::TRANSACTION_TYPES][translate_tt(translate(STR(name).substr(2)))] = + // std::stoi(STR(value)); - // generate hash - { - const std::string out = Json::FastWriter().write(ret); - defsHash = - ripple::sha512Half(ripple::Slice{out.data(), out.size()}); - ret[jss::hash] = to_string(*defsHash); - } + // // generate hash + // { + // const std::string out = Json::FastWriter().write(ret); + // defsHash = + // ripple::sha512Half(ripple::Slice{out.data(), out.size()}); + // ret[jss::hash] = to_string(*defsHash); + // } return ret; }