[omniORB] omniNotify compile error on 64 bits (Amd-Linux RHel3 /sparc-solaris2.8) platforms

Frederic Prin frederic.prin at silvaco.com
Wed Jul 7 16:50:22 BST 2004


...
I forgot the reason of the compile error:

On my both 64 bit platforms, WRAPPED_CORBA_LONGLONG_TYPE is expanded to
long (which is 8 bytes)
So, line 69 becomes: RDIstrstream& operator<<(long n);

Furthermore, HAS_LongLong is defined in CORBA_sysdep_auto.h:
#if defined(SIZEOF_LONG) && (SIZEOF_LONG == 8)
#  define HAS_LongLong
#  define _CORBA_LONGLONG_DECL     long
#  define _CORBA_ULONGLONG_DECL    unsigned long
#  define _CORBA_LONGLONG_CONST(x) (x)


If you look 5 lines above in the same RDIstrstream.h, you have :
RDIstrstream& operator<<(long n);
That looks the same!

I'm afraid that, the compiler is not blind and that it really can't
define this operator twice!

So, either my autoconf doesn't work (bad machine configuration), either
there is an imcompatibility for omniNotify on 64 bits platforms.


Feel free to react (even if it's to blame me if I did or said something
wrong!)

Fred

-----Original Message-----
From: omniorb-list-bounces at omniorb-support.com
[mailto:omniorb-list-bounces at omniorb-support.com] On Behalf Of Frederic
Prin
Sent: mercredi 7 juillet 2004 15:37
To: omninotify-list at omniorb-support.com;
omniorb-list at omniorb-support.com
Subject: [omniORB] omniNotify compile error on 64 bits (Amd-Linux RHel3
/sparc-solaris2.8) platforms


Hi all,

Here is the first compile error I get if I do not hack the omniNotify
code (on 64 bit machine like sparc solaris2.8 64 or Linux RHel3-64):

Below is a linux rhel3-64 omniNotify build:

/usr/bin/g++ -c -g   -Wall -Wno-unused -fexceptions -D__OMNIORB4__ 
    -I../stub 
    -D_REENTRANT 
 
-I/mnt/sipc/Omni_Distribution_1/omniORB-4.0.3/omniORB-4.0.3-i386-linux-r
h3-64/include 
    -I../include/COS 
    -I../../include/COS 
 
-I/mnt/sipc/Omni_Distribution_1/omniORB-4.0.3/omniORB-4.0.3-i386-linux-r
h3-64/include/COS 
    -D_OMNINOTIFY_LIBRARY 
    -DUSE_stub_in_nt_dll 
    -I. 
    -I../../lib 
    -I../include 
    -I../../include 
    -D__OSVERSION__=2 
    -D__linux__ 
    -I../src/services/omniNotify/include 
    -I../../src/services/omniNotify/include 
 
-I/mnt/sipc/Omni_Distribution_1/omniORB-4.0.3/omniORB-4.0.3-i386-linux-r
h3-64/src/services/omniNotify/include 
    -o static/RDIInteractive.o 
    ../../lib/RDIInteractive.cc
In file included from ../../include/RDIInteractive.h:35,
                 from ../../lib/RDIInteractive.cc:32:
../../include/RDIstrstream.h:69: 
    `RDIstrstream& RDIstrstream::operator<<(long int)' and
    `RDIstrstream& RDIstrstream::operator<<(long int)' cannot be
overloaded
    
../../include/RDIstrstream.h:70: 
    `RDIstrstream& RDIstrstream::operator<<(long unsigned int)' and
    `RDIstrstream& RDIstrstream::operator<<(long unsigned int)' cannot
be overloaded

The RDIstrstream.h file is as follow:
#ifdef HAS_LongLong
  RDIstrstream& operator<<(WRAPPED_CORBA_LONGLONG_TYPE n); <<== line 69
  RDIstrstream& operator<<(WRAPPED_CORBA_ULONGLONG_TYPE n); #endif


If someone have already experienced this error, I will be very happy to
hear about the fix ! The fix I did (in the past) was to undefined
HAS_LongLong... But this
(uggly) fix makes omniNotify not to work across 32<-->64 bits
platforms... (I'm not totally sure but it seems to be case).

I already post such a mail (for solaris2.8 64 bits) a while ago but I
had no response... So, I try again!

Thanks 

FredP

-----Original Message-----
From: Duncan Grisby [mailto:duncan at grisby.org] 
Sent: mardi 6 juillet 2004 17:53
To: Frederic Prin
Subject: Re: [omniORB] omniNotify optimization when sender/receiver on
same machine 


On Tuesday 6 July, "Frederic Prin" wrote:

> The first line of my omniNotify/config.log are (the whole file is
> attached):
> (note the -DLINUX64 is for my specific compilation hack) (also note
> that I had the same hack to do for my sparc 64bit solaris2.8 platform 
> and that all my programs works on this platform Without this hack, I 
> cannot compile omniNotify on 64 bits, linux and solaris, platforms)
> (Finally note that omniORB-4.0.3 compiles perfectly under both
> solaris2.8 64 bit and Linux 64 bit without a hack. It is only NEEDED
for
> omniNotify)

Can you send the output of omniORB's configure please?  omniNotify uses
the definitions created by that for the long long types and so on.

Cheers,

Duncan.

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


_______________________________________________
omniORB-list mailing list
omniORB-list at omniorb-support.com
http://www.omniorb-support.com/mailman/listinfo/omniorb-list




More information about the omniORB-list mailing list