diff options
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/Makefile.in | 13 | ||||
-rw-r--r-- | gdb/symtab.c | 56 |
3 files changed, 59 insertions, 23 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e213ab1..9141c3d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +2004-10-02 Paul N. Hilfinger <Hilfinger@gnat.com> + + Turn on initial Ada support (mainly expression evaluation). + + * Makefile.in (SFILES): Remove ada-tasks.c. + (HFILES_NO_SRCDIR): Add ada-lang.h. + (COMMON_OBS): Add ada-lang.o, ada-typeprint.o, ada-valprint.o. + (YYOBJ): Add ada-exp.o. + (rule .l.c): Generalize to not mention ada. + * symtab.c: Include ada-lang.h. + (symbol_natural_name, symbol_demangled_name) + (symbol_search_name): Add Ada case. + 2004-10-01 Andrew Cagney <cagney@gnu.org> * Makefile.in (COMMON_OBS): Add inf-child.o. diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 1731166..d777175 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -510,7 +510,7 @@ TARGET_FLAGS_TO_PASS = \ # Links made at configuration time should not be specified here, since # SFILES is used in building the distribution archive. -SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c ada-tasks.c \ +SFILES = ada-exp.y ada-lang.c ada-typeprint.c ada-valprint.c \ ax-general.c ax-gdb.c \ bcache.c \ bfd-target.c \ @@ -848,7 +848,7 @@ HFILES_NO_SRCDIR = bcache.h buildsym.h call-cmds.h coff-solib.h defs.h \ symfile.h symfile-mem.h stabsread.h target.h terminal.h typeprint.h \ xcoffsolib.h \ macrotab.h macroexp.h macroscope.h \ - c-lang.h f-lang.h \ + ada-lang.h c-lang.h f-lang.h \ jv-lang.h \ m2-lang.h p-lang.h \ complaints.h valprint.h \ @@ -910,7 +910,7 @@ COMMON_OBS = $(DEPFILES) $(YYOBJ) \ dbxread.o coffread.o coff-pe-read.o elfread.o \ dwarfread.o dwarf2read.o mipsread.o stabsread.o corefile.o \ dwarf2expr.o dwarf2loc.o dwarf2-frame.o \ - c-lang.o f-lang.o objc-lang.o \ + ada-lang.o c-lang.o f-lang.o objc-lang.o \ ui-out.o cli-out.o \ varobj.o wrapper.o \ jv-lang.o jv-valprint.o jv-typeprint.o \ @@ -918,8 +918,8 @@ COMMON_OBS = $(DEPFILES) $(YYOBJ) \ scm-exp.o scm-lang.o scm-valprint.o \ sentinel-frame.o \ complaints.o typeprint.o \ - c-typeprint.o f-typeprint.o m2-typeprint.o \ - c-valprint.o cp-valprint.o f-valprint.o m2-valprint.o \ + ada-typeprint.o c-typeprint.o f-typeprint.o m2-typeprint.o \ + ada-valprint.o c-valprint.o cp-valprint.o f-valprint.o m2-valprint.o \ nlmread.o serial.o mdebugread.o top.o utils.o \ ui-file.o \ user-regs.o \ @@ -943,6 +943,7 @@ YYFILES = c-exp.c \ f-exp.c m2-exp.c p-exp.c YYOBJ = c-exp.o \ objc-exp.o \ + ada-exp.o \ jv-exp.o \ f-exp.o m2-exp.o p-exp.o @@ -1585,7 +1586,7 @@ po/$(PACKAGE).pot: force echo $(FLEX) -Isit $< ">" $@; \ $(FLEX) -Isit $< > $@; \ elif [ ! -f $@ -a ! -f $< ]; then \ - echo "ada-lex.c missing and flex not available."; \ + echo "$< missing and flex not available."; \ false; \ elif [ ! -f $@ ]; then \ echo "Warning: $*.c older than $*.l and flex not available."; \ diff --git a/gdb/symtab.c b/gdb/symtab.c index 94b6081..8ed6d9e 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -41,6 +41,7 @@ #include "source.h" #include "filenames.h" /* for FILENAME_CMP */ #include "objc-lang.h" +#include "ada-lang.h" #include "hashtab.h" @@ -634,17 +635,24 @@ symbol_init_demangled_name (struct general_symbol_info *gsymbol, char * symbol_natural_name (const struct general_symbol_info *gsymbol) { - if ((gsymbol->language == language_cplus - || gsymbol->language == language_java - || gsymbol->language == language_objc) - && (gsymbol->language_specific.cplus_specific.demangled_name != NULL)) + switch (gsymbol->language) { - return gsymbol->language_specific.cplus_specific.demangled_name; - } - else - { - return gsymbol->name; + case language_cplus: + case language_java: + case language_objc: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + break; + case language_ada: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + else + return ada_decode_symbol (gsymbol); + break; + default: + break; } + return gsymbol->name; } /* Return the demangled name for a symbol based on the language for @@ -652,13 +660,24 @@ symbol_natural_name (const struct general_symbol_info *gsymbol) char * symbol_demangled_name (struct general_symbol_info *gsymbol) { - if (gsymbol->language == language_cplus - || gsymbol->language == language_java - || gsymbol->language == language_objc) - return gsymbol->language_specific.cplus_specific.demangled_name; - - else - return NULL; + switch (gsymbol->language) + { + case language_cplus: + case language_java: + case language_objc: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + break; + case language_ada: + if (gsymbol->language_specific.cplus_specific.demangled_name != NULL) + return gsymbol->language_specific.cplus_specific.demangled_name; + else + return ada_decode_symbol (gsymbol); + break; + default: + break; + } + return NULL; } /* Return the search name of a symbol---generally the demangled or @@ -666,7 +685,10 @@ symbol_demangled_name (struct general_symbol_info *gsymbol) If there is no distinct demangled name, then returns the same value (same pointer) as SYMBOL_LINKAGE_NAME. */ char *symbol_search_name (const struct general_symbol_info *gsymbol) { - return symbol_natural_name (gsymbol); + if (gsymbol->language == language_ada) + return gsymbol->name; + else + return symbol_natural_name (gsymbol); } /* Initialize the structure fields to zero values. */ |