* 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.
This commit is contained in:
Per Bothner 1997-07-31 22:39:34 +00:00
parent c1b2205e48
commit 166606b71e
8 changed files with 127 additions and 43 deletions

View 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

View 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

View 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

View 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 */

View 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 */

View 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));

36
gdb/jv-typeprint.c Normal file
View File

@ -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);
}

View 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