Hi Guys, I am applying the following patch to update the prototypes in the MSP430 specific part of libgcc. It adds missing prototypes for exported ABI functions, and it changes the prototypes for the arithmetic shift functions so that they explicitly take a signed char parameter.
Cheers Nick libgcc/ChangeLog 2016-04-25 Nick Clifton <ni...@redhat.com> * config/msp430/cmpd.c (__mspabi_cmpf): Add prototype. (__mspabi_cmpd): Likewise. * config/msp430/floathidf.c (__floathidf): Likewise. * config/msp430/floathisf.c (__floathisf): Likewise * config/msp430/floatunhidf.c (__floatunssidf): Likewise. * config/msp430/floatunhisf.c (__floatunshisf): Likewise. * config/msp430/lib2shift.c (__ashlsi3): Take a signed char as the second parameter. (__ashrsi3): Likewise. Index: libgcc/config/msp430/cmpd.c =================================================================== --- libgcc/config/msp430/cmpd.c (revision 235408) +++ libgcc/config/msp430/cmpd.c (working copy) @@ -1,4 +1,7 @@ /* Public domain. */ + +int __mspabi_cmpf (float, float); + int __mspabi_cmpf (float x, float y) { @@ -8,6 +11,9 @@ return 1; return 0; } + +int __mspabi_cmpd (double, double); + int __mspabi_cmpd (double x, double y) { Index: libgcc/config/msp430/floathidf.c =================================================================== --- libgcc/config/msp430/floathidf.c (revision 235408) +++ libgcc/config/msp430/floathidf.c (working copy) @@ -1,6 +1,8 @@ /* Public domain. */ extern double __floatsidf (long); +double __floathidf (int); + double __floathidf (int u) { Index: libgcc/config/msp430/floathisf.c =================================================================== --- libgcc/config/msp430/floathisf.c (revision 235408) +++ libgcc/config/msp430/floathisf.c (working copy) @@ -4,6 +4,8 @@ extern SFtype __floatsisf (unsigned long); +SFtype __floathisf (HItype); + SFtype __floathisf (HItype u) { Index: libgcc/config/msp430/floatunhidf.c =================================================================== --- libgcc/config/msp430/floatunhidf.c (revision 235408) +++ libgcc/config/msp430/floatunhidf.c (working copy) @@ -5,6 +5,8 @@ extern DFtype __floatunsidf (unsigned long); +DFtype __floatunhidf (UHItype); + DFtype __floatunhidf (UHItype u) { Index: libgcc/config/msp430/floatunhisf.c =================================================================== --- libgcc/config/msp430/floatunhisf.c (revision 235408) +++ libgcc/config/msp430/floatunhisf.c (working copy) @@ -5,6 +5,8 @@ extern SFtype __floatunsisf (unsigned long); +SFtype __floatunhisf (UHItype); + SFtype __floatunhisf (UHItype u) { Index: libgcc/config/msp430/lib2shift.c =================================================================== --- libgcc/config/msp430/lib2shift.c (revision 235408) +++ libgcc/config/msp430/lib2shift.c (working copy) @@ -28,10 +28,10 @@ typedef int sint16_type __attribute__ ((mode (HI))); typedef unsigned int uint16_type __attribute__ ((mode (HI))); -uint32_type __ashlsi3 (uint32_type in, char bit); -sint32_type __ashrsi3 (sint32_type in, char bit); -int __clrsbhi2 (sint16_type x); -extern int __clrsbsi2 (sint32_type x); +uint32_type __ashlsi3 (uint32_type, signed char); +sint32_type __ashrsi3 (sint32_type, signed char); +int __clrsbhi2 (sint16_type); +extern int __clrsbsi2 (sint32_type); typedef struct { @@ -43,7 +43,7 @@ } dd; uint32_type -__ashlsi3 (uint32_type in, char bit) +__ashlsi3 (uint32_type in, signed char bit) { uint16_type h, l; dd d; @@ -77,7 +77,7 @@ } sint32_type -__ashrsi3 (sint32_type in, char bit) +__ashrsi3 (sint32_type in, signed char bit) { sint16_type h; uint16_type l;