[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

egcs bug?



# developers-ja :-)

NFS mount で df の表示がおかしくなる件ですが、OpenBSDのように
こうすれば直るみたいです。

これって strtod() と同じかな? -O1 なら発現しないし。
(誰か、どこが ANSI-C 的にいけなかったのかおしえてくれるとうれしい:-)

*** sys/nfs/xdr_subs.h	Thu Feb 12 05:26:04 1998
--- ./xdr_subs.h	Mon Feb  8 21:50:11 1999
***************
*** 97,106 ****
--- 97,112 ----
  	((struct nfsv3_time *)(t))->nfsv3_nsec = htonl((f)->tv_nsec); \
  }
  
+ #if 0
  #define	fxdr_hyper(f, t) { \
  	((int32_t *)(t))[_QUAD_HIGHWORD] = ntohl(((int32_t *)(f))[0]); \
  	((int32_t *)(t))[_QUAD_LOWWORD] = ntohl(((int32_t *)(f))[1]); \
  }
+ #else
+ #define fxdr_hyper(f, t) \
+ 	*(t) = ((((u_quad_t)ntohl(((u_int32_t *)(f))[0])) << 32) | \
+ 		(u_quad_t)(ntohl(((u_int32_t *)(f))[1])))
+ #endif
  #define	txdr_hyper(f, t) { \
  	((int32_t *)(t))[0] = htonl(((int32_t *)(f))[_QUAD_HIGHWORD]); \
  	((int32_t *)(t))[1] = htonl(((int32_t *)(f))[_QUAD_LOWWORD]); \


# きっと txdr_hyper も直さなきゃいけない。