Refactor OS_LINUX usage for coming LaCrOs update.

We're working to decouple ChromeOS and Linux builds of Chrome.

Currently OS_CHROMEOS sets OS_LINUX, so we need to refactor
current OS_LINUX usage to make this explicit.

More information can be found at go/cros_is_linux_os_linux

BUG=chromium:1110266
TEST=manual build

Change-Id: I340bfe318ac739fd5dd313ed872cbd5d1cd7cd12
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2391116
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
GitOrigin-RevId: 3965bc7d78947b3e2932e56c7c948895858009fb
diff --git a/client/crashpad_client.h b/client/crashpad_client.h
index 3658972..5d42139 100644
--- a/client/crashpad_client.h
+++ b/client/crashpad_client.h
@@ -33,7 +33,7 @@
 #elif defined(OS_WIN)
 #include <windows.h>
 #include "util/win/scoped_handle.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include <signal.h>
 #include <ucontext.h>
 #endif
@@ -121,7 +121,7 @@
                     bool asynchronous_start,
                     const std::vector<base::FilePath>& attachments = {});
 
-#if defined(OS_ANDROID) || defined(OS_LINUX) || DOXYGEN
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || DOXYGEN
   //! \brief Retrieve the socket and process ID for the handler.
   //!
   //! `StartHandler()` must have successfully been called before calling this
@@ -166,7 +166,7 @@
   //!
   //! \return `true` on success. Otherwise `false` with a message logged.
   static bool InitializeSignalStackForThread();
-#endif  // OS_ANDROID || OS_LINUX || DOXYGEN
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS || DOXYGEN
 
 #if defined(OS_ANDROID) || DOXYGEN
   //! \brief Installs a signal handler to execute `/system/bin/app_process` and
@@ -337,7 +337,7 @@
       int socket);
 #endif  // OS_ANDROID || DOXYGEN
 
-#if defined(OS_LINUX) || defined(OS_ANDROID) || DOXYGEN
+#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_CHROMEOS) || DOXYGEN
   //! \brief Installs a signal handler to launch a handler process in reponse to
   //!     a crash.
   //!
@@ -450,7 +450,7 @@
   //!
   //! \param[in] unhandled_signals The set of unhandled signals
   void SetUnhandledSignals(const std::set<int>& unhandled_signals);
-#endif  // OS_LINUX || OS_ANDROID || DOXYGEN
+#endif  // OS_LINUX || OS_ANDROID || OS_CHROMEOS || DOXYGEN
 
 #if defined(OS_IOS) || DOXYGEN
   //! \brief Configures the process to direct its crashes to the iOS in-process
@@ -662,7 +662,7 @@
 #elif defined(OS_WIN)
   std::wstring ipc_pipe_;
   ScopedKernelHANDLE handler_start_thread_;
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   std::set<int> unhandled_signals_;
 #endif  // OS_APPLE
 
diff --git a/client/crashpad_client_linux.cc b/client/crashpad_client_linux.cc
index 117ed19..8425d77 100644
--- a/client/crashpad_client_linux.cc
+++ b/client/crashpad_client_linux.cc
@@ -411,7 +411,7 @@
       std::move(client_sock), handler_pid, &unhandled_signals_);
 }
 
-#if defined(OS_ANDROID) || defined(OS_LINUX)
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 // static
 bool CrashpadClient::GetHandlerSocket(int* sock, pid_t* pid) {
   auto signal_handler = RequestCrashDumpHandler::Get();
@@ -515,7 +515,7 @@
   }
   return true;
 }
-#endif  // OS_ANDROID || OS_LINUX
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS
 
 #if defined(OS_ANDROID)
 
