--- third_party/perfetto/src/base/utils.cc.orig 2025-05-07 06:48:23 UTC +++ third_party/perfetto/src/base/utils.cc @@ -38,7 +38,8 @@ #include #endif -#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ +#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) #include @@ -279,14 +280,22 @@ void Daemonize(std::function parent_cb) { std::string GetCurExecutablePath() { std::string self_path; -#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ +#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ - PERFETTO_BUILDFLAG(PERFETTO_OS_FUCHSIA) + PERFETTO_BUILDFLAG(PERFETTO_OS_FUCHSIA)) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD) char buf[PATH_MAX]; ssize_t size = readlink("/proc/self/exe", buf, sizeof(buf)); PERFETTO_CHECK(size != -1); // readlink does not null terminate. self_path = std::string(buf, static_cast(size)); +#elif PERFETTO_BUILDFLAG(PERFETTO_OS_BSD) + char *buf; + const char *cpath = "/usr/local/chrome/chrome"; + if ((buf = getenv("CHROME_EXE_PATH")) != NULL) + self_path = std::string(buf); + else + self_path = std::string(cpath); #elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) uint32_t size = 0; PERFETTO_CHECK(_NSGetExecutablePath(nullptr, &size)); @@ -338,7 +347,8 @@ void AlignedFree(void* ptr) { } bool IsSyncMemoryTaggingEnabled() { -#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) || \ +#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX_BUT_NOT_QNX) && \ + !PERFETTO_BUILDFLAG(PERFETTO_OS_BSD)) || \ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) // Compute only once per lifetime of the process. static bool cached_value = [] {