Messages in this thread | | | Subject | Re: [PATCH] [RFC V1]s390/perf: fix 'start' address of module's map | From | Songshan Gong <> | Date | Wed, 13 Jul 2016 11:32:11 +0800 |
| |
I send this email to test the connection to linux-kernel maillist. Just ignore.
在 7/11/2016 4:11 PM, Songshan Gong 写道: > > > 在 7/8/2016 11:18 PM, Jiri Olsa 写道: >> On Thu, Jul 07, 2016 at 09:49:36AM +0800, Song Shan Gong wrote: >>> At preset, when creating module's map, perf gets 'start' address by >>> parsing >>> 'proc/modules', but it's module base address, isn't the start address of >>> '.text' section. In most archs, it's OK. But for s390, it places >>> 'GOT' and >>> 'PLT' relocations before '.text' section. So there exists an offset >>> between >>> module base address and '.text' section, which will incur wrong symbol >>> resolution for modules. >>> >>> Fix this bug by getting 'start' address of module's map from parsing >>> '/sys/module/[module name]/sections/.text', not from '/proc/modules'. >> >> cool, does this fix the 'perf test 1' for s390? that'd be great > > I've checked, 'perf test 1' is still failed. But the test is for testing > whether 'vmlinux symtab matches kallsyms'. For vmlinux, it's built when > compiling linux-kernel, so there's no any symbol info about module. For > kallsyms, when loading, it also splits kernel symbols with module > symbols. But this patch is intended to fix wrong symbol resolution for > modules, so I think there's no relationship between this patch and the > testcase 'perf test 1'. > > I also debuged the reason why 'perf test 1' fails, there are two reasons > at least: > 1. perf gets kernel start address by finding the first no-zero value of > symbols {'_text', '_stext'} in /proc/kallsyms; for s390, it's always > '_stext', but actually, '_stext' is not the first symbol in s390, there > are other symbols before '_stext', for example 'iplstart'. > 2. In addition, when loading by parsing /proc/kallsyms, if the kernel > map start value is a non-zero value getting from '_stext', because > '_text' is zero, it will not be included in kernel map; but for vmlinux, > it always add '_text' to kernel map whether '_text' is zero or not. So > if '_text' is zero, whether adding '_text' to kernel map, it's > non-consistent for loading by /proc/kallsyms and vmlinux. > > I'll try to fix this bug later. > > Thanks for your comments. > >> I'll send few coments shortly >> >> thanks, >> jirka >> >
-- SongShan Gong
| |