[cfe-dev] assembler-with-cpp and debug info

Eli Friedman eli.friedman at gmail.com
Tue Oct 16 17:36:27 PDT 2012


On Tue, Oct 16, 2012 at 5:20 PM, Robinson, Paul
<Paul.Robinson at am.sony.com> wrote:
> If we have a hand-coded assembler source file, and use Clang to process
> it through the preprocessor, the preprocessor leaves behind directives
> of the form
>   # line-number "filename"
> indicating the original source information of the preprocessed file.
> That's all good.
>
> If we use Clang to both preprocess and assemble the file with the integrated
> assembler (i.e., -x assembler-with-cpp), and use -g to get debug info, then
> it turns out the final object file's debug info will refer to the temp file
> that the Clang preprocessor created, not the original source file.  It's
> ignoring the #line-number directives.  That's not so good.
>
> If I use "-no-integrated-as -Wa,-g" instead of just "-g", then the debug info
> comes out the way I want it to, i.e. inferring .debug_line information from
> the #line-number directives.  So, this would be a "gas" compatibility issue.
>
> Is there a way to get the integrated assembler to use the #line-number
> directives for debug info?  Or is this just not implemented yet?

Not yet implemented.  If you're interested, the relevant code for the
locations is getStreamer().EmitDwarfLocDirective in
AsmParser::ParseStatement in llvm/lib/MC/MCParser/AsmParser.cpp , and
the relevant code for '#' parsing is
AsmParser::ParseCppHashLineFilenameComment in the same file.

-Eli



More information about the cfe-dev mailing list