SDL-Hercules-390 / hyperion

The SDL Hercules 4.x Hyperion version of the System/370, ESA/390, and z/Architecture Emulator
Other
240 stars 90 forks source link

Link for HENGINE fails #613

Closed vbandke closed 8 months ago

vbandke commented 8 months ago

Trying to build hercules using hercules-helper.

The build command line was

.\hercules-buildall.ps1 -VS2022 -BuildDir C:\UTI\Hercules_SDL -Flavor SDL-Hyperion -Firewall

IOW, I am using MSVC 2022

The build process does not complete successfully. I receive error messages when hengine.exe is to be built, and build processing stops afterwards:

Creating library msvc.AMD64.obj\hengine.lib and object msvc.AMD64.obj\hengine.exp
Generating code
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2269) : error C2220: the following warning is treated as an error
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2269) : warning C4789: buffer 'tmp' of size 16 bytes will be overrun; 16 bytes will be written starting at offset 48
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2269) : warning C4789: buffer 'tmp' of size 16 bytes will be overrun; 16 bytes will be written starting at offset 32
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2269) : warning C4789: buffer 'tmp' of size 16 bytes will be overrun; 16 bytes will be written starting at offset 16
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2240) : warning C4789: buffer 'tmp' of size 16 bytes will be overrun; 16 bytes will be written starting at offset 48
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2240) : warning C4789: buffer 'tmp' of size 16 bytes will be overrun; 16 bytes will be written starting at offset 32
C:\Uti\hercules-SDL\sdl-hyperion\general1.c(2240) : warning C4789: buffer 'tmp' of size 16 bytes will be overrun; 16 bytes will be written starting at offset 16
LINK : fatal error LNK1257: code generation failed
NMAKE : fatal error U1077: 'link -nologo /RELEASE /LTCG /DEBUG /PDB:msvc.AMD64.pdb\hengine.pdb /map:msvc.AMD64.map\hengine.map /MANIFEST /base:0x100400000 /INCREMENTAL:NO /NOLOGO -dll -entry:_DllMainCRTStartup msvc.AMD64.obj\build_pch.obj msvc.AMD64.obj\archlvl.obj msvc.AMD64.obj\assist.obj msvc.AMD64.obj\bldcfg.obj msvc.AMD64.obj\script.obj msvc.AMD64.obj\cgibin.obj msvc.AMD64.obj\channel.obj msvc.AMD64.obj\chsc.obj msvc.AMD64.obj\clock.obj msvc.AMD64.obj\cmdtab.obj msvc.AMD64.obj\cmpsc_2012.obj msvc.AMD64.obj\cmpscdbg.obj msvc.AMD64.obj\cmpscdct.obj msvc.AMD64.obj\cmpscget.obj msvc.AMD64.obj\cmpscmem.obj msvc.AMD64.obj\cmpscput.obj msvc.AMD64.obj\config.obj msvc.AMD64.obj\control.obj msvc.AMD64.obj\cpu.obj msvc.AMD64.obj\crypto.obj msvc.AMD64.obj\dat.obj msvc.AMD64.obj\decimal.obj msvc.AMD64.obj\dfp.obj msvc.AMD64.obj\diagmssf.obj msvc.AMD64.obj\diagnose.obj msvc.AMD64.obj\dyn76.obj msvc.AMD64.obj\ecpsvm.obj msvc.AMD64.obj\esame.obj msvc.AMD64.obj\external.obj msvc.AMD64.obj\facility.obj msvc.AMD64.obj\fillfnam.obj msvc.AMD64.obj\float.obj msvc.AMD64.obj\general1.obj msvc.AMD64.obj\general2.obj msvc.AMD64.obj\general3.obj msvc.AMD64.obj\hbyteswp.obj msvc.AMD64.obj\hconsole.obj msvc.AMD64.obj\hdiagf18.obj msvc.AMD64.obj\history.obj msvc.AMD64.obj\hsccmd.obj msvc.AMD64.obj\hscemode.obj msvc.AMD64.obj\hscpufun.obj msvc.AMD64.obj\hscloc.obj msvc.AMD64.obj\hao.obj msvc.AMD64.obj\hscmisc.obj msvc.AMD64.obj\httpserv.obj msvc.AMD64.obj\ieee.obj msvc.AMD64.obj\impl.obj msvc.AMD64.obj\inline.obj msvc.AMD64.obj\io.obj msvc.AMD64.obj\ipl.obj msvc.AMD64.obj\loadmem.obj msvc.AMD64.obj\loadparm.obj msvc.AMD64.obj\losc.obj msvc.AMD64.obj\machchk.obj msvc.AMD64.obj\machdep.obj msvc.AMD64.obj\opcode.obj msvc.AMD64.obj\panel.obj msvc.AMD64.obj\pfpo.obj msvc.AMD64.obj\plo.obj msvc.AMD64.obj\qdio.obj msvc.AMD64.obj\mpc.obj msvc.AMD64.obj\hRexx.obj msvc.AMD64.obj\hRexx_o.obj msvc.AMD64.obj\hRexx_r.obj msvc.AMD64.obj\service.obj msvc.AMD64.obj\scedasd.obj msvc.AMD64.obj\scescsi.obj msvc.AMD64.obj\sie.obj msvc.AMD64.obj\skey.obj msvc.AMD64.obj\sr.obj msvc.AMD64.obj\stack.obj msvc.AMD64.obj\tcpip.obj msvc.AMD64.obj\timer.obj msvc.AMD64.obj\trace.obj msvc.AMD64.obj\transact.obj msvc.AMD64.obj\vector.obj msvc.AMD64.obj\vm.obj msvc.AMD64.obj\vmd250.obj msvc.AMD64.obj\vstore.obj msvc.AMD64.obj\x75.obj msvc.AMD64.obj\xstore.obj msvc.AMD64.obj\hdasd.lib msvc.AMD64.obj\htape.lib msvc.AMD64.obj\w32ctca.obj msvc.AMD64.obj\hutil.lib msvc.AMD64.obj\hsys.lib msvc.AMD64.obj\hercprod.res  "winbuild\zlib\x64/lib/zdll.lib" "winbuild\bzip2\x64/libbz2.lib" "winbuild\pcre\x64\lib\pcre.lib" "winbuild\pcre\x64\lib\pcreposix.lib" user32.lib crypto64.lib decNumber64.lib SoftFloat64.lib telnet64.lib -out:msvc.AMD64.bin\hengine.dll -implib:msvc.AMD64.obj\hengine.lib kernel32.lib  ws2_32.lib mswsock.lib advapi32.lib /map:msvc.AMD64.map\hengine.map' : return code '0x4e9'
Stop.
makefile.bat ended on 07.01.2024 at 14:31:22,02, rc=2
wrljet commented 8 months ago

Volker,

This is caused by a recent change to VS2022, that reintroduced (what we consider to be) a bug in the compiler.

It was addressed with commit https://github.com/SDL-Hercules-390/hyperion/commit/871258623ba500e30dfb92614e9aa589b7fda98d

For easy access to this fix (and much more added since SDL-Hercules 4.6 was released), please use the 'develop' branch.

To do this with Hercules-Helper for Windows you can add -GitBranch develop -ForceClone to your existing command line.

Bill

vbandke commented 8 months ago

Good evening, Bill,

Thanks for the quick and helpful reply. Build processing now completes successfully (of course, runtest.cmd still fails, but that is another issue)

With best regards

Volker

Fish-Git commented 8 months ago

(of course, runtest.cmd still fails, but that is another issue)

Try again. I just committed your fix for that.