* java-*: Renamed to jv-*, to make fit within 14 characters.
authorPer Bothner <per@bothner.com>
Thu, 31 Jul 1997 22:39:34 +0000 (22:39 +0000)
committerPer Bothner <per@bothner.com>
Thu, 31 Jul 1997 22:39:34 +0000 (22:39 +0000)
* jv-lang.h (java_type_print):  Added declaration.
* jv-typeprint.c:  New file.  Provides java_print_type.
* jv-lang.c (java_link_class_type):  New function.
(java_language_defn):  Replace c_print_type by java_print_type.
* Makefile.in:  Update accordingly.

gdb/.Sanitize
gdb/ChangeLog
gdb/Makefile.in
gdb/jv-exp.y [moved from gdb/java-exp.y with 99% similarity]
gdb/jv-lang.c [moved from gdb/java-lang.c with 94% similarity]
gdb/jv-lang.h [moved from gdb/java-lang.h with 90% similarity]
gdb/jv-typeprint.c [new file with mode: 0644]
gdb/jv-valprint.c [moved from gdb/java-valprint.c with 98% similarity]

index 06d8765..08d0b23 100644 (file)
@@ -263,10 +263,11 @@ inftarg.c
 irix4-nat.c
 irix5-nat.c
 isi-xdep.c
-java-exp.y
-java-lang.c
-java-lang.h
-java-valprint.c
+jv-exp.y
+jv-lang.c
+jv-lang.h
+jv-valprint.c
+jv-typeprint.c
 kdb-start.c
 language.c
 language.h
index a3e16a9..6dd60ee 100644 (file)
@@ -1,3 +1,12 @@
+Wed Jul 30 14:04:18 1997  Per Bothner  <bothner@cygnus.com>
+
+       * java-*:  Renamed to jv-*, to make fit within 14 characters.
+       * jv-lang.h (java_type_print):  Added declaration.
+       * jv-typeprint.c:  New file.  Provides java_print_type.
+       * jv-lang.c (java_link_class_type):  New function.
+       (java_language_defn):  Replace c_print_type by java_print_type.
+       * Makefile.in:  Update accordingly.
+
 Tue Jul 29 10:12:44 1997  Felix Lee  <flee@cygnus.com>
 
        * Makefile.in (init.c): except some mswin files do need to be
index bec9aa8..0637f5b 100644 (file)
@@ -381,7 +381,7 @@ SFILES = bcache.c blockframe.c breakpoint.c buildsym.c c-exp.y \
        elfread.c environ.c eval.c expprint.c \
        f-exp.y f-lang.c f-typeprint.c f-valprint.c findvar.c \
        gdbtypes.c infcmd.c inflow.c infrun.c language.c \
-       java-exp.y java-lang.c java-valprint.c \
+       jv-exp.y jv-lang.c jv-valprint.c jv-typeprint.c \
        m2-exp.y m2-lang.c m2-typeprint.c m2-valprint.c main.c maint.c \
        mem-break.c minsyms.c mipsread.c nlmread.c objfiles.c parse.c \
        printcmd.c remote.c remote-nrom.c scm-exp.c scm-lang.c scm-valprint.c \
@@ -451,7 +451,7 @@ HFILES_NO_SRCDIR = bcache.h buildsym.h call-cmds.h coff-solib.h defs.h \
        gdb-stabs.h $(inferior_h) language.h minimon.h monitor.h \
        objfiles.h parser-defs.h partial-stab.h serial.h signals.h solib.h \
        symfile.h stabsread.h target.h terminal.h typeprint.h xcoffsolib.h \
-       c-lang.h ch-lang.h f-lang.h java-lang.h m2-lang.h \
+       c-lang.h ch-lang.h f-lang.h jv-lang.h m2-lang.h \
        complaints.h valprint.h \
        29k-share/udi/udiids.h 29k-share/udi_soc nindy-share/b.out.h \
        nindy-share/block_io.h nindy-share/coff.h \
@@ -498,7 +498,7 @@ COMMON_OBS = version.o blockframe.o breakpoint.o findvar.o stack.o thread.o \
        dbxread.o coffread.o elfread.o \
        dwarfread.o dwarf2read.o mipsread.o stabsread.o corefile.o \
        c-lang.o ch-exp.o ch-lang.o f-lang.o \
