[cfe-dev] [PATCH] Wrap clang modules inside Mach-O/ELF/COFF containers

David Majnemer david.majnemer at gmail.com
Wed Dec 10 14:36:52 PST 2014


Can we use _cfepch instead?  MSVC linker will silently truncate section
names longer than 8 characters.

On Wed, Dec 10, 2014 at 2:27 PM, Adrian Prantl <aprantl at apple.com> wrote:

> Hi everyone,
>
> As the first step in preparation for module debugging (see
> http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-November/040076.html)
> this patch turns the *.pcm files that are used to store clang modules and
> precompiled headers in a platform-dependent Mach-O/ELF/COFF container, so
> that eventually we will be able to store debug information alongside the
> module in the same file.
>
> This is implemented by using the standard LLVM code generation machinery.
> Instead of directly writing to the output file, the serialized AST blob is
> attached to an empty llvm::Module as a ModuleFlag. The module is passed to
> the backend which emits the AST blob into a special “__clang_pch" section
> in TargetLoweringObjectFile*.
> On the ASTReader side, any object file is transparently unwrapped and the
> BitstreamReader is pointed directly to the AST section.
>
> Other than the .pcm files having an extra header inside, this patch is not
> meant to have any user-visible effects.
>
> Known bugs: I still need to figure out how to make c-index-test link
> against and register the available targets (check-all passes, but the
> modules created by c-index-test currently are plain old .pcm files).
> Open questions: I made up the name of the new __clang_pch section and the
> various flags on the different platforms on the spot. I’m open to better
> suggestions.
>
> Let me know what you think!
>
> -- adrian
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20141210/373b4b2c/attachment.html>


More information about the cfe-dev mailing list