Date: Thu, 24 Apr 2003 16:57:01 -0500 From: Eric Rudd Organization: CyberOptics User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.3) Gecko/20030312 X-Accept-Language: en,pdf MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: Bug 00314 -- div() still broken References: <3e9c6920$0$21928$afc38c87@> <3EA5477F DOT 2020901 AT cyberoptics DOT com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Lines: 31 Message-ID: <3ea85d95$0$12489$4c41069e@reader1.ash.ops.us.uu.net> NNTP-Posting-Host: 65.214.98.62 X-Trace: 1051221397 reader1.ash.ops.us.uu.net 12489 65.214.98.62 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Ben Peddell wrote: > Eric Rudd wrote: > >> I think I had some problem with -fomit-frame-pointer, but I'm still >> investigating. > > Things are being pushed wrong. > edi is supposed to hold the address of the div_t structure, yet is has > 0x28 (40) in it. eax and ebx are supposed to have 40 in them, yet they > have -3 in them. > div() wants the stack to look like: > 16(%ebp): divisor > 12(%ebp): numerator > 8(%ebp): &return > But it appears to look like: > 16(%ebp): something between -2 and +2 > 12(%ebp): divisor > 8(%ebp): numerator > > There in lies the problem. This confirms my suspicion that there is a problem with -fomit-frame-pointer. I thought that routines in libc.a could be called from a program compiled either with or without -fomit-frame-pointer, but I found that I could call the existing div.o in libc.a only if I didn't use -fomit-frame-pointer. Hmm... -Eric Rudd rudd AT cyberoptics DOT com