diff --git a/client/crashpad_info.cc b/client/crashpad_info.cc
index 12307be..929c0df 100644
--- a/client/crashpad_info.cc
+++ b/client/crashpad_info.cc
@@ -94,7 +94,8 @@
 
 // static
 CrashpadInfo* CrashpadInfo::GetCrashpadInfo() {
-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+    defined(OS_FUCHSIA)
   // This otherwise-unused reference is used so that any module that
   // references GetCrashpadInfo() will also include the note in the
   // .note.crashpad.info section. That note in turn contains the address of
diff --git a/client/simulate_crash.h b/client/simulate_crash.h
index 68c84e5..18af98f 100644
--- a/client/simulate_crash.h
+++ b/client/simulate_crash.h
@@ -21,7 +21,7 @@
 #include "client/simulate_crash_mac.h"
 #elif defined(OS_WIN)
 #include "client/simulate_crash_win.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "client/simulate_crash_linux.h"
 #endif
 
diff --git a/handler/handler_main.cc b/handler/handler_main.cc
index c8001f4..f3730e8 100644
--- a/handler/handler_main.cc
+++ b/handler/handler_main.cc
@@ -60,7 +60,7 @@
 #include "handler/linux/cros_crash_report_exception_handler.h"
 #endif
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include <unistd.h>
 
 #include "handler/linux/crash_report_exception_handler.h"
@@ -86,9 +86,6 @@
 #include "util/win/handle.h"
 #include "util/win/initial_client_data.h"
 #include "util/win/session_end_watcher.h"
-#elif defined(OS_LINUX)
-#include "handler/linux/crash_report_exception_handler.h"
-#include "handler/linux/exception_handler_server.h"
 #endif  // OS_APPLE
 
 namespace crashpad {
@@ -125,9 +122,9 @@
 "                            Address_debug_critical_section\n"
 "                              use precreated data to register initial client\n"
 #endif  // OS_WIN
-#if defined(OS_ANDROID) || defined(OS_LINUX)
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
 "      --initial-client-fd=FD  a socket connected to a client.\n"
-#endif  // OS_ANDROID || OS_LINUX
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS
 #if defined(OS_APPLE)
 "      --mach-service=SERVICE  register SERVICE with the bootstrap server\n"
 #endif  // OS_APPLE
@@ -154,7 +151,7 @@
 "      --reset-own-crash-exception-port-to-system-default\n"
 "                              reset the server's exception handler to default\n"
 #endif  // OS_APPLE
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 "      --sanitization-information=SANITIZATION_INFORMATION_ADDRESS\n"
 "                              the address of a SanitizationInformation struct.\n"
 "      --shared-client-connection the file descriptor provided by\n"
@@ -162,7 +159,7 @@
 "                              clients\n"
 "      --trace-parent-with-exception=EXCEPTION_INFORMATION_ADDRESS\n"
 "                              request a dump for the handler's parent process\n"
-#endif  // OS_LINUX || OS_ANDROID
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID
 "      --url=URL               send crash reports to this Breakpad server URL,\n"
 "                              only if uploads are enabled for the database\n"
 #if defined(OS_CHROMEOS)
@@ -197,7 +194,7 @@
   std::string mach_service;
   int handshake_fd;
   bool reset_own_crash_exception_port_to_system_default;
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   VMAddress exception_information_address;
   VMAddress sanitization_information_address;
   int initial_client_fd;
@@ -280,7 +277,8 @@
   DISALLOW_COPY_AND_ASSIGN(CallMetricsRecordNormalExit);
 };
 
-#if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_APPLE) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+  defined(OS_ANDROID)
 
 void HandleCrashSignal(int sig, siginfo_t* siginfo, void* context) {
   MetricsRecordExit(Metrics::LifetimeMilestone::kCrashed);
@@ -539,9 +537,9 @@
 #if defined(OS_WIN)
     kOptionInitialClientData,
 #endif  // OS_WIN
-#if defined(OS_ANDROID) || defined(OS_LINUX)
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
     kOptionInitialClientFD,
-#endif  // OS_ANDROID || OS_LINUX
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS
 #if defined(OS_APPLE)
     kOptionMachService,
 #endif  // OS_APPLE
@@ -562,7 +560,7 @@
 #if defined(OS_APPLE)
     kOptionResetOwnCrashExceptionPortToSystemDefault,
 #endif  // OS_APPLE
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
     kOptionSanitizationInformation,
     kOptionSharedClientConnection,
     kOptionTraceParentWithException,
@@ -597,9 +595,9 @@
      nullptr,
      kOptionInitialClientData},
 #endif  // OS_APPLE
-#if defined(OS_ANDROID) || defined(OS_LINUX)
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
     {"initial-client-fd", required_argument, nullptr, kOptionInitialClientFD},
-#endif  // OS_ANDROID || OS_LINUX
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS
 #if defined(OS_APPLE)
     {"mach-service", required_argument, nullptr, kOptionMachService},
 #endif  // OS_APPLE
@@ -635,7 +633,7 @@
      nullptr,
      kOptionResetOwnCrashExceptionPortToSystemDefault},
 #endif  // OS_APPLE
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
     {"sanitization-information",
      required_argument,
      nullptr,
@@ -648,7 +646,7 @@
      required_argument,
      nullptr,
      kOptionTraceParentWithException},
-#endif  // OS_LINUX || OS_ANDROID
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID
     {"url", required_argument, nullptr, kOptionURL},
 #if defined(OS_CHROMEOS)
     {"use-cros-crash-reporter",
@@ -677,7 +675,7 @@
   options.handshake_fd = -1;
 #endif
   options.identify_client_via_url = true;
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   options.initial_client_fd = kInvalidFileHandle;
 #endif
   options.periodic_tasks = true;
@@ -733,7 +731,7 @@
         break;
       }
 #endif  // OS_WIN
