static const char * charset_for_string_type (enum c_string_type str_type, struct gdbarch *gdbarch) { switch (str_type & ~C_CHAR) { case C_STRING: return target_charset (gdbarch); case C_WIDE_STRING: return target_wide_charset (gdbarch); case C_STRING_16: /* FIXME: UTF-16 is not always correct. */ if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) return "UTF-16BE"; else return "UTF-16LE"; case C_STRING_32: /* FIXME: UTF-32 is not always correct. */ if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG) return "UTF-32BE"; else return "UTF-32LE"; } internal_error (__FILE__, __LINE__, _("unhandled c_string_type")); }
static SCM gdbscm_arch_wide_charset (SCM self) { arch_smob *a_smob = arscm_get_arch_smob_arg_unsafe (self, SCM_ARG1, FUNC_NAME); struct gdbarch *gdbarch = a_smob->gdbarch; return gdbscm_scm_from_c_string (target_wide_charset (gdbarch)); }