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

Hello,

 

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

 

Christian

Outcomes