-#if defined(OS_ANDROID) || defined(OS_LINUX)
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
       case kOptionInitialClientFD: {
         if (!base::StringToInt(optarg, &options.initial_client_fd)) {
           ToolSupport::UsageHint(me, "failed to parse --initial-client-fd");
@@ -741,7 +739,7 @@
         }
         break;
       }
-#endif  // OS_ANDROID || OS_LINUX
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS
       case kOptionMetrics: {
         options.metrics_dir = base::FilePath(
             ToolSupport::CommandLineArgumentToFilePathStringType(optarg));
@@ -797,7 +795,7 @@
         break;
       }
 #endif  // OS_APPLE
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
       case kOptionSanitizationInformation: {
         if (!StringToNumber(optarg,
                             &options.sanitization_information_address)) {
@@ -819,7 +817,7 @@
         }
         break;
       }
-#endif  // OS_LINUX || OS_ANDROID
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID
       case kOptionURL: {
         options.url = optarg;
         break;
@@ -885,7 +883,7 @@
         me, "--initial-client-data and --pipe-name are incompatible");
     return ExitFailure();
   }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   if (!options.exception_information_address &&
       options.initial_client_fd == kInvalidFileHandle) {
     ToolSupport::UsageHint(
@@ -978,7 +976,7 @@
     upload_thread.Get()->Start();
   }
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   std::unique_ptr<ExceptionHandlerServer::Delegate> exception_handler;
 #else
   std::unique_ptr<CrashReportExceptionHandler> exception_handler;
@@ -1029,7 +1027,7 @@
       user_stream_sources);
 #endif  // OS_CHROMEOS
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   if (options.exception_information_address) {
     ExceptionHandlerProtocol::ClientInformation info;
     info.exception_information_address = options.exception_information_address;
@@ -1039,7 +1037,7 @@
                ? EXIT_SUCCESS
                : ExitFailure();
   }
