Re: [PATCH] add 'rs6000_in_function_epilogue_p()' (Revised)

Paul Gilliam
2005-12-02T23:38:39Z

[-- Attachment #1: Type: text/plain, Size: 942 bytes --]

On Friday 02 December 2005 13:19, Jim Blandy wrote:
> > > Whatever we do immediately, the underlying cause here is that
> > > unwinding isn't working at every instruction. If it were, then the
> > > call to frame_find_by_id would find the frame containing the watched
> > > variable, and watchpoint_check would correctly conclude that the
> > > variable was still in scope.
> > >
> > > Paul, does your test program have Dwarf CFI for the functions in question?
> > >
> > I have attached a couple of dumps (and a typescript show how they where made), the executable, and the source.
>
> Okay, thanks. I don't have a ppc64 toolchain handy; could you post
> the output from objdump -d testwatch? The readelf dump that I wanted
> was 'readelf -wF' or '-wf'; but since you provided the executable,
> that's fine.
>
>
OK. I have attached the output from "objdump -d testwatch"

Please ignore this if it's no longer relevent.

-=# Paul #=-

[-- Attachment #2: testwatch.objdump-d --]
[-- Type: text/plain, Size: 13417 bytes --]

testwatch: file format elf64-powerpc

Disassembly of section .init:

0000000010000318 <._init>:
10000318: 7c 08 02 a6 mflr r0
1000031c: f8 01 00 10 std r0,16(r1)
10000320: f8 21 ff 91 stdu r1,-112(r1)
10000324: 48 00 00 99 bl 100003bc <.call_gmon_start>
10000328: 48 00 01 6d bl 10000494 <.frame_dummy>
1000032c: 60 00 00 00 nop
10000330: 48 00 03 d9 bl 10000708 <.__do_global_ctors_aux>
10000334: 60 00 00 00 nop
10000338: 38 21 00 70 addi r1,r1,112
1000033c: e8 01 00 10 ld r0,16(r1)
10000340: 7c 08 03 a6 mtlr r0
10000344: 4e 80 00 20 blr
Disassembly of section .text:

0000000010000348 <._Jv_RegisterClasses>:
10000348: 3d 82 00 00 addis r12,r2,0
1000034c: f8 41 00 28 std r2,40(r1)
10000350: e9 6c 80 a8 ld r11,-32600(r12)
10000354: e8 4c 80 b0 ld r2,-32592(r12)
10000358: 7d 69 03 a6 mtctr r11
1000035c: e9 6c 80 b8 ld r11,-32584(r12)
10000360: 4e 80 04 20 bctr

0000000010000364 <.__libc_start_main>:
10000364: 3d 82 00 00 addis r12,r2,0
10000368: f8 41 00 28 std r2,40(r1)
1000036c: e9 6c 80 90 ld r11,-32624(r12)
10000370: e8 4c 80 98 ld r2,-32616(r12)
10000374: 7d 69 03 a6 mtctr r11
10000378: e9 6c 80 a0 ld r11,-32608(r12)
1000037c: 4e 80 04 20 bctr

0000000010000380 <._start>:
10000380: 7c 29 0b 78 mr r9,r1
10000384: 78 21 06 e4 rldicr r1,r1,0,59
10000388: 38 00 00 00 li r0,0
1000038c: f8 21 ff 81 stdu r1,-128(r1)
10000390: 7c 08 03 a6 mtlr r0
10000394: f8 01 00 00 std r0,0(r1)
10000398: e9 02 80 08 ld r8,-32760(r2)
1000039c: 4b ff ff c8 b 10000364 <.__libc_start_main>
100003a0: e8 41 00 28 ld r2,40(r1)
100003a4: 00 00 00 00 .long 0x0
100003a8: 00 0c 20 40 .long 0xc2040
100003ac: 00 00 00 00 .long 0x0
100003b0: 00 00 00 24 .long 0x24
100003b4: 00 06 5f 73 .long 0x65f73
100003b8: 74 61 72 74 andis. r1,r3,29300

00000000100003bc <.call_gmon_start>:
100003bc: 7c 08 02 a6 mflr r0
100003c0: f8 01 00 10 std r0,16(r1)
100003c4: f8 21 ff 91 stdu r1,-112(r1)
100003c8: e9 22 80 10 ld r9,-32752(r2)
100003cc: 2f a9 00 00 cmpdi cr7,r9,0
100003d0: 41 9e 00 20 beq- cr7,100003f0 <.call_gmon_start+0x34>
100003d4: e8 09 00 00 ld r0,0(r9)
100003d8: 7c 09 03 a6 mtctr r0
100003dc: f8 41 00 28 std r2,40(r1)
100003e0: e8 49 00 08 ld r2,8(r9)
100003e4: e9 69 00 10 ld r11,16(r9)
100003e8: 4e 80 04 21 bctrl
100003ec: e8 41 00 28 ld r2,40(r1)
100003f0: 38 21 00 70 addi r1,r1,112
100003f4: e8 01 00 10 ld r0,16(r1)
100003f8: 7c 08 03 a6 mtlr r0
100003fc: 4e 80 00 20 blr

0000000010000400 <.__do_global_dtors_aux>:
10000400: 7c 08 02 a6 mflr r0
10000404: e9 62 80 18 ld r11,-32744(r2)
10000408: fb e1 ff f8 std r31,-8(r1)
1000040c: f8 01 00 10 std r0,16(r1)
10000410: f8 21 ff 81 stdu r1,-128(r1)
10000414: 88 0b 00 00 lbz r0,0(r11)
10000418: 2f 80 00 00 cmpwi cr7,r0,0
1000041c: 40 9e 00 64 bne- cr7,10000480 <.__do_global_dtors_aux+0x80>
10000420: eb e2 80 20 ld r31,-32736(r2)
10000424: e9 3f 00 00 ld r9,0(r31)
10000428: e9 49 00 00 ld r10,0(r9)
1000042c: 2f aa 00 00 cmpdi cr7,r10,0
10000430: 40 be 00 0c bne+ cr7,1000043c <.__do_global_dtors_aux+0x3c>
10000434: 48 00 00 44 b 10000478 <.__do_global_dtors_aux+0x78>
10000438: eb e2 80 20 ld r31,-32736(r2)
1000043c: e9 3f 00 00 ld r9,0(r31)
10000440: 39 29 00 08 addi r9,r9,8
10000444: f9 3f 00 00 std r9,0(r31)
10000448: e8 0a 00 00 ld r0,0(r10)
1000044c: f8 41 00 28 std r2,40(r1)
10000450: e9 6a 00 10 ld r11,16(r10)
10000454: 7c 09 03 a6 mtctr r0
10000458: e8 4a 00 08 ld r2,8(r10)
1000045c: 4e 80 04 21 bctrl
10000460: e8 41 00 28 ld r2,40(r1)
10000464: e9 3f 00 00 ld r9,0(r31)
10000468: e9 49 00 00 ld r10,0(r9)
1000046c: 2f aa 00 00 cmpdi cr7,r10,0
10000470: 40 9e ff c8 bne+ cr7,10000438 <.__do_global_dtors_aux+0x38>
10000474: e9 62 80 18 ld r11,-32744(r2)
10000478: 38 00 00 01 li r0,1
1000047c: 98 0b 00 00 stb r0,0(r11)
10000480: 38 21 00 80 addi r1,r1,128
10000484: e8 01 00 10 ld r0,16(r1)
10000488: eb e1 ff f8 ld r31,-8(r1)
1000048c: 7c 08 03 a6 mtlr r0
10000490: 4e 80 00 20 blr

0000000010000494 <.frame_dummy>:
10000494: 7c 08 02 a6 mflr r0
10000498: e8 62 80 28 ld r3,-32728(r2)
1000049c: f8 01 00 10 std r0,16(r1)
100004a0: f8 21 ff 91 stdu r1,-112(r1)
100004a4: e8 03 00 00 ld r0,0(r3)
100004a8: 2f a0 00 00 cmpdi cr7,r0,0
100004ac: 41 9e 00 10 beq- cr7,100004bc <.frame_dummy+0x28>
100004b0: e8 02 80 30 ld r0,-32720(r2)
100004b4: 2f a0 00 00 cmpdi cr7,r0,0
100004b8: 40 9e 00 14 bne- cr7,100004cc <.frame_dummy+0x38>
100004bc: 38 21 00 70 addi r1,r1,112
100004c0: e8 01 00 10 ld r0,16(r1)
100004c4: 7c 08 03 a6 mtlr r0
100004c8: 4e 80 00 20 blr
100004cc: 4b ff fe 7d bl 10000348 <._Jv_RegisterClasses>
100004d0: e8 41 00 28 ld r2,40(r1)
100004d4: 38 21 00 70 addi r1,r1,112
100004d8: e8 01 00 10 ld r0,16(r1)
100004dc: 7c 08 03 a6 mtlr r0
100004e0: 4e 80 00 20 blr

00000000100004e4 <.subr2>:
100004e4: fb e1 ff f8 std r31,-8(r1)
100004e8: f8 21 ff c1 stdu r1,-64(r1)
100004ec: 7c 3f 0b 78 mr r31,r1
100004f0: f8 7f 00 70 std r3,112(r31)
100004f4: e9 3f 00 70 ld r9,112(r31)
100004f8: 38 00 00 09 li r0,9
100004fc: 90 09 00 00 stw r0,0(r9)
10000500: e9 3f 00 70 ld r9,112(r31)
10000504: 38 00 00 01 li r0,1
10000508: 90 09 00 00 stw r0,0(r9)
1000050c: e8 21 00 00 ld r1,0(r1)
10000510: eb e1 ff f8 ld r31,-8(r1)
10000514: 4e 80 00 20 blr
...
10000520: 80 01 00 01 lwz r0,1(r1)

0000000010000524 <.subr1>:
10000524: 7c 08 02 a6 mflr r0
10000528: fb e1 ff f8 std r31,-8(r1)
1000052c: f8 01 00 10 std r0,16(r1)
10000530: f8 21 ff 71 stdu r1,-144(r1)
10000534: 7c 3f 0b 78 mr r31,r1
10000538: 38 00 00 09 li r0,9
1000053c: 90 1f 00 70 stw r0,112(r31)
10000540: 38 7f 00 70 addi r3,r31,112
10000544: 4b ff ff a1 bl 100004e4 <.subr2>
10000548: e9 22 80 38 ld r9,-32712(r2)
1000054c: 38 00 00 02 li r0,2
10000550: 90 09 00 00 stw r0,0(r9)
10000554: e9 22 80 40 ld r9,-32704(r2)
10000558: c8 02 80 48 lfd f0,-32696(r2)
1000055c: d8 09 00 00 stfd f0,0(r9)
10000560: 38 00 00 02 li r0,2
10000564: 90 1f 00 70 stw r0,112(r31)
10000568: e8 21 00 00 ld r1,0(r1)
1000056c: e8 01 00 10 ld r0,16(r1)
10000570: 7c 08 03 a6 mtlr r0
10000574: eb e1 ff f8 ld r31,-8(r1)
10000578: 4e 80 00 20 blr
1000057c: 00 00 00 00 .long 0x0
10000580: 00 00 00 01 .long 0x1
10000584: 80 01 00 01 lwz r0,1(r1)

0000000010000588 <.main>:
10000588: 7c 08 02 a6 mflr r0
1000058c: fb e1 ff f8 std r31,-8(r1)
10000590: f8 01 00 10 std r0,16(r1)
10000594: f8 21 ff 71 stdu r1,-144(r1)
10000598: 7c 3f 0b 78 mr r31,r1
1000059c: 38 00 00 00 li r0,0
100005a0: 90 1f 00 70 stw r0,112(r31)
100005a4: 4b ff ff 81 bl 10000524 <.subr1>
100005a8: 7c 03 03 78 mr r3,r0
100005ac: e8 21 00 00 ld r1,0(r1)
100005b0: e8 01 00 10 ld r0,16(r1)
100005b4: 7c 08 03 a6 mtlr r0
100005b8: eb e1 ff f8 ld r31,-8(r1)
100005bc: 4e 80 00 20 blr
100005c0: 00 00 00 00 .long 0x0
100005c4: 00 00 00 01 .long 0x1
100005c8: 80 01 00 01 lwz r0,1(r1)

00000000100005cc <.__libc_csu_fini>:
100005cc: 7c 08 02 a6 mflr r0
100005d0: e9 62 80 58 ld r11,-32680(r2)
100005d4: fb e1 ff f8 std r31,-8(r1)
100005d8: f8 01 00 10 std r0,16(r1)
100005dc: e8 02 80 50 ld r0,-32688(r2)
100005e0: fb a1 ff e8 std r29,-24(r1)
100005e4: 7c 0b 00 50 subf r0,r11,r0
100005e8: f8 21 ff 71 stdu r1,-144(r1)
100005ec: 7c 1f 1e 74 sradi r31,r0,3
100005f0: 2f bf 00 00 cmpdi cr7,r31,0
100005f4: 3b ff ff ff addi r31,r31,-1
100005f8: 40 be 00 0c bne+ cr7,10000604 <.__libc_csu_fini+0x38>
100005fc: 48 00 00 3c b 10000638 <.__libc_csu_fini+0x6c>
10000600: e9 62 80 58 ld r11,-32680(r2)
10000604: 7b e9 1f 24 rldicr r9,r31,3,60
10000608: 7f fd fb 78 mr r29,r31
1000060c: 7d 49 58 2a ldx r10,r9,r11
10000610: 3b ff ff ff addi r31,r31,-1
10000614: e8 0a 00 00 ld r0,0(r10)
10000618: f8 41 00 28 std r2,40(r1)
1000061c: 7c 09 03 a6 mtctr r0
10000620: e9 6a 00 10 ld r11,16(r10)
10000624: e8 4a 00 08 ld r2,8(r10)
10000628: 4e 80 04 21 bctrl
1000062c: e8 41 00 28 ld r2,40(r1)
10000630: 2f bd 00 00 cmpdi cr7,r29,0
10000634: 40 9e ff cc bne+ cr7,10000600 <.__libc_csu_fini+0x34>
10000638: 48 00 01 91 bl 100007c8 <._fini>
1000063c: 60 00 00 00 nop
10000640: 38 21 00 90 addi r1,r1,144
10000644: e8 01 00 10 ld r0,16(r1)
10000648: eb a1 ff e8 ld r29,-24(r1)
1000064c: 7c 08 03 a6 mtlr r0
10000650: eb e1 ff f8 ld r31,-8(r1)
10000654: 4e 80 00 20 blr
10000658: 00 00 00 00 .long 0x0
1000065c: 00 00 00 01 .long 0x1
10000660: 80 03 00 00 lwz r0,0(r3)

0000000010000664 <.__libc_csu_init>:
10000664: 7c 08 02 a6 mflr r0
10000668: fb e1 ff f8 std r31,-8(r1)
1000066c: f8 01 00 10 std r0,16(r1)
10000670: f8 21 ff 81 stdu r1,-128(r1)
10000674: 4b ff fc a5 bl 10000318 <._init>
10000678: 60 00 00 00 nop
1000067c: 3b e0 00 00 li r31,0
10000680: e8 02 80 60 ld r0,-32672(r2)
10000684: e9 62 80 68 ld r11,-32664(r2)
10000688: 7c 0b 00 50 subf r0,r11,r0
1000068c: 78 09 e8 c3 rldicl. r9,r0,61,3
10000690: 40 82 00 18 bne- 100006a8 <.__libc_csu_init+0x44>
10000694: 38 21 00 80 addi r1,r1,128
10000698: e8 01 00 10 ld r0,16(r1)
1000069c: eb e1 ff f8 ld r31,-8(r1)
100006a0: 7c 08 03 a6 mtlr r0
100006a4: 4e 80 00 20 blr
100006a8: 7b e9 1f 24 rldicr r9,r31,3,60
100006ac: 3b ff 00 01 addi r31,r31,1
100006b0: 7d 49 58 2a ldx r10,r9,r11
100006b4: e8 0a 00 00 ld r0,0(r10)
100006b8: f8 41 00 28 std r2,40(r1)
100006bc: 7c 09 03 a6 mtctr r0
100006c0: e9 6a 00 10 ld r11,16(r10)
100006c4: e8 4a 00 08 ld r2,8(r10)
100006c8: 4e 80 04 21 bctrl
100006cc: e8 41 00 28 ld r2,40(r1)
100006d0: e8 02 80 60 ld r0,-32672(r2)
100006d4: e9 62 80 68 ld r11,-32664(r2)
100006d8: 7c 0b 00 50 subf r0,r11,r0
100006dc: 7c 00 1e 74 sradi r0,r0,3
100006e0: 7f bf 00 40 cmpld cr7,r31,r0
100006e4: 41 9c ff c4 blt+ cr7,100006a8 <.__libc_csu_init+0x44>
100006e8: 38 21 00 80 addi r1,r1,128
100006ec: e8 01 00 10 ld r0,16(r1)
100006f0: eb e1 ff f8 ld r31,-8(r1)
100006f4: 7c 08 03 a6 mtlr r0
100006f8: 4e 80 00 20 blr
100006fc: 00 00 00 00 .long 0x0
10000700: 00 00 00 01 .long 0x1
10000704: 80 01 00 00 lwz r0,0(r1)

0000000010000708 <.__do_global_ctors_aux>:
10000708: 7c 08 02 a6 mflr r0
1000070c: e9 22 80 70 ld r9,-32656(r2)
10000710: fb e1 ff f8 std r31,-8(r1)
10000714: f8 01 00 10 std r0,16(r1)
10000718: 3b e9 ff f8 addi r31,r9,-8
1000071c: f8 21 ff 81 stdu r1,-128(r1)
10000720: e8 09 ff f8 ld r0,-8(r9)
10000724: 2f a0 ff ff cmpdi cr7,r0,-1
10000728: 41 9e 00 34 beq- cr7,1000075c <.__do_global_ctors_aux+0x54>
1000072c: 7c 09 03 78 mr r9,r0
10000730: e8 09 00 00 ld r0,0(r9)
10000734: f8 41 00 28 std r2,40(r1)
10000738: 7c 09 03 a6 mtctr r0
1000073c: e9 69 00 10 ld r11,16(r9)
10000740: e8 49 00 08 ld r2,8(r9)
10000744: 4e 80 04 21 bctrl
10000748: e8 41 00 28 ld r2,40(r1)
1000074c: e8 1f ff f9 ldu r0,-8(r31)
10000750: 2f a0 ff ff cmpdi cr7,r0,-1
10000754: 7c 09 03 78 mr r9,r0
10000758: 40 9e ff d8 bne+ cr7,10000730 <.__do_global_ctors_aux+0x28>
1000075c: 38 21 00 80 addi r1,r1,128
10000760: e8 01 00 10 ld r0,16(r1)
10000764: eb e1 ff f8 ld r31,-8(r1)
10000768: 7c 08 03 a6 mtlr r0
1000076c: 4e 80 00 20 blr
10000770: 4e 80 00 20 blr
10000774: 7d 89 02 a6 mfctr r12
10000778: 78 0b 1f 24 rldicr r11,r0,3,60
1000077c: 34 40 80 00 addic. r2,r0,-32768
10000780: 7d 8b 60 50 subf r12,r11,r12
10000784: 7c 42 fe 76 sradi r2,r2,63
10000788: 78 0b 17 64 rldicr r11,r0,2,61
1000078c: 7c 42 58 38 and r2,r2,r11
10000790: 7d 8b 60 50 subf r12,r11,r12
10000794: 7d 8c 12 14 add r12,r12,r2
10000798: 3d 8c 00 01 addis r12,r12,1
1000079c: e9 6c 03 dc ld r11,988(r12)
100007a0: 39 8c 03 dc addi r12,r12,988
100007a4: e8 4c 00 08 ld r2,8(r12)
100007a8: 7d 69 03 a6 mtctr r11
100007ac: e9 6c 00 10 ld r11,16(r12)
100007b0: 4e 80 04 20 bctr
100007b4: 38 00 00 00 li r0,0
100007b8: 4b ff ff bc b 10000774 <.__do_global_ctors_aux+0x6c>
100007bc: 38 00 00 01 li r0,1
100007c0: 4b ff ff b4 b 10000774 <.__do_global_ctors_aux+0x6c>
Disassembly of section .fini:

00000000100007c8 <._fini>:
100007c8: 7c 08 02 a6 mflr r0
100007cc: f8 01 00 10 std r0,16(r1)
100007d0: f8 21 ff 91 stdu r1,-112(r1)
100007d4: 60 00 00 00 nop
100007d8: 4b ff fc 29 bl 10000400 <.__do_global_dtors_aux>
100007dc: 60 00 00 00 nop
100007e0: 38 21 00 70 addi r1,r1,112
100007e4: e8 01 00 10 ld r0,16(r1)
100007e8: 7c 08 03 a6 mtlr r0
100007ec: 4e 80 00 20 blr