| 4780e0d4 | 25-Jul-2026 |
Peter Kovacs <petko@apache.org> |
vcl/win64: link version.lib + set the x64 DLL entry point (dmake)
Port of the Win64 gbuild changes from origin/windows-amd64 to the dmake vcl makefile, since trunk builds vcl via dmake, not gbuild:
vcl/win64: link version.lib + set the x64 DLL entry point (dmake)
Port of the Win64 gbuild changes from origin/windows-amd64 to the dmake vcl makefile, since trunk builds vcl via dmake, not gbuild:
- b4ae19cf68: link "version" (VerQueryValueW &c.) -> add $(VERSIONLIB) to SHL1STDLIBS (defined as version.lib on both wntmsci11 and wntmscx). - f3e0634fae: give the x64 build a DLL entry point. windows-amd64 used /ENTRY:LibMain@16, but LibMain is WINAPI (__stdcall): x86 decorates it LibMain@12 while x64 has NO stdcall @N decoration, so the entry symbol is the undecorated LibMain. Corrected here to /ENTRY:LibMain for WNTMSCX, matching the proven bazel-migration build that boots on x64.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
show more ...
|
| 02b513ef | 25-Jul-2026 |
Peter Kovacs <petko@apache.org> |
sal/vcl: Win64 (x64) runtime source fixes -- thread key + window pointers
Pointer-width fixes on the runtime boot path (all compile unchanged on x86; dmake-backportable):
- sal osl/thread.h: oslThr
sal/vcl: Win64 (x64) runtime source fixes -- thread key + window pointers
Pointer-width fixes on the runtime boot path (all compile unchanged on x86; dmake-backportable):
- sal osl/thread.h: oslThreadKey sal_uInt32 -> sal_uIntPtr. The w32 osl_createThreadKey returns a heap PTLS* stuffed into the key; on LLP64 that 64-bit pointer was truncated, so osl_getThreadKeyData dereferenced garbage (first crash: cppu getIdContainer during InitVCL). Not present in origin/windows-amd64 (their thread.h/.c match trunk) -- authored here. - vcl win/saldata: ImplSet/GetWindowLong -> LONG_PTR + Set/GetWindowLongPtrW, SetWindowPtr/SetSalObjWindowPtr (LONG)->(LONG_PTR) (frame pointer stored in the window's extra bytes was truncated -> sign-extended garbage in UpdateFrameGeometry) (ref 9b64d14c8d); SAL_FRAME/OBJECT_WNDEXTRA sizeof(DWORD) -> sizeof(ULONG_PTR) so the 8-byte pointer fits the reserve (added beyond the reference, which relied on Windows over-allocating); ImplSendMessage BOOL -> LRESULT (WinSalInstance::CreateFrame/CreateObject route the new SalFrame*/SalObject* back as the SAL_MSG_CREATE* message result -- BOOL truncated it, causing an AV in SalFrame::SetCallback; also fixes the latent HDC/HWND truncations at the other call sites).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit cc0a3ed6d1e1f10040e030b974c4b0ab9c6fbf17) (cherry picked from commit 1ac44d4c16cd8c7fb00879e708b1c066c88ccc26)
show more ...
|
| 30f18d3f | 21-Jul-2026 |
Peter Kovacs <petko@apache.org> |
vcl/basic/sfx2/unixODBC: Win64 (x64) source fixes
Source-level fixes needed to compile/link these modules for Windows x86-64 (VS2008 x64). Each is arch-neutral or arch-guarded, so the x86 build is
vcl/basic/sfx2/unixODBC: Win64 (x64) source fixes
Source-level fixes needed to compile/link these modules for Windows x86-64 (VS2008 x64). Each is arch-neutral or arch-guarded, so the x86 build is unchanged; isolated here so they can be cherry-picked onto the dmake windows-amd64 branch / upstream.
- vcl/inc/win/wincomp.hxx: the pointer/handle class- and window-long indices GCL_HCURSOR/GCL_HICON/GCL_HBRBACKGROUND and GWL_HINSTANCE do not exist on Win64; use GCLP_*/GWLP_* with SetClassLongPtr/GetClassLongPtr/ GetWindowLongPtr and (LONG_PTR) casts (compile on x86 too). - vcl/win/source/window/salframe.cxx: PtrToInt(wParam) misused on the integer IME request code (WPARAM is 64-bit on x64) -> static_cast<int>. - vcl/win/source/gdi/salgdi.cxx: ImplPreparePolyDraw took const sal_uLong* while the drawPolyPolygon* callers pass const sal_uInt32* (distinct pointer types on x64) -> sal_uInt32*. - vcl/source/window/scrwnd.cxx: Max(sal_uIntPtr, 1UL) ambiguous on x64 (sal_uIntPtr is 64-bit, 1UL is unsigned long) -> Max(..., sal_uIntPtr(1UL)). - basic/source/runtime/dllmgr.cxx: the DllMgr_call32/callFp trampolines (wnt.asm) are x86 stdcall only; guard #if defined WNT -> #if defined(WNT) && !defined(_WIN64) so x64 uses the existing not-implemented stub (Basic Declare'd DLL calls unsupported on x64 until an x64 trampoline is written). - sfx2/source/bastyp/progress.cxx: extern Get10ThSec declared sal_uIntPtr but the definition returns sal_uInt32; these coincide on x86 but diverge on x64 (link error) -> declare sal_uInt32. - unixODBC/inc/sqltypes.h: the _WIN64 branch uses INT64/UINT64 for SQLLEN/SQLULEN without pulling them in -> #include <basetsd.h> (arch-guarded).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> (cherry picked from commit ca1383cbf9353b4189783687c37e993025edf764) (cherry picked from commit a82fa8aef582f462d3f5518690eb9c6c33e5e8d0)
show more ...
|