[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference lassie::ucx

Title:DEC TCP/IP Services for OpenVMS
Notice:Note 2-SSB Kits, 3-FT Kits, 4-Patch Info, 7-QAR System
Moderator:ucxaxp.ucx.lkg.dec.com::TIBBERT
Created:Thu Nov 17 1994
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:5568
Total number of notes:21492

5186.0. "CC-W-NOLINKAGE with ucx$rpcxdr.h" by VIRGIN::PFISTERR (Carpe Diem, Memento Mori) Mon Feb 03 1997 04:43

    Hi,
    
    A customer uses UCX$RPCXDR.H and receives the following warning,
    when he compiles his code:
    
            typedef unsigned char *caddr_t;
                ......................^
    %CC-W-NOLINKAGE, In this declaration, "caddr_t" has no linkage and
    has a prior
     declaration in this scope at line 205 in IN.
                    At line number 127 in
    SYS$COMMON:[SYSLIB]UCX$RPCXDR.H;2.
    
    %VCG-I-SUMMARY, Completed with 0 error(s), 1 warning(s), and
                    0 informational messages.
                    At line number 1736 in
    SYS$COMMON:[SYSLIB]UCX$RPCXDR.H;2.
    
    
    He has a VAX with OpenVMS 5.5-2H4, UCX 3.3 (ECO10) and DECC 5.2.
    
    The code to see this is very easy:
    $ ty b.c
    #include <ucx$rpcxdr.h>
    $
    
    The workaroud is to include also SOCKET.H. But he wanted to report
    us this behavour and asked, if it is a known bug and if there exists a
    patch or is it fixed in a newer version (he couldn't install 5.3
    because of installation problems).
    The customer is not so happy with this workaround. He asked me, how can
    DIGITAL deliver a new compiler which has new header files which
    requires, that he has to change 90% of his code. When will DIGITAL
    deliver a solution which don't need the additional 3. header file?
    
    I posted also in TURRIS::DECC #2072. The people there told me to ask in
    this notes conference because UCX header file is owned by the UCX (old
    name) product.
    
    Thanks in advance for Your answer(s)!
    
    Rene         
T.RTitleUserPersonal
Name
DateLines
5186.1COMEUP::SIMMONDSlock (M); while (not *SOMETHING) { Wait(C,M); } unlock(M)Mon Feb 03 1997 21:547
    [I should defer 'til John Geminiani answers this, but.. ;)]
    The ONC RPC package was apparently substantially improved for UCX
    V4.0, eliminating nasties like this one..  best to get your Customer
    onto the latest versions (UCX V4.1 +ECO4,  DEC C V5.5)  ..I see no
    such problems with the newer versions I just mentioned.
    
    John.
5186.2VIRGIN::PFISTERRCarpe Diem, Memento MoriMon Feb 10 1997 02:5510
    The customer answered to me:
    
    The only problem is, that a program which is developed
    under V4.1 is not able to link or run under UCX 3.x.
    All our production systems have UCX 3.x installed.
    
    I hope this shows you a little bit our problem with
    this software.
    
    ->What can he do?
5186.3VIRGIN::PFISTERRCarpe Diem, Memento MoriTue Feb 11 1997 02:255
    Here I am again!
    What about the workaround which is from TURRIS::DECC #2072 (modify
    UCX$RPCXDR.H to include socket.h)? Or do You have another solution?
    
    Rene
5186.4UCXAXP::GEMIGNANITue Feb 11 1997 20:0712
    It could very well work.
    
    The problem is that the V4.1 code is built to run with DECC.  The V3.3
    RPC uses VAXC.  Does the customer have DECC or VAXC installed on their
    systems?
    
    I would recommend that you stay away from modifying the header files of
    UCX.  If you could, have the socket.h header included into the user's
    application, this way it will always work independent of the
    environment that it is built in.
    
    Am I on the mark here?
5186.5I think the answer was noHNDYMN::MCCARTHYA Quinn Martin ProductionWed Feb 12 1997 06:235
I think it was mentioned in the turris::c_plus_plus version of this thread that
the customer had "a great deal" of files to change and wanted a fix from 
Digital instead.

bjm
5186.6UCX$RPCXDR_SHR.EXE Compiler Erroring OutCSC32::P_DICKERSONWed Feb 12 1997 13:5519
    
    Hi,
    
    I have a customer that actually read the release notes.  It told her
    to rebuild UCX$RPCXDR_SHR.EXE with DEC C.  But it is erroring out on
    her.  Therefore, she is using the old UCX$RPCXDR_SHR.EXE.  This works
    fine for her.  Her questions are:
    
    1. Will using an old version of UCX$RPCXDR_SHR.EXE have any kind of 
       effect on the new version of UCX or her applications when she uses
       RPC?
    
    2. What can she do to get the compiler to successfully rebuild a new 
       UCX$RPCXDR_SHR.EXE?
    
    Please advice,
    
    Phil D.
    
5186.7LASSIE::GEMIGNANITue Feb 18 1997 16:4228
    I just did a search of the socket.h inclusion, and found that ...
    
    UCX$RPCXDR.H includes UCX$RPC:rpc.h
        UCX$RPC:rpc.h includes UCX$RPC:types.h
            UCX$RPC:types.h includes <socket.h>:
    
    		#ifndef __SOCKET_TYPEDEFS
    		#include <socket.h>
    		#endif /* __SOCKET_TYPEDEFS */
    
    So, socket.h should be included in the user's compilation.  You can
    defeat this inclusion by including UCX$RPCXDR.H AFTER your own
    inclusion of <socket.h>.
    
    Regarding questions posed in .6:
    
    1) The older RPC library could have some routine mismatches if you
       compile with V4 and link to run with V3.  There are also a series
       of features which are not present in that library.
    
    2) There is no way for a customer to build a copy of UCX$RPCXDR_SHR.EXE
       at their site.
    
    If you are developing on a V4 system and installing on V3 systems, you
    should link against UCX$RPC:UCX$RPCXDR.OLB.  This means that you won't
    need to use the UCX$RPCXDR_SHR.EXE image at all.  Hence, there should
    be no image incompatibilities.  The protocol for V3 and V4 are
    identical, so the RPC will work without any problems.
