----- Original Message -----
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
Hi Ravi,
I have never seen this before, but nonetheless, it does seem that Steve's patch
to the trace.c module is the better course of action. Does it work OK for you?
Dave