VirtualBox

Changeset 57865 in vbox for trunk/src/VBox/Runtime


Ignore:
Timestamp:
Sep 23, 2015 1:42:40 AM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
102828
Message:

IPRT,libs: Hacks for building IPRT testcases that can run on NT4. Won't be enabled by default, as I'm doing pretty hairy things.

Location:
trunk/src/VBox/Runtime
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/Makefile.kmk

    r57813 r57865  
    13361336VBoxRT_SDKS                   += VBOX_OPENSSL
    13371337VBoxRT_SDKS.win                = $(VBOX_WINPSDK) $(VBOX_WINDDK) VBOX_NTDLL
    1338 if1of ($(KBUILD_TARGET)$(VBOX_WITH_HARDENING), darwin win$(VBOX_WITH_HARDENING))
     1338if1of ($(KBUILD_TARGET), win)
     1339VBoxRT_INST                    = $(INST_DLL) $(INST_TESTCASE) $(VBOX_INST_TOOLS)
     1340else if1of ($(KBUILD_TARGET)$(VBOX_WITH_HARDENING), darwin win$(VBOX_WITH_HARDENING))
    13391341VBoxRT_INST                    = $(INST_DLL) $(INST_TESTCASE)
    13401342endif
     
    14521454$$(VBoxRT_0_OUTDIR)/VBoxRT.def: \
    14531455                $(PATH_SUB_CURRENT)/r3/win/VBoxRT-$$(if-expr $$(KBUILD_TARGET_ARCH) == amd64,win64,win32).def \
    1454                 $(PATH_SUB_CURRENT)/r3/win/$(if $(VBOX_OSE),VBoxRT-openssl-ose.def,VBoxRT-openssl.def)
     1456                $(PATH_SUB_CURRENT)/r3/win/$(if $(VBOX_OSE),VBoxRT-openssl-ose.def,VBoxRT-openssl.def) \
     1457                $(if-expr "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.x86" && defined(VBOX_WITH_MORE_NT4_COMPAT_BINARIES)\
     1458                ,$(PATH_SUB_CURRENT)/r3/win/VBoxRT-msvcr100-win32.def ,) #$(PATH_SUB_CURRENT)/r3/win/VBoxRT-msvcp100-win32.def
    14551459        $(RM) -f -- $@
    14561460        $(REDIRECT) -wto $@ -- $(CAT_EXT) $^
     
    14591463if1of (VBoxRT,$(DLLS))
    14601464 $(call VBOX_SET_VER_INFO_DLL,VBoxRT,VirtualBox Runtime)
     1465endif
     1466
     1467
     1468if defined(VBOX_WITH_MORE_NT4_COMPAT_BINARIES) && "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.x86"
     1469 #
     1470 # Hacks for running tests on NT 4.  Really ugly!
     1471 #
     1472 # We put most of the CRT in VBoxRT because we cannot even load msvcr100.dll
     1473 # or msvcp100.dll on NT4 because of kernel32.dll dependencies.  More hacks
     1474 # in RuntimeR3VccTricks.
     1475 #
     1476 TEMPLATE_VBoxR3RuntimeDllItself = xx
     1477 TEMPLATE_VBoxR3RuntimeDllItself_EXTENDS = VBoxR3RuntimeDll
     1478 TEMPLATE_VBoxR3RuntimeDllItself_LIBS.win.x86 = \
     1479        $(filter-out $(PATH_STAGE_LIB)/RuntimeR3VccTricks%, $(TEMPLATE_VBoxR3RuntimeDll_LIBS.win.x86))
     1480 TEMPLATE_VBoxR3RuntimeDllItself_SOURCES = \
     1481        r3/win/vcc100-kernel32-fakes.cpp \
     1482        r3/win/vcc100-kernel32-fakesA.asm \
     1483        r3/win/vcc100-msvcrt-fakes.cpp
     1484 VBoxRT_TEMPLATE         = VBoxR3RuntimeDllItself
     1485 VBoxRT_TEMPLATE.win.x86 = VBoxR3RuntimeDllItself
     1486 VBoxRT_DEFS.win.x86     = $(TEMPLATE_VBoxR3RuntimeDll_DEFS.win.x86) _CRTIMP_PURE="__declspec(dllexport)"
     1487 VBoxRT_LDFLAGS.win.x86  = /IGNORE:4049 /IGNORE:4217
     1488 VBoxRT_LIBS.win.x86 = \
     1489        $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/oldnames.lib \
     1490        $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/libcmt.lib \
     1491        $(PATH_TOOL_$(VBOX_VCC_TOOL_STEM)X86_LIB)/libcpmt.lib
    14611492endif
    14621493
     
    24932524        r3/win/vcc100-kernel32-fakesA.asm
    24942525
     2526if defined(VBOX_WITH_MORE_NT4_COMPAT_BINARIES) && "$(KBUILD_TARGET).$(KBUILD_TARGET_ARCH)" == "win.x86" # Ugly hacks... :-)
     2527RuntimeR3VccTricks_SOURCES += $(RuntimeR3VccTricks_0_OUTDIR)/dynobjs.lib
     2528RuntimeR3VccTricks_CLEAN    = $(RuntimeR3VccTricks_0_OUTDIR)/dynobjs.lib
     2529RuntimeR3VccTricks_VBOX_LIBCMT_NEEDED = \
     2530
     2531$$(RuntimeR3VccTricks_0_OUTDIR)/dynobjs.lib: \
     2532                $$(PATH_TOOL_$$(TEMPLATE_VBoxR3Dll_TOOL.win.x86)_LIB)/msvcrt$(VBOX_VCC_CRT_TYPE).lib \
     2533                $$(PATH_TOOL_$$(TEMPLATE_VBoxR3Dll_TOOL.win.x86)_LIB)/libcmt$(VBOX_VCC_CRT_TYPE).lib \
     2534                $$(LIB_RUNTIME) \
     2535                $(MAKEFILE) | $$(dir $$@)
     2536        $(RM) -f -- "$@"
     2537#       $(REDIRECT) -C $(dir $@) -- $(KBUILD_DEVTOOLS)/common/openwatcom/v1.9-r2/binnt/wlib \
     2538#               $(PATH_TOOL_$(TEMPLATE_VBoxR3Dll_TOOL.win.x86)_LIB)/libcmt$(VBOX_VCC_CRT_TYPE).lib \
     2539#               $(foreach file, $(RuntimeR3VccTricks_VBOX_LIBCMT_NEEDED), *$(file))
     2540        $(KBUILD_DEVTOOLS)/common/openwatcom/v1.9-r2/binnt/wlib [email protected] $< \
     2541                -MSVCR100.dll \
     2542                $(addprefix $(RuntimeR3VccTricks_0_OUTDIR)/, $(RuntimeR3VccTricks_VBOX_LIBCMT_NEEDED)) \
     2543               -chandler4gs.obj
     2544        $(KBUILD_DEVTOOLS)/common/openwatcom/v1.9-r2/binnt/wlib -o=$@ \
     2545               $(LIB_RUNTIME) \
     2546                [email protected]
     2547        $(RM) -f -- [email protected] $(addprefix $(RuntimeR3VccTricks_0_OUTDIR)/, $(RuntimeR3VccTricks_VBOX_LIBCMT_NEEDED))
     2548endif
     2549
    24952550
    24962551#
  • trunk/src/VBox/Runtime/common/path/RTPathGlob.cpp

    r57696 r57865  
    4545#if defined(RT_OS_WINDOWS)
    4646# include <Windows.h>
     47# include "../../r3/win/internal-r3-win.h"
    4748
    4849#elif defined(RT_OS_OS2)
     
    500501        /* Since this is used at the start of a pattern, we assume
    501502           we've got more than enough buffer space. */
     503        AssertReturn(g_pfnGetSystemWindowsDirectoryW, VERR_SYMBOL_NOT_FOUND);
    502504        PRTUTF16 pwszTmp = (PRTUTF16)pszBuf;
    503         UINT cch = GetSystemWindowsDirectoryW(pwszTmp, (UINT)(cbBuf / sizeof(WCHAR)));
     505        UINT cch = g_pfnGetSystemWindowsDirectoryW(pwszTmp, (UINT)(cbBuf / sizeof(WCHAR)));
    504506        if (cch >= 2)
    505507        {
     
    547549    {
    548550        Assert(pszBuf); Assert(cbBuf);
     551        AssertReturn(g_pfnGetSystemWindowsDirectoryW, VERR_SYMBOL_NOT_FOUND);
    549552        RTUTF16 wszSystemRoot[MAX_PATH];
    550         UINT cchSystemRoot = GetSystemWindowsDirectoryW(wszSystemRoot, MAX_PATH);
     553        UINT cchSystemRoot = g_pfnGetSystemWindowsDirectoryW(wszSystemRoot, MAX_PATH);
    551554        if (cchSystemRoot > 0)
    552555            return RTUtf16ToUtf8Ex(wszSystemRoot, cchSystemRoot, &pszBuf, cbBuf, pcchValue);
  • trunk/src/VBox/Runtime/r3/win/init-win.cpp

    r57358 r57865  
    5757/** The native ntdll.dll handle. */
    5858DECLHIDDEN(HMODULE)             g_hModNtDll = NULL;
     59/** GetSystemWindowsDirectoryW or GetWindowsDirectoryW (NT4). */
     60DECLHIDDEN(PFNGETWINSYSDIR)     g_pfnGetSystemWindowsDirectoryW = NULL;
    5961
    6062
     
    293295        rc = rtR3InitNativeObtrusiveWorker();
    294296
     297    /*
     298     * Resolve some kernel32.dll APIs we may need but aren't necessarily
     299     * present in older windows versions.
     300     */
     301    g_pfnGetSystemWindowsDirectoryW = (PFNGETWINSYSDIR)GetProcAddress(g_hModKernel32, "GetSystemWindowsDirectoryW");
     302    if (g_pfnGetSystemWindowsDirectoryW)
     303        g_pfnGetSystemWindowsDirectoryW = (PFNGETWINSYSDIR)GetProcAddress(g_hModKernel32, "GetWindowsDirectoryW");
     304
    295305    return rc;
    296306}
  • trunk/src/VBox/Runtime/r3/win/internal-r3-win.h

    r55401 r57865  
    9393extern DECLHIDDEN(HMODULE)          g_hModNtDll;
    9494extern DECLHIDDEN(OSVERSIONINFOEXW) g_WinOsInfoEx;
     95typedef UINT (WINAPI *PFNGETWINSYSDIR)(LPWSTR,UINT);
     96extern DECLHIDDEN(PFNGETWINSYSDIR)  g_pfnGetSystemWindowsDirectoryW;
    9597#endif
    9698
  • trunk/src/VBox/Runtime/r3/win/vcc100-kernel32-fakes.cpp

    r57358 r57865  
    3030*********************************************************************************************************************************/
    3131#include <iprt/cdefs.h>
     32#include <iprt/types.h>
    3233
    3334#ifndef RT_ARCH_X86
     
    140141}
    141142
     143
     144extern "C" int vcc100_kernel32_fakes_cpp(void)
     145{
     146    return 42;
     147}
     148
  • trunk/src/VBox/Runtime/r3/win/vcc100-kernel32-fakesA.asm

    r42239 r57865  
    1818
    1919BEGINDATA
     20GLOBALNAME vcc100_kernel32_fakes_asm
    2021
    2122MAKE_IMPORT_ENTRY DecodePointer, 4
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette