blob: c0aa10bdb0ee2db28b8e6838c2740b01424a2eb9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
--- third_party/perfetto/src/base/utils.cc.orig 2025-04-22 20:15:27 UTC
+++ third_party/perfetto/src/base/utils.cc
@@ -38,7 +38,8 @@
#include <mach/vm_page_size.h>
#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 <sys/prctl.h>
@@ -279,14 +280,22 @@ std::string GetCurExecutablePath() {
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_t>(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 @@ bool IsSyncMemoryTaggingEnabled() {
}
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 = [] {
|