//===- TestUtilities.cpp ----------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "TestUtilities.h" #include "llvm/ADT/SmallString.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" #include "llvm/Support/Program.h" extern const char *TestMainArgv0; std::string lldb_private::GetInputFilePath(const llvm::Twine &name) { llvm::SmallString<128> result = llvm::sys::path::parent_path(TestMainArgv0); llvm::sys::fs::make_absolute(result); llvm::sys::path::append(result, "Inputs", name); return result.str(); } llvm::Error lldb_private::ReadYAMLObjectFile(const llvm::Twine &yaml_name, llvm::SmallString<128> &object_file) { std::string yaml = GetInputFilePath(yaml_name); llvm::StringRef args[] = {YAML2OBJ, yaml}; llvm::StringRef obj_ref = object_file; const llvm::Optional redirects[] = {llvm::None, obj_ref, llvm::None}; if (llvm::sys::ExecuteAndWait(YAML2OBJ, args, llvm::None, redirects) != 0) return llvm::createStringError(llvm::inconvertibleErrorCode(), "Error running yaml2obj %s.", yaml.c_str()); uint64_t size; if (auto ec = llvm::sys::fs::file_size(object_file, size)) return llvm::errorCodeToError(ec); if (size == 0) return llvm::createStringError( llvm::inconvertibleErrorCode(), "Empty object file created from yaml2obj %s.", yaml.c_str()); return llvm::Error::success(); }