From b99b5f66e1d6f80624e8a28b8ebbf9235d50041e Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Thu, 8 Sep 2011 15:24:25 +0000 Subject: gdb/ * stack.c (print_frame_args): New variable except. Wrap read_var_value and common_val_print into TRY_CATCH. gdb/testsuite/ * gdb.dwarf2/dw2-param-error-main.c: New file. * gdb.dwarf2/dw2-param-error.S: New file. * gdb.dwarf2/dw2-param-error.exp: New file. --- gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c | 37 ++++++++ gdb/testsuite/gdb.dwarf2/dw2-param-error.S | 108 ++++++++++++++++++++++++ gdb/testsuite/gdb.dwarf2/dw2-param-error.exp | 33 ++++++++ 3 files changed, 178 insertions(+) create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-param-error.S create mode 100644 gdb/testsuite/gdb.dwarf2/dw2-param-error.exp (limited to 'gdb/testsuite/gdb.dwarf2') diff --git a/gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c b/gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c new file mode 100644 index 0000000..ad3e42a --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-param-error-main.c @@ -0,0 +1,37 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2011 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +asm (".globl f_start"); +asm ("f_start:"); + +volatile int v; + +void +f (int x) +{ + v++; +} + +asm (".globl f_end"); +asm ("f_end:"); + +int +main (void) +{ + f (1); + return 0; +} diff --git a/gdb/testsuite/gdb.dwarf2/dw2-param-error.S b/gdb/testsuite/gdb.dwarf2/dw2-param-error.S new file mode 100644 index 0000000..c10be1e --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-param-error.S @@ -0,0 +1,108 @@ +/* Copyright 2011 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + .text +var: .4byte 23 + + .section .debug_info +debug_start: + .long debug_end - 1f /* Length of Compilation Unit Info */ +1: + .2byte 0x3 /* DWARF version number */ + .long .Ldebug_abbrev0 /* Offset Into Abbrev. Section */ + .byte 0x4 /* Pointer Size (in bytes) */ + .uleb128 0x1 /* (DIE (0xb) DW_TAG_compile_unit) */ + .ascii "GNU C 4.4.3\0" /* DW_AT_producer */ + .byte 0x1 /* DW_AT_language */ + .ascii "1.c\0" /* DW_AT_name */ + .uleb128 0x4 /* (DIE (0x3c) DW_TAG_subprogram) */ + .ascii "f\0" /* DW_AT_name */ + .long f_start /* DW_AT_low_pc */ + .long f_end /* DW_AT_high_pc */ + .byte 0x1 /* DW_AT_prototyped */ + + .uleb128 0x5 /* (DIE (0x42) DW_TAG_formal_parameter) */ + .ascii "bad\0" /* DW_AT_name */ + .long type - debug_start /* DW_AT_type */ + .byte 2f - 1f /* DW_AT_location */ +1: .byte 0x06 /* DW_OP_deref */ +2: + .uleb128 0x5 /* (DIE (0x??) DW_TAG_formal_parameter) */ + .ascii "good\0" /* DW_AT_name */ + .long type - debug_start /* DW_AT_type */ + .byte 2f - 1f /* DW_AT_location */ +1: .byte 0x03 /* DW_OP_addr */ + .4byte var +2: + + .byte 0x0 /* end of children of DIE 0x3c */ +type: + .uleb128 3 /* Abbrev: DW_TAG_base_type */ + .ascii "int\0" /* DW_AT_name */ + .byte 4 /* DW_AT_byte_size */ + .byte 5 /* DW_AT_encoding */ + + .byte 0x0 /* end of children of DIE 0xb */ +debug_end: + + .section .debug_abbrev +.Ldebug_abbrev0: + .uleb128 0x1 /* (abbrev code) */ + .uleb128 0x11 /* (TAG: DW_TAG_compile_unit) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x25 /* (DW_AT_producer) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x13 /* (DW_AT_language) */ + .uleb128 0xb /* (DW_FORM_data1) */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .byte 0x0 + .byte 0x0 + .uleb128 3 /* Abbrev code */ + .uleb128 0x24 /* DW_TAG_base_type */ + .byte 0 /* has_children */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0xb /* DW_AT_byte_size */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3e /* DW_AT_encoding */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + .uleb128 0x4 /* (abbrev code) */ + .uleb128 0x2e /* (TAG: DW_TAG_subprogram) */ + .byte 0x1 /* DW_children_yes */ + .uleb128 0x3 /* (DW_AT_name) */ + .uleb128 0x8 /* (DW_FORM_string) */ + .uleb128 0x11 /* (DW_AT_low_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x12 /* (DW_AT_high_pc) */ + .uleb128 0x1 /* (DW_FORM_addr) */ + .uleb128 0x27 /* (DW_AT_prototyped) */ + .uleb128 0xc /* (DW_FORM_flag) */ + .byte 0x0 + .byte 0x0 + .uleb128 0x5 /* (abbrev code) */ + .uleb128 0x5 /* (TAG: DW_TAG_formal_parameter) */ + .byte 0x0 /* DW_children_no */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x49 /* (DW_AT_type) */ + .uleb128 0x13 /* (DW_FORM_ref4) */ + .uleb128 0x02 /* (DW_AT_location) */ + .uleb128 0x0a /* (DW_FORM_block1) */ + .byte 0x0 + .byte 0x0 + .byte 0x0 diff --git a/gdb/testsuite/gdb.dwarf2/dw2-param-error.exp b/gdb/testsuite/gdb.dwarf2/dw2-param-error.exp new file mode 100644 index 0000000..791799c --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-param-error.exp @@ -0,0 +1,33 @@ +# Copyright 2011 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +load_lib dwarf.exp + +# This test can only be run on targets which support DWARF-2 and use gas. +if {![dwarf2_support]} { + return 0 +} + +set testfile dw2-param-error +if { [prepare_for_testing ${testfile}.exp "${testfile}" "${testfile}-main.c ${testfile}.S" {nodebug}] } { + return -1 +} + +if ![runto f] { + return -1 +} + +# FAIL was printing: +# [...] in f (bad=) +gdb_test "frame" { f \(bad=, good=23\)} -- cgit v1.1