10b57cec5SDimitry Andric //===- PDB.h ----------------------------------------------------*- C++ -*-===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #ifndef LLD_COFF_PDB_H 100b57cec5SDimitry Andric #define LLD_COFF_PDB_H 110b57cec5SDimitry Andric 120b57cec5SDimitry Andric #include "llvm/ADT/ArrayRef.h" 130b57cec5SDimitry Andric #include "llvm/ADT/StringRef.h" 14*bdd1243dSDimitry Andric #include <optional> 150b57cec5SDimitry Andric 16*bdd1243dSDimitry Andric namespace llvm::codeview { 170b57cec5SDimitry Andric union DebugInfo; 180b57cec5SDimitry Andric } 190b57cec5SDimitry Andric 200b57cec5SDimitry Andric namespace lld { 21e8d8bef9SDimitry Andric class Timer; 22e8d8bef9SDimitry Andric 230b57cec5SDimitry Andric namespace coff { 240b57cec5SDimitry Andric class SectionChunk; 25349cc55cSDimitry Andric class COFFLinkerContext; 260b57cec5SDimitry Andric 27349cc55cSDimitry Andric void createPDB(COFFLinkerContext &ctx, llvm::ArrayRef<uint8_t> sectionTable, 280b57cec5SDimitry Andric llvm::codeview::DebugInfo *buildId); 290b57cec5SDimitry Andric 30*bdd1243dSDimitry Andric std::optional<std::pair<llvm::StringRef, uint32_t>> 3185868e8aSDimitry Andric getFileLineCodeView(const SectionChunk *c, uint32_t addr); 32e8d8bef9SDimitry Andric 3385868e8aSDimitry Andric } // namespace coff 3485868e8aSDimitry Andric } // namespace lld 350b57cec5SDimitry Andric 360b57cec5SDimitry Andric #endif 37