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

2006 Release 2 (2006R2) Toolchain Release

November 10th 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: 4.1.1 and 3.4.6. Binutils version in this release is 2.17. GDB version in this release is 6.5. The old Binutils 2.15.94 and GDB 6.3.50 are not included in this release.

This release contains many bug fixes and some new features. 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. 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.
  6. As expected, -fstack-limit-symbol cannot be used with multithreading applications. Use -mstack-check-l1 instead.
  7. -fstack-limit-symbol cannot be used with -mfdpic. Use -mstack-check-l1 instead.
  8. -fprofile-arcs cannot be used with -mfdpic.

Changes

  1. Large file support is enabled in uClibc by default.
  2. uClibc is changed to use malloc instead of malloc-simple.
  3. malloc(0) now returns a valid pointer instead of NULL by default.
  4. cramfs tools is provided for creation of cramfs images for XIP.
  5. With -pg option, GCC now generates correct instrument instructions to call _mcount.

Improvement since Last Release

  1. GCC 4.1 has been updated to 4.1.1. GCC 3.4 has been updated to 3.4.6.
  2. Binutils has been updated to 2.17.
  3. GDB has been updated to 6.5.
  4. Newlib has been updated to 1.14.0.
  5. Now GCC is able to generate single-cycle parallel instructions. This feature is only available for GCC 4.1.
  6. XIP support has been enabled.
  7. -mstack-check-l1 has been added to support stack check for ELF FD-PIC applications.
  8. Putting applications into L1 memory is supported now. For detail usage, see using_l1_memory

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. Here only list the import bugs that have been fixed. For a full list, see tracker.

GCC

GAS

LD

GDB

Elf2flt

Build Script

Packages

  • blackfin-toolchain-06r2-5.i386.rpm
    • rpm of the pre-compiled Blackfin 2006R2 release bfin-uclinux toolchain (GCC 4.1)
  • blackfin-toolchain-gcc-3.4-addon-06r2-5.i386.rpm
    • rpm of the pre-compiled Blackfin 2006R2 release bfin-uclinux toolchain (GCC 3.4 addon. Before install this package, you need first install blackfin-toolchain-06r2-5.i386.rpm.)
  • blackfin-toolchain-elf-gcc-4.1-06r2-5.i386.rpm
    • rpm of the pre-compiled Blackfin 2006R2 release bfin-elf toolchain (GCC 4.1)
  • blackfin-toolchain-elf-gcc-3.4-addon-06r2-5.i386.rpm
    • rpm of the pre-compiled Blackfin 2006R2 release bfin-elf toolchain (GCC 3.4 addon. Before install this package, you need first install blackfin-toolchain-elf-gcc-4.1-06r2-5.i386.rpm.)
  • blackfin-toolchain-06r2-5.src.rpm
    • source rpm of the Blackfin 2006R2 release toolchain (kernel and uClibc source, which we used to build the binary toolchain, is also included)
  • toolchain_releasenotes_2006R2.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         24806           24780             24801
# of unexpected failures     36              48                29
# 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         9886            9879              9884
# of unexpected failures     9               9                 10
# of unexpected successes                                      1
# of expected failures       70              70                69
# of unresolved testcases    14              21                14
# of unsupported tests       90              90                90

=== gdb Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         9453            9532              9144
# of unexpected failures     107             112               34
# of expected failures       34              34                41
# of known failures          58              60                55
# of unresolved testcases    14              4                 7
# of untested testcases      10              9                 9
# of unsupported tests       25              25                38

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

=== gas Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         91              91                113
# of unexpected failures     10              10                10
# of expected failures       1               1                 1
GCC 4.1 toolchain
=== gcc Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         36913           36844             36974
# of unexpected failures     85              154               12
# of unexpected successes    1               1                 1
# of expected failures       75              75                75
# of untested testcases      28              28                28
# of unsupported tests       375             375               375

=== g++ Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         11879           11910             11907
# of unexpected failures     32              1                 3
# of unexpected successes                    1                 1
# of expected failures       67              67                67
# of unsupported tests       134             134               134

=== gdb Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         9242            9536              9145
# of unexpected failures     107             108               31
# of expected failures       34              34                41
# of known failures          27              60                57
# of unresolved testcases    11              4                 7
# of untested testcases      8               9                 9
# of unsupported tests       21              25                38

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

=== gas Summary ===         uClinux (flat)  uClinux (FD-PIC)  Simulator
# of expected passes         91              91                113
# of unexpected failures     10              10                10
# of expected failures       1               1                 1