clayborg added a comment. In http://reviews.llvm.org/D22294#483213, @sas wrote:
> @jingham, @clayborg, this is indeed a bit fragile as having to specify your > rewrite maps manually when debugging is very error-prone. I have a patch that > fetches the path to the rewrite map from the debug info, I'm waiting for this > one to go in to upload that other diff (trying to make changes smaller so the > review is easier). The way I do this is by looking at the flags that were > passed to the compiler, and get the path to the rewrite map from there > automatically, which then requires no user interaction for this to work. If we have the compiler modify the DWARF by adding a linkage name to the appropriate DW_TAG_subproggram, then we won't need any rewrite file stuff at all. In http://reviews.llvm.org/D22294#483242, @fjricci wrote: > @clayborg: As you saw when running the test with debug info enabled, we might > end up calling the non-rewritten `putchar()`, which is due to the compiler > emitting debug symbols with the non-rewritten name. The `-g0` option is just > a workaround until we can fix that. > > I suppose Adrian Prantl's idea of modifying the emitted DWARF to add a > linkage name attached to the function would work. Does that mean we would > only add an entry for the rewritten symbol when lldb parses the DWARF, and > ignore the non-rewritten function name? Basically the DWARF currently looks like: 0x0000002e: DW_TAG_subprogram [2] * DW_AT_low_pc( 0x0000000000000000 ) DW_AT_high_pc( 0x000000000000000e ) DW_AT_frame_base( rbp ) DW_AT_name( "putchar" ) DW_AT_decl_file( "/Volumes/work/gclayton/Desktop/symbol_rewriter/main.c" ) DW_AT_decl_line( 3 ) DW_AT_prototyped( 0x01 ) DW_AT_type( {0x0000007a} ( int ) ) DW_AT_external( 0x01 ) And we would modify it to emit this: 0x0000002e: DW_TAG_subprogram [2] * DW_AT_low_pc( 0x0000000000000000 ) DW_AT_high_pc( 0x000000000000000e ) DW_AT_frame_base( rbp ) DW_AT_name( "putchar" ) DW_AT_linkage_name( "__my_putchar" ) <<< Added by compiler DW_AT_decl_file( "/Volumes/work/gclayton/Desktop/symbol_rewriter/main.c" ) DW_AT_decl_line( 3 ) DW_AT_prototyped( 0x01 ) DW_AT_type( {0x0000007a} ( int ) ) DW_AT_external( 0x01 ) If we do this, then we don't need any modifications for the rewrite stuff at all? http://reviews.llvm.org/D22294 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits