[M3commit] CVS Update: cm3

Tony Hosking hosking at cs.purdue.edu
Sun May 9 00:28:36 CEST 2010


Ah, now I remember.  sigjmpbuf is important for unwinding on exception to make sure that if we unwind through a frame where the programmer changed the signal mask that we also restore the signal mask of the caller.  I think you also probably break things like FloatMode by not restoring the signal mask properly.

On 9 May 2010, at 00:09, Jay Krell wrote:

> CVSROOT:	/usr/cvs
> Changes by:	jkrell at birch.	10/05/09 00:09:58
> 
> Modified files:
> 	cm3/m3-sys/m3middle/src/: Target.i3 Target.m3 
> 
> Log message:
> 	add SPARC32_SOLARIS
> 	
> 	correct jmpbuf sizes for I386_SOLARIS, AMD64_SOLARIS
> 	notice again that jmpbuf is much much smaller than sigjmpbuf,
> 	and this is jmpbuf; specifically:
> 	I386_SOLARIS jmpbuf 40 bytes with 4 align
> 	AMD64_SOLARIS jmpbuf 64 bytes with 8 align
> 	I386_SOLARIS sigjmpbuf 512 bytes with 4 align
> 	AMD64_SOLARIS sigjmpbuf 1024 bytes with 8 align
> 	
> 	remove some level of heap allocation of calling conventions
> 	
> 	accept all calling conventions for all targets
> 	Only NT386 has calling conventions, and it *highly* likely
> 	the only target ever to have them, therefore the mechanism
> 	does not need to be further generalized. (MIPS32 has two
> 	ABIs, but those will probably be two targets)
> 	This might let us save some unnecessary forking of *.i3 files.
> 	The initialization here can be further streamlined.
> 	
> 	shrink SOLgnu/SOLsun from sigjmpbuf to jmpbuf
> 	I'm not sure we use this though since we have a stack walker.
> 	fix SPARC64_SOLARIS too to be smaller
> 	
> 	SPARC32_SOLARIS
> 	jmpbuf size: 48
> 	sigjmpbuf size: 76
> 	alignment: 4 4
> 	
> 	SPARC64_SOLARIS
> 	jmpbuf size: 96
> 	sigjmpbuf size: 152
> 	alignment: 8 8




More information about the M3commit mailing list