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

2010 Release 1 (2010R1) Toolchain Release

Version: 2010R1

Date: Nov. 10, 2010

This toolchain release contains tools for three targets: bfin-elf, bfin-uclinux, and bfin-linux-uclibc. All are cross toolchains for the Blackfin architecture. The bfin-elf target toolchain uses newlib for the C library and can be used to develop standalone applications. Both of the bfin-uclinux and bfin-linux-uclibc target toolchains use uClibc for the C library and can be used to develop Linux applications. bfin-uclinux is used for the FLAT binary format while bfin-linux-uclibc is used for the ELF FD-PIC binary format.

This release provides only one GCC version: 4.3.5. The Binutils version in this release is 2.17. The GDB version in this release is 6.6. The uClibc version is 0.9.29.

Known Issues

  1. elf2flt passes -q option to real.ld. --gc-sections will be ignored by ld since it cannot be used together with -q.
  2. 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.
  3. 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.
  4. As expected, -fstack-limit-symbol cannot be used with multithreading applications. Use -mstack-check-l1 instead.
  5. -fstack-limit-symbol cannot be used with -mfdpic. Use -mstack-check-l1 instead.


  1. Dropped CramFS, genext2fs and fdpichdr from release.
  2. elf2flt converted to C code to make more portable.
  3. Multi-processor support to UrJTAG and gdbproxy
  4. New dedicated device driver for gnICE on windows.
  5. Import gmp-4.3.2 to local repository.
  6. Import mpfr-2.4.2 to local repository
  7. Update urjtag to upstream svn rev 1781.
  8. Improved support for building on Windows.
  9. Import latest libftdi
  10. Import libusb-1.0.6
  11. Merge jtag package in to standard toolchain package.
  12. Greatly improved Blackfin simulator: full chip simulation and simple linux userspace programs

Improvement since Last Release

  1. New part support: bf504-0.0, bf506-0.0, bf512-0.2, bf514-0.2, bf516-0.2, bf518-0.2, bf592-0.0 and bf592-0.1.
  2. Added support for Analog Devices' ADZS-ICE-100B Emulator.
  3. Improved handling of trampolines when cache is turned on.


  1. Only GCC 4.3 is now provided.
  2. The following builtins have been added: builtin_bfin_shr_fr1x16, builtin_bfin_shr_fr2x16, builtin_bfin_shrl_fr1x16, builtin_bfin_shrl_fr2x16 and builtin_bfin_shr_fr1x32.
  3. The following builtins have been removed: builtin_bfin_shl_fr2x16, builtin_bfin_shl_fr1x16, builtin_bfin_lshl_fr2x16, builtin_bfin_lshl_fr1x16 and builtin_bfin_shl_fr1x32.
  4. Changed the type of builtin_bfin_compose_2x16 to v2hi_ftype_short_short
  5. Change the type of builtin_bfin_min_fr1x16, builtin_bfin_max_fr1x16, builtin_bfin_add_fr1x16, builtin_bfin_sub_fr1x16, builtin_bfin_mult_fr1x16, builtin_bfin_multr_fr1x16, builtin_bfin_shl_fr1x16 and __builtin_bfin_lshl_fr1x16 to short_ftype_short_short.
  6. Change the type of builtin_bfin_shl_fr2x16 and builtin_bfin_lshl_fr2x16 to v2hi_ftype_v2hi_short.
  7. Change the type of builtin_bfin_shl_fr1x32 to int_ftype_int_short.
  8. New implementation for divsi3, udivsi3 and umodsi3

Build Script

  1. Concepts from “buildscript-experimental” have been moved in to “buildscript”. “buildscript-experimental” is no more.
  2. Add an option to tweak specific uClibc options without needing a full base config file.
  3. Add a new -R option to save *_build dirs from removal (for debugging).


  1. Enable posix/alarm code for mingw64


  1. Use malloc in getdents, so we can open larger directories through ls, readdir, etc.
  2. Disable executable stack markings.


  1. Add “An = An « #imm5” instruction support
  2. Add DIVS, DIVQ, ABORT, TESTSET, BYTEPACK, BYTEUNPACK, SEARCH, BITMUX, BXOR, BREV, ONES and various other instructions to the simulator
  3. Implement various ALU result register instructions.
  4. Add support for EMUDAT, and dregs = dregs » uimm5 instruction.
  5. Support HW Loops containing branches in and out.
  6. Core Event Controller simulation
  7. Handle unaligned fetches.
  8. Support for Async Memory Controller/Core Timer/MMU (CPLBs)/PLL/SIC/SDRAM controller/Trace Unit/UARTs
  9. Simple OTP model added.


  1. Sync with upstream.
  2. Support the ABORT instruction.
  3. Support the OUTC debug instructions.


  1. Merge various newlib fixes from upstream.
  2. Merge and backport various BFD fixes from upstream and newer versions.


  1. Improved jtag console processing performance.
  2. Added jtag support for bf561.
  3. Added support for gdb debug through serial port.


  1. Merge various changes from upstream.


  1. Resolve a “misunderstanding” between gdb and bflt loader - keep .text and .data in seperate segments.


  1. Disable executable stack markings.


  1. libgloss: added new .l1.text and input memory sections.

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









  • [[bf>tracker/5802|[#5802] Use vfork if we don't have fork in chmod.


  • Fixed implicit declaration for atan2_fr16, bf_cab and bf_arg leading to undefined reference.