From: Zwane M. <zw...@li...> - 2004-02-23 06:15:21
|
This patch fixes the listing of symbols within the kernel image on ARM i was having. The problem was due to the fact that ARM/Linux kernel text starts with a section called .init unlike all the currently supported Linux architectures. So the solution is to start at section 0 Index: libutil++/op_bfd.cpp =================================================================== RCS file: /cvsroot/oprofile/oprofile/libutil++/op_bfd.cpp,v retrieving revision 1.47 diff -u -p -B -r1.47 op_bfd.cpp --- libutil++/op_bfd.cpp 27 Jan 2004 22:44:10 -0000 1.47 +++ libutil++/op_bfd.cpp 23 Feb 2004 05:49:15 -0000 @@ -215,13 +215,17 @@ op_bfd::op_bfd(string const & fname, str } { + asection *sect; - asection const * sect = bfd_get_section_by_name(ibfd, ".text"); - if (sect) { - text_offset = sect->filepos; - io_state state(cverb << vbfd); - cverb << vbfd - << ".text filepos " << hex << text_offset << endl; + // find the first text section as use that as text_offset + for (sect = ibfd->sections; sect; sect = sect->next) { + if (sect->flags & SEC_CODE) { + text_offset = sect->filepos; + io_state state(cverb << vbfd); + cverb << vbfd << sect->name << " filepos " + << hex << text_offset << endl; + break; + } } for (sect = ibfd->sections; sect; sect = sect->next) { Index: utils/opcontrol =================================================================== RCS file: /cvsroot/oprofile/oprofile/utils/opcontrol,v retrieving revision 1.105 diff -u -p -B -r1.105 opcontrol --- utils/opcontrol 15 Feb 2004 16:14:22 -0000 1.105 +++ utils/opcontrol 23 Feb 2004 05:49:16 -0000 @@ -389,8 +389,10 @@ get_kernel_range() return; fi - range_info=`objdump -h $VMLINUX 2>/dev/null | grep " .text "` + # start from section 0 and then continue till end of .text + range_info=`objdump -h $VMLINUX 2>/dev/null | grep -w "0 "` tmp1=`echo $range_info | awk '{print $4}'` + range_info=`objdump -h $VMLINUX 2>/dev/null | grep " .text "` tmp_length=`echo $range_info | awk '{print $3}'` tmp2=`objdump -h $VMLINUX --adjust-vma=0x$tmp_length 2>/dev/null | grep " .text " | awk '{print $4}'` |
From: Philippe E. <ph...@wa...> - 2004-02-28 20:22:48
|
On Mon, 23 Feb 2004 at 01:07 +0000, Zwane Mwaikambo wrote: > This patch fixes the listing of symbols within the kernel image on ARM i > was having. The problem was due to the fact that ARM/Linux kernel text > starts with a section called .init unlike all the currently supported > Linux architectures. So the solution is to start at section 0 > > Index: libutil++/op_bfd.cpp > =================================================================== > RCS file: /cvsroot/oprofile/oprofile/libutil++/op_bfd.cpp,v > retrieving revision 1.47 > diff -u -p -B -r1.47 op_bfd.cpp > --- libutil++/op_bfd.cpp 27 Jan 2004 22:44:10 -0000 1.47 > +++ libutil++/op_bfd.cpp 23 Feb 2004 05:49:15 -0000 > @@ -215,13 +215,17 @@ op_bfd::op_bfd(string const & fname, str > } > > { > + asection *sect; + asection const * sect; applied, thanks Zwane So if anyone see weirds behavior with opreport -l on vmlinux or a module please report it ... regarsd, Phil |