world leader in high performance signal processing
Trace: » 2006r1

2006 Release 1 (2006R1) Toolchain Release

May 29th 2006

This toolchain release contains tools for two targets: bfin-elf and bfin-uclinux. Both are cross toolchains for Blackfin. The bfin-elf target toolchain uses newlib for C library and can be used to develop standalone applications. The bfin-uclinux target toolchain uses uClibc for C library and can be used to develop uClinux applications.

This release provides two GCC versions: 3.4.5 and GCC 4.1.0. This release starts to support a new ABI: Blackfin FDPIC ELF.

This release contains many bug fixes. It's more stable and usable.

Known Issues

  1. elf2flt passes -r option to ld. This option may make C++ objects with init_priority attribute not initialized properly.
  2. Also because elf2flt passes -r option to real.ld. You cannot use --gc-sections for ld since it cannot be used together with -r.
  3. We do not support profiling using gprof. The latest uClibc no longer supports gcc -fprofile-arcs -pg style profiling. You may use other alternatives, like OProfile.
  4. Single stepping through hardware loop does not work when there are only one instruction in the loop. It will step over the whole loop instead.
  5. As expected, -fstack-limit-symbol cannot be used with multithreading applications.
  6. When running bfin-elf-gdb, interrupting the simulated program with ^C does not work immediately. It will not take the effect until user press another key.
  7. -fstack-limit-symbol cannot be used with -mfdpic.
  8. -fprofile-arcs cannot be used with -mfdpic.

Changes

  1. Starting from this release, GCC 4.1.0 is provided. GCC 3.4.x is included and recommended for maximum stability, but it will enter maintainence mode. Optimizations will only occur on GCC 4.1.x. Future GCC 3.4.x series will only contain bug fixes.
  2. The FLAT format for Blackfin has been changed to version 4, which is used by other architectures.

Improvement since Last Release

  1. This release of toolchain supports a new ABI: Blackfin FDPIC ELF ABI. An new option -mfdpic has been added for this ABI.
  2. GCC 4.1.0 now provides support Blackfin hardware loop.
  3. A new option -mfast-fp has been added to GCC. The application compiled with this option will call floating-point functions provided by a fast floating library libbffastfp, which is written in assembly and optimized for Blackfin, instead of the ones provided by libgcc. The floating-point functions in libbffastfp are several times faster than the ones in libgcc. libbffastfp relaxes some rules in IEEE floating-point standard of checking NaN for better performance.
  4. Blackfin GAS has been changed not to support assigning a value to a symbol with SYM = EXPR. This will allow GAS catch typos in register name. Use the .set directive instead.
  5. Now toolchain and kernel can be built on Mac OS X.
  6. Many builtin functions have been added for Blackfin in GCC to utilize the DSP instructions of Blackfin.

Bug fixes

This section lists the bugs that are known to be fixed in this release. The number before the description is the bug ID in the Blackfin gcc3 project tracker.

GCC

GAS

LD

Elf2flt

Build Script

Packages

  • blackfin-toolchain-06r1-4.i386.rpm
    • rpm of the pre-compiled Blackfin 2006R1 release toolchain
  • blackfin-toolchain-gcc-4.1-06r1-4.i386.rpm
    • rpm of the pre-compiled Blackfin 2006R1 release toolchain (GCC 4.1 addon. Before install this package, you need first install blackfin-toolchain-06r1-4.i386.rpm.)
  • blackfin-toolchain-06r1-4.src.rpm
    • source rpm of the Blackfin 2006R1 release toolchain (kernel source, which we used to build the binary toolchain, is also included)
  • toolchain_releasenotes_2006R1.pdf
    • the release notes of this release

Installing

Test Results

The tests are run twice. Once on the host (bfin-elf with newlib testing on the simulator) and another running on the Blackfin hardware (bfin-uclinux with uClibc on uClinux). For details on the testing, see how Testing the Toolchain was done. Differences between running on uclinux/uclibc and simulator/new-lib usually means an issue in the kernel or library not in the toolchain.

GCC 3.4 toolchain
=== gcc Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         24803           24771             24797
# of unexpected failures     36              55                31
# of unexpected successes    1               1                 1
# of expected failures       67              67                67
# of unresolved testcases    36              50                36
# of untested testcases      7               7                 7
# of unsupported tests       393             393               393

=== g++ Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         9802            9805              9811
# of unexpected failures     15              10                10
# of unexpected successes    2               2                 2
# of expected failures       70              70                70
# of unresolved testcases    14              21                14
# of unsupported tests       90              90                90

=== gdb Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         9249            9154              9014
# of unexpected failures     101             267               65
# of expected failures       34              34                41
# of known failures          27              26                27
# of unresolved testcases    11              5                 10
# of untested testcases      8               7                 5
# of unsupported tests       21              21                32

=== binutils Summary ===    uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         23              27                33
# of unexpected failures     2
# of unresolved testcases    2

=== gas Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         56              56                76
# of unexpected failures     3               3                 3
GCC 4.1 toolchain
=== gcc Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         36716           36632             36777
# of unexpected failures     99              183               27
# of unexpected successes    1               1                 1
# of expected failures       75              75                75
# of unresolved testcases    28              28                28
# of untested testcases      28              28                28
# of unsupported tests       371             371               371

=== g++ Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         11788           11827             11827
# of unexpected failures     46              11                11
# of unexpected successes    1               1                 1
# of expected failures       67              67                67
# of unresolved testcases    14              15                14
# of unsupported tests       133             133               133

=== gdb Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         9242            9148              9015
# of unexpected failures     107             273               65
# of expected failures       34              34                41
# of known failures          27              26                27
# of unresolved testcases    11              5                 9
# of untested testcases      8               7                 5
# of unsupported tests       21              21                32

=== binutils Summary ===    uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         21              21                26
# of untested testcases      6               6                 7

=== gas Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         56              56                76
# of unexpected failures     3               3                 3