-#endif  // OS_LINUX || OS_ANDROID
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID
 
   ScopedStoppable prune_thread;
   if (options.periodic_tasks) {
@@ -1101,7 +1099,7 @@
   if (!options.pipe_name.empty()) {
     exception_handler_server.SetPipeName(base::UTF8ToUTF16(options.pipe_name));
   }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   ExceptionHandlerServer exception_handler_server;
 #endif  // OS_APPLE
 
@@ -1123,7 +1121,7 @@
     exception_handler_server.InitializeWithInheritedDataForInitialClient(
         options.initial_client_data, exception_handler.get());
   }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   if (options.initial_client_fd == kInvalidFileHandle ||
       !exception_handler_server.InitializeWithClient(
           ScopedFileHandle(options.initial_client_fd),
diff --git a/minidump/minidump_misc_info_writer.cc b/minidump/minidump_misc_info_writer.cc
index 1343560..45665d1 100644
--- a/minidump/minidump_misc_info_writer.cc
+++ b/minidump/minidump_misc_info_writer.cc
@@ -103,7 +103,7 @@
   static constexpr char kOS[] = "mac";
 #elif defined(OS_ANDROID)
   static constexpr char kOS[] = "android";
-#elif defined(OS_LINUX)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
   static constexpr char kOS[] = "linux";
 #elif defined(OS_WIN)
   static constexpr char kOS[] = "win";
diff --git a/snapshot/crashpad_types/crashpad_info_reader.cc b/snapshot/crashpad_types/crashpad_info_reader.cc
index 9d0c781..cedab59 100644
--- a/snapshot/crashpad_types/crashpad_info_reader.cc
+++ b/snapshot/crashpad_types/crashpad_info_reader.cc
@@ -22,7 +22,7 @@
 
 #if defined(OS_WIN)
 #include "util/win/traits.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "util/linux/traits.h"
 #elif defined(OS_FUCHSIA)
 #include "util/fuchsia/traits.h"
diff --git a/snapshot/elf/elf_image_reader_test.cc b/snapshot/elf/elf_image_reader_test.cc
index 34235a7..63da92a 100644
--- a/snapshot/elf/elf_image_reader_test.cc
+++ b/snapshot/elf/elf_image_reader_test.cc
@@ -35,7 +35,7 @@
 
 #include "base/fuchsia/fuchsia_logging.h"
 
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 
 #include "test/linux/fake_ptrace_connection.h"
 #include "util/linux/auxiliary_vector.h"
@@ -84,7 +84,7 @@
   *elf_address = base;
 }
 
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 
 void LocateExecutable(PtraceConnection* connection,
                       ProcessMemory* memory,
@@ -133,7 +133,7 @@
   ASSERT_TRUE(range.Initialize(&memory, am_64_bit));
 
   VMAddress elf_address;
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   FakePtraceConnection connection;
   ASSERT_TRUE(connection.Initialize(process));
   LocateExecutable(&connection, &memory, &elf_address);
diff --git a/snapshot/sanitized/process_snapshot_sanitized_test.cc b/snapshot/sanitized/process_snapshot_sanitized_test.cc
index 26bd8d7..931f5cb 100644
--- a/snapshot/sanitized/process_snapshot_sanitized_test.cc
+++ b/snapshot/sanitized/process_snapshot_sanitized_test.cc
@@ -26,7 +26,7 @@
 #include "util/misc/address_sanitizer.h"
 #include "util/numeric/safe_assignment.h"
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include <sys/syscall.h>
 
 #include "snapshot/linux/process_snapshot_linux.h"
diff --git a/test/multiprocess_exec_posix.cc b/test/multiprocess_exec_posix.cc
index 59aad82..e14a3b8 100644
--- a/test/multiprocess_exec_posix.cc
+++ b/test/multiprocess_exec_posix.cc
@@ -26,7 +26,7 @@
 #include "util/misc/scoped_forbid_return.h"
 #include "util/posix/close_multiple.h"
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 #include <stdio_ext.h>
 #endif
 
@@ -90,7 +90,7 @@
 
   int rv;
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
   __fpurge(stdin);
 #else
   rv = fpurge(stdin);
diff --git a/test/multiprocess_posix.cc b/test/multiprocess_posix.cc
index 782d5ba..c16aa08 100644
--- a/test/multiprocess_posix.cc
+++ b/test/multiprocess_posix.cc
@@ -143,7 +143,7 @@
     if (exception_swallower.get()) {
       ExceptionSwallower::SwallowExceptions();
     }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
     if (reason_ == kTerminationSignal && Signals::IsCrashSignal(code_)) {
       Signals::InstallDefaultHandler(code_);
     }
diff --git a/test/process_type.cc b/test/process_type.cc
index ac0b865..f6eec36 100644
--- a/test/process_type.cc
+++ b/test/process_type.cc
@@ -16,7 +16,7 @@
 
 #if defined(OS_FUCHSIA)
 #include <lib/zx/process.h>
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include <unistd.h>
 #endif
 
@@ -26,7 +26,7 @@
 ProcessType GetSelfProcess() {
 #if defined(OS_FUCHSIA)
   return zx::process::self();
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   return getpid();
 #elif defined(OS_WIN)
   return GetCurrentProcess();
diff --git a/test/process_type.h b/test/process_type.h
index d14514e..cacac04 100644
--- a/test/process_type.h
+++ b/test/process_type.h
@@ -19,7 +19,7 @@
 
 #if defined(OS_FUCHSIA)
 #include <lib/zx/process.h>
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include <sys/types.h>
 #elif defined(OS_WIN)
 #include <windows.h>
@@ -32,7 +32,8 @@
 
 #if defined(OS_FUCHSIA)
 using ProcessType = zx::unowned_process;
-#elif defined(OS_LINUX) || defined(OS_ANDROID) || DOXYGEN
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+    DOXYGEN
 //! \brief Alias for platform-specific type to represent a process.
 using ProcessType = pid_t;
 #elif defined(OS_WIN)
diff --git a/tools/generate_dump.cc b/tools/generate_dump.cc
index dd62cd7..e22f92a 100644
--- a/tools/generate_dump.cc
+++ b/tools/generate_dump.cc
@@ -47,7 +47,7 @@
 #include "snapshot/win/process_snapshot_win.h"
 #include "util/win/scoped_process_suspend.h"
 #include "util/win/xp_compat.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "snapshot/linux/process_snapshot_linux.h"
 #endif  // OS_APPLE
 
@@ -196,7 +196,7 @@
                                      0)) {
       return EXIT_FAILURE;
     }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
     // TODO(jperaza): https://crashpad.chromium.org/bug/30.
     ProcessSnapshotLinux process_snapshot;
     if (!process_snapshot.Initialize(nullptr)) {
diff --git a/util/file/file_io.h b/util/file/file_io.h
index 6fa0f96..1f502ad 100644
--- a/util/file/file_io.h
+++ b/util/file/file_io.h
@@ -398,7 +398,7 @@
                                    FileWriteMode mode,
                                    FilePermissions permissions);
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 //! \brief Opens an in-memory file for input and output.
 //!
 //! This function first attempts to open the file with `memfd_create()`. If
@@ -420,7 +420,7 @@
 //! \sa LoggingOpenFileForWrite
 //! \sa LoggingOpenFileForReadAndWrite
 FileHandle LoggingOpenMemoryFileForReadAndWrite(const base::FilePath& name);
-#endif  // OS_LINUX
+#endif  // OS_LINUX || OS_CHROMEOS
 
 //! \brief Wraps OpenFileForReadAndWrite(), logging an error if the operation
 //!     fails.
diff --git a/util/file/file_io_posix.cc b/util/file/file_io_posix.cc
index 001b2d9..2baa811 100644
--- a/util/file/file_io_posix.cc
+++ b/util/file/file_io_posix.cc
@@ -153,7 +153,7 @@
   return fd;
 }
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 FileHandle LoggingOpenMemoryFileForReadAndWrite(const base::FilePath& name) {
   DCHECK(name.value().find('/') == std::string::npos);
 
diff --git a/util/file/file_io_test.cc b/util/file/file_io_test.cc
index 0efded8..52bb6ee 100644
--- a/util/file/file_io_test.cc
+++ b/util/file/file_io_test.cc
@@ -473,7 +473,7 @@
   TestOpenFileForWrite(LoggingOpenFileForReadAndWrite);
 }
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 TEST(FileIO, LoggingOpenMemoryFileForReadAndWrite) {
   ScopedFileHandle handle(
       LoggingOpenMemoryFileForReadAndWrite(base::FilePath("memfile")));
@@ -488,7 +488,7 @@
   ASSERT_TRUE(LoggingReadFileExactly(handle.get(), buffer, sizeof(buffer)));
   EXPECT_EQ(memcmp(buffer, kTestData, sizeof(buffer)), 0);
 }
