The Renesas RX and RL78 Targets Get Updated Toolchains Today (Release 2019q2)

The most popular Renesas targets, RX and RL78, are receiving updated toolchains today, for the first time this year. Both releases include an update to Newlib 3.1.0, and several additional improvements or bug-fixes.

The release notes for each of these platforms may be found below, covering what changes each of these new toolchain versions bring:

  • GCC for Renesas (Windows | Linux)
    1. [Binutils][Bug Fix] Objdump decoded instructions as g14 specific instructions.
    2. [GCC][Bug Fix] Fixed the unexpected result generated when comparing to a global pointer.
    3. [Newlib][Improvementx] Updated to newlib version 3.1.0.
    4. [Newlib][Improvement] Nano libraries are now available. To use newlib-nano, users should provide additional gcc compile and link time option. –specs=nano.specs should be passed along with -specs=sim.specs if msim would be needed, else if msim is not needed -specs=lnosys.specs should be passed along with nano.specs. For example: $ rl78-elf-gcc test.c –specs=nano.specs -specs=sim.specs $(OTHER_OPTIONS)
    5. [Newlib][Improvement] Optimized string functions.
    6. [Newlib][Bug Fix] Added KEEP syntax for the frodata section into the default linker-script.
  • Known issues
    • ES is used without being initialized.

      In order to initialize ES, the address should be stored in a far pointer before usage. So instead of:

      ((volatile reg __far*)0x000FFF).bit._1 = 0;

      the code will be:

      volatile reg __far *address0 = 0x000FFF;
      (*address0).bit._1 = 0;

    • The __far keyword is not supported for C++ projects.
  • GCC for Renesas (Windows | Linux)
    1. [Binutils][Bug-Fix] Fixed the objdump code generation for MOV, POP, PUSH
    2. [Binutils][Bug-Fix] Fixed the dissambly generation of NOP instructions
    3. [Binutils][Bug-Fix] Improved the opcode decoding for RXv3 instructions
    4. [GCC][Bug-Fix] Fixed the detection of SSTR string opcode.
    5. [GCC][Improvement] The rmpa builtin function can now accept byte/word/long access size and parameters.
    6. [GCC][Improvement] Implemented save and rstr as attributes.
    7. [GCC][Improvement] The -mtfu option is now supported. TFU builtin functions are now available.
    8. [GCC][Improvement] A warning is now generated when mvtipl is used with -mcpu=rx610
    9. [GCC][Bug-Fix] Fixed the bit set builtin fuctions atomic access.
    10. [GCC][Bug-Fix] Fixed the isinf_sign and isnan builtin functions bug generated due to the newlib update.
    11. [GCC][Improvement] Optimized the xchg builtin function.
    12. [GDB][Bug-Fix] Fixed the simulation of some RXv3 instructions.
    13. [Newlib][Improvement] Updated to newlib version 3.1.0
    14. [Newlib][Improvement] Nano libraries are now available
    15. [Newlib][Improvement] Optimized string library functions.
    16. [Newlib][Improvement] Optimized the sqrt function.
  • Known issues
    • In certain cases the program will time out while executing with following options:
      (Note: Both flags need to be accompanied by “-fno-diagnostics-show-caret -w -O1 -DSTACK_SIZE=4096 -msim -lm” for the problem to be observed.)
      a) -funroll-loops
      b) -fpeel-loops
    • An incomplete type error can be observed ocasionally when using the -fpack-struct option in C++. The combination of the flags that reproduce this problem is “-fpack-struct -fno-diagnostics-show-caret -nostdinc++ -fmessagelength=0 -std=c++11 -pedantic-errors -Wno-long-long -S -msim

The Linux installer for both toolchains also offers command-line flags to automate installation as much as possible, as well as the ability to also act as an uninstaller for the toolchains. Therefore, the installer can both install and uninstall the toolchain from one or more paths from your Linux distribution. The release notes for both toolchains also include the list of the currently known issues presented above, to which we fully commit to adequately handle in the coming updates.

We are deeply grateful for any feedback you may have regarding this release, so please let us know if you have any questions or comments.