xref: /llvm-project-15.0.7/lld/COFF/PDB.cpp (revision 24c8ac93)
1 //===- PDB.cpp ------------------------------------------------------------===//
2 //
3 //                             The LLVM Linker
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #include "Driver.h"
11 #include "Error.h"
12 #include "Symbols.h"
13 #include "llvm/Support/FileOutputBuffer.h"
14 #include <memory>
15 
16 using namespace llvm;
17 
18 const int PageSize = 4096;
19 const uint8_t Magic[32] = "Microsoft C/C++ MSF 7.00\r\n\032DS\0\0";
20 
21 void lld::coff::createPDB(StringRef Path) {
22   // Create a file.
23   size_t FileSize = PageSize * 3;
24   ErrorOr<std::unique_ptr<FileOutputBuffer>> BufOrErr =
25       FileOutputBuffer::create(Path, FileSize);
26   error(BufOrErr, Twine("failed to open ") + Path);
27   std::unique_ptr<FileOutputBuffer> Buf = std::move(*BufOrErr);
28 
29   // Write the file magic.
30   uint8_t *P = Buf->getBufferStart();
31   memcpy(P, Magic, sizeof(Magic));
32 }
33