<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Dec 10, 2014, at 5:22 PM, Richard Smith <<a href="mailto:richard@metafoo.co.uk" class="">richard@metafoo.co.uk</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote">On Wed, Dec 10, 2014 at 2:36 PM, David Majnemer <span dir="ltr" class=""><<a href="mailto:david.majnemer@gmail.com" target="_blank" class="">david.majnemer@gmail.com</a>></span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="">Can we use _cfepch instead?  MSVC linker will silently truncate section names longer than 8 characters.</div></blockquote><div class=""><br class=""></div><div class="">I don't like "cfe"; we should indicate which compiler is involved here. I don't like "pch"; this is used for all kinds of AST files, not just PCH files.</div><div class=""><br class=""></div><div class="">Can we use "ClangAST", or do we need the leading underscore?</div></div></div></div></div></blockquote><div><br class=""></div><div>The double underscores and all lowercase are a naming convention on Mach-O (which doesn’t have the 8 character restriction, though).</div><div>[<a href="https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/index.html" class="">https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachORuntime/index.html</a>]</div><div><br class=""></div><div>Now, we could use different spellings for each platform: “ClangAST” on COFF, and “__clang_ast" on Mach-O, and maybe “.clang_ast" on ELF? It would make the ASTReader code slightly more complicated, but not much.</div><div><br class=""></div>-- adrian<br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="gmail_extra"><div class="gmail_quote"><div class=""> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><div class="gmail_quote"><div class=""><div class="h5">On Wed, Dec 10, 2014 at 2:27 PM, Adrian Prantl <span dir="ltr" class=""><<a href="mailto:aprantl@apple.com" target="_blank" class="">aprantl@apple.com</a>></span> wrote:<br class=""></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class=""><div class="h5">Hi everyone,<br class="">
<br class="">
As the first step in preparation for module debugging (see <a href="http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-November/040076.html" target="_blank" class="">http://lists.cs.uiuc.edu/pipermail/cfe-dev/2014-November/040076.html</a>) 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.<br class="">
<br class="">
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*.<br class="">
On the ASTReader side, any object file is transparently unwrapped and the BitstreamReader is pointed directly to the AST section.<br class="">
<br class="">
Other than the .pcm files having an extra header inside, this patch is not meant to have any user-visible effects.<br class="">
<br class="">
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).<br class="">
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.<br class="">
<br class="">
Let me know what you think!<br class="">
<span class=""><font color="#888888" class=""><br class="">
-- adrian<br class="">
</font></span><br class=""> <br class=""></div></div>_______________________________________________<br class="">
cfe-dev mailing list<br class="">
<a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank" class="">cfe-dev@cs.uiuc.edu</a><br class="">
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank" class="">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br class="">
<br class=""></blockquote></div><br class=""></div>
</blockquote></div><br class=""></div></div>
</div></blockquote></div><br class=""></body></html>