diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn index 494ba22f2934d6..7efbe319fd8cca 100644 --- a/deps/v8/BUILD.gn +++ b/deps/v8/BUILD.gn @@ -39,6 +39,9 @@ declare_args() { # Embeds the given script into the snapshot. v8_embed_script = "" + # Allows the embedder to add a custom suffix to the version string. + v8_embedder_string = "" + # Sets -dENABLE_DISASSEMBLER. v8_enable_disassembler = "" @@ -217,6 +220,9 @@ config("features") { defines = [] + if (v8_embedder_string != "") { + defines += [ "V8_EMBEDDER_STRING=\"$v8_embedder_string\"" ] + } if (v8_enable_disassembler) { defines += [ "ENABLE_DISASSEMBLER" ] } diff --git a/deps/v8/gypfiles/features.gypi b/deps/v8/gypfiles/features.gypi index 0eeec2466ebc51..a17dc556e6bc7e 100644 --- a/deps/v8/gypfiles/features.gypi +++ b/deps/v8/gypfiles/features.gypi @@ -29,6 +29,9 @@ { 'variables': { + # Allows the embedder to add a custom suffix to the version string. + 'v8_embedder_string%': '', + 'v8_enable_disassembler%': 0, 'v8_promise_internal_field_count%': 0, @@ -79,6 +82,9 @@ }, 'target_defaults': { 'conditions': [ + ['v8_embedder_string!=""', { + 'defines': ['V8_EMBEDDER_STRING="<(v8_embedder_string)"',], + }], ['v8_enable_disassembler==1', { 'defines': ['ENABLE_DISASSEMBLER',], }], diff --git a/deps/v8/include/v8-version-string.h b/deps/v8/include/v8-version-string.h index 075282de4ca0e2..eab0934804efd4 100644 --- a/deps/v8/include/v8-version-string.h +++ b/deps/v8/include/v8-version-string.h @@ -16,6 +16,10 @@ #define V8_CANDIDATE_STRING "" #endif +#ifndef V8_EMBEDDER_STRING +#define V8_EMBEDDER_STRING "" +#endif + #define V8_SX(x) #x #define V8_S(x) V8_SX(x) @@ -23,7 +27,7 @@ #define V8_VERSION_STRING \ V8_S(V8_MAJOR_VERSION) \ "." V8_S(V8_MINOR_VERSION) "." V8_S(V8_BUILD_NUMBER) "." V8_S( \ - V8_PATCH_LEVEL) V8_CANDIDATE_STRING + V8_PATCH_LEVEL) V8_EMBEDDER_STRING V8_CANDIDATE_STRING #else #define V8_VERSION_STRING \ V8_S(V8_MAJOR_VERSION) \ diff --git a/deps/v8/src/log-utils.cc b/deps/v8/src/log-utils.cc index 7c3de0c6ca5a6a..bc471403d8d5ed 100644 --- a/deps/v8/src/log-utils.cc +++ b/deps/v8/src/log-utils.cc @@ -55,9 +55,16 @@ void Log::Initialize(const char* log_file_name) { if (output_handle_ != nullptr) { Log::MessageBuilder msg(this); - msg.Append("v8-version,%d,%d,%d,%d,%d", Version::GetMajor(), - Version::GetMinor(), Version::GetBuild(), Version::GetPatch(), - Version::IsCandidate()); + if (strlen(Version::GetEmbedder()) == 0) { + msg.Append("v8-version,%d,%d,%d,%d,%d", Version::GetMajor(), + Version::GetMinor(), Version::GetBuild(), + Version::GetPatch(), Version::IsCandidate()); + } else { + msg.Append("v8-version,%d,%d,%d,%d,%s,%d", Version::GetMajor(), + Version::GetMinor(), Version::GetBuild(), + Version::GetPatch(), Version::GetEmbedder(), + Version::IsCandidate()); + } msg.WriteToLogFile(); } } diff --git a/deps/v8/src/version.cc b/deps/v8/src/version.cc index 3252d550354ee8..b050fc9ab5ebd5 100644 --- a/deps/v8/src/version.cc +++ b/deps/v8/src/version.cc @@ -20,6 +20,7 @@ int Version::major_ = V8_MAJOR_VERSION; int Version::minor_ = V8_MINOR_VERSION; int Version::build_ = V8_BUILD_NUMBER; int Version::patch_ = V8_PATCH_LEVEL; +const char* Version::embedder_ = V8_EMBEDDER_STRING; bool Version::candidate_ = (V8_IS_CANDIDATE_VERSION != 0); const char* Version::soname_ = SONAME; const char* Version::version_string_ = V8_VERSION_STRING; @@ -33,12 +34,12 @@ void Version::GetString(Vector str) { const char* is_simulator = ""; #endif // USE_SIMULATOR if (GetPatch() > 0) { - SNPrintF(str, "%d.%d.%d.%d%s%s", - GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate, - is_simulator); + SNPrintF(str, "%d.%d.%d.%d%s%s%s", + GetMajor(), GetMinor(), GetBuild(), GetPatch(), GetEmbedder(), + candidate, is_simulator); } else { - SNPrintF(str, "%d.%d.%d%s%s", - GetMajor(), GetMinor(), GetBuild(), candidate, + SNPrintF(str, "%d.%d.%d%s%s%s", + GetMajor(), GetMinor(), GetBuild(), GetEmbedder(), candidate, is_simulator); } } @@ -50,11 +51,11 @@ void Version::GetSONAME(Vector str) { // Generate generic SONAME if no specific SONAME is defined. const char* candidate = IsCandidate() ? "-candidate" : ""; if (GetPatch() > 0) { - SNPrintF(str, "libv8-%d.%d.%d.%d%s.so", - GetMajor(), GetMinor(), GetBuild(), GetPatch(), candidate); + SNPrintF(str, "libv8-%d.%d.%d.%d%s%s.so", GetMajor(), GetMinor(), + GetBuild(), GetPatch(), GetEmbedder(), candidate); } else { - SNPrintF(str, "libv8-%d.%d.%d%s.so", - GetMajor(), GetMinor(), GetBuild(), candidate); + SNPrintF(str, "libv8-%d.%d.%d%s%s.so", GetMajor(), GetMinor(), GetBuild(), + GetEmbedder(), candidate); } } else { // Use specific SONAME. diff --git a/deps/v8/src/version.h b/deps/v8/src/version.h index 3395d7f4fe5589..20d9c71fe76661 100644 --- a/deps/v8/src/version.h +++ b/deps/v8/src/version.h @@ -18,6 +18,7 @@ class Version { static int GetMinor() { return minor_; } static int GetBuild() { return build_; } static int GetPatch() { return patch_; } + static const char* GetEmbedder() { return embedder_; } static bool IsCandidate() { return candidate_; } static uint32_t Hash() { return static_cast( @@ -38,13 +39,15 @@ class Version { static int minor_; static int build_; static int patch_; + static const char* embedder_; static bool candidate_; static const char* soname_; static const char* version_string_; // In test-version.cc. friend void SetVersion(int major, int minor, int build, int patch, - bool candidate, const char* soname); + const char* embedder, bool candidate, + const char* soname); }; } // namespace internal diff --git a/deps/v8/test/cctest/test-version.cc b/deps/v8/test/cctest/test-version.cc index 50fca16871a335..a2449d8ce7ab1e 100644 --- a/deps/v8/test/cctest/test-version.cc +++ b/deps/v8/test/cctest/test-version.cc @@ -37,11 +37,12 @@ namespace v8 { namespace internal { void SetVersion(int major, int minor, int build, int patch, - bool candidate, const char* soname) { + const char* embedder, bool candidate, const char* soname) { Version::major_ = major; Version::minor_ = minor; Version::build_ = build; Version::patch_ = patch; + Version::embedder_ = embedder; Version::candidate_ = candidate; Version::soname_ = soname; } @@ -50,15 +51,15 @@ void SetVersion(int major, int minor, int build, int patch, } // namespace v8 -static void CheckVersion(int major, int minor, int build, - int patch, bool candidate, +static void CheckVersion(int major, int minor, int build, int patch, + const char* embedder, bool candidate, const char* expected_version_string, const char* expected_generic_soname) { static v8::internal::EmbeddedVector version_str; static v8::internal::EmbeddedVector soname_str; // Test version without specific SONAME. - SetVersion(major, minor, build, patch, candidate, ""); + SetVersion(major, minor, build, patch, embedder, candidate, ""); Version::GetString(version_str); CHECK_EQ(0, strcmp(expected_version_string, version_str.start())); Version::GetSONAME(soname_str); @@ -66,7 +67,7 @@ static void CheckVersion(int major, int minor, int build, // Test version with specific SONAME. const char* soname = "libv8.so.1"; - SetVersion(major, minor, build, patch, candidate, soname); + SetVersion(major, minor, build, patch, embedder, candidate, soname); Version::GetString(version_str); CHECK_EQ(0, strcmp(expected_version_string, version_str.start())); Version::GetSONAME(soname_str); @@ -88,18 +89,34 @@ TEST(VersionString) { CheckVersion(2, 5, 10, 7, false, "2.5.10.7 SIMULATOR", "libv8-2.5.10.7.so"); CheckVersion(2, 5, 10, 7, true, "2.5.10.7 (candidate) SIMULATOR", "libv8-2.5.10.7-candidate.so"); + CheckVersion(6, 0, 287, 0, "-emb.1", false, "6.0.287-emb.1 SIMULATOR", + "libv8-6.0.287-emb.1.so"); + CheckVersion(6, 0, 287, 0, "-emb.1", true, "6.0.287-emb.1 (candidate) SIMULATOR", + "libv8-6.0.287-emb.1-candidate.so"); + CheckVersion(6, 0, 287, 53, "-emb.1", false, "6.0.287.53-emb.1 SIMULATOR", + "libv8-6.0.287.53-emb.1.so"); + CheckVersion(6, 0, 287, 53, "-emb.1", true, "6.0.287.53-emb.1 (candidate) SIMULATOR", + "libv8-6.0.287.53-emb.1-candidate.so"); #else - CheckVersion(0, 0, 0, 0, false, "0.0.0", "libv8-0.0.0.so"); - CheckVersion(0, 0, 0, 0, true, - "0.0.0 (candidate)", "libv8-0.0.0-candidate.so"); - CheckVersion(1, 0, 0, 0, false, "1.0.0", "libv8-1.0.0.so"); - CheckVersion(1, 0, 0, 0, true, - "1.0.0 (candidate)", "libv8-1.0.0-candidate.so"); - CheckVersion(1, 0, 0, 1, false, "1.0.0.1", "libv8-1.0.0.1.so"); - CheckVersion(1, 0, 0, 1, true, - "1.0.0.1 (candidate)", "libv8-1.0.0.1-candidate.so"); - CheckVersion(2, 5, 10, 7, false, "2.5.10.7", "libv8-2.5.10.7.so"); - CheckVersion(2, 5, 10, 7, true, - "2.5.10.7 (candidate)", "libv8-2.5.10.7-candidate.so"); + CheckVersion(0, 0, 0, 0, "", false, "0.0.0", "libv8-0.0.0.so"); + CheckVersion(0, 0, 0, 0, "", true, "0.0.0 (candidate)", + "libv8-0.0.0-candidate.so"); + CheckVersion(1, 0, 0, 0, "", false, "1.0.0", "libv8-1.0.0.so"); + CheckVersion(1, 0, 0, 0, "", true, "1.0.0 (candidate)", + "libv8-1.0.0-candidate.so"); + CheckVersion(1, 0, 0, 1, "", false, "1.0.0.1", "libv8-1.0.0.1.so"); + CheckVersion(1, 0, 0, 1, "", true, "1.0.0.1 (candidate)", + "libv8-1.0.0.1-candidate.so"); + CheckVersion(2, 5, 10, 7, "", false, "2.5.10.7", "libv8-2.5.10.7.so"); + CheckVersion(2, 5, 10, 7, "", true, "2.5.10.7 (candidate)", + "libv8-2.5.10.7-candidate.so"); + CheckVersion(6, 0, 287, 0, "-emb.1", false, "6.0.287-emb.1", + "libv8-6.0.287-emb.1.so"); + CheckVersion(6, 0, 287, 0, "-emb.1", true, "6.0.287-emb.1 (candidate)", + "libv8-6.0.287-emb.1-candidate.so"); + CheckVersion(6, 0, 287, 53, "-emb.1", false, "6.0.287.53-emb.1", + "libv8-6.0.287.53-emb.1.so"); + CheckVersion(6, 0, 287, 53, "-emb.1", true, "6.0.287.53-emb.1 (candidate)", + "libv8-6.0.287.53-emb.1-candidate.so"); #endif }