AnsweredAssumed Answered

probs with long long support: undefined ARTNEULL64, undefined ARTSHLLL64 linker errors

Question asked by Christian Fluegel on Apr 16, 2013
Latest reply on Apr 16, 2013 by Christian Fluegel



I'm currently working on a project that needs to use long long support (64 bit) for certain bits of code.


I've activated the flags 'c99' and 'slld' in the codewarrior projects (- flag c99, -flag -slld)  to activate long long support for my project.


Sometimes after certain 64 bit operations the linker fails with the following linker errors:


"undefined: ARTNEULL64"

"undefined: ARTSHLLL64"


the linker always seems to fail at 64 bit shift operations.


An example:


One line in my code read:

uint64_t dwdata;

FTFL_FCCOB4 = (uint8_t)((dwData & 0xFF000000) >> 24);


This led the linker to fail with the error "undefined: ARTSHLLL64"


after changing the order of mask and shift to

uint64_t dwdata;

FTFL_FCCOB4 = (uint8_t)((dwData >> 24) & 0x000000FF );

it links just fine.


I have other examples in the code where the linker fails with similar errors e.g.

if (collisions & ((uint64_t)1 << (uint64_t)i))


This occurs on Codewarrior 10.3 for MCU when I compile for the MC56F84763 DSC


any hints? The compiler/linker toolchain does support long long and other long long operations seem to work as long as they are not bit shifts.


Best Regards