diff options
author | Sami Wagiaalla <swagiaal@redhat.com> | 2009-06-23 17:46:52 +0000 |
---|---|---|
committer | Sami Wagiaalla <swagiaal@redhat.com> | 2009-06-23 17:46:52 +0000 |
commit | 27aa8d6aa032b25160328cd92c78c4f8158fa0b7 (patch) | |
tree | 2b823b28f96ac6982967c72208f9ec1423306ce4 /gdb/testsuite | |
parent | ad068eabda988774e168b3f9b410306b40f5c191 (diff) | |
download | fsf-binutils-gdb-27aa8d6aa032b25160328cd92c78c4f8158fa0b7.zip fsf-binutils-gdb-27aa8d6aa032b25160328cd92c78c4f8158fa0b7.tar.gz fsf-binutils-gdb-27aa8d6aa032b25160328cd92c78c4f8158fa0b7.tar.bz2 |
2009-06-23 Sami Wagiaalla <swagiaal@redhat.com>
* dwarf2read.c (process_die): Handle import statements
(DW_TAG_imported_declaration, case DW_TAG_imported_module)
(read_import_statement): New.
(read_func_scope): Update using_directives to point to current context
(read_lexical_block_scope): Ditto.
* cp-support.h: Added prototype for cp_add_using.
* cp-namespace.c: Removed local context_stack.
(cp_initialize_namespace): Deleted.
(cp_finalize_namespace): Deleted.
(cp_add_using_directive): Use using_directives instead of using_list.
(cp_add_using): No longer static.
* buildsym.h: Created global using_direct variable.
Created using_direct variable in context_stack.
* buildsym.c (finish_block): Set using directives for the block under
construction.
(start_symtab): Removed call to cp_initialize_namespace().
(end_symtab): Removed call to cp_finalize_namespace().
(push_context): Save and reset using_directives.
* block.c (block_using): Return using directives for given
block instead of static block.
2009-06-23 Sami Wagiaalla <swagiaal@redhat.com>
* gdb.cp/namespace-using.exp: New test.
* gdb.cp/namespace-using.cc: New test.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/namespace-using.cc | 45 | ||||
-rw-r--r-- | gdb/testsuite/gdb.cp/namespace-using.exp | 87 |
3 files changed, 137 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index f9ce48d..8732519 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-06-23 Sami Wagiaalla <swagiaal@redhat.com> + + * gdb.cp/namespace-using.exp: New test. + * gdb.cp/namespace-using.cc: New test. + 2009-05-20 Joel Brobecker <brobecker@adacore.com> * gdb.ada/variant_record_packed_array: New testcase. diff --git a/gdb/testsuite/gdb.cp/namespace-using.cc b/gdb/testsuite/gdb.cp/namespace-using.cc new file mode 100644 index 0000000..4786fd5 --- /dev/null +++ b/gdb/testsuite/gdb.cp/namespace-using.cc @@ -0,0 +1,45 @@ +namespace A +{ + int _a = 1; + int x = 2; +} + +int marker4(){ + using A::x; + return 0; +} + +int marker3(){ + return marker4(); +} + +int marker2() +{ + namespace B = A; + B::_a; + return marker3(); +} + +int marker1() +{ + int total = 0; + { + int b = 1; + { + using namespace A; + int c = 2; + { + int d = 3; + total = _a + b + c + d + marker2(); // marker1 stop + } + } + } + return total; +} + +int main() +{ + using namespace A; + _a; + return marker1(); +} diff --git a/gdb/testsuite/gdb.cp/namespace-using.exp b/gdb/testsuite/gdb.cp/namespace-using.exp new file mode 100644 index 0000000..f24973f --- /dev/null +++ b/gdb/testsuite/gdb.cp/namespace-using.exp @@ -0,0 +1,87 @@ +# Copyright 2008 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/>. + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +set testfile namespace-using +set srcfile ${testfile}.cc +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { + untested "Couldn't compile test program" + return -1 +} + +# Get things started. + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +############################################ +# test printing of namespace imported within +# the function. + +if ![runto_main] then { + perror "couldn't run to breakpoint main" + continue +} + +gdb_test "print _a" "= 1" + +############################################ +# test printing of namespace imported into +# a scope containing the pc. + +gdb_breakpoint [gdb_get_line_number "marker1 stop"] +gdb_continue_to_breakpoint "marker1 stop" + +gdb_test "print _a" "= 1" "print _a in a nested scope" + +############################################ +# Test printing of namespace aliases + +setup_kfail "gdb/7935" "*-*-*" +if ![runto marker2] then { + perror "couldn't run to breakpoint marker2" + continue +} + +gdb_test "print B::a" "= 1" + +############################################ +# Test that names are not printed when they +# are not imported + +gdb_breakpoint "marker3" +gdb_continue_to_breakpoint "marker3" + +gdb_test "print _a" "No symbol \"_a\" in current context." "Print a without import" + +############################################ +# Test printing of individually imported elements + +setup_kfail "gdb/7936" "*-*-*" +if ![runto marker4] then { + perror "couldn't run to breakpoint marker4" + continue +} + +gdb_test "print x" "= 2" |