http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49360
Summary: generate wrong logic code Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: c AssignedTo: unassig...@gcc.gnu.org ReportedBy: wux...@gmail.com GCC version 4.6.0. bug description: gcc : *mipsel* cross compiler in objdumped files : ============================================================= bfc0003c: afc40018 sw a0,24(s8) bfc00040: afc5001c sw a1,28(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:5 int a, b, temp; if(num1<num2) /*want n1>n2*/ bfc00044: 8fc30018 lw v1,24(s8) bfc00048: 8fc2001c lw v0,28(s8) bfc0004c: 00000000 nop bfc00050: 0062102a slt v0,v1,v0 bfc00054: 1040000a beqz v0,bfc00080 <lcm+0x50> ============================================================= the logic int code was if (num1 < num2) {do-sth.} but in the generated code, it is if (! (num1 < num2) {do-sth.} in line <bfc00054>, the instruction should be "bnez". ************************************************************* appendix : ************************************************************* GCC version 4.6.0. with binutils-2.21.1 System type: fedora 15 64bit, x86_64. build a cross compile for 'mipsel' config params: > export PREFIX=/home/wuxb/.mipsgcc0 > export TARGET=mipsel-gnu-linux > ../gcc-4.6.0/configure --prefix=$PREFIX --target=$TARGET ************************************************************* ************************************************************* Makefile ************************************************************* .PHONY : all SHAREFILES = ../global CROSS = mipsel-gnu-linux- CC = $(CROSS)gcc LD = $(CROSS)ld AS = $(CROSS)as OBJCOPY = $(CROSS)objcopy OBJDUMP = $(CROSS)objdump INCLUDE = -I$(SHAREFILES) CFLAGS = -v -save-temps -Wall -g -fno-builtin -fno-pic -mno-abicalls $(INCLUDE) ASFLAGS = -gstabs -fno-pic -mno-abicalls -D__ASSEMBLY__ $(INCLUDE) LDFLAGS = -T $(SHAREFILES)/mips.lds COPYFLAGS = --gap-fill=0xff -O binary BINELF = bin.elf BINBIN = bin.bin GLOBALSOURCES = $(SHAREFILES)/head.S SOURCES = $(GLOBALSOURCES) mips_1001.c ALLDEP = Makefile.dep # .c -> .o, .s -> .o OBJECTS = $(patsubst %.c, %.o, $(patsubst %.S, %.o, $(SOURCES))) DEPENDS = $(patsubst %.o, %.d, $(OBJECTS) all : $(ALLDEP) $(BINBIN) $(BINBIN) : $(BINELF) $(OBJCOPY) $(COPYFLAGS) $^ $@ $(BINELF) : $(OBJECTS) $(LD) -o $@ $(LDFLAGS) $^ $(OBJDUMP) -lDS $@ > $@.txt %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ %.o : %.S $(CC) $(ASFLAGS) -c $< -o $@ $(ALLDEP) : $(SOURCES) $(CC) $(CFLAGS) -MM $^ > $@ sinclude $(ALLDEP) clean: rm -vf $(OBJECTS) $(BINBIN) $(BINELF) $(ALLDEP) ************************************************************* end ************************************************************* ************************************************************* file:test_1001.c ************************************************************* #include <rawapi.h> long lcm(long num1,long num2) { int a, b, temp; if(num1<num2) /*want n1>n2*/ { temp=num1; num1=num2; num2=temp; /*swap*/ } a=num1;//big b=num2;//small while(b!=0) /*gcd*/ { temp=a%b; a=b; b=temp; } return num1*num2 / a; } long test (long a, long b) { return a+b; } int main() { int i, n = 0; long a, b, g; a = 123; b = 321; g = lcm(a, b); uput(g); return 0; } ************************************************************* end ************************************************************* ************************************************************* file:test_1001.i ************************************************************* # 1 "mips_1001.c" # 1 "/home/wuxb/workspace/gcc/test_1001//" # 1 "<built-in>" # 1 "<命令行>" # 1 "mips_1001.c" # 1 "../global/rawapi.h" 1 extern void uput(unsigned int value); # 2 "mips_1001.c" 2 long lcm(long num1,long num2) { int a, b, temp; if(num1<num2) { temp=num1; num1=num2; num2=temp; } a=num1; b=num2; while(b!=0) { temp=a%b; a=b; b=temp; } return num1*num2 / a; } long test (long a, long b) { return a+b; } int main() { int i, n = 0; long a, b, g; a = 123; b = 321; g = lcm(a, b); uput(g); return 0; } ************************************************************* ************************************************************* ************************************************************* mipsel-gnu-linux-objdump elf file. ************************************************************* bin.elf: file format elf32-tradlittlemips Disassembly of section .text: bfc00000 <_start>: ../global/head.S:18 nop .global uput uput: lui t0, 0xa000 sw a0, 0x700(t0) jr ra bfc00000: 3c10a000 lui s0,0xa000 bfc00004: 2610fff0 addiu s0,s0,-16 bfc00008: 0200e821 move sp,s0 bfc0000c: 10000055 b bfc00164 <main> bfc00010: 00000000 nop ... bfc0001c <uput>: bfc0001c: 3c08a000 lui t0,0xa000 bfc00020: ad040700 sw a0,1792(t0) bfc00024: 03e00008 jr ra bfc00028: 00000000 nop bfc0002c: 00000000 nop bfc00030 <lcm>: lcm(): /home/wuxb/workspace/gcc/test_1001/mips_1001.c:3 #include <rawapi.h> long lcm(long num1,long num2) { bfc00030: 27bdffe8 addiu sp,sp,-24 bfc00034: afbe0014 sw s8,20(sp) bfc00038: 03a0f021 move s8,sp bfc0003c: afc40018 sw a0,24(s8) bfc00040: afc5001c sw a1,28(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:5 int a, b, temp; if(num1<num2) /*want n1>n2*/ bfc00044: 8fc30018 lw v1,24(s8) bfc00048: 8fc2001c lw v0,28(s8) bfc0004c: 00000000 nop bfc00050: 0062102a slt v0,v1,v0 bfc00054: 1040000a beqz v0,bfc00080 <lcm+0x50> bfc00058: 00000000 nop /home/wuxb/workspace/gcc/test_1001/mips_1001.c:7 { temp=num1; bfc0005c: 8fc20018 lw v0,24(s8) bfc00060: 00000000 nop bfc00064: afc20008 sw v0,8(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:8 num1=num2; bfc00068: 8fc2001c lw v0,28(s8) bfc0006c: 00000000 nop bfc00070: afc20018 sw v0,24(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:9 num2=temp; /*swap*/ bfc00074: 8fc20008 lw v0,8(s8) bfc00078: 00000000 nop bfc0007c: afc2001c sw v0,28(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:11 } a=num1;//big bfc00080: 8fc20018 lw v0,24(s8) bfc00084: 00000000 nop bfc00088: afc20000 sw v0,0(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:12 b=num2;//small bfc0008c: 8fc2001c lw v0,28(s8) bfc00090: 00000000 nop bfc00094: afc20004 sw v0,4(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:13 while(b!=0) /*gcd*/ bfc00098: 0bf00036 j bfc000d8 <lcm+0xa8> bfc0009c: 00000000 nop /home/wuxb/workspace/gcc/test_1001/mips_1001.c:15 { temp=a%b; bfc000a0: 8fc30000 lw v1,0(s8) bfc000a4: 8fc20004 lw v0,4(s8) bfc000a8: 00000000 nop bfc000ac: 14400002 bnez v0,bfc000b8 <lcm+0x88> bfc000b0: 0062001a div zero,v1,v0 bfc000b4: 0007000d break 0x7 bfc000b8: 00001010 mfhi v0 bfc000bc: afc20008 sw v0,8(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:16 a=b; bfc000c0: 8fc20004 lw v0,4(s8) bfc000c4: 00000000 nop bfc000c8: afc20000 sw v0,0(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:17 b=temp; bfc000cc: 8fc20008 lw v0,8(s8) bfc000d0: 00000000 nop bfc000d4: afc20004 sw v0,4(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:13 num1=num2; num2=temp; /*swap*/ } a=num1;//big b=num2;//small while(b!=0) /*gcd*/ bfc000d8: 8fc20004 lw v0,4(s8) bfc000dc: 00000000 nop bfc000e0: 1440ffef bnez v0,bfc000a0 <lcm+0x70> bfc000e4: 00000000 nop /home/wuxb/workspace/gcc/test_1001/mips_1001.c:19 { temp=a%b; a=b; b=temp; } return num1*num2 / a; bfc000e8: 8fc30018 lw v1,24(s8) bfc000ec: 8fc2001c lw v0,28(s8) bfc000f0: 00000000 nop bfc000f4: 00620018 mult v1,v0 bfc000f8: 00001812 mflo v1 bfc000fc: 8fc20000 lw v0,0(s8) bfc00100: 00000000 nop bfc00104: 14400002 bnez v0,bfc00110 <lcm+0xe0> bfc00108: 0062001a div zero,v1,v0 bfc0010c: 0007000d break 0x7 bfc00110: 00001810 mfhi v1 bfc00114: 00001012 mflo v0 /home/wuxb/workspace/gcc/test_1001/mips_1001.c:20 } bfc00118: 03c0e821 move sp,s8 bfc0011c: 8fbe0014 lw s8,20(sp) bfc00120: 27bd0018 addiu sp,sp,24 bfc00124: 03e00008 jr ra bfc00128: 00000000 nop bfc0012c <test>: test(): /home/wuxb/workspace/gcc/test_1001/mips_1001.c:22 long test (long a, long b) { bfc0012c: 27bdfff8 addiu sp,sp,-8 bfc00130: afbe0004 sw s8,4(sp) bfc00134: 03a0f021 move s8,sp bfc00138: afc40008 sw a0,8(s8) bfc0013c: afc5000c sw a1,12(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:23 return a+b; bfc00140: 8fc30008 lw v1,8(s8) bfc00144: 8fc2000c lw v0,12(s8) bfc00148: 00000000 nop bfc0014c: 00621021 addu v0,v1,v0 /home/wuxb/workspace/gcc/test_1001/mips_1001.c:24 } bfc00150: 03c0e821 move sp,s8 bfc00154: 8fbe0004 lw s8,4(sp) bfc00158: 27bd0008 addiu sp,sp,8 bfc0015c: 03e00008 jr ra bfc00160: 00000000 nop bfc00164 <main>: main(): /home/wuxb/workspace/gcc/test_1001/mips_1001.c:26 int main() { bfc00164: 27bdffd8 addiu sp,sp,-40 bfc00168: afbf0024 sw ra,36(sp) bfc0016c: afbe0020 sw s8,32(sp) bfc00170: 03a0f021 move s8,sp /home/wuxb/workspace/gcc/test_1001/mips_1001.c:27 int i, n = 0; bfc00174: afc00010 sw zero,16(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:29 long a, b, g; a = 123; bfc00178: 2402007b li v0,123 bfc0017c: afc20014 sw v0,20(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:30 b = 321; bfc00180: 24020141 li v0,321 bfc00184: afc20018 sw v0,24(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:31 g = lcm(a, b); bfc00188: 8fc40014 lw a0,20(s8) bfc0018c: 8fc50018 lw a1,24(s8) bfc00190: 0ff0000c jal bfc00030 <lcm> bfc00194: 00000000 nop bfc00198: afc2001c sw v0,28(s8) /home/wuxb/workspace/gcc/test_1001/mips_1001.c:33 uput(g); bfc0019c: 8fc2001c lw v0,28(s8) bfc001a0: 00000000 nop bfc001a4: 00402021 move a0,v0 bfc001a8: 0ff00007 jal bfc0001c <uput> bfc001ac: 00000000 nop /home/wuxb/workspace/gcc/test_1001/mips_1001.c:34 return 0; bfc001b0: 00001021 move v0,zero /home/wuxb/workspace/gcc/test_1001/mips_1001.c:35 } bfc001b4: 03c0e821 move sp,s8 bfc001b8: 8fbf0024 lw ra,36(sp) bfc001bc: 8fbe0020 lw s8,32(sp) bfc001c0: 27bd0028 addiu sp,sp,40 bfc001c4: 03e00008 jr ra bfc001c8: 00000000 nop ../global/head.S:18 bfc001cc: 00000000 nop Disassembly of section .reginfo: bfc001d0 <.reginfo>: bfc001d0: a0010110 sb at,272(zero) ... Disassembly of section .pdr: 00000000 <.pdr>: 0: bfc00030 0xbfc00030 4: 40000000 mfc0 zero,c0_index 8: fffffffc 0xfffffffc ... 14: 00000018 mult zero,zero 18: 0000001e 0x1e 1c: 0000001f 0x1f 20: bfc0012c 0xbfc0012c 24: 40000000 mfc0 zero,c0_index 28: fffffffc 0xfffffffc ... 34: 00000008 jr zero 38: 0000001e 0x1e 3c: 0000001f 0x1f 40: bfc00164 0xbfc00164 44: c0000000 lwc0 $0,0(zero) 48: fffffffc 0xfffffffc ... 54: 00000028 0x28 58: 0000001e 0x1e 5c: 0000001f 0x1f Disassembly of section .comment: 00000000 <.comment>: 0: 3a434347 xori v1,s2,0x4347 4: 4e472820 c3 0x472820 8: 34202955 ori zero,at,0x2955 c: 302e362e andi t6,at,0x362e ... Disassembly of section .gnu.attributes: 00000000 <.gnu.attributes>: 0: 00000f41 0xf41 4: 756e6700 jalx 5b99c00 <__bss_end-0x7a466400> 8: 00070100 sll zero,a3,0x4 c: 01040000 0x1040000 Disassembly of section .stab: 00000000 <.stab>: 0: 00000001 0x1 4: 000b0000 sll zero,t3,0x0 8: 00000022 neg zero,zero c: 00000001 0x1 10: 00000064 0x64 14: bfc00000 0xbfc00000 18: 00000011 mthi zero 1c: 00000084 0x84 20: bfc00000 0xbfc00000 24: 00000000 nop 28: 00080044 0x80044 2c: bfc00000 0xbfc00000 30: 00000000 nop 34: 00090044 0x90044 38: bfc00004 0xbfc00004 3c: 00000000 nop 40: 000a0044 0xa0044 44: bfc00008 0xbfc00008 48: 00000000 nop 4c: 000b0044 0xb0044 50: bfc0000c 0xbfc0000c 54: 00000000 nop 58: 000c0044 0xc0044 5c: bfc00014 0xbfc00014 60: 00000000 nop 64: 000d0044 0xd0044 68: bfc00018 0xbfc00018 6c: 00000000 nop 70: 00100044 0x100044 74: bfc0001c 0xbfc0001c 78: 00000000 nop 7c: 00110044 0x110044 80: bfc00020 0xbfc00020 84: 00000000 nop 88: 00120044 0x120044 8c: bfc00024 0xbfc00024 Disassembly of section .stabstr: 00000000 <.stabstr>: 0: 6d742f00 0x6d742f00 4: 63632f70 0x63632f70 8: 6970626e 0x6970626e c: 732e4141 0x732e4141 10: 2f2e2e00 sltiu t6,t9,11776 14: 626f6c67 0x626f6c67 18: 682f6c61 0x682f6c61 1c: 2e646165 sltiu a0,s3,24933 20: Address 0x0000000000000020 is out of bounds. Disassembly of section .debug_info: 00000000 <.debug_info>: 0: 00000118 0x118 4: 00000002 srl zero,zero,0x0 8: 01040000 0x1040000 c: 0000003d 0x3d 10: 00002c01 0x2c01 14: 00000900 sll at,zero,0x4 18: c0003000 lwc0 $0,12288(zero) 1c: c001ccbf lwc0 $1,-13121(zero) 20: 000000bf 0xbf 24: 6c010200 0x6c010200 28: 01006d63 0x1006d63 2c: 00850102 0x850102 30: 00300000 0x300000 34: 012cbfc0 0x12cbfc0 38: 0000bfc0 sll s7,zero,0x1f 3c: 00850000 0x850000 40: 49030000 0x49030000 44: 01000000 0x1000000 48: 00008502 srl s0,zero,0x14 4c: 00910200 0x910200 50: 00004e03 sra t1,zero,0x18 54: 85020100 lh v0,256(t0) 58: 02000000 0x2000000 5c: 61040491 0x61040491 60: 8c040100 lw a0,256(zero) 64: 02000000 0x2000000 68: 62046891 0x62046891 6c: 8c040100 lw a0,256(zero) 70: 02000000 0x2000000 74: 53056c91 0x53056c91 78: 01000000 0x1000000 7c: 00008c04 0x8c04 80: 70910200 0x70910200 84: 05040600 0x5040600 88: 00000000 nop 8c: 69050407 0x69050407 90: 0800746e j 1d1b8 <__bss_end-0x7ffe2e48> 94: 00005801 0x5801 98: 01150100 0x1150100 9c: 00000085 0x85 a0: bfc0012c 0xbfc0012c a4: bfc00164 0xbfc00164 a8: 0000002c 0x2c ac: 000000c9 0xc9 b0: 01006109 0x1006109 b4: 00008515 0x8515 b8: 00910200 0x910200 bc: 01006209 0x1006209 c0: 00008515 0x8515 c4: 04910200 bgezal a0,8c8 <__bss_end-0x7ffff738> c8: 38010a00 xori at,zero,0xa00 cc: 01000000 0x1000000 d0: 00008c19 0x8c19 d4: c0016400 lwc0 $1,25600(zero) d8: c001ccbf lwc0 $1,-13121(zero) dc: 000058bf 0x58bf e0: 00690b00 0x690b00 e4: 008c1b01 0x8c1b01 e8: 6e040000 0x6e040000 ec: 8c1b0100 lw k1,256(zero) f0: 02000000 0x2000000 f4: 61046891 0x61046891 f8: 851c0100 lh gp,256(t0) fc: 02000000 0x2000000 100: 62046c91 0x62046c91 104: 851c0100 lh gp,256(t0) 108: 02000000 0x2000000 10c: 67047091 0x67047091 110: 851c0100 lh gp,256(t0) 114: 02000000 0x2000000 118: 00007491 0x7491 Disassembly of section .debug_abbrev: 00000000 <.debug_abbrev>: 0: 25011101 addiu at,t0,4353 4: 030b130e 0x30b130e 8: 110e1b0e beq t0,t6,6c44 <__bss_end-0x7fff93bc> c: 10011201 beq zero,at,4814 <__bss_end-0x7fffb7ec> 10: 02000006 srlv zero,zero,s0 14: 0c3f012e jal fc04b8 <__bss_end-0x7f03fb48> 18: 0b3a0803 j ce8200c <__bss_end-0x7317dff4> 1c: 0c270b3b jal 9c2cec <__bss_end-0x7f63d314> 20: 01111349 0x1111349 24: 06400112 bltz s2,470 <__bss_end-0x7ffffb90> 28: 00001301 0x1301 2c: 03000503 0x3000503 30: 3b0b3a0e xori t3,t8,0x3a0e 34: 0213490b 0x213490b 38: 0400000a bltz zero,64 <__bss_end-0x7fffff9c> 3c: 08030034 j c00d0 <__bss_end-0x7ff3ff30> 40: 0b3b0b3a j cec2ce8 <__bss_end-0x7313d318> 44: 0a021349 j 8084d24 <__bss_end-0x77f7b2dc> 48: 34050000 li a1,0x0 4c: 3a0e0300 xori t6,s0,0x300 50: 490b3b0b 0x490b3b0b 54: 000a0213 0xa0213 58: 00240600 0x240600 5c: 0b3e0b0b j cf82c2c <__bss_end-0x7307d3d4> 60: 00000e03 sra at,zero,0x18 64: 0b002407 j c00901c <__bss_end-0x73ff6fe4> 68: 030b3e0b 0x30b3e0b 6c: 08000008 j 20 <__bss_end-0x7fffffe0> 70: 0c3f012e jal fc04b8 <__bss_end-0x7f03fb48> 74: 0b3a0e03 j ce8380c <__bss_end-0x7317c7f4> 78: 0c270b3b jal 9c2cec <__bss_end-0x7f63d314> 7c: 01111349 0x1111349 80: 06400112 bltz s2,4cc <__bss_end-0x7ffffb34> 84: 00001301 0x1301 88: 03000509 0x3000509 8c: 3b0b3a08 xori t3,t8,0x3a08 90: 0213490b 0x213490b 94: 0a00000a j 8000028 <__bss_end-0x77ffffd8> 98: 0c3f012e jal fc04b8 <__bss_end-0x7f03fb48> 9c: 0b3a0e03 j ce8380c <__bss_end-0x7317c7f4> a0: 13490b3b beq k0,t1,2d90 <__bss_end-0x7fffd270> a4: 01120111 0x1120111 a8: 00000640 sll zero,zero,0x19 ac: 0300340b 0x300340b b0: 3b0b3a08 xori t3,t8,0x3a08 b4: 0013490b 0x13490b ... Disassembly of section .debug_loc: 00000000 <.debug_loc>: 0: 00000000 nop 4: 00000004 sllv zero,zero,zero 8: 008d0002 0x8d0002 c: 00000004 sllv zero,zero,zero 10: 0000000c syscall 14: 188d0002 0x188d0002 18: 0000000c syscall 1c: 000000fc 0xfc 20: 188e0002 0x188e0002 ... 2c: 000000fc 0xfc 30: 00000100 sll zero,zero,0x4 34: 008d0002 0x8d0002 38: 00000100 sll zero,zero,0x4 3c: 00000108 0x108 40: 088d0002 j 2340008 <__bss_end-0x7dcbfff8> 44: 00000108 0x108 48: 00000134 0x134 4c: 088e0002 j 2380008 <__bss_end-0x7dc7fff8> 50: 00000000 nop 54: 00000000 nop 58: 00000134 0x134 5c: 00000138 0x138 60: 008d0002 0x8d0002 64: 00000138 0x138 68: 00000144 0x144 6c: 288d0002 slti t5,a0,2 70: 00000144 0x144 74: 0000019c 0x19c 78: 288e0002 slti t6,a0,2 ... Disassembly of section .debug_aranges: 00000000 <.debug_aranges>: 0: 0000001c 0x1c 4: 00000002 srl zero,zero,0x0 8: 00040000 sll zero,a0,0x0 c: 00000000 nop 10: bfc00030 0xbfc00030 14: 0000019c 0x19c ... Disassembly of section .debug_line: 00000000 <.debug_line>: 0: 0000005b 0x5b 4: 00220002 0x220002 8: 01010000 0x1010000 c: 000d0efb 0xd0efb 10: 01010101 0x1010101 14: 01000000 0x1000000 18: 00010000 sll zero,at,0x0 1c: 7370696d 0x7370696d 20: 3030315f andi s0,at,0x315f 24: 00632e31 0x632e31 28: 00000000 nop 2c: 30020500 andi v0,zero,0x500 30: 14bfc000 bne a1,ra,ffff0034 <main+0x403efed0> 34: 76083e08 jalx 820f820 <__bss_end-0x77df07e0> 38: bbbcbbbb swr gp,-17477(sp) 3c: e50884bb swc1 $f8,-31557(t0) 40: 040200bb 0x40200bb 44: 02f8b601 0x2f8b601 48: 3e081330 0x3e081330 4c: 08f33d08 j 3ccf420 <__bss_end-0x7c330be0> 50: 834cf33e lb t4,-3266(k0) 54: 083e0883 j f8220c <__bss_end-0x7f07ddf4> 58: 18024b3d 0x18024b3d 5c: Address 0x000000000000005c is out of bounds. Disassembly of section .debug_str: 00000000 <.debug_str>: 0: 676e6f6c 0x676e6f6c 4: 746e6920 jalx 1b9a480 <__bss_end-0x7e465b80> 8: 6f682f00 0x6f682f00 c: 772f656d jalx cbd95b4 <__bss_end-0x73426a4c> 10: 2f627875 sltiu v0,k1,30837 14: 6b726f77 0x6b726f77 18: 63617073 0x63617073 1c: 63672f65 0x63672f65 20: 65742f63 0x65742f63 24: 315f7473 andi ra,t2,0x7473 28: 00313030 0x313030 2c: 7370696d 0x7370696d 30: 3030315f andi s0,at,0x315f 34: 00632e31 0x632e31 38: 6e69616d 0x6e69616d 3c: 554e4700 0x554e4700 40: 34204320 ori zero,at,0x4320 44: 302e362e andi t6,at,0x362e 48: 6d756e00 0x6d756e00 4c: 756e0031 jalx 5b800c4 <__bss_end-0x7a47ff3c> 50: 7400326d jalx c9b4 <__bss_end-0x7fff364c> 54: 00706d65 0x706d65 58: 74736574 jalx 1cd95d0 <__bss_end-0x7e326a30> 5c: Address 0x000000000000005c is out of bounds. Disassembly of section .debug_frame: 00000000 <.debug_frame>: 0: 0000000c syscall 4: ffffffff 0xffffffff 8: 7c010001 0x7c010001 c: 001d0d1f 0x1d0d1f 10: 00000014 0x14 14: 00000000 nop 18: bfc00030 0xbfc00030 1c: 000000fc 0xfc 20: 48180e44 0x48180e44 24: 1e0d019e 0x1e0d019e 28: 00000014 0x14 2c: 00000000 nop 30: bfc0012c 0xbfc0012c 34: 00000038 0x38 38: 48080e44 0x48080e44 3c: 1e0d019e 0x1e0d019e 40: 00000018 mult zero,zero 44: 00000000 nop 48: bfc00164 0xbfc00164 4c: 00000068 0x68 50: 4c280e44 0x4c280e44 54: 019f029e 0x19f029e 58: 00001e0d break 0x0,0x78 *********************************************************** command line output on 'make': *********************************************************** mipsel-gnu-linux-gcc -v -save-temps -Wall -g -fno-builtin -fno-pic -mno-abicalls -I../global -MM ../global/head.S mips_1001.c > Makefile.dep 使用内建 specs。 COLLECT_GCC=mipsel-gnu-linux-gcc COLLECT_LTO_WRAPPER=/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/lto-wrapper 目标:mipsel-gnu-linux 配置为:../gcc-4.6.0/configure --prefix=/home/wuxb/.gccmips0 --target=mipsel-gnu-linux 线程模型:posix gcc 版本 4.6.0 (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-MM' '-mllsc' '-mno-synci' '-mno-shared' /home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/cc1 -E -lang-asm -quiet -v -I ../global -MM ../global/head.S -mno-abicalls -mllsc -mno-synci -mno-shared -Wall -fno-builtin -fno-pic -g -fworking-directory -fpch-preprocess -fno-directives-only 忽略不存在的目录“/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/sys-include” 忽略不存在的目录“/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/include” #include "..." 搜索从这里开始: #include <...> 搜索从这里开始: ../global /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/include /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/include-fixed 搜索列表结束。 COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-MM' '-mllsc' '-mno-synci' '-mno-shared' /home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/cc1 -E -quiet -v -I ../global -MM mips_1001.c -mno-abicalls -mllsc -mno-synci -mno-shared -Wall -fno-builtin -fno-pic -g -fworking-directory -fpch-preprocess 忽略不存在的目录“/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/sys-include” 忽略不存在的目录“/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/include” #include "..." 搜索从这里开始: #include <...> 搜索从这里开始: ../global /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/include /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/include-fixed 搜索列表结束。 COMPILER_PATH=/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/bin/ LIBRARY_PATH=/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-MM' '-mllsc' '-mno-synci' '-mno-shared' mipsel-gnu-linux-gcc -gstabs -fno-pic -mno-abicalls -D__ASSEMBLY__ -I../global -c ../global/head.S -o ../global/head.o mipsel-gnu-linux-gcc -v -save-temps -Wall -g -fno-builtin -fno-pic -mno-abicalls -I../global -c mips_1001.c -o mips_1001.o 使用内建 specs。 COLLECT_GCC=mipsel-gnu-linux-gcc COLLECT_LTO_WRAPPER=/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/lto-wrapper 目标:mipsel-gnu-linux 配置为:../gcc-4.6.0/configure --prefix=/home/wuxb/.gccmips0 --target=mipsel-gnu-linux 线程模型:posix gcc 版本 4.6.0 (GCC) COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-c' '-o' 'mips_1001.o' '-mllsc' '-mno-synci' '-mno-shared' /home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/cc1 -E -quiet -v -I ../global mips_1001.c -mno-abicalls -mllsc -mno-synci -mno-shared -Wall -fno-builtin -fno-pic -g -fworking-directory -fpch-preprocess -o mips_1001.i 忽略不存在的目录“/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/sys-include” 忽略不存在的目录“/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/include” #include "..." 搜索从这里开始: #include <...> 搜索从这里开始: ../global /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/include /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/include-fixed 搜索列表结束。 COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-c' '-o' 'mips_1001.o' '-mllsc' '-mno-synci' '-mno-shared' /home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/cc1 -fpreprocessed mips_1001.i -quiet -dumpbase mips_1001.c -mno-abicalls -mllsc -mno-synci -mno-shared -auxbase-strip mips_1001.o -g -Wall -version -fno-builtin -fno-pic -o mips_1001.s GNU C (GCC) 版本 4.6.0 (mipsel-gnu-linux) 由 GNU C 版本 4.6.0 20110509 (Red Hat 4.6.0-7) 编译,GMP 版本 4.3.2,MPFR 版本 3.0.0,MPC 版本 0.8.3-dev GGC 准则:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 GNU C (GCC) 版本 4.6.0 (mipsel-gnu-linux) 由 GNU C 版本 4.6.0 20110509 (Red Hat 4.6.0-7) 编译,GMP 版本 4.3.2,MPFR 版本 3.0.0,MPC 版本 0.8.3-dev GGC 准则:--param ggc-min-expand=100 --param ggc-min-heapsize=131072 Compiler executable checksum: 5256e0f86ee50f82fff2cd17000398ba mips_1001.c: 在函数‘main’中: mips_1001.c:27:12: 警告:未使用的变量‘n’ [-Wunused-variable] mips_1001.c:27:9: 警告:未使用的变量‘i’ [-Wunused-variable] COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-c' '-o' 'mips_1001.o' '-mllsc' '-mno-synci' '-mno-shared' /home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/bin/as -EL -g -no-mdebug -mabi=32 -mno-shared -o mips_1001.o mips_1001.s COMPILER_PATH=/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/libexec/gcc/mipsel-gnu-linux/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/bin/ LIBRARY_PATH=/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/:/home/wuxb/.gccmips0/lib/gcc/mipsel-gnu-linux/4.6.0/../../../../mipsel-gnu-linux/lib/ COLLECT_GCC_OPTIONS='-v' '-save-temps' '-Wall' '-g' '-fno-builtin' '-fno-pic' '-mno-abicalls' '-I' '../global' '-c' '-o' 'mips_1001.o' '-mllsc' '-mno-synci' '-mno-shared' mipsel-gnu-linux-ld -o bin.elf -T ../global/mips.lds ../global/head.o mips_1001.o mipsel-gnu-linux-objdump -lDS bin.elf > bin.elf.txt mipsel-gnu-linux-objcopy --gap-fill=0xff -O binary bin.elf bin.bin *************************************************************** end ***************************************************************