https://github.com/python/cpython/commit/59ef77b7a8e2e56659c2314fdfb58835b515b38c commit: 59ef77b7a8e2e56659c2314fdfb58835b515b38c branch: 3.15 author: Miss Islington (bot) <[email protected]> committer: vstinner <[email protected]> date: 2026-11-08T19:42:05Z summary:
[3.15] gh-161625: Fix compiler warnings in _remote_debugging (GH-161626) (#161638) gh-161625: Fix compiler warnings in _remote_debugging (GH-161626) Fix compiler warnings when Python is built in 32-bit mode on Windows. (cherry picked from commit dcf90877e47b15d3e364b7b1855c44f1832fa253) Co-authored-by: Victor Stinner <[email protected]> files: M Modules/_remote_debugging/binary_io_reader.c M Modules/_remote_debugging/frames.c M Modules/_remote_debugging/gc_stats.c M Modules/_remote_debugging/object_reading.c M Modules/_remote_debugging/threads.c diff --git a/Modules/_remote_debugging/binary_io_reader.c b/Modules/_remote_debugging/binary_io_reader.c index 80627db913ea21b..a51a2e475c9e06b 100644 --- a/Modules/_remote_debugging/binary_io_reader.c +++ b/Modules/_remote_debugging/binary_io_reader.c @@ -365,7 +365,7 @@ static inline int reader_parse_string_table(BinaryReader *reader, const uint8_t *data, size_t file_size) { if (reader_validate_count("string", reader->strings_count, - file_size - reader->string_table_offset, + file_size - (size_t)reader->string_table_offset, MIN_STRING_ENTRY_SIZE) < 0) { return -1; } @@ -376,7 +376,7 @@ reader_parse_string_table(BinaryReader *reader, const uint8_t *data, size_t file return -1; } - size_t offset = reader->string_table_offset; + size_t offset = (size_t)reader->string_table_offset; for (uint32_t i = 0; i < reader->strings_count; i++) { size_t prev_offset = offset; uint32_t str_len = decode_varint_u32(data, &offset, file_size); @@ -411,7 +411,7 @@ reader_parse_frame_table(BinaryReader *reader, const uint8_t *data, size_t file_ #endif if (reader_validate_count("frame", reader->frames_count, - file_size - reader->frame_table_offset, + file_size - (size_t)reader->frame_table_offset, MIN_FRAME_ENTRY_SIZE) < 0) { return -1; } @@ -423,7 +423,7 @@ reader_parse_frame_table(BinaryReader *reader, const uint8_t *data, size_t file_ return -1; } - size_t offset = reader->frame_table_offset; + size_t offset = (size_t)reader->frame_table_offset; for (uint32_t i = 0; i < reader->frames_count; i++) { FrameEntry *frame = &reader->frames[i]; size_t prev_offset; @@ -694,7 +694,7 @@ binary_reader_open(PyObject *path) #endif } else { reader->sample_data = data + FILE_HEADER_PLACEHOLDER_SIZE; - reader->sample_data_size = reader->string_table_offset - FILE_HEADER_PLACEHOLDER_SIZE; + reader->sample_data_size = (size_t)reader->string_table_offset - FILE_HEADER_PLACEHOLDER_SIZE; } /* Parse string and frame tables */ @@ -871,7 +871,7 @@ decode_stack_suffix(ReaderThreadState *ts, const uint8_t *data, return -1; } } - ts->current_stack_depth = final_depth; + ts->current_stack_depth = (size_t)final_depth; return 0; } @@ -916,7 +916,7 @@ decode_stack_pop_push(ReaderThreadState *ts, const uint8_t *data, return -1; } } - ts->current_stack_depth = final_depth; + ts->current_stack_depth = (size_t)final_depth; return 0; } @@ -1262,7 +1262,7 @@ binary_reader_replay(BinaryReader *reader, PyObject *collector, PyObject *progre reader->stats.total_samples += count; /* Progress callback after batch */ - if (replayed % PROGRESS_CALLBACK_INTERVAL < count) { + if ((uint64_t)replayed % PROGRESS_CALLBACK_INTERVAL < (uint64_t)count) { if (invoke_progress_callback(progress_callback, replayed, reader->sample_count) < 0) { return -1; } diff --git a/Modules/_remote_debugging/frames.c b/Modules/_remote_debugging/frames.c index fde3474a0539190..9eafa478e1943b9 100644 --- a/Modules/_remote_debugging/frames.c +++ b/Modules/_remote_debugging/frames.c @@ -461,7 +461,7 @@ clear_last_profiled_frames(RemoteUnwinderObject *unwinder) uintptr_t tstate_addr; if (_Py_RemoteDebug_PagedReadRemoteMemory( &unwinder->handle, - current_interp + unwinder->debug_offsets.interpreter_state.threads_head, + current_interp + (uintptr_t)unwinder->debug_offsets.interpreter_state.threads_head, sizeof(void*), &tstate_addr) < 0) { // Non-fatal: just skip clearing @@ -482,7 +482,7 @@ clear_last_profiled_frames(RemoteUnwinderObject *unwinder) // Move to next thread if (_Py_RemoteDebug_PagedReadRemoteMemory( &unwinder->handle, - tstate_addr + unwinder->debug_offsets.thread_state.next, + tstate_addr + (uintptr_t)unwinder->debug_offsets.thread_state.next, sizeof(void*), &tstate_addr) < 0) { PyErr_Clear(); @@ -493,7 +493,7 @@ clear_last_profiled_frames(RemoteUnwinderObject *unwinder) // Move to next interpreter if (_Py_RemoteDebug_PagedReadRemoteMemory( &unwinder->handle, - current_interp + unwinder->debug_offsets.interpreter_state.next, + current_interp + (uintptr_t)unwinder->debug_offsets.interpreter_state.next, sizeof(void*), ¤t_interp) < 0) { PyErr_Clear(); diff --git a/Modules/_remote_debugging/gc_stats.c b/Modules/_remote_debugging/gc_stats.c index 23fa879b5032837..4dc77803a0a9f3c 100644 --- a/Modules/_remote_debugging/gc_stats.c +++ b/Modules/_remote_debugging/gc_stats.c @@ -88,8 +88,8 @@ get_gc_stats_from_interpreter_state(RuntimeOffsets *offsets, uintptr_t gc_stats_addr = 0; uintptr_t gc_stats_pointer_address = interpreter_state_addr - + offsets->debug_offsets.interpreter_state.gc - + offsets->debug_offsets.gc.generation_stats; + + (uintptr_t)offsets->debug_offsets.interpreter_state.gc + + (uintptr_t)offsets->debug_offsets.gc.generation_stats; if (_Py_RemoteDebug_ReadRemoteMemory(&offsets->handle, gc_stats_pointer_address, sizeof(gc_stats_addr), diff --git a/Modules/_remote_debugging/object_reading.c b/Modules/_remote_debugging/object_reading.c index e449b446a1fe544..6f138f3de3503b6 100644 --- a/Modules/_remote_debugging/object_reading.c +++ b/Modules/_remote_debugging/object_reading.c @@ -279,7 +279,7 @@ read_py_long( } // Calculate how many digits fit inline in our local buffer - Py_ssize_t ob_digit_offset = unwinder->debug_offsets.long_object.ob_digit; + Py_ssize_t ob_digit_offset = (Py_ssize_t)unwinder->debug_offsets.long_object.ob_digit; Py_ssize_t inline_digits_space = SIZEOF_LONG_OBJ - ob_digit_offset; Py_ssize_t max_inline_digits = inline_digits_space / (Py_ssize_t)sizeof(digit); diff --git a/Modules/_remote_debugging/threads.c b/Modules/_remote_debugging/threads.c index 120065022ddc8ee..a3bd6c9edfb58eb 100644 --- a/Modules/_remote_debugging/threads.c +++ b/Modules/_remote_debugging/threads.c @@ -447,9 +447,9 @@ unwind_stack_for_thread( unwinder->debug_offsets.thread_state.current_exception + sizeof(uintptr_t)); uintptr_t exc_state_addr = - *current_tstate + unwinder->debug_offsets.thread_state.exc_state; + *current_tstate + (uintptr_t)unwinder->debug_offsets.thread_state.exc_state; uintptr_t exc_value_offset = - unwinder->debug_offsets.err_stackitem.exc_value; + (uintptr_t)unwinder->debug_offsets.err_stackitem.exc_value; uintptr_t previous_item_offset = exc_value_offset + sizeof(uintptr_t); _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
