pphillip@CS.UBC.CA (Peter Phillips) (02/22/89)
The following program should produce the output: 0 1 2 3 4 5 6 7 8 9 a b c d e f instead of 0 0 1 2 3 4 5 6 7 8 9 a b c d e It was compile using gcc version 1.33 on a Sun 3/50 running SunOS 4.0 The configuration files were linked using config.gcc sun4-os4. The structure is put onto the stack using bcopy and bcopy is passed incorrect parameters. I have included the assembler output from gcc -v -g -S bug.c. I hope you will be able to fix this. Thank You, Peter Phillips. Script started on Tue Feb 21 12:17:22 1989 kootenay<1> cat bug.c #define MAX 16 struct foo { int e[MAX]; } bar; main() { int i; for (i = 0; i < MAX; i++) bar.e[i] = i; dump(bar); } int dump(baz) struct foo baz; { int i; for (i = 0; i < MAX; i++) printf("%x ", baz.e[i]); printf("\n"); } kootenay<2> gcc -g -o bug bug.c kootenay<3> bug 0 0 1 2 3 4 5 6 7 8 9 a b c d e kootenay<4> gcc -g -S bug.c kootenay<5> cat bug.s #NO_APP gcc_compiled.: .stabs "bug.c",100,0,0,Ltext Ltext: .stabs "int:t1=r1;-2147483648;2147483647;",128,0,0,0 .stabs "char:t2=r2;0;127;",128,0,0,0 .stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0 .stabs "unsigned int:t4=r1;0;-1;",128,0,0,0 .stabs "long unsigned int:t5=r1;0;-1;",128,0,0,0 .stabs "short int:t6=r1;-32768;32767;",128,0,0,0 .stabs "long long int:t7=r1;0;-1;",128,0,0,0 .stabs "short unsigned int:t8=r1;0;65535;",128,0,0,0 .stabs "long long unsigned int:t9=r1;0;-1;",128,0,0,0 .stabs "signed char:t10=r1;-128;127;",128,0,0,0 .stabs "unsigned char:t11=r1;0;255;",128,0,0,0 .stabs "float:t12=r1;4;0;",128,0,0,0 .stabs "double:t13=r1;8;0;",128,0,0,0 .stabs "long double:t14=r1;8;0;",128,0,0,0 .stabs "void:t15=15",128,0,0,0 .text .even .globl _main _main: .stabd 68,0,8 link a6,#-4 LBB2: .stabd 68,0,11 clrl a6@(-4) L2: moveq #15,d1 cmpl a6@(-4),d1 jlt L3 .stabd 68,0,12 movel a6@(-4),d0 asll #2,d0 lea _bar,a0 movel a6@(-4),a0@(d0:l) .stabd 68,0,11 L4: addql #1,a6@(-4) jra L2 L3: .stabd 68,0,13 subw #64,sp movel sp,d0 addql #4,d0 pea 64:w movel d0,sp@- pea _bar jbsr _bcopy addw #12,sp jbsr _dump LBE2: .stabd 68,0,14 L1: unlk a6 rts .stabs "foo:T16=s64e:17=ar1;0;15;1,0,512;;",128,0,0,0 .stabs "main:F1",36,0,0,_main .stabs "i:1",128,0,0,-4 .stabn 192,0,0,LBB2 .stabn 224,0,0,LBE2 LC0: .ascii "%x \0" LC1: .ascii "\12\0" .even .globl _dump _dump: .stabd 68,0,17 link a6,#-4 LBB3: .stabd 68,0,21 clrl a6@(-4) L6: moveq #15,d1 cmpl a6@(-4),d1 jlt L7 .stabd 68,0,22 movel a6@(-4),d0 movel a6@(8,d0:l:4),sp@- pea LC0 jbsr _printf .stabd 68,0,21 addqw #8,sp L8: addql #1,a6@(-4) jra L6 L7: .stabd 68,0,24 pea LC1 jbsr _printf LBE3: .stabd 68,0,25 L5: unlk a6 rts .stabs "dump:F1",36,0,0,_dump .stabs "baz:p16",160,0,0,8 .stabs "i:1",128,0,0,-4 .stabn 192,0,0,LBB3 .stabn 224,0,0,LBE3 .stabs "bar:G16",32,0,0,0 .comm _bar,64 kootenay<6> exit kootenay<7> script done on Tue Feb 21 12:18:04 1989