-       java-lang.o java-valprint.o m2-lang.o \
+       jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o \
        scm-exp.o scm-lang.o scm-valprint.o complaints.o typeprint.o \
        c-typeprint.o ch-typeprint.o f-typeprint.o m2-typeprint.o \
        c-valprint.o cp-valprint.o ch-valprint.o f-valprint.o m2-valprint.o \
@@ -517,8 +517,8 @@ NTSSTART = kdb-start.o
 SUBDIRS = doc testsuite nlm mswin
 
 # For now, shortcut the "configure GDB for fewer languages" stuff.
-YYFILES = c-exp.tab.c java-exp.tab.c f-exp.tab.c m2-exp.tab.c
-YYOBJ = c-exp.tab.o java-exp.tab.o f-exp.tab.o m2-exp.tab.o
+YYFILES = c-exp.tab.c jv-exp.tab.c f-exp.tab.c m2-exp.tab.c
+YYOBJ = c-exp.tab.o jv-exp.tab.o f-exp.tab.o m2-exp.tab.o
 
 # Things which need to be built when making a distribution.
 
@@ -666,10 +666,10 @@ libgdb-files: $(LIBGDBDEPS) Makefile.in
 saber_gdb: $(SFILES) $(DEPFILES) copying.c version.c
        #setopt load_flags $(CFLAGS) $(BFD_CFLAGS) -DHOST_SYS=SUN4_SYS
        #load ./init.c $(SFILES)
-       #unload $(srcdir)/c-exp.y $(srcdir)/java-exp.y $(srcdir)/m2-exp.y
+       #unload $(srcdir)/c-exp.y $(srcdir)/jv-exp.y $(srcdir)/m2-exp.y
        #unload vx-share/*.h
        #unload nindy-share/[A-Z]*
-       #load c-exp.tab.c java-exp.tab.c m2-exp.tab.c
+       #load c-exp.tab.c jv-exp.tab.c m2-exp.tab.c
        #load copying.c version.c
        #load ../opcodes/libopcodes.a
        #load ../libiberty/libiberty.a
@@ -773,7 +773,7 @@ maintainer-clean realclean: distclean clean
        @echo "This command is intended for maintainers to use;"
        @echo "it deletes files that may require special tools to rebuild."
        @$(MAKE) $(FLAGS_TO_PASS) DO=maintainer-clean "DODIRS=$(SUBDIRS)" subdir_do
-       rm -f c-exp.tab.c java-exp.tab.c f-exp.tab.c m2-exp.tab.c
+       rm -f c-exp.tab.c jv-exp.tab.c f-exp.tab.c m2-exp.tab.c
        rm -f TAGS $(INFOFILES)
        rm -f nm.h tm.h xm.h config.status
 
@@ -850,9 +850,9 @@ c-exp.tab.c: c-exp.y
        -rm y.tab.c
        mv c-exp.new ./c-exp.tab.c
 
-java-exp.tab.o: java-exp.tab.c
-java-exp.tab.c: java-exp.y
-       $(YACC) $(YFLAGS) $(srcdir)/java-exp.y
+jv-exp.tab.o: jv-exp.tab.c
+jv-exp.tab.c: jv-exp.y
+       $(YACC) $(YFLAGS) $(srcdir)/jv-exp.y
        -sed -e '/extern.*malloc/d' \
             -e '/extern.*realloc/d' \
             -e '/extern.*free/d' \
@@ -860,9 +860,9 @@ java-exp.tab.c: java-exp.y
             -e 's/malloc/xmalloc/g' \
             -e 's/realloc/xrealloc/g' \
             -e '/^#line.*y.tab.c/d' \
-         < y.tab.c > java-exp.new
+         < y.tab.c > jv-exp.new
        -rm y.tab.c
-       mv java-exp.new ./java-exp.tab.c
+       mv jv-exp.new ./jv-exp.tab.c
 
 f-exp.tab.o: f-exp.tab.c
 f-exp.tab.c: f-exp.y c-exp.tab.c
@@ -897,7 +897,7 @@ m2-exp.tab.c: m2-exp.y
        mv m2-exp.new ./m2-exp.tab.c
 
 # These files are updated atomically, so make never has to remove them
-.PRECIOUS: m2-exp.tab.c java-exp.tab.c f-exp.tab.c c-exp.tab.c
+.PRECIOUS: m2-exp.tab.c jv-exp.tab.c f-exp.tab.c c-exp.tab.c
 
 lint: $(LINTFILES)
        $(LINT) $(INCLUDE_CFLAGS) $(LINTFLAGS) $(LINTFILES) \
@@ -1631,7 +1631,7 @@ c-exp.tab.o: c-exp.tab.c c-lang.h $(defs_h) $(expression_h) \
        $(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
        $(bfd_h) objfiles.h symfile.h
 
-java-exp.tab.o: java-exp.tab.c java-lang.h $(defs_h) $(expression_h) \
+jv-exp.tab.o: jv-exp.tab.c jv-lang.h $(defs_h) $(expression_h) \
        $(gdbtypes_h) language.h parser-defs.h $(symtab_h) $(value_h) \
        $(bfd_h) objfiles.h symfile.h
 
similarity index 99%
rename from gdb/java-exp.y
rename to gdb/jv-exp.y
index 0e9ac47..d204993 100644 (file)
@@ -44,7 +44,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "value.h"
 #include "parser-defs.h"
 #include "language.h"
-#include "java-lang.h"
+#include "jv-lang.h"
 #include "bfd.h" /* Required by objfiles.h.  */
 #include "symfile.h" /* Required by objfiles.h.  */
 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
similarity index 94%
rename from gdb/java-lang.c
rename to gdb/jv-lang.c
index 66cf392..2e722f8 100644 (file)
@@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "gdb_string.h"
 #include "value.h"
 #include "c-lang.h"
-#include "java-lang.h"
+#include "jv-lang.h"
 #include "gdbcore.h"
 
 struct type *java_int_type;
@@ -50,6 +50,8 @@ struct type *java_object_type;
    compiled java methods. */
 struct objfile *dynamics_objfile = NULL;
 
+struct type *java_link_class_type PARAMS((struct type*, value_ptr));
+
 struct objfile *
 get_dynamics_objfile ()
 {
@@ -158,12 +160,31 @@ java_lookup_class (name)
   struct symbol *sym;
   sym = lookup_symbol (name, expression_context_block, STRUCT_NAMESPACE,
                       (int *) 0, (struct symtab **) NULL);
-  if (sym == NULL)
+  if (sym != NULL)
+    return SYMBOL_TYPE (sym);
+#if 0
+  CORE_ADDR addr;
+  if (called from parser)
     {
-      /* FIXME - should search inferior's symbol table. */
-      return NULL;
+      call lookup_class (or similar) in inferior;
+      if not found:
+       return NULL;
+      addr = found in inferior;
     }
-  return SYMBOL_TYPE (sym);
+  else
+    addr = 0;
+  struct type *type;
+  type = alloc_type (objfile);
+  TYPE_CODE (type) = TYPE_CODE_STRUCT;
+  INIT_CPLUS_SPECIFIC (type);
+  TYPE_NAME (type) = obsavestring (name, strlen(name), &objfile->type_obstack);
+  TYPE_FLAGS (type) |= TYPE_FLAG_STUB;
+  TYPE ? = addr;
+  return type;
+#else
+  /* FIXME - should search inferior's symbol table. */
+  return NULL;
+#endif
 }
 
 /* Return a nul-terminated string (allocated on OBSTACK) for
@@ -212,22 +233,15 @@ type_from_class (clas)
      value_ptr clas;
 {
   struct type *type;
-  struct type *tsuper;
-  int ninterfaces, nfields;
   char *name;
   value_ptr temp;
   struct objfile *objfile = get_dynamics_objfile();
-  value_ptr utf8_name, fields, field, method, methods;
+  value_ptr utf8_name;
   char *nptr;
   CORE_ADDR addr;
   struct block *bl;
-  int i, j;
-  int type_is_object = 0;
+  int i;
   int is_array = 0;
-  int nmethods;
-  struct fn_field *fn_fields;
-  struct fn_fieldlist *fn_fieldlists;
-  char *unqualified_name;
 
   type = check_typedef (VALUE_TYPE (clas));
   if (TYPE_CODE (type) == TYPE_CODE_PTR)
@@ -274,20 +288,41 @@ type_from_class (clas)
       VALUE_TYPE (temp) = lookup_pointer_type (VALUE_TYPE (clas));
       TYPE_TARGET_TYPE (type) = type_from_class (temp);
     }
-  unqualified_name = name;
   for (nptr = name;  *nptr != 0;  nptr++)
     {
       if (*nptr == '/')
-       {
-         *nptr = '.';
-         unqualified_name = nptr+1;
-       }
+       *nptr = '.';
     }
 
   ALLOCATE_CPLUS_STRUCT_TYPE (type);
   TYPE_NAME (type) = name;
 
   add_class_symtab_symbol (add_class_symbol (type, addr));
+  return java_link_class_type (type, clas);
+}
+
+/* Fill in class TYPE with data from the CLAS value. */ 
+
+struct type *
+java_link_class_type (type, clas)
+     struct type *type;
+     value_ptr clas;
+{
+  value_ptr temp;
+  char *unqualified_name;
+  char *name = TYPE_NAME (type);
+  int ninterfaces, nfields, nmethods;
+  int type_is_object = 0;
+  struct fn_field *fn_fields;
+  struct fn_fieldlist *fn_fieldlists;
+  value_ptr fields, field, method, methods;
+  int i, j;
+  struct objfile *objfile = get_dynamics_objfile();
+  struct type *tsuper;
+
+  unqualified_name = strrchr (name, '.');
+  if (unqualified_name == NULL)
+    unqualified_name = name;
 
   temp = clas;
   temp = value_struct_elt (&temp, NULL, "superclass", NULL, "structure");
@@ -677,7 +712,7 @@ const struct language_defn java_language_defn = {
   c_printchar,                 /* Print a character constant */
   c_printstr,                  /* Function to print string constant */
   java_create_fundamental_type,        /* Create fundamental type in this language */
-  c_print_type,                        /* Print a type using appropriate syntax */
+  java_print_type,             /* Print a type using appropriate syntax */
   java_val_print,              /* Print a value using appropriate syntax */
   java_value_print,            /* Print a top-level value */
   {"",      "",    "",   ""},  /* Binary format info */
similarity index 90%
rename from gdb/java-lang.h
rename to gdb/jv-lang.h
index 20f8b40..814fb4a 100644 (file)
@@ -18,10 +18,10 @@ along with this program; if not, write to the Free Software
 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 extern int
-java_parse PARAMS ((void));    /* Defined in java-exp.y */
+java_parse PARAMS ((void));    /* Defined in jv-exp.y */
 
 extern void
-java_error PARAMS ((char *));  /* Defined in java-exp.y */
+java_error PARAMS ((char *));  /* Defined in jv-exp.y */
 
 #define JAVA_OBJECT_SIZE (6 * 4)  /* sizeof (struct Object) FIXME ! */
 
@@ -61,3 +61,6 @@ extern struct type *get_java_object_type ();
 extern struct type * java_lookup_class PARAMS((char *));
 
 extern int is_object_type PARAMS ((struct type*));
+
+extern void                    /* Defined in jv-typeprint.c */
+java_print_type PARAMS ((struct type *, char *, GDB_FILE *, int, int));
diff --git a/gdb/jv-typeprint.c b/gdb/jv-typeprint.c
new file mode 100644 (file)
index 0000000..2f31214
--- /dev/null
@@ -0,0 +1,36 @@
+/* Support for printing Java types for GDB, the GNU debugger.
+   Copyright 1997 Free Software Foundation, Inc.
+
+This file is part of GDB.
+
+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 2 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, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+
+
+#include "defs.h"
+#include "symtab.h"
+#include "gdbtypes.h"
+
+/* LEVEL is the depth to indent lines by.  */
+
+void
+java_print_type (type, varstring, stream, show, level)
+     struct type *type;
+     char *varstring;
+     GDB_FILE *stream;
+     int show;
+     int level;
+{
+  c_print_type (type, varstring, stream, show, level);
+}
similarity index 98%
rename from gdb/java-valprint.c
rename to gdb/jv-valprint.c
index 511ac08..af60b17 100644 (file)
@@ -25,7 +25,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "demangle.h"
 #include "valprint.h"
 #include "language.h"
-#include "java-lang.h"
+#include "jv-lang.h"
 #include "c-lang.h"
 
 int