Alpha (Re: [kaffe] Testing for 1.1.0 release)

mcmahill@mtl.mit.edu mcmahill@mtl.mit.edu
Thu May 22 04:44:01 2003




On Wed, 21 May 2003, Dalibor Topic wrote:

> Hi Dan,
> 
> --- mcmahill@mtl.mit.edu wrote:
> 
> > I only fail 3 of 133 now on my alpha (NetBSD-1.6.1)
> 
> Cool, then here's the next challenge: run the developers/FullTest.sh script on
> you platform and report the results back. You'll have to adapt the script's
> paths. Suggested format is 
> 

work underway now...

> > test/regression/InetSocketAddressTest.fail
> 
> how does this one fail, i.e. could you take a look at InetSocketAddressTest.out
> and InetSocketAddressTest.fail, and check what's the problem?

 % cat test/regression/InetSocketAddressTest.out
java.lang.IllegalArgumentException: Null host name value
java.lang.IllegalArgumentException: Bad port number: 100000
java.lang.IllegalArgumentException: Bad port number: 65536
java.lang.IllegalArgumentException: Bad port number: -1
java.lang.IllegalArgumentException: Bad port number: -128
Unresolved bad.bad.bad: true
Unresolved toString(): bad.bad.bad:0
Unresolved localhost: false
Resolved toString(): localhost/127.0.0.1:0
Wildcard address: true
Port: 128
Null address is wildcard: true


> > but I suspect there was an underlying bug with an unitialized value in
> > addition to needing IEEE support.
> 
> If you can figure out what it is, I'd welcome a patch. We don't have any active
> Alpha hackers working on kaffe at the moment, so any help on that platform is
> most welcome.

this could easily be a machine independent buglet which only happens to
show up on alpha with a SIGFPE but could show up in subtle ways or not at
all on other systems (including alpha with -mieee).  I looked a little,
but didn't see anything.


> kaffe generates on alpha-netbsd and see what gcc is complaining about.

I've fixed most of them.  The huge number generated by kaffe.def is
because the program counter ends up being a long int which is 64 bits on
alpha while the dprintf's between lines 53-60 of 
kaffe/kaffevm/intrp/machine.c use %d for the format string.  %d is an
integer which is 32 bits.  On something like i386, sizeof(long) ==
sizeof(int) == 32 so there's no problem.

By changing to %ld, my warnings went away.  You may want to also cast to a
long too.  Ie, dprintf("pc=%ld", (long) pc).

in kaffe/kaffeh/support.c, these warnings may be a bit worse:

support.c:422: warning: cast to pointer from integer of different size
support.c:423: warning: cast to pointer from integer of different size

f->name = (void*)((u4)name_index);

u4 is a uint32 (32 bit integer).  Then you're casting to a pointer which
is 64 bits.  But then again name_index starts out as a u2 (16 bit
number?) so maybe you don't care about the top 48 bits...

support.c:504: warning: cast from pointer to integer of different size
support.c:505: warning: cast from pointer to integer of different size
name_index = (u2)(u4)(f->name);

same thing in reverse.


I'll attach patches after running another 'make check' with these format
string fixes.

-Dan