[ELDK] Compiler bug in eldk-4.2 for ppc_4xxFP-gcc
Steven A. Falco
sfalco at harris.com
Wed Jul 9 21:10:36 CEST 2008
I have found a bug in gcc as supplied in eldk-4.2 for ppc_4xxFP-gcc. I noticed
that the dumpe2fs program segfaulted on my sequoia board (running with nfs as
the rootfs). After a lot of detective work, I have produced a small program
that illustrates the problem.
I've attached the C code, a header file, the makefile, and a dump of
the object code. The bug is that the compiler collapses two "if" tests
together, but in doing so, it tests a value before assigning to it.
The two "if" statements are:
if (!*pp) /* from the header file */
if (!bb->list) { /* from the C file */
The following section of the dump shows the problem (this correlates to
the second malloc in routine make_u32_list():
100004c4: 48 04 05 d5 bl 10040a98 <malloc at plt>
100004c8: 81 61 00 08 lwz r11,8(r1)
100004cc: 7c 60 fe 70 srawi r0,r3,31
100004d0: 7c 09 1a 78 xor r9,r0,r3
100004d4: 83 eb 00 0c lwz r31,12(r11) /* copies bb->list into r31 too early */
100004d8: 7d 29 00 50 subf r9,r9,r0
100004dc: 3c 00 80 d4 lis r0,-32556
100004e0: 7d 3d fe 70 srawi r29,r9,31
100004e4: 60 00 48 ba ori r0,r0,18618
100004e8: 2f 9f 00 00 cmpwi cr7,r31,0 /* tests uninitialized version of bb->list */
100004ec: 7f bd 00 38 and r29,r29,r0
100004f0: 3d 3d 7f 2c addis r9,r29,32556
100004f4: 90 7c 00 0c stw r3,12(r28) /* bb->list finally receives malloc pointer here */
At 100004c4 we call malloc, and the return value is in r3. The "if"
test appears at 100004e8 and checks r31. Looking back at 100004d4 we
see bb->list is loaded into r31. However, r3 is not loaded into bb->list
until 100004f4, long after bb->list has been used.
I'm reporting this on the eldk list. If the bug should be posted
elsewhere, please let me know. Full source and dump follow.
Steve Falco
Here is the C code:
#include "ext2fs.h"
static errcode_t make_u32_list(int size, __u32 *list, ext2_u32_list *ret)
{
ext2_u32_list bb;
errcode_t retval;
retval = ext2fs_get_mem(sizeof(struct ext2_struct_u32_list), &bb);
retval = ext2fs_get_mem(size * sizeof(blk_t), &bb->list);
if (!bb->list) {
ext2fs_free_mem(&bb);
return retval;
}
*ret = bb;
return 0;
}
errcode_t ext2fs_badblocks_list_create(ext2_badblocks_list *ret, int size)
{
return make_u32_list(size, 0, (ext2_badblocks_list *) ret);
}
main()
{
badblocks_list bb_list = 0;
ext2fs_badblocks_list_create(&bb_list, 500);
fprintf(stderr, "bb_list %08x, bb_list->list %08x\n",
(int)bb_list, (int)bb_list->list);
}
There is also a header file with inline functions:
#ifndef _EXT_
#define _EXT_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _INLINE_ extern __inline__
#define EXT2_ET_NO_MEMORY (2133571398L)
#define EXT2_ET_MAGIC_BADBLOCKS_LIST (2133571330L)
typedef long errcode_t;
typedef unsigned int __u32;
typedef __u32 blk_t;
struct ext2_struct_u32_list {
int magic;
int num;
int size;
__u32 *list;
int badblocks_flags;
};
typedef struct ext2_struct_u32_list *ext2_u32_list;
struct ext2_struct_u32_iterate {
int magic;
ext2_u32_list bb;
int ptr;
};
typedef struct ext2_struct_u32_list *badblocks_list;
typedef struct ext2_struct_u32_iterate *badblocks_iterate;
typedef struct ext2_struct_u32_list *ext2_badblocks_list;
_INLINE_ errcode_t ext2fs_get_mem(unsigned long size, void *ptr)
{
void **pp = (void **)ptr;
*pp = malloc(size);
if (!*pp)
return EXT2_ET_NO_MEMORY;
return 0;
}
_INLINE_ errcode_t ext2fs_free_mem(void *ptr)
{
void **pp = (void **)ptr;
free(*pp);
*pp = 0;
return 0;
}
#endif
I use the following Makefile to build it:
CC=/opt/eldk-4.2/usr/bin/ppc_4xxFP-gcc
CFLAGS=-g -O2
all: dumpe2fs.o
$(CC) $(CFLAGS) -o dumpe2fs $^
.c.o:
$(CC) $(CFLAGS) -c $< -o $@
Finally, here is the dissassembly:
dumpe2fs: file format elf32-powerpc
Disassembly of section .init:
10000328 <_init>:
10000328: 94 21 ff f0 stwu r1,-16(r1)
1000032c: 7c 08 02 a6 mflr r0
10000330: 93 c1 00 08 stw r30,8(r1)
10000334: 90 01 00 14 stw r0,20(r1)
10000338: 48 04 06 f1 bl 10040a28 <p.6631+0x8>
1000033c: 7f c8 02 a6 mflr r30
10000340: 80 1e ff f8 lwz r0,-8(r30)
10000344: 2f 80 00 00 cmpwi cr7,r0,0
10000348: 41 9e 00 08 beq- cr7,10000350 <_init+0x28>
1000034c: 48 04 07 35 bl 10040a80 <__gmon_start__ at plt>
10000350: 48 00 00 d9 bl 10000428 <frame_dummy>
10000354: 48 00 04 e1 bl 10000834 <__do_global_ctors_aux>
10000358: 80 01 00 14 lwz r0,20(r1)
1000035c: 7c 08 03 a6 mtlr r0
10000360: 83 c1 00 08 lwz r30,8(r1)
10000364: 38 21 00 10 addi r1,r1,16
10000368: 4e 80 00 20 blr
Disassembly of section .text:
1000036c <_start>:
1000036c: 7c 29 0b 78 mr r9,r1
10000370: 54 21 00 36 rlwinm r1,r1,0,0,27
10000374: 38 00 00 00 li r0,0
10000378: 94 21 ff f0 stwu r1,-16(r1)
1000037c: 7c 08 03 a6 mtlr r0
10000380: 90 01 00 00 stw r0,0(r1)
10000384: 3d 00 10 00 lis r8,4096
10000388: 85 a8 08 c0 lwzu r13,2240(r8)
1000038c: 48 04 06 fc b 10040a88 <__libc_start_main at plt>
10000390 <__do_global_dtors_aux>:
10000390: 94 21 ff f0 stwu r1,-16(r1)
10000394: 7c 08 02 a6 mflr r0
10000398: 93 c1 00 08 stw r30,8(r1)
1000039c: 3f c0 10 04 lis r30,4100
100003a0: 90 01 00 14 stw r0,20(r1)
100003a4: 88 1e 0a c0 lbz r0,2752(r30)
100003a8: 93 e1 00 0c stw r31,12(r1)
100003ac: 2f 80 00 00 cmpwi cr7,r0,0
100003b0: 40 9e 00 44 bne- cr7,100003f4 <__do_global_dtors_aux+0x64>
100003b4: 3d 20 10 04 lis r9,4100
100003b8: 3b e9 0a 1c addi r31,r9,2588
100003bc: 81 7f 00 04 lwz r11,4(r31)
100003c0: 81 2b 00 00 lwz r9,0(r11)
100003c4: 2f 89 00 00 cmpwi cr7,r9,0
100003c8: 41 9e 00 24 beq- cr7,100003ec <__do_global_dtors_aux+0x5c>
100003cc: 38 0b 00 04 addi r0,r11,4
100003d0: 7d 29 03 a6 mtctr r9
100003d4: 90 1f 00 04 stw r0,4(r31)
100003d8: 4e 80 04 21 bctrl
100003dc: 81 7f 00 04 lwz r11,4(r31)
100003e0: 81 2b 00 00 lwz r9,0(r11)
100003e4: 2f 89 00 00 cmpwi cr7,r9,0
100003e8: 40 9e ff e4 bne+ cr7,100003cc <__do_global_dtors_aux+0x3c>
100003ec: 38 00 00 01 li r0,1
100003f0: 98 1e 0a c0 stb r0,2752(r30)
100003f4: 80 01 00 14 lwz r0,20(r1)
100003f8: 83 c1 00 08 lwz r30,8(r1)
100003fc: 83 e1 00 0c lwz r31,12(r1)
10000400: 7c 08 03 a6 mtlr r0
10000404: 38 21 00 10 addi r1,r1,16
10000408: 4e 80 00 20 blr
1000040c <call___do_global_dtors_aux>:
1000040c: 94 21 ff f0 stwu r1,-16(r1)
10000410: 7c 08 02 a6 mflr r0
10000414: 90 01 00 14 stw r0,20(r1)
10000418: 80 01 00 14 lwz r0,20(r1)
1000041c: 38 21 00 10 addi r1,r1,16
10000420: 7c 08 03 a6 mtlr r0
10000424: 4e 80 00 20 blr
10000428 <frame_dummy>:
10000428: 94 21 ff f0 stwu r1,-16(r1)
1000042c: 7c 08 02 a6 mflr r0
10000430: 3d 20 10 04 lis r9,4100
10000434: 90 01 00 14 stw r0,20(r1)
10000438: 38 69 09 48 addi r3,r9,2376
1000043c: 80 09 09 48 lwz r0,2376(r9)
10000440: 2f 80 00 00 cmpwi cr7,r0,0
10000444: 41 9e 00 1c beq- cr7,10000460 <frame_dummy+0x38>
10000448: 3d 20 00 00 lis r9,0
1000044c: 39 29 00 00 addi r9,r9,0
10000450: 2f 89 00 00 cmpwi cr7,r9,0
10000454: 41 9e 00 0c beq- cr7,10000460 <frame_dummy+0x38>
10000458: 7d 29 03 a6 mtctr r9
1000045c: 4e 80 04 21 bctrl
10000460: 80 01 00 14 lwz r0,20(r1)
10000464: 38 21 00 10 addi r1,r1,16
10000468: 7c 08 03 a6 mtlr r0
1000046c: 4e 80 00 20 blr
10000470 <call_frame_dummy>:
10000470: 94 21 ff f0 stwu r1,-16(r1)
10000474: 7c 08 02 a6 mflr r0
10000478: 90 01 00 14 stw r0,20(r1)
1000047c: 80 01 00 14 lwz r0,20(r1)
10000480: 38 21 00 10 addi r1,r1,16
10000484: 7c 08 03 a6 mtlr r0
10000488: 4e 80 00 20 blr
1000048c <ext2fs_badblocks_list_create>:
1000048c: 94 21 ff d0 stwu r1,-48(r1)
10000490: 7c 08 02 a6 mflr r0
10000494: 93 c1 00 28 stw r30,40(r1)
10000498: 7c 7e 1b 78 mr r30,r3
1000049c: 38 60 00 14 li r3,20
100004a0: 90 01 00 34 stw r0,52(r1)
100004a4: 93 81 00 20 stw r28,32(r1)
100004a8: 93 a1 00 24 stw r29,36(r1)
100004ac: 93 e1 00 2c stw r31,44(r1)
100004b0: 7c 9d 23 78 mr r29,r4
100004b4: 48 04 05 e5 bl 10040a98 <malloc at plt>
100004b8: 7c 7c 1b 78 mr r28,r3
100004bc: 57 a3 10 3a rlwinm r3,r29,2,0,29
100004c0: 93 81 00 08 stw r28,8(r1)
100004c4: 48 04 05 d5 bl 10040a98 <malloc at plt>
100004c8: 81 61 00 08 lwz r11,8(r1)
100004cc: 7c 60 fe 70 srawi r0,r3,31
100004d0: 7c 09 1a 78 xor r9,r0,r3
100004d4: 83 eb 00 0c lwz r31,12(r11)
100004d8: 7d 29 00 50 subf r9,r9,r0
100004dc: 3c 00 80 d4 lis r0,-32556
100004e0: 7d 3d fe 70 srawi r29,r9,31
100004e4: 60 00 48 ba ori r0,r0,18618
100004e8: 2f 9f 00 00 cmpwi cr7,r31,0
100004ec: 7f bd 00 38 and r29,r29,r0
100004f0: 3d 3d 7f 2c addis r9,r29,32556
100004f4: 90 7c 00 0c stw r3,12(r28)
100004f8: 3b a9 b7 46 addi r29,r9,-18618
100004fc: 41 9e 00 30 beq- cr7,1000052c <ext2fs_badblocks_list_create+0xa0>
10000500: 91 7e 00 00 stw r11,0(r30)
10000504: 3b a0 00 00 li r29,0
10000508: 80 01 00 34 lwz r0,52(r1)
1000050c: 7f a3 eb 78 mr r3,r29
10000510: 83 81 00 20 lwz r28,32(r1)
10000514: 83 a1 00 24 lwz r29,36(r1)
10000518: 83 c1 00 28 lwz r30,40(r1)
1000051c: 83 e1 00 2c lwz r31,44(r1)
10000520: 7c 08 03 a6 mtlr r0
10000524: 38 21 00 30 addi r1,r1,48
10000528: 4e 80 00 20 blr
1000052c: 7d 63 5b 78 mr r3,r11
10000530: 48 04 05 61 bl 10040a90 <free at plt>
10000534: 93 e1 00 08 stw r31,8(r1)
10000538: 4b ff ff d0 b 10000508 <ext2fs_badblocks_list_create+0x7c>
1000053c <main>:
1000053c: 94 21 ff e0 stwu r1,-32(r1)
10000540: 7c 08 02 a6 mflr r0
10000544: 38 80 01 f4 li r4,500
10000548: 90 01 00 24 stw r0,36(r1)
1000054c: 38 61 00 08 addi r3,r1,8
10000550: 38 00 00 00 li r0,0
10000554: 90 01 00 08 stw r0,8(r1)
10000558: 4b ff ff 35 bl 1000048c <ext2fs_badblocks_list_create>
1000055c: 80 a1 00 08 lwz r5,8(r1)
10000560: 3d 20 10 04 lis r9,4100
10000564: 80 69 0a bc lwz r3,2748(r9)
10000568: 80 c5 00 0c lwz r6,12(r5)
1000056c: 3c 80 10 00 lis r4,4096
10000570: 38 84 08 d4 addi r4,r4,2260
10000574: 4c c6 31 82 crclr 4*cr1+eq
10000578: 48 04 05 29 bl 10040aa0 <__nldbl_fprintf at plt>
1000057c: 80 01 00 24 lwz r0,36(r1)
10000580: 38 21 00 20 addi r1,r1,32
10000584: 7c 08 03 a6 mtlr r0
10000588: 4e 80 00 20 blr
1000058c <__libc_csu_fini>:
1000058c: 94 21 ff f0 stwu r1,-16(r1)
10000590: 38 21 00 10 addi r1,r1,16
10000594: 4e 80 00 20 blr
10000598: 00 04 83 84 .long 0x48384
1000059c <__libc_csu_init>:
1000059c: 94 21 ff d0 stwu r1,-48(r1)
100005a0: 7c 08 02 a6 mflr r0
100005a4: 93 21 00 14 stw r25,20(r1)
100005a8: 93 41 00 18 stw r26,24(r1)
100005ac: 93 61 00 1c stw r27,28(r1)
100005b0: 93 81 00 20 stw r28,32(r1)
100005b4: 93 a1 00 24 stw r29,36(r1)
100005b8: 93 c1 00 28 stw r30,40(r1)
100005bc: 93 e1 00 2c stw r31,44(r1)
100005c0: 90 01 00 34 stw r0,52(r1)
100005c4: 42 9f 00 05 bcl- 20,4*cr7+so,100005c8 <__libc_csu_init+0x2c>
100005c8: 7f c8 02 a6 mflr r30
100005cc: 80 1e ff d0 lwz r0,-48(r30)
100005d0: 7f c0 f2 14 add r30,r0,r30
100005d4: 7c 79 1b 78 mr r25,r3
100005d8: 7c 9b 23 78 mr r27,r4
100005dc: 7c bc 2b 78 mr r28,r5
100005e0: 4b ff fd 49 bl 10000328 <_init>
100005e4: 80 1e 80 00 lwz r0,-32768(r30)
100005e8: 81 3e 80 04 lwz r9,-32764(r30)
100005ec: 7c 09 00 50 subf r0,r9,r0
100005f0: 7c 1d 16 71 srawi. r29,r0,2
100005f4: 41 82 00 34 beq- 10000628 <__libc_csu_init+0x8c>
100005f8: 3b e0 00 00 li r31,0
100005fc: 7d 3a 4b 78 mr r26,r9
10000600: 57 e0 10 3a rlwinm r0,r31,2,0,29
10000604: 7c 1a 00 2e lwzx r0,r26,r0
10000608: 7c 09 03 a6 mtctr r0
1000060c: 7f 23 cb 78 mr r3,r25
10000610: 7f 64 db 78 mr r4,r27
10000614: 7f 85 e3 78 mr r5,r28
10000618: 4e 80 04 21 bctrl
1000061c: 3b ff 00 01 addi r31,r31,1
10000620: 7f 9d f8 00 cmpw cr7,r29,r31
10000624: 40 9e ff dc bne+ cr7,10000600 <__libc_csu_init+0x64>
10000628: 80 01 00 34 lwz r0,52(r1)
1000062c: 7c 08 03 a6 mtlr r0
10000630: 83 21 00 14 lwz r25,20(r1)
10000634: 83 41 00 18 lwz r26,24(r1)
10000638: 83 61 00 1c lwz r27,28(r1)
1000063c: 83 81 00 20 lwz r28,32(r1)
10000640: 83 a1 00 24 lwz r29,36(r1)
10000644: 83 c1 00 28 lwz r30,40(r1)
10000648: 83 e1 00 2c lwz r31,44(r1)
1000064c: 38 21 00 30 addi r1,r1,48
10000650: 4e 80 00 20 blr
10000654 <_savefpr_14>:
10000654: d9 cb ff 70 stfd f14,-144(r11)
10000658 <_savefpr_15>:
10000658: d9 eb ff 78 stfd f15,-136(r11)
1000065c <_savefpr_16>:
1000065c: da 0b ff 80 stfd f16,-128(r11)
10000660 <_savefpr_17>:
10000660: da 2b ff 88 stfd f17,-120(r11)
10000664 <_savefpr_18>:
10000664: da 4b ff 90 stfd f18,-112(r11)
10000668 <_savefpr_19>:
10000668: da 6b ff 98 stfd f19,-104(r11)
1000066c <_savefpr_20>:
1000066c: da 8b ff a0 stfd f20,-96(r11)
10000670 <_savefpr_21>:
10000670: da ab ff a8 stfd f21,-88(r11)
10000674 <_savefpr_22>:
10000674: da cb ff b0 stfd f22,-80(r11)
10000678 <_savefpr_23>:
10000678: da eb ff b8 stfd f23,-72(r11)
1000067c <_savefpr_24>:
1000067c: db 0b ff c0 stfd f24,-64(r11)
10000680 <_savefpr_25>:
10000680: db 2b ff c8 stfd f25,-56(r11)
10000684 <_savefpr_26>:
10000684: db 4b ff d0 stfd f26,-48(r11)
10000688 <_savefpr_27>:
10000688: db 6b ff d8 stfd f27,-40(r11)
1000068c <_savefpr_28>:
1000068c: db 8b ff e0 stfd f28,-32(r11)
10000690 <_savefpr_29>:
10000690: db ab ff e8 stfd f29,-24(r11)
10000694 <_savefpr_30>:
10000694: db cb ff f0 stfd f30,-16(r11)
10000698 <_savefpr_31>:
10000698: db eb ff f8 stfd f31,-8(r11)
1000069c: 4e 80 00 20 blr
100006a0 <_savegpr_14>:
100006a0: 91 cb ff b8 stw r14,-72(r11)
100006a4 <_savegpr_15>:
100006a4: 91 eb ff bc stw r15,-68(r11)
100006a8 <_savegpr_16>:
100006a8: 92 0b ff c0 stw r16,-64(r11)
100006ac <_savegpr_17>:
100006ac: 92 2b ff c4 stw r17,-60(r11)
100006b0 <_savegpr_18>:
100006b0: 92 4b ff c8 stw r18,-56(r11)
100006b4 <_savegpr_19>:
100006b4: 92 6b ff cc stw r19,-52(r11)
100006b8 <_savegpr_20>:
100006b8: 92 8b ff d0 stw r20,-48(r11)
100006bc <_savegpr_21>:
100006bc: 92 ab ff d4 stw r21,-44(r11)
100006c0 <_savegpr_22>:
100006c0: 92 cb ff d8 stw r22,-40(r11)
100006c4 <_savegpr_23>:
100006c4: 92 eb ff dc stw r23,-36(r11)
100006c8 <_savegpr_24>:
100006c8: 93 0b ff e0 stw r24,-32(r11)
100006cc <_savegpr_25>:
100006cc: 93 2b ff e4 stw r25,-28(r11)
100006d0 <_savegpr_26>:
100006d0: 93 4b ff e8 stw r26,-24(r11)
100006d4 <_savegpr_27>:
100006d4: 93 6b ff ec stw r27,-20(r11)
100006d8 <_savegpr_28>:
100006d8: 93 8b ff f0 stw r28,-16(r11)
100006dc <_savegpr_29>:
100006dc: 93 ab ff f4 stw r29,-12(r11)
100006e0 <_savegpr_30>:
100006e0: 93 cb ff f8 stw r30,-8(r11)
100006e4 <_savegpr_31>:
100006e4: 93 eb ff fc stw r31,-4(r11)
100006e8: 4e 80 00 20 blr
100006ec <_restfpr_14>:
100006ec: c9 cb ff 70 lfd f14,-144(r11)
100006f0 <_restfpr_15>:
100006f0: c9 eb ff 78 lfd f15,-136(r11)
100006f4 <_restfpr_16>:
100006f4: ca 0b ff 80 lfd f16,-128(r11)
100006f8 <_restfpr_17>:
100006f8: ca 2b ff 88 lfd f17,-120(r11)
100006fc <_restfpr_18>:
100006fc: ca 4b ff 90 lfd f18,-112(r11)
10000700 <_restfpr_19>:
10000700: ca 6b ff 98 lfd f19,-104(r11)
10000704 <_restfpr_20>:
10000704: ca 8b ff a0 lfd f20,-96(r11)
10000708 <_restfpr_21>:
10000708: ca ab ff a8 lfd f21,-88(r11)
1000070c <_restfpr_22>:
1000070c: ca cb ff b0 lfd f22,-80(r11)
10000710 <_restfpr_23>:
10000710: ca eb ff b8 lfd f23,-72(r11)
10000714 <_restfpr_24>:
10000714: cb 0b ff c0 lfd f24,-64(r11)
10000718 <_restfpr_25>:
10000718: cb 2b ff c8 lfd f25,-56(r11)
1000071c <_restfpr_26>:
1000071c: cb 4b ff d0 lfd f26,-48(r11)
10000720 <_restfpr_27>:
10000720: cb 6b ff d8 lfd f27,-40(r11)
10000724 <_restfpr_28>:
10000724: cb 8b ff e0 lfd f28,-32(r11)
10000728 <_restfpr_29>:
10000728: cb ab ff e8 lfd f29,-24(r11)
1000072c <_restfpr_30>:
1000072c: cb cb ff f0 lfd f30,-16(r11)
10000730 <_restfpr_31>:
10000730: cb eb ff f8 lfd f31,-8(r11)
10000734: 4e 80 00 20 blr
10000738 <_restgpr_14>:
10000738: 81 cb ff b8 lwz r14,-72(r11)
1000073c <_restgpr_15>:
1000073c: 81 eb ff bc lwz r15,-68(r11)
10000740 <_restgpr_16>:
10000740: 82 0b ff c0 lwz r16,-64(r11)
10000744 <_restgpr_17>:
10000744: 82 2b ff c4 lwz r17,-60(r11)
10000748 <_restgpr_18>:
10000748: 82 4b ff c8 lwz r18,-56(r11)
1000074c <_restgpr_19>:
1000074c: 82 6b ff cc lwz r19,-52(r11)
10000750 <_restgpr_20>:
10000750: 82 8b ff d0 lwz r20,-48(r11)
10000754 <_restgpr_21>:
10000754: 82 ab ff d4 lwz r21,-44(r11)
10000758 <_restgpr_22>:
10000758: 82 cb ff d8 lwz r22,-40(r11)
1000075c <_restgpr_23>:
1000075c: 82 eb ff dc lwz r23,-36(r11)
10000760 <_restgpr_24>:
10000760: 83 0b ff e0 lwz r24,-32(r11)
10000764 <_restgpr_25>:
10000764: 83 2b ff e4 lwz r25,-28(r11)
10000768 <_restgpr_26>:
10000768: 83 4b ff e8 lwz r26,-24(r11)
1000076c <_restgpr_27>:
1000076c: 83 6b ff ec lwz r27,-20(r11)
10000770 <_restgpr_28>:
10000770: 83 8b ff f0 lwz r28,-16(r11)
10000774 <_restgpr_29>:
10000774: 83 ab ff f4 lwz r29,-12(r11)
10000778 <_restgpr_30>:
10000778: 83 cb ff f8 lwz r30,-8(r11)
1000077c <_restgpr_31>:
1000077c: 83 eb ff fc lwz r31,-4(r11)
10000780: 4e 80 00 20 blr
10000784 <_restfpr_14_x>:
10000784: c9 cb ff 70 lfd f14,-144(r11)
10000788 <_restfpr_15_x>:
10000788: c9 eb ff 78 lfd f15,-136(r11)
1000078c <_restfpr_16_x>:
1000078c: ca 0b ff 80 lfd f16,-128(r11)
10000790 <_restfpr_17_x>:
10000790: ca 2b ff 88 lfd f17,-120(r11)
10000794 <_restfpr_18_x>:
10000794: ca 4b ff 90 lfd f18,-112(r11)
10000798 <_restfpr_19_x>:
10000798: ca 6b ff 98 lfd f19,-104(r11)
1000079c <_restfpr_20_x>:
1000079c: ca 8b ff a0 lfd f20,-96(r11)
100007a0 <_restfpr_21_x>:
100007a0: ca ab ff a8 lfd f21,-88(r11)
100007a4 <_restfpr_22_x>:
100007a4: ca cb ff b0 lfd f22,-80(r11)
100007a8 <_restfpr_23_x>:
100007a8: ca eb ff b8 lfd f23,-72(r11)
100007ac <_restfpr_24_x>:
100007ac: cb 0b ff c0 lfd f24,-64(r11)
100007b0 <_restfpr_25_x>:
100007b0: cb 2b ff c8 lfd f25,-56(r11)
100007b4 <_restfpr_26_x>:
100007b4: cb 4b ff d0 lfd f26,-48(r11)
100007b8 <_restfpr_27_x>:
100007b8: cb 6b ff d8 lfd f27,-40(r11)
100007bc <_restfpr_28_x>:
100007bc: cb 8b ff e0 lfd f28,-32(r11)
100007c0 <_restfpr_29_x>:
100007c0: cb ab ff e8 lfd f29,-24(r11)
100007c4 <_restfpr_30_x>:
100007c4: cb cb ff f0 lfd f30,-16(r11)
100007c8 <_restfpr_31_x>:
100007c8: 80 0b 00 04 lwz r0,4(r11)
100007cc: cb eb ff f8 lfd f31,-8(r11)
100007d0: 7c 08 03 a6 mtlr r0
100007d4: 7d 61 5b 78 mr r1,r11
100007d8: 4e 80 00 20 blr
100007dc <_restgpr_14_x>:
100007dc: 81 cb ff b8 lwz r14,-72(r11)
100007e0 <_restgpr_15_x>:
100007e0: 81 eb ff bc lwz r15,-68(r11)
100007e4 <_restgpr_16_x>:
100007e4: 82 0b ff c0 lwz r16,-64(r11)
100007e8 <_restgpr_17_x>:
100007e8: 82 2b ff c4 lwz r17,-60(r11)
100007ec <_restgpr_18_x>:
100007ec: 82 4b ff c8 lwz r18,-56(r11)
100007f0 <_restgpr_19_x>:
100007f0: 82 6b ff cc lwz r19,-52(r11)
100007f4 <_restgpr_20_x>:
100007f4: 82 8b ff d0 lwz r20,-48(r11)
100007f8 <_restgpr_21_x>:
100007f8: 82 ab ff d4 lwz r21,-44(r11)
100007fc <_restgpr_22_x>:
100007fc: 82 cb ff d8 lwz r22,-40(r11)
10000800 <_restgpr_23_x>:
10000800: 82 eb ff dc lwz r23,-36(r11)
10000804 <_restgpr_24_x>:
10000804: 83 0b ff e0 lwz r24,-32(r11)
10000808 <_restgpr_25_x>:
10000808: 83 2b ff e4 lwz r25,-28(r11)
1000080c <_restgpr_26_x>:
1000080c: 83 4b ff e8 lwz r26,-24(r11)
10000810 <_restgpr_27_x>:
10000810: 83 6b ff ec lwz r27,-20(r11)
10000814 <_restgpr_28_x>:
10000814: 83 8b ff f0 lwz r28,-16(r11)
10000818 <_restgpr_29_x>:
10000818: 83 ab ff f4 lwz r29,-12(r11)
1000081c <_restgpr_30_x>:
1000081c: 83 cb ff f8 lwz r30,-8(r11)
10000820 <_restgpr_31_x>:
10000820: 80 0b 00 04 lwz r0,4(r11)
10000824: 83 eb ff fc lwz r31,-4(r11)
10000828: 7c 08 03 a6 mtlr r0
1000082c: 7d 61 5b 78 mr r1,r11
10000830: 4e 80 00 20 blr
10000834 <__do_global_ctors_aux>:
10000834: 94 21 ff f0 stwu r1,-16(r1)
10000838: 7c 08 02 a6 mflr r0
1000083c: 3d 20 10 04 lis r9,4100
10000840: 90 01 00 14 stw r0,20(r1)
10000844: 39 29 09 3c addi r9,r9,2364
10000848: 80 09 ff fc lwz r0,-4(r9)
1000084c: 93 e1 00 0c stw r31,12(r1)
10000850: 2f 80 ff ff cmpwi cr7,r0,-1
10000854: 3b e9 ff fc addi r31,r9,-4
10000858: 41 9e 00 18 beq- cr7,10000870 <__do_global_ctors_aux+0x3c>
1000085c: 7c 09 03 a6 mtctr r0
10000860: 4e 80 04 21 bctrl
10000864: 84 1f ff fc lwzu r0,-4(r31)
10000868: 2f 80 ff ff cmpwi cr7,r0,-1
1000086c: 40 9e ff f0 bne+ cr7,1000085c <__do_global_ctors_aux+0x28>
10000870: 80 01 00 14 lwz r0,20(r1)
10000874: 83 e1 00 0c lwz r31,12(r1)
10000878: 7c 08 03 a6 mtlr r0
1000087c: 38 21 00 10 addi r1,r1,16
10000880: 4e 80 00 20 blr
10000884 <call___do_global_ctors_aux>:
10000884: 94 21 ff f0 stwu r1,-16(r1)
10000888: 7c 08 02 a6 mflr r0
1000088c: 90 01 00 14 stw r0,20(r1)
10000890: 80 01 00 14 lwz r0,20(r1)
10000894: 38 21 00 10 addi r1,r1,16
10000898: 7c 08 03 a6 mtlr r0
1000089c: 4e 80 00 20 blr
Disassembly of section .fini:
100008a0 <_fini>:
100008a0: 94 21 ff f0 stwu r1,-16(r1)
100008a4: 7c 08 02 a6 mflr r0
100008a8: 90 01 00 14 stw r0,20(r1)
100008ac: 4b ff fa e5 bl 10000390 <__do_global_dtors_aux>
100008b0: 80 01 00 14 lwz r0,20(r1)
100008b4: 7c 08 03 a6 mtlr r0
100008b8: 38 21 00 10 addi r1,r1,16
100008bc: 4e 80 00 20 blr
Disassembly of section .got:
10040a24 <_GLOBAL_OFFSET_TABLE_-0x8>:
10040a24: 00 00 00 00 .long 0x0
10040a28: 4e 80 00 21 blrl
10040a2c <_GLOBAL_OFFSET_TABLE_>:
10040a2c: 10 04 09 54 00 00 00 00 00 00 00 00 ...T........
More information about the eldk
mailing list