[M3devel] CM3 status
Tony Hosking
hosking at cs.purdue.edu
Fri Dec 31 23:01:27 CET 2010
I didn't OK dropping SPARC stack walking, just agreeing that we should move all platforms to gcc-supported stack walking.
On Dec 30, 2010, at 7:01 AM, Jay K wrote:
> Tony ok'ed this for Solaris/sparc32 a few months ago. I couldn't get it working with gcc 4.5, not even without optimization.
> That was the last step in moving off of gcc 4.3 backend.
I wasn't real happy about dropping stack walking for Solaris. It should not be difficult to retain. I thought you were going to try to fix m3cg 4.5 to handle it. My preference would be to retain the stack walking code on Solaris/SPARC (since it is so easy to do...) modulo making sure that m3cg 4.5 could cope with it.
> Alpha/OSF also doesn't work. I didn't look much into it, and I really don't think it matters.
> It is an extremely little used platform. This year I saw it work on 4.0 and 5.1 but otherwise
> it had been unused for several years I believe, and I don't see its use continuing much.
Last time I ran M3 on Alpha/OSF it did work.
> Upgrade of Solaris/sparc32 from gcc 4.3 to 4.5:
>
> 2010-10-13 11:18 jkrell
>
> * m3-sys/cminstall/src/config-no-install/SPARC32_SOLARIS.common,
> m3-sys/m3cc/gcc/gcc/m3cg/parse.c, m3-sys/m3cc/src/clean_marker.txt,
> m3-sys/m3cc/src/m3makefile, m3-libs/m3core/src/runtime/m3makefile,
> m3-sys/m3middle/src/Target.m3,
> m3-libs/m3core/src/runtime/SOLgnu/m3makefile,
> m3-libs/m3core/src/runtime/SOLgnu/m3makefile-old,
> m3-libs/m3core/src/runtime/SOLsun/m3makefile,
> m3-libs/m3core/src/runtime/SOLsun/m3makefile-old:
>
> disable Solaris/sparc32 stack walker
> switch Solaris/sparc32 to gcc 4.5 backend
> function.c: make failure to volatilize when setjmp/vfork present an error
> instead of a warning
> add missing volatilization
> pin Solaris/sparc32 at -O1 in the config file as -O2/-O3 were
> seen to hit internal compiler errors (assertion failures)
> remove the "all volatile" paths from parse.c (since they
> were only for Solaris/sparc32's stack walker)
>
>
> Tony ok'ing (in my interpretation) the abandonment of our stack walker:
>
> https://mail.elegosoft.com/pipermail/m3devel/2010-October/008019.html
>
>
> At least that was my interpretation.
> Using gcc's exception handling support and *its* stack walker (libgcc/libunwind)
> should provide the better and more portable functionality on many platforms.
> I'm not certain what'd it look like on systems where gcc isn't the usual C compiler (e.g. Solaris)
> but it's bound to work well on Linux, NetBSD, FreeBSD, OpenBSD, and Solaris using gcc.
> "more portable" as in, across all architectures.
>
>
> Perhaps I should have stuck back with 4.3 until implementing this however.
>
>
> It is definitely a step backward to not have the stack walker on Solaris/sparc32,
> but that is the only platform in years that has had one, and it is not terrible
> to have every platform on gcc 4.5.2 and not sprinkling volatile around.
> There are some backward steps but definitely a lot forward.
> I tried using 5.4.0 tonight and I didn't get far.
>
>
> > o possibly unsafe OS calls in new C code (this may be a wrong deduction
> > from my side)
>
>
> I don't know what this is referring to.
> The Enable/DisableScheduling? I all but undid that.
> It should be in a few functions, e.g. malloc/free/realloc/calloc/opendir/readdir/closedir/fopen/fclose.
> Some of those it already is in. With OpenBSD moving to pthreads it matters less.
> It only matters for user threads.
>
>
> > o GUI input not working for BadBricks and other games (only on Darwin?)
>
>
> Yes this is still a problem, and occurs in 5.8.6 release, on Darwin local X Server.
> Doesn't reproduce when remoted to Cygwin/X. Other X apps do work locally.
> Not understood.
> It'd be good to get confirmation if/when they ever worked.
>
>
> > o no clean way for exception handling with current gcc
>
>
> This is how things have *always* been, *except* on Alpha/OSF and Solaris/sparc32.
> Those two platforms have "regressed", but for Solaris/sparc32 it was discussed and
> Alpha/OSF I really don't think is important.
>
>
> Exception handling has always been very inefficient on all but approx. those two platforms.
> It has always been desirable to fix.
>
> The inefficiency has a few parts. Mainly that "try" costs pthread_getspecific and setjmp.
> The inefficiency of the actual throw/catch is not as worrisome.
>
>
> > o still alignment issues
>
>
> Details?
>
>
> > I'm concerned that things get tried out, don't work properly for all
> > our target platforms, but are left then and not cleaned up and something
> > else gets tried. I'm not sure this is correct, it is just me feeling
> > unwell after reading all those mails.
>
>
> Not really.
>
>
>
> > Hudson and Tinderbox status seem to be mostly OK though, but I haven't
> > checked in detail (FreeBSD failing was a disk failure on my system
> > recently). But the tests don't cover all the things we should check.
>
>
> Yep I try to remember to check Hudson fairly regularly.
> I never look at Tinderbox though.
>
>
> > I think it would be good to have an overview of the projects/work that
> > is in progress or pending and its status. For example, we've imported
> > a new gcc version, but that doesn't seem to work well on all targets,
> > or does it? If not, how are we going to address this? Use older versions
> > on some platforms? Can I read up on that somewhere?
>
> All platforms (except NT386) use gcc 4.5.2 for the backend.
> (I did the upgrade after the release was made but before it was announced;
> they delay announcement while it propagates to mirrors.)
>
>
> Ok, also ARM_DARWIN hypothetically uses 4.2.
> Apple forks gcc fairly aggressively.
> Perhaps we should merge the two forks. Perhaps.
> ARM_DARWIN isn't really supported currently. Probably that should be worked on.
> It'd also be interesting to see what Apple did to 4.2 for ppc/x86...
>
>
> > I'd like to suggest to simply use our Trac WiKi to document the ongoing
>
>
> Agreed but I'm lazy.
> I just throw "bombs" around..
>
>
> - Jay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20101231/b802bd41/attachment-0002.html>
More information about the M3devel
mailing list