2025-12-11 00:15 UTC+0100 Aleksander Czajczynski (hb fki.pl)

* src/vm/macro.c
    * workaround MinGW/GCC 15+ excessive diagnostics in hb_macroTextSymbol()
      to fix strict mode in CI, manifested with either of those messages:
      error: 'memcpy' specified bound 4294967295 exceeds maximum object size
             2147483647 [-Werror=stringop-overflow=]
      error: 'memcpy' accessing 4294967295 bytes at offsets 4 and 0 overlaps
             6442450943 bytes at offset -2147483648 [-Werror=restrict]

  * utils/hbmk2/hbmk2.prg
    * applied bcc64 fixes from hbmk2.prg posted by Carlos Vargas on
      harbour-devel (reformatted):
      https://groups.google.com/g/harbour-devel/c/vic0m-VVZ8k

    ; bcc64 support is not tested and purely based on contributions
This commit is contained in:
Aleksander Czajczynski
2025-12-11 01:15:52 +01:00
parent efde19ca13
commit f9212001b4
3 changed files with 53 additions and 20 deletions

View File

@@ -7,6 +7,22 @@
Entries may not always be in chronological/commit order.
See license at the end of file. */
2025-12-11 00:15 UTC+0100 Aleksander Czajczynski (hb fki.pl)
* src/vm/macro.c
* workaround MinGW/GCC 15+ excessive diagnostics in hb_macroTextSymbol()
to fix strict mode in CI, manifested with either of those messages:
error: 'memcpy' specified bound 4294967295 exceeds maximum object size
2147483647 [-Werror=stringop-overflow=]
error: 'memcpy' accessing 4294967295 bytes at offsets 4 and 0 overlaps
6442450943 bytes at offset -2147483648 [-Werror=restrict]
* utils/hbmk2/hbmk2.prg
* applied bcc64 fixes from hbmk2.prg posted by Carlos Vargas on
harbour-devel (reformatted):
https://groups.google.com/g/harbour-devel/c/vic0m-VVZ8k
; bcc64 support is not tested and purely based on contributions
2025-12-10 22:37 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* README.md
* package/harbour.spec

View File