-#endif  // OS_LINUX
+#endif  // OS_LINUX || OS_CHROMEOS
 
 enum class ReadOrWrite : bool {
   kRead,
diff --git a/util/file/file_writer.cc b/util/file/file_writer.cc
index 6dff975..73fe708 100644
--- a/util/file/file_writer.cc
+++ b/util/file/file_writer.cc
@@ -171,7 +171,7 @@
   return true;
 }
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
 bool FileWriter::OpenMemfd(const base::FilePath& path) {
   CHECK(!file_.is_valid());
   file_.reset(LoggingOpenMemoryFileForReadAndWrite(path));
diff --git a/util/file/file_writer.h b/util/file/file_writer.h
index 4b99b37..987c0f5 100644
--- a/util/file/file_writer.h
+++ b/util/file/file_writer.h
@@ -131,7 +131,7 @@
             FileWriteMode write_mode,
             FilePermissions permissions);
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
   //! \brief Wraps LoggingOpenMemoryFileForWrite().
   //!
   //! \return `true` if the operation succeeded, `false` if it failed, with an
diff --git a/util/linux/exception_handler_protocol.cc b/util/linux/exception_handler_protocol.cc
index 45590c8..27f180c 100644
--- a/util/linux/exception_handler_protocol.cc
+++ b/util/linux/exception_handler_protocol.cc
@@ -19,9 +19,9 @@
 ExceptionHandlerProtocol::ClientInformation::ClientInformation()
     : exception_information_address(0),
       sanitization_information_address(0)
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
       , crash_loop_before_time(0)
-#endif  // OS_LINUX
+#endif  // OS_LINUX || OS_CHROMEOS
 {}
 
 ExceptionHandlerProtocol::ClientToServerMessage::ClientToServerMessage()
diff --git a/util/linux/exception_handler_protocol.h b/util/linux/exception_handler_protocol.h
index 7312b9d..60b0b1b 100644
--- a/util/linux/exception_handler_protocol.h
+++ b/util/linux/exception_handler_protocol.h
@@ -52,7 +52,7 @@
     //!     SanitizationInformation struct, or 0 if there is no such struct.
     VMAddress sanitization_information_address;
 
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
     //! \brief Indicates that the client is likely in a crash loop if a crash
     //!     occurs before this timestamp. This value is only used by ChromeOS's
     //!     `/sbin/crash_reporter`.
diff --git a/util/misc/address_types.h b/util/misc/address_types.h
index b3c69c0..14942bd 100644
--- a/util/misc/address_types.h
+++ b/util/misc/address_types.h
@@ -25,7 +25,7 @@
 #include <mach/mach_types.h>
 #elif defined(OS_WIN)
 #include "util/win/address_types.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "util/linux/address_types.h"
 #elif defined(OS_FUCHSIA)
 #include <zircon/types.h>
@@ -55,7 +55,7 @@
 using VMAddress = WinVMAddress;
 using VMSize = WinVMSize;
 
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 
 using VMAddress = LinuxVMAddress;
 using VMSize = LinuxVMSize;
