[PATCH] gdb: fix color_option_def compile error (clang)

andrew@andrewoates.com andrew@andrewoates.com
Sat Feb 15 17:21:17 GMT 2025


From: Andrew Oates <andrew@andrewoates.com>

color_option_def was added in commit 6447969d0 ("Add an option with a
color type."), but not used.

The color_option_def constructor passes the wrong number of arguments
to the option_def constructor.  Since color_option_def is a template and
never actually instantiated, GCC does not fail to compile this.  clang
generates an error (see below).

This passes nullptr to the extra_literals_ option_def ctor argument,
which matches what filename_option_def above it does.

clang's generated error:
  ../../gdb/cli/cli-option.h:343:7: error: no matching constructor for initialization of 'option_def'
      : option_def (long_option_, var_color,
        ^           ~~~~~~~~~~~~~~~~~~~~~~~~
  ../../gdb/cli/cli-option.h:50:13: note: candidate constructor not viable: requires 8 arguments, but 7 were provided
    constexpr option_def (const char *name_,
              ^
  ../../gdb/cli/cli-option.h:37:8: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 7 were provided
  struct option_def
         ^
  ../../gdb/cli/cli-option.h:37:8: note: candidate constructor (the implicit move constructor) not viable: requires 1 argument, but 7 were provided
---
 gdb/cli/cli-option.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gdb/cli/cli-option.h b/gdb/cli/cli-option.h
index ac614c326d4..38dcd8219c5 100644
--- a/gdb/cli/cli-option.h
+++ b/gdb/cli/cli-option.h
@@ -340,7 +340,7 @@ struct color_option_def : option_def
 		    const char *set_doc_,
 		    const char *show_doc_ = nullptr,
 		    const char *help_doc_ = nullptr)
-    : option_def (long_option_, var_color,
+    : option_def (long_option_, var_color, nullptr,
 		  (erased_get_var_address_ftype *) get_var_address_cb_,
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
-- 
2.47.0



More information about the Gdb-patches mailing list