[java] fix some alpha/ia64 compile failures
Richard Henderson
rth@redhat.com
Fri Dec 21 11:47:00 GMT 2001
Any symbol that is not defined in the current object file must be
marked DECL_EXTERNAL. This fixes around 60 failures of the form
ld: gp-relative relocation against dynamic symbol _Jv_intClass
Committed as obvious; these symbols are defined in C++ in libjava.
There is one more similar failure (PR375) where the target of the
relocation is instead java::lang::Boolean::TRUE, but I have no
idea how to fix it. The DECL is created in add_field, and the
correct solution would appear to be to test
is_compiled_class (class) != 2
except that read_class always sets current_class to the class
being loaded, so is_compiled_class always equals 2 at this point.
Ideas?
r~
* class.c (build_class_ref): Mark _Jv_fooClass DECL_EXTERNAL.
Index: class.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/java/class.c,v
retrieving revision 1.121
diff -c -p -d -r1.121 class.c
*** class.c 2001/12/16 16:23:49 1.121
--- class.c 2001/12/21 19:22:16
*************** build_class_ref (type)
*** 1089,1094 ****
--- 1092,1098 ----
decl = build_decl (VAR_DECL, decl_name, class_type_node);
TREE_STATIC (decl) = 1;
TREE_PUBLIC (decl) = 1;
+ DECL_EXTERNAL (decl) = 1;
make_decl_rtl (decl, NULL);
pushdecl_top_level (decl);
if (is_compiled == 1)
More information about the Gcc-patches
mailing list