$NetBSD$ * Part of patchset to build chromium on NetBSD * Based on OpenBSD's chromium patches, and pkgsrc's qt5-qtwebengine patches --- third_party/perfetto/src/base/unix_socket.cc.orig 2025-09-08 23:21:33.000000000 +0000 +++ third_party/perfetto/src/base/unix_socket.cc @@ -45,7 +45,7 @@ #include #endif -#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) +#if PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) || defined(__FreeBSD__) || defined(__NetBSD__) #include #endif @@ -1031,15 +1031,27 @@ void UnixSocket::ReadPeerCredentialsPosi int res = getpeereid(fd, &peer_uid_, nullptr); PERFETTO_CHECK(res == 0); // There is no pid when obtaining peer credentials for QNX -#elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ +#elif !defined(__FreeBSD__) && !defined(__NetBSD__) && PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) +#if PERFETTO_BUILDFLAG(PERFETTO_OS_BSD) + struct sockpeercred user_cred; +#else struct ucred user_cred; +#endif socklen_t len = sizeof(user_cred); int fd = sock_raw_.fd(); int res = getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &user_cred, &len); PERFETTO_CHECK(res == 0); peer_uid_ = user_cred.uid; peer_pid_ = user_cred.pid; +#elif defined(__NetBSD__) + struct unpcbid user_cred; + socklen_t len = sizeof(user_cred); + int fd = sock_raw_.fd(); + int res = getsockopt(fd, 0, LOCAL_PEEREID, &user_cred, &len); + PERFETTO_CHECK(res == 0); + peer_uid_ = user_cred.unp_euid; + peer_pid_ = user_cred.unp_pid; #elif PERFETTO_BUILDFLAG(PERFETTO_OS_APPLE) struct xucred user_cred; socklen_t len = sizeof(user_cred);