[01:06:32] --> BrainChild has joined #exult
[01:22:53] <-- BrainChild has left IRC (Ping timeout: 256 seconds)
[01:34:15] --> DominusExult has joined #exult
[01:34:16] <-- DominusExult has left IRC (Changing host)
[01:34:16] --> DominusExult has joined #exult
[01:34:16] --- ChanServ gives channel operator status to DominusExult
[01:38:02] <-- Dominus has left IRC (Ping timeout: 260 seconds)
[01:38:02] --- DominusExult is now known as Dominus
[02:19:26] <-- Rottingbeef-2 has left IRC ()
[03:20:18] --> BrainChild has joined #exult
[03:36:17] <-- BrainChild has left IRC (Ping timeout: 240 seconds)
[04:06:42] --> BrainChild has joined #exult
[04:19:03] <-- BrainChild has left IRC (Ping timeout: 256 seconds)
[05:03:49] --> BrainChild has joined #exult
[06:50:56] <-- Lightkey has left IRC (Ping timeout: 252 seconds)
[07:03:52] --> Lightkey has joined #exult
[07:07:54] --> Marzo has joined #exult
[07:33:37] <-- jasonaowen has left IRC (Ping timeout: 240 seconds)
[07:36:20] --> jasonaowen has joined #exult
[12:01:14] <-- RadoS has left IRC (Remote host closed the connection)
[12:16:00] <-- BrainChild has left IRC (Remote host closed the connection)
[12:16:58] --> BrainChild has joined #exult
[12:22:25] <-- BrainChild has left IRC (Ping timeout: 256 seconds)
[12:49:23] --> BrainChild has joined #exult
[12:49:55] --> Rottingbeef-2 has joined #exult
[12:53:42] --> RadoS has joined #exult
[13:01:00] <-- BrainChild has left IRC (Ping timeout: 260 seconds)
[14:58:23] --> BrainChild has joined #exult
[15:14:41] <-- BrainChild has left IRC (Ping timeout: 256 seconds)
[17:12:02] --> BrainChild has joined #exult
[17:28:29] <-- BrainChild has left IRC (Ping timeout: 256 seconds)
[17:46:42] <Dominus> Marzo, I've been trying to hunt down the problem some few people had with the installer's exconfig.dll. And it always breaking with Wine, these days. Seems dllwrap has been broken and unsupported for a while now and produces duplicate and wrong relocation info.
[17:46:56] <Dominus> so you are rather supposed to use dlltool or ld
[17:47:36] <Marzo> Why are they using the windows installer through wine anyway?
[17:47:44] <Dominus> could you adapt the makefile.mingw for that? or tell me how to change the exconfig.dll target in makefile.mingw so I can test it?
[17:47:50] <Dominus> *I* was using it :)
[17:47:53] <Marzo> Ah
[17:48:10] <Dominus> te other people had no reproducible errors in Windows 10
[17:48:26] <Dominus> always works for me in my VMs
[17:48:34] <Dominus> see https://sourceforge.net/p/mingw-w64/mailman/message/35595229/
[17:48:47] <Dominus> and my wine bug report at https://bugs.winehq.org/show_bug.cgi?id=49033
[17:49:18] <Dominus> and Thirith having problems in http://exult.sourceforge.net/forum/read.php?f=1&i=1790674&t=1790674
[17:52:03] <Dominus> and we had another one or two reports about that in the last few months
[17:59:48] --> BrainChild has joined #exult
[18:11:06] <-- BrainChild has left IRC (Ping timeout: 260 seconds)
[18:18:13] <Marzo> Dominus: can you try replacing the dllwrap line with this:
[18:18:14] <Marzo> gcc -shared -o $@ $(filter-out $<,$^) --def $< -static -lstdc++
[18:19:11] <Marzo> Also, what does ntldd return for exconfig.dll?
[18:22:04] <Dominus> that works and ntldd:
[18:22:07] <Dominus> KERNEL32.dll => C:\WINDOWS\SYSTEM32\KERNEL32.dll (0x00770000)
[18:22:07] <Dominus> msvcrt.dll => C:\WINDOWS\SYSTEM32\msvcrt.dll (0x01330000)
[18:22:47] <Dominus> previous exconfig.dll ntldd
[18:22:49] <Dominus> KERNEL32.dll => C:\WINDOWS\SYSTEM32\KERNEL32.dll (0x01010000)
[18:22:49] <Dominus> msvcrt.dll => C:\WINDOWS\SYSTEM32\msvcrt.dll (0x011b0000)
[18:25:33] <Dominus> damn, still fails in Wine, though :(
[19:45:42] <Dominus> marzo, actually this one fails on Windows 10, as well
[19:45:49] <Dominus> should have tried this first
[19:50:34] <Marzo> Hrm
[19:52:04] <Marzo> Try adding the -Wl,--out-implib flag and see if it still works
[19:52:10] <Marzo> I can try looking at it tomorrow as well
[19:52:42] <Marzo> Ah, nevermind, the flag needs a parameter
[19:53:43] <Dominus> I noticed it failing :)
[19:53:53] <Marzo> Hm. I think that it should actually be this:
[19:53:54] <Marzo> $(CXX) $(LDFLAGS) -shared -o $@ $(filter-out $<,$^) --def $< -static -lstdc++
[19:54:22] <Marzo> Could be a mismatch of building the exe as 32-bit and the dll as 64-bit or something
[19:56:27] <Dominus> builds, but the installer fails again
[19:57:44] <Marzo> Hm
[19:57:50] <Marzo> Will look into it tomorrow
[19:57:55] <Dominus> thanks
[20:05:43] <Marzo> Dominus: can you use the "file" command line utility on the setup exe and on the generated library? Just out of curiosity...
[20:06:37] <Marzo> (I still have to install inno setup on my machine)
[20:06:54] <Dominus> both PE32
[20:07:08] <Marzo> For 32-bit?
[20:07:13] <Dominus> exconfig.dll: PE32 executable (DLL) (console) Intel 80386, for MS Windows
[20:07:38] <Dominus> /c/ExultDist/Exultwin32.exe: PE32 executable (GUI) Intel 80386, for MS Windows
[20:07:50] <Marzo> Hm
[20:08:30] <Marzo> What happens if you append -mwindows to the command line I posted above and rebuild the dll?
[20:09:00] --> BrainChild has joined #exult
[20:09:55] <Dominus> still fails
[20:10:59] <Marzo> Yeah, I will have to try it myself
[20:11:45] <Marzo> Still, worth a try
[20:13:05] <Dominus> hmm... it's now always failing...
[20:13:23] <Dominus> even with the old dllwrap way
[20:13:32] <Dominus> That's odd
[20:15:38] <Dominus> no idea why that is acting up now...
[20:21:33] <-- BrainChild has left IRC (Remote host closed the connection)
[20:21:36] --> BrainChi_ has joined #exult
[20:24:37] <Marzo> Hm
[20:25:55] <Dominus> the last two changesets sshouldn't affect that
[20:26:51] <Marzo> Can you submit your exconfig.dll on this site and send me the link: http://pedump.me/
[20:30:59] <Dominus> http://pedump.me/6409bc1e87139bd9d6c6a6b63d17635d/
[20:34:06] <Dominus> and that is the working one http://pedump.me/367b976355aec7d7bfe689720204f93d/
[20:37:11] <Dominus> fuck, I shouldn't work, late, I accidentally put the correct stuff back into the exult studio target, not the exconfig.dll
[20:37:19] <Dominus> sorry...
[20:38:26] <Dominus> so the first link the dll is built against your last try with $(CXX)...
[20:42:16] <Marzo> And the second link?
[20:42:34] <Dominus> that is a working one with dllwrap
[20:42:55] <Marzo> The most important difference I notice is in the exports tab
[20:43:52] <Marzo> Don't know if it matters or not, need to check
[20:44:22] <Dominus> yes, when done with dllwrap, I *think* "--enable-stdcall-fixup" is done, at least that's what is shown in the console during building
[20:45:10] <Dominus> "C:/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/10.1.0/../../../../i686-w64-mingw32/bin/ld.exe: warning: resolving _SetExultGamePaths by linking to _SetExultGamePaths@12
[20:45:10] <Dominus> Use --enable-stdcall-fixup to disable these warnings
[20:45:10] <Dominus> Use --disable-stdcall-fixup to disable these fixups"
[20:46:40] <Marzo> Hm
[20:46:59] <Marzo> Add -Wl,--enable-stdcall-fixup to the GCC call (without the -mwindows) and rebuild
[20:48:35] <Dominus> that didn't change the exports
[20:48:39] <Marzo> Or better yet, maybe use -Wl,--add-stdcall-alias
[20:48:50] <Dominus> http://pedump.me/7ef6b04ac5bc245646eaff583a57b0e0/#exports
[20:48:57] <Dominus> trying that
[20:49:11] <Marzo> Oh, and looking at the help, it maybe should have been -Wl,--disable-stdcall-fixup instead
[20:49:18] <Marzo> Seems like they are backwards
[20:50:30] <Dominus> -Wl,--add-stdcall-alias worked
[20:50:33] <Dominus> !!!
[20:50:35] <Marzo> Aha
[20:51:03] <Dominus> and it works in Wine, too
[20:51:58] <Marzo> Now to see if it works for those users that were having issues with it
[20:52:50] <Dominus> I'll upload the build to Dropbox and will contact the user
[20:53:11] <Marzo> If it works, feel free to commit it
[20:53:32] <Dominus> thanks a lot
[20:54:35] <Marzo> Hey, that saved me having to install inno setup :)
[20:54:53] <Dominus> he he
[20:56:05] <Marzo> But yeah, these kinds of things are always annoying to debug as they are so far below the level people usually work at
[20:56:54] <Marzo> A dll failing not because of anything wrong in the code or the compiler, but because the linker was changing the exported name in a way it should not
[20:58:29] <Dominus> that and the actual first problem of the relocation thing. Working in probably 99.99999% of all Windows installs but failing with a few
[20:59:17] <Marzo> Just to be sure, also add -Wl,--dynamicbase to the command line
[20:59:48] <Marzo> This probably will not be needed, and is probably overkill
[21:00:58] <Dominus> I can report it works :)
[21:01:20] <Marzo> It should work, yes; that one enabled ASLR
[21:01:24] <Marzo> *enables
[21:02:33] <Marzo> But more importantly, if there is even a small chance that it was failing due to relocation, this will likely fix it
[21:02:46] <Marzo> If that was not fixed by using GCC instead of dllwrap
[21:05:13] <Dominus> great! now I wonder if exconfig.dll builds on 64bit. It didn't before (and the inno setup needs it to be 32bit anyway, so it's not a real issue, only that you building fails the 64bit arch)
[21:05:59] * Dominus is giving it a try
[21:07:30] <Marzo> With the version using "$(CXX) $(LDFLAGS)" it should build
[21:08:49] <Marzo> I am wondering now if the smooth plugin dlls also need these changes
[21:09:19] <Marzo> But then again, I guess no one has used them in over a decade, so who knows if they still work...
[21:10:52] <Dominus> exconfig.dll fails on 64bit builds https://pastebin.com/66N5Ec0M
[21:11:16] <Dominus> huh
[21:11:24] <Dominus> it doesn't clean the win32 folder
[21:12:59] <Marzo> Hm, you need to do an allclean to clean it
[21:13:34] <Dominus> then it builds
[21:13:51] <Marzo> Nice
[21:14:17] <Marzo> So when there is no more need to support 32-bit Windows and Inno Setup is 64-bit only, we are ready :)
[21:14:26] <Dominus> yes :)
[21:14:43] <Marzo> That should happen maybe by 2060 :)
[21:32:19] <-- Marzo has left IRC (Ping timeout: 265 seconds)
[21:39:05] --> Marzo has joined #exult