Re: Thumb mode IT instruction requirements and -mimplicit-it assembler flag

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

 



2011/9/18 Henrik Nordström <henrik@xxxxxxxxxxxxxxxxxxx>:
> The armv7 distro bootstrap have run into a number of packages failing to
> compile in Thumb mode (default enabled in rpmrc) failing on ARM assembly
> parts with conditional branch instructions. In thumb mode one apparently
> need to use the IT instruction to hint to the CPU about the conditions
> of following instructions in addition to have the conditions on the
> instructions themselves. While investing these I saw rumors about GCC
> eventually adding an automatic handling of these adding IT instructions
> as needed, and even projects being very reluctant about touching any of
> this until GCC have made up it's mind, and finally in an upstream bug
> report on pulseaudio there is a reference to the -mimplicit-it=thumb GAS
> option doing exacly this.
>
> Is there any drawbacks from enabling implicit IT instruction generation
> letting GAS automatically deal with this as required by Thumb mode? If
> not, should we add this to rpmrc?
>
>  -Wa, -mimplicit-it=thumb

Hi Henrik.  We discussed this on gcc-patches and decided against it.
The problem is that GCC does range calculations to figure out where to
put the constant pool.  If the assembler inserts instructions after
GCC has run then these calculations are wrong and you could fail with
a link error.

Ubuntu used to turn on -mimplicit-it by default.  They don't now and
have fixed up many of the upstream packages.  We've been fixing up any
left overs during the weekly Linaro porting jam.

The gcc-patches discussion is here:
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01339.html
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01351.html
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01353.html
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01354.html
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01355.html
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01356.html
 http://gcc.gnu.org/ml/gcc-patches/2010-07/msg01357.html

The review list is here:
 https://wiki.ubuntu.com/ARM/Thumb2PackageReviewList

You can view the porting jam bugs here:
 https://bugs.launchpad.net/ubuntu/+bugs?field.tag=arm-porting-queue&orderby=-id

> from what I can understand it should be quite safe. And I am even of the
> opinion that GAS is way better suited at adding these instructions than
> the average programmer as it carries redundant information which need to
> match the conditions of the instructions following after.

GAS does validate the instructions and will error out if the IT
instruction doesn't match the following.

Note that while Thumb-2 has all of the same condition codes as ARM
mode, the IT block can only do a condition and its negative.  This
covers 90 % of the cases I've seen though.

-- Michael
_______________________________________________
arm mailing list
arm@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/arm



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM (Vger)]     [Linux ARM]     [ARM Kernel]     [Fedora User Discussion]     [Older Fedora Users Discussion]     [Fedora Advisory Board]     [Fedora Security]     [Fedora Maintainers]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Mentors]     [Fedora Package Announce]     [Fedora Package Review]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Coolkey]     [Yum Users]     [Tux]     [Yosemite News]     [Linux Apps]     [KDE Users]     [Fedora Tools]     [Fedora Art]     [Fedora Docs]     [Asterisk PBX]

Powered by Linux