X-Spam-Check-By: sourceware.org Message-ID: Date: Thu, 30 Nov 2006 13:30:51 -0500 From: "Lev Bishop" To: cygwin AT cygwin DOT com Subject: Re: isnan() causes segfault In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On 11/30/06, Eric Lilja wrote: > If compiled with: > $ g++ -Wall -Wextra -std=c++98 -pedantic -g isnantest.cpp -o run > (those are the flags we have been using in this course). > But it doesn't stackdump if compiled simply with: > $ make isnantest > g++ isnantest.cpp -o isnantest I was able to reproduce this behaviour. There seems to be a difference in the generated assembler. The -std=c++98 seems to be the only switch that matters. Here is a diff. File isnantest2.s is the stackdumping one (ie the one with -std=c++98) --- isnantest.s 2006-11-30 13:14:12.718750000 -0500 +++ isnantest2.s 2006-11-30 13:26:55.984375000 -0500 @@ -1,4 +1,4 @@ - .file "isnantest.cpp" + .file "isnantest2.cpp" .def ___main; .scl 2; .type 32; .endef .text .align 2 @@ -47,12 +47,9 @@ movl %esp, %ebp subl $8, %esp movl 8(%ebp), %eax - movl %eax, -4(%ebp) - fildl -4(%ebp) - fstps (%esp) - call ___isnanf + movl %eax, (%esp) + call __ZN9__gnu_cxx5isnanIiEEiT_ leave ret - .def ___isnanf; .scl 3; .type 32; .endef .def __ZN9__gnu_cxx15__capture_isnanIiEEiT_; .scl 3; .type 32; .endef .def __ZN9__gnu_cxx5isnanIiEEiT_; .scl 3; .type 32; .endef Lev -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/