I finally got around to writing a built-from-bare-sources toolchain for
snow. snow's an alternate ABI for small MIPS systems which uses
statically linked dynamically loaded shared libraries in -fno-pic
-mno-abicalls mode. It has massive performance advantages on the Agenda
VR3's Vr4181.
New in this release is jumptable support; when used properly, it should
allow careful library maintainers to provide forward binary
compatibility against shared libraries.
Snow could be the basis for MIPS16 work, since -fpic MIPS16 looks
difficult. However, the compiler I currently use, Debian gcc 2.95.4, is
completely broken for -mips16. (I'd say "can't compile dhrystone" is a
good metric. :-) If anybody sends me a known-good MIPS16 platform, I'd
be delighted to make snow work on it. (At this point, getting MIPS16
working under Linux is a matter of personal honor to me.)
For background information on snow, see
http://www.desertscenes.net/agenda/snow/ , although it's slightly out of
date. The vrp stuff mentioned below is documented at
http://www.desertscenes.net/index.cgi/Agenda_20Romdisk_20Building_20Instructions
but is unlikely to be useful for other platforms as-is.
Here's the announcement I made on the agenda-snow mailing list:
snow-build-1.4 is available at http://place.org/~nop/snow-
build-1.4.tar.gz . It builds a complete snow toolchain from sources,
using the new jumptable snow implementation, which may allow for
forwards binary compatibility of libraries. Also, it can build XFree86
4.2.0 for the Agenda from sources, including shared library-linked
executables of many xc apps.
Note that it is not compatible with the Agenda 1.2.0 toolchain, and it
is likely that there will be a period of thrashing out library export
lists that will break apps linked with it; however, this should improve
future compatibility.
Included in this release is an experimental interface to Brian Webb's
snow distribution and build tools. It will build a working (if somewhat
minimal) romdisk. Some changes to other source packages will be
required; Debian gcc-2.95.4 has a different set of quirks from the gcc
snapshot used previously, and ideally applications should switch from
CC='mipsel-linux-gcc -B/opt/snow-gcc/lib/snow/' to
CC='mipsel-linux-snow-gcc' to get rid of fixed paths in the build
process. (Of course VRP sources that use ${VRP_COMPILER_CC} get this
for free.)
Documentation remains minimal, but hopefully not much is required to at
least watch the pretty build scroll by.
Necessary sources are again mirrored at http://vhl-
tools.sf.net/snow-src/ .
Gloating summary: after downloading the required source tarballs, you
edit a config file to tell it where to build. Then, you type "make" in
builder/ and "make" in vrp-build/, and around 45 minutes later out pops
a romdisk!
Let me know if it doesn't build on your box. The only two odd tools
you'll need are for the vrp-build section. ash wants byacc. I want
fakeroot, http://packages.debian.org/testing/utils/fakeroot.html ,
because I don't believe in building software as root. If you're daring,
you can run the vrp-build section as root and nuke the calls to fakeroot.
Jay
|