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

September 26th, 2006

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

SALIENT FEATURES:

1.

GNUSH4eb 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-4 Big Endian.

ABOUT GNUSH4eb Linux v0601:

Release version: GNUSH4eb 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.

    sh4eb-linux-gcc:

1. The following test case generates incorrect assembly code when compiled using optimization '-O2' with 'sh4eb-linux-gcc -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 generates compile time 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.:  $ sh4eb-linux-gcc testcode.C /usr/share/gnush4eb_linux_v0601-1/sh4eb-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];
}

8. Source code using TRAMPOLINES gives error "undefined reference to `__ic_invalidate' " when compiled for target  "m4-nofpu",

E.g.:

#ifndef NO_TRAMPOLINES
int f0(int (*fn)(int *), int *p)
{
   return (*fn) (p);
}

int f1(void)
{
   int i = 0;

   int f2(int *p)
   {
       i = 1;
       return *p + 1;
   }

   return f0(f2, &i);
}
#endif

int main()
{
    #ifndef NO_TRAMPOLINES
    if (f1() != 2)
    abort ();
    #endif
    return 0;
}

     

 

Go Back

 

© 1998 - 2008 KPITカミンズ・インフォシステムズ・リミテッド.無断複写転載を禁じます. 個人情報管理方針 | 使用条件