Toolchain
The major changes to the toolchain are as follows:
>GCCFMDIR is no longer required
>gnumake is now make, and you can now use the native system make
>C99 support
>additional function support
>the tool naming convention has changed
>some of the tools in the toolchain use newer versions
$GCCFMDIR No Longer Required
$GCCFMDIR is not required for building FMs on the SafeNet ProtectServer PCIe HSM since the toolchain is non-relocatable.
NOTE For best practice, ensure that $GCCFMDIR is not defined.
Builds Use make Instead of gnumake
In Release 5 (or higher), gnumake becomes simply make, and the host’s native make can be used. If the host’s native make is older than 3.82, make can also be used from the fm-toolchain from the following location:
/opt/safenet/fm-toolchain/fmsdk-ppc440e-1.0/sysroots/i686-fmsdk-linux/usr/bin/make
In previous releases, we provided GNU make (renamed to gnumake). The gnumake command was used to build FMs. This has changed as follows:
Linux | The gnumake command is no longer available. If you use an automated build that calls gnumake you must update your build scripts to call make instead of gnumake. |
Windows | The gnumake command is provided in <fm_install_dir>/bin. It is simply a renamed version of the make command. |
C99 Support
The FM SDK supports a subset of the ISO C 99 standard library as defined by ISO/IEC 9899:1999. In general, floating point math, multibyte characters, localization, and I/O APIs are not supported. printf and vprintf are exceptions, and are redirected to the logging channel.
In addition to the standard library, you can also use C99 language features not present in ANSI C (C89/90). C99 stdint.h types are now supported by the FM SDK toolchain, however sized types from the proprietary Integers.h remain used for FM SDK published APIs to maintain continuity and compatibly with pre-C99 versions.
Due to the change to C99, and the default C99 locale, the strftime %x result is a different format than in PPO3. It is now mm/dd/yy instead of Ddd Mmm dd yyy.
See the FM SDK Programming Guide for more information.
NOTE For best practice, update your code to take advantage of the features offered by C99.
Functions added to the FM SDK in ProtectServer 2
The following functions have been added:
>ctype.c
isblank
>stdio.h
printf, vprintf, vsscanf
snprintf (moves from non-standard to C99 variant).
>stdlib.h
atoll, llabs, lldiv, strtoll, strtoull
Updated Tool Versions
Tool | PPO 3.0 version | FM SDK 5.0 version |
---|---|---|
gcc | 2.95.3 | 4.6.1 |
gnu make | 3.78.1 | 3.82 |
binutils | 2.11.2 | 2.21.1 |
C standard | C89 | C99 |
New Tool Naming Convention
The tool naming convention changes from <toolname>-fm to <arch>-fm-<toolname>. For example gcc-fm becomes powerpc-fm-linux-gcc.