Re: [PATCH 12/52] perf annotate-data: Add find_data_type()

From: Namhyung Kim
Date: Mon Nov 20 2023 - 15:43:20 EST


Hi Arnaldo,

On Sat, Nov 11, 2023 at 10:55 AM Arnaldo Carvalho de Melo
<arnaldo.melo@xxxxxxxxx> wrote:
>
> On Thu, Nov 9, 2023, 9:00 PM Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>>
>>
>> +static bool find_cu_die(struct debuginfo *di, u64 pc, Dwarf_Die *cu_die)
>> +{
>> + Dwarf_Off off, next_off;
>> + size_t header_size;
>> +
>> + if (dwarf_addrdie(di->dbg, pc, cu_die) != NULL)
>> + return cu_die;
>
> Isn't the return type a bool?
>
> Shouldn't be 'return true;'?
>
> Ends up like that as cu_die isn't NULL, but looks confusing.

Ok, will change.

>
>> +
>> + /*
>> + * There are some kernels don't have full aranges and contain only a few
>> + * aranges entries. Fallback to iterate all CU entries in .debug_info
>> + * in case it's missing.
>> + */
>> + off = 0;
>> + while (dwarf_nextcu(di->dbg, off, &next_off, &header_size,
>> + NULL, NULL, NULL) == 0) {
>> + if (dwarf_offdie(di->dbg, off + header_size, cu_die) &&
>> + dwarf_haspc(cu_die, pc))
>> + return true;
>> +
>> + off = next_off;
>> + }
>> + return false;
>> +}
>> +
>>
>> +struct annotated_data_type *find_data_type(struct map_symbol *ms, u64 ip,
>> + int reg, int offset)
>> +{
>> + struct annotated_data_type *result = NULL;
>> + struct dso *dso = ms->map->dso;
>> + struct debuginfo *di;
>> + Dwarf_Die type_die;
>> + struct strbuf sb;
>> + u64 pc;
>> +
>> + di = debuginfo__new(dso->long_name);
>> + if (di == NULL) {
>> + pr_debug("cannot get the debug info\n");
>
>
> Shouldn't inform the dso->long_name and function name to ease debugging?

Sounds good, I'll update it in the v3.

Thanks,
Namhyung