From: Vicente Olivert Riera <Vincent.Riera@imgtec.com>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH v4 0/2] Micropython package
Date: Fri, 18 Sep 2015 10:29:45 +0100 [thread overview]
Message-ID: <55FBD989.7020102@imgtec.com> (raw)
In-Reply-To: <CAFOYHZCxy2PWfdPXiTrxDzf4LnLnPCwATyia200X2kHucNqJSA@mail.gmail.com>
Dear Chris Packham,
On 09/18/2015 09:22 AM, Chris Packham wrote:
> On Fri, Sep 18, 2015 at 7:32 PM, Thomas Petazzoni
> <thomas.petazzoni@free-electrons.com> wrote:
>> Chris,
>>
>> On Thu, 17 Sep 2015 11:29:57 +1200, Chris Packham wrote:
>>
>>> Chris Packham (2):
>>> micropython: new package
>>> micropython-lib: new packages
>>
>> There are a number of build failures caused by Micropython in the
>> autobuilders:
>>
>> * On MIPS64
>> http://autobuild.buildroot.org/results/99a/99a610c72877fef53d93e1a923bd5c71b3376618/build-end.log
>>
>> * On Xtensa
>> http://autobuild.buildroot.org/results/670/670907760d6b3e7eb46b433647b392cec3bafdcd/build-end.log
>>
>> * On SH4A
>> http://autobuild.buildroot.org/results/f5a/f5a2c563b8bdab9e345960a5b92d31f3f92dba00/build-end.log
>>
>> See http://autobuild.buildroot.org/?reason=micropython-v1.4.5 for the
>> complete list of build failures.
>>
>> If you could look into these, it would be helpful.
>
> Xtensa and SH4A look like they need MICROPY_GCREGS_SETJMP I'll send a
> patch for them shortly. The MIPS64 one looks different so might need
> some investigation.
as the build error says, a right shift is being performed in the
py/objint_mpz.c file, and the offending one is at line #54:
MP_SSIZE_MAX >> MPZ_DIG_SIZE * 4
in MIPS64 n64 the MP_SSIZE_MAX is 64-bit wide and the value of
MPZ_DIG_SIZE 16, so MPZ_DIG_SIZE * 4 is 64. That shift causes a warning
because its trying to shift 64 bits of a 64-bit variable:
py/objint_mpz.c:54:5: error: right shift count >= width of type [-Werror]
MIPS32 and MIPS64 n32 are fine because MP_SSIZE_MAX is 32-bit wide and
the #if clauses in the py/objint_mpz.c protect that to happen.
Look at this test for MIPS32:
$ mips-linux-gnu-gcc -mips32r2 -EB ssize_t.c -o ssize_t
$ qemu-mips ssize_t
MP_SSIZE_MAX: 32 bits
MPZ_DIG_SIZE: 16
right-shifting 0 bits
right-shifting 16 bits
And now look at the same test for MIPS64 n64:
$ mips-linux-gnu-gcc -mips64r2 -mabi=64 -EB ssize_t.c -o ssize_t
ssize_t.c: In function 'main':
ssize_t.c:24:2: warning: right shift count >= width of type
(MP_SSIZE_MAX >> MPZ_DIG_SIZE * 4) & DIG_MASK;
^
$ qemu-mips64 ssize_t
MP_SSIZE_MAX: 64 bits
MPZ_DIG_SIZE: 16
right-shifting 0 bits
right-shifting 16 bits
right-shifting 32 bits
right-shifting 48 bits
right-shifting 64 bits
I don't know what's the purpose of the code in py/objint_mpz.c and I
don't know if they really want to do a 64-bit shift of a 64-bit
variable. But the thing is that since it's compiled with the -Werror
flag, that warning makes the compilation to fail.
If they really want to do such a shift, then they should remove the
-Werror. But if they don't want to do such a shift, then more #if
clauses are needed in order to prevent that to happen. Perhaps you could
talk with upstream about this.
Regards,
Vincent.
>
>>
>> Thanks!
>>
>> Thomas
>> --
>> Thomas Petazzoni, CTO, Free Electrons
>> Embedded Linux, Kernel and Android engineering
>> http://free-electrons.com
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
>
next prev parent reply other threads:[~2015-09-18 9:29 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-14 10:21 [Buildroot] [PATCH] micropython: new package Chris Packham
2015-09-14 13:06 ` Vicente Olivert Riera
2015-09-14 23:14 ` Chris Packham
2015-09-14 13:40 ` Vicente Olivert Riera
2015-09-14 22:44 ` Chris Packham
2015-09-14 13:58 ` Thomas Petazzoni
2015-09-14 14:12 ` Vicente Olivert Riera
2015-09-14 23:03 ` Chris Packham
2015-09-15 8:24 ` Thomas Petazzoni
2015-09-15 19:49 ` Jörg Krause
2015-09-14 23:01 ` Chris Packham
2015-09-15 8:23 ` Thomas Petazzoni
2015-09-15 0:01 ` [Buildroot] [PATCHv2] " Chris Packham
2015-09-15 10:14 ` Vicente Olivert Riera
2015-09-15 10:19 ` Vicente Olivert Riera
2015-09-15 21:30 ` Chris Packham
2015-09-15 22:03 ` Thomas Petazzoni
2015-09-15 21:54 ` Chris Packham
2015-09-15 22:49 ` [Buildroot] [PATCHv3] " Chris Packham
2015-09-16 6:25 ` Jerzy Grzegorek
2015-09-16 21:12 ` Thomas Petazzoni
2015-09-16 23:28 ` Chris Packham
2015-09-16 23:29 ` [Buildroot] [PATCH v4 0/2] Micropython package Chris Packham
2015-09-16 23:29 ` [Buildroot] [PATCH v4 1/2] micropython: new package Chris Packham
2015-09-17 8:56 ` Vicente Olivert Riera
2015-09-18 4:54 ` Chris Packham
2015-09-16 23:29 ` [Buildroot] [PATCH v4 2/2] micropython-lib: new packages Chris Packham
2015-09-17 8:56 ` Vicente Olivert Riera
2015-09-17 21:48 ` [Buildroot] [PATCH v4 0/2] Micropython package Thomas Petazzoni
2015-09-18 7:32 ` Thomas Petazzoni
2015-09-18 8:22 ` Chris Packham
2015-09-18 9:19 ` [Buildroot] [PATCH] micropython: Set MICROPY_GCREGS_SETJMP=1 for xtensa and sh Chris Packham
2015-09-19 12:00 ` Thomas Petazzoni
2015-09-18 9:29 ` Vicente Olivert Riera [this message]
2015-09-18 9:43 ` [Buildroot] [PATCH v4 0/2] Micropython package Chris Packham
2015-09-18 9:51 ` [Buildroot] [PATCH] micropython: Set MPZ_DIG_SIZE=32 for 64 bit targets Chris Packham
2015-09-18 10:02 ` Vicente Olivert Riera
2015-09-19 9:19 ` Chris Packham
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55FBD989.7020102@imgtec.com \
--to=vincent.riera@imgtec.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox