mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-08 13:00:43 +00:00
a3e4fd51f1
The original `ExecuteCommand()` called `system()` from the C library. The C library implementation of this on macOS contains a mutex which serializes calls to `system()`. This prevented the `-jobs=` flag from running copies of the fuzzing binary in parallel which is the opposite of what is intended. To fix this on macOS an alternative implementation of `ExecuteCommand()` is provided that can be used concurrently. This is provided in `FuzzerUtilDarwin.cpp` which is guarded to only compile code on Apple platforms. The existing implementation has been moved to a new file `FuzzerUtilLinux.cpp` which is guarded to only compile code on Linux. This commit includes a simple test to check that LibFuzzer is being executed in parallel when requested. Differential Revision: https://reviews.llvm.org/D22742 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@278544 91177308-0d34-0410-b5e6-96231b3b80d8
20 lines
647 B
C++
20 lines
647 B
C++
//===- FuzzerUtilLinux.cpp - Misc utils -----------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
// Misc utils for Linux.
|
|
//===----------------------------------------------------------------------===//
|
|
#include "FuzzerInternal.h"
|
|
#if LIBFUZZER_LINUX
|
|
#include <stdlib.h>
|
|
namespace fuzzer {
|
|
int ExecuteCommand(const std::string &Command) {
|
|
return system(Command.c_str());
|
|
}
|
|
}
|
|
#endif // LIBFUZZER_LINUX
|