[cfe-dev] Embedding Compiler Invocation in Object Files

Sean Silva via cfe-dev cfe-dev at lists.llvm.org
Tue Jun 14 18:40:53 PDT 2016


On Tue, Jun 14, 2016 at 5:42 PM, Saleem Abdulrasool via cfe-dev <
cfe-dev at lists.llvm.org> wrote:

> On Tue, Jun 14, 2016 at 10:07 AM, Keno Fischer via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> I wanted to revive the idea of adding a feature that would have clang
>> embed its invocation in the created object file (like a compilation
>> database, but internal to the object file). I know this was discussed on
>> the mailing list a few years ago, but as far as I'm aware, there wasn't any
>> progress on this. My use case for this is debugging (rather than
>> reconstruct a clang AST from debug info, just re-parse the correct
>> translation unit and get the complete AST), but I know there are other
>> people interested in this functionality as well. For my use case, I think
>> I'd be happy associating this with the DWARF compilation unit (how to
>> represent this would be something to be discussed, putting it into
>> DW_AT_producer is probably simplest, but there may be other options).
>> Thoughts?
>>
>
> If you wish to embed it into the DWARF data, then there is a well tested
> vendor extension that Apple has in LLVM: DW_AT_APPLE_flags.
>
> That said, I was already looking at adding similar functionality for
> compatibility with GCC (-frecord-gcc-switches).  The way that this works is
> that there is a special section embedded which contains an array of C
> strings which is the command line.  The recorded invocation is the
> *compiler* invocation, not the driver invocation.
>

Neat; I didn't know about this GCC option. Apparently there is also
a -grecord-gcc-switches which uses DW_AT_producer:

"""
This switch causes the command-line options used to invoke the compiler
that may affect code generation to be appended to the DW_AT_producer
attribute in DWARF debugging information. The options are concatenated with
spaces separating them from each other and from the compiler version. It is
enabled by default. See also -frecord-gcc-switches for another way of
storing compiler options into the object file.
""" - https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html

-- Sean Silva



>
>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>>
>
>
> --
> Saleem Abdulrasool
> compnerd (at) compnerd (dot) org
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160614/23776c33/attachment.html>


More information about the cfe-dev mailing list