[Kaffe] bug found in Kaffe's classloader implementation
Moses DeJong
dejong at cs.umn.edu
Fri Mar 19 15:07:39 PST 1999
I just ran the cvs code and it works now. Thanks.
Mo DeJong
dejong at cs.umn.edu
On Wed, 17 Mar 1999, Godmar Back wrote:
>
> Should be fixed now.
>
> Thanks,
>
> - Godmar
>
> >
> > Hello.
> >
> > I have run into another problem with kaffe. This example code
> > shows how the classloader works in the JDK and that Kaffe
> > just calls exit(). I tried to implement a fix for this problem
> > in the file kaffe/kaffevm/readClass.c but the code does not
> > want to compile. Could someone with more knowledge of the kaffe
> > internals take a look at this problem and my partial fix?
> >
> >
> >
> > public class ClassDefineBug {
> >
> > public static void main(String[] argv) throws Exception {
> >
> > MyClassLoader mcl = new MyClassLoader();
> >
> > String data = "somestring";
> >
> > Class result = mcl.defineClass(null, data.getBytes());
> >
> > System.out.println("result is " + result);
> > }
> > }
> >
> > class MyClassLoader extends ClassLoader {
> >
> > Class defineClass(String className, byte[] classData) {
> > Class result = null;
> > try {
> > result = defineClass(null, classData, 0, classData.length);
> > } catch (ClassFormatError e) {
> > System.out.println("ClassFormatError caught \"" + e.getMessage()
> > + "\"");
> > }
> > return result;
> > }
> >
> >
> > protected Class loadClass(String className,boolean resolveIt)
> > throws ClassNotFoundException, SecurityException
> > {
> > return Class.forName(className);
> > }
> >
> > }
> >
> >
> >
> >
> >
> >
> > JDK output
> >
> > % java ClassDefineBug
> > ClassFormatError caught "Bad magic number"
> > result is null
> >
> >
> >
> > Kaffe output
> >
> > % kaffe ClassDefineBug
> > Bad magic 736f6d65 in class
> >
> >
> >
> >
> >
> > Index: readClass.c
> > ===================================================================
> > RCS file: /home/cvspublic/kaffe/kaffe/kaffevm/readClass.c,v
> > retrieving revision 1.5
> > diff -u -r1.5 readClass.c
> > --- readClass.c 1999/01/07 21:03:19 1.5
> > +++ readClass.c 1999/03/18 03:13:31
> > @@ -19,6 +19,7 @@
> > #include "file.h"
> > #include "access.h"
> > #include "object.h"
> > +#include "errors.h"
> > #include "constants.h"
> > #ifdef KAFFEH
> > #include <readClassConfig.h>
> > @@ -41,8 +42,13 @@
> > /* Read in class info */
> > readu4(&magic, fp);
> > if (magic != JAVAMAGIC) {
> > + /*
> > fprintf(stderr, "Bad magic %x in class\n", magic);
> > EXIT(1);
> > + */
> > + SET_LANG_EXCEPTION_MESSAGE(einfo,
> > + ClassFormatError, "Bad magic number");
> > + return (0);
> > }
> > readu2(&minor_version, fp);
> > readu2(&major_version, fp);
> >
> >
> >
> >
> > thanks
> >
> > Mo DeJong
> > dejong at cs.umn.edu
> >
> >
>
>
More information about the kaffe
mailing list