forked from OSchip/llvm-project
43 lines
1.8 KiB
C++
43 lines
1.8 KiB
C++
//===- 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<llvm::StringRef> 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();
|
|
} |