diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-12-02 01:28:55 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-12-02 01:28:55 +0000 |
commit | 9750bca92c8e67e36ac1b9724abfcb814efaf48f (patch) | |
tree | 6161738a1dcf9feccf4570fc2e413cf6d40ab797 /gdb/testsuite | |
parent | f28c316a0bbb40b341e36d9e328a4d60121c395a (diff) | |
download | binutils-9750bca92c8e67e36ac1b9724abfcb814efaf48f.zip binutils-9750bca92c8e67e36ac1b9724abfcb814efaf48f.tar.gz binutils-9750bca92c8e67e36ac1b9724abfcb814efaf48f.tar.bz2 |
gdb/
PR breakpoints/13346
* dwarf2read.c (process_psymtab_comp_unit): Set
PSYMTABS_ADDRMAP_SUPPORTED.
* psympriv.h (struct partial_symtab): Comment textlow and texthigh
validity. New field psymtabs_addrmap_supported.
* psymtab.c (find_pc_sect_psymtab_closer): New gdb_assert on
psymtabs_addrmap_supported.
(find_pc_sect_psymtab): Do not fallback to TEXTLOW and TEXTHIGH for
!PSYMTABS_ADDRMAP_SUPPORTED.
(dump_psymtab, maintenance_info_psymtabs): Print also
psymtabs_addrmap_supported.
gdb/testsuite/
PR breakpoints/13346
* gdb.dwarf2/dw2-objfile-overlap-inner.S: New file.
* gdb.dwarf2/dw2-objfile-overlap-outer.S: New file.
* gdb.dwarf2/dw2-objfile-overlap.exp: New file.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S | 177 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S | 208 | ||||
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp | 47 |
4 files changed, 439 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 341ce06..3a5716c 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2011-12-02 Jan Kratochvil <jan.kratochvil@redhat.com> + + PR breakpoints/13346 + * gdb.dwarf2/dw2-objfile-overlap-inner.S: New file. + * gdb.dwarf2/dw2-objfile-overlap-outer.S: New file. + * gdb.dwarf2/dw2-objfile-overlap.exp: New file. + 2011-12-01 Joel Brobecker <brobecker@adacore.com> * gdb.ada/homonym/pck.ads, gdb.ada/homonym/pck.adb: New files. diff --git a/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S b/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S new file mode 100644 index 0000000..8f11b78 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-inner.S @@ -0,0 +1,177 @@ +/* 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 <http://www.gnu.org/licenses/>. */ + + .text + + .globl _start +_start: + + .globl inner + .type inner, %function +inner: +.Lbegin_inner: + .int 0 +.Lend_inner: + .size inner, . - inner + +/* Debug information */ + + .section .debug_info +.Lcu1_begin: + /* CU header */ + .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ +.Lcu1_start: + .2byte 2 /* DWARF Version */ + .4byte .Labbrev1_begin /* Offset into abbrev section */ + .byte 4 /* Pointer size */ + + /* CU die */ + .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ + .4byte .Lline1_begin /* DW_AT_stmt_list */ + .4byte .Ldebug_ranges /* DW_AT_ranges */ + .ascii "inner.c\0" /* DW_AT_name */ + .ascii "/tmp\0" /* DW_AT_comp_dir */ + .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ + .byte 1 /* DW_AT_language (C) */ + + /* inner */ + .uleb128 2 /* Abbrev: DW_TAG_subprogram */ + .byte 1 /* DW_AT_external */ + .byte 1 /* DW_AT_decl_file */ + .byte 1 /* DW_AT_decl_line */ + .ascii "inner\0" /* DW_AT_name */ + .4byte .Lbegin_inner /* DW_AT_low_pc */ + .4byte .Lend_inner /* DW_AT_high_pc */ + + .byte 0 /* End of children of CU */ + +.Lcu1_end: + +/* DW_AT_ranges. */ + .section .debug_ranges +.Ldebug_ranges: + .4byte .Lbegin_inner + .4byte .Lend_inner + .4byte 0 + .4byte 0 + +/* Abbrev table */ + .section .debug_abbrev +.Labbrev1_begin: + .uleb128 1 /* Abbrev code */ + .uleb128 0x11 /* DW_TAG_compile_unit */ + .byte 1 /* has_children */ + .uleb128 0x10 /* DW_AT_stmt_list */ + .uleb128 0x6 /* DW_FORM_data4 */ + .uleb128 0x55 /* DW_AT_ranges */ + .uleb128 0x6 /* DW_FORM_data4 */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x1b /* DW_AT_comp_dir */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x25 /* DW_AT_producer */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x13 /* DW_AT_language */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 2 /* Abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0 /* has_children */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3a /* DW_AT_decl_file */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3b /* DW_AT_decl_line */ + .uleb128 0xb /* DW_FORM_data1 */ + .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 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + +/* Line table */ + .section .debug_line +.Lline1_begin: + .4byte .Lline1_end - .Lline1_start /* Initial length */ +.Lline1_start: + .2byte 2 /* Version */ + .4byte .Lline1_lines - .Lline1_hdr /* header_length */ +.Lline1_hdr: + .byte 1 /* Minimum insn length */ + .byte 1 /* default_is_stmt */ + .byte 1 /* line_base */ + .byte 1 /* line_range */ + .byte 0x10 /* opcode_base */ + + /* Standard lengths */ + .byte 0 + .byte 1 + .byte 1 + .byte 1 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + + /* Include directories */ + .ascii "/tmp\0" + .byte 0 + + /* File names */ + .ascii "inner.c\0" + .uleb128 1 + .uleb128 0 + .uleb128 0 + + .byte 0 + +.Lline1_lines: + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_inner + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 1 /* ... to 2 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lend_inner + + .byte 0 /* DW_LNE_end_of_sequence */ + .uleb128 1 + .byte 1 + +.Lline1_end: diff --git a/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S b/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S new file mode 100644 index 0000000..3012e45 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap-outer.S @@ -0,0 +1,208 @@ +/* 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 <http://www.gnu.org/licenses/>. */ + + .text + + .globl _start +_start: + + .globl outer_before + .type outer_before, %function +outer_before: +.Lbegin_outer_before: + .int 0 +.Lend_outer_before: + .size outer_before, . - outer_before + + .globl outer_inner +outer_inner: + + .int 0 + + .globl outer_after + .type outer_after, %function +outer_after: +.Lbegin_outer_after: + .int 0 +.Lend_outer_after: + .size outer_after, . - outer_after + +/* Debug information */ + + .section .debug_info +.Lcu1_begin: + /* CU header */ + .4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */ +.Lcu1_start: + .2byte 2 /* DWARF Version */ + .4byte .Labbrev1_begin /* Offset into abbrev section */ + .byte 4 /* Pointer size */ + + /* CU die */ + .uleb128 1 /* Abbrev: DW_TAG_compile_unit */ + .4byte .Lline1_begin /* DW_AT_stmt_list */ + .4byte .Ldebug_ranges /* DW_AT_ranges */ + .ascii "outer.c\0" /* DW_AT_name */ + .ascii "/tmp\0" /* DW_AT_comp_dir */ + .ascii "GNU C 3.3.3\0" /* DW_AT_producer */ + .byte 1 /* DW_AT_language (C) */ + + /* outer_before */ + .uleb128 2 /* Abbrev: DW_TAG_subprogram */ + .byte 1 /* DW_AT_external */ + .byte 1 /* DW_AT_decl_file */ + .byte 1 /* DW_AT_decl_line */ + .ascii "outer_before\0" /* DW_AT_name */ + .4byte .Lbegin_outer_before /* DW_AT_low_pc */ + .4byte .Lend_outer_before /* DW_AT_high_pc */ + + /* outer_after */ + .uleb128 2 /* Abbrev: DW_TAG_subprogram */ + .byte 1 /* DW_AT_external */ + .byte 1 /* DW_AT_decl_file */ + .byte 2 /* DW_AT_decl_line */ + .ascii "outer_after\0" /* DW_AT_name */ + .4byte .Lbegin_outer_after /* DW_AT_low_pc */ + .4byte .Lend_outer_after /* DW_AT_high_pc */ + + .byte 0 /* End of children of CU */ + +.Lcu1_end: + +/* DW_AT_ranges. */ + .section .debug_ranges +.Ldebug_ranges: + .4byte .Lbegin_outer_before + .4byte .Lend_outer_before + .4byte .Lbegin_outer_after + .4byte .Lend_outer_after + .4byte 0 + .4byte 0 + +/* Abbrev table */ + .section .debug_abbrev +.Labbrev1_begin: + .uleb128 1 /* Abbrev code */ + .uleb128 0x11 /* DW_TAG_compile_unit */ + .byte 1 /* has_children */ + .uleb128 0x10 /* DW_AT_stmt_list */ + .uleb128 0x6 /* DW_FORM_data4 */ + .uleb128 0x55 /* DW_AT_ranges */ + .uleb128 0x6 /* DW_FORM_data4 */ + .uleb128 0x3 /* DW_AT_name */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x1b /* DW_AT_comp_dir */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x25 /* DW_AT_producer */ + .uleb128 0x8 /* DW_FORM_string */ + .uleb128 0x13 /* DW_AT_language */ + .uleb128 0xb /* DW_FORM_data1 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .uleb128 2 /* Abbrev code */ + .uleb128 0x2e /* DW_TAG_subprogram */ + .byte 0 /* has_children */ + .uleb128 0x3f /* DW_AT_external */ + .uleb128 0xc /* DW_FORM_flag */ + .uleb128 0x3a /* DW_AT_decl_file */ + .uleb128 0xb /* DW_FORM_data1 */ + .uleb128 0x3b /* DW_AT_decl_line */ + .uleb128 0xb /* DW_FORM_data1 */ + .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 */ + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + + .byte 0x0 /* Terminator */ + .byte 0x0 /* Terminator */ + +/* Line table */ + .section .debug_line +.Lline1_begin: + .4byte .Lline1_end - .Lline1_start /* Initial length */ +.Lline1_start: + .2byte 2 /* Version */ + .4byte .Lline1_lines - .Lline1_hdr /* header_length */ +.Lline1_hdr: + .byte 1 /* Minimum insn length */ + .byte 1 /* default_is_stmt */ + .byte 1 /* line_base */ + .byte 1 /* line_range */ + .byte 0x10 /* opcode_base */ + + /* Standard lengths */ + .byte 0 + .byte 1 + .byte 1 + .byte 1 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + + /* Include directories */ + .ascii "/tmp\0" + .byte 0 + + /* File names */ + .ascii "outer.c\0" + .uleb128 1 + .uleb128 0 + .uleb128 0 + + .byte 0 + +.Lline1_lines: + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_outer_before + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lbegin_outer_after + + .byte 3 /* DW_LNS_advance_line */ + .sleb128 2 /* ... to 3 */ + + .byte 1 /* DW_LNS_copy */ + + .byte 0 /* DW_LNE_set_address */ + .uleb128 5 + .byte 2 + .4byte .Lend_outer_after + + .byte 0 /* DW_LNE_end_of_sequence */ + .uleb128 1 + .byte 1 + +.Lline1_end: diff --git a/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp b/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp new file mode 100644 index 0000000..4ae4815 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dw2-objfile-overlap.exp @@ -0,0 +1,47 @@ +# 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 <http://www.gnu.org/licenses/>. +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-objfile-overlap" +set srcfile_outer ${testfile}-outer.S +set srcfile_inner ${testfile}-inner.S +set executable_outer ${testfile}-outer.x +set binfile_outer ${objdir}/${subdir}/${executable_outer} +set binfile_inner ${objdir}/${subdir}/${testfile}-inner.x + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile_outer}" "${binfile_outer}" \ + object {}] != "" + || [gdb_compile "${srcdir}/${subdir}/${srcfile_inner}" "${binfile_inner}" \ + object {}] != "" } { + return -1 +} + +clean_restart $executable_outer + +gdb_test "add-symbol-file $binfile_inner outer_inner" \ + {Reading symbols from .*\.\.\.done\.} "add-symbol-file" \ + "\r\n\t\\.text_addr = 0x\[0-9a-f\]+\r\n\\(y or n\\) \$" "y" + +# Expand symtab for ${binfile_outer}. +gdb_breakpoint "*outer_before" + +# FAIL was: +# No line number information available for address 0x4 <outer_inner> +gdb_test "info line inner" {Line 2 of "inner\.c" starts at address .*} |