Refinitiv / Real-Time-SDK

Other
186 stars 129 forks source link

32 bit build on gcc 4.4.7 #206

Closed isorochan closed 2 years ago

isorochan commented 2 years ago

I'm trying to build 32-bit ema on GCC 4.4.7. I got the next bild error:

/Real-Time-SDK-Real-Time-SDK-2.0.6.L1/Cpp-C/Eta/Impl/Codec/../Transport/rtr/shmemtrans.h:201: error: can't find a register in class ‘BREG’ while reloading ‘asm’ /home/c500620/Real-Time-SDK-Real-Time-SDK-2.0.6.L1/Cpp-C/Eta/Impl/Codec/../Transport/rtr/shmemtrans.h:201: error: ‘asm’ operand has impossible constraints make[2]: *** [Cpp-C/Eta/Impl/Codec/CMakeFiles/librssl_shared.dir/__/Transport/rsslUniShMemTransportImpl.c.o] Error 1 Look like issue is in next code

`RTR_C_ALWAYS_INLINE rtr_atomic_val64 _rsslInterExch64(volatile rtr_atomic_val64 volatile var, volatile rtr_atomic_val64 newVal) { volatile rtrInt32 volatile p1 = (rtrInt32)var; volatile rtrInt32 volatile p2 = ((rtrInt32*)var) + 1;

volatile rtrInt32* volatile pn1 = (rtrInt32*)(&newVal);
volatile rtrInt32* volatile pn2 = ((rtrInt32*)(&newVal)) + 1;

__asm__ __volatile__ ( "1: lock cmpxchg8b %0 ; jnz 1"
: "=m"(*var) : "a" (*p1), "d"(*p2),  "b" (*pn1), "c" (*pn2) : "cc");
return *var;

}`

MitchellKato commented 2 years ago

Resolved after discussing with the teams involved.