Commit | Line | Data |
---|---|---|
ed3ef339 DE |
1 | /* Scheme interface to architecture. |
2 | ||
e2882c85 | 3 | Copyright (C) 2014-2018 Free Software Foundation, Inc. |
ed3ef339 DE |
4 | |
5 | This file is part of GDB. | |
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 | |
9 | the Free Software Foundation; either version 3 of the License, or | |
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. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | /* See README file in this directory for implementation notes, coding | |
21 | conventions, et.al. */ | |
22 | ||
23 | #include "defs.h" | |
24 | #include "charset.h" | |
25 | #include "gdbarch.h" | |
26 | #include "arch-utils.h" | |
27 | #include "guile-internal.h" | |
28 | ||
29 | /* The <gdb:arch> smob. | |
30 | The typedef for this struct is in guile-internal.h. */ | |
31 | ||
32 | struct _arch_smob | |
33 | { | |
34 | /* This always appears first. */ | |
35 | gdb_smob base; | |
36 | ||
37 | struct gdbarch *gdbarch; | |
38 | }; | |
39 | ||
40 | static const char arch_smob_name[] = "gdb:arch"; | |
41 | ||
42 | /* The tag Guile knows the arch smob by. */ | |
43 | static scm_t_bits arch_smob_tag; | |
44 | ||
45 | static struct gdbarch_data *arch_object_data = NULL; | |
46 | ||
47 | static int arscm_is_arch (SCM); | |
48 | \f | |
49 | /* Administrivia for arch smobs. */ | |
50 | ||
ed3ef339 DE |
51 | /* The smob "print" function for <gdb:arch>. */ |
52 | ||
53 | static int | |
54 | arscm_print_arch_smob (SCM self, SCM port, scm_print_state *pstate) | |
55 | { | |
56 | arch_smob *a_smob = (arch_smob *) SCM_SMOB_DATA (self); | |
57 | struct gdbarch *gdbarch = a_smob->gdbarch; | |
58 | ||
59 | gdbscm_printf (port, "#<%s", arch_smob_name); | |
60 | gdbscm_printf (port, " %s", gdbarch_bfd_arch_info (gdbarch)->printable_name); | |
61 | scm_puts (">", port); | |
62 | ||
63 | scm_remember_upto_here_1 (self); | |
64 | ||
65 | /* Non-zero means success. */ | |
66 | return 1; | |
67 | } | |
68 | ||
69 | /* Low level routine to create a <gdb:arch> object for GDBARCH. */ | |
70 | ||
71 | static SCM | |
72 | arscm_make_arch_smob (struct gdbarch *gdbarch) | |
73 | { | |
74 | arch_smob *a_smob = (arch_smob *) | |
75 | scm_gc_malloc (sizeof (arch_smob), arch_smob_name); | |
76 | SCM a_scm; | |
77 | ||
78 | a_smob->gdbarch = gdbarch; | |
79 | a_scm = scm_new_smob (arch_smob_tag, (scm_t_bits) a_smob); | |
80 | gdbscm_init_gsmob (&a_smob->base); | |
81 | ||
82 | return a_scm; | |
83 | } | |
84 | ||
85 | /* Return the gdbarch field of A_SMOB. */ | |
86 | ||
87 | struct gdbarch * | |
88 | arscm_get_gdbarch (arch_smob *a_smob) | |
89 | { | |
90 | return a_smob->gdbarch; | |
91 | } | |
92 | ||
93 | /* Return non-zero if SCM is an architecture smob. */ | |
94 | ||
95 | static int | |
96 | arscm_is_arch (SCM scm) | |
97 | { | |
98 | return SCM_SMOB_PREDICATE (arch_smob_tag, scm); | |
99 | } | |
100 | ||
101 | /* (arch? object) -> boolean */ | |
102 | ||
103 | static SCM | |
104 | gdbscm_arch_p (SCM scm) | |
105 | { | |
106 | return scm_from_bool (arscm_is_arch (scm)); | |
107 | } | |
108 | ||
109 | /* Associates an arch_object with GDBARCH as gdbarch_data via the gdbarch | |
110 | post init registration mechanism (gdbarch_data_register_post_init). */ | |
111 | ||
112 | static void * | |
113 | arscm_object_data_init (struct gdbarch *gdbarch) | |
114 | { | |
115 | SCM arch_scm = arscm_make_arch_smob (gdbarch); | |
116 | ||
117 | /* This object lasts the duration of the GDB session, so there is no | |
118 | call to scm_gc_unprotect_object for it. */ | |
119 | scm_gc_protect_object (arch_scm); | |
120 | ||
121 | return (void *) arch_scm; | |
122 | } | |
123 | ||
124 | /* Return the <gdb:arch> object corresponding to GDBARCH. | |
125 | The object is cached in GDBARCH so this is simple. */ | |
126 | ||
127 | SCM | |
128 | arscm_scm_from_arch (struct gdbarch *gdbarch) | |
129 | { | |
130 | SCM a_scm = (SCM) gdbarch_data (gdbarch, arch_object_data); | |
131 | ||
132 | return a_scm; | |
133 | } | |
134 | ||
135 | /* Return the <gdb:arch> smob in SELF. | |
136 | Throws an exception if SELF is not a <gdb:arch> object. */ | |
137 | ||
138 | static SCM | |
139 | arscm_get_arch_arg_unsafe (SCM self, int arg_pos, const char *func_name) | |
140 | { | |
141 | SCM_ASSERT_TYPE (arscm_is_arch (self), self, arg_pos, func_name, | |
142 | arch_smob_name); | |
143 | ||
144 | return self; | |
145 | } | |
146 | ||
147 | /* Return a pointer to the arch smob of SELF. | |
148 | Throws an exception if SELF is not a <gdb:arch> object. */ | |
149 | ||
150 | arch_smob * | |
151 | arscm_get_arch_smob_arg_unsafe (SCM self, int arg_pos, const char *func_name) | |
152 | { | |
153 | SCM a_scm = arscm_get_arch_arg_unsafe (self, arg_pos, func_name); | |
154 | arch_smob *a_smob = (arch_smob *) SCM_SMOB_DATA (a_scm); | |
155 | ||
156 | return a_smob; | |
157 | } | |
158 | \f | |
159 | /* Arch methods. */ | |
160 | ||
161 | /* (current-arch) -> <gdb:arch> | |
162 | Return the architecture of the currently selected stack frame, | |
163 | if there is one, or the current target if there isn't. */ | |
164 | ||
165 | static SCM | |
166 | gdbscm_current_arch (void) | |
167 | { | |
168 | return arscm_scm_from_arch (get_current_arch ()); | |
169 | } | |
170 | ||
171 | /* (arch-name <gdb:arch>) -> string | |
172 | Return the name of the architecture as a string value. */ | |
173 | ||
174 | static SCM | |
175 | gdbscm_arch_name (SCM self) | |
176 | { | |
177 | arch_smob *a_smob | |
178 | = arscm_get_arch_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME); | |
179 | struct gdbarch *gdbarch = a_smob->gdbarch; | |
180 | const char *name; | |
181 | ||
182 | name = (gdbarch_bfd_arch_info (gdbarch))->printable_name; | |
183 | ||
184 | return gdbscm_scm_from_c_string (name); | |
185 | } | |
186 | ||
187 | /* (arch-charset <gdb:arch>) -> string */ | |
188 | ||
189 | static SCM | |
190 | gdbscm_arch_charset (SCM self) | |
191 | { | |
192 | arch_smob *a_smob | |
193 | =arscm_get_arch_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME); | |
194 | struct gdbarch *gdbarch = a_smob->gdbarch; | |
195 | ||
196 | return gdbscm_scm_from_c_string (target_charset (gdbarch)); | |
197 | } | |
198 | ||
199 | /* (arch-wide-charset <gdb:arch>) -> string */ | |
200 | ||
201 | static SCM | |
202 | gdbscm_arch_wide_charset (SCM self) | |
203 | { | |
204 | arch_smob *a_smob | |
205 | = arscm_get_arch_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME); | |
206 | struct gdbarch *gdbarch = a_smob->gdbarch; | |
207 | ||
208 | return gdbscm_scm_from_c_string (target_wide_charset (gdbarch)); | |
209 | } | |
210 | \f | |
211 | /* Builtin types. | |
212 | ||
213 | The order the types are defined here follows the order in | |
214 | struct builtin_type. */ | |
215 | ||
216 | /* Helper routine to return a builtin type for <gdb:arch> object SELF. | |
217 | OFFSET is offsetof (builtin_type, the_type). | |
218 | Throws an exception if SELF is not a <gdb:arch> object. */ | |
219 | ||
220 | static const struct builtin_type * | |
221 | gdbscm_arch_builtin_type (SCM self, const char *func_name) | |
222 | { | |
223 | arch_smob *a_smob | |
224 | = arscm_get_arch_smob_arg_unsafe (self, SCM_ARG1, func_name); | |
225 | struct gdbarch *gdbarch = a_smob->gdbarch; | |
226 | ||
227 | return builtin_type (gdbarch); | |
228 | } | |
229 | ||
230 | /* (arch-void-type <gdb:arch>) -> <gdb:type> */ | |
231 | ||
232 | static SCM | |
233 | gdbscm_arch_void_type (SCM self) | |
234 | { | |
235 | struct type *type | |
236 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_void; | |
237 | ||
238 | return tyscm_scm_from_type (type); | |
239 | } | |
240 | ||
241 | /* (arch-char-type <gdb:arch>) -> <gdb:type> */ | |
242 | ||
243 | static SCM | |
244 | gdbscm_arch_char_type (SCM self) | |
245 | { | |
246 | struct type *type | |
247 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_char; | |
248 | ||
249 | return tyscm_scm_from_type (type); | |
250 | } | |
251 | ||
252 | /* (arch-short-type <gdb:arch>) -> <gdb:type> */ | |
253 | ||
254 | static SCM | |
255 | gdbscm_arch_short_type (SCM self) | |
256 | { | |
257 | struct type *type | |
258 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_short; | |
259 | ||
260 | return tyscm_scm_from_type (type); | |
261 | } | |
262 | ||
263 | /* (arch-int-type <gdb:arch>) -> <gdb:type> */ | |
264 | ||
265 | static SCM | |
266 | gdbscm_arch_int_type (SCM self) | |
267 | { | |
268 | struct type *type | |
269 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_int; | |
270 | ||
271 | return tyscm_scm_from_type (type); | |
272 | } | |
273 | ||
274 | /* (arch-long-type <gdb:arch>) -> <gdb:type> */ | |
275 | ||
276 | static SCM | |
277 | gdbscm_arch_long_type (SCM self) | |
278 | { | |
279 | struct type *type | |
280 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_long; | |
281 | ||
282 | return tyscm_scm_from_type (type); | |
283 | } | |
284 | ||
285 | /* (arch-schar-type <gdb:arch>) -> <gdb:type> */ | |
286 | ||
287 | static SCM | |
288 | gdbscm_arch_schar_type (SCM self) | |
289 | { | |
290 | struct type *type | |
291 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_signed_char; | |
292 | ||
293 | return tyscm_scm_from_type (type); | |
294 | } | |
295 | ||
296 | /* (arch-uchar-type <gdb:arch>) -> <gdb:type> */ | |
297 | ||
298 | static SCM | |
299 | gdbscm_arch_uchar_type (SCM self) | |
300 | { | |
301 | struct type *type | |
302 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_unsigned_char; | |
303 | ||
304 | return tyscm_scm_from_type (type); | |
305 | } | |
306 | ||
307 | /* (arch-ushort-type <gdb:arch>) -> <gdb:type> */ | |
308 | ||
309 | static SCM | |
310 | gdbscm_arch_ushort_type (SCM self) | |
311 | { | |
312 | struct type *type | |
313 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_unsigned_short; | |
314 | ||
315 | return tyscm_scm_from_type (type); | |
316 | } | |
317 | ||
318 | /* (arch-uint-type <gdb:arch>) -> <gdb:type> */ | |
319 | ||
320 | static SCM | |
321 | gdbscm_arch_uint_type (SCM self) | |
322 | { | |
323 | struct type *type | |
324 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_unsigned_int; | |
325 | ||
326 | return tyscm_scm_from_type (type); | |
327 | } | |
328 | ||
329 | /* (arch-ulong-type <gdb:arch>) -> <gdb:type> */ | |
330 | ||
331 | static SCM | |
332 | gdbscm_arch_ulong_type (SCM self) | |
333 | { | |
334 | struct type *type | |
335 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_unsigned_long; | |
336 | ||
337 | return tyscm_scm_from_type (type); | |
338 | } | |
339 | ||
340 | /* (arch-float-type <gdb:arch>) -> <gdb:type> */ | |
341 | ||
342 | static SCM | |
343 | gdbscm_arch_float_type (SCM self) | |
344 | { | |
345 | struct type *type | |
346 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_float; | |
347 | ||
348 | return tyscm_scm_from_type (type); | |
349 | } | |
350 | ||
351 | /* (arch-double-type <gdb:arch>) -> <gdb:type> */ | |
352 | ||
353 | static SCM | |
354 | gdbscm_arch_double_type (SCM self) | |
355 | { | |
356 | struct type *type | |
357 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_double; | |
358 | ||
359 | return tyscm_scm_from_type (type); | |
360 | } | |
361 | ||
362 | /* (arch-longdouble-type <gdb:arch>) -> <gdb:type> */ | |
363 | ||
364 | static SCM | |
365 | gdbscm_arch_longdouble_type (SCM self) | |
366 | { | |
367 | struct type *type | |
368 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_long_double; | |
369 | ||
370 | return tyscm_scm_from_type (type); | |
371 | } | |
372 | ||
373 | /* (arch-bool-type <gdb:arch>) -> <gdb:type> */ | |
374 | ||
375 | static SCM | |
376 | gdbscm_arch_bool_type (SCM self) | |
377 | { | |
378 | struct type *type | |
379 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_bool; | |
380 | ||
381 | return tyscm_scm_from_type (type); | |
382 | } | |
383 | ||
384 | /* (arch-longlong-type <gdb:arch>) -> <gdb:type> */ | |
385 | ||
386 | static SCM | |
387 | gdbscm_arch_longlong_type (SCM self) | |
388 | { | |
389 | struct type *type | |
390 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_long_long; | |
391 | ||
392 | return tyscm_scm_from_type (type); | |
393 | } | |
394 | ||
395 | /* (arch-ulonglong-type <gdb:arch>) -> <gdb:type> */ | |
396 | ||
397 | static SCM | |
398 | gdbscm_arch_ulonglong_type (SCM self) | |
399 | { | |
400 | struct type *type | |
401 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_unsigned_long_long; | |
402 | ||
403 | return tyscm_scm_from_type (type); | |
404 | } | |
405 | ||
406 | /* (arch-int8-type <gdb:arch>) -> <gdb:type> */ | |
407 | ||
408 | static SCM | |
409 | gdbscm_arch_int8_type (SCM self) | |
410 | { | |
411 | struct type *type | |
412 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_int8; | |
413 | ||
414 | return tyscm_scm_from_type (type); | |
415 | } | |
416 | ||
417 | /* (arch-uint8-type <gdb:arch>) -> <gdb:type> */ | |
418 | ||
419 | static SCM | |
420 | gdbscm_arch_uint8_type (SCM self) | |
421 | { | |
422 | struct type *type | |
423 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_uint8; | |
424 | ||
425 | return tyscm_scm_from_type (type); | |
426 | } | |
427 | ||
428 | /* (arch-int16-type <gdb:arch>) -> <gdb:type> */ | |
429 | ||
430 | static SCM | |
431 | gdbscm_arch_int16_type (SCM self) | |
432 | { | |
433 | struct type *type | |
434 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_int16; | |
435 | ||
436 | return tyscm_scm_from_type (type); | |
437 | } | |
438 | ||
439 | /* (arch-uint16-type <gdb:arch>) -> <gdb:type> */ | |
440 | ||
441 | static SCM | |
442 | gdbscm_arch_uint16_type (SCM self) | |
443 | { | |
444 | struct type *type | |
445 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_uint16; | |
446 | ||
447 | return tyscm_scm_from_type (type); | |
448 | } | |
449 | ||
450 | /* (arch-int32-type <gdb:arch>) -> <gdb:type> */ | |
451 | ||
452 | static SCM | |
453 | gdbscm_arch_int32_type (SCM self) | |
454 | { | |
455 | struct type *type | |
456 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_int32; | |
457 | ||
458 | return tyscm_scm_from_type (type); | |
459 | } | |
460 | ||
461 | /* (arch-uint32-type <gdb:arch>) -> <gdb:type> */ | |
462 | ||
463 | static SCM | |
464 | gdbscm_arch_uint32_type (SCM self) | |
465 | { | |
466 | struct type *type | |
467 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_uint32; | |
468 | ||
469 | return tyscm_scm_from_type (type); | |
470 | } | |
471 | ||
472 | /* (arch-int64-type <gdb:arch>) -> <gdb:type> */ | |
473 | ||
474 | static SCM | |
475 | gdbscm_arch_int64_type (SCM self) | |
476 | { | |
477 | struct type *type | |
478 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_int64; | |
479 | ||
480 | return tyscm_scm_from_type (type); | |
481 | } | |
482 | ||
483 | /* (arch-uint64-type <gdb:arch>) -> <gdb:type> */ | |
484 | ||
485 | static SCM | |
486 | gdbscm_arch_uint64_type (SCM self) | |
487 | { | |
488 | struct type *type | |
489 | = gdbscm_arch_builtin_type (self, FUNC_NAME)->builtin_uint64; | |
490 | ||
491 | return tyscm_scm_from_type (type); | |
492 | } | |
493 | \f | |
494 | /* Initialize the Scheme architecture support. */ | |
495 | ||
496 | static const scheme_function arch_functions[] = | |
497 | { | |
72e02483 | 498 | { "arch?", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_p), |
ed3ef339 DE |
499 | "\ |
500 | Return #t if the object is a <gdb:arch> object." }, | |
501 | ||
72e02483 | 502 | { "current-arch", 0, 0, 0, as_a_scm_t_subr (gdbscm_current_arch), |
ed3ef339 DE |
503 | "\ |
504 | Return the <gdb:arch> object representing the architecture of the\n\ | |
505 | currently selected stack frame, if there is one, or the architecture of the\n\ | |
506 | current target if there isn't.\n\ | |
507 | \n\ | |
508 | Arguments: none" }, | |
509 | ||
72e02483 | 510 | { "arch-name", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_name), |
ed3ef339 DE |
511 | "\ |
512 | Return the name of the architecture." }, | |
513 | ||
72e02483 | 514 | { "arch-charset", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_charset), |
ed3ef339 DE |
515 | "\ |
516 | Return name of target character set as a string." }, | |
517 | ||
72e02483 | 518 | { "arch-wide-charset", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_wide_charset), |
ed3ef339 DE |
519 | "\ |
520 | Return name of target wide character set as a string." }, | |
521 | ||
72e02483 | 522 | { "arch-void-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_void_type), |
ed3ef339 DE |
523 | "\ |
524 | Return the <gdb:type> object for the \"void\" type\n\ | |
525 | of the architecture." }, | |
526 | ||
72e02483 | 527 | { "arch-char-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_char_type), |
ed3ef339 DE |
528 | "\ |
529 | Return the <gdb:type> object for the \"char\" type\n\ | |
530 | of the architecture." }, | |
531 | ||
72e02483 | 532 | { "arch-short-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_short_type), |
ed3ef339 DE |
533 | "\ |
534 | Return the <gdb:type> object for the \"short\" type\n\ | |
535 | of the architecture." }, | |
536 | ||
72e02483 | 537 | { "arch-int-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_int_type), |
ed3ef339 DE |
538 | "\ |
539 | Return the <gdb:type> object for the \"int\" type\n\ | |
540 | of the architecture." }, | |
541 | ||
72e02483 | 542 | { "arch-long-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_long_type), |
ed3ef339 DE |
543 | "\ |
544 | Return the <gdb:type> object for the \"long\" type\n\ | |
545 | of the architecture." }, | |
546 | ||
72e02483 | 547 | { "arch-schar-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_schar_type), |
ed3ef339 DE |
548 | "\ |
549 | Return the <gdb:type> object for the \"signed char\" type\n\ | |
550 | of the architecture." }, | |
551 | ||
72e02483 | 552 | { "arch-uchar-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_uchar_type), |
ed3ef339 DE |
553 | "\ |
554 | Return the <gdb:type> object for the \"unsigned char\" type\n\ | |
555 | of the architecture." }, | |
556 | ||
72e02483 | 557 | { "arch-ushort-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_ushort_type), |
ed3ef339 DE |
558 | "\ |
559 | Return the <gdb:type> object for the \"unsigned short\" type\n\ | |
560 | of the architecture." }, | |
561 | ||
72e02483 | 562 | { "arch-uint-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_uint_type), |
ed3ef339 DE |
563 | "\ |
564 | Return the <gdb:type> object for the \"unsigned int\" type\n\ | |
565 | of the architecture." }, | |
566 | ||
72e02483 | 567 | { "arch-ulong-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_ulong_type), |
ed3ef339 DE |
568 | "\ |
569 | Return the <gdb:type> object for the \"unsigned long\" type\n\ | |
570 | of the architecture." }, | |
571 | ||
72e02483 | 572 | { "arch-float-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_float_type), |
ed3ef339 DE |
573 | "\ |
574 | Return the <gdb:type> object for the \"float\" type\n\ | |
575 | of the architecture." }, | |
576 | ||
72e02483 | 577 | { "arch-double-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_double_type), |
ed3ef339 DE |
578 | "\ |
579 | Return the <gdb:type> object for the \"double\" type\n\ | |
580 | of the architecture." }, | |
581 | ||
72e02483 PA |
582 | { "arch-longdouble-type", 1, 0, 0, |
583 | as_a_scm_t_subr (gdbscm_arch_longdouble_type), | |
ed3ef339 DE |
584 | "\ |
585 | Return the <gdb:type> object for the \"long double\" type\n\ | |
586 | of the architecture." }, | |
587 | ||
72e02483 | 588 | { "arch-bool-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_bool_type), |
ed3ef339 DE |
589 | "\ |
590 | Return the <gdb:type> object for the \"bool\" type\n\ | |
591 | of the architecture." }, | |
592 | ||
72e02483 | 593 | { "arch-longlong-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_longlong_type), |
ed3ef339 DE |
594 | "\ |
595 | Return the <gdb:type> object for the \"long long\" type\n\ | |
596 | of the architecture." }, | |
597 | ||
598 | { "arch-ulonglong-type", 1, 0, 0, | |
72e02483 | 599 | as_a_scm_t_subr (gdbscm_arch_ulonglong_type), |
ed3ef339 DE |
600 | "\ |
601 | Return the <gdb:type> object for the \"unsigned long long\" type\n\ | |
602 | of the architecture." }, | |
603 | ||
72e02483 | 604 | { "arch-int8-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_int8_type), |
ed3ef339 DE |
605 | "\ |
606 | Return the <gdb:type> object for the \"int8\" type\n\ | |
607 | of the architecture." }, | |
608 | ||
72e02483 | 609 | { "arch-uint8-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_uint8_type), |
ed3ef339 DE |
610 | "\ |
611 | Return the <gdb:type> object for the \"uint8\" type\n\ | |
612 | of the architecture." }, | |
613 | ||
72e02483 | 614 | { "arch-int16-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_int16_type), |
ed3ef339 DE |
615 | "\ |
616 | Return the <gdb:type> object for the \"int16\" type\n\ | |
617 | of the architecture." }, | |
618 | ||
72e02483 | 619 | { "arch-uint16-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_uint16_type), |
ed3ef339 DE |
620 | "\ |
621 | Return the <gdb:type> object for the \"uint16\" type\n\ | |
622 | of the architecture." }, | |
623 | ||
72e02483 | 624 | { "arch-int32-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_int32_type), |
ed3ef339 DE |
625 | "\ |
626 | Return the <gdb:type> object for the \"int32\" type\n\ | |
627 | of the architecture." }, | |
628 | ||
72e02483 | 629 | { "arch-uint32-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_uint32_type), |
ed3ef339 DE |
630 | "\ |
631 | Return the <gdb:type> object for the \"uint32\" type\n\ | |
632 | of the architecture." }, | |
633 | ||
72e02483 | 634 | { "arch-int64-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_int64_type), |
ed3ef339 DE |
635 | "\ |
636 | Return the <gdb:type> object for the \"int64\" type\n\ | |
637 | of the architecture." }, | |
638 | ||
72e02483 | 639 | { "arch-uint64-type", 1, 0, 0, as_a_scm_t_subr (gdbscm_arch_uint64_type), |
ed3ef339 DE |
640 | "\ |
641 | Return the <gdb:type> object for the \"uint64\" type\n\ | |
642 | of the architecture." }, | |
643 | ||
644 | END_FUNCTIONS | |
645 | }; | |
646 | ||
647 | void | |
648 | gdbscm_initialize_arches (void) | |
649 | { | |
650 | arch_smob_tag = gdbscm_make_smob_type (arch_smob_name, sizeof (arch_smob)); | |
ed3ef339 DE |
651 | scm_set_smob_print (arch_smob_tag, arscm_print_arch_smob); |
652 | ||
653 | gdbscm_define_functions (arch_functions, 1); | |
654 | ||
655 | arch_object_data | |
656 | = gdbarch_data_register_post_init (arscm_object_data_init); | |
657 | } |