日本語 English
 
Home >> Release Notes >> Release Notes: GNU SH3-Linux v0601
Release Notes: GNU SH3-Linux v0601

September 26th, 2006

KPIT Cummins Infosystems Limited is now releasing GNUSH3 Linux v0601, a cross compiler tool chain for Renesas SH series of microcontrollers.

SALIENT FEATURES:

1.

GNUSH3 Linux v0601 is based on gcc-3.4.6, binutils-2.16.1 and glibc-2.3.6 using kernel headers-2.6.17.

2.

The latest patches have been applied to the gcc, binutils and glibc sources.

3.

The default target for the toolchain is sh-3 Little Endian.

ABOUT GNUSH3 Linux v0601:

Release version: GNUSH3 Linux v0601
Platforms Supported: Red Hat GNU/Linux v6.0 or later (or compatible distribution)
(RedHat9, Fedora Core 2, Fedora Core 3, Fedora Core 4 and Fedora Core 5)
Languages: C, C++
SH Series: SH-3,
SH-3 + FPU,
SH-3-DSP,
SH-4,
SH-4A,
SH-4A without FPU/DSP,
SH-4AL-DSP
Object File Formats: ELF
Please register at http://www.kpitgnutools.com/ for free technical support.
Please contact http://www.kpitgnutools.com/feedback.php for any feedback or suggestions.

Known problems:

We intend to fix the known problems in our future releases.
We also release Maintenance Packs for critical bugs fixed in between releases.

    sh3-linux-gcc:

1. The following test case generates incorrect assembly code when compiled using optimization '-O2' with 'sh3-linux-gcc -ml -m4 -O2 -fomit-frame-pointer -S testcode.c -o a.s' command.

            int func (void)
           {
                int error;

               if (foo3 ()) {
                      foo4(0, 1, 2, "abc", 310, foo1());
                      return (990);
               }

               if ((error = foo2 ())) {
                      return error;
               }

               foo4(0, 1, 2, "abc", 352, foo1());
               return (990);
           }

For workaround, use switches '-fno-if-conversion2' or '-fno-crossjumping', while compiling the code.

 

2. The following test case gives compilation error.

            int f(int, int);

            int main(void)
           {
                int f(int, int = 23);
                int f(int = 2, int);
           }

 

 

3. The code which accesses thread libraries generates incompatible library error at compilation time.

 

For workaround,

 

a. Static linking: Use switch '--static -lpthread' while compiling the code.

                                                OR

b. Dynamic linking: Specify the absolute path of the thread library while compiling the code.

 

E.g.:  $ sh3-linux-gcc testcode.C /usr/share/gnush3_linux_v0601-1/sh3-linux/lib/libpthread.so.0

 

4. Following code causes Internal Compiler Error,

const int i = 1;

void foo ()

{

      char a[][i] = {""};

}

 

5. Following code causes Internal Compiler Error,

int main(int ac, char** av)

{

     int to[6] = (int[6]){-1,-1,-1,-1,-1,-1};

     return 0;

}

 

6. Following code causes Internal Compiler Error when compiled using optimization option '-O1' and above,

typedef float V2SF __attribute__ ((vector_size (8)));

int test0 (V2SF, V2SF);

int main (void)
{
     V2SF a = (V2SF) {1.0f/0.0f - 1.0f/0.0f, 1.0f/0.0f - 1.0f/0.0f};
     V2SF b = (V2SF) {567.345, 1984.0};
     int i;

     i = test0 (a, b);
     return i;
}

 

7. Following code causes Internal Compiler Error when compiled using with or without optimization option,

typedef float floatvect2 __attribute__((mode(V2SF)));

typedef union
{
    floatvect2 vector;
    float f[2];
}resfloatvect2;

void tempf(float *x, float *y)
{
    floatvect2 temp={x[0],x[1]};
    floatvect2 temp1={y[0],y[1]};
    resfloatvect2 temp2;
    temp2.vector=temp+temp1;
    x[0]=temp2.f[0];
    x[1]=temp2.f[1];
}
 

NOTE:

    SH3-Linux tools will be updated periodically, but not typically as often as the SH4-Linux tools.
 

 

Go Back

 

© 1998 - 2008 KPIT Cummins Infosystems Limited.All rights reserved. Privacy Policy | Terms of Use