* valprint.h (print_hex_chars, print_char_chars): New prototypes.
* valprint.c (print_hex_chars): Change from static to external.
(print_char_chars): New function.
* printcmd.c (print_scalar_formatted): For integer and enum types
that are longer than LONGEST, perform processing via appropriate
print_*_chars routines.
+2004-02-26 Jeff Johnston <jjohnstn@redhat.com>
+
+ * valprint.h (print_hex_chars, print_char_chars): New prototypes.
+ * valprint.c (print_hex_chars): Change from static to external.
+ (print_char_chars): New function.
+ * printcmd.c (print_scalar_formatted): For integer and enum types
+ that are longer than LONGEST, perform processing via appropriate
+ print_*_chars routines.
+
2004-02-26 Andrew Cagney <cagney@redhat.com>
* Makefile.in: Update dependencies.
LONGEST val_long = 0;
unsigned int len = TYPE_LENGTH (type);
+ if (len > sizeof(LONGEST) &&
+ (TYPE_CODE (type) == TYPE_CODE_INT
+ || TYPE_CODE (type) == TYPE_CODE_ENUM))
+ {
+ switch (format)
+ {
+ case 'o':
+ print_octal_chars (stream, valaddr, len);
+ return;
+ case 'u':
+ case 'd':
+ print_decimal_chars (stream, valaddr, len);
+ return;
+ case 't':
+ print_binary_chars (stream, valaddr, len);
+ return;
+ case 'x':
+ print_hex_chars (stream, valaddr, len);
+ return;
+ case 'c':
+ print_char_chars (stream, valaddr, len);
+ return;
+ default:
+ break;
+ };
+ }
+
if (format != 'f')
val_long = unpack_long (type, valaddr);
static int partial_memory_read (CORE_ADDR memaddr, char *myaddr,
int len, int *errnoptr);
-static void print_hex_chars (struct ui_file *, unsigned char *,
- unsigned int);
-
static void show_print (char *, int);
static void set_print (char *, int);
/* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
-static void
+void
print_hex_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
{
unsigned char *p;
fputs_filtered (local_hex_format_suffix (), stream);
}
+/* VALADDR points to a char integer of LEN bytes. Print it out in appropriate language form on stream.
+ Omit any leading zero chars. */
+
+void
+print_char_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
+{
+ unsigned char *p;
+
+ if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
+ {
+ p = valaddr;
+ while (p < valaddr + len - 1 && *p == 0)
+ ++p;
+
+ while (p < valaddr + len)
+ {
+ LA_EMIT_CHAR (*p, stream, '\'');
+ ++p;
+ }
+ }
+ else
+ {
+ p = valaddr + len - 1;
+ while (p > valaddr && *p == 0)
+ --p;
+
+ while (p >= valaddr)
+ {
+ LA_EMIT_CHAR (*p, stream, '\'');
+ --p;
+ }
+ }
+}
+
/* Called by various <lang>_val_print routines to print elements of an
array in the form "<elem1>, <elem2>, <elem3>, ...".
extern void print_decimal_chars (struct ui_file *, unsigned char *,
unsigned int);
+
+extern void print_hex_chars (struct ui_file *, unsigned char *,
+ unsigned int);
+
+extern void print_char_chars (struct ui_file *, unsigned char *,
+ unsigned int);
#endif