@@ -745,9 +745,17 @@ char * hb_macroTextSymbol( const char * szString, HB_SIZE nLength, HB_BOOL * pfN
{
if( szResult == szString )
{
#if defined( HB_OS_WIN ) && defined( HB_GCC_HAS_DIAG ) && ( HB_GCC_VER >= 1500 )
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wstringop-overflow"
# pragma GCC diagnostic ignored "-Wrestrict"
#endif
szResult = ( char * ) memcpy( hb_xgrab( nLength + 1 ),
szString, nLength );
szResult[ nLength ] = '\0';
#if defined( HB_OS_WIN ) && defined( HB_GCC_HAS_DIAG ) && ( HB_GCC_VER >= 1500 )
# pragma GCC diagnostic push
#endif
}
szResult[ nLen ] = c - ( 'a' - 'A' );
}

View File

@@ -5181,16 +5181,12 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
cBin_CompC := "bcc32.exe"
ENDIF
cBin_CompCPP := cBin_CompC
cOpt_CompC := "-c -q -CP437"
cOpt_CompC := "-c -q" + iif( hbmk[ _HBMK_cCOMP ] == "bcc64", "", " -CP437" )
IF hbmk[ _HBMK_lOPTIM ]
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cOpt_CompC += " -d -O2 -OS -Ov -Oc"
ELSE
cOpt_CompC += " -d -O2 -OS -Ov -Oc -Oi -6"
ENDIF
cOpt_CompC += " -d -O2" + iif( hbmk[ _HBMK_cCOMP ] == "bcc64", "", " -OS -Ov -Oc -Oi -6" )
ENDIF
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cLibBCC_CRTL := "cw64mt.lib"
cLibBCC_CRTL := "cw64mt.a"
ELSE
cLibBCC_CRTL := "cw32mt.lib"
ENDIF
@@ -5203,7 +5199,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
AAdd( hbmk[ _HBMK_aOPTC ], "-tWM" )
ELSE
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cLibBCC_CRTL := "cw64.lib"
cLibBCC_CRTL := "cw64.a"
ELSE
cLibBCC_CRTL := "cw32.lib"
ENDIF
@@ -5211,6 +5207,13 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
ELSE
AAdd( hbmk[ _HBMK_aOPTC ], "-tWM" )
ENDIF
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
SWITCH hbmk[ _HBMK_nWARN ]
CASE _WARN_MAX
CASE _WARN_YES ; AAdd( hbmk[ _HBMK_aOPTC ], "-w -Q" ) ; EXIT
CASE _WARN_NO ; AAdd( hbmk[ _HBMK_aOPTC ], "-w-" ) ; EXIT
ENDSWITCH
ELSE
SWITCH hbmk[ _HBMK_nWARN ]
CASE _WARN_MAX ; AAdd( hbmk[ _HBMK_aOPTC ], "-w -Q" ) ; EXIT
CASE _WARN_YES ; AAdd( hbmk[ _HBMK_aOPTC ], "-w -Q -w-sig" ) ; EXIT
@@ -5218,6 +5221,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
CASE _WARN_LOW ; AAdd( hbmk[ _HBMK_aOPTC ], "-w-sig -w-aus -w-ccc -w-csu -w-ovf -w-par -w-rch -w-spa -w-sus -w-pia" ) ; EXIT
CASE _WARN_NO ; AAdd( hbmk[ _HBMK_aOPTC ], "-w-" ) ; EXIT
ENDSWITCH
ENDIF
cOpt_CompC += " {FC} {LC}"
cBin_Res := "brcc32.exe"
cOpt_Res := "{FR} {IR} -fo{OS}"
@@ -5229,15 +5233,16 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
ENDIF
cBin_Dyn := cBin_Link
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
cOpt_Link := "-Gn -Tpe -L{DL} {FL} " + iif( hbmk[ _HBMK_lGUI ], "c0w64.obj", "c0x64.obj" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import64.lib, {IM}, {LS}{SCRIPT}"
cOpt_Dyn := "-Gn -Tpd -L{DL} {FD} " + "c0d64.obj" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import64.lib, {IM}, {LS}{SCRIPT}"
cOpt_Link := "-Gn -Tpe -L{DL} {FL} " + iif( hbmk[ _HBMK_lGUI ], "c0w64.o", "c0x64.o" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import64.a, {IM}, {LS}{SCRIPT}"
cOpt_Dyn := "-Gn -Tpd -L{DL} {FD} " + "c0d64.o" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import64.a, {IM}, {LS}{SCRIPT}"
ELSE
cOpt_Link := "-Gn -Tpe -L{DL} {FL} " + iif( hbmk[ _HBMK_lGUI ], "c0w32.obj", "c0x32.obj" ) + " {LO}, {OE}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
cOpt_Dyn := "-Gn -Tpd -L{DL} {FD} " + "c0d32.obj" + " {LO}, {OD}, " + iif( hbmk[ _HBMK_lMAP ], "{OM}", "nul" ) + ", {LL} {LB} {LF} " + cLibBCC_CRTL + " import32.lib, {IM}, {LS}{SCRIPT}"
ENDIF
IF hbmk[ _HBMK_cCOMP ] == "bcc"
/* TODO: Add support for bcc64/mkexp */
bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_bcc( hbmk, "implib.exe -c {FI} {OL} {ID}", cSourceDLL, cTargetLib, cFlags ) }
ELSEIF hbmk[ _HBMK_cCOMP ] == "bcc64"
bBlk_ImpLib := {| cSourceDLL, cTargetLib, cFlags | win_implib_command_bcc( hbmk, "mkexp.exe {FI} {OL} {ID}", cSourceDLL, cTargetLib, cFlags ) }
ENDIF
cLibPathPrefix := ""
cLibPathSep := ";"
@@ -5269,7 +5274,11 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
ENDIF
ENDIF
IF ! Empty( hbmk[ _HBMK_cWorkDir ] )
IF hbmk[ _HBMK_cCOMP ] == "bcc64"
AAdd( hbmk[ _HBMK_aOPTC ], "-output-dir " + FNameEscape( hbmk[ _HBMK_cWorkDir ], hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) )
ELSE
AAdd( hbmk[ _HBMK_aOPTC ], "-n" + FNameEscape( hbmk[ _HBMK_cWorkDir ], hbmk[ _HBMK_nCmd_Esc ], hbmk[ _HBMK_nCmd_FNF ] ) )
ENDIF
ELSE
IF lStopAfterCComp .AND. ! hbmk[ _HBMK_lCreateLib ] .AND. ! hbmk[ _HBMK_lCreateDyn ]
IF ( Len( hbmk[ _HBMK_aPRG ] ) + Len( hbmk[ _HBMK_aC ] ) + Len( hbmk[ _HBMK_aCPP ] ) ) == 1
@@ -5415,7 +5424,7 @@ STATIC FUNCTION __hbmk( aArgs, nArgTarget, nLevel, /* @ */ lPause, /* @ */ lExit
SWITCH hbmk[ _HBMK_cCOMP ]
CASE "msvc" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x86" ) ; EXIT
CASE "msvc64" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x64" ) ; EXIT
CASE "msvcarm" ; AAdd( hbmk[ _HBMK_aOPTI ], IIF( hbmk[ _HBMK_cPLAT ] == "wce", "-machine:xarm", "-machine:arm" ) ) ; EXIT
CASE "msvcarm" ; AAdd( hbmk[ _HBMK_aOPTI ], iif( hbmk[ _HBMK_cPLAT ] == "wce", "-machine:xarm", "-machine:arm" ) ) ; EXIT
CASE "msvcarm64"; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:arm64" ) ; EXIT
CASE "msvcia64" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:ia64" ) ; EXIT
CASE "icc" ; AAdd( hbmk[ _HBMK_aOPTI ], "-machine:x86" ) ; EXIT