[llvm-dev] Wrong Debuginfo generated for global variable with target bpf

Jaydeep Chauhan via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 12 12:24:09 PST 2020


Hi All,

Please consider below test case for discussion

$cat global.h
extern int gvar;

$ cat p1.c
#include "global.h"
int gvar=11;

int foo()
{
 return gvar;
}

$./clang p1.c -g  -O0  -target bpf -c
...
...
0x0000002a:   DW_TAG_variable
                DW_AT_name      ("gvar")
                DW_AT_type      (0x0000003f "int")
                DW_AT_external  (true)
                DW_AT_decl_file ("/home/llvm-project/build/bin/p1.c")
                DW_AT_decl_line (2)
                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      ("gvar")
                DW_AT_type      (0x0000003f "int")
                DW_AT_external  (true)
                DW_AT_decl_file ("/home/llvm-project/build/bin/./global.h")
                DW_AT_decl_line (1)
                DW_AT_declaration       (true)
                DW_AT_location  (DW_OP_addr 0x0)
...
...
In above test case for variable "gvar" debuginfo is created twice.
Look like it is considering variable "gvar" of source file and header
file variable different.Also for second time in "gvar" debuginfo
declaration as well as location  attributes is there.

This is happen with for target bpf only.And this behavior is may be
because of https://reviews.llvm.org/D70696#1774931 this changes.

Please devs share your valuable suggestion/thoughts on this.

Thanks,
Jaydeep.


More information about the llvm-dev mailing list