From: Tiezhu Yang Date: Thu, 13 Jan 2022 03:11:39 +0000 (+0800) Subject: gdb: testsuite: make string[] type as char in gdb.base/charset.c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e31cf164b4c78246f59922a9122585dc4e23e860;p=binutils-gdb.git gdb: testsuite: make string[] type as char in gdb.base/charset.c This reverts the commit ff656e2e1cb1 ("gdb: testsuite: fix failed testcases in gdb.base/charset.exp"). The original test code has no problem. On an architecture where char is signed, then both 'A' and ebcdic_us_string[7] will yield -63, which makes the equality true. On an architecture where char is unsigned, then both 'A' and ebcdic_us_string[7] will yield 193, which also makes the equality true. The test cases only failed on LoongArch. The default type of char is signed char on LoongArch, like x86-64. But when use gdb print command on LoongArch, the default type of char is unsigned char, this is wrong, I will look into it later, sorry for that. On LoongArch: $ cat test_char.c #include int main() { char c1 = 193; unsigned char c2 = 193; printf("%d\n", c1); printf("%d\n", c1 == c2); return 0; } $ gcc test_char.c -o test_char $ ./test_char -63 0 (gdb) set target-charset EBCDIC-US (gdb) print 'A' $1 = 193 'A' (gdb) print /c 'A' $2 = 193 'A' (gdb) print /u 'A' $3 = 193 (gdb) print /d 'A' $4 = -63 (gdb) print /x 'A' $5 = 0xc1 Signed-off-by: Tiezhu Yang --- diff --git a/gdb/testsuite/gdb.base/charset.c b/gdb/testsuite/gdb.base/charset.c index dd66252c5e4..30c3fb42892 100644 --- a/gdb/testsuite/gdb.base/charset.c +++ b/gdb/testsuite/gdb.base/charset.c @@ -44,10 +44,10 @@ #define NUM_CHARS (71) -unsigned char ascii_string[NUM_CHARS]; -unsigned char iso_8859_1_string[NUM_CHARS]; -unsigned char ebcdic_us_string[NUM_CHARS]; -unsigned char ibm1047_string[NUM_CHARS]; +char ascii_string[NUM_CHARS]; +char iso_8859_1_string[NUM_CHARS]; +char ebcdic_us_string[NUM_CHARS]; +char ibm1047_string[NUM_CHARS]; #ifndef __cplusplus @@ -86,7 +86,7 @@ long long_array[3]; explicit casts or warnings. */ void -init_string (unsigned char string[], +init_string (char string[], unsigned char x, unsigned char alert, unsigned char backspace, @@ -115,7 +115,7 @@ init_string (unsigned char string[], void -fill_run (unsigned char string[], int start, int len, int first) +fill_run (char string[], int start, int len, int first) { int i;