5186.8we would consider this our bugHNDYMN::MCCARTHYA Quinn Martin ProductionWed Feb 19 1997 05:428
The C++ Class Library and the CRTL have requirements that each of its
header files compile "stand alone".  This means that if the header file
requires another header file, it includes it.  

I would hope UCX would adopt the same requirement (ie if rpc.h needs socket.h,
it includes it).

bjm
5186.9LASSIE::GEMIGNANIWed Feb 19 1997 18:4616
    
    I am soooo disappointed.  You claimed it to be your bug, and you don't
    want to argue about it first.
    
    We are in the process of designing IP V6 support for UCX, and a whole
    bunch of new IP definitions are going to be needed.  It is my belief
    that the networking header files should come from us (i.e. socket.h,
    in.h, netdb.h, etc, etc, etc).  A lot of this is too much out of our
    control.  In this case, there are a bunch of definitions in the network
    header files which we have no control over, and they are different than
    other implementations (granted, if you wanted Unix you would have
    installed it instead of VMS).  The issues we get beat up upon (and this
    is one of them) is around portability.  We have to be sure to be
    portable with Unix, in particular.
    
    So where do we go now?
5186.10The End.UCXAXP::GEMIGNANIThu Feb 20 1997 15:5721
    
    And, in conclusion ...
    
    What we have here is a simple incompatibility between V3 and V4, in
    that the customer is compiling on V4 and expects to be able to link
    against the V3 shareable.
    
    The release notes state that you must use DECC beginning with V4.
    It recommends that you compile (or at least relink) your apps to use
    the new shareable.  At installation time, the old shareable is
    preserved (and the installation procedure tells you this), in case you
    need to use it for older programs.  Granted, it wasn't nice to have
    to require this, but a solution is now in place which will apply to
    all future releases.
    
    In .7, I suggested a workaround which would ensure that your code could
    work on any version of UCX.  Another group within Digital has used this
    approach and it works fine for them.  Keep in mind that this particular
    problem occurs with UCX V3.3 systems, and we no longer support this
    release.