This creates a library for fetching debug info by build ID, whether locally or remotely via debuginfod. The functionality was refactored out of existing code in the Symboliize library. Existing utilities were refactored to use this library. Reviewed By: phosek Differential Revision: https://reviews.llvm.org/D132504
32 lines
1023 B
C++
32 lines
1023 B
C++
//===- llvm/DebugInfod/BuildIDFetcher.cpp - Build ID fetcher --------------===//
|
|
//
|
|
// 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// \file
|
|
/// This file defines a DIFetcher implementation for obtaining debug info
|
|
/// from debuginfod.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Debuginfod/BuildIDFetcher.h"
|
|
|
|
#include "llvm/Debuginfod/Debuginfod.h"
|
|
|
|
using namespace llvm;
|
|
|
|
Optional<std::string>
|
|
DebuginfodFetcher::fetch(ArrayRef<uint8_t> BuildID) const {
|
|
if (Optional<std::string> Path = BuildIDFetcher::fetch(BuildID))
|
|
return std::move(*Path);
|
|
|
|
Expected<std::string> PathOrErr = getCachedOrDownloadDebuginfo(BuildID);
|
|
if (PathOrErr)
|
|
return *PathOrErr;
|
|
consumeError(PathOrErr.takeError());
|
|
return None;
|
|
}
|