Date: Sun, 9 Apr 2000 11:31:03 +0200 From: Mirko Viviani <mirko.viviani@rccr.cremona.it> To: Mike Heffner <spock@techfour.net> Cc: current@FreeBSD.org Subject: Re: 4.0 possible compiler bug ? Message-ID: <200004090931.LAA02968@rccr.cremona.it> In-Reply-To: <XFMail.20000408211158.mheffner@mailandnews.com> References: <XFMail.20000408211158.mheffner@mailandnews.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--NeXT-Mail-29933908-1 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline On Sat, 08 Apr 2000, Mike Heffner wrote: > | I'm testing the __builtin_apply() to make a patch to GNUstep, but I'm > | getting > | in troubles. > > Since you're on the subject, there are also two other bugs with > __builtin_apply() in FBSD that I know of. Always better... :( > The easy hack to fix 2 is to remove FP_X_INV from the floating point mask > -- but this is not the right way to do it. 1 can be fixed by passing a > pointer of a float. Exactly how to do that ? > I tried investigating into it a while back, but didn't have any luck. I > know that 2 isn't a problem in 3-stable. If we'are not able to fix it I'm forced to change OS... I need GNUstep. I have tested the prg with NEXTSTEP cc 2.5.8 that uses the same behaviour for these things, it does not crash and return a pointer for the struct on the stack. CC differences: argframe: NS 8 bytes, FBSD 16 bytes struct on the stack: NS up to 4 bytes, FBSD up to 8 bytes. If it helps someone here is the asm generated by cc on NS. [An attachment was originally included here] --- Bye, Mirko <mirko.viviani@rccr.cremona.it> (NeXTmail, MIME) <mirko@yourbox.net> --NeXT-Mail-29933908-1 Content-Type: multipart/mixed; boundary=NeXT-Mail-1209868928-2 Content-Transfer-Encoding: 7bit --NeXT-Mail-1209868928-2 Content-Type: text/enriched; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline <nofill>On Sat, 08 Apr 2000, Mike Heffner wrote: > | I'm testing the __builtin_apply() to make a patch to GNUstep, but I'm > | getting > | in troubles. > > Since you're on the subject, there are also two other bugs with > __builtin_apply() in FBSD that I know of. Always better... :( > The easy hack to fix 2 is to remove FP_X_INV from the floating point mask > -- but this is not the right way to do it. 1 can be fixed by passing a > pointer of a float. Exactly how to do that ? > I tried investigating into it a while back, but didn't have any luck. I > know that 2 isn't a problem in 3-stable. If we'are not able to fix it I'm forced to change OS... I need GNUstep. I have tested the prg with NEXTSTEP cc 2.5.8 that uses the same behaviour </nofill>for these things, it does not crash and return a pointer for the struct on the stack. <nofill> CC differences: argframe: NS 8 bytes, FBSD 16 bytes struct on the stack: NS up to 4 bytes, FBSD up to 8 bytes. If it helps someone here is the asm generated by cc on NS. </nofill> --NeXT-Mail-1209868928-2 Content-Type: application/octet-stream; name=contest_i.S; x-unix-mode=0600 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=contest_i.S .globl _value .data .align 2 _value: .long _p .text .align 2,0x90 .globl _floatValue _floatValue: pushl %ebp movl %esp,%ebp pushl %ebx movl %ebx,%eax movb $32,_p movb $3,_p+1 movb $4,_p+2 movb $33,_p+3 movb $-2,_p+9 movl $_p,%edx movl (%edx),%ecx movl %ecx,(%eax) movl 4(%edx),%ecx movl %ecx,4(%eax) movw 8(%edx),%cx movw %cx,8(%eax) jmp L1 .align 2,0x90 L1: movl %eax,%eax movl -4(%ebp),%ebx movl %ebp,%esp popl %ebp ret .cstring LC0: .ascii "%02x \0" LC1: .ascii "\12\0" .text .align 2,0x90 .globl _main _main: pushl %ebp movl %esp,%ebp subl $140,%esp pushl %edi pushl %esi pushl %ebx leal 8(%ebp),%ecx movl %ecx,-24(%ebp) movl %ebx,%ecx movl %ecx,-20(%ebp) leal -24(%ebp),%ecx movl $_floatValue,-8(%ebp) movl %ecx,-16(%ebp) movl -16(%ebp),%ecx movl $0,(%ecx) movl -16(%ebp),%ebx movl (%ebx),%ecx movl %esp,%esi movl %esp,%ecx movl -16(%ebp),%ebx addl $4,%ebx movl (%ebx),%ecx movl %ecx,%ebx movl -8(%ebp),%ecx leal -140(%ebp),%edi call *%ecx movl %eax,(%edi) movl %edx,4(%edi) fnsave 8(%edi) movl %esi,%esp leal -140(%ebp),%eax movl %eax,-12(%ebp) movl $0,-4(%ebp) L3: cmpl $39,-4(%ebp) jg L4 movl -12(%ebp),%eax addl -4(%ebp),%eax movzbl (%eax),%edx pushl %edx pushl $LC0 call _printf addl $8,%esp L5: incl -4(%ebp) jmp L3 .align 2,0x90 L4: pushl $LC1 call _printf addl $4,%esp movl $0,-4(%ebp) L6: cmpl $3,-4(%ebp) jg L7 movl -4(%ebp),%eax addl $_value,%eax movzbl (%eax),%edx pushl %edx pushl $LC0 call _printf addl $8,%esp L8: incl -4(%ebp) jmp L6 .align 2,0x90 L7: pushl $LC1 call _printf addl $4,%esp pushl $0 call _exit addl $4,%esp .align 2,0x90 L2: leal -152(%ebp),%esp popl %ebx popl %esi popl %edi movl %ebp,%esp popl %ebp ret .comm _p,12 --NeXT-Mail-1209868928-2 Content-Type: text/enriched; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline --- Bye, Mirko <<mirko.viviani@rccr.cremona.it> (NeXTmail, MIME) <<mirko@yourbox.net> --NeXT-Mail-1209868928-2-- --NeXT-Mail-29933908-1-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200004090931.LAA02968>