on these platforms so far:
- alpha, arm, i386, mipseb, mipsel, sparc64
built but not yet tested on:
- armeb, sparc, amd64
build errors (mostly not related) on:
- hppa, m68000, m68k, macppc, sh3el, sh3eb, vax
XXX again this is not everything required; many other changes in
XXX already used files are left out.
is moving here, keeping everything together.
tested with: vax (old config), mac68k (old config), i386 (new config)
and shark (new config). tested i386 binaries only so far, but the
system seems to be surviving the self-hosted test.
XXX: note that this isn't *all* the bits required to run a binutils
2.14 world for arm or i386; these will come soon enough...
binaries are the same, as we provide both _start and __start symbols
for the entry point in crt0.
PR#22073 by Izumi Tsutsui.
Ok by Matthew Green <mrg@netbsd>.
it because sh3 ports don't provide PT_STEP. It is finally possible to
run programs under gdb now, though there are still issues to be
resolved. It was deemed useful enough to commit early, while the work
is still in progress. Tested on hpcsh.
Blessed by christos@.
So the problem is thus:
* The {u,}mulsidi3 generate two parallel sets which modify the upper and lower
halves of the target register.
* life_analysis() does not track subregister modifications -- if you don't
modify the whole register with a single set, it considers the register
unused.
The simple, if klugy, solution to this is to stick an explicit clobber in. It
seems to work.
While doing this, I noticed that constant folding was not happening for
32x32->64 multiplies. This is because the parallel set generated by
{u,}mulsidi3 cannot be folded at all. To solve this, I first expand to a
normal multiply, and then use a define_insn_and_split to convert it to the
parallel set after CSE and constant folding.
This patch has also been submitted to GCC bugzilla, but who knows if I'll get
a reply to that.