Hi Jirka, On Tue, Jun 25, 2013 at 5:37 PM, Prabhat Kumar Ravi <prabhatrav...@gmail.com> wrote: > Hi Jirka, > > As _stext getting removed in > > dso__load_kallsyms > --> symbols__fixup_duplicate (here _stext removed) > > as we have same address in /proc/kallsyms for _stext, asm_do_IRQ and > __exception_text_start > > So, we need to disable symbols__fixup_duplicate in dso__load_kallsyms, > > Prabhat > > On Tue, Jun 25, 2013 at 2:37 PM, Jiri Olsa <jo...@redhat.com> wrote: >> On Tue, Jun 25, 2013 at 11:24:56AM +0530, Prabhat Kumar Ravi wrote: >>> On 3.4-rc49, I got following failure running `perf test`: >>> >>> / # perf test -v 1 >>> 1: vmlinux symtab matches kallsyms: >>> --- start --- >>> dso__find_symbol_by_name ---- end ---- >>> vmlinux symtab matches kallsyms: FAILED! >>> >>> Perf test is failing at dsofind_symbol_by_name >>> >>> where >>> >>> kallsyms_map = machine__kernel_map(&kallsyms, type); >>> >>> sym = map__find_symbol_by_name(kallsyms_map, ref_reloc_sym.name, NULL); >>> if (sym == NULL) { >>> pr_debug("dso__find_symbol_by_name "); >>> goto out; >>> } >>> >>> Here sym is search for "_stext" which is NULL here so perf test fails >>> here only. >>> >>> On investigation found that _stext having same address as asm_do_IRQ >>> and exception_text_start, >>> >>> c00081c0 T asm_do_IRQ >>> c00081c0 T _stext >>> c00081c0 T __exception_text_start >>> >>> so being deleted by symbolsfixup_duplicate in >>> >>> if (choose_best_symbol(curr, next) == SYMBOL_A) { >>> >>> rb_erase(&next->rb_node, symbols); --> symbole >>> getting erase here. >>> goto again; >>> } else { >>> >>> >> >> I recently fixed this test for another kind of error rising from >> the /proc/kallsyms being not as precise as vmlinux file. This one >> looks like another one. >> >> acme's tree: >> b8bae2c perf tests: Omit end of the symbol check failure for test 1 >> >>> My doubt is, Is we really need this commit??: >>> >>> commit 3f5a42722b9e78a434d5a4ee5e607dc33c69ac80 >>> Author: Anton Blanchard <an...@samba.org> >>> Date: Wed Aug 24 16:40:15 2011 +1000 >>> >>> perf symbols: /proc/kallsyms does not sort module symbols >>> >>> kallsyms__parse assumes that /proc/kallsyms is sorted and sets the end >>> of the previous symbol to the start of the current one. >>> >>> Unfortunately module symbols are not sorted, eg: >>> >>> ffffffffa0081f30 t e1000_clean_rx_irq [e1000e] >>> ffffffffa00817a0 t e1000_alloc_rx_buffers [e1000e] >>> >>> Some symbols end up with a negative length and others have a length >>> larger than they should. This results in confusing perf output. >>> >>> We already have a function to fixup the end of zero length symbols so >>> use that instead. >>> >>> Or we can search for other string.?? >> >> This one looks important, I think we should fix the test again. >> Maybe bisable duplicates removal for test? Keep removed symbols >> list? ;-) >> >> jirka
Thanks for your input otherwise I am thinking to change _stext to some other symbol. - Prabhat -- To unsubscribe from this list: send the line "unsubscribe linux-perf-users" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html