From 0ec6ec05d5c7ca645eefe04123002c3a4b26a9ca Mon Sep 17 00:00:00 2001 From: Adrian Prantl Date: Wed, 8 Jul 2015 16:52:51 +0000 Subject: [PATCH] Update PCHInternals.rst to document PCH wrapped in object file containers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@241690 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/PCHInternals.rst | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/docs/PCHInternals.rst b/docs/PCHInternals.rst index a36e65c199..8f66ddf0e1 100644 --- a/docs/PCHInternals.rst +++ b/docs/PCHInternals.rst @@ -124,20 +124,30 @@ section `. AST File Contents ----------------- -Clang's AST files are organized into several different blocks, each of which -contains the serialized representation of a part of Clang's internal +An AST file produced by clang is an object file container with a ``clangast`` +(COFF) or ``__clangast`` (ELF and Mach-O) section containing the serialized AST. +Other target-specific sections in the object file container are used to hold +debug information for the data types defined in the AST. Tools built on top of +libclang that do not need debug information may also produce raw AST files that +only contain the serialized AST. + +The ``clangast`` section is organized into several different blocks, each of +which contains the serialized representation of a part of Clang's internal representation. Each of the blocks corresponds to either a block or a record within `LLVM's bitstream format `_. The contents of each of these logical blocks are described below. .. image:: PCHLayout.png -For a given AST file, the `llvm-bcanalyzer -`_ utility can be used -to examine the actual structure of the bitstream for the AST file. This -information can be used both to help understand the structure of the AST file -and to isolate areas where AST files can still be optimized, e.g., through the -introduction of abbreviations. +The ``llvm-objdump`` utility provides a ``-raw-clang-ast`` option to extract the +binary contents of the AST section from an object file container. + +The `llvm-bcanalyzer `_ +utility can be used to examine the actual structure of the bitstream for the AST +section. This information can be used both to help understand the structure of +the AST section and to isolate areas where the AST representation can still be +optimized, e.g., through the introduction of abbreviations. + Metadata Block ^^^^^^^^^^^^^^ -- 2.40.0