From: Michal Simek <monstr@monstr.eu>
To: steve@digidescorp.com
Cc: linux-kernel@vger.kernel.org, microblaze-uclinux@itee.uq.edu.au
Subject: Re: [microblaze-uclinux] Re: [PATCH 1/2] microblaze: add stack unwinder
Date: Tue, 27 Apr 2010 09:57:47 +0200 [thread overview]
Message-ID: <4BD698FB.1030904@monstr.eu> (raw)
In-Reply-To: <1272339401.17476.7.camel@iscandar.digidescorp.com>
Steven J. Magnani wrote:
> On Mon, 2010-04-26 at 17:34 +0200, Michal Simek wrote:
>
>> I finally looked at it and here is what I found.
>>
>> # ./reboot
>> Restarting system.
>> Machine restart...
>> Machine shutdown...
>> Stack:
>> 4f3ffdc8: 48004aec 00000008
>> 4f3ffdd0: 00000000 00000001 4f3e0150 00000001 4f3ffdec 48004b14 481dc68c
>> 48241318
>> 4f3ffdf0: ffffffff 00001099 00003fff 482f49cc 4801f518 481dc6a4 48241318
>> ffffffff
>> 4f3ffe10: 00001083 00003fff 482f49cc 48020150 481e3048 00000000 000001a2
>> 00000000
>> 4f3ffe30: 00000000 00000000 28121969 48006b38 48240dc0 481d549c 481d53a8
>> 481d549c
>> 4f3ffe50: 00aa4812 481d523c 0000c350 00000035 48029618 4f3ffe70 000001a2
>> 4f96c04c
>> 4f3ffe70: 481d6390 0000c350 4f3fff58 4f3ffee0 481d639c 481d6370 00000009
>> 4f3ffee0
>> 4f3ffe90: 00000000 00000000 00000000 4f3ffee0 48029df4 00000001 4f3e0150
>> 00000001
>> 4f3ffeb0: 00000001 00000001 00000000 00000001 00000001 48029f34 4801b2a8
>> 4800c5e0
>> 4f3ffed0: 00000020 00000000 0000c350 00000000 00000001 00000000 00000000
>> 00000035
>> 4f3ffef0: 00ab0b62 00000035 00aa4812 480294e0 482425c0 00000000 00000000
>> 00000000
>> 4f3fff10: 0000c350 00000001 0000c350 4f3ead40 4f3fff58 00000001 00000000
>> 00000000
>> 4f3fff30: 00000001 4f3e0150 00000001 48006b38 00000000 4f3eaf68 00000000
>> 00010000
>> 4f3fff50: 00000000 00000000 00000000 fee1dead 01234567 00000000 00000000
>> 4f3eaebc
>> 4f3fff70: 00000000 00000000 00000000 fee1dead 28121969 01234567 00000008
>> 00000000
>> 4f3fff90: 00000000 28121969 00000058 00000000 4f3e0320 4f3e0274 00000000
>> 00000000
>> 4f3fffb0: 7fffff82 00000000 00000000 00000000 fee1dead 01234567 00000000
>> 00000000
>> 4f3fffd0: 00000001 4f3e0150 00000001 00000000 00000000 4f96c04c 4f3e0324
>> 000001a0
>> 4f3ffff0: 00000000 00000000 000001a0 00000000
>>
>>
>> Call Trace:
>> Unwinding with PC=480050d4, FP=4f3ffd74
>> [<480050d4>] microblaze_unwind+0xa8/0xc4
>> pc 0x480050ac instr 0x30210024
>> Invalid frame size -36 at 0x480050ac
>> Failed to find previous stack frame
>>
>> Below is the dump - then you can see that 36 is correct.
>> That could be due to different toolchain behavior.
>>
>> Thanks,
>> Michal
>>
>>
>> 4800502c <microblaze_unwind>:
>> 4800502c: b000482f imm 18479
>> 48005030: e86043a8 lwi r3, r0, 17320 // 482f43a8 <mbc>
>> 48005034: 3021ffdc addik r1, r1, -36
>> 48005038: fa61001c swi r19, r1, 28
>> 4800503c: fac10020 swi r22, r1, 32
>> 48005040: f9e10000 swi r15, r1, 0
>> 48005044: e8830020 lwi r4, r3, 32
>> 48005048: 12650000 addk r19, r5, r0
>> 4800504c: 99fc2000 brald r15, r4
>> 48005050: 12c60000 addk r22, r6, r0
>> 48005054: b000482f imm 18479
>> 48005058: e86043a8 lwi r3, r0, 17320 // 482f43a8 <mbc>
>> 4800505c: e8830008 lwi r4, r3, 8
>> 48005060: 99fc2000 brald r15, r4
>> 48005064: 80000000 or r0, r0, r0
>> 48005068: be130068 beqid r19, 104 // 480050d0
>> 4800506c: 10b30000 addk r5, r19, r0
>> 48005070: b0004800 imm 18432
>> 48005074: 30c069e0 addik r6, r0, 27104 // 480069e0
>> <_switch_to>
>> 48005078: 165f9800 rsubk r18, r31, r19
>> 4800507c: be120034 beqid r18, 52 // 480050b0
>> 48005080: 11360000 addk r9, r22, r0
>> 48005084: e8730004 lwi r3, r19, 4
>> 48005088: 10b30000 addk r5, r19, r0
>> 4800508c: e903004c lwi r8, r3, 76
>> 48005090: e8e3003c lwi r7, r3, 60
>> 48005094: b9f4fc7c brlid r15, -900 // 48004d10
>> <microblaze_unwind_inner>
>> 48005098: 11360000 addk r9, r22, r0
>> 4800509c: e9e10000 lwi r15, r1, 0
>> 480050a0: ea61001c lwi r19, r1, 28
>> 480050a4: eac10020 lwi r22, r1, 32
>> 480050a8: b60f0008 rtsd r15, 8
>> 480050ac: 30210024 addik r1, r1, 36
>> 480050b0: e8730004 lwi r3, r19, 4
>> 480050b4: 30631f68 addik r3, r3, 8040
>> 480050b8: e903003c lwi r8, r3, 60
>> 480050bc: e8c30080 lwi r6, r3, 128
>> 480050c0: e8e30004 lwi r7, r3, 4
>> 480050c4: b9f4fc4c brlid r15, -948 // 48004d10
>> <microblaze_unwind_inner>
>> 480050c8: 80000000 or r0, r0, r0
>> 480050cc: b800ffd0 bri -48 // 4800509c
>> 480050d0: 80e10000 or r7, r1, r0
>> 480050d4: b8d40008 brlid r6, 8
>> 480050d8: 80000000 or r0, r0, r0
>> 480050dc: 11130000 addk r8, r19, r0
>> 480050e0: 11360000 addk r9, r22, r0
>> 480050e4: b9f4fc2c brlid r15, -980 // 48004d10
>> <microblaze_unwind_inner>
>> 480050e8: 10bf0000 addk r5, r31, r0
>> 480050ec: b800ffb0 bri -80 // 4800509c
>>
>
> Wow. Your compiler generates code very different from mine. (What's its
> pedigree?) With mine, the rtsd and "addik r1, r1, +foo" instructions are
> always at the end of each function. So, I had find_frame_creation()
> treat these as crossing into a different function, and give up. I will
> remove those checks when I respin the patch - they're not needed with my
> compiler, and with yours they prevent the backtrace from completing
> properly.
It is gcc 4.1.2. It is not the first time when I see this construction.
>
> Thanks for testing.
No problem. Looking forward to v2.
Thanks,
Michal
>
> ------------------------------------------------------------------------
> Steven J. Magnani "I claim this network for MARS!
> www.digidescorp.com Earthling, return my space modulator!"
>
> #include <standard.disclaimer>
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Michal Simek, Ing. (M.Eng)
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel 2.6 Microblaze Linux - http://www.monstr.eu/fdt/
Microblaze U-BOOT custodian
prev parent reply other threads:[~2010-04-27 7:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-14 4:55 [PATCH 1/2] microblaze: add stack unwinder Steven J. Magnani
2010-04-14 6:34 ` Michal Simek
2010-04-14 16:45 ` Michal Simek
2010-04-27 3:31 ` Steven J. Magnani
2010-04-27 7:54 ` Michal Simek
2010-04-16 8:32 ` Michal Simek
2010-04-16 14:33 ` [microblaze-uclinux] " Steven J. Magnani
2010-04-16 15:03 ` Michal Simek
2010-04-26 15:34 ` Michal Simek
2010-04-27 3:36 ` Steven J. Magnani
2010-04-27 7:57 ` Michal Simek [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4BD698FB.1030904@monstr.eu \
--to=monstr@monstr.eu \
--cc=linux-kernel@vger.kernel.org \
--cc=microblaze-uclinux@itee.uq.edu.au \
--cc=steve@digidescorp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.