[omniORB] Marshalling issue on Windows with DevLong64

Duncan Grisby duncan at grisby.org
Thu Mar 23 10:12:15 UTC 2023


On Tue, 2023-03-21 at 12:53 +0000, Benjamin Bertrand via omniORB-list
wrote:

> We found some issue with the omniorb library compiled on conda-forge
> for Windows (4.2.5) with cpptango.
> If a client sends a DevLong64 in BigEndian, it is incorrectly
> converted.
> It works fine if LittleEndian is used.

Presumably the omniORB build has gone wrong, and it thinks it is a big
endian system, even though it is little endian. That would mean a
broken omniORB talking to another broken omniORB would work, but for
the wrong reason, whereas any other ORB, whether big- or little-endian
would fail.

> This issue is specific to the conda-forge build.
> It was built from a fork using cmake
> (https://github.com/beenje/omniORB-cmake) as the original build
> system was difficult to make work with conda (

I don't know what that does or how it does it, but it has got it wrong,
and I'm afraid I can't really help with it.

When omniORB compiles, it uses a preprocessor define
_OMNIORB_HOST_BYTE_ORDER_ that must be 1 for little-endian, 0 for big-
endian. In the normal build, that is either based on autoconf or based
on defines of which processor is in use. The autoconf version is in
CORBA_sysdep_auto.h, and the non-autoconf version is in
CORBA_sysdep_trad.h.

Duncan.

-- 
 -- Duncan Grisby --
  -- duncan at grisby.org --
   -- http://www.grisby.org --




More information about the omniORB-list mailing list