aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.dwarf2/dw2-op-call.S
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-10-12 22:04:12 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-10-12 22:04:12 +0000
commit1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b (patch)
treeb22379c4a6713e9b18cadfe2f42f05a4871cb0b6 /gdb/testsuite/gdb.dwarf2/dw2-op-call.S
parent6885131b49b28d67e4dc4758edb7e765b8b9f8b7 (diff)
downloadgdb-1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b.zip
gdb-1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b.tar.gz
gdb-1d6edc3c37dc30e5fe46f25fa4d4974c78b60e5b.tar.bz2
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.
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2/dw2-op-call.S')
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-op-call.S32
1 files changed, 32 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-op-call.S b/gdb/testsuite/gdb.dwarf2/dw2-op-call.S
index 9a0efca..0db493e 100644
--- a/gdb/testsuite/gdb.dwarf2/dw2-op-call.S
+++ b/gdb/testsuite/gdb.dwarf2/dw2-op-call.S
@@ -72,10 +72,30 @@ array3: .2byte 3
.uleb128 array3-array1 /* <uconst> */
2:
+ .uleb128 3 /* Abbrev: DW_TAG_variable */
+ .ascii "arraycallnoloc\0" /* DW_AT_name */
+ .4byte .L2byte_type-.Lcu1_begin /* DW_AT_type */
+ .byte 2f - 1f /* DW_AT_location */
+1: .byte 0x99 /* DW_OP_call4 */
+ .4byte .Larraynoloc-.Lcu1_begin /* <current CU offset> */
+2:
+
+.Larraynoloc:
+ .uleb128 4 /* Abbrev: DW_TAG_variable-loclist */
+ .ascii "arraynoloc\0" /* DW_AT_name */
+ .4byte .L2byte_type-.Lcu1_begin /* DW_AT_type */
+ .4byte loclist /* DW_AT_location */
+
.byte 0 /* End of children of CU */
.Lcu1_end:
+/* Location list. */
+ .section .debug_loc
+loclist:
+ /* Location list end. */
+ .4byte 0, 0
+
/* Abbrev table */
.section .debug_abbrev
.Labbrev1_begin:
@@ -115,5 +135,17 @@ array3: .2byte 3
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */
+ .uleb128 4 /* Abbrev code */
+ .uleb128 0x34 /* DW_TAG_variable-loclist */
+ .byte 0 /* has_children */
+ .uleb128 0x3 /* DW_AT_name */
+ .uleb128 0x8 /* DW_FORM_string */
+ .uleb128 0x49 /* DW_AT_type */
+ .uleb128 0x13 /* DW_FORM_ref4 */
+ .uleb128 0x2 /* DW_AT_location */
+ .uleb128 0x06 /* DW_FORM_data4 */
+ .byte 0x0 /* Terminator */
+ .byte 0x0 /* Terminator */
+
.byte 0x0 /* Terminator */
.byte 0x0 /* Terminator */