diff --git a/util/misc/capture_context.h b/util/misc/capture_context.h
index eda4efa..d21a24f 100644
--- a/util/misc/capture_context.h
+++ b/util/misc/capture_context.h
@@ -21,7 +21,7 @@
 #include <mach/mach.h>
 #elif defined(OS_WIN)
 #include <windows.h>
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include <ucontext.h>
 #elif defined(OS_FUCHSIA)
 #include <signal.h>
@@ -37,7 +37,8 @@
 #endif
 #elif defined(OS_WIN)
 using NativeCPUContext = CONTEXT;
-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || \
+    defined(OS_FUCHSIA)
 using NativeCPUContext = ucontext_t;
 #endif  // OS_APPLE
 
diff --git a/util/misc/metrics.cc b/util/misc/metrics.cc
index be75a72..4b87f10 100644
--- a/util/misc/metrics.cc
+++ b/util/misc/metrics.cc
@@ -25,7 +25,7 @@
 #define METRICS_OS_NAME "Win"
 #elif defined(OS_ANDROID)
 #define METRICS_OS_NAME "Android"
-#elif defined(OS_LINUX)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS)
 #define METRICS_OS_NAME "Linux"
 #elif defined(OS_FUCHSIA)
 #define METRICS_OS_NAME "Fuchsia"
diff --git a/util/misc/time.h b/util/misc/time.h
index dffe1a8..dc992bd 100644
--- a/util/misc/time.h
+++ b/util/misc/time.h
@@ -69,13 +69,13 @@
 
 #endif  // OS_WIN
 
-#if defined(OS_LINUX) || defined(OS_ANDROID) || DOXYGEN
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || DOXYGEN
 //! \brief Get the kernel boot time. Subsequent calls to this function may
 //!     return different results due to the system clock being changed or
 //!     imprecision in measuring the boot time.
 //! \return `true` on success. Otherwise, `false` with a message logged.
 bool GetBootTime(timespec* ts);
-#endif  // OS_LINUX || OS_ANDROID || DOXYGEN
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID || DOXYGEN
 
 }  // namespace crashpad
 
diff --git a/util/misc/uuid.cc b/util/misc/uuid.cc
index e444a07..681a235 100644
--- a/util/misc/uuid.cc
+++ b/util/misc/uuid.cc
@@ -93,8 +93,8 @@
   uuid_generate(uuid);
   InitializeFromBytes(uuid);
   return true;
-#elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \
-    defined(OS_FUCHSIA)
+#elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \
+    defined(OS_ANDROID) || defined(OS_FUCHSIA)
   // Linux, Android, and Fuchsia do not provide a UUID generator in a
   // widely-available system library. On Linux and Android, uuid_generate()
   // from libuuid is not available everywhere.
diff --git a/util/net/http_transport_socket.cc b/util/net/http_transport_socket.cc
index b9c6c9c..0451d2c 100644
--- a/util/net/http_transport_socket.cc
+++ b/util/net/http_transport_socket.cc
@@ -123,7 +123,7 @@
         return false;
       }
     } else {
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
       if (SSL_CTX_load_verify_locations(
               ctx_.get(), nullptr, "/etc/ssl/certs") <= 0) {
         LOG(ERROR) << "SSL_CTX_load_verify_locations";
diff --git a/util/numeric/checked_address_range.cc b/util/numeric/checked_address_range.cc
index 18d7568..4ba7ff3 100644
--- a/util/numeric/checked_address_range.cc
+++ b/util/numeric/checked_address_range.cc
@@ -22,7 +22,7 @@
 #include <mach/mach.h>
 #elif defined(OS_WIN)
 #include "util/win/address_types.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "util/linux/address_types.h"
 #elif defined(OS_FUCHSIA)
 #include <zircon/types.h>
@@ -130,7 +130,7 @@
 template class CheckedAddressRangeGeneric<mach_vm_address_t, mach_vm_size_t>;
 #elif defined(OS_WIN)
 template class CheckedAddressRangeGeneric<WinVMAddress, WinVMSize>;
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 template class CheckedAddressRangeGeneric<LinuxVMAddress, LinuxVMSize>;
 #elif defined(OS_FUCHSIA)
 template class CheckedAddressRangeGeneric<zx_vaddr_t, size_t>;
diff --git a/util/posix/close_multiple.cc b/util/posix/close_multiple.cc
index 4f24df1..0c07832 100644
--- a/util/posix/close_multiple.cc
+++ b/util/posix/close_multiple.cc
@@ -74,7 +74,7 @@
 bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) {
 #if defined(OS_APPLE)
   static constexpr char kFDDir[] = "/dev/fd";
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   static constexpr char kFDDir[] = "/proc/self/fd";
 #endif
 
@@ -135,7 +135,8 @@
   max_fd = std::max(max_fd, getdtablesize());
 #endif
 
-#if !(defined(OS_LINUX) || defined(OS_ANDROID)) || defined(OPEN_MAX)
+#if !(defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)) || \
+    defined(OPEN_MAX)
   // Linux does not provide OPEN_MAX. See
   // https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/include/linux/limits.h?id=77293034696e3e0b6c8b8fc1f96be091104b3d2b.
   max_fd = std::max(max_fd, OPEN_MAX);
@@ -162,7 +163,7 @@
   } else {
     PLOG(WARNING) << "sysctl";
   }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   // See linux-4.4.27/fs/file.c sysctl_nr_open, referenced by kernel/sys.c
   // do_prlimit() and kernel/sysctl.c fs_table. Inability to open this file is
   // not considered an error, because /proc may not be available or usable.
diff --git a/util/posix/drop_privileges.cc b/util/posix/drop_privileges.cc
index 7c1fe84..75650d5 100644
--- a/util/posix/drop_privileges.cc
+++ b/util/posix/drop_privileges.cc
@@ -73,7 +73,7 @@
       CHECK_EQ(setegid(egid), -1);
     }
   }
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   PCHECK(setresgid(gid, gid, gid) == 0) << "setresgid";
   PCHECK(setresuid(uid, uid, uid) == 0) << "setresuid";
 
