Please find attached my suggestion for an implementation of SetEnvironmentStringsW with tests. Currently cannot get sendmail to work properly, so sorry for the inconvenience.
Frank
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=63294
Your paranoid android.
=== build (build log) ===
/home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:608: undefined reference to `SetEnvironmentStringsW@4' /home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:615: undefined reference to `SetEnvironmentStringsW@4' /home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:622: undefined reference to `SetEnvironmentStringsW@4' /home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:633: undefined reference to `SetEnvironmentStringsW@4' collect2: error: ld returned 1 exit status Makefile:1239: recipe for target 'kernel32_test.exe' failed Makefile:7811: recipe for target 'dlls/kernel32/tests' failed Task: The exe32 Wine crossbuild failed
=== debian10 (build log) ===
/usr/bin/i686-w64-mingw32-ld: kernelbase.dll-gDRGTk.spec.o:fake:(.edata+0x1028): undefined reference to `SetEnvironmentStringsW@12' collect2: error: ld returned 1 exit status Task: The win32 build failed
=== debian10 (build log) ===
/usr/bin/i686-w64-mingw32-ld: kernelbase.dll-p2aO85.spec.o:fake:(.edata+0x1028): undefined reference to `SetEnvironmentStringsW@12' collect2: error: ld returned 1 exit status Task: The wow32 build failed
Dear all,
I find it difficult to reproduce this issue on my machine and would appreciate any help. My current development environment is a 64bit Gentoo box on which the source code (and the tests) compile fine. What is the configure setup that "Marvin" is using and the environment that "he"'s running under? So that I can reproduce this issue?
Any help would be appreciated! Cheers,
Frank
On Thu, Jan 16, 2020 at 9:27 PM Marvin testbot@winehq.org wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=63294
Your paranoid android.
=== build (build log) ===
/home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:608: undefined reference to `SetEnvironmentStringsW@4' /home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:615: undefined reference to `SetEnvironmentStringsW@4' /home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:622: undefined reference to `SetEnvironmentStringsW@4' /home/winetest/tools/testbot/var/wine-exe32/dlls/kernel32/tests/../../../../wine/dlls/kernel32/tests/environ.c:633: undefined reference to `SetEnvironmentStringsW@4' collect2: error: ld returned 1 exit status Makefile:1239: recipe for target 'kernel32_test.exe' failed Makefile:7811: recipe for target 'dlls/kernel32/tests' failed Task: The exe32 Wine crossbuild failed
=== debian10 (build log) ===
/usr/bin/i686-w64-mingw32-ld: kernelbase.dll-gDRGTk.spec.o:fake:(.edata+0x1028): undefined reference to `SetEnvironmentStringsW@12' collect2: error: ld returned 1 exit status Task: The win32 build failed
=== debian10 (build log) ===
/usr/bin/i686-w64-mingw32-ld: kernelbase.dll-p2aO85.spec.o:fake:(.edata+0x1028): undefined reference to `SetEnvironmentStringsW@12' collect2: error: ld returned 1 exit status Task: The wow32 build failed
January 16, 2020 1:52 PM, "Frank Uhlig" uhlig.frank@gmail.com wrote:
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index a14bed04be..8f48a5fdb1 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1387,7 +1387,7 @@ # @ stub SetDynamicTimeZoneInformation @ stdcall -import SetEndOfFile(long) # @ stub SetEnvironmentStringsA -# @ stub SetEnvironmentStringsW +@ stdcall -import SetEnvironmentStringsW (long ptr wstr)
This is wrong. It's supposed to be:
@ stdcall -import SetEnvironmentStringsW(ptr)
because the function prototype is:
BOOL WINAPI SetEnvironmentStringsW(LPWCH);
Similarly for the other spec files.
Since it's a double-null-terminated string, I don't think this should use 'wstr' here.
I suspect you were unable to reproduce the build failures because you don't have a MinGW build environment installed. If you tried running with relay tracing enabled, you'd see two extra bits of garbage anytime SetEnvironmentStringsW() were called. And on 64-bit, it would likely crash due to the relay tracing mechanism clipping the upper half of a 64-bit pointer.
@ stdcall -import SetEnvironmentVariableA(str str) @ stdcall -import SetEnvironmentVariableW(wstr wstr) @ stdcall -import SetErrorMode(long)
Chip