From 1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Wed, 12 Oct 2011 22:04:12 +0000 Subject: gdb/ Fix empty DWARF expressions DATA vs. SIZE conditionals. * dwarf2loc.c (dwarf2_find_location_expression): Clear *LOCEXPR_LENGTH. (dwarf_expr_frame_base_1): Indicate unavailability via zero *LENGTH. (locexpr_tracepoint_var_ref): Check only zero SIZE, not zero DATA. (loclist_read_variable, loclist_tracepoint_var_ref): Do not check for zero DATA. * dwarf2loc.h (struct dwarf2_locexpr_baton): Comment DATA vs. SIZE validity. * dwarf2read.c (struct dwarf_block): Comment DATA validity. (dwarf2_fetch_die_location_block, dwarf2_symbol_mark_computed): Do not clear DATA on zero SIZE. gdb/testsuite/ Fix empty DWARF expressions DATA vs. SIZE conditionals. * gdb.dwarf2/dw2-op-call.S (arraycallnoloc, arraynoloc): New DIEs. (loclist): New. (4): New abbrev. * gdb.dwarf2/dw2-op-call.exp: Remove variable srcfile and executable. Use prepare_for_testing, remove clean_restart. (p arraynoloc, p arraycallnoloc): New tests. --- gdb/testsuite/gdb.dwarf2/dw2-op-call.exp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'gdb/testsuite/gdb.dwarf2/dw2-op-call.exp') diff --git a/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp b/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp index 3319133..416eef4 100644 --- a/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp +++ b/gdb/testsuite/gdb.dwarf2/dw2-op-call.exp @@ -22,18 +22,20 @@ if {![dwarf2_support]} { } set testfile "dw2-op-call" -set srcfile ${testfile}.S -set executable ${testfile}.x - -if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${objdir}/${subdir}/${executable}" object {nodebug}] != "" } { +if { [prepare_for_testing ${testfile}.exp ${testfile} [list ${testfile}.S main.c] {nodebug}] } { return -1 } -clean_restart $executable - # Additional test to verify the referenced CU is not aged out. gdb_test_no_output "maintenance set dwarf2 max-cache-age 0" gdb_test "p array1" " = 1" gdb_test "p array2" " = 2" "array2 using DW_OP_call2" gdb_test "p array3" " = 3" "array3 using DW_OP_call4" + +# Location lists need PC. +if ![runto_main] { + return -1 +} +gdb_test "p arraynoloc" " = " +gdb_test "p arraycallnoloc" {Asked for position 0 of stack, stack only has 0 elements on it\.} -- cgit v1.1