Module: wine Branch: master Commit: 91ba80df262b93b9a5edabd7cc0259fcbedf51d4 URL: https://gitlab.winehq.org/wine/wine/-/commit/91ba80df262b93b9a5edabd7cc0259f...
Author: Eric Pouech epouech@codeweavers.com Date: Fri Oct 13 09:58:23 2023 +0200
winedbg: Set first LDT entry value as ntdll does.
Signed-off-by: Eric Pouech epouech@codeweavers.com
---
programs/winedbg/be_i386.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/programs/winedbg/be_i386.c b/programs/winedbg/be_i386.c index 503a182641d..9f22dd5f3d4 100644 --- a/programs/winedbg/be_i386.c +++ b/programs/winedbg/be_i386.c @@ -30,13 +30,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(winedbg);
#define IS_VM86_MODE(ctx) (ctx->EFlags & V86_FLAG)
+static const unsigned first_ldt_entry = 32; + static ADDRESS_MODE get_selector_type(HANDLE hThread, const WOW64_CONTEXT *ctx, WORD sel) { LDT_ENTRY le;
if (IS_VM86_MODE(ctx)) return AddrModeReal; /* null or system selector */ - if (!(sel & 4) || ((sel >> 3) < 17)) return AddrModeFlat; + if (!(sel & 4) || ((sel >> 3) < first_ldt_entry)) return AddrModeFlat; if (dbg_curr_process->process_io->get_selector(hThread, sel, &le)) return le.HighWord.Bits.Default_Big ? AddrMode1632 : AddrMode1616; /* selector doesn't exist */ @@ -52,7 +54,7 @@ static void* be_i386_linearize(HANDLE hThread, const ADDRESS64* addr) case AddrModeReal: return (void*)((DWORD_PTR)(LOWORD(addr->Segment) << 4) + (DWORD_PTR)addr->Offset); case AddrMode1632: - if (!(addr->Segment & 4) || ((addr->Segment >> 3) < 17)) + if (!(addr->Segment & 4) || ((addr->Segment >> 3) < first_ldt_entry)) return (void*)(DWORD_PTR)addr->Offset; /* fall through */ case AddrMode1616: