[DebugInfo] Support typedef with btf_decl_tag attributes
authorYonghong Song <yhs@fb.com>
Tue, 21 Sep 2021 00:08:46 +0000 (17:08 -0700)
committerYonghong Song <yhs@fb.com>
Thu, 21 Oct 2021 15:42:58 +0000 (08:42 -0700)
commitf6811cec84218912d1c7c9b0b8d308834e6e24e3
tree15b23446b7dc3fca8d088410142a915d17726906
parentb396010240cda92f5fcfa30cba1b9ad905561eae
[DebugInfo] Support typedef with btf_decl_tag attributes

Clang patch ([1]) added support for btf_decl_tag attributes with typedef
types. This patch added llvm support including dwarf generation.
For example, for typedef
   typedef unsigned * __u __attribute__((btf_decl_tag("tag1")));
   __u u;
the following shows llvm-dwarfdump result:
   0x00000033:   DW_TAG_typedef
                   DW_AT_type      (0x00000048 "unsigned int *")
                   DW_AT_name      ("__u")
                   DW_AT_decl_file ("/home/yhs/work/tests/llvm/btf_tag/t.c")
                   DW_AT_decl_line (1)

   0x0000003e:     DW_TAG_LLVM_annotation
                     DW_AT_name    ("btf_decl_tag")
                     DW_AT_const_value     ("tag1")

   0x00000047:     NULL

  [1] https://reviews.llvm.org/D110127

Differential Revision: https://reviews.llvm.org/D110129
clang/lib/CodeGen/CGDebugInfo.cpp
clang/test/CodeGen/attr-btf_tag-typedef.c [new file with mode: 0644]
llvm/include/llvm/IR/DIBuilder.h
llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp
llvm/lib/IR/DIBuilder.cpp
llvm/test/Bitcode/attr-btf_tag-typedef.ll [new file with mode: 0644]
llvm/test/DebugInfo/X86/attr-btf_tag-typedef.ll [new file with mode: 0644]