I had a similar problem on mipsel32. At least on that the problem was that the accessor function was calling read_s32 which seems to do the wrong thing on that platform. Fixing that seems to have made it work. I'm in the process of trying to organise a patch.
On Sun, 29 Jul 2018, 18:25 Sergey Korolev, <s.koro...@ndmsystems.com> wrote: > In my opinion a mentioned patch [1] does not work properly > since it defines _UPT_reg_offset elements as > > + [UNW_MIPS_R0] = 0, > + [UNW_MIPS_R1] = 1, > + [UNW_MIPS_R2] = 2, > + [UNW_MIPS_R3] = 3, > + [UNW_MIPS_R4] = 4, > + [UNW_MIPS_R5] = 5, > + [UNW_MIPS_R6] = 6, > + [UNW_MIPS_R7] = 7, > + [UNW_MIPS_R8] = 8, > + [UNW_MIPS_R9] = 9, > + [UNW_MIPS_R10] = 10, > + [UNW_MIPS_R11] = 11, > + [UNW_MIPS_R12] = 12, > + [UNW_MIPS_R13] = 13, > + [UNW_MIPS_R14] = 14, > + [UNW_MIPS_R15] = 15, > + [UNW_MIPS_R16] = 16, > + [UNW_MIPS_R17] = 17, > + [UNW_MIPS_R18] = 18, > + [UNW_MIPS_R19] = 19, > + [UNW_MIPS_R20] = 20, > + [UNW_MIPS_R21] = 21, > + [UNW_MIPS_R22] = 22, > + [UNW_MIPS_R23] = 23, > + [UNW_MIPS_R24] = 24, > + [UNW_MIPS_R25] = 25, > + [UNW_MIPS_R26] = 26, > + [UNW_MIPS_R27] = 27, > + [UNW_MIPS_R28] = 28, > + [UNW_MIPS_R29] = 29, > + [UNW_MIPS_R30] = 30, > + [UNW_MIPS_R31] = 31, > + [UNW_MIPS_PC] = 64, > > but a code in _UPT_access_mem.c expects that _UPT_reg_offset > is a byte offset, and not a word offset or a register index. > > [1] > http://git.savannah.gnu.org/gitweb/?p=libunwind.git;a=commit;h=2a5d1a629634b3225fccb1ed8a0a765bccc77f2e > > On Sun, Jul 29, 2018 at 6:18 PM, Sapir Natan <sapi...@checkpoint.com> > wrote: > >> Hi, >> >> >> >> We are trying to obtain a callgraph using ‘perf’ utility, while running >> on MIPS architecture with linux 3.10 (64Bit processes) >> >> We wish to obtain callgraph on: >> >> · Terminated processes >> >> · Running processes (using –p <pid>) >> >> >> >> Following the resolution that perf is unable to create callgraph on MIPS >> using frame pointer, we tried using libunwind >> >> Since ‘dwarf’ option for perf isn’t part of linux 3.10 (or any other >> version), we added a patch (composed of the following 3 patches): >> >> · >> https://www.linux-mips.org/archives/linux-mips/2013-05/msg00123.html >> >> · >> https://www.linux-mips.org/archives/linux-mips/2013-05/msg00115.html >> >> · >> https://www.linux-mips.org/archives/linux-mips/2016-04/msg00003.html >> >> · As part of the patch we also linked ‘perf’ with ‘libunwind’ >> (open source version *1.2.1*). >> >> >> >> This patch added the ‘dwarf’ capability to ‘perf’ on MIPS, however we >> still couldn’t obtain a usable callgraph (most functions had no trace) >> >> The problem we encountered was that when reaching *‘maps__find´* >> function (*linux/tools/perf/util/map.c*), the binary search for the >> required entry failed (could not be located) >> >> From our investigation, we can support local unwinding but not remote >> (which is the type of unwinding required by ‘perf’) >> >> >> >> Checking online we saw on ‘libunwind’ NEWS: *‘** Mips remote unwind >> support’* for version *1.3*. >> >> We replaced our ‘*1.2.1*’ version with ‘*1.3-rc1*’ and re-checked, >> however the results remained the same (no callgraph). >> >> >> >> Could you please assist? >> >> · What was the issue you encountered that the fix in 1.3 version >> resolved? >> >> · Can the new addition enable ‘perf’ to support callgraph on >> MIPS? >> >> · Did we miss anything in our steps (as described above)? >> >> · Can you advice on the next steps? >> >> >> >> Thanks, >> >> Sapir >> >> >> >> _______________________________________________ >> Libunwind-devel mailing list >> Libunwind-devel@nongnu.org >> https://lists.nongnu.org/mailman/listinfo/libunwind-devel >> >> > _______________________________________________ > Libunwind-devel mailing list > Libunwind-devel@nongnu.org > https://lists.nongnu.org/mailman/listinfo/libunwind-devel >
_______________________________________________ Libunwind-devel mailing list Libunwind-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/libunwind-devel