[PATCH] Bug in difftime() for H8300

Anita Kulkarni AnitaK@kpit.com
Tue Jan 21 05:11:00 GMT 2003

The current implementation of difftime() gives incorrect results for H8300.
This is because of long int to double conversion. On H8300 double is of 4 bytes. 
Hence for bigger integer values, the conversion of the integer to the double results
in rounding off the value and so you get incorrect results from difftime.

Performing integer arithmetic and then converting result to double increases chances 
of getting correct results.

The following patch first calculates the difference of time and then converts 
the result to double. This should also help other targets where double is 32 bits.


  2002-12-03  Anita Kulkarni  <anitak@kpit.com>
         * libc/time/difftime.c : Typecast the result to double.
	*** difftime.c.orig.txt	Tue Dec 10 16:03:08 2002
	--- difftime.c	Tue Dec 10 16:04:38 2002
	*** 40,45 ****
	  	time_t tim1 _AND
	  	time_t tim2)
	!   return ((double) tim1 - tim2);
	--- 40,45 ----
	  	time_t tim1 _AND
	  	time_t tim2)
	!   return (double) (tim1 - tim2);
Anita Kulkarni

Free download of GNUSH and GNUH8 tool chains for Hitachi's SH and H8 Series.
The following site also offers free support to European customers.
Read more at http://www.kpit.com/products/support.htm
Latest versions of GNUSH and GNUH8 are released on January 1, 2003.

More information about the Newlib mailing list