From 21dfef474cffe4842b2bf4d93fb8d1c7c8f6ab6c Mon Sep 17 00:00:00 2001 From: ParadoxV5 Date: Mon, 5 Aug 2024 14:39:09 -0600 Subject: [PATCH] =?UTF-8?q?Re=C3=ABnable=20ATTRIBUTE=5FFORMAT=20on=20DBUG?= =?UTF-8?q?=5FPRINT=20&=20t/eprint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (Re)ënable the `ATTRIBUTE_FORMAT` on `my_dbug.h`’s `_db_doprnt_` (better known by its frontend `DBUG_PRINT`) and `ma_recovery_util.h`’s `tprint` & `eprint` to leverage GCC `-Wformat` checking c4bf4b7aef introduced `WAITING_FOR_BUGFIX_TO_VSPRINTF` to conditionally (read: temporarily) disable their `ATTRIBUTE_FORMAT`s. Whatever that bug was aside, MDEV-21978 Zulip suggested that the preference for `%b` was probably intended, although c52e62a76f reverted the one in `storage/maria/ma_recovery.c` back to `%s`. All extension migrations (e.g., `%b` ➡ `%sB`) in this commit were on `DBUG_PRINT`. --- dbug/dbug.c | 3 ++- include/my_dbug.h | 6 +----- sql/log_event.cc | 4 ++-- sql/protocol.cc | 4 ++-- storage/maria/ma_recovery_util.h | 5 ----- 5 files changed, 7 insertions(+), 15 deletions(-) diff --git a/dbug/dbug.c b/dbug/dbug.c index ac645c64454..857de55b713 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -298,7 +298,8 @@ static void Indent(CODE_STATE *cs, int indent); static void DbugFlush(CODE_STATE *); static void DbugExit(const char *why); static const char *DbugStrTok(const char *s); -static void DbugVfprintf(FILE *stream, const char* format, va_list args); +static void DbugVfprintf(FILE *stream, const char* format, va_list args) + ATTRIBUTE_FORMAT(printf, 2, 0); /* * Miscellaneous printf format strings. diff --git a/include/my_dbug.h b/include/my_dbug.h index 02caadbff48..0c0dabef64e 100644 --- a/include/my_dbug.h +++ b/include/my_dbug.h @@ -51,11 +51,7 @@ extern void _db_enter_(const char *_func_, const char *_file_, uint _line_, struct _db_stack_frame_ *_stack_frame_); extern void _db_return_(struct _db_stack_frame_ *_stack_frame_); extern int _db_pargs_(uint _line_,const char *keyword); -extern void _db_doprnt_(const char *format,...) -#ifdef WAITING_FOR_BUGFIX_TO_VSPRINTF - ATTRIBUTE_FORMAT(printf, 1, 2) -#endif - ; +extern void _db_doprnt_(const char *format, ...) ATTRIBUTE_FORMAT(printf, 1, 2); extern void _db_dump_(uint _line_,const char *keyword, const unsigned char *memory, size_t length); extern void _db_end_(void); diff --git a/sql/log_event.cc b/sql/log_event.cc index c162f7058f0..424fa80fb00 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -3177,7 +3177,7 @@ Rows_log_event::Rows_log_event(const uchar *buf, uint event_len, uchar *ptr_after_width= (uchar*) ptr_width; DBUG_PRINT("debug", ("Reading from %p", ptr_after_width)); m_width= net_field_length(&ptr_after_width); - DBUG_PRINT("debug", ("m_width=%lu", m_width)); + DBUG_PRINT("debug", ("m_width=%u", m_width)); /* Avoid reading out of buffer */ if (ptr_after_width + (m_width + 7) / 8 > (uchar*)buf + event_len) @@ -3240,7 +3240,7 @@ Rows_log_event::Rows_log_event(const uchar *buf, uint event_len, DBUG_VOID_RETURN; } size_t const data_size= event_len - read_size; - DBUG_PRINT("info",("m_table_id: %llu m_flags: %d m_width: %lu data_size: %lu", + DBUG_PRINT("info",("m_table_id: %llu m_flags: %d m_width: %u data_size: %lu", m_table_id, m_flags, m_width, (ulong) data_size)); m_rows_buf= (uchar*) my_malloc(PSI_INSTRUMENT_ME, data_size, MYF(MY_WME)); diff --git a/sql/protocol.cc b/sql/protocol.cc index d7c52a08338..0af8598cc59 100644 --- a/sql/protocol.cc +++ b/sql/protocol.cc @@ -1485,7 +1485,7 @@ bool Protocol_text::store_str(const char *from, size_t length, CHARSET_INFO *fromcs, CHARSET_INFO *tocs) { #ifndef DBUG_OFF - DBUG_PRINT("info", ("Protocol_text::store field %u : %.*b", field_pos, + DBUG_PRINT("info", ("Protocol_text::store field %u : %.*sB", field_pos, (int) length, (length == 0 ? "" : from))); DBUG_ASSERT(field_handlers == 0 || field_pos < field_count); DBUG_ASSERT(valid_handler(field_pos, PROTOCOL_SEND_STRING)); @@ -1501,7 +1501,7 @@ bool Protocol_text::store_numeric_zerofill_str(const char *from, { #ifndef DBUG_OFF DBUG_PRINT("info", - ("Protocol_text::store_numeric_zerofill_str field %u : %.*b", + ("Protocol_text::store_numeric_zerofill_str field %u : %.*sB", field_pos, (int) length, (length == 0 ? "" : from))); DBUG_ASSERT(field_handlers == 0 || field_pos < field_count); DBUG_ASSERT(valid_handler(field_pos, send_type)); diff --git a/storage/maria/ma_recovery_util.h b/storage/maria/ma_recovery_util.h index 39c16bc5dff..0b02f8e51cb 100644 --- a/storage/maria/ma_recovery_util.h +++ b/storage/maria/ma_recovery_util.h @@ -31,12 +31,7 @@ extern FILE *tracef; my_bool _ma_redo_not_needed_for_page(uint16 shortid, LSN lsn, pgcache_page_no_t page, my_bool index); -#ifdef WAITING_FOR_BUGFIX_TO_VSPRINTF void tprint(FILE *trace_file, const char *format, ...) ATTRIBUTE_FORMAT(printf, 2, 3); void eprint(FILE *trace_file, const char *format, ...) ATTRIBUTE_FORMAT(printf, 2, 3); -#else -void tprint(FILE *trace_file, const char *format, ...); -void eprint(FILE *trace_file, const char *format, ...); -#endif