ado@NCIFCRF.GOV (Arthur David Olson) (05/20/89)
(We're running SunOS 4.0.1 on a Sun386i.) Description: GNU gcc 1.35's -fpcc-struct-return option can cause problems on a Sun386i. Repeat-By: When the sample program below is compiled without the -fpcc-struct-return option, it works fine; when -fpcc-struct-return is used, an "OOPS!" message is produced. Script started on Fri May 19 23:13:27 1989 bossie$ cat try.c struct s { long l[2]; }; struct s func(c) { if (c != 0) write(2, "OOPS!\n", 6); } main() { (void) func(0); } bossie$ /usr/local/bin/gcc -v try.c gcc version 1.35 /usr/local/lib/gcc-cpp -v -undef -D__GNUC__ -Dunix -Di386 -Dsun386 -Dsun -D__unix__ -D__i386__ -D__sun386__ -D__sun__ try.c /tmp/cca03360.cpp GNU CPP version 1.35 /usr/local/lib/gcc-cc1 /tmp/cca03360.cpp -quiet -dumpbase try.c -version -o /tmp/cca03360.s GNU C version 1.35 (80386, Sun syntax) compiled by CC. as -i386 -o try.o /tmp/cca03360.s ld -e _start -dc -dp /lib/crt0.o try.o /usr/local/lib/gcc-gnulib -lc bossie$ a.out bossie$ /usr/local/bin/gcc -v -fpcc-struct-return try.c gcc version 1.35 /usr/local/lib/gcc-cpp -v -undef -D__GNUC__ -Dunix -Di386 -Dsun386 -Dsun -D__unix__ -D__i386__ -D__sun386__ -D__sun__ try.c /tmp/cca03366.cpp GNU CPP version 1.35 /usr/local/lib/gcc-cc1 /tmp/cca03366.cpp -quiet -dumpbase try.c -fpcc-struct-return -version -o /tmp/cca03366.s GNU C version 1.35 (80386, Sun syntax) compiled by CC. as -i386 -o try.o /tmp/cca03366.s ld -e _start -dc -dp /lib/crt0.o try.o /usr/local/lib/gcc-gnulib -lc bossie$ a.out OOPS! bossie$ /usr/local/bin/gcc -S -fpcc-struct-return try.c bossie$ cat try.s .file "try.c" .version "GNU C 1.35" gcc_compiled.: .text .LC0: .byte 0x4f,0x4f,0x50,0x53,0x21,0xa,0x0 .align 4 .globl func func: pushl %ebp movl %esp,%ebp pushl %ebx movl 8(%ebp),%ebx cmpl $0,8(%ebp) je .L2 pushl $6 pushl $.LC0 pushl $2 call write leal 12(%esp),%esp .L2: movl %ebx,%eax .L1: leal -4(%ebp),%esp popl %ebx leave ret .align 4 .globl main main: pushl %ebp movl %esp,%ebp subl $8,%esp leal -8(%ebp),%eax pushl $0 pushl %eax call func .L3: leave ret bossie$ exit script done on Fri May 19 23:14:50 1989 -- Arthur David Olson ado@ncifcrf.gov ADO is a trademark of Ampex.