https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112768

            Bug ID: 112768
           Summary: btf: fix asm comment output for BTF_KIND_FUNC* kinds
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ibhagat at gcc dot gnu.org
  Target Milestone: ---

The BTF type of kind BTF_KIND_FUNC_PROTO is always anonymous.  The
machinery, via btf_collect_datasec (), resets the ctti_name to 0 to
reflect that.  The name string in the (ctf) type contained in the CTF
container is, however, not updated.  The latter is used to emit the type
name in the asm comment output.

E.g., for gcc/testsuite/gcc.dg/debug/btf/btf-function-6.c:

extern int extfunc(int a, int b);

int foo (int x) {

  int y = extfunc (x, x+1);

  return y;
}

a user may see the following in the comments in the -dA output:

    .long   0       # TYPE 2 BTF_KIND_FUNC_PROTO 'extfunc'
    .long   0xd000002       # btt_info: kind=13, kflag=0, vlen=2
    .long   0x1     # btt_type: (BTF_KIND_INT 'int')
    .long   0       # farg_name
    .long   0x1     # farg_type: (BTF_KIND_INT 'int')
    .long   0       # farg_name
    .long   0x1     # farg_type: (BTF_KIND_INT 'int')
    .long   0       # TYPE 3 BTF_KIND_FUNC_PROTO 'foo'
    .long   0xd000001       # btt_info: kind=13, kflag=0, vlen=1
    .long   0x1     # btt_type: (BTF_KIND_INT 'int')
    .long   0x68    # farg_name
    .long   0x1     # farg_type: (BTF_KIND_INT 'int')
    .long   0x5     # TYPE 4 BTF_KIND_FUNC '(null)'
    .long   0xc000002       # btt_info: kind=12, kflag=0, linkage=2
    .long   0x2     # btt_type: (BTF_KIND_FUNC_PROTO 'extfunc')
    .long   0xd     # TYPE 5 BTF_KIND_FUNC '(null)'
    .long   0xc000001       # btt_info: kind=12, kflag=0, linkage=1
    .long   0x3     # btt_type: (BTF_KIND_FUNC_PROTO 'foo')

The above may cause confusion to the reader:
- Types of kind BTF_KIND_FUNC_PROTO are displayed with a name.
- BTF_KIND_FUNC appears with 'null'

It will be ideal to display:
- BTF_KIND_FUNC_PROTO as anonymous
- BTF_KIND_FUNC with the name of the function

Reply via email to