From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1490 invoked by alias); 15 Sep 2003 20:58:18 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 1467 invoked from network); 15 Sep 2003 20:58:16 -0000 Received: from unknown (HELO nevyn.them.org) (66.93.172.17) by sources.redhat.com with SMTP; 15 Sep 2003 20:58:16 -0000 Received: from drow by nevyn.them.org with local (Exim 4.22 #1 (Debian)) id 19z0QJ-0001CP-QJ; Mon, 15 Sep 2003 16:58:15 -0400 Date: Mon, 15 Sep 2003 20:58:00 -0000 From: Daniel Jacobowitz To: Andrew Cagney Cc: gdb-patches@sources.redhat.com, binutils@sources.redhat.com, gcc-patches@gcc.gnu.org Subject: Re: [libiberty and gdb] floatformat_is_valid Message-ID: <20030915205815.GA4563@nevyn.them.org> Mail-Followup-To: Andrew Cagney , gdb-patches@sources.redhat.com, binutils@sources.redhat.com, gcc-patches@gcc.gnu.org References: <20030915143933.GA22129@nevyn.them.org> <3F6626F9.90003@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3F6626F9.90003@redhat.com> User-Agent: Mutt/1.5.1i X-SW-Source: 2003-09/txt/msg00342.txt.bz2 On Mon, Sep 15, 2003 at 04:54:17PM -0400, Andrew Cagney wrote: > >+/* Return non-zero iff the data at FROM is a valid number in format FMT. > >*/ > >+ > >+int > >+floatformat_is_valid (fmt, from) > >+ const struct floatformat *fmt; > >+ char *from; > >+{ > > Shouldn't this be a new virtual method in floatformat? Floatformats don't have any virtual methods right now; if you want to add them, be my guest. Besides, this is more in line with the libiberty policy of backwards compatibility, since it does not change the structure layout. > > >+ if (fmt == &floatformat_i387_ext) > >+ { > >+ /* In the i387 double-extended format, if the exponent is all > >+ ones, then the integer bit must be set. If the exponent > >+ is neither 0 nor ~0, the intbit must also be set. Only > >+ if the exponent is zero can it be zero, and then it must > >+ be zero. */ > >+ unsigned int exponent, int_bit; > >+ unsigned char *ufrom = (unsigned char *) from; > >+ > >+ exponent = get_field (ufrom, fmt->byteorder, fmt->totalsize, > >+ fmt->exp_start, fmt->exp_len); > >+ int_bit = get_field (ufrom, fmt->byteorder, fmt->totalsize, > >+ fmt->man_start, 1); > >+ > >+ if ((exponent == 0) != (int_bit == 0)) > >+ return 0; > >+ else > >+ return 1; > >+ } > >+ > >+ /* Other formats with invalid representations should be added > >+ here. */ > >+ return 1; > > } > > Andrew > > > -- Daniel Jacobowitz MontaVista Software Debian GNU/Linux Developer