/* Support for printing Java values for GDB, the GNU debugger.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007,
- 2008, 2009, 2010 Free Software Foundation, Inc.
+ 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
This file is part of GDB.
{
CORE_ADDR obj_addr;
- /* Get the run-time type, and cast the object into that */
+ /* Get the run-time type, and cast the object into that. */
obj_addr = unpack_pointer (type, value_contents (val));
if (el_type == NULL)
{
CORE_ADDR element;
- CORE_ADDR next_element = -1; /* dummy initial value */
+ CORE_ADDR next_element = -1; /* Dummy initial value. */
- /* Skip object header and length. */
+ /* Skip object header and length. */
address += get_java_object_header_size (gdbarch) + 4;
while (i < length && things_printed < options->print_max)
for (reps = 1; i + reps < length; reps++)
{
set_value_lazy (next_v, 1);
- set_value_offset (next_v, value_offset (next_v) + TYPE_LENGTH (el_type));
+ set_value_offset (next_v, value_offset (next_v)
+ + TYPE_LENGTH (el_type));
if (memcmp (value_contents (v), value_contents (next_v),
TYPE_LENGTH (el_type)) != 0)
break;
return 0;
}
- /* If it's type String, print it */
+ /* If it's type String, print it. */
if (TYPE_CODE (type) == TYPE_CODE_PTR
&& TYPE_TARGET_TYPE (type)
unsigned long count;
struct value *mark;
- mark = value_mark (); /* Remember start of new values */
+ mark = value_mark (); /* Remember start of new values. */
data_val = value_struct_elt (&val, NULL, "data", NULL, NULL);
data = value_as_address (data_val);
count_val = value_struct_elt (&val, NULL, "count", NULL, NULL);
count = value_as_address (count_val);
- value_free_to_mark (mark); /* Release unnecessary values */
+ value_free_to_mark (mark); /* Release unnecessary values. */
char_type = builtin_java_type (gdbarch)->builtin_char;
val_print_string (char_type, NULL, data + boffset, count, stream,
{
fputs_filtered ("<optimized out or zero length>", stream);
}
+ else if (value_bits_synthetic_pointer (val,
+ TYPE_FIELD_BITPOS (type,
+ i),
+ TYPE_FIELD_BITSIZE (type,
+ i)))
+ {
+ fputs_filtered (_("<synthetic pointer>"), stream);
+ }
else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i),
TYPE_FIELD_BITSIZE (type, i)))
{
const struct value_print_options *options)
{
struct gdbarch *gdbarch = get_type_arch (type);
- unsigned int i = 0; /* Number of characters printed */
+ unsigned int i = 0; /* Number of characters printed. */
struct type *target_type;
CORE_ADDR addr;
{
/* Print the unmangled name if desired. */
/* Print vtable entry - we only get here if we ARE using
- -fvtable_thunks. (Otherwise, look under TYPE_CODE_STRUCT.) */
+ -fvtable_thunks. (Otherwise, look under TYPE_CODE_STRUCT.) */
/* Extract an address, assume that it is unsigned. */
print_address_demangle (gdbarch,
- extract_unsigned_integer (valaddr, TYPE_LENGTH (type)),
+ extract_unsigned_integer (valaddr,
+ TYPE_LENGTH (type)),
stream, demangle);
break;
}