[omniORB] Issue transfering double over the network on x86_64/arvm8

Duncan Grisby duncan at grisby.org
Sat Feb 11 19:18:38 UTC 2023


On Tue, 2023-02-07 at 10:18 +0000, Benjamin Bertrand via omniORB-list
wrote:
> 
> I have been cross-compiling omniorb for Apple M1 and we haven't seen
> that issue.

Maybe the cross-compiler does set the __VFP_FP preprocessor symbol.

> When cross-compiling I had to use "--disable-longdouble" option,
> otherwise I get a compilation error:

That is entirely different. x86 and x86-64 processors support long
double, which is bigger than double. (double is 64 bits; full long
double is 128 bits, but 32-bit x86 has 96 bit long-ish double). ARM
does not have long double at all.

In general, omniidl's output is identical for all platforms, but as
part of the compile of omniORB, it compiles standard IDL for standard
sequence types. One of those is sequence<long double>. The only thing
omniidl knows is whether the platform it is running on supports long
double. It does not know the target platform.

What happens here is that omniidl on x86 knows that the platform
supports long double, so when it is cross compiling omniORB for ARM, it
generates long double code that cannot actually be supported.

You almost certainly don't care about long double, so you can safely
turn it off. If you DO need long double, you can't use the ARM
architecture at all, so the compile error is the least of your
problems.

Duncan.


-- 
Duncan Grisby <duncan at grisby.org>



More information about the omniORB-list mailing list