Date: Wed, 18 Jan 1995 10:14:19 -0800 From: Sean Eric Fagan <sef@kithrup.com> To: freebsd-current@freefall.cdrom.com, freebsd-questions@freefall.cdrom.com, ugen@netvision.net.il Subject: Re: GCC bug again... Message-ID: <199501181814.KAA24727@kithrup.com>
next in thread | raw e-mail | index | archive | help
Ah ah. I see what he's saying. I compiled:
extern long long lseek (int, long long, int);
char buf[1023];
int fd;
foo() {
lseek (fd, -sizeof(buf), 1);
}
with 'gcc -S' on a 1.1++ system, and this was the output:
.file "t.c"
gcc2_compiled.:
___gnu_compiled_c:
.text
.align 2
.globl _foo
.type _foo,@function
_foo:
pushl %ebp
movl %esp,%ebp
pushl $1
pushl $0 # <--- should be -1
pushl $-1023
pushl _fd
call _lseek
addl $16,%esp
L1:
leave
ret
Lfe1:
.size _foo,Lfe1-_foo
.comm _buf,1024
.comm _fd,4
If the second argument is cast to '(int)', then it Does The Right Thing.
gcc-2.6.0 seems to do this, as well, so it is confused about *something*.
Sean.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199501181814.KAA24727>
