diff options
Diffstat (limited to 'llvm/docs/PDB/ModiStream.rst')
| -rw-r--r-- | llvm/docs/PDB/ModiStream.rst | 160 |
1 files changed, 80 insertions, 80 deletions
diff --git a/llvm/docs/PDB/ModiStream.rst b/llvm/docs/PDB/ModiStream.rst index 7e500bd921c..8104c5308b7 100644 --- a/llvm/docs/PDB/ModiStream.rst +++ b/llvm/docs/PDB/ModiStream.rst @@ -1,80 +1,80 @@ -=====================================
-The Module Information Stream
-=====================================
-
-.. contents::
- :local:
-
-.. _modi_stream_intro:
-
-Introduction
-============
-
-The Module Info Stream (henceforth referred to as the Modi stream) contains
-information about a single module (object file, import library, etc that
-contributes to the binary this PDB contains debug information about. There
-is one modi stream for each module, and the mapping between modi stream index
-and module is contained in the :doc:`DBI Stream <DbiStream>`. The modi stream
-for a single module contains line information for the compiland, as well as
-all CodeView information for the symbols defined in the compiland. Finally,
-there is a "global refs" substream which is not well understood.
-
-.. _modi_stream_layout:
-
-Stream Layout
-=============
-
-A modi stream is laid out as follows:
-
-
-.. code-block:: c++
-
- struct ModiStream {
- uint32_t Signature;
- uint8_t Symbols[SymbolSize-4];
- uint8_t C11LineInfo[C11Size];
- uint8_t C13LineInfo[C13Size];
-
- uint32_t GlobalRefsSize;
- uint8_t GlobalRefs[GlobalRefsSize];
- };
-
-- **Signature** - Unknown. In practice only the value of ``4`` has been
- observed. It is hypothesized that this value corresponds to the set of
- ``CV_SIGNATURE_xx`` defines in ``cvinfo.h``, with the value of ``4``
- meaning that this module has C13 line information (as opposed to C11 line
- information). A corollary of this is that we expect to only ever see
- C13 line info, and that we do not understand the format of C11 line info.
-
-- **Symbols** - The :ref:`CodeView Symbol Substream <modi_symbol_substream>`.
- ``SymbolSize`` is equal to the value of ``SymByteSize`` for the
- corresponding module's entry in the :ref:`Module Info Substream <dbi_mod_info_substream>`
- of the :doc:`DBI Stream <DbiStream>`.
-
-- **C11LineInfo** - A block containing CodeView line information in C11
- format. ``C11Size`` is equal to the value of ``C11ByteSize`` from the
- :ref:`Module Info Substream <dbi_mod_info_substream>` of the
- :doc:`DBI Stream <DbiStream>`. If this value is ``0``, then C11 line
- information is not present. As mentioned previously, the format of
- C11 line info is not understood and we assume all line in modern PDBs
- to be in C13 format.
-
-- **C13LineInfo** - A block containing CodeView line information in C13
- format. ``C13Size`` is equal to the value of ``C13ByteSize`` from the
- :ref:`Module Info Substream <dbi_mod_info_substream>` of the
- :doc:`DBI Stream <DbiStream>`. If this value is ``0``, then C13 line
- information is not present.
-
-- **GlobalRefs** - The meaning of this substream is not understood.
-
-.. _modi_symbol_substream:
-
-The CodeView Symbol Substream
-=============================
-
-The CodeView Symbol Substream. This is an array of variable length
-records describing the functions, variables, inlining information,
-and other symbols defined in the compiland. The entire array consumes
-``SymbolSize-4`` bytes. The format of a CodeView Symbol Record (and
-thusly, an array of CodeView Symbol Records) is described in
-:doc:`CodeViewSymbols`.
+===================================== +The Module Information Stream +===================================== + +.. contents:: + :local: + +.. _modi_stream_intro: + +Introduction +============ + +The Module Info Stream (henceforth referred to as the Modi stream) contains +information about a single module (object file, import library, etc that +contributes to the binary this PDB contains debug information about. There +is one modi stream for each module, and the mapping between modi stream index +and module is contained in the :doc:`DBI Stream <DbiStream>`. The modi stream +for a single module contains line information for the compiland, as well as +all CodeView information for the symbols defined in the compiland. Finally, +there is a "global refs" substream which is not well understood. + +.. _modi_stream_layout: + +Stream Layout +============= + +A modi stream is laid out as follows: + + +.. code-block:: c++ + + struct ModiStream { + uint32_t Signature; + uint8_t Symbols[SymbolSize-4]; + uint8_t C11LineInfo[C11Size]; + uint8_t C13LineInfo[C13Size]; + + uint32_t GlobalRefsSize; + uint8_t GlobalRefs[GlobalRefsSize]; + }; + +- **Signature** - Unknown. In practice only the value of ``4`` has been + observed. It is hypothesized that this value corresponds to the set of + ``CV_SIGNATURE_xx`` defines in ``cvinfo.h``, with the value of ``4`` + meaning that this module has C13 line information (as opposed to C11 line + information). A corollary of this is that we expect to only ever see + C13 line info, and that we do not understand the format of C11 line info. + +- **Symbols** - The :ref:`CodeView Symbol Substream <modi_symbol_substream>`. + ``SymbolSize`` is equal to the value of ``SymByteSize`` for the + corresponding module's entry in the :ref:`Module Info Substream <dbi_mod_info_substream>` + of the :doc:`DBI Stream <DbiStream>`. + +- **C11LineInfo** - A block containing CodeView line information in C11 + format. ``C11Size`` is equal to the value of ``C11ByteSize`` from the + :ref:`Module Info Substream <dbi_mod_info_substream>` of the + :doc:`DBI Stream <DbiStream>`. If this value is ``0``, then C11 line + information is not present. As mentioned previously, the format of + C11 line info is not understood and we assume all line in modern PDBs + to be in C13 format. + +- **C13LineInfo** - A block containing CodeView line information in C13 + format. ``C13Size`` is equal to the value of ``C13ByteSize`` from the + :ref:`Module Info Substream <dbi_mod_info_substream>` of the + :doc:`DBI Stream <DbiStream>`. If this value is ``0``, then C13 line + information is not present. + +- **GlobalRefs** - The meaning of this substream is not understood. + +.. _modi_symbol_substream: + +The CodeView Symbol Substream +============================= + +The CodeView Symbol Substream. This is an array of variable length +records describing the functions, variables, inlining information, +and other symbols defined in the compiland. The entire array consumes +``SymbolSize-4`` bytes. The format of a CodeView Symbol Record (and +thusly, an array of CodeView Symbol Records) is described in +:doc:`CodeViewSymbols`. |

