From 9669b3124f84c24eb1fe2430fa345fde9b37cbc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Wed, 22 Mar 2023 17:03:59 +0100 Subject: [PATCH] [KDGDB] Fix build with x86 and x64 MSVC (#5187) ``` gdb_input.c(243): error C4477: '_snprintf' : format string '%p' requires an argument of type 'void *', but variadic argument 1 has type 'UINT_PTR' i386_sup.c(98): error C4090: 'return': different 'const' qualifiers amd64_sup.c(115): error C4090: 'return': different 'const' qualifiers ``` --- drivers/base/kdgdb/amd64_sup.c | 11 +++++------ drivers/base/kdgdb/gdb_input.c | 8 ++++---- drivers/base/kdgdb/i386_sup.c | 12 ++++++------ 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/drivers/base/kdgdb/amd64_sup.c b/drivers/base/kdgdb/amd64_sup.c index 4e3925918cf..8e0e616ac5f 100644 --- a/drivers/base/kdgdb/amd64_sup.c +++ b/drivers/base/kdgdb/amd64_sup.c @@ -30,7 +30,7 @@ static const unsigned char reg_size[] = }; static -void* +const void* ctx_to_reg(CONTEXT* ctx, enum reg_name name) { switch (name) @@ -60,12 +60,11 @@ ctx_to_reg(CONTEXT* ctx, enum reg_name name) case GS: return &ctx->SegGs; case SS: return &ctx->SegSs; } -#undef return_reg - return 0; + return NULL; } static -void* +const void* thread_to_reg(PETHREAD Thread, enum reg_name reg_name) { static const void* NullValue = NULL; @@ -144,7 +143,7 @@ KDSTATUS gdb_send_registers(void) { CHAR RegisterStr[17]; - UCHAR* RegisterPtr; + const UCHAR* RegisterPtr; unsigned short i; unsigned short size; @@ -218,7 +217,7 @@ KDSTATUS gdb_send_register(void) { enum reg_name reg_name; - void *ptr; + const void* ptr; /* Get the GDB register name (gdb_input = "pXX") */ reg_name = (hex_value(gdb_input[1]) << 4) | hex_value(gdb_input[2]); diff --git a/drivers/base/kdgdb/gdb_input.c b/drivers/base/kdgdb/gdb_input.c index 43632890c98..d79f48b3bff 100644 --- a/drivers/base/kdgdb/gdb_input.c +++ b/drivers/base/kdgdb/gdb_input.c @@ -187,10 +187,10 @@ handle_gdb_query(void) { char gdb_out[64]; #if MONOPROCESS - sprintf(gdb_out, "QC:%"PRIxPTR";", + sprintf(gdb_out, "QC:%" PRIxPTR ";", handle_to_gdb_tid(PsGetThreadId((PETHREAD)(ULONG_PTR)CurrentStateChange.Thread))); #else - sprintf(gdb_out, "QC:p%"PRIxPTR".%"PRIxPTR";", + sprintf(gdb_out, "QC:p%" PRIxPTR ".%" PRIxPTR ";", handle_to_gdb_pid(PsGetThreadProcessId((PETHREAD)(ULONG_PTR)CurrentStateChange.Thread)), handle_to_gdb_tid(PsGetThreadId((PETHREAD)(ULONG_PTR)CurrentStateChange.Thread))); #endif @@ -240,9 +240,9 @@ handle_gdb_query(void) PETHREAD Thread = CONTAINING_RECORD(CurrentThreadEntry, ETHREAD, ThreadListEntry); #if MONOPROCESS - _snprintf(gdb_out, 40, ",%p", handle_to_gdb_tid(Thread->Cid.UniqueThread)); + _snprintf(gdb_out, 40, ",%" PRIxPTR, handle_to_gdb_tid(Thread->Cid.UniqueThread)); #else - _snprintf(gdb_out, 40, ",p%p.%p", + _snprintf(gdb_out, 40, ",p%" PRIxPTR ".%" PRIxPTR, handle_to_gdb_pid(Process->UniqueProcessId), handle_to_gdb_tid(Thread->Cid.UniqueThread)); #endif diff --git a/drivers/base/kdgdb/i386_sup.c b/drivers/base/kdgdb/i386_sup.c index 5cf610bb6e2..491adffea17 100644 --- a/drivers/base/kdgdb/i386_sup.c +++ b/drivers/base/kdgdb/i386_sup.c @@ -20,7 +20,7 @@ enum reg_name }; static -void* +const void* ctx_to_reg(CONTEXT* ctx, enum reg_name name, unsigned short* size) { /* For general registers: 32bits */ @@ -76,11 +76,11 @@ ctx_to_reg(CONTEXT* ctx, enum reg_name name, unsigned short* size) return &ctx->ExtendedRegisters[160 + (name - XMM0)*16]; case MXCSR: return &ctx->ExtendedRegisters[24]; } - return 0; + return NULL; } static -void* +const void* thread_to_reg(PETHREAD Thread, enum reg_name reg_name, unsigned short* size) { static const void* NullValue = NULL; @@ -152,8 +152,8 @@ KDSTATUS gdb_send_registers(void) { CHAR RegisterStr[9]; - UCHAR* RegisterPtr; - unsigned i; + const UCHAR* RegisterPtr; + unsigned short i; unsigned short size; RegisterStr[8] = '\0'; @@ -223,7 +223,7 @@ KDSTATUS gdb_send_register(void) { enum reg_name reg_name; - void *ptr; + const void* ptr; unsigned short size; /* Get the GDB register name (gdb_input = "pXX") */