diff --git a/util/posix/process_info.h b/util/posix/process_info.h
index 439284f..d144c04 100644
--- a/util/posix/process_info.h
+++ b/util/posix/process_info.h
@@ -33,7 +33,7 @@
 #include <sys/sysctl.h>
 #endif
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "util/linux/ptrace_connection.h"
 #endif
 
@@ -44,7 +44,7 @@
   ProcessInfo();
   ~ProcessInfo();
 
-#if defined(OS_LINUX) || defined(OS_ANDROID) || DOXYGEN
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID) || DOXYGEN
   //! \brief Initializes this object with information about the process whose ID
   //!     is \a pid using a PtraceConnection \a connection.
   //!
@@ -59,7 +59,7 @@
   //!
   //! \return `true` on success, `false` on failure with a message logged.
   bool InitializeWithPtrace(PtraceConnection* connection);
-#endif  // OS_LINUX || OS_ANDROID || DOXYGEN
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID || DOXYGEN
 
 #if defined(OS_APPLE) || DOXYGEN
   //! \brief Initializes this object with information about the process whose ID
@@ -168,7 +168,7 @@
  private:
 #if defined(OS_APPLE)
   kinfo_proc kern_proc_info_;
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   // Some members are marked mutable so that they can be lazily initialized by
   // const methods. These are always InitializationState-protected so that
   // multiple successive calls will always produce the same return value and out
diff --git a/util/posix/process_info_test.cc b/util/posix/process_info_test.cc
index 56ee356..7806184 100644
--- a/util/posix/process_info_test.cc
+++ b/util/posix/process_info_test.cc
@@ -33,7 +33,7 @@
 #include "util/misc/implicit_cast.h"
 #include "util/string/split_string.h"
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "util/linux/direct_ptrace_connection.h"
 #include "test/linux/fake_ptrace_connection.h"
 #endif
@@ -98,7 +98,7 @@
 
   const std::vector<std::string>& expect_argv = GetMainArguments();
 
-#if defined(OS_ANDROID) || defined(OS_LINUX)
+#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
   // Prior to Linux 4.2, the kernel only allowed reading a single page from
   // /proc/<pid>/cmdline, causing any further arguments to be truncated. Disable
   // testing arguments in this case.
@@ -124,7 +124,7 @@
       argv_size > static_cast<size_t>(getpagesize())) {
     return;
   }
-#endif  // OS_ANDROID || OS_LINUX
+#endif  // OS_ANDROID || OS_LINUX || OS_CHROMEOS
 
   std::vector<std::string> argv;
   ASSERT_TRUE(process_info.Arguments(&argv));
@@ -161,13 +161,13 @@
 
 TEST(ProcessInfo, Self) {
   ProcessInfo process_info;
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   FakePtraceConnection connection;
   ASSERT_TRUE(connection.Initialize(getpid()));
   ASSERT_TRUE(process_info.InitializeWithPtrace(&connection));
 #else
   ASSERT_TRUE(process_info.InitializeWithPid(getpid()));
-#endif  // OS_LINUX || OS_ANDROID
+#endif  // OS_LINUX || OS_ANDROID || OS_CHROMEOS
 
   TestSelfProcess(process_info);
 }
@@ -184,7 +184,7 @@
   // PID 1 is expected to be init or the system’s equivalent. This tests reading
   // information about another process.
   ProcessInfo process_info;
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   FakePtraceConnection connection;
   ASSERT_TRUE(connection.Initialize(1));
   ASSERT_TRUE(process_info.InitializeWithPtrace(&connection));
@@ -212,7 +212,7 @@
   void MultiprocessParent() override {
     const pid_t pid = ChildPID();
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
     DirectPtraceConnection connection;
     ASSERT_TRUE(connection.Initialize(pid));
 
@@ -221,7 +221,7 @@
 #else
     ProcessInfo process_info;
     ASSERT_TRUE(process_info.InitializeWithPid(pid));
-#endif  // OS_LINUX || OS_ANDROID
+#endif  // OS_LINUX || OS_CHROMEOS || OS_ANDROID
 
     EXPECT_EQ(process_info.ProcessID(), pid);
     EXPECT_EQ(process_info.ParentProcessID(), getpid());
diff --git a/util/posix/signals.cc b/util/posix/signals.cc
index 252aff7..e6432dd 100644
--- a/util/posix/signals.cc
+++ b/util/posix/signals.cc
@@ -46,10 +46,10 @@
 #if defined(SIGEMT)
     SIGEMT,
 #endif  // defined(SIGEMT)
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
     SIGXCPU,
     SIGXFSZ,
-#endif  // defined(OS_LINUX)
+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 };
 
 // These are the non-core-generating but terminating signals.
@@ -86,9 +86,9 @@
     SIGXCPU,
     SIGXFSZ,
 #endif  // defined(OS_APPLE)
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS)
     SIGIO,
-#endif  // defined(OS_LINUX)
+#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS)
 };
 
 bool InstallHandlers(const std::vector<int>& signals,
diff --git a/util/posix/symbolic_constants_posix.cc b/util/posix/symbolic_constants_posix.cc
index 13bd7f9..c6e0fec 100644
--- a/util/posix/symbolic_constants_posix.cc
+++ b/util/posix/symbolic_constants_posix.cc
@@ -64,7 +64,7 @@
     "INFO",
     "USR1",
     "USR2",
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #if defined(ARCH_CPU_MIPS_FAMILY)
     "HUP",
     "INT",
@@ -135,7 +135,7 @@
 #endif  // defined(ARCH_CPU_MIPS_FAMILY)
 #endif
 };
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 // NSIG is 64 to account for real-time signals.
 static_assert(base::size(kSignalNames) == 32, "kSignalNames length");
 #else
diff --git a/util/posix/symbolic_constants_posix_test.cc b/util/posix/symbolic_constants_posix_test.cc
index 266b057..74d5b54 100644
--- a/util/posix/symbolic_constants_posix_test.cc
+++ b/util/posix/symbolic_constants_posix_test.cc
@@ -66,7 +66,7 @@
 #if defined(OS_APPLE)
     {SIGEMT, "SIGEMT", "EMT"},
     {SIGINFO, "SIGINFO", "INFO"},
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
     {SIGPWR, "SIGPWR", "PWR"},
 #if !defined(ARCH_CPU_MIPS_FAMILY)
     {SIGSTKFLT, "SIGSTKFLT", "STKFLT"},
@@ -123,7 +123,7 @@
                        kSignalTestData[index].short_name);
   }
 
-#if defined(OS_LINUX) || defined(OS_ANDROID)
+#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
   // NSIG is 64 to account for real-time signals.
   constexpr int kSignalCount = 32;
 #else
diff --git a/util/process/process_memory_native.h b/util/process/process_memory_native.h
index e486c1c..5a792d7 100644
--- a/util/process/process_memory_native.h
+++ b/util/process/process_memory_native.h
@@ -16,7 +16,7 @@
 
 #if defined(OS_FUCHSIA)
 #include "util/process/process_memory_fuchsia.h"
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 #include "util/process/process_memory_linux.h"
 #elif defined(OS_WIN)
 #include "util/process/process_memory_win.h"
@@ -29,7 +29,7 @@
 #if defined(OS_FUCHSIA) || DOXYGEN
 //! \brief Alias for platform-specific native implementation of ProcessMemory.
 using ProcessMemoryNative = ProcessMemoryFuchsia;
-#elif defined(OS_LINUX) || defined(OS_ANDROID)
+#elif defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_ANDROID)
 using ProcessMemoryNative = ProcessMemoryLinux;
 #elif defined(OS_WIN)
 using ProcessMemoryNative = ProcessMemoryWin;