=====================================
The MSF File Format
=====================================

.. contents::
   :local:

.. _msf_layout:

File Layout
===========

The MSF file format consists of the following components:

1. :ref:`msf_superblock`
2. :ref:`msf_freeblockmap` (also know as Free Page Map, or FPM)
3. Data

Each component is stored as an indexed block, the length of which is specified
in ``SuperBlock::BlockSize``. The file consists of 1 or more iterations of the
following pattern (sometimes referred to as an "interval"):

1. 1 block of data
2. Free Block Map 1 (corresponds to ``SuperBlock::FreeBlockMapBlock`` 1)
3. Free Block Map 2 (corresponds to ``SuperBlock::FreeBlockMapBlock`` 2)
4. ``SuperBlock::BlockSize - 3`` blocks of data

In the first interval, the first data block is used to store
:ref:`msf_superblock`.

The following diagram demonstrates the general layout of the file (\| denotes
the end of an interval, and is for visualization purposes only):

+-------------+-----------------------+------------------+------------------+----------+----+------+------+------+-------------+----+-----+
| Block Index | 0                     | 1                | 2                | 3 - 4095 | \| | 4096 | 4097 | 4098 | 4099 - 8191 | \| | ... |
+=============+=======================+==================+==================+==========+====+======+======+======+=============+====+=====+
| Meaning     | :ref:`msf_superblock` | Free Block Map 1 | Free Block Map 2 | Data     | \| | Data | FPM1 | FPM2 | Data        | \| | ... |
+-------------+-----------------------+------------------+------------------+----------+----+------+------+------+-------------+----+-----+

The file may end after any block, including immediately after a FPM1.

.. note::
  LLVM only supports 4096 byte blocks (sometimes referred to as the "BigMsf"
  variant), so the rest of this document will assume a block size of 4096.

.. _msf_superblock:

The Superblock
==============
At file offset 0 in an MSF file is the MSF *SuperBlock*, which is laid out as
follows:

.. code-block:: c++

  struct SuperBlock {
    char FileMagic[sizeof(Magic)];
    ulittle32_t BlockSize;
    ulittle32_t FreeBlockMapBlock;
    ulittle32_t NumBlocks;
    ulittle32_t NumDirectoryBytes;
    ulittle32_t Unknown;
    ulittle32_t BlockMapAddr;
  };

- **FileMagic** - Must be equal to ``"Microsoft C / C++ MSF 7.00\\r\\n"``
  followed by the bytes ``1A 44 53 00 00 00``.
- **BlockSize** - The block size of the internal file system.  Valid values are
  512, 1024, 2048, and 4096 bytes.  Certain aspects of the MSF file layout vary
  depending on the block sizes.  For the purposes of LLVM, we handle only block
  sizes of 4KiB, and all further discussion assumes a block size of 4KiB.
- **FreeBlockMapBlock** - The index of a block within the file, at which begins
  a bitfield representing the set of all blocks within the file which are "free"
  (i.e. the data within that block is not used).  See :ref:`msf_freeblockmap` for
  more information.
  **Important**: ``FreeBlockMapBlock`` can only be ``1`` or ``2``!
- **NumBlocks** - The total number of blocks in the file.  ``NumBlocks * BlockSize``
  should equal the size of the file on disk.
- **NumDirectoryBytes** - The size of the stream directory, in bytes.  The stream
  directory contains information about each stream's size and the set of blocks
  that it occupies.  It will be described in more detail later.
- **BlockMapAddr** - The index of a block within the MSF file.  At this block is
  an array of ``ulittle32_t``'s listing the blocks that the stream directory
  resides on.  For large MSF files, the stream directory (which describes the
  block layout of each stream) may not fit entirely on a single block.  As a
  result, this extra layer of indirection is introduced, whereby this block
  contains the list of blocks that the stream directory occupies, and the stream
  directory itself can be stitched together accordingly.  The number of
  ``ulittle32_t``'s in this array is given by ``ceil(NumDirectoryBytes / BlockSize)``.

.. _msf_freeblockmap:

The Free Block Map
==================

The Free Block Map (sometimes referred to as the Free Page Map, or FPM) is a
series of blocks which contains a bit flag for every block in the file. The
flag will be set to 0 if the block is in use, and 1 if the block is unused.

Each file contains two FPMs, one of which is active at any given time. This
feature is designed to support incremental and atomic updates of the underlying
MSF file. While writing to an MSF file, if the active FPM is FPM1, you can
write your new modified bitfield to FPM2, and vice versa. Only when you commit
the file to disk do you need to swap the value in the SuperBlock to point to
the new ``FreeBlockMapBlock``.

The Free Block Maps are stored as a series of single blocks thoughout the file
at intervals of BlockSize. Because each FPM block is of size ``BlockSize``
bytes, it contains 8 times as many bits as an interval has blocks. This means
that the first block of each FPM refers to the first 8 intervals of the file
(the first 32768 blocks), the second block of each FPM refers to the next 8
blocks, and so on. This results in far more FPM blocks being present than are
required, but in order to maintain backwards compatibility the format must stay
this way.

The Stream Directory
====================
The Stream Directory is the root of all access to the other streams in an MSF
file.  Beginning at byte 0 of the stream directory is the following structure:

.. code-block:: c++

  struct StreamDirectory {
    ulittle32_t NumStreams;
    ulittle32_t StreamSizes[NumStreams];
    ulittle32_t StreamBlocks[NumStreams][];
  };

And this structure occupies exactly ``SuperBlock->NumDirectoryBytes`` bytes.
Note that each of the last two arrays is of variable length, and in particular
that the second array is jagged.

**Example:** Suppose a hypothetical PDB file with a 4KiB block size, and 4
streams of lengths {1000 bytes, 8000 bytes, 16000 bytes, 9000 bytes}.

Stream 0: ceil(1000 / 4096) = 1 block

Stream 1: ceil(8000 / 4096) = 2 blocks

Stream 2: ceil(16000 / 4096) = 4 blocks

Stream 3: ceil(9000 / 4096) = 3 blocks

In total, 10 blocks are used.  Let's see what the stream directory might look
like:

.. code-block:: c++

  struct StreamDirectory {
    ulittle32_t NumStreams = 4;
    ulittle32_t StreamSizes[] = {1000, 8000, 16000, 9000};
    ulittle32_t StreamBlocks[][] = {
      {4},
      {5, 6},
      {11, 9, 7, 8},
      {10, 15, 12}
    };
  };

In total, this occupies ``15 * 4 = 60`` bytes, so ``SuperBlock->NumDirectoryBytes``
would equal ``60``, and ``SuperBlock->BlockMapAddr`` would be an array of one
``ulittle32_t``, since ``60 <= SuperBlock->BlockSize``.

Note also that the streams are discontiguous, and that part of stream 3 is in the
middle of part of stream 2.  You cannot assume anything about the layout of the
blocks!

Alignment and Block Boundaries
==============================
As may be clear by now, it is possible for a single field (whether it be a high
level record, a long string field, or even a single ``uint16``) to begin and
end in separate blocks.  For example, if the block size is 4096 bytes, and a
``uint16`` field begins at the last byte of the current block, then it would
need to end on the first byte of the next block.  Since blocks are not
necessarily contiguously laid out in the file, this means that both the consumer
and the producer of an MSF file must be prepared to split data apart
accordingly.  In the aforementioned example, the high byte of the ``uint16``
would be written to the last byte of block N, and the low byte would be written
to the first byte of block N+1, which could be tens of thousands of bytes later
(or even earlier!) in the file, depending on what the stream directory says.
