Substituting -msoft-float/-mfloat-abi=* in the proper order in spec file
Richard Sandiford
richard.sandiford at linaro.org
Mon Mar 21 11:16:34 UTC 2011
Loïc Minier <loic.minier at linaro.org> writes:
> I'm trying to extend the *link: specs to pass a different
> -dynamic-linker depending on the float ABI. But I didn't manage to
> build a construct which would preserve the order of the flags; if I do
> something like:
> %{msoft-float:-dynamic-linker V1} %{mfloat-abi=softfp:-dynamic-linker V2}
>
> Then I get V2 for "-mfloat-abi=softfp -msoft-float" instead of V1.
>
> In gcc/gcc.c I found some docs on spec file syntax; I see one can use
> %{S*&T*} and %{S*:X}, but apparently %{S*&T*:X} isn't allowed, so I
> can't manipulate the value. I tried to use
> %{msoft-float*:-dynamic-linker V1} %{mfloat-abi=softfp*:-dynamic-linker V2}
> but that gives the same effect (the msoft-float flags are
> grouped together in the original order and put first, then the
> mfloat-abi=softfp are grouped together in the original order and put
> second).
>
> I didn't manage to get %{msoft-float*:%<msoft-float -dynamic-linker V1}
> to work; in fact I didn't get supressions to work.
Having later command-line options reverse earlier ones isn't fully
supported in this kind of context. The same problem applies to multilibs.
E.g. if you say "-marm -mthumb" in a toolchain that has ARM and Thumb
multilibs, there's no guarantee that you'll link against the Thumb ones.
Joseph Myers is in the process of overhauling the driver's command-line
processing. It might be easier to do what you want once he's finished.
Richard
More information about the linaro-toolchain
mailing list