[PATCH] D103131: support debug info for alias variable

kamlesh kumar via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jun 22 01:48:20 PDT 2021


kamleshbhalui added a comment.

In D103131#2815386 <https://reviews.llvm.org/D103131#2815386>, @probinson wrote:

>>>   0x0000002a:   DW_TAG_variable
>>>                   DW_AT_name      ("oldname")
>>>                   DW_AT_type      (0x0000003f "int")
>>>                   DW_AT_external  (true)
>>>                   DW_AT_decl_file ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin/test.c")
>>>                   DW_AT_decl_line (1)
>>>                   DW_AT_location  (DW_OP_addr 0x0)
>>>   
>>>   0x0000003f:   DW_TAG_base_type
>>>                   DW_AT_name      ("int")
>>>                   DW_AT_encoding  (DW_ATE_signed)
>>>                   DW_AT_byte_size (0x04)
>>>   
>>>   0x00000046:   DW_TAG_variable
>>>                   DW_AT_name      ("newname")
>>>                   DW_AT_type      (0x0000003f "int")
>>>                   DW_AT_decl_file ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin/test.c")
>>>                   DW_AT_decl_line (2)
>>>                   DW_AT_declaration       (true)
>>>   
>>>   0x00000051:   DW_TAG_imported_declaration
>>>                   DW_AT_decl_file ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin/test.c")
>>>                   DW_AT_decl_line (2)
>>>                   DW_AT_import    (0x00000046)
>>>                   DW_AT_name      ("newname")
>
> I agree with David, this sequence doesn't seem to do what's desired.
> There's nothing that ties "newname" to "oldname" here.  What you 
> want is something more like this:
>
>   0x0000002a: DW_TAG_variable
>                  DW_AT_name ("oldname")
>                  ...
>   0x0000003a: DW_TAG_imported_declaration
>                  DW_AT_import (0x0000002a)
>                  DW_AT_name ("newname")
>
> That is, there would not be a separate DW_TAG_variable for "newname";
> instead, the imported_declaration would import the DIE for "oldname"
> giving it the name "newname".
>
> --paulr

Even this does not work with gdb.
Here is what gdb says,

   (gdb) ptype newname
  type = <data variable, no debug info>
   (gdb) p newname
  'newname' has unknown type; cast it to its declared type
   (gdb) p oldname
   $1 = 1
   (gdb) ptype oldname
   type = int
   (gdb)  
   --------------
   dumped debug info (using llvm-dwarfdump)
   test.o: file format elf64-x86-64
   
   .debug_info contents:
   0x00000000: Compile Unit: length = 0x00000067, format = DWARF32, version = 0x0004, abbr_offset = 0x0000, addr_size = 0x08 (next unit at 0x0000006b)
   
   0x0000000b: DW_TAG_compile_unit
                 DW_AT_producer    ("clang version 13.0.0 (git at github.com:llvm/llvm-project.git 4cd7169f5517167ef456e82c6dcae669bde6c725)")
                 DW_AT_language    (DW_LANG_C99)
                 DW_AT_name        ("test.c")
                 DW_AT_stmt_list   (0x00000000)
                 DW_AT_comp_dir    ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin")
                 DW_AT_low_pc      (0x0000000000000000)
                 DW_AT_high_pc     (0x0000000000000008)
   
   0x0000002a:   DW_TAG_variable
                   DW_AT_name      ("oldname")
                   DW_AT_type      (0x0000003f "int")
                   DW_AT_external  (true)
                   DW_AT_decl_file ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin/test.c")
                   DW_AT_decl_line (1)
                   DW_AT_location  (DW_OP_addr 0x0)
   
   0x0000003f:   DW_TAG_base_type
                   DW_AT_name      ("int")
                   DW_AT_encoding  (DW_ATE_signed)
                   DW_AT_byte_size (0x04)
   
   0x00000046:   DW_TAG_imported_declaration
                   DW_AT_decl_file ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin/test.c")
                   DW_AT_decl_line (2)
                   DW_AT_import    (0x0000002a)
                   DW_AT_name      ("newname")
   
   0x00000051:   DW_TAG_subprogram
                   DW_AT_low_pc    (0x0000000000000000)
                   DW_AT_high_pc   (0x0000000000000008)
                   DW_AT_frame_base        (DW_OP_reg6 RBP)
                   DW_AT_name      ("main")
                   DW_AT_decl_file ("/folk/kkumar/tcllvm/llvm-build-lldb-rel/bin/test.c")
                   DW_AT_decl_line (3)
                   DW_AT_type      (0x0000003f "int")
                   DW_AT_external  (true)
   
   0x0000006a:   NULL
   
   




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103131/new/

https://reviews.llvm.org/D103131



More information about the cfe-commits mailing list