Makefile.in: (JAVA_OBJS) Added entry xref.o.

1999-03-22  Alexandre Petit-Bianco  <apbianco@cygnus.com>
	* Makefile.in: (JAVA_OBJS) Added entry xref.o.
	(xref.o): New rule.
	* java-tree.h (flag_emit_xref): Declared extern.
	* lang.c: (xref.h): Included.
	(flag_emit_xref): New global variable.
	(lang_decode_option): Added support for -fxref.
	* xref.c: Created.
	* xref.h: Likewise.

From-SVN: r25907
This commit is contained in:
Alexandre Petit-Bianco 1999-03-22 19:57:37 +00:00 committed by Alexandre Petit-Bianco
parent a127db7565
commit 235acd3518
6 changed files with 149 additions and 1 deletions

View File

@ -1,3 +1,14 @@
1999-03-22 Alexandre Petit-Bianco <apbianco@cygnus.com>
* Makefile.in: (JAVA_OBJS) Added entry xref.o.
(xref.o): New rule.
* java-tree.h (flag_emit_xref): Declared extern.
* lang.c: (xref.h): Included.
(flag_emit_xref): New global variable.
(lang_decode_option): Added support for -fxref.
* xref.c: Created.
* xref.h: Likewise.
1999-03-21 Manfred Hollstein <manfred@s-direktnet.de>
* Make-lang.in ($(GCJ)$(exeext)): Add intl.o to list of files to be

View File

@ -175,7 +175,7 @@ INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config -I$(srcdir)
#
JAVA_OBJS = parse.o class.o decl.o expr.o constants.o lang.o typeck.o \
except.o verify.o zextract.o jcf-io.o jcf-parse.o mangle.o jcf-write.o \
buffer.o check-init.o jcf-depend.o jcf-path.o
buffer.o check-init.o jcf-depend.o jcf-path.o xref.o
JAVA_OBJS_LITE = parse-scan.o jv-scan.o
@ -315,5 +315,7 @@ typeck.o : typeck.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h convert.h \
$(srcdir)/../toplev.h $(srcdir)/../system.h
verify.o : verify.c $(CONFIG_H) $(JAVA_TREE_H) jcf.h javaop.h java-opcodes.h \
java-except.h $(srcdir)/../toplev.h $(srcdir)/../system.h
xref.o : xref.h $(CONFIG_H) $(JAVA_TREE_H) $(srcdir)/../toplev.h \
$(srcdir)/../system.h
zextract.o : zextract.c $(CONFIG_H) $(srcdir)/../system.h zipfile.h

View File

@ -127,6 +127,11 @@ extern int flag_assume_compiled;
extern int flag_emit_class_files;
/* When non zero, we emit xref strings. Values of the flag for xref
backends are defined in xref.h. */
extern int flag_emit_xref;
/* Turned to 1 if -Wall was encountered. See lang.c for their meanings. */
extern int flag_wall;
extern int flag_redundant;

View File

@ -32,6 +32,7 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "jcf.h"
#include "toplev.h"
#include "flags.h"
#include "xref.h"
#ifndef OBJECT_SUFFIX
# define OBJECT_SUFFIX ".o"
@ -87,6 +88,11 @@ int flag_assume_compiled = 1;
int flag_emit_class_files = 0;
/* When non zero, we emit xref strings. Values of the flag for xref
backends are defined in xref_flag_table, xref.c. */
int flag_emit_xref = 0;
/* When non zero, -Wall was turned on. */
int flag_wall = 0;
@ -168,6 +174,16 @@ lang_decode_option (argc, argv)
}
#undef ARG
#define XARG "-fxref="
if (strncmp (p, XARG, sizeof (XARG) - 1) == 0)
{
if (!(flag_emit_xref = xref_flag_value (p + sizeof (XARG) - 1)))
{
error ("Unkown xref back end `%s'", p + sizeof (XARG) - 1);
}
}
#undef XARG
if (p[0] == '-' && p[1] == 'f')
{
/* Some kind of -f option.

72
gcc/java/xref.c Normal file
View File

@ -0,0 +1,72 @@
/* Write cross reference information extracted from Java(TM)
source and bytecode files, in one of formats documented below.
Copyright (C) 1999 Free Software Foundation, Inc.
Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
This file is part of GNU CC.
GNU CC 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, or (at your option)
any later version.
GNU CC 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 GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
Java and all Java-based marks are trademarks or registered trademarks
of Sun Microsystems, Inc. in the United States and other countries.
The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include <stdio.h>
#include "config.h"
#include "tree.h"
#include "java-tree.h"
#include "xref.h"
static xref_flag_table xref_table [] = {
{NULL, NULL, NULL},
};
/* Decode an xref flag value. Return 0 if the flag wasn't found. */
int xref_flag_value (flag)
char *flag;
{
int i;
for (i = 0; xref_table [i].key; i++)
if (!strcmp (flag, xref_table [i].key))
return i+1;
return 0;
}
/* Branch to the right xref "back-end". */
void
expand_xref (node)
tree node;
{
/* Maintain these two cached. */
static FILE *fp = NULL;
static void (*current_expand) PROTO ((FILE *, tree)) = NULL;
if ( !flag_emit_xref )
return;
if (!fp)
fp = xref_table [flag_emit_xref-1].fp;
if (!current_expand)
current_expand = xref_table [flag_emit_xref-1].expand;
(*current_expand) (fp, node);
}
/* Implementation of the xref back-ends. */

42
gcc/java/xref.h Normal file
View File

@ -0,0 +1,42 @@
/* Definitions for the cross reference backend xref.c
Copyright (C) 1999 Free Software Foundation, Inc.
Contributed by Alexandre Petit-Bianco (apbianco@cygnus.com)
This file is part of GNU CC.
GNU CC 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, or (at your option)
any later version.
GNU CC 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 GNU CC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
Java and all Java-based marks are trademarks or registered trademarks
of Sun Microsystems, Inc. in the United States and other countries.
The Free Software Foundation is independent of Sun Microsystems, Inc. */
/* Exported functions. */
int xref_flag_value PROTO ((char *));
void xref_generate PROTO ((tree));
/* flag_emit_xref range of possible values. */
enum {
XREF_NONE = 0,
};
/* Lookup table to be used with the value of flag_emit_xref */
typedef struct {
char *key; /* Activator in -fxref=<key> */
void (*expand) PROTO ((FILE *, tree)); /* Function to write xrefs out */
FILE *fp; /* fp to use during the call. */
} xref_flag_table;