diff --git a/harbour/ChangeLog b/harbour/ChangeLog index ffd1d9f519..dd5f444201 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,17 @@ The license applies to all entries newer than 2009-04-28. */ +2010-07-16 20:55 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * include/hbsetup.h + * src/vm/hvm.c + * contrib/hbmisc/hb_f.c + ! Added workaround for diab bug. Now build goes fine without HB_LONG_LONG_OFF + trick. + + * config/vxworks/diab.mk + + Minor change to sync one C compiler option with VxWorks Workbench + generated one. (missed from prev commit) + 2010-07-16 19:04 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * INSTALL + Added Windows and OS/2 specific extra requirements for @@ -106,7 +117,7 @@ 2010-07-16 14:51 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbrun/hbrun.prg ! Fixed to show error in GTCGI mode instead of going into - an infinite loop. + an infinite loop when launched with interactive options. 2010-07-16 13:55 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * utils/hbtest/hbtest.prg diff --git a/harbour/config/vxworks/diab.mk b/harbour/config/vxworks/diab.mk index fd347d7ba3..eb212380e5 100644 --- a/harbour/config/vxworks/diab.mk +++ b/harbour/config/vxworks/diab.mk @@ -20,7 +20,7 @@ ifeq ($(HB_CPU),x86) _DIAB_CPU := X86LH else ifeq ($(HB_CPU),arm) - _DIAB_CPU := + _DIAB_CPU := ARMV7LS else ifeq ($(HB_CPU),mips) _DIAB_CPU := @@ -44,9 +44,9 @@ CC := $(HB_CCACHE) $(HB_CCPREFIX)$(HB_CMP) CC_IN := -c CC_OUT := -o -CFLAGS += -t$(_DIAB_CPU):rtpsim -WDVSB_DIR=$(WIND_BASE)/target/lib -LDFLAGS += -t$(_DIAB_CPU):rtpsim -WDVSB_DIR=$(WIND_BASE)/target/lib -DFLAGS += -t$(_DIAB_CPU):rtpsim -WDVSB_DIR=$(WIND_BASE)/target/lib +CFLAGS += -t$(_DIAB_CPU):rtp -WDVSB_DIR=$(WIND_BASE)/target/lib +LDFLAGS += -t$(_DIAB_CPU):rtp -WDVSB_DIR=$(WIND_BASE)/target/lib +DFLAGS += -t$(_DIAB_CPU):rtp -WDVSB_DIR=$(WIND_BASE)/target/lib CFLAGS += -I. -I$(HB_INC_COMPILE) CFLAGS += -I$(WIND_BASE)/target/usr/h diff --git a/harbour/contrib/hbmisc/hb_f.c b/harbour/contrib/hbmisc/hb_f.c index 75ad5b9fcb..cc93c5586a 100644 --- a/harbour/contrib/hbmisc/hb_f.c +++ b/harbour/contrib/hbmisc/hb_f.c @@ -395,8 +395,15 @@ HB_FUNC( HB_FREADANDSKIP ) offset[area] = offset[area] + x; recno[area] += 1; /* See if there's more to read */ - if( !isEof[area] ) - isEof[area] = (lastbyte[area] <= offset[area] + 1) ; + if( !isEof[area ] ) + { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = (lastbyte[area] <= offset[area] + 1); + isEof[area] = f; +#else + isEof[area] = (lastbyte[area] <= offset[area] + 1); +#endif + } hb_retclen( b, x - (bHasCRLF ? 2 : 0) ); } diff --git a/harbour/include/hbsetup.h b/harbour/include/hbsetup.h index a95ded81d6..14aaf3614b 100644 --- a/harbour/include/hbsetup.h +++ b/harbour/include/hbsetup.h @@ -422,12 +422,6 @@ /* NOTE: Needed to avoid 'implicit bzero() declaration' warnings */ extern void bzero( char * buffer, int nbytes ); #endif -#if defined( __DCC__ ) - /* NOTE: Without this, the compiler will crash with this error, even with optimizations disabled: [vszakats] - "../../../hvm.c", line 9827: internal compiler error (etoa:1000): - Failed allocating register pair - please contact support@windriver.com */ - #define HB_LONG_LONG_OFF -#endif /* *********************************************************************** * Operating system specific definitions diff --git a/harbour/src/vm/hvm.c b/harbour/src/vm/hvm.c index a4d6bfc2be..7fc5990c3c 100644 --- a/harbour/src/vm/hvm.c +++ b/harbour/src/vm/hvm.c @@ -9771,7 +9771,12 @@ HB_BOOL hb_xvmEqualInt( HB_LONG lValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value == ( HB_MAXINT ) lValue; + pItem->item.asLogical.value = f; +#else pItem->item.asLogical.value = pItem->item.asLong.value == ( HB_MAXINT ) lValue; +#endif pItem->type = HB_IT_LOGICAL; } else if( HB_IS_DOUBLE( pItem ) ) @@ -9824,7 +9829,12 @@ HB_BOOL hb_xvmEqualIntIs( HB_LONG lValue, HB_BOOL * pfValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value == ( HB_MAXINT ) lValue; + * pfValue = f; +#else * pfValue = pItem->item.asLong.value == ( HB_MAXINT ) lValue; +#endif hb_stackDec(); } else if( HB_IS_DOUBLE( pItem ) ) @@ -9890,7 +9900,12 @@ HB_BOOL hb_xvmNotEqualInt( HB_LONG lValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value != ( HB_MAXINT ) lValue; + pItem->item.asLogical.value = f; +#else pItem->item.asLogical.value = pItem->item.asLong.value != ( HB_MAXINT ) lValue; +#endif pItem->type = HB_IT_LOGICAL; } else if( HB_IS_DOUBLE( pItem ) ) @@ -9943,7 +9958,12 @@ HB_BOOL hb_xvmNotEqualIntIs( HB_LONG lValue, HB_BOOL * pfValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value != ( HB_MAXINT ) lValue; + * pfValue = f; +#else * pfValue = pItem->item.asLong.value != ( HB_MAXINT ) lValue; +#endif hb_stackDec(); } else if( HB_IS_DOUBLE( pItem ) ) @@ -10009,7 +10029,12 @@ HB_BOOL hb_xvmLessThenInt( HB_LONG lValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value < ( HB_MAXINT ) lValue; + pItem->item.asLogical.value = f; +#else pItem->item.asLogical.value = pItem->item.asLong.value < ( HB_MAXINT ) lValue; +#endif pItem->type = HB_IT_LOGICAL; } else if( HB_IS_DOUBLE( pItem ) ) @@ -10057,7 +10082,12 @@ HB_BOOL hb_xvmLessThenIntIs( HB_LONG lValue, HB_BOOL * pfValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value < ( HB_MAXINT ) lValue; + * pfValue = f; +#else * pfValue = pItem->item.asLong.value < ( HB_MAXINT ) lValue; +#endif hb_stackDec(); } else if( HB_IS_DOUBLE( pItem ) ) @@ -10118,7 +10148,12 @@ HB_BOOL hb_xvmLessEqualThenInt( HB_LONG lValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value <= ( HB_MAXINT ) lValue; + pItem->item.asLogical.value = f; +#else pItem->item.asLogical.value = pItem->item.asLong.value <= ( HB_MAXINT ) lValue; +#endif pItem->type = HB_IT_LOGICAL; } else if( HB_IS_DOUBLE( pItem ) ) @@ -10166,7 +10201,12 @@ HB_BOOL hb_xvmLessEqualThenIntIs( HB_LONG lValue, HB_BOOL * pfValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value <= ( HB_MAXINT ) lValue; + * pfValue = f; +#else * pfValue = pItem->item.asLong.value <= ( HB_MAXINT ) lValue; +#endif hb_stackDec(); } else if( HB_IS_DOUBLE( pItem ) ) @@ -10227,7 +10267,12 @@ HB_BOOL hb_xvmGreaterThenInt( HB_LONG lValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value > ( HB_MAXINT ) lValue; + pItem->item.asLogical.value = f; +#else pItem->item.asLogical.value = pItem->item.asLong.value > ( HB_MAXINT ) lValue; +#endif pItem->type = HB_IT_LOGICAL; } else if( HB_IS_DOUBLE( pItem ) ) @@ -10275,7 +10320,12 @@ HB_BOOL hb_xvmGreaterThenIntIs( HB_LONG lValue, HB_BOOL * pfValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value > ( HB_MAXINT ) lValue; + * pfValue = f; +#else * pfValue = pItem->item.asLong.value > ( HB_MAXINT ) lValue; +#endif hb_stackDec(); } else if( HB_IS_DOUBLE( pItem ) ) @@ -10336,7 +10386,12 @@ HB_BOOL hb_xvmGreaterEqualThenInt( HB_LONG lValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value >= ( HB_MAXINT ) lValue; + pItem->item.asLogical.value = f; +#else pItem->item.asLogical.value = pItem->item.asLong.value >= ( HB_MAXINT ) lValue; +#endif pItem->type = HB_IT_LOGICAL; } else if( HB_IS_DOUBLE( pItem ) ) @@ -10384,7 +10439,12 @@ HB_BOOL hb_xvmGreaterEqualThenIntIs( HB_LONG lValue, HB_BOOL * pfValue ) } else if( HB_IS_LONG( pItem ) ) { +#if defined( __DCC__ ) /* NOTE: Workaround for vxworks/diab/x86 5.8.0.0 compiler bug. */ + HB_BOOL f = pItem->item.asLong.value >= ( HB_MAXINT ) lValue; + * pfValue = f; +#else * pfValue = pItem->item.asLong.value >= ( HB_MAXINT ) lValue; +#endif hb_stackDec(); } else if( HB_IS_DOUBLE( pItem ) )