2009-09-25 Michael Eager <eager@eagercon.com>
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / charset.c
CommitLineData
0dcd613f
AC
1/* This testcase is part of GDB, the GNU debugger.
2
0fb0cc75 3 Copyright 2001, 2004, 2007, 2008, 2009 Free Software Foundation, Inc.
0dcd613f
AC
4
5 Contributed by Red Hat, originally written by Jim Blandy.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
0dcd613f
AC
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
a9762ec7 16
0dcd613f 17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>.
0dcd613f
AC
19
20 Please email any bugs, comments, and/or additions to this file to:
21 bug-gdb@gnu.org */
dea97812 22
dea97812
KB
23/* X_string is a null-terminated string in the X charset whose
24 elements are as follows. X should be the name the `set charset'
25 command uses for the character set, in lower-case, with any
26 non-identifier characters replaced with underscores. Where a
27 character set doesn't have the given character, the string should
28 contain the character 'x'.
29
30 [0] --- the `alert' character, '\a'
31 [1] --- the `backspace' character, '\b'
0dcd613f
AC
32 [2] --- the `form feed' character, '\f'
33 [3] --- the `line feed' character, '\n'
34 [4] --- the `carriage return' character, '\r'
35 [5] --- the `horizontal tab' character, '\t'
36 [6] --- the `vertical tab' character, '\v'
37 [7 .. 32] --- the uppercase letters A-Z
38 [33 .. 58] --- the lowercase letters a-z
39 [59 .. 68] --- the digits 0-9
40 [69] --- the `cent' character
41 [70] --- a control character with no defined backslash escape
dea97812
KB
42
43 Feel free to extend these as you like. */
44
0dcd613f 45#define NUM_CHARS (71)
dea97812
KB
46
47char ascii_string[NUM_CHARS];
48char iso_8859_1_string[NUM_CHARS];
49char ebcdic_us_string[NUM_CHARS];
50char ibm1047_string[NUM_CHARS];
51
6c7a06a3
TT
52/* We make a phony wchar_t and then pretend that this platform uses
53 UCS-4 (or UCS-2, depending on the size -- same difference for the
54 purposes of this test). */
55typedef unsigned int wchar_t;
56wchar_t ucs_4_string[NUM_CHARS];
57
58/* We also define a couple phony types for testing the u'' and U''
59 support. It is ok if these have the wrong size on some platforms
60 -- the test case will skip the tests in that case. */
61typedef unsigned short char16_t;
62typedef unsigned int char32_t;
63
64/* Make sure to use the typedefs. */
65char16_t uvar;
66char32_t Uvar;
dea97812 67
85e306ed
TT
68/* A typedef to a typedef should also work. */
69typedef wchar_t my_wchar_t;
70my_wchar_t myvar;
71
dea97812
KB
72void
73init_string (char string[],
74 char x,
0dcd613f 75 char alert, char backspace, char form_feed,
dea97812
KB
76 char line_feed, char carriage_return, char horizontal_tab,
77 char vertical_tab, char cent, char misc_ctrl)
78{
6c7a06a3
TT
79 int i;
80
81 for (i = 0; i < NUM_CHARS; ++i)
82 string[i] = x;
dea97812
KB
83 string[0] = alert;
84 string[1] = backspace;
0dcd613f
AC
85 string[2] = form_feed;
86 string[3] = line_feed;
87 string[4] = carriage_return;
88 string[5] = horizontal_tab;
89 string[6] = vertical_tab;
90 string[69] = cent;
91 string[70] = misc_ctrl;
dea97812
KB
92}
93
94
95void
96fill_run (char string[], int start, int len, int first)
97{
98 int i;
99
100 for (i = 0; i < len; i++)
101 string[start + i] = first + i;
102}
103
104
6c7a06a3
TT
105void
106init_ucs4 ()
107{
108 int i;
109
110 for (i = 0; i < NUM_CHARS; ++i)
111 ucs_4_string[i] = iso_8859_1_string[i] & 0xff;
112}
113
dea97812
KB
114int main ()
115{
116#ifdef usestubs
117 set_debug_traps();
118 breakpoint();
119#endif
dea97812
KB
120 /* Initialize ascii_string. */
121 init_string (ascii_string,
122 120,
0dcd613f 123 7, 8, 12,
dea97812
KB
124 10, 13, 9,
125 11, 120, 17);
0dcd613f
AC
126 fill_run (ascii_string, 7, 26, 65);
127 fill_run (ascii_string, 33, 26, 97);
128 fill_run (ascii_string, 59, 10, 48);
dea97812
KB
129
130 /* Initialize iso_8859_1_string. */
131 init_string (iso_8859_1_string,
132 120,
0dcd613f 133 7, 8, 12,
dea97812
KB
134 10, 13, 9,
135 11, 162, 17);
0dcd613f
AC
136 fill_run (iso_8859_1_string, 7, 26, 65);
137 fill_run (iso_8859_1_string, 33, 26, 97);
138 fill_run (iso_8859_1_string, 59, 10, 48);
dea97812
KB
139
140 /* Initialize ebcdic_us_string. */
141 init_string (ebcdic_us_string,
142 167,
0dcd613f 143 47, 22, 12,
dea97812
KB
144 37, 13, 5,
145 11, 74, 17);
146 /* In EBCDIC, the upper-case letters are broken into three separate runs. */
0dcd613f
AC
147 fill_run (ebcdic_us_string, 7, 9, 193);
148 fill_run (ebcdic_us_string, 16, 9, 209);
149 fill_run (ebcdic_us_string, 25, 8, 226);
dea97812 150 /* The lower-case letters are, too. */
0dcd613f
AC
151 fill_run (ebcdic_us_string, 33, 9, 129);
152 fill_run (ebcdic_us_string, 42, 9, 145);
153 fill_run (ebcdic_us_string, 51, 8, 162);
dea97812 154 /* The digits, at least, are contiguous. */
0dcd613f 155 fill_run (ebcdic_us_string, 59, 10, 240);
dea97812
KB
156
157 /* Initialize ibm1047_string. */
158 init_string (ibm1047_string,
159 167,
0dcd613f 160 47, 22, 12,
dea97812
KB
161 37, 13, 5,
162 11, 74, 17);
163 /* In EBCDIC, the upper-case letters are broken into three separate runs. */
0dcd613f
AC
164 fill_run (ibm1047_string, 7, 9, 193);
165 fill_run (ibm1047_string, 16, 9, 209);
166 fill_run (ibm1047_string, 25, 8, 226);
dea97812 167 /* The lower-case letters are, too. */
0dcd613f
AC
168 fill_run (ibm1047_string, 33, 9, 129);
169 fill_run (ibm1047_string, 42, 9, 145);
170 fill_run (ibm1047_string, 51, 8, 162);
dea97812 171 /* The digits, at least, are contiguous. */
0dcd613f 172 fill_run (ibm1047_string, 59, 10, 240);
dea97812 173
6c7a06a3
TT
174 init_ucs4 ();
175
85e306ed
TT
176 myvar = ucs_4_string[7];
177
6c7a06a3 178 return 0; /* all strings initialized */
dea97812 179}
This page took 0.681064 seconds and 4 git commands to generate.