diff --git a/runtime/exec_utils_test.cc b/runtime/exec_utils_test.cc
index dc789aa..aa53739 100644
--- a/runtime/exec_utils_test.cc
+++ b/runtime/exec_utils_test.cc
@@ -16,16 +16,34 @@
 
 #include "exec_utils.h"
 
+#include <unistd.h>
+
 #include "android-base/stringprintf.h"
 #include "base/file_utils.h"
 #include "base/memory_tool.h"
 #include "common_runtime_test.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
 
 namespace art {
 
 std::string PrettyArguments(const char* signature);
 std::string PrettyReturnType(const char* signature);
 
+bool IsPidfdSupported() {
+#ifdef __BIONIC__
+  return true;
+#else
+  constexpr int SYS_pidfd_open = 434;
+  int pidfd = syscall(SYS_pidfd_open, getpid(), /*flags=*/0);
+  if (pidfd < 0) {
+    return false;
+  }
+  close(pidfd);
+  return true;
+#endif
+}
+
 class ExecUtilsTest : public CommonRuntimeTest {};
 
 TEST_F(ExecUtilsTest, ExecSuccess) {
@@ -44,9 +62,6 @@
 }
 
 TEST_F(ExecUtilsTest, ExecError) {
-  // This will lead to error messages in the log.
-  ScopedLogSeverity sls(LogSeverity::FATAL);
-
   std::vector<std::string> command;
   command.push_back("bogus");
   std::string error_msg;
@@ -115,6 +130,10 @@
 }
 
 TEST_F(ExecUtilsTest, ExecTimeout) {
+  if (!IsPidfdSupported()) {
+    GTEST_SKIP() << "pidfd not supported";
+  }
+
   static constexpr int kSleepSeconds = 5;
   static constexpr int kWaitSeconds = 1;
   std::vector<std::string> command = SleepCommand(kSleepSeconds);
@@ -125,6 +144,10 @@
 }
 
 TEST_F(ExecUtilsTest, ExecNoTimeout) {
+  if (!IsPidfdSupported()) {
+    GTEST_SKIP() << "pidfd not supported";
+  }
+
   static constexpr int kSleepSeconds = 1;
   static constexpr int kWaitSeconds = 5;
   std::vector<std::string> command = SleepCommand(kSleepSeconds);
@@ -134,4 +157,15 @@
   EXPECT_FALSE(timed_out);
 }
 
+TEST_F(ExecUtilsTest, ExecTimeoutNotSupported) {
+  if (IsPidfdSupported()) {
+    GTEST_SKIP() << "pidfd supported";
+  }
+
+  std::string error_msg;
+  bool timed_out;
+  ASSERT_EQ(ExecAndReturnCode({"command"}, /*timeout_sec=*/0, &timed_out, &error_msg), -1);
+  EXPECT_THAT(error_msg, testing::HasSubstr("pidfd_open failed for pid"));
+}
+
 }  // namespace art
