Centralize printing "<optimized out>".

gdb/
	* valprint.h (val_print_optimized_out): Declare.
	* cp-valprint.c (cp_print_value_fields): Use
	val_print_optimized_out.
	* jv-valprint.c (java_print_value_fields): Ditto.
	* p-valprint.c (pascal_object_print_value_fields): Ditto.
	* printcmd.c (print_formatted): Ditto.
	* valprint.c (valprint_check_validity): Ditto.
	(value_check_printable): Ditto.
	(val_print_optimized_out): New.

	gdb/doc/
	* gdb.texinfo: s/value optimized out/optimized out/g

	gdb/testsuite/
	* gdb.base/frame-args.exp: Adjust.
	* gdb.dwarf2/dw2-noloc.exp: Adjust.
	* gdb.dwarf2/dw2-inline-param.exp: Adjust.
	* gdb.dwarf2/pieces.exp: Adjust.
	* gdb.opt/clobbered-registers-O2.exp: Adjust.
	* gdb.opt/inline-locals.exp: Adjust.
	* gdb.threads/fork-child-threads.exp: Adjust.
This commit is contained in:
Pedro Alves
2011-01-25 16:26:23 +00:00
parent d468832aa5
commit 585fdaa106
16 changed files with 69 additions and 33 deletions

View File

@ -1,3 +1,17 @@
2011-01-25 Pedro Alves <pedro@codesourcery.com>
Centralize printing "<optimized out>".
* valprint.h (val_print_optimized_out): Declare.
* cp-valprint.c (cp_print_value_fields): Use
val_print_optimized_out.
* jv-valprint.c (java_print_value_fields): Ditto.
* p-valprint.c (pascal_object_print_value_fields): Ditto.
* printcmd.c (print_formatted): Ditto.
* valprint.c (valprint_check_validity): Ditto.
(value_check_printable): Ditto.
(val_print_optimized_out): New.
2011-01-25 Pedro Alves <pedro@codesourcery.com> 2011-01-25 Pedro Alves <pedro@codesourcery.com>
* infcmd.c (default_print_registers_info): Allocate values so to * infcmd.c (default_print_registers_info): Allocate values so to

View File

