aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Shebs <shebs@codesourcery.com>1994-07-15 23:53:04 +0000
committerStan Shebs <shebs@codesourcery.com>1994-07-15 23:53:04 +0000
commit0568ccb0acb963d00f5bc283b7389d2b397c6364 (patch)
treeb211934d7f8f750d403ce613e4b288883d5c96d8
parent14c11f44828bad1a48e3753f77fc1962a2bc5feb (diff)
downloadgdb-0568ccb0acb963d00f5bc283b7389d2b397c6364.zip
gdb-0568ccb0acb963d00f5bc283b7389d2b397c6364.tar.gz
gdb-0568ccb0acb963d00f5bc283b7389d2b397c6364.tar.bz2
Stop printing at null char option, from Oliver Meyer
(omeyer@i3.informatik.rwth-aachen.de). * valprint.h, valprint.c (stop_print_at_null): New global. * valprint.c (_initialize_valprint): New print set subcommand "null-stop". * c-valprint.c (c_val_print): If stop_print_at_null is on, and printing a char array, adjust the number of chars to print.
-rw-r--r--gdb/ChangeLog10
-rw-r--r--gdb/c-valprint.c21
-rw-r--r--gdb/valprint.h6
3 files changed, 34 insertions, 3 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5a8ebb9..10cf1c6 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,13 @@
+Fri Jul 15 16:43:33 1994 Stan Shebs (shebs@andros.cygnus.com)
+
+ Stop printing at null char option, from Oliver Meyer
+ (omeyer@i3.informatik.rwth-aachen.de).
+ * valprint.h, valprint.c (stop_print_at_null): New global.
+ * valprint.c (_initialize_valprint): New print set subcommand
+ "null-stop".
+ * c-valprint.c (c_val_print): If stop_print_at_null is on, and
+ printing a char array, adjust the number of chars to print.
+
Fri Jul 15 14:33:40 1994 Stan Shebs (shebs@andros.cygnus.com)
From Kevin A. Buettner (kev@cujo.geg.mot.com).
diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c
index b776237..ee98fc4 100644
--- a/gdb/c-valprint.c
+++ b/gdb/c-valprint.c
@@ -1,6 +1,6 @@
/* Support for printing C values for GDB, the GNU debugger.
Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994
- Free Software Foundation, Inc.
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -109,9 +109,26 @@ c_val_print (type, valaddr, address, stream, format, deref_ref, recurse,
print_spaces_filtered (2 + 2 * recurse, stream);
}
/* For an array of chars, print with string syntax. */
- if (eltlen == 1 && TYPE_CODE (elttype) == TYPE_CODE_INT
+ if (eltlen == 1 &&
+ ((TYPE_CODE (elttype) == TYPE_CODE_INT)
+ || ((current_language->la_language == language_m2)
+ && (TYPE_CODE (elttype) == TYPE_CODE_CHAR)))
&& (format == 0 || format == 's'))
{
+ /* If requested, look for the first null char and only print
+ elements up to it. */
+ if (stop_print_at_null)
+ {
+ int temp_len;
+
+ /* Look for a NULL char. */
+ for (temp_len = 0;
+ valaddr[temp_len]
+ && temp_len < len && temp_len < print_max;
+ temp_len++);
+ len = temp_len;
+ }
+
LA_PRINT_STRING (stream, valaddr, len, 0);
i = len;
}
diff --git a/gdb/valprint.h b/gdb/valprint.h
index 4d58641..e45f48d 100644
--- a/gdb/valprint.h
+++ b/gdb/valprint.h
@@ -1,5 +1,6 @@
/* Declarations for value printing routines for GDB, the GNU debugger.
- Copyright 1986, 1988, 1989, 1991 Free Software Foundation, Inc.
+ Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994
+ Free Software Foundation, Inc.
This file is part of GDB.
@@ -29,8 +30,11 @@ extern int objectprint; /* Controls looking up an object's derived type
using what we find in its vtables. */
extern unsigned int print_max; /* Max # of chars for strings/vectors */
+
extern int output_format;
+extern int stop_print_at_null; /* Stop printing at null char? */
+
extern void
val_print_array_elements PARAMS ((struct type *, char *, CORE_ADDR, GDB_FILE *,
int, int, int, enum val_prettyprint, int));