[PATCH] Fix for parisc-hpux (Was: Re: [kaffe] HP-UX and IPv6 still fail)

Dalibor Topic robilad@kaffe.org
Thu Oct 2 04:20:04 2003


This is a multi-part message in MIME format.
--------------040903060703070406000607
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Dalibor Topic wrote:

> so if someone feels like tackling any of them, go for it, don't wait for 
> me ;) The crash in the shell is particularly worrisome in my opinion.

The crash in the shell was due to kaffe crashing during the compilation 
of a java file using kjc.

There is still a couple of warnings left, though I'll leave them for 
later, given that we're in release freeze and all that ;)

> In order to get there, you'll need binutils 2.14 and gcc 3.3.1. I'm 
> using gnu make to build kaffe, and a 'distrubution' of kaffe created on 
> a linux box from current CVS by running 'make dist'. One can;t build 
> shared libs on HPUX for some reason, so you need to configure kaffe with 
> --disable-shared.

I haven't looked further into this.

> I'd be particularly glad to see the type-punning warnings fixed, as I 
> have no idea what they are about. Jim, you've fixed some type-punning 
> warnings before, could you take a look at those?

I've factored out the type-punning warning producing code into its own 
function, so it should be easier to fix. I'm not sure what the proper 
fix is though. Later, after the release ;)

> Once the warnings are gone, I hope kaffe will run happily on parisc-hpux 
> again, and on parisc-linux, too ;)

parisc-hpux works mostly for me, it fails 24 regressions tests with the 
attached patch.

I'll wait for a day before I check it in, as I'd like to hear some comments:

the patch removes the use of mprotect in debugging mode to 'harden' 
memory areas in the gc. Accoding to hp-ux man pages, mprotect can only 
be used in conjuction with mmapped files. So I wrote a wrapper function 
for gc for mprotect on hp-ux and there were illegal access errors, 
leading to kaffe crashing a little bit later. So my patch removes 
mprotect usage completely. Is everyone o.k. with that?

cheers,
dalibor topic

--------------040903060703070406000607
Content-Type: text/plain;
 name="parisc-hpux-fix.chlog"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="parisc-hpux-fix.chlog"

Dalibor Topic <robilad@kaffe.org>

	* configure.in:
	Don't check for mprotect.

	* configure, config/config.h.in:
	Regenerated. 

	* config/Makefile.am:
	(EXTRA_DIST) Removed unused files parisc/hpux/md.c and parisc/linux/md.c

	* config/Makefile.in:
	Regenerated.

	* kaffe/kaffevm/mem/gc-mem.c:
	Don't include <sys/mman.h> as we no longer use mprotect.
	[PROT_NONE, HAVE_MPROTECT] Sections removed.
	(gc_block_add,  gc_block_rm, gc_block_alloc) Don't use mprotect on memory allocated by sbrk. It breaks on HP-UX.
	
	* kaffe/kaffevm/systems/unix-jthreads/jthread.c:
	(jthreadedFileDescriptor) check if either hpux or __hpux__ is defined. Gcc automatically defines one or the other depending on some internals of hp-ux that don't matter in this case.

	* libraries/javalib/Makefile.am, libraries/javalib/Makefile.in:
	Regenerated.

	
Helmer Kraemer <hkraemer@kaffe.org>

	* config/parisc/hpux/md.h:
	Include siginfo.h and ucontext.h.
	(SIGNAL_ARGS, SIGNAL_CONTEXT_POINTER, GET_SIGNAL_CONTEXT_POINTER, SIGNAL_PC) New macros.

--------------040903060703070406000607
Content-Type: application/gzip;
 name="parisc-hpux-fix.diff.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="parisc-hpux-fix.diff.gz"

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
--------------040903060703070406000607--