[cfe-dev] Embedding Compiler Invocation in Object Files

Saleem Abdulrasool via cfe-dev cfe-dev at lists.llvm.org
Tue Jun 14 19:15:44 PDT 2016


On Tue, Jun 14, 2016 at 6:40 PM, Sean Silva <chisophugis at gmail.com> wrote:

>
>
> 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
>

Yeah, the -grecord-gcc-switches is slightly different in that it records a
subset of them (code generation effecting ones only).


> -- 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
>>
>>
>


-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20160614/d4edef5e/attachment.html>


More information about the cfe-dev mailing list