| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <lib/syslog/cpp/macros.h> |
| #include <zircon/status.h> |
| |
| #include "src/sys/fuzzing/common/component-context.h" |
| #include "src/sys/fuzzing/realmfuzzer/adapters/llvm.h" |
| |
| namespace fuzzing { |
| |
| zx_status_t RunLLVMTargetAdapter(const std::vector<std::string>& args) { |
| // Take start up handles. |
| auto context = ComponentContext::Create(); |
| |
| // Create the fuzz target adapter. |
| LLVMTargetAdapter adapter(context->executor()); |
| adapter.SetParameters(args); |
| |
| // Serve |fuchsia.fuzzer.TargetAdapter|. |
| if (auto status = context->AddPublicService(adapter.GetHandler()); status != ZX_OK) { |
| FX_LOGS(ERROR) << " Failed to serve fuchsia.fuzzer.TargetAdapter: " |
| << zx_status_get_string(status); |
| return status; |
| } |
| |
| return context->Run(); |
| } |
| |
| } // namespace fuzzing |
| |
| int main(int argc, char const* argv[]) { |
| return fuzzing::RunLLVMTargetAdapter(std::vector<std::string>(argv + 1, argv + argc)); |
| } |