Version 20101114 of mspgcc4 has been released.  Highlighted bug fixes:

 - SF 3109143: Support value-line MSP430G22x1 devices
 - SF 3090697: Adding mspgcc4 support for msp430G series
 - SF 3103015: Bug in strtol, implies ldiv bug
 - SF 3094472: TI headers define assembler-incompatible constants
 - SF 3094467: iomacros.h requires #define __MSP430_TI_HEADERS__
- SF 3090574: -fPIC silently won't work
 - SF 3087663: internal compiler error
 - SF 3096352: Illegal disassembly instruction (addx.a R14,R15)

The default compiler has been updated to gcc 4.4.5.  Furthermore, the TI
header variant of msp430-libc has been made the default, as it is required
for the G2xx value-line chips, and in general is better anyway.  Users who
relied on the register bit structures in the legacy headers should port
their code or select the legacy header variant of msp430-libc.

All please note: SF 3103015 was due to an unintentional ABI change
introduced either when mspgcc was first ported to the GCC4 series, or during
that series.  If strtol or strtoul ever worked for you, you were lucky;
similarly, ldiv would return garbage.  The details are below for anybody
who's interested.

There is a 20101114 version of the TI header variant of msp430-libc; the
legacy variant remains at 20101113, since it does not support the
MSP430G22x1 devices and I'd already prepared that release.

Downstream packagers please proceed to do your magic, and post here when
packages are available.  Thanks.

Peter

commit b65f5ec7fc69ffdaff2a4fcb6deb6a01a1180ece
Author: Peter A. Bigot <pabi...@users.sourceforge.net>
Date:   Mon Nov 8 00:17:18 2010 -0600

    SF 3103015: Bug in strtol, implies ldiv bug

    mspgcc was designed to return struct/union values that do not exceed 8
bytes
    in registers; the RETURN_IN_MEMORY macro was defined in msp430.h to
enable
    this.  In GCC4, that macro was renamed to TARGET_RETURN_IN_MEMORY, which
is
    not defined consequently resulting in the GCC default behavior (any type
    that is a BLKmode is return in memory regardless of size).  The
    stdlib/ldiv.S source assumed that the register return values from
    __divmodsi4 could simply be left in place, so the return value of any
    invocation of ldiv was whatever garbage happened to be in the stack at
the
    point-of-call.

    Changing the ABI back to the mspgcc3 standard is not appropriate within
this
    release series.  It may be done upon the uniarch revisions that resume
use
    of mspgcc (vice mspgcc4) for the updated compiler.

    Rewrote ldiv.S to store the structure return value in memory.  Note
that,
    although div(3) also returns values in structs, GCC categorizes that
struct
    as an SImode rather than a BLKmode and it is still returned in
registers.
------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Mspgcc-users mailing list
Mspgcc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mspgcc-users

Reply via email to