diff --git a/harbour/ChangeLog b/harbour/ChangeLog index a102bdb964..5efd04bc28 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,15 @@ +20000331-15:10 EST Paul Tucker + * source/rdd/dbf1.c + * source/rdd/sdf1.c + * source/rdd/delim1.c + * source/rdd/dbfcdx/dbfcdx1.c + * source/rdd/dbfntx/dbfntx1.c + * source/compiler/genc.c + * contrib/rdd_ads/ads1.c + * include/hbinit.h + * updated initSymbols handling - particularly for msc flavours. + * Still a work in progress. Thanks also to Victor + 20000331-19:24 GMT+1 Victor Szakats * source/rtl/valtype.c diff --git a/harbour/source/compiler/genc.c b/harbour/source/compiler/genc.c index 5228e2c399..4f2a9ae55b 100644 --- a/harbour/source/compiler/genc.c +++ b/harbour/source/compiler/genc.c @@ -156,8 +156,28 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou pSym = pSym->pNext; } - fprintf( yyc, "\nHB_INIT_SYMBOLS_END( hb_vm_SymbolInit_%s%s )\n", hb_comp_szPrefix, pFileName->szName ); - fprintf( yyc, "#if ! defined(__GNUC__) && ! defined(_MSC_VER)\n #pragma startup hb_vm_SymbolInit_%s%s\n#endif\n\n\n", hb_comp_szPrefix, pFileName->szName ); + + fprintf( yyc, "\nHB_INIT_SYMBOLS_END( hb_vm_SymbolInit_%s%s )\n" + "#if defined(_MSC_VER)\n" + " #if _MSC_VER >= 1010\n" + /* [pt] First version of MSC I have that supports this */ + /* is msvc4.1 (msc 10.10) */ + " #pragma data_seg( \".CRT$XIY\" )\n" + " #pragma comment( linker, \"/Merge:.CRT=.data\" )\n" + " #else\n" + " #pragma data_seg( \"XIY\" )\n" + " #endif\n" + " #pragma warning( disable: 4152 )\n" + " static void * hb_vm_auto_SymbolInit_%s%s = &hb_vm_SymbolInit_%s%s;\n" + " #pragma warning( default: 4152 )\n" + " #pragma data_seg()\n" + "#elif ! defined(__GNUC__)\n" + " #pragma startup hb_vm_SymbolInit_%s%s\n" + "#endif\n\n", + hb_comp_szPrefix, pFileName->szName, + hb_comp_szPrefix, pFileName->szName, + hb_comp_szPrefix, pFileName->szName, + hb_comp_szPrefix, pFileName->szName ); /* Generate functions data */ diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index fdc33181e2..6a542bd238 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -111,15 +111,11 @@ HB_INIT_SYMBOLS_END( dbf1__InitSymbols ) #pragma data_seg( "XIY" ) #endif #pragma warning( disable: 4152 ) - static void *hb_vm_auto_dbf1__InitSymbols = &dbf1__InitSymbols; + static void * hb_vm_auto_dbf1__InitSymbols = &dbf1__InitSymbols; #pragma warning( default: 4152 ) #pragma data_seg() - -#else - - #if ! defined(__GNUC__) - #pragma startup dbf1__InitSymbols - #endif +#elif ! defined(__GNUC__) + #pragma startup dbf1__InitSymbols #endif #define LOCK_START 0x40000000L diff --git a/harbour/source/rdd/delim1.c b/harbour/source/rdd/delim1.c index 53937c1843..fea73df064 100644 --- a/harbour/source/rdd/delim1.c +++ b/harbour/source/rdd/delim1.c @@ -55,15 +55,11 @@ HB_INIT_SYMBOLS_END( delim1__InitSymbols ) #pragma data_seg( "XIY" ) #endif #pragma warning( disable: 4152 ) - static void *hb_vm_auto_delim1__InitSymbols = &delim1__InitSymbols; + static void * hb_vm_auto_delim1__InitSymbols = &delim1__InitSymbols; #pragma warning( default: 4152 ) #pragma data_seg() - -#else - - #if ! defined(__GNUC__) - #pragma startup delim1__InitSymbols - #endif +#elif ! defined(__GNUC__) + #pragma startup delim1__InitSymbols #endif static RDDFUNCS delimSuper = { 0 }; diff --git a/harbour/source/rdd/sdf1.c b/harbour/source/rdd/sdf1.c index ffcef75c35..3390df3c68 100644 --- a/harbour/source/rdd/sdf1.c +++ b/harbour/source/rdd/sdf1.c @@ -55,15 +55,11 @@ HB_INIT_SYMBOLS_END( sdf1__InitSymbols ) #pragma data_seg( "XIY" ) #endif #pragma warning( disable: 4152 ) - static void *hb_vm_auto_sdf1__InitSymbols = &sdf1__InitSymbols; + static void * hb_vm_auto_sdf1__InitSymbols = &sdf1__InitSymbols; #pragma warning( default: 4152 ) #pragma data_seg() - -#else - - #if ! defined(__GNUC__) - #pragma startup sdf1__InitSymbols - #endif +#elif ! defined(__GNUC__) + #pragma startup sdf1__InitSymbols #endif static RDDFUNCS sdfSuper = { 0 };