Hi Dave,
Sorry for late reply, was busy with something else.
On 3/7/19 8:50 PM, Dave Anderson wrote:
>> We are using ELFXX_sym->st_info directly as the
'type' of symbol,
>> which is wrong, because st_info contains numeric value which needs
>> to be mapped to appropriate type character.
>
> I'm confused here. If I dump each module symbol's st_info fields as they
are
> being read/initialized, they always contain the unsigned char ASCII value for
> either 't', 'r', 'd', 'b' or 'w'. What do
you mean that it needs to be mapped
> to the appropriate type character?
And for that matter, since your patch marks all module symbols as type '?',
commands like "dis" fail to recognize a module text address as such, and
therefore fails to complete the command. For example, without the patch:
crash> sym dm_put
ffffffffa0000520 (t) dm_put [dm_mod]
crash> dis dm_put
0xffffffffa0000520 <dm_put>: nopl 0x0(%rax,%rax,1) [FTRACE NOP]
0xffffffffa0000525 <dm_put+5>: push %rbp
0xffffffffa0000526 <dm_put+6>: mov %rsp,%rbp
0xffffffffa0000529 <dm_put+9>: lock decl 0x180(%rdi)
0xffffffffa0000530 <dm_put+16>: pop %rbp
0xffffffffa0000531 <dm_put+17>: retq
crash>
The problem happens only with module symbols, not with kallsyms.
crash> sym -M
c008000007810000 MODULE START: crc32c_vpmsum
c008000007810000 (^R) __crc32c_vpmsum
c008000007810670 (^B) crc32c_vpmsum_cra_init
c008000007810690 (^B) crc32c_vpmsum_setkey