From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by sourceware.org (Postfix) with ESMTPS id 82B0E388E809 for ; Tue, 2 Jun 2020 13:32:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 82B0E388E809 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=andrew.burgess@embecosm.com Received: by mail-wr1-x42b.google.com with SMTP id j10so3419888wrw.8 for ; Tue, 02 Jun 2020 06:32:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qYwZeqvKIUhnyE+bDsy2hkCQnX6bakk+4ewz4YqWJNQ=; b=BFNdogOMqHv+ITepbescSJWe4gdLRhAqKa00utA1Qgzmvtjb73TqCrBzwufXBap24O NlN9dsz/c4jvAQkf46IN/czNf00WnWbNw18y7IJ2AuCeSfDHzOSZEtviBK4/etJdVBWk FS7hXEdu3bVFZF+ruR88MCm4m1Wv9epuivgVto/VHKjUMWaV4W/aVZ/CiPSWZ1b691nC rr6t9DR8MUt36zzom5bWbF2RTyt9j/ZY4t69086/9OtNdksMlwq5yHfWCe4J2xNSg1RL 8FR6WtWSoWJ2E7Wh2AzA/obxj23BHxqlAggUtDyIXBUV6YyulNfXcG5c9fzmBoU35Tpa 5x9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qYwZeqvKIUhnyE+bDsy2hkCQnX6bakk+4ewz4YqWJNQ=; b=mXvD6fB4IGpPvkp57nGD6NKKZK3YdSgndd0nQY+ybOs3m9hudv6aMA3WA214xVhRaV 2FCLxvgtGoa8G5PpkWQdtQcbsBQHpNZPJjNZIIiFXXyUYUyVrQtwAXx6uOhb8gBqWu6S 4egJTzJ5v9QY9FTYwt3WKFXYWB4FqKAMfqTjIrSoJ3RvdDXmh+XCHGR055HWJZtnzwoe T01J1/JTg6D70ezRajjm2gaQFfGg9bim3tkZ+Iq+G4tg7XsqsDs9SiIMufq2RSi7tAEd xQqm4LZwj5q8FEQYejyysWSbkLoTnAwiefwOdtUcViXw8S6l5TqEEsU5EHPu/GMEGcSY sJHQ== X-Gm-Message-State: AOAM533XksGCRfhifDaM7L87qIWK6VGaQicSD1VIGHkCrieSxQDJY2dT SSnBTyGtbXl2do8YpsWDEDQPwK56Wu8= X-Google-Smtp-Source: ABdhPJwX/76QyZEZeUW+AFJ8/m5TivDMpGvlWTjep9XIDuEmYF2D2rtcDf/fl6m9ucLoajG9Y0fp5A== X-Received: by 2002:a5d:40d0:: with SMTP id b16mr26102556wrq.218.1591104759958; Tue, 02 Jun 2020 06:32:39 -0700 (PDT) Received: from localhost (host86-128-12-16.range86-128.btcentralplus.com. [86.128.12.16]) by smtp.gmail.com with ESMTPSA id a16sm3896915wrx.8.2020.06.02.06.32.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2020 06:32:38 -0700 (PDT) From: Andrew Burgess To: gdb-patches@sourceware.org Subject: [PATCH 4/9] gdb: Convert language la_word_break_characters field to a method Date: Tue, 2 Jun 2020 14:32:22 +0100 Message-Id: <3e984a86132c18a59ebc474552fb6c1f152616e3.1591104079.git.andrew.burgess@embecosm.com> X-Mailer: git-send-email 2.25.4 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Jun 2020 13:32:43 -0000 This commit changes the language_data::la_word_break_characters function pointer member variable into a member function of language_defn. There should be no user visible changes after this commit. gdb/ChangeLog: * ada-lang.c (ada_get_gdb_completer_word_break_characters): Delete. (ada_language_data): Delete la_word_break_characters initializer. (ada_language::word_break_characters): New member function. * c-lang.c (c_language_data): Delete la_word_break_characters initializer. (cplus_language_data): Likewise. (asm_language_data): Likewise. (minimal_language_data): Likewise. * completer.c: Update global comment. (advance_to_expression_complete_word_point): Update call to word_break_characters. (complete_files_symbols): Likewise. (complete_line_internal_1): Likewise. (default_completer_handle_brkchars): Likewise. (skip_quoted_chars): Likewise. * d-lang.c (d_language_data): Delete la_word_break_characters initializer. * f-lang.c (f_word_break_characters): Delete. (f_language_data): Delete la_word_break_characters initializer. (f_language::word_break_characters): New member function. * go-lang.c (go_language_data): Delete la_word_break_characters initializer. * language.c (unknown_language_data): Likewise. (auto_language_data): Likewise. * language.h (default_word_break_characters): Move declaration to earlier in the file. (language_data): Delete la_word_break_characters field. (language_defn::word_break_characters): New member function. * m2-lang.c (m2_language_data): Delete la_word_break_characters initializer. * objc-lang.c (objc_language_data): Likewise. * opencl-lang.c (opencl_language_data): Likewise. * p-lang.c (pascal_language_data): Likewise. * rust-lang.c (rust_language_data): Likewise. --- gdb/ChangeLog | 37 +++++++++++++++++++++++++++++++++++ gdb/ada-lang.c | 14 +++++++------- gdb/c-lang.c | 4 ---- gdb/completer.c | 12 ++++++------ gdb/d-lang.c | 1 - gdb/f-lang.c | 49 +++++++++++++++++++++++------------------------ gdb/go-lang.c | 1 - gdb/language.c | 2 -- gdb/language.h | 15 +++++++++------ gdb/m2-lang.c | 1 - gdb/objc-lang.c | 1 - gdb/opencl-lang.c | 1 - gdb/p-lang.c | 1 - gdb/rust-lang.c | 1 - 14 files changed, 83 insertions(+), 57 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 8747501fa17..abb95a22375 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -488,12 +488,6 @@ add_angle_brackets (const char *str) return string_printf ("<%s>", str); } -static const char * -ada_get_gdb_completer_word_break_characters (void) -{ - return ada_completer_word_break_characters; -} - /* la_watch_location_expression for Ada. */ static gdb::unique_xmalloc_ptr @@ -13928,7 +13922,6 @@ extern const struct language_data ada_language_data = ada_op_print_tab, /* expression operators for printing */ 0, /* c-style arrays */ 1, /* String lower bound */ - ada_get_gdb_completer_word_break_characters, ada_collect_symbol_completion_matches, ada_watch_location_expression, &ada_varobj_ops, @@ -14116,6 +14109,13 @@ class ada_language : public language_defn ada_print_type (type, varstring, stream, show, level, flags); } + /* See language.h. */ + + const char *word_break_characters (void) const override + { + return ada_completer_word_break_characters; + } + protected: /* See language.h. */ diff --git a/gdb/c-lang.c b/gdb/c-lang.c index 3a0bb209535..44aa544337a 100644 --- a/gdb/c-lang.c +++ b/gdb/c-lang.c @@ -914,7 +914,6 @@ extern const struct language_data c_language_data = c_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &c_varobj_ops, @@ -1028,7 +1027,6 @@ extern const struct language_data cplus_language_data = c_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &cplus_varobj_ops, @@ -1230,7 +1228,6 @@ extern const struct language_data asm_language_data = c_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, @@ -1299,7 +1296,6 @@ extern const struct language_data minimal_language_data = c_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/completer.c b/gdb/completer.c index ad33b98c696..a2c2f7ea549 100644 --- a/gdb/completer.c +++ b/gdb/completer.c @@ -155,7 +155,7 @@ enum explicit_location_match_type but it does affect how much stuff M-? lists. (2) If one of the matches contains a word break character, readline will quote it. That's why we switch between - current_language->la_word_break_characters() and + current_language->word_break_characters () and gdb_completer_command_word_break_characters. I'm not sure when we need this behavior (perhaps for funky characters in C++ symbols?). */ @@ -448,7 +448,7 @@ const char * advance_to_expression_complete_word_point (completion_tracker &tracker, const char *text) { - const char *brk_chars = current_language->la_word_break_characters (); + const char *brk_chars = current_language->word_break_characters (); return advance_to_completion_word (tracker, brk_chars, text); } @@ -573,7 +573,7 @@ complete_files_symbols (completion_tracker &tracker, colon = p; symbol_start = p + 1; } - else if (strchr (current_language->la_word_break_characters(), *p)) + else if (strchr (current_language->word_break_characters (), *p)) symbol_start = p + 1; } @@ -1348,7 +1348,7 @@ complete_line_internal_1 (completion_tracker &tracker, strings, which leaves out the '-' and '.' character used in some commands. */ set_rl_completer_word_break_characters - (current_language->la_word_break_characters()); + (current_language->word_break_characters ()); /* Decide whether to complete on a list of gdb commands or on symbols. */ @@ -1964,7 +1964,7 @@ default_completer_handle_brkchars (struct cmd_list_element *ignore, const char *text, const char *word) { set_rl_completer_word_break_characters - (current_language->la_word_break_characters ()); + (current_language->word_break_characters ()); } /* See definition in completer.h. */ @@ -2473,7 +2473,7 @@ skip_quoted_chars (const char *str, const char *quotechars, quotechars = gdb_completer_quote_characters; if (breakchars == NULL) - breakchars = current_language->la_word_break_characters(); + breakchars = current_language->word_break_characters (); for (scan = str; *scan != '\0'; scan++) { diff --git a/gdb/d-lang.c b/gdb/d-lang.c index 4842d4b9d69..56feda1268f 100644 --- a/gdb/d-lang.c +++ b/gdb/d-lang.c @@ -157,7 +157,6 @@ extern const struct language_data d_language_data = d_op_print_tab, /* Expression operators for printing. */ 1, /* C-style arrays. */ 0, /* String lower bound. */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/f-lang.c b/gdb/f-lang.c index 42e6c988f3d..27495cf63f1 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -165,30 +165,6 @@ enum f_primitive_types { nr_f_primitive_types }; -/* Remove the modules separator :: from the default break list. */ - -static const char * -f_word_break_characters (void) -{ - static char *retval; - - if (!retval) - { - char *s; - - retval = xstrdup (default_word_break_characters ()); - s = strchr (retval, ':'); - if (s) - { - char *last_char = &s[strlen (s) - 1]; - - *s = *last_char; - *last_char = 0; - } - } - return retval; -} - /* Consider the modules separator :: as a valid symbol name character class. */ @@ -617,7 +593,6 @@ extern const struct language_data f_language_data = f_op_print_tab, /* expression operators for printing */ 0, /* arrays are first-class (not c-style) */ 1, /* String lower bound */ - f_word_break_characters, f_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, @@ -699,6 +674,30 @@ class f_language : public language_defn f_print_type (type, varstring, stream, show, level, flags); } + /* See language.h. This just returns default set of word break + characters but with the modules separator `::' removed. */ + + const char *word_break_characters (void) const override + { + static char *retval; + + if (!retval) + { + char *s; + + retval = xstrdup (language_defn::word_break_characters ()); + s = strchr (retval, ':'); + if (s) + { + char *last_char = &s[strlen (s) - 1]; + + *s = *last_char; + *last_char = 0; + } + } + return retval; + } + protected: /* See language.h. */ diff --git a/gdb/go-lang.c b/gdb/go-lang.c index d49d9e5fb17..7ea1d6165a6 100644 --- a/gdb/go-lang.c +++ b/gdb/go-lang.c @@ -542,7 +542,6 @@ extern const struct language_data go_language_data = go_op_print_tab, /* Expression operators for printing. */ 1, /* C-style arrays. */ 0, /* String lower bound. */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/language.c b/gdb/language.c index 363481bc9d5..167a68c9203 100644 --- a/gdb/language.c +++ b/gdb/language.c @@ -779,7 +779,6 @@ extern const struct language_data unknown_language_data = unk_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, @@ -852,7 +851,6 @@ extern const struct language_data auto_language_data = unk_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/language.h b/gdb/language.h index 7e5837fdef3..8c6f7e3fb13 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -169,6 +169,9 @@ struct language_pass_by_ref_info bool destructible = true; }; +/* Splitting strings into words. */ +extern const char *default_word_break_characters (void); + /* Structure tying together assorted information about a language. As we move over from the old structure based languages to a class @@ -316,9 +319,6 @@ struct language_data /* Index to use for extracting the first element of a string. */ char string_lower_bound; - /* The list of characters forming word boundaries. */ - const char *(*la_word_break_characters) (void); - /* Add to the completion tracker all symbols which are possible completions for TEXT. WORD is the entire command on which the completion is being made. If CODE is TYPE_CODE_UNDEF, then all @@ -529,6 +529,12 @@ struct language_defn : language_data return nullptr; } + /* The list of characters forming word boundaries. */ + virtual const char *word_break_characters (void) const + { + return default_word_break_characters (); + } + /* List of all known languages. */ static const struct language_defn *languages[nr_languages]; @@ -691,9 +697,6 @@ extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc); extern char *language_demangle (const struct language_defn *current_language, const char *mangled, int options); -/* Splitting strings into words. */ -extern const char *default_word_break_characters (void); - /* Return information about whether TYPE should be passed (and returned) by reference at the language level. */ struct language_pass_by_ref_info language_pass_by_reference (struct type *type); diff --git a/gdb/m2-lang.c b/gdb/m2-lang.c index bffe6c96d57..f9ed4897a1d 100644 --- a/gdb/m2-lang.c +++ b/gdb/m2-lang.c @@ -376,7 +376,6 @@ extern const struct language_data m2_language_data = m2_op_print_tab, /* expression operators for printing */ 0, /* arrays are first-class (not c-style) */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/objc-lang.c b/gdb/objc-lang.c index 9a77f6cb96d..3bd71896aef 100644 --- a/gdb/objc-lang.c +++ b/gdb/objc-lang.c @@ -351,7 +351,6 @@ extern const struct language_data objc_language_data = objc_op_print_tab, /* Expression operators for printing */ 1, /* C-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/opencl-lang.c b/gdb/opencl-lang.c index 377c550d5a6..3f0fb1fa948 100644 --- a/gdb/opencl-lang.c +++ b/gdb/opencl-lang.c @@ -1030,7 +1030,6 @@ extern const struct language_data opencl_language_data = c_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/p-lang.c b/gdb/p-lang.c index 61089bd1399..cc49f5bef0c 100644 --- a/gdb/p-lang.c +++ b/gdb/p-lang.c @@ -407,7 +407,6 @@ extern const struct language_data pascal_language_data = pascal_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, c_watch_location_expression, &default_varobj_ops, diff --git a/gdb/rust-lang.c b/gdb/rust-lang.c index 74ddcc17095..b33740b9620 100644 --- a/gdb/rust-lang.c +++ b/gdb/rust-lang.c @@ -2062,7 +2062,6 @@ extern const struct language_data rust_language_data = c_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - default_word_break_characters, default_collect_symbol_completion_matches, rust_watch_location_expression, &default_varobj_ops, -- 2.25.4