Wine-Devel
By thread
wine-devel@list.winehq.org
By month
Messages by month
- ----- 2026 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
April 2018
- 75 participants
- 1236 messages
[PATCH] testbot/web: Add a WineTestBot::Users import.
by Francois Gouget
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
testbot/web/index.pl | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/testbot/web/index.pl b/testbot/web/index.pl
index 72bd307d5..3e5a48106 100644
--- a/testbot/web/index.pl
+++ b/testbot/web/index.pl
@@ -25,7 +25,10 @@ use ObjectModel::CGI::CollectionBlock;
our @ISA = qw(ObjectModel::CGI::CollectionBlock);
use URI::Escape;
+
use WineTestBot::Branches;
+use WineTestBot::Users;
+
sub SortKeys($$)
@@ -70,7 +73,7 @@ sub GetDisplayValue($$$)
if ($PropertyDescriptor->GetName() eq "User" &&
defined($Item->Patch) &&
- $Item->User->GetKey() eq WineTestBot::Users->GetBatchUser()->GetKey() &&
+ $Item->User->GetKey() eq GetBatchUser()->GetKey() &&
defined($Item->Patch->FromName))
{
return $Item->Patch->FromName;
--
2.17.0
April 30, 2018
[PATCH] testbot: Remove unneeded WineTestBot::Config imports.
by Francois Gouget
Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com>
---
testbot/lib/WineTestBot/Branches.pm | 2 --
testbot/lib/WineTestBot/CGI/Sessions.pm | 1 -
testbot/lib/WineTestBot/PendingPatchSets.pm | 1 -
testbot/lib/WineTestBot/Records.pm | 2 --
testbot/lib/WineTestBot/WineTestBotObjects.pm | 2 --
testbot/web/GetFile.pl | 1 -
testbot/web/admin/BranchesList.pl | 1 -
testbot/web/admin/Log.pl | 1 -
testbot/web/admin/SendLog.pl | 3 +--
9 files changed, 1 insertion(+), 13 deletions(-)
diff --git a/testbot/lib/WineTestBot/Branches.pm b/testbot/lib/WineTestBot/Branches.pm
index 96cf26e82..f202c227c 100644
--- a/testbot/lib/WineTestBot/Branches.pm
+++ b/testbot/lib/WineTestBot/Branches.pm
@@ -29,8 +29,6 @@ WineTestBot::Branch - Describes a Wine branch
use WineTestBot::WineTestBotObjects;
our @ISA = qw(WineTestBot::WineTestBotItem);
-use WineTestBot::Config;
-
sub InitializeNew($$)
{
diff --git a/testbot/lib/WineTestBot/CGI/Sessions.pm b/testbot/lib/WineTestBot/CGI/Sessions.pm
index af30fbb85..380d4b8f7 100644
--- a/testbot/lib/WineTestBot/CGI/Sessions.pm
+++ b/testbot/lib/WineTestBot/CGI/Sessions.pm
@@ -59,7 +59,6 @@ our @EXPORT = qw(CreateSessions DeleteSessions NewSession);
use CGI::Cookie;
use ObjectModel::BasicPropertyDescriptor;
use ObjectModel::ItemrefPropertyDescriptor;
-use WineTestBot::Config;
use WineTestBot::Users;
use WineTestBot::Utils;
diff --git a/testbot/lib/WineTestBot/PendingPatchSets.pm b/testbot/lib/WineTestBot/PendingPatchSets.pm
index 7a5449908..c0dc56fbe 100644
--- a/testbot/lib/WineTestBot/PendingPatchSets.pm
+++ b/testbot/lib/WineTestBot/PendingPatchSets.pm
@@ -160,7 +160,6 @@ BEGIN
use ObjectModel::BasicPropertyDescriptor;
use ObjectModel::DetailrefPropertyDescriptor;
-use WineTestBot::Config;
use WineTestBot::PendingPatches;
use WineTestBot::Utils;
diff --git a/testbot/lib/WineTestBot/Records.pm b/testbot/lib/WineTestBot/Records.pm
index a3302af96..00364f292 100644
--- a/testbot/lib/WineTestBot/Records.pm
+++ b/testbot/lib/WineTestBot/Records.pm
@@ -41,8 +41,6 @@ only limited by the amount of data dumped into the Records table.
use WineTestBot::WineTestBotObjects;
our @ISA = qw(WineTestBot::WineTestBotItem);
-use WineTestBot::Config;
-
sub InitializeNew($$)
{
diff --git a/testbot/lib/WineTestBot/WineTestBotObjects.pm b/testbot/lib/WineTestBot/WineTestBotObjects.pm
index d559a76db..de748ff3f 100644
--- a/testbot/lib/WineTestBot/WineTestBotObjects.pm
+++ b/testbot/lib/WineTestBot/WineTestBotObjects.pm
@@ -29,7 +29,6 @@ use ObjectModel::Item;
our @ISA = qw(ObjectModel::Item);
use ObjectModel::BackEnd;
-use WineTestBot::Config;
sub GetBackEnd($)
@@ -51,7 +50,6 @@ use ObjectModel::Collection;
our @ISA = qw(ObjectModel::Collection);
use ObjectModel::BackEnd;
-use WineTestBot::Config;
sub GetBackEnd($)
{
diff --git a/testbot/web/GetFile.pl b/testbot/web/GetFile.pl
index 7e6c615ea..a178cca42 100644
--- a/testbot/web/GetFile.pl
+++ b/testbot/web/GetFile.pl
@@ -22,7 +22,6 @@ use strict;
use Apache2::Const -compile => qw(REDIRECT);
use CGI;
use Fcntl; # For O_XXX
-use WineTestBot::Config;
use WineTestBot::Jobs;
diff --git a/testbot/web/admin/BranchesList.pl b/testbot/web/admin/BranchesList.pl
index 7a496cddb..a325818e5 100644
--- a/testbot/web/admin/BranchesList.pl
+++ b/testbot/web/admin/BranchesList.pl
@@ -24,7 +24,6 @@ package BranchesListPage;
use ObjectModel::CGI::CollectionPage;
our @ISA = qw(ObjectModel::CGI::CollectionPage);
-use WineTestBot::Config;
use WineTestBot::Branches;
diff --git a/testbot/web/admin/Log.pl b/testbot/web/admin/Log.pl
index 8d6e52654..934bf256b 100644
--- a/testbot/web/admin/Log.pl
+++ b/testbot/web/admin/Log.pl
@@ -25,7 +25,6 @@ use ObjectModel::CGI::FreeFormPage;
our @ISA = qw(ObjectModel::CGI::FreeFormPage);
use ObjectModel::BasicPropertyDescriptor;
-use WineTestBot::Config;
use WineTestBot::Log;
diff --git a/testbot/web/admin/SendLog.pl b/testbot/web/admin/SendLog.pl
index 7044c332d..3581c5cf4 100644
--- a/testbot/web/admin/SendLog.pl
+++ b/testbot/web/admin/SendLog.pl
@@ -20,12 +20,11 @@
use strict;
use HTTP::Date;
-
use Apache2::Const -compile => qw(REDIRECT);
use CGI;
use CGI::Cookie;
use URI::Escape;
-use WineTestBot::Config;
+
use WineTestBot::CGI::Sessions;
use WineTestBot::Log;
--
2.17.0
April 30, 2018
wine-3.0.1-rc1 Available
by Michael Stefaniuc
Hello guys,
I have pushed wine-3.0.1-rc1 (with tag) to
https://github.com/mstefani/wine-stable/tree/oldstable
http://static-winehq.193b.starter-ca-central-1.openshiftapps.com/stable/
This is the start of the 3.0.x series containing patches from 3.1 - 3.4.
Nothing fancy in here, maybe except the huge patch (47 files, 34285(+),
34042(-)): "kernel32: Add message resource for TRUST_E_NOSIGNATURE."
Same old, same old: one week for feedback followed by another rc if
needed with the final release 3-4 days later.
And now the interesting parts from the ANNOUNCE file:
What's new in this release (see below for details):
- Various bug fixes
----------------------------------------------------------------
Bugs fixed in 3.0.1 (total 60):
23033 Tages Protection v5.x: games report "DLL not found
shell.dll16.dll" (Runaway 2: The Dream Of The Turtle, ...)
25138 Black and White 2 demo crashes on startup (ID3DXEffect
interface changes between d3dx9_xx versions)
32104 KwMusic: crashes during installing
32802 Janetter 4.1.1.0 fails to start properly and gives an error
saying: "Backend server cannot init"
35268 64bit InstallShield installer uses 32bit typelib function offsets
35910 TuneUp Utilities 2014 installer crashes (API signature mismatch
for NtAllocateUuids)
36143 Symantec Norton 360 installer reports 'This product is not
compatible with this computer's current operating system'
(RtlVerifyVersionInfo doesn't handle major/minor/service pack condition
mask properly)
36718 Mindjet MindManager 14.x/15.x installer fails with 'Microsoft
.NET Framework version 4.0.30319 or higher required' (builtin
'MsiNetAssemblySupport' property missing)
37217 wine builtin iexplore couldn't load local pages correctly in
chinese named folders
37809 C runtime dlls can't link with uclibc (bessel functions missing)
37852 Sentinel HASP 'hardlock.sys' kernel driver custom imports
resolver can't cope with many 'ntoskrnl.exe' functions being fowarded to
'ntdll.dll' (Minitab 16 fails to start)
37997 Jeskola Buzz Build 1499 (.NET 4.0 app) crashes on unimplemented
function
msvcp100.dll.??0_Concurrent_queue_base_v4(a)details@Concurrency@@IAE(a)I@Z
38352 Multiple games need d3dx9_36.dll.D3DXComputeNormalMap
(Foresight, Gamestudio Venice, GOG King Arthur Collection)
38838 MS Office Pro Plus 2010 reruns setup on starting any app when
Windows version is Vista or later
39500 DRM kernel drivers used by some game demos crash on
unimplemented function hal.dll.KeQueryPerformanceCounter (Secret Files:
Tunguska, Sherlock Holmes vs Jack the Ripper)
40539 Fail to start HPDiagnosticCoreUI.exe
40926 Multiple games (Solus Project, Dying Light) require
unimplemented function
msvcp110.dll.??0_Concurrent_queue_base_v4(a)details@Concurrency@@IEAA(a)_K@Z
41096 ResEdit Resources treeview has rendered wrongly positioned
first branch
42170 Microsoft .NET Framework 4.6.2 offline installer does not
complete, needs wevtapi.EvtNext stub
42468 Broken msxml text nodes escaping
42789 Qemu 2.9.0-rc3 crashes before displaying anything
43041 Multiple application installers crash due to missing message
string for 0x800b0100 (TRUST_E_NOSIGNATURE) (CodeXL 2.3, RT Se7en Lite)
43256 Civilization V in-game font corrupted
43357 Stars in Shadow crashes on startup
43520 Magic The Gathering Online - corrupted rendering of CMYK jpegs
43538 x64dbg needs unimplemented function
msvcp120.dll.??0_Concurrent_queue_base_v4(a)details@Concurrency@@IAE(a)I@Z
43728 Magic: The Gathering Online intensive CPU usage when idle
43998 treeview not drawn correctly
44053 MobilePASS application quits with an error, needs unimplemented
function bcrypt.dll.BCryptImportKey
44176 EverQuest crashes with unimplemented function
d3dx9_43.dll.D3DXCreateKeyframedAnimationSet
44213 ShareHolder Finder 0.9.3.0 fails to generate unique hardware
id, reports 'Error: The requested action with this object has failed.'
(several 'Win32_ComputerSystemProduct' WMI class properties missing)
44222 Office 2010 Pro Plus reruns setup on starting any app even when
Windows version is XP
44255 Wolf RPG Editor: Game.exe zombifies upon quit
44265 Options dialog triggers exception upon close in Windows Media
Player 6.4
44270 Exception when organizing favorites in Windows Media Player 6.4
(unimplemented function shdocvw.dll.DoOrganizeFavDlg)
44296 Qt 5 programs fail to resolve DNS SRV records
44310 WritePrivateProfileString doesn't check for flush errors
44329 Listview does not reset returned state mask for subitems
44349 winedbg: stepping is broken using GDB proxy
44428 x64dbg needs unimplemented function
msvcr120.dll.??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ
44441 for loop reading a file strips out double quotes and then equals
44468 x64dbg crashes on unimplemented function
msvcr120.dll.?_Trace_agents(a)Concurrency@@YAXW4Agents_EventType(a)1@_JZZ
44473 glyph overlap in Delphi editor
44475 Microsoft SQL Server 2008 Express Edition installer fails
install .NET assemblies into GAC
44482 x64dbg crashes during exit on unimplemented function
msvcp120.dll.??0_Runtime_object(a)details@Concurrency@@QEAA(a)XZ
44492 winedbg reports unknown mode, fails to backtrace etc. in
protected-mode with 64-bit wineserver
44501 Missing D3D11_1_UAV_SLOT_COUNT constant
44512 Royale Noir theme - Various: fixme:uxtheme:DrawThemeTextEx
unsupported flags
44550 ReactOS ftp.exe: enters endless loop on CTRL-Z
44570 explorer.exe crashes when opening relative paths
44578 ShellDispatch::BrowseForFolder is not implemented
44616 Multiple Blizzard games need 'ntdll.NtCreateThreadEx'
implementation (Diablo III v2. 6. 1. 49286+, World of Warcraft, Overwatch)
44626 AvP Classic 2000 (Steam) launcher crashes when attempting to
start the game
44628 BaiduMusic needs dwmapi.DwmSetIconicThumbnail (stub)
44641 Sentinel HASP 'hardlock.sys' kernel driver crashes on
unimplemented function ntoskrnl.exe.RtlCreateRegistryKey
44647 Smart Diary Suite 4 just segfaults
44654 EDIdEv Framework EDI Runtime installer fails due to
'sfc.SfcGetNextProtectedFile' not setting last-error code
44701 xinput console spam with steam
44717 Bermuda (Steam, Indie game) crashes due to 'msscript.ocx'
'ScriptControl_put_AllowUI' being a stub
44749 Sentinel HASP 'hardlock.sys' kernel driver expects
ntdll.RtlCheckRegistryKey to return STATUS_SUCCESS on empty path
----------------------------------------------------------------
Changes since 3.0:
Akihiro Sagawa (6):
gdi32: Fix ABC width calculations when applying transformations
internally.
gdi32: Fix synthetic bold outline text metrics.
gdi32/tests: Add more text metrics tests in synthetic bold bitmap
fonts.
gdi32: Fix text metrics in synthetic bold bitmap fonts.
ws2_32/tests: Add ioctlsocket(FIONREAD) tests with listening socket.
ws2_32: Fix ioctlsocket(FIONREAD) with listening socket.
Alex Henrie (2):
msxml3: Remove CRs in domtext_put_data and add them in
domtext_get_xml.
msvcrt: Compile but show an error if Bessel functions aren't
available.
Alexandre Julliard (5):
ntoskrnl: Avoid forwarding to ntdll, link directly instead.
urlmon/tests: Update the IP address for the WineHQ server.
ntdll: Avoid pushl %esp instruction in RtlUnwind prolog.
configure: Check the positive form of the warning options.
ntdll: Fix crash on nested thread exit.
Alistair Leslie-Hughes (2):
d3dx9: Stub D3DXCreateKeyframedAnimationSet().
msscript: Implement IScriptControl get/set AllowUI.
Andrew Eikum (1):
advapi32: Also wait on services without a control thread during
shutdown.
Andrew Wesie (1):
ntdll: Implement NtCreateThreadEx.
Anton Romanov (2):
ole32: Make CoWaitForMultipleHandles peek at all posted messages.
windowscodecs: Fix data corruption for Adobe CMYK JPEGs.
Bernhard Übelacker (1):
user32: Validate DIB offset in CURSORICON_GetFileEntry.
Christian Costa (1):
wined3d: Recognize GTX 560M card with NVIDIA driver.
Fabian Maurer (1):
cmd.exe: Parse parameters in "FOR /F" properly.
Gijs Vermeulen (2):
compobj.dll16: Add StringFromIID.
ole2disp.dll16: Implement SafeArrayGet[UBound|LBound].
Hans Leidekker (5):
dnsapi: Use default server list if passed in array is empty.
msi: Don't mark uncompressed global assembly files as installed
until they are in the assembly cache.
wbemprox: Add more Win32_ComputerSystemProduct properties.
msi: Properly set the MsiNetAssemblySupport property.
bcrypt: Partial implementation of BCryptImportKey and BCryptExportKey.
Henri Verbeet (2):
include: Add d3d11.1 and d3d11.2 constants to d3d11.idl.
winedbg: Handle byte-sized registers in cpu_register() and
cpu_register_hex_from().
Huw D. M. Davies (4):
oleaut32: Fix vtable offset for a SYS_WIN32 typelib loaded on WIN64.
winebrowser: Fix calling convention for wine_get_unix_file_name().
winedbg: Fix the operand order of some XMM instructions.
winedbg: Add cvtdq2ps and cvtps2pd opcodes.
Jacek Caban (1):
mshtml: Use nsIDOMEvent directly to prevent default event handling
in dispatch_event_object.
James Woodcock (1):
msvcrt: Gets() should handle EOF on stdin gracefully.
Kai Krakow (1):
wined3d: Recognize GTX 1050 Ti card with NVIDIA driver.
Louis Lenders (4):
kernel32: Add message resource for TRUST_E_NOSIGNATURE.
gdiplus: Fix argument check in GdipLoadImageFromStream().
xinput1_3: Quiet a noisy fixme.
ntdll: Match NtAllocateUuids signature to Windows 2000 instead of NT4.
Martin Storsjo (1):
configure: Check for -Wno-pragma-pack.
Michael Müller (6):
shell32: Use manual redirection for RunDLL_CallEntry16.
dwmapi: Add DwmSetIconicThumbnail() stub.
hal: Implement KeQueryPerformanceCounter.
wbemprox: Add FreePhysicalMemory to Win32_OperatingSystem.
wbemprox: Provide DeviceID, Location and PortName for printers.
sfc_os: Set an error code in SfcGetNextProtectedFile stub.
Michael Stefaniuc (3):
quartz: Don't create the advise thread during the clock teardown.
include: Add generic HeapAlloc() wrappers.
tools: Get the ANNOUNCE bug list from the stable-notes git notes.
Nikolay Sivov (9):
comctl32/listview: Always return zero state mask for subitems.
wevtapi: Add EvtNext() stub.
uxtheme: Properly initialize text drawing options.
shell32: Partially implement IShellDispatch::BrowseForFolder().
oleaut32: Don't reset property page site to NULL.
gdiplus/tests: Add some invalid arguments tests for
GdipLoadImageFromStream().
kernel32/tests: Add more tests for VerifyVersionInfo().
comctl32/toolbar: Fix a crash when tracing special button string
identifier.
comctl32/treeview: Fix tooltip window leak.
Paul Graham (1):
kernel32: Fix failure reporting in WritePrivateProfile* and add tests.
Piotr Caban (8):
msvcp100: Add Concurrency::details::_Concurrent_queue_base_v4
class stub.
msvcr110: Add Concurrency::_Trace_agents function stub.
msvcr100: Add _NonReentrantPPLLock(a)details class stub.
user32: Fix itemData passed in ListBox WM_MEASUREITEM message.
user32/tests: Add listbox WM_MEASUREITEM tests.
comctl32: Update all items rects in TREEVIEW_RecalculateVisibleOrder.
msvcrt: Fix misleading indentation in gets.
msvcp100: Add _Runtime_object class implementation.
Sebastian Lackner (2):
ntdll: Fix condition mask handling in RtlVerifyVersionInfo.
d3dx9: Adjust ID3DXEffect interface based on DLL version.
Stefan Leichter (2):
ntdll: Fix RtlCheckRegistryKey when called with empty path.
ntdll: Implement RtlCreateRegistryKey.
Thomas Faber (1):
ntdll: Handle RtlReAllocateHeap failure in com_class_add_progid
(Coverity).
Vijay Kiran Kamuju (1):
shdocvw: Add stub DoOrganizeFavDlg.
Vladimir Bespalov (1):
winedbg: Fix enum value compilation warning.
Zebediah Figura (7):
winedbg/gdbproxy: Replace memory read over a breakpoint with the
real value.
server: Fix pointer arithmetic in get_selector_entry().
d3dx9: Add stub for D3DXComputeNormalMap.
explorer: Pass the full path to ParseDisplayName().
winegstreamer: Stop creating the filter if gstreamer fails to render.
ieframe: Clean up InternetExplorerManager server process.
winedbg: Remove a misplaced \n.
Zhiyi Zhang (2):
urlmon: Do not canonicalize Unicode characters.
kernel32: Fix handling lines with only values in
GetPrivateProfileSection.
--
Michael Stefaniuc
mstefani(a)winehq.org
April 30, 2018
Re: [PATCH 5/5] ntoskrnl.exe/tests: Add test driver.
by Marvin
Hi,
While running your changed tests on Windows, 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=38115
Your paranoid android.
=== build (build) ===
Unable to regenerate dlls/ntoskrnl/Makefile
Recreation of tests/Makefile failed
April 30, 2018
[PATCH 5/5] ntoskrnl.exe/tests: Add test driver.
by Zebediah Figura
From: Sebastian Lackner <sebastian(a)fds-team.de>
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
configure | 1 +
configure.ac | 1 +
dlls/ntoskrnl.exe/tests/Makefile.in | 10 +++
dlls/ntoskrnl.exe/tests/driver.c | 126 ++++++++++++++++++++++++++++
dlls/ntoskrnl.exe/tests/driver.h | 27 ++++++
dlls/ntoskrnl.exe/tests/driver.spec | 0
dlls/ntoskrnl.exe/tests/ntoskrnl.c | 159 ++++++++++++++++++++++++++++++++++++
7 files changed, 324 insertions(+)
create mode 100644 dlls/ntoskrnl.exe/tests/Makefile.in
create mode 100644 dlls/ntoskrnl.exe/tests/driver.c
create mode 100644 dlls/ntoskrnl.exe/tests/driver.h
create mode 100644 dlls/ntoskrnl.exe/tests/driver.spec
create mode 100644 dlls/ntoskrnl.exe/tests/ntoskrnl.c
diff --git a/configure b/configure
index fcf3259..45b9d23 100755
--- a/configure
+++ b/configure
@@ -18892,6 +18892,7 @@ wine_fn_config_makefile dlls/ntdll/tests enable_tests
wine_fn_config_makefile dlls/ntdsapi enable_ntdsapi
wine_fn_config_makefile dlls/ntdsapi/tests enable_tests
wine_fn_config_makefile dlls/ntoskrnl.exe enable_ntoskrnl_exe
+wine_fn_config_makefile dlls/ntoskrnl.exe/tests enable_tests
wine_fn_config_makefile dlls/ntprint enable_ntprint
wine_fn_config_makefile dlls/ntprint/tests enable_tests
wine_fn_config_makefile dlls/objsel enable_objsel
diff --git a/configure.ac b/configure.ac
index 6d35df7..f7f69f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3508,6 +3508,7 @@ WINE_CONFIG_MAKEFILE(dlls/ntdll/tests)
WINE_CONFIG_MAKEFILE(dlls/ntdsapi)
WINE_CONFIG_MAKEFILE(dlls/ntdsapi/tests)
WINE_CONFIG_MAKEFILE(dlls/ntoskrnl.exe)
+WINE_CONFIG_MAKEFILE(dlls/ntoskrnl.exe/tests)
WINE_CONFIG_MAKEFILE(dlls/ntprint)
WINE_CONFIG_MAKEFILE(dlls/ntprint/tests)
WINE_CONFIG_MAKEFILE(dlls/objsel)
diff --git a/dlls/ntoskrnl.exe/tests/Makefile.in b/dlls/ntoskrnl.exe/tests/Makefile.in
new file mode 100644
index 0000000..2581398
--- /dev/null
+++ b/dlls/ntoskrnl.exe/tests/Makefile.in
@@ -0,0 +1,10 @@
+TESTDLL = ntoskrnl.exe
+IMPORTS = advapi32
+
+driver_IMPORTS = ntoskrnl winecrt0
+EXTRADLLFLAGS = -Wl,--subsystem,native -nodefaultlibs -nostartfiles -Wl,--entry,DriverEntry
+
+SOURCES = \
+ driver.c \
+ driver.spec \
+ ntoskrnl.c
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
new file mode 100644
index 0000000..a6f4971
--- /dev/null
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -0,0 +1,126 @@
+/*
+ * ntoskrnl.exe testing framework
+ *
+ * Copyright 2015 Sebastian Lackner
+ * Copyright 2015 Michael Müller
+ * Copyright 2015 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <stdarg.h>
+
+#include "ntstatus.h"
+#define WIN32_NO_STATUS
+#include "windef.h"
+#include "winbase.h"
+#include "winternl.h"
+#include "winioctl.h"
+#include "ddk/wdm.h"
+
+#include "driver.h"
+
+const WCHAR driver_device[] = {'\\','D','e','v','i','c','e',
+ '\\','W','i','n','e','T','e','s','t','D','r','i','v','e','r',0};
+const WCHAR driver_link[] = {'\\','D','o','s','D','e','v','i','c','e','s',
+ '\\','W','i','n','e','T','e','s','t','D','r','i','v','e','r',0};
+
+static NTSTATUS test_basic_ioctl(IRP *irp, IO_STACK_LOCATION *stack, ULONG_PTR *info)
+{
+ ULONG length = stack->Parameters.DeviceIoControl.OutputBufferLength;
+ char *buffer = irp->AssociatedIrp.SystemBuffer;
+
+ if (!buffer)
+ return STATUS_ACCESS_VIOLATION;
+
+ if (length < sizeof(teststr))
+ return STATUS_BUFFER_TOO_SMALL;
+
+ strcpy(buffer, teststr);
+ *info = sizeof(teststr);
+
+ return STATUS_SUCCESS;
+}
+
+static NTSTATUS WINAPI driver_Create(DEVICE_OBJECT *device, IRP *irp)
+{
+ irp->IoStatus.Status = STATUS_SUCCESS;
+ IoCompleteRequest(irp, IO_NO_INCREMENT);
+ return STATUS_SUCCESS;
+}
+
+static NTSTATUS WINAPI driver_IoControl(DEVICE_OBJECT *device, IRP *irp)
+{
+ IO_STACK_LOCATION *stack = IoGetCurrentIrpStackLocation(irp);
+ NTSTATUS status = STATUS_NOT_SUPPORTED;
+
+ switch (stack->Parameters.DeviceIoControl.IoControlCode)
+ {
+ case IOCTL_WINETEST_BASIC_IOCTL:
+ status = test_basic_ioctl(irp, stack, &irp->IoStatus.Information);
+ break;
+ default:
+ break;
+ }
+
+ irp->IoStatus.Status = status;
+ IoCompleteRequest(irp, IO_NO_INCREMENT);
+ return status;
+}
+
+static NTSTATUS WINAPI driver_Close(DEVICE_OBJECT *device, IRP *irp)
+{
+ irp->IoStatus.Status = STATUS_SUCCESS;
+ IoCompleteRequest(irp, IO_NO_INCREMENT);
+ return STATUS_SUCCESS;
+}
+
+static VOID WINAPI driver_Unload(DRIVER_OBJECT *driver)
+{
+ UNICODE_STRING linkW;
+
+ DbgPrint("unloading driver\n");
+
+ RtlInitUnicodeString(&linkW, driver_link);
+ IoDeleteSymbolicLink(&linkW);
+
+ IoDeleteDevice(driver->DeviceObject);
+}
+
+NTSTATUS WINAPI DriverEntry(DRIVER_OBJECT *driver, PUNICODE_STRING registry)
+{
+ UNICODE_STRING nameW, linkW;
+ DEVICE_OBJECT *device;
+ NTSTATUS status;
+
+ DbgPrint("loading driver\n");
+
+ /* Allow unloading of the driver */
+ driver->DriverUnload = driver_Unload;
+
+ /* Set driver functions */
+ driver->MajorFunction[IRP_MJ_CREATE] = driver_Create;
+ driver->MajorFunction[IRP_MJ_DEVICE_CONTROL] = driver_IoControl;
+ driver->MajorFunction[IRP_MJ_CLOSE] = driver_Close;
+
+ RtlInitUnicodeString(&nameW, driver_device);
+ RtlInitUnicodeString(&linkW, driver_link);
+
+ if (!(status = IoCreateDevice(driver, 0, &nameW, FILE_DEVICE_UNKNOWN,
+ FILE_DEVICE_SECURE_OPEN, FALSE, &device)))
+ status = IoCreateSymbolicLink(&linkW, &nameW);
+
+ return status;
+}
diff --git a/dlls/ntoskrnl.exe/tests/driver.h b/dlls/ntoskrnl.exe/tests/driver.h
new file mode 100644
index 0000000..8c32bf2
--- /dev/null
+++ b/dlls/ntoskrnl.exe/tests/driver.h
@@ -0,0 +1,27 @@
+/*
+ * ntoskrnl.exe testing framework
+ *
+ * Copyright 2015 Sebastian Lackner
+ * Copyright 2015 Michael Müller
+ * Copyright 2015 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+
+/* All custom IOCTLs need to have a function value >= 0x800. */
+#define IOCTL_WINETEST_BASIC_IOCTL CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_BUFFERED, FILE_ANY_ACCESS)
+
+static const char teststr[] = "Wine is not an emulator";
diff --git a/dlls/ntoskrnl.exe/tests/driver.spec b/dlls/ntoskrnl.exe/tests/driver.spec
new file mode 100644
index 0000000..e69de29
diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
new file mode 100644
index 0000000..623e10d
--- /dev/null
+++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c
@@ -0,0 +1,159 @@
+/*
+ * ntoskrnl.exe testing framework
+ *
+ * Copyright 2015 Sebastian Lackner
+ * Copyright 2015 Michael Müller
+ * Copyright 2015 Christian Costa
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "windows.h"
+#include "winsvc.h"
+#include "winioctl.h"
+#include "wine/test.h"
+
+#include "driver.h"
+
+static const char driver_name[] = "WineTestDriver";
+static const char device_path[] = "\\\\.\\WineTestDriver";
+
+static HANDLE device;
+
+static void load_resource(const char *name, char *filename)
+{
+ static char path[MAX_PATH];
+ DWORD written;
+ HANDLE file;
+ HRSRC res;
+ void *ptr;
+
+ GetTempPathA(sizeof(path), path);
+ GetTempFileNameA(path, name, 0, filename);
+
+ file = CreateFileA(filename, GENERIC_READ|GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0);
+ ok(file != INVALID_HANDLE_VALUE, "file creation failed, at %s, error %d\n", filename, GetLastError());
+
+ res = FindResourceA(NULL, name, "TESTDLL");
+ ok( res != 0, "couldn't find resource\n" );
+ ptr = LockResource( LoadResource( GetModuleHandleA(NULL), res ));
+ WriteFile( file, ptr, SizeofResource( GetModuleHandleA(NULL), res ), &written, NULL );
+ ok( written == SizeofResource( GetModuleHandleA(NULL), res ), "couldn't write resource\n" );
+ CloseHandle( file );
+}
+
+static void unload_driver(SC_HANDLE service)
+{
+ SERVICE_STATUS status;
+
+ CloseHandle(device);
+
+ ControlService(service, SERVICE_CONTROL_STOP, &status);
+ while (status.dwCurrentState == SERVICE_STOP_PENDING)
+ {
+ Sleep(100);
+ ok(QueryServiceStatus(service, &status), "QueryServiceStatus failed: %u\n", GetLastError());
+ }
+ ok(status.dwCurrentState == SERVICE_STOPPED,
+ "expected SERVICE_STOPPED, got %d\n", status.dwCurrentState);
+
+ DeleteService(service);
+ CloseServiceHandle(service);
+}
+
+static SC_HANDLE load_driver(char *filename)
+{
+ SC_HANDLE manager, service;
+ SERVICE_STATUS status;
+ BOOL ret;
+
+ manager = OpenSCManagerA(NULL, NULL, SC_MANAGER_ALL_ACCESS);
+ if (!manager && GetLastError() == ERROR_ACCESS_DENIED)
+ {
+ skip("Failed to open SC manager, not enough permissions\n");
+ return FALSE;
+ }
+ ok(!!manager, "OpenSCManager failed\n");
+
+ /* before we start with the actual tests, make sure to terminate
+ * any old wine test drivers. */
+ service = OpenServiceA(manager, driver_name, SERVICE_ALL_ACCESS);
+ if (service) unload_driver(service);
+
+ load_resource("driver.dll", filename);
+ trace("Trying to load driver %s\n", filename);
+
+ service = CreateServiceA(manager, driver_name, driver_name,
+ SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER,
+ SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,
+ filename, NULL, NULL, NULL, NULL, NULL);
+ ok(!!service, "CreateService failed: %u\n", GetLastError());
+ CloseServiceHandle(manager);
+
+ SetLastError(0xdeadbeef);
+ ret = StartServiceA(service, 0, NULL);
+ if (!ret && GetLastError() == ERROR_DRIVER_BLOCKED)
+ {
+ /* If Secure Boot is enabled or the machine is 64-bit, it will reject an unsigned driver. */
+ skip("Failed to start service; probably your machine doesn't accept unsigned drivers.\n");
+ DeleteService(service);
+ CloseServiceHandle(service);
+ DeleteFileA(filename);
+ return NULL;
+ }
+ ok(ret, "StartService failed: %u\n", GetLastError());
+
+ /* wait for the service to start up properly */
+ ok(QueryServiceStatus(service, &status), "QueryServiceStatus failed: %u\n", GetLastError());
+ while (status.dwCurrentState == SERVICE_START_PENDING)
+ {
+ Sleep(100);
+ ok(QueryServiceStatus(service, &status), "QueryServiceStatus failed: %u\n", GetLastError());
+ }
+ ok(status.dwCurrentState == SERVICE_RUNNING,
+ "expected SERVICE_RUNNING, got %d\n", status.dwCurrentState);
+
+ device = CreateFileA(device_path, 0, 0, NULL, OPEN_EXISTING, 0, NULL);
+ ok(device != INVALID_HANDLE_VALUE, "failed to open device: %u\n", GetLastError());
+
+ return service;
+}
+
+static void test_basic_ioctl(void)
+{
+ DWORD written;
+ char buf[32];
+ BOOL res;
+
+ res = DeviceIoControl(device, IOCTL_WINETEST_BASIC_IOCTL, NULL, 0, buf,
+ sizeof(buf), &written, NULL);
+ ok(res, "DeviceIoControl failed: %u\n", GetLastError());
+ ok(written == sizeof(teststr), "got size %d\n", written);
+ ok(!strcmp(buf, teststr), "got '%s'\n", buf);
+}
+
+START_TEST(ntoskrnl)
+{
+ char filename[MAX_PATH];
+ SC_HANDLE service;
+
+ if (!(service = load_driver(filename)))
+ return;
+
+ test_basic_ioctl();
+
+ unload_driver(service);
+ ok(DeleteFileA(filename), "DeleteFile failed: %u\n", GetLastError());
+}
--
2.7.4
April 30, 2018
[PATCH 4/5] makedep: Also pass EXTRADLLFLAGS to the cross-compiled test DLL.
by Zebediah Figura
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
tools/makedep.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/makedep.c b/tools/makedep.c
index 2c5b40a..ca96752 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -2880,6 +2880,7 @@ static void output_source_spec( struct makefile *make, struct incl_file *source,
output_filename( strmake( "-B%s", tools_dir_path( make, "winebuild" )));
if (tools_dir) output_filename( strmake( "--sysroot=%s", top_obj_dir_path( make, "" )));
output_filename( "--lib-suffix=.cross.a" );
+ output_filenames( make->extradllflags );
output_filename( "-shared" );
output_filename( source->filename );
output_filename( strmake( "%s.cross.o", obj_dir_path( make, obj )));
--
2.7.4
April 30, 2018
[PATCH 3/5] winegcc: Handle -Wl,--entry.
by Zebediah Figura
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
tools/winegcc/winegcc.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index f628ff2..ce059b3 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -211,6 +211,7 @@ struct options
const char* section_align;
const char* lib_suffix;
const char* subsystem;
+ const char* entry;
strarray* prefix;
strarray* lib_dirs;
strarray* linker_args;
@@ -923,6 +924,14 @@ static void build(struct options* opts)
for ( j = 0 ; j < opts->linker_args->size ; j++ )
strarray_add(link_args, opts->linker_args->base[j]);
+ if (opts->entry)
+ {
+ if (opts->target_cpu == CPU_x86)
+ strarray_add(link_args, strmake("-Wl,--entry,_%s,--enable-stdcall-fixup", opts->entry));
+ else
+ strarray_add(link_args, strmake("-Wl,--entry,%s", opts->entry));
+ }
+
strarray_add(link_args, "-o");
strarray_add(link_args, output_file);
@@ -1080,6 +1089,12 @@ static void build(struct options* opts)
strarray_add(spec_args, opts->subsystem);
}
+ if (opts->entry)
+ {
+ strarray_add(spec_args, "--entry");
+ strarray_add(spec_args, opts->entry);
+ }
+
for ( j = 0; j < lib_dirs->size; j++ )
strarray_add(spec_args, strmake("-L%s", lib_dirs->base[j]));
@@ -1615,6 +1630,12 @@ int main(int argc, char **argv)
opts.subsystem = strdup( Wl->base[++j] );
continue;
}
+ if ((!strcmp(Wl->base[j], "--entry") || !strcmp(Wl->base[j], "-e"))
+ && j < Wl->size - 1)
+ {
+ opts.entry = strdup( Wl->base[++j] );
+ continue;
+ }
if (!strcmp(Wl->base[j], "-static")) linking = -1;
strarray_add(opts.linker_args, strmake("-Wl,%s",Wl->base[j]));
}
--
2.7.4
April 30, 2018