[M3commit] CVS Update: cm3

Tony Hosking hosking at cs.purdue.edu
Tue Apr 29 14:14:07 CEST 2008


Is this only a WIN32 problem?  Why has this not showed up on other  
platforms?

On Apr 29, 2008, at 12:32 PM, Jay Krell wrote:

> CVSROOT:	/usr/cvs
> Changes by:	jkrell at birch.	08/04/29 12:32:10
>
> Modified files:
> 	cm3/m3-sys/m3cc/gcc/gcc/m3cg/: parse.c
>
> Log message:
> 	It is important to not mark internal functions such as finally  
> blocks as public.
> 	Otherwise what happens on AMD64_LINUX is that, for example,  
> ThreadPThread__InitMutex's call to
> 	its own finally block goes through the PLT, trashing the static  
> link in r10 and
> 	the finally block crashes.
> 	
> 	The fix should actually be broader.
> 	Call to any function implemented in the same "library" should not  
> go through PLT.
> 	I think this requires a front end change and maybe M3CGOps, in  
> order to
> 	communicate down just what is in the same "library".
> 	
> 	"Interposition" and supporting ANSI C function pointer equality  
> semantics  are not interesting,
> 	and very costly.
> 	
> 	See
> 	http://modula3.elegosoft.com/cgi-bin/cvsweb.cgi/cm3/m3-sys/m3cc/gcc/gcc/m3cg/parse.c.diff?r1=1.17;r2=1.18
> 	
> 	As to if inlines that aren't exported really need to be kept, I  
> don't know.
> 	
> 	The fiddling with fputs vs. printf here is to workaround a strange  
> compilation problem
> 	on my machine -- fputs_unlocked not declared, some disconnect  
> between configure and compile
> 	perhaps.
> 	As well, one call to printf vs. three to fputs achieves a similar  
> affect as unlocked, as only
> 	one lock is needed, albeit the format parsing is overly general,  
> and the overall operation is
> 	still locked.
> 	And remove nearby tabs.




More information about the M3commit mailing list