+2013-10-25 Pedro Alves <palves@redhat.com>
+
+ * cp-valprint.c (cp_print_value_fields): No longer handle a NULL
+ static field value.
+ (cp_print_static_field): If the value is entirely optimized out,
+ print <optimized out> here.
+ * jv-valprint.c (java_print_value_fields): No longer handle a NULL
+ static field value.
+ * p-valprint.c (pascal_object_print_static_field): If the value is
+ entirely optimized out, print <optimized out> here.
+ * valops.c (do_search_struct_field)
+ (value_struct_elt_for_reference): No longer handle a NULL static
+ field value.
+ * value.c (value_static_field): Return an optimized out value
+ instead of NULL.
+
2013-10-25 Yao Qi <yao@codesourcery.com>
* remote.c (remote_traceframe_info): Return early if
fprintf_filtered (stream,
_("<error reading variable: %s>"),
ex.message);
- else if (v == NULL)
- val_print_optimized_out (NULL, stream);
- else
- cp_print_static_field (TYPE_FIELD_TYPE (type, i),
- v, stream, recurse + 1,
- options);
+ cp_print_static_field (TYPE_FIELD_TYPE (type, i),
+ v, stream, recurse + 1,
+ options);
}
else if (i == vptr_fieldno && type == vptr_basetype)
{
const struct value_print_options *options)
{
struct value_print_options opts;
-
+
+ if (value_entirely_optimized_out (val))
+ {
+ val_print_optimized_out (val, stream);
+ return;
+ }
+
if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
{
CORE_ADDR *first_dont_print;
}
else if (field_is_static (&TYPE_FIELD (type, i)))
{
+ struct value_print_options opts;
struct value *v = value_static_field (type, i);
+ struct type *t = check_typedef (value_type (v));
- if (v == NULL)
- val_print_optimized_out (NULL, stream);
- else
- {
- struct value_print_options opts;
- struct type *t = check_typedef (value_type (v));
-
- if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
- v = value_addr (v);
- opts = *options;
- opts.deref_ref = 0;
- common_val_print (v, stream, recurse + 1,
- &opts, current_language);
- }
+ if (TYPE_CODE (t) == TYPE_CODE_STRUCT)
+ v = value_addr (v);
+ opts = *options;
+ opts.deref_ref = 0;
+ common_val_print (v, stream, recurse + 1,
+ &opts, current_language);
}
else if (TYPE_FIELD_TYPE (type, i) == NULL)
fputs_filtered ("<unknown type>", stream);
struct type *type = value_type (val);
struct value_print_options opts;
+ if (value_entirely_optimized_out (val))
+ {
+ val_print_optimized_out (val, stream);
+ return;
+ }
+
if (TYPE_CODE (type) == TYPE_CODE_STRUCT)
{
CORE_ADDR *first_dont_print, addr;
+2013-10-25 Pedro Alves <palves@redhat.com>
+
+ * gdb.cp/m-static.exp: Adjust expected output of printing a
+ nonexistent or optimized out static field. Also test printing the
+ the "container" object.
+
2013-10-24 Maciej W. Rozycki <macro@codesourcery.com>
* lib/gdb.exp (gdb_finish): Send a kill request to `gdbserver'
# and DW_AT_MIPS_linkage_name = _ZN9gnu_obj_47nowhereE .
setup_xfail *-*-*
}
-gdb_test "print test4.nowhere" "field nowhere is nonexistent or has been optimized out" "static const int initialized nowhere"
+gdb_test "print test4.nowhere" "<optimized out>" "static const int initialized nowhere (print field)"
+
+# Same, but print the whole struct.
+gdb_test "print test4" "static nowhere = <optimized out>.*" "static const int initialized nowhere (whole struct)"
# static const initialized in the class definition, PR gdb/11702.
if { $non_dwarf } { setup_xfail *-*-* }
struct value *v;
if (field_is_static (&TYPE_FIELD (type, i)))
- {
- v = value_static_field (type, i);
- if (v == 0)
- error (_("field %s is nonexistent or "
- "has been optimized out"),
- name);
- }
+ v = value_static_field (type, i);
else
v = value_primitive_field (arg1, offset, i, type);
*result_ptr = v;
if (field_is_static (&TYPE_FIELD (t, i)))
{
v = value_static_field (t, i);
- if (v == NULL)
- error (_("static field %s has been optimized out"),
- name);
if (want_address)
v = value_addr (v);
return v;
\f
/* Get the value of the FIELDNO'th field (which must be static) of
- TYPE. Return NULL if the field doesn't exist or has been
- optimized out. */
+ TYPE. */
struct value *
value_static_field (struct type *type, int fieldno)
NULL, NULL);
if (!msym)
- return NULL;
+ return allocate_optimized_out_value (type);
else
{
retval = value_at_lazy (TYPE_FIELD_TYPE (type, fieldno),