/* OpenCL language support for GDB, the GNU debugger.
- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
Contributed by Ken Werner <ken.werner@de.ibm.com>.
static struct gdbarch_data *opencl_type_data;
-struct type **
+static struct type **
builtin_opencl_type (struct gdbarch *gdbarch)
{
return gdbarch_data (gdbarch, opencl_type_data);
return evaluate_subexp_c (expect_type, exp, pos, noside);
}
-void
+/* Print OpenCL types. */
+
+static void
+opencl_print_type (struct type *type, const char *varstring,
+ struct ui_file *stream, int show, int level,
+ const struct type_print_options *flags)
+{
+ /* We nearly always defer to C type printing, except that vector
+ types are considered primitive in OpenCL, and should always
+ be printed using their TYPE_NAME. */
+ if (show > 0)
+ {
+ CHECK_TYPEDEF (type);
+ if (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type)
+ && TYPE_NAME (type) != NULL)
+ show = 0;
+ }
+
+ c_print_type (type, varstring, stream, show, level, flags);
+}
+
+static void
opencl_language_arch_info (struct gdbarch *gdbarch,
struct language_arch_info *lai)
{
"opencl", /* Language name */
language_opencl,
range_check_off,
- type_check_off,
case_sensitive_on,
array_row_major,
macro_expansion_c,
c_printchar, /* Print a character constant */
c_printstr, /* Function to print string constant */
c_emit_char, /* Print a single char */
- c_print_type, /* Print a type using appropriate syntax */
+ opencl_print_type, /* Print a type using appropriate syntax */
c_print_typedef, /* Print a typedef using appropriate syntax */
c_val_print, /* Print a value using appropriate syntax */
c_value_print, /* Print a top-level value */
+ default_read_var_value, /* la_read_var_value */
NULL, /* Language specific skip_trampoline */
NULL, /* name_of_this */
basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
default_print_array_index,
default_pass_by_reference,
c_get_string,
- strcmp_iw_ordered,
+ NULL, /* la_get_symbol_name_cmp */
iterate_over_symbols,
LANG_MAGIC
};
return types;
}
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_opencl_language;
+
void
_initialize_opencl_language (void)
{