[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CPU32 problems resolved.



Jake/Chris:

Now that I have the egcs source, I can see that the problem is not directly
related to MULTILIB_OPTIONS or any of that jazz.

The problem is that the options table in gcc/config/m68k/m68k.h is different
in egcs-1.0.2-prerelease compared to my egcs-1.0.1+patch, which worked.
I don't know how this happened: it could be an unintended side-effect of
some other patch, as I can't find anything specific in the Changelog.

Anyway, as a result -mcpu32, -m68332, or -m68302 (without -msoft-float) will
emit floating-point code. The entries for these two should include a
MASK_68881 in the target bits that are TURNED OFF. In other words, they
should say

    { "68302", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY       \
                  |MASK_68020|MASK_BITFIELD|MASK_68881)},               \
    { "68332", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY       \
                  |MASK_BITFIELD|MASK_68881)},                          \
    { "68332", MASK_68020},                                             \
    { "cpu32", - (MASK_5200|MASK_68060|MASK_68040|MASK_68040_ONLY       \
                  |MASK_BITFIELD|MASK_68881)},                          \
    { "cpu32", MASK_68020},                                             \

The multilib arrangement assumes this. The library paths and the specs
strings are worked out on the basis of the difference between the -m options
and the default. If the default is not doing what is assumed, just about
nothing works!

This is why trying to specify -msoft-float didn't help: it would try to 
use a library path lib/mcpu32/msoft-float, but since there isn't one (because
if there were, it should have been the same as just lib/mcpu32), it defaulted
to just lib/, and thus picked up m68020 libraries.

Altering MULTILIB_EXCEPTIONS to allow it to build a lib/mcpu32/msoft-float
appears to fix the problem, but for the wrong reason.

I'll change it tomorrow, test it out, and produce a patch for the egcs people
if I'm successful.

Robin Kirkham			CSIRO Manufacturing Science and Technology
Project Engineer		Locked Bag 9, Preston 3072, Australia
robin.kirkham at mlb.dmt.csiro.au	Phone: +61 3 9662-7756  Fax: +61 3 9662-7851