Signed-off-by: Giovanni Mascellani gmascellani@codeweavers.com
Il 22/01/22 10:00, Mohamad Al-Jaf ha scritto:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=51850 Signed-off-by: Mohamad Al-Jaf mohamadaljaf@gmail.com
v4: - Load the wdscore dll in tests (Thanks Stefan Dösinger). - Remove unnecessary 0 in i386 and x86_64 assembly code.
configure.ac | 1 + dlls/wdscore/Makefile.in | 3 ++ dlls/wdscore/main.c | 54 ++++++++++++++++++++++++++++ dlls/wdscore/tests/Makefile.in | 4 +++ dlls/wdscore/tests/main.c | 65 ++++++++++++++++++++++++++++++++++ dlls/wdscore/wdscore.spec | 2 +- 6 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 dlls/wdscore/main.c create mode 100644 dlls/wdscore/tests/Makefile.in create mode 100644 dlls/wdscore/tests/main.c
diff --git a/configure.ac b/configure.ac index b42cb8a5346..a50881cc2fb 100644 --- a/configure.ac +++ b/configure.ac @@ -3347,6 +3347,7 @@ WINE_CONFIG_MAKEFILE(dlls/wbemdisp/tests) WINE_CONFIG_MAKEFILE(dlls/wbemprox) WINE_CONFIG_MAKEFILE(dlls/wbemprox/tests) WINE_CONFIG_MAKEFILE(dlls/wdscore) +WINE_CONFIG_MAKEFILE(dlls/wdscore/tests) WINE_CONFIG_MAKEFILE(dlls/webservices) WINE_CONFIG_MAKEFILE(dlls/webservices/tests) WINE_CONFIG_MAKEFILE(dlls/websocket) diff --git a/dlls/wdscore/Makefile.in b/dlls/wdscore/Makefile.in index 20ba1d3b1c9..2020e72c7bb 100644 --- a/dlls/wdscore/Makefile.in +++ b/dlls/wdscore/Makefile.in @@ -1,3 +1,6 @@ MODULE = wdscore.dll
EXTRADLLFLAGS = -Wb,--prefer-native
+C_SRCS = \
- main.c
diff --git a/dlls/wdscore/main.c b/dlls/wdscore/main.c new file mode 100644 index 00000000000..8854887a555 --- /dev/null +++ b/dlls/wdscore/main.c @@ -0,0 +1,54 @@ +/*
- Copyright 2022 Mohamad Al-Jaf
- 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 "windef.h" +#include "winbase.h"
+#include "wine/asm.h" +#include "wine/debug.h"
+WINE_DEFAULT_DEBUG_CHANNEL(wdscore);
+/***********************************************************************
CurrentIP (wdscore.@)
- */
+#ifdef __i386__ +__ASM_STDCALL_FUNC(CurrentIP, 0,
- "movl (%esp), %eax\n\t"
- "ret" )
+#elif defined(__x86_64__) +__ASM_STDCALL_FUNC(CurrentIP, 0,
- "movq (%rsp), %rax\n\t"
- "ret" )
+#elif defined(__arm__) +__ASM_STDCALL_FUNC(CurrentIP, 0,
- "mov r0, lr\n\t"
- "bx lr" )
+#elif defined(__aarch64__) +__ASM_STDCALL_FUNC(CurrentIP, 0,
- "mov x0, lr\n\t"
- "ret" )
+#else +void *WINAPI CurrentIP(void) +{
- FIXME( "not implemented\n" );
- return 0;
+} +#endif diff --git a/dlls/wdscore/tests/Makefile.in b/dlls/wdscore/tests/Makefile.in new file mode 100644 index 00000000000..baf4adf23a1 --- /dev/null +++ b/dlls/wdscore/tests/Makefile.in @@ -0,0 +1,4 @@ +TESTDLL = wdscore.dll
+C_SRCS = \
- main.c
diff --git a/dlls/wdscore/tests/main.c b/dlls/wdscore/tests/main.c new file mode 100644 index 00000000000..d06a25703c6 --- /dev/null +++ b/dlls/wdscore/tests/main.c @@ -0,0 +1,65 @@ +/*
- Unit test suite for wdscore
- Copyright 2022 Mohamad Al-Jaf
- 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 "windef.h" +#include "winbase.h"
+#include "wine/test.h"
+static HMODULE dll; +static void* (WINAPI *pCurrentIP)(void);
+static BOOL init_function_pointers(void) +{
- dll = LoadLibraryA("wdscore.dll");
- if (dll)
- {
pCurrentIP = (void*)GetProcAddress(dll, "CurrentIP");
return TRUE;
- }
- return FALSE;
+}
+static void test_CurrentIP(void) +{
- char *cur;
- char *ret;
- cur = (char*)&test_CurrentIP;
- ret = (char*)pCurrentIP();
- ok(cur <= ret && ret < (cur + 0x100), "Address %p not in function starting at %p.\n", ret, cur);
+}
+START_TEST(main) +{
- if (init_function_pointers())
- {
test_CurrentIP();
FreeLibrary(dll);
- }
- else
skip("could not load wdscore.dll\n");
+} diff --git a/dlls/wdscore/wdscore.spec b/dlls/wdscore/wdscore.spec index 15958b86aba..8b6febe6b3b 100644 --- a/dlls/wdscore/wdscore.spec +++ b/dlls/wdscore/wdscore.spec @@ -71,7 +71,7 @@ @ stub ConstructPartialMsgIfW @ stub ConstructPartialMsgVA @ stub ConstructPartialMsgVW -@ stub CurrentIP +@ stdcall CurrentIP() @ stub EndMajorTask @ stub EndMinorTask @ stub GetMajorTask