[binutils-gdb] [gdb] Rewrite error and warning emojis

Tom de Vries via Gdb-cvs <[email protected]>
Newsgroups gmane.comp.gdb.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=cf94c9060702ecd052d3972e3b138e11d7b2bc2d

commit cf94c9060702ecd052d3972e3b138e11d7b2bc2d
Author: Tom de Vries <[email protected]>
Date:   Wed Aug 12 23:18:20 2026 +0200

    [gdb] Rewrite error and warning emojis
    
    While working on PR34501 I realized that these two strings actually contain
    two unicode characters:
    ...
    static std::string warning_prefix = "⚠️ ";
    static std::string error_prefix = "❌️ ";
    ...
    
    Both the Warning Sign [1] and the Cross Mark [2] are followed by Variation
    Selector-16 (VS16) [3].
    
    To make this obvious, I decided to rewrite in a style that makes it explicit
    both which unicode characters are used, and how they are encoded:
    ...
    static std::string warning_prefix = u8"\u26A0\uFE0F ";
    ...
    
    In the process I found out that the Cross Mark doesn't need VS16, because its
    default presentation is already "Emoji" rather than "Text", so that one simply
    becomes:
    ...
    static std::string error_prefix = u8"\u274C ";
    ...
    
    AFAICT, this property (default presentation == "Emoji") can be verified by
    finding Cross Mark here [4] and checking that property Emoji_Presentation
    applies.
    
    Tested on x86_64-linux.
    
    Approved-By: Tom Tromey <[email protected]>
    
    [1] https://www.compart.com/en/unicode/U+26A0
    [2] https://www.compart.com/en/unicode/U+274C
    [3] https://www.compart.com/en/unicode/U+FE0F
    [4] https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-data.txt

Diff:
---
 gdb/cli/cli-style.c              | 15 +++++++++++----
 gdb/testsuite/gdb.base/style.exp |  2 +-
 2 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/gdb/cli/cli-style.c b/gdb/cli/cli-style.c
index 03a887232c7..5c175ee29ea 100644
--- a/gdb/cli/cli-style.c
+++ b/gdb/cli/cli-style.c
@@ -449,8 +449,12 @@ no_emojis ()
   emoji_styling = AUTO_BOOLEAN_FALSE;
 }
 
-/* Emoji warning prefix.  */
-static std::string warning_prefix = "⚠️ ";
+/* Emoji warning prefix:
+   - u26A0: Warning Sign: ⚠
+   - uFE0F: Variation Selector-16 (VS16)
+   The VS16 forces "Emoji" presentation.  It is needed because the default
+   presentation for Warning Sign is "Text".  Together, we get: ⚠️ .  */
+static std::string warning_prefix = u8"\u26A0\uFE0F ";
 
 /* Implement 'show style warning-prefix'.  */
 
@@ -471,8 +475,11 @@ print_warning_prefix (ui_file *file)
     gdb_puts (warning_prefix.c_str (), file);
 }
 
-/* Emoji error prefix.  */
-static std::string error_prefix = "❌️ ";
+/* Emoji error prefix:
+   - u274C: Cross Mark: ❌
+   No VS16 is needed because the default presentation for Cross Mark is
+   "Emoji".  */
+static std::string error_prefix = u8"\u274C ";
 
 /* Implement 'show style error-prefix'.  */
 
diff --git a/gdb/testsuite/gdb.base/style.exp b/gdb/testsuite/gdb.base/style.exp
index 8a49d1c5973..8d576ff00f1 100644
--- a/gdb/testsuite/gdb.base/style.exp
+++ b/gdb/testsuite/gdb.base/style.exp
@@ -335,7 +335,7 @@ proc run_style_tests { } {
 	gdb_test_no_output "set host-charset UTF-8"
 	# Chosen since it will print an error.
 	gdb_test "maint translate-address" \
-	    "❌️ requires argument.*" \
+	    "❌ requires argument.*" \
 	    "emoji output"
 
 	gdb_test_no_output "set style error-prefix abcd:" \
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.