xref: /freebsd/contrib/llvm-project/llvm/lib/Debuginfod/BuildIDFetcher.cpp (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
1*bdd1243dSDimitry Andric //===- llvm/DebugInfod/BuildIDFetcher.cpp - Build ID fetcher --------------===//
2*bdd1243dSDimitry Andric //
3*bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5*bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*bdd1243dSDimitry Andric //
7*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
8*bdd1243dSDimitry Andric ///
9*bdd1243dSDimitry Andric /// \file
10*bdd1243dSDimitry Andric /// This file defines a DIFetcher implementation for obtaining debug info
11*bdd1243dSDimitry Andric /// from debuginfod.
12*bdd1243dSDimitry Andric ///
13*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===//
14*bdd1243dSDimitry Andric 
15*bdd1243dSDimitry Andric #include "llvm/Debuginfod/BuildIDFetcher.h"
16*bdd1243dSDimitry Andric 
17*bdd1243dSDimitry Andric #include "llvm/Debuginfod/Debuginfod.h"
18*bdd1243dSDimitry Andric 
19*bdd1243dSDimitry Andric using namespace llvm;
20*bdd1243dSDimitry Andric 
21*bdd1243dSDimitry Andric std::optional<std::string>
fetch(ArrayRef<uint8_t> BuildID) const22*bdd1243dSDimitry Andric DebuginfodFetcher::fetch(ArrayRef<uint8_t> BuildID) const {
23*bdd1243dSDimitry Andric   if (std::optional<std::string> Path = BuildIDFetcher::fetch(BuildID))
24*bdd1243dSDimitry Andric     return std::move(*Path);
25*bdd1243dSDimitry Andric 
26*bdd1243dSDimitry Andric   Expected<std::string> PathOrErr = getCachedOrDownloadDebuginfo(BuildID);
27*bdd1243dSDimitry Andric   if (PathOrErr)
28*bdd1243dSDimitry Andric     return *PathOrErr;
29*bdd1243dSDimitry Andric   consumeError(PathOrErr.takeError());
30*bdd1243dSDimitry Andric   return std::nullopt;
31*bdd1243dSDimitry Andric }
32