diff options
author | Tom Tromey <tromey@redhat.com> | 2013-08-07 19:57:51 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2013-08-07 19:57:51 +0000 |
commit | f9125b6c6c523dc3f0191fdb5b9551c6f5d70c61 (patch) | |
tree | b69053ffa18840afb67205aaf62c9660d98d6096 /gdb/testsuite/gdb.dwarf2 | |
parent | fdbb204be90dda0680acdf9b4829ddf531dc2aaa (diff) | |
download | gdb-f9125b6c6c523dc3f0191fdb5b9551c6f5d70c61.zip gdb-f9125b6c6c523dc3f0191fdb5b9551c6f5d70c61.tar.gz gdb-f9125b6c6c523dc3f0191fdb5b9551c6f5d70c61.tar.bz2 |
fix recursively_compute_inclusions and add dwz test case
Doug pointed out a while ago that in the final dwz -m patch, nothing
ever set symtab::user.
This patch fixes this oversight and adds a test case showing why it is
important.
Built and regtested (both ways) on x86-64 Fedora 18.
The new test unconditionally tests the partial unit machinery, which I
think is an added plus.
* dwarf2read.c (recursively_compute_inclusions): Add
"immediate_parent" argument. Set symtab's "user" field
if not set.
(compute_symtab_includes): Update.
* gdb.dwarf2/dwz.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.dwarf2')
-rw-r--r-- | gdb/testsuite/gdb.dwarf2/dwz.exp | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.dwarf2/dwz.exp b/gdb/testsuite/gdb.dwarf2/dwz.exp new file mode 100644 index 0000000..895444b --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/dwz.exp @@ -0,0 +1,106 @@ +# Copyright 2013 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 +} + +standard_testfile main.c dwz.S + +# Create the DWARF. +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + declare_labels partial_label double_label int_label int_label2 + + extern main + + cu {} { + partial_label: partial_unit {} { + subprogram { + {name main} + {low_pc main addr} + {high_pc "main + 10" addr} + } + } + } + + cu {} { + compile_unit {{language @DW_LANG_C}} { + int_label2: base_type { + {name int} + {byte_size 4 sdata} + {encoding @DW_ATE_signed} + } + + constant { + {name the_int} + {type :$int_label2} + {const_value 99 data1} + } + + constant { + {name other_int} + {type :$int_label2} + {const_value 99 data1} + } + } + } + + cu {} { + compile_unit {{language @DW_LANG_C}} { + imported_unit { + {import $partial_label ref_addr} + } + + int_label: base_type { + {name int} + {byte_size 4 sdata} + {encoding @DW_ATE_signed} + } + + constant { + {name the_int} + {type :$int_label} + {const_value 23 data1} + } + } + } +} + +if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile}1.o \ + object {nodebug}] != "" } { + return -1 +} + +if { [gdb_compile $asm_file ${binfile}2.o object {nodebug}] != "" } { + return -1 +} + +if { [gdb_compile [list ${binfile}1.o ${binfile}2.o] \ + "${binfile}" executable {}] != "" } { + return -1 +} + +clean_restart ${testfile} + +if ![runto_main] { + return -1 +} + +gdb_test "p other_int" " = 99" +gdb_test "p the_int" " = 23" |