Hi, lijiang <lijiang@xxxxxxxxxx> writes: > On Mon, Mar 28, 2022 at 9:57 PM Alexander Egorenkov <egorenar@xxxxxxxxxxxxx> > wrote: > >> >> > Where does the symbol '.rodata' come from ? >> > I couldn't find it in x86's vmlinux with nm as well. >> > >> > > The "nm -a" option may be a good choice. > >> On Fedora 34: >> > >> > $ nm /usr/lib/debug/lib/modules/5.16.16-100.fc34.x86_64/vmlinux | grep >> rodata >> > ffffffff82c1d000 D __end_rodata >> > ffffffff82e00000 D __end_rodata_aligned >> > ffffffff82e00000 D __end_rodata_hpage_align >> > ffffffff81199420 t frob_rodata >> > ffffffff81c3eec7 T mark_rodata_ro >> > ffffffff826dd200 D rodata_enabled >> > ffffffff82e2cec0 d rodata_resource >> > ffffffff81352690 T rodata_test >> > ffffffff81c50238 t rodata_test.cold >> > ffffffff8223d9d0 d rodata_test_data >> > ffffffff836c2c36 t set_debug_rodata >> > ffffffff838ff890 d __setup_set_debug_rodata >> > ffffffff838b4b18 d __setup_str_set_debug_rodata >> > ffffffff82200000 D __start_rodata >> > >> > Regards >> > Alex >> >> Found the reason why all symbols starting with '.' are dropped for s390x >> >> /* >> * Accept or reject a symbol from the kernel namelist. >> */ >> static int >> s390x_verify_symbol(const char *name, ulong value, char type) >> { >> int i; >> >> ... >> >> /* throw away all symbols containing a '.' */ >> for(i = 0; i < strlen(name);i++){ >> if(name[i] == '.') <-------------- !!! >> return FALSE; >> } >> >> return TRUE; >> } >> >> >> But i have no idea why. Anybody familiar with this ? >> > > I guess that it is to filter out some duplicated or unneeded symbols in > crash-utility, especially for the old kernel. No more changelogs. > > Thanks. > Lianbo > > >> Thanks >> Regards >> Alex >> >> > This Message Is From an External Sender > This message came from outside your organization. > On Mon, Mar 28, 2022 at 9:57 PM Alexander Egorenkov <egorenar@xxxxxxxxxxxxx> wrote: > > > Where does the symbol '.rodata' come from ? > > I couldn't find it in x86's vmlinux with nm as well. > > > > > The "nm -a" option may be a good choice. > Thanks! > > On Fedora 34: > > > > $ nm /usr/lib/debug/lib/modules/5.16.16-100.fc34.x86_64/vmlinux | grep rodata > > ffffffff82c1d000 D __end_rodata > > ffffffff82e00000 D __end_rodata_aligned > > ffffffff82e00000 D __end_rodata_hpage_align > > ffffffff81199420 t frob_rodata > > ffffffff81c3eec7 T mark_rodata_ro > > ffffffff826dd200 D rodata_enabled > > ffffffff82e2cec0 d rodata_resource > > ffffffff81352690 T rodata_test > > ffffffff81c50238 t rodata_test.cold > > ffffffff8223d9d0 d rodata_test_data > > ffffffff836c2c36 t set_debug_rodata > > ffffffff838ff890 d __setup_set_debug_rodata > > ffffffff838b4b18 d __setup_str_set_debug_rodata > > ffffffff82200000 D __start_rodata > > > > Regards > > Alex > > Found the reason why all symbols starting with '.' are dropped for s390x > > /* > * Accept or reject a symbol from the kernel namelist. > */ > static int > s390x_verify_symbol(const char *name, ulong value, char type) > { > int i; > > ... > > /* throw away all symbols containing a '.' */ > for(i = 0; i < strlen(name);i++){ > if(name[i] == '.') <-------------- !!! > return FALSE; > } > > return TRUE; > } > > But i have no idea why. Anybody familiar with this ? > > > I guess that it is to filter out some duplicated or unneeded symbols in crash-utility, especially for the old kernel. No more changelogs. > Do you think it makes sense to add an exception for '.rodata' symbol to s390x_verify_symbol() ? Something like: if (STREQ(name), ".rodata")) return TRUE; I did a quick test and it works on s390x as well. Thanks Regards Alex -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/crash-utility Contribution Guidelines: https://github.com/crash-utility/crash/wiki