From bb7d887646ec7f1a83d1a5f9e370861a82c86ff8 Mon Sep 17 00:00:00 2001 From: Peter Eisentraut Date: Tue, 15 Sep 2026 08:43:09 +0200 Subject: [PATCH v2 7/8] Additional unvolatize uses Add some uses of unvolatize to silence warnings that would be triggered by -Wcast-qual. Note that the MemSet() calls would be normal "discards qualifier" warnings if memset() (or another function with a prototype, not a macro) were used. --- src/backend/storage/ipc/pmsignal.c | 2 +- src/backend/storage/ipc/procsignal.c | 4 ++-- src/backend/utils/activity/backend_progress.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/backend/storage/ipc/pmsignal.c b/src/backend/storage/ipc/pmsignal.c index bdad5fdd043..911dde32fa9 100644 --- a/src/backend/storage/ipc/pmsignal.c +++ b/src/backend/storage/ipc/pmsignal.c @@ -145,7 +145,7 @@ PMSignalShmemRequest(void *arg) mul_size(num_child_flags, sizeof(sig_atomic_t))); ShmemRequestStruct(.name = "PMSignalState", .size = size, - .ptr = (void **) &PMSignalState, + .ptr = (void **) unvolatize(PMSignalData **, &PMSignalState), ); } diff --git a/src/backend/storage/ipc/procsignal.c b/src/backend/storage/ipc/procsignal.c index 21a77f98c1d..ea1355df8ee 100644 --- a/src/backend/storage/ipc/procsignal.c +++ b/src/backend/storage/ipc/procsignal.c @@ -155,7 +155,7 @@ ProcSignalShmemInit(void *arg) SpinLockInit(&slot->pss_mutex); pg_atomic_init_u32(&slot->pss_pid, 0); slot->pss_cancel_key_len = 0; - MemSet(slot->pss_signalFlags, 0, sizeof(slot->pss_signalFlags)); + MemSet(unvolatize(sig_atomic_t *, slot->pss_signalFlags), 0, sizeof(slot->pss_signalFlags)); pg_atomic_init_u64(&slot->pss_barrierGeneration, PG_UINT64_MAX); pg_atomic_init_u32(&slot->pss_barrierCheckMask, 0); ConditionVariableInit(&slot->pss_barrierCV); @@ -186,7 +186,7 @@ ProcSignalInit(const uint8 *cancel_key, int cancel_key_len) old_pss_pid = pg_atomic_read_u32(&slot->pss_pid); /* Clear out any leftover signal reasons */ - MemSet(slot->pss_signalFlags, 0, NUM_PROCSIGNALS * sizeof(sig_atomic_t)); + MemSet(unvolatize(sig_atomic_t *, slot->pss_signalFlags), 0, NUM_PROCSIGNALS * sizeof(sig_atomic_t)); /* * Publish the PID before reading the global barrier generation to ensure diff --git a/src/backend/utils/activity/backend_progress.c b/src/backend/utils/activity/backend_progress.c index dee05b1abb1..a1c39b7fb15 100644 --- a/src/backend/utils/activity/backend_progress.c +++ b/src/backend/utils/activity/backend_progress.c @@ -35,7 +35,7 @@ pgstat_progress_start_command(ProgressCommandType cmdtype, Oid relid) PGSTAT_BEGIN_WRITE_ACTIVITY(beentry); beentry->st_progress_command = cmdtype; beentry->st_progress_command_target = relid; - MemSet(&beentry->st_progress_param, 0, sizeof(beentry->st_progress_param)); + MemSet(&unvolatize(PgBackendStatus *, beentry)->st_progress_param, 0, sizeof(beentry->st_progress_param)); PGSTAT_END_WRITE_ACTIVITY(beentry); } -- 2.55.0