@ -316,7 +316,7 @@ cp_print_value_fields (struct type *type, struct type *real_type,
TYPE_FIELD_BITPOS (type, i), TYPE_FIELD_BITPOS (type, i),
TYPE_FIELD_BITSIZE (type, i))) TYPE_FIELD_BITSIZE (type, i)))
{ {
fputs_filtered (_("<value optimized out>"), stream); val_print_optimized_out (stream);
} }
else else
{ {
@ -343,7 +343,7 @@ cp_print_value_fields (struct type *type, struct type *real_type,
struct value *v = value_static_field (type, i); struct value *v = value_static_field (type, i);
if (v == NULL) if (v == NULL)
fputs_filtered ("<optimized out>", stream); val_print_optimized_out (stream);
else else
cp_print_static_field (TYPE_FIELD_TYPE (type, i), cp_print_static_field (TYPE_FIELD_TYPE (type, i),
v, stream, recurse + 1, v, stream, recurse + 1,

View File

@ -1,3 +1,7 @@
2011-01-25 Pedro Alves <pedro@codesourcery.com>
* gdb.texinfo: s/value optimized out/optimized out/g
2011-01-21 Joel Brobecker <brobecker@adacore.com> 2011-01-21 Joel Brobecker <brobecker@adacore.com>
* gdb.texinfo (Other Misc Settings): Rework part of the * gdb.texinfo (Other Misc Settings): Rework part of the

View File

@ -5951,7 +5951,7 @@ only if it is a scalar (integer, pointer, enumeration, etc). See command
@kbd{set print frame-arguments} in @ref{Print Settings} for more details @kbd{set print frame-arguments} in @ref{Print Settings} for more details
on how to configure the way function parameter values are printed. on how to configure the way function parameter values are printed.
@cindex value optimized out, in backtrace @cindex optimized out, in backtrace
@cindex function call arguments, optimized out @cindex function call arguments, optimized out
If your program was compiled with optimizations, some compilers will If your program was compiled with optimizations, some compilers will
optimize away arguments passed to functions if those arguments are optimize away arguments passed to functions if those arguments are
@ -5965,8 +5965,8 @@ such a backtrace might look like:
@group @group
#0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8) #0 m4_traceon (obs=0x24eb0, argc=1, argv=0x2b8c8)
at builtin.c:993 at builtin.c:993
#1 0x6e38 in expand_macro (sym=<value optimized out>) at macro.c:242 #1 0x6e38 in expand_macro (sym=<optimized out>) at macro.c:242
#2 0x6840 in expand_token (obs=0x0, t=<value optimized out>, td=0xf7fffb08) #2 0x6840 in expand_token (obs=0x0, t=<optimized out>, td=0xf7fffb08)
at macro.c:71 at macro.c:71
(More stack frames follow...) (More stack frames follow...)
@end group @end group
@ -5974,7 +5974,7 @@ such a backtrace might look like:
@noindent @noindent
The values of arguments that were not saved in their stack frames are The values of arguments that were not saved in their stack frames are
shown as @samp{<value optimized out>}. shown as @samp{<optimized out>}.
If you need to display the values of such optimized-out arguments, If you need to display the values of such optimized-out arguments,
either deduce that from other variables whose values depend on the one either deduce that from other variables whose values depend on the one

View File

@ -407,7 +407,7 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr,
else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i), else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i),
TYPE_FIELD_BITSIZE (type, i))) TYPE_FIELD_BITSIZE (type, i)))
{ {
fputs_filtered (_("<value optimized out>"), stream); val_print_optimized_out (stream);
} }
else else
{ {
@ -434,7 +434,7 @@ java_print_value_fields (struct type *type, const gdb_byte *valaddr,
struct value *v = value_static_field (type, i); struct value *v = value_static_field (type, i);
if (v == NULL) if (v == NULL)
fputs_filtered ("<optimized out>", stream); val_print_optimized_out (stream);
else else
{ {
struct value_print_options opts; struct value_print_options opts;

View File

@ -810,7 +810,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i), else if (!value_bits_valid (val, TYPE_FIELD_BITPOS (type, i),
TYPE_FIELD_BITSIZE (type, i))) TYPE_FIELD_BITSIZE (type, i)))
{ {
fputs_filtered (_("<value optimized out>"), stream); val_print_optimized_out (stream);
} }
else else
{ {
@ -842,7 +842,7 @@ pascal_object_print_value_fields (struct type *type, const gdb_byte *valaddr,
unpack_field_as_long (type, valaddr + offset, i)); unpack_field_as_long (type, valaddr + offset, i));
if (v == NULL) if (v == NULL)
fputs_filtered ("<optimized out>", stream); val_print_optimized_out (stream);
else else
pascal_object_print_static_field (v, stream, recurse + 1, pascal_object_print_static_field (v, stream, recurse + 1,
options); options);

View File

@ -1,3 +1,13 @@
2011-01-25 Pedro Alves <pedro@codesourcery.com>
* gdb.base/frame-args.exp: Adjust.
* gdb.dwarf2/dw2-noloc.exp: Adjust.
* gdb.dwarf2/dw2-inline-param.exp: Adjust.
* gdb.dwarf2/pieces.exp: Adjust.
* gdb.opt/clobbered-registers-O2.exp: Adjust.
* gdb.opt/inline-locals.exp: Adjust.
* gdb.threads/fork-child-threads.exp: Adjust.
2011-01-25 Ken Werner <ken.werner@de.ibm.com> 2011-01-25 Ken Werner <ken.werner@de.ibm.com>
* gdb.opencl/convs_casts.cl: Move program scope variables into the * gdb.opencl/convs_casts.cl: Move program scope variables into the

View File

@ -40,7 +40,7 @@ if ![runto break_me] then {
gdb_test_no_output "set print frame-arguments all" \ gdb_test_no_output "set print frame-arguments all" \
"set print frame-arguments all" "set print frame-arguments all"
gdb_test "frame 1" \ gdb_test "frame 1" \
".*in call_me \\(i=3, f=5, s=({a = 3, b = 5}|<value optimized out>), ss=0x\[0-9a-f\]\+, u=({.*}|<value optimized out>), e=green\\) at .*frame-args\\.c:.*" \ ".*in call_me \\(i=3, f=5, s=({a = 3, b = 5}|<optimized out>), ss=0x\[0-9a-f\]\+, u=({.*}|<optimized out>), e=green\\) at .*frame-args\\.c:.*" \
"frame 1 with print frame-arguments set to all" "frame 1 with print frame-arguments set to all"
# Test with "print frame-arguments" set to "scalars" # Test with "print frame-arguments" set to "scalars"

View File

@ -57,4 +57,4 @@ if ![runto "*${break_at}"] {
return -1 return -1
} }
gdb_test "bt" "#0 (0x\[0-9a-f\]+ in )?func \\(funcparam=<value optimized out>\\)\r\n#1 main \\(mainparam=<value optimized out>\\)\[^\r\n\]*" gdb_test "bt" "#0 (0x\[0-9a-f\]+ in )?func \\(funcparam=<optimized out>\\)\r\n#1 main \\(mainparam=<optimized out>\\)\[^\r\n\]*"

View File

@ -46,16 +46,16 @@ proc file_symbols {type} {
gdb_test "print file_locaddr_unresolvable" "= 1234567890" gdb_test "print file_locaddr_unresolvable" "= 1234567890"
gdb_test "ptype file_locaddr_unresolvable" "type = int" gdb_test "ptype file_locaddr_unresolvable" "type = int"
gdb_test "print file_locempty_resolvable" "= <value optimized out>" gdb_test "print file_locempty_resolvable" "= <optimized out>"
gdb_test "ptype file_locempty_resolvable" "type = int" gdb_test "ptype file_locempty_resolvable" "type = int"
gdb_test "print file_locempty_unresolvable" "= <value optimized out>" gdb_test "print file_locempty_unresolvable" "= <optimized out>"
gdb_test "ptype file_locempty_unresolvable" "type = int" gdb_test "ptype file_locempty_unresolvable" "type = int"
gdb_test "print file_locno_resolvable" "= <value optimized out>" gdb_test "print file_locno_resolvable" "= <optimized out>"
gdb_test "ptype file_locno_resolvable" "type = int" gdb_test "ptype file_locno_resolvable" "type = int"
gdb_test "print file_locno_unresolvable" "= <value optimized out>" gdb_test "print file_locno_unresolvable" "= <optimized out>"
gdb_test "ptype file_locno_unresolvable" "type = int" gdb_test "ptype file_locno_unresolvable" "type = int"
gdb_test "print file_extern_locaddr_resolvable" "= 1234567890" gdb_test "print file_extern_locaddr_resolvable" "= 1234567890"
@ -64,10 +64,10 @@ proc file_symbols {type} {
gdb_test "print file_extern_locaddr_unresolvable" "= 1234567890" gdb_test "print file_extern_locaddr_unresolvable" "= 1234567890"
gdb_test "ptype file_extern_locaddr_unresolvable" "type = int" gdb_test "ptype file_extern_locaddr_unresolvable" "type = int"
gdb_test "print file_extern_locempty_resolvable" "= <value optimized out>" gdb_test "print file_extern_locempty_resolvable" "= <optimized out>"
gdb_test "ptype file_extern_locempty_resolvable" "type = int" gdb_test "ptype file_extern_locempty_resolvable" "type = int"
gdb_test "print file_extern_locempty_unresolvable" "= <value optimized out>" gdb_test "print file_extern_locempty_unresolvable" "= <optimized out>"
gdb_test "ptype file_extern_locempty_unresolvable" "type = int" gdb_test "ptype file_extern_locempty_unresolvable" "type = int"
gdb_test "print file_extern_locno_resolvable" "= 1234567890" gdb_test "print file_extern_locno_resolvable" "= 1234567890"
@ -76,7 +76,7 @@ proc file_symbols {type} {
# `print file_extern_locno_unresolvable' currently prints # `print file_extern_locno_unresolvable' currently prints
# Address of symbol "file_extern_locno_unresolvable" is unknown. # Address of symbol "file_extern_locno_unresolvable" is unknown.
# As DW_AT_declaration is not present in this DIE # As DW_AT_declaration is not present in this DIE
# it should print <value optimized out>. As usefulness of such DIE is not # it should print <optimized out>. As usefulness of such DIE is not
# clear its resolution is not being tested. # clear its resolution is not being tested.
set pf_prefix $old_prefix set pf_prefix $old_prefix
@ -97,16 +97,16 @@ gdb_test "ptype main_local_locaddr_resolvable" "type = int"
gdb_test "print main_local_locaddr_unresolvable" "= 1234567890" gdb_test "print main_local_locaddr_unresolvable" "= 1234567890"
gdb_test "ptype main_local_locaddr_unresolvable" "type = int" gdb_test "ptype main_local_locaddr_unresolvable" "type = int"
gdb_test "print main_local_locempty_resolvable" "= <value optimized out>" gdb_test "print main_local_locempty_resolvable" "= <optimized out>"
gdb_test "ptype main_local_locempty_resolvable" "type = int" gdb_test "ptype main_local_locempty_resolvable" "type = int"
gdb_test "print main_local_locempty_unresolvable" "= <value optimized out>" gdb_test "print main_local_locempty_unresolvable" "= <optimized out>"
gdb_test "ptype main_local_locempty_unresolvable" "type = int" gdb_test "ptype main_local_locempty_unresolvable" "type = int"
gdb_test "print main_local_locno_resolvable" "= <value optimized out>" gdb_test "print main_local_locno_resolvable" "= <optimized out>"
gdb_test "ptype main_local_locno_resolvable" "type = int" gdb_test "ptype main_local_locno_resolvable" "type = int"
gdb_test "print main_local_locno_unresolvable" "= <value optimized out>" gdb_test "print main_local_locno_unresolvable" "= <optimized out>"
gdb_test "ptype main_local_locno_unresolvable" "type = int" gdb_test "ptype main_local_locno_unresolvable" "type = int"
gdb_test "print main_extern_locaddr_resolvable" "= 1234567890" gdb_test "print main_extern_locaddr_resolvable" "= 1234567890"
@ -115,10 +115,10 @@ gdb_test "ptype main_extern_locaddr_resolvable" "type = int"
gdb_test "print main_extern_locaddr_unresolvable" "= 1234567890" gdb_test "print main_extern_locaddr_unresolvable" "= 1234567890"
gdb_test "ptype main_extern_locaddr_unresolvable" "type = int" gdb_test "ptype main_extern_locaddr_unresolvable" "type = int"
gdb_test "print main_extern_locempty_resolvable" "= <value optimized out>" gdb_test "print main_extern_locempty_resolvable" "= <optimized out>"
gdb_test "ptype main_extern_locempty_resolvable" "type = int" gdb_test "ptype main_extern_locempty_resolvable" "type = int"
gdb_test "print main_extern_locempty_unresolvable" "= <value optimized out>" gdb_test "print main_extern_locempty_unresolvable" "= <optimized out>"
gdb_test "ptype main_extern_locempty_unresolvable" "type = int" gdb_test "ptype main_extern_locempty_unresolvable" "type = int"
gdb_test "print main_extern_locno_resolvable" "= 1234567890" gdb_test "print main_extern_locno_resolvable" "= 1234567890"

View File

@ -82,7 +82,7 @@ proc pieces_test_f6 {} {
"set f6 breakpoint for pieces" "set f6 breakpoint for pieces"
gdb_continue_to_breakpoint "continue to f6 breakpoint for pieces" gdb_continue_to_breakpoint "continue to f6 breakpoint for pieces"
gdb_test "print a" \ gdb_test "print a" \
" = {i = 7, j = 8, q = .value optimized out.}" \ " = {i = 7, j = 8, q = .optimized out.}" \
"print a with optimized out piece" "print a with optimized out piece"
# Note: no warning for this case. # Note: no warning for this case.
gdb_test_multiple "print a.i" \ gdb_test_multiple "print a.i" \

View File

@ -53,12 +53,12 @@ if { ![runto start_sequence] } then {
gdb_test "frame 1" "#1.*in gen_movsd.*" "Backtracing" gdb_test "frame 1" "#1.*in gen_movsd.*" "Backtracing"
gdb_test_multiple "print operand0" "print operand0" { gdb_test_multiple "print operand0" "print operand0" {
-re "\\\$$decimal = <value optimized out>\r\n$gdb_prompt $" { pass "print operand0"} -re "\\\$$decimal = <optimized out>\r\n$gdb_prompt $" { pass "print operand0"}
-re "$hex\r\n$gdb_prompt $" { gdb_test "print *operand0" "13" "print operand0" } -re "$hex\r\n$gdb_prompt $" { gdb_test "print *operand0" "13" "print operand0" }
} }
gdb_test_multiple "print operand1" "print operand1" { gdb_test_multiple "print operand1" "print operand1" {
-re "\\\$$decimal = <value optimized out>\r\n$gdb_prompt $" { pass "print operand1"} -re "\\\$$decimal = <optimized out>\r\n$gdb_prompt $" { pass "print operand1"}
-re "$hex\r\n$gdb_prompt $" { gdb_test "print *operand1" "14" "print operand1" } -re "$hex\r\n$gdb_prompt $" { gdb_test "print *operand1" "14" "print operand1" }
} }

View File

@ -62,7 +62,7 @@ if { ! $no_frames } {
-re "arg1 = $decimal\r\n$gdb_prompt $" { -re "arg1 = $decimal\r\n$gdb_prompt $" {
pass $msg pass $msg
} }
-re "arg1 = <value optimized out>\r\n$gdb_prompt $" { -re "arg1 = <optimized out>\r\n$gdb_prompt $" {
# GCC 4.3 and later lose location information for arg1. GCC 4.2 is OK. # GCC 4.3 and later lose location information for arg1. GCC 4.2 is OK.
if { [test_compiler_info "gcc-4-3-*"] || [test_compiler_info "gcc-4-4-*"]} { if { [test_compiler_info "gcc-4-3-*"] || [test_compiler_info "gcc-4-4-*"]} {
setup_xfail *-*-* setup_xfail *-*-*
@ -101,7 +101,7 @@ if { ! $no_frames } {
-re "arg1 = $decimal\r\n$gdb_prompt $" { -re "arg1 = $decimal\r\n$gdb_prompt $" {
pass $msg pass $msg
} }
-re "arg1 = <value optimized out>\r\n$gdb_prompt $" { -re "arg1 = <optimized out>\r\n$gdb_prompt $" {
# GCC 4.3 and later lose location information for arg1. GCC 4.2 is OK. # GCC 4.3 and later lose location information for arg1. GCC 4.2 is OK.
if { [test_compiler_info "gcc-4-3-*"] || [test_compiler_info "gcc-4-4-*"]} { if { [test_compiler_info "gcc-4-3-*"] || [test_compiler_info "gcc-4-4-*"]} {
setup_xfail *-*-* setup_xfail *-*-*

View File

@ -52,6 +52,6 @@ gdb_test "continue" "Breakpoint 2, start.*" "get to the spawned thread"
# * 2 LWP 4466 start (arg=0x0) at fork-child-threads.c:28 # * 2 LWP 4466 start (arg=0x0) at fork-child-threads.c:28
# Correct: # Correct:
# * 3 Thread 0x40a00950 (LWP 5553) start (arg=0x0) at ../.././gdb/testsuite/gdb.threads/fork-child-threads.c:28 # * 3 Thread 0x40a00950 (LWP 5553) start (arg=0x0) at ../.././gdb/testsuite/gdb.threads/fork-child-threads.c:28
# 2 Thread 0x2aaaaaac3000 (LWP 5552) 0x00000031674076dd in pthread_join (threadid=<value optimized out>, thread_return=<value optimized out>) at pthread_join.c:89 # 2 Thread 0x2aaaaaac3000 (LWP 5552) 0x00000031674076dd in pthread_join (threadid=<optimized out>, thread_return=<optimized out>) at pthread_join.c:89
gdb_test "info threads" " Thread .* Thread .*" "two threads found" gdb_test "info threads" " Thread .* Thread .*" "two threads found"

View File

@ -272,7 +272,7 @@ valprint_check_validity (struct ui_file *stream,
if (! value_bits_valid (val, TARGET_CHAR_BIT * offset, if (! value_bits_valid (val, TARGET_CHAR_BIT * offset,
TARGET_CHAR_BIT * TYPE_LENGTH (type))) TARGET_CHAR_BIT * TYPE_LENGTH (type)))
{ {
fprintf_filtered (stream, _("<value optimized out>")); val_print_optimized_out (stream);
return 0; return 0;
} }
@ -287,6 +287,12 @@ valprint_check_validity (struct ui_file *stream,
return 1; return 1;
} }
void
val_print_optimized_out (struct ui_file *stream)
{
fprintf_filtered (stream, _("<optimized out>"));
}
/* Print using the given LANGUAGE the data of type TYPE located at VALADDR /* Print using the given LANGUAGE the data of type TYPE located at VALADDR
(within GDB), which came from the inferior at address ADDRESS, onto (within GDB), which came from the inferior at address ADDRESS, onto
stdio stream STREAM according to OPTIONS. stdio stream STREAM according to OPTIONS.
@ -378,7 +384,7 @@ value_check_printable (struct value *val, struct ui_file *stream)
if (value_entirely_optimized_out (val)) if (value_entirely_optimized_out (val))
{ {
fprintf_filtered (stream, _("<value optimized out>")); val_print_optimized_out (stream);
return 0; return 0;
} }

View File

@ -145,4 +145,6 @@ int read_string (CORE_ADDR addr, int len, int width, unsigned int fetchlimit,
enum bfd_endian byte_order, gdb_byte **buffer, enum bfd_endian byte_order, gdb_byte **buffer,
int *bytes_read); int *bytes_read);
extern void val_print_optimized_out (struct ui_file *stream);
#endif #endif