Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(38)

Side by Side Diff: gdb/cp-namespace.c

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/cp-name-parser.y ('k') | gdb/cp-support.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Helper routines for C++ support in GDB. 1 /* Helper routines for C++ support in GDB.
2 Copyright (C) 2003-2004, 2007-2012 Free Software Foundation, Inc. 2 Copyright (C) 2003-2004, 2007-2012 Free Software Foundation, Inc.
3 3
4 Contributed by David Carlton and by Kealia, Inc. 4 Contributed by David Carlton and by Kealia, Inc.
5 5
6 This file is part of GDB. 6 This file is part of GDB.
7 7
8 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or 10 the Free Software Foundation; either version 3 of the License, or
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 sym = lookup_symbol_aux_block (name, global_block, domain); 653 sym = lookup_symbol_aux_block (name, global_block, domain);
654 } 654 }
655 else 655 else
656 { 656 {
657 sym = lookup_symbol_global (name, block, domain); 657 sym = lookup_symbol_global (name, block, domain);
658 } 658 }
659 659
660 return sym; 660 return sym;
661 } 661 }
662 662
663 /* Look up a type named NESTED_NAME that is nested inside the C++ 663 /* Look up a symbol named NESTED_NAME that is nested inside the C++
664 class or namespace given by PARENT_TYPE, from within the context 664 class or namespace given by PARENT_TYPE, from within the context
665 given by BLOCK. Return NULL if there is no such nested type. */ 665 given by BLOCK. Return NULL if there is no such nested type. */
666 666
667 struct type * 667 struct symbol *
668 cp_lookup_nested_type (struct type *parent_type, 668 cp_lookup_nested_symbol (struct type *parent_type,
669 » » const char *nested_name, 669 » » » const char *nested_name,
670 » » const struct block *block) 670 » » » const struct block *block)
671 { 671 {
672 /* type_name_no_tag_required provides better error reporting using the 672 /* type_name_no_tag_required provides better error reporting using the
673 original type. */ 673 original type. */
674 struct type *saved_parent_type = parent_type; 674 struct type *saved_parent_type = parent_type;
675 675
676 CHECK_TYPEDEF (parent_type); 676 CHECK_TYPEDEF (parent_type);
677 677
678 switch (TYPE_CODE (parent_type)) 678 switch (TYPE_CODE (parent_type))
679 { 679 {
680 case TYPE_CODE_STRUCT: 680 case TYPE_CODE_STRUCT:
681 case TYPE_CODE_NAMESPACE: 681 case TYPE_CODE_NAMESPACE:
682 case TYPE_CODE_UNION: 682 case TYPE_CODE_UNION:
683 { 683 {
684 /* NOTE: carlton/2003-11-10: We don't treat C++ class members 684 /* NOTE: carlton/2003-11-10: We don't treat C++ class members
685 of classes like, say, data or function members. Instead, 685 of classes like, say, data or function members. Instead,
686 they're just represented by symbols whose names are 686 they're just represented by symbols whose names are
687 qualified by the name of the surrounding class. This is 687 qualified by the name of the surrounding class. This is
688 just like members of namespaces; in particular, 688 just like members of namespaces; in particular,
689 lookup_symbol_namespace works when looking them up. */ 689 lookup_symbol_namespace works when looking them up. */
690 690
691 const char *parent_name = type_name_no_tag_or_error (saved_parent_type); 691 const char *parent_name = type_name_no_tag_or_error (saved_parent_type);
692 struct symbol *sym 692 struct symbol *sym
693 = cp_lookup_symbol_in_namespace (parent_name, nested_name, 693 = cp_lookup_symbol_in_namespace (parent_name, nested_name,
694 block, VAR_DOMAIN); 694 block, VAR_DOMAIN);
695 char *concatenated_name; 695 char *concatenated_name;
696 696
697 » if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF) 697 » if (sym != NULL)
698 » return SYMBOL_TYPE (sym); 698 » return sym;
699 699
700 /* Now search all static file-level symbols. Not strictly 700 /* Now search all static file-level symbols. Not strictly
701 correct, but more useful than an error. We do not try to 701 correct, but more useful than an error. We do not try to
702 guess any imported namespace as even the fully specified 702 guess any imported namespace as even the fully specified
703 namespace seach is is already not C++ compliant and more 703 namespace seach is is already not C++ compliant and more
704 assumptions could make it too magic. */ 704 assumptions could make it too magic. */
705 705
706 concatenated_name = alloca (strlen (parent_name) + 2 706 concatenated_name = alloca (strlen (parent_name) + 2
707 + strlen (nested_name) + 1); 707 + strlen (nested_name) + 1);
708 sprintf (concatenated_name, "%s::%s", 708 sprintf (concatenated_name, "%s::%s",
709 parent_name, nested_name); 709 parent_name, nested_name);
710 » sym = lookup_static_symbol_aux (concatenated_name, 710 » sym = lookup_static_symbol_aux (concatenated_name, VAR_DOMAIN);
711 » » » » » VAR_DOMAIN); 711 » if (sym != NULL)
712 » if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF) 712 » return sym;
713 » return SYMBOL_TYPE (sym);
714 713
715 return NULL; 714 return NULL;
716 } 715 }
717 default: 716 default:
718 internal_error (__FILE__, __LINE__, 717 internal_error (__FILE__, __LINE__,
719 » » _("cp_lookup_nested_type called " 718 » » _("cp_lookup_nested_symbol called "
720 "on a non-aggregate type.")); 719 "on a non-aggregate type."));
721 } 720 }
722 } 721 }
723 722
724 /* The C++-version of lookup_transparent_type. */ 723 /* The C++-version of lookup_transparent_type. */
725 724
726 /* FIXME: carlton/2004-01-16: The problem that this is trying to 725 /* FIXME: carlton/2004-01-16: The problem that this is trying to
727 address is that, unfortunately, sometimes NAME is wrong: it may not 726 address is that, unfortunately, sometimes NAME is wrong: it may not
728 include the name of namespaces enclosing the type in question. 727 include the name of namespaces enclosing the type in question.
729 lookup_transparent_type gets called when the type in question 728 lookup_transparent_type gets called when the type in question
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 _initialize_cp_namespace (void) 806 _initialize_cp_namespace (void)
808 { 807 {
809 struct cmd_list_element *cmd; 808 struct cmd_list_element *cmd;
810 809
811 cmd = add_cmd ("namespace", class_maintenance, 810 cmd = add_cmd ("namespace", class_maintenance,
812 maintenance_cplus_namespace, 811 maintenance_cplus_namespace,
813 _("Deprecated placeholder for removed functionality."), 812 _("Deprecated placeholder for removed functionality."),
814 &maint_cplus_cmd_list); 813 &maint_cplus_cmd_list);
815 deprecate_cmd (cmd, NULL); 814 deprecate_cmd (cmd, NULL);
816 } 815 }
OLDNEW
« no previous file with comments | « gdb/cp-name-parser.y ('k') | gdb/cp-support.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698