C Library for FuSa

Hello!

First of all, I am very new to Keil uVision.

I downloaded Arm Compiler 6.6 C Library for Functional Safety 6.6.B. Did the installation and saved it to Keil_v5/ARM/ARM_Clib. Then added the ARM_Clib/include to Options->C/C++ (AC6)->Include Paths.

I am trying to use the isinf(x) function from math.h, but when I try to compile I get this error:

.\Objects\myproject.axf: Error: L6218E: Undefined symbol __ARM_isinff (referred from mylibrary.o).
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.

extern of this __ARM_isinff is defined in the end of the math.h file, but from there it leads to nowhere (nothing happens when I try to go to the definition of it).

Am I missing some steps in my setup?

  • Hi

    My name is Stephen and I work at Arm.

    Sorry, but I believe __ARM_isinff() is not provided in the FuSa C Libraries.  The FuSa C Libraries provide only a limited subset of C library functions.

    In the docs folder of the FuSa C library, you should find the HTML documentation.  The list of supported functions is given in globals_func.html.

    Hope this helps

    Stephen

  • Hi!

    I am trying to use a macro called

    isinf(x)
    .

    In math.h file the macro is defined as:

    /// \brief The `isinf` macro determines whether its argument value is an
    /// infinity (positive or negative).
    ///
    /// First, an argument represented in a format wider than its semantic type is
    /// converted to its semantic type. Then determination is based on the type of
    /// the argument. The `isinf` macro returns a nonzero value if and only if its
    /// argument has an infinite value.
    /// \hideinitializer
    #define isinf(x) \
        ((sizeof(x) == sizeof(float)) \
            ? __ARM_isinff(x) \
            : __ARM_isinf(x))

    This macro can also be found in the globals_func.html References tab under Macros.

    Reimo

  • Hi again Reimo,

    Apologies, I was wrong, __ARM_isinf and __ARM_isinff _are_ present in the FuSa C library, but are declared as "helper" functions so are not listed in the user documentation.

    Have you added the FuSa C library to your link line and turned off linking with the standard libraries?
    The docs have a section called "Using the FuSa C Library" which you need to follow.
    Here's an example extract showing what to do:

    armclang --target=arm-arm-none-eabi -march=armv7-a -c entry.S
    armclang --target=arm-arm-none-eabi -march=armv7-a -fno-builtin -ffp-mode=full -nostdlibinc -nostdlib -I /ArmCLib6.6.AArmv7A+R/include -c test.c
    armlink --no_scanlib --no_startup /ArmCLib6.6.AArmv7A+R/lib/fusa_clib_armv7a_softfp_ropi.l entry.o test.o --entry=entry_point

    Hope this helps,

    Stephen