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

Conference turris::decc

Title:DECC
Notice:General DEC C discussions
Moderator:TLE::D_SMITHNTE
Created:Fri Nov 13 1992
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:2212
Total number of notes:11045

2072.0. "CC-W-NOLINKAGE with ucx$rpcxdr.h" by VIRGIN::PFISTERR (Carpe Diem, Memento Mori) Tue Jan 28 1997 05:06

    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 asedk, 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).
    
    Thanks in advance for Your answer(s)!
    
    Rene
    
T.RTitleUserPersonal
Name
DateLines
2072.1reproducible under DEC C V5.3-006 on OpenVMS VAX V6.2 - not a compiler errorWIDTH::MDAVISMark Davis - compiler maniacTue Jan 28 1997 10:0662
ucx$rpcxdr.h does:


#ifndef __IN_H
#include <in.h>		/* needed by svc.h */
#endif /* __IN_H */


in.h has: 
#ifndef __SOCKET_TYPEDEFS
typedef char * caddr_t;

typedef unsigned short u_short;

typedef unsigned long u_long;

typedef unsigned char u_char;

#define __SOCKET_TYPEDEFS
#endif

then, later in ucx$rpcxdr.h there is another typedef of caddr_t:
#ifndef __RPC_TYPES_H__
#define __RPC_TYPES_H__


#ifndef	KERNEL
#ifndef major		/* ouch! */
/*#include <sys/types.h>*/
/*
** <sys/types.h>
*/
#ifndef __SOCKET_TYPEDEFS
typedef unsigned char *caddr_t;
typedef unsigned long  u_long;
typedef unsigned short u_short;
#endif /* __SOCKET_TYPEDEFS */


One def is char*, the other is UNSIGNED char*.

> The workaroud is to include also SOCKET.H
Here's the code in socket.h

#ifndef __SOCKET_TYPEDEFS
typedef char * caddr_t;

typedef unsigned short u_short;

typedef unsigned long u_long;

typedef unsigned char u_char;

#define __SOCKET_TYPEDEFS
#endif


I don't have any documentation to look at, but presumably you're supposed
to include socket.h before including ucx$rpcxdr.h....

Mark Davis
c/c++ team
2072.2VIRGIN::PFISTERRCarpe Diem, Memento MoriFri Jan 31 1997 01:598
    Thank You for the answer!
    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?
    
    Rene
                             
2072.3wrong group to ask HNDYMN::MCCARTHYA Quinn Martin ProductionFri Jan 31 1997 05:5811
>>    DIGITAL deliver a new compiler which has new header files which

That header file is not part of the compiler product.

>>    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?

Since the UCX header file is owned by the UCX (old name) product, ask that
question.  There conference is lassie::ucx.

bjm
2072.4CSC64::BLAYLOCKIf at first you doubt,doubt again.Fri Jan 31 1997 10:317

In the mean time, you could just have your customer
modify UCX$RPCXDR.H to include socket.h until UCX engineering
delivers a modify version of their own.

Then only one module is changed for the customer.
2072.5UCX V3.3 no longer supportedCUJO::SAMPSONSat Feb 01 1997 00:461
	Also, the customer might want to try upgrading to UCX V4.1 ECO 4.
2072.6VIRGIN::PFISTERRCarpe Diem, Memento MoriMon Feb 10 1997 02:5011
    The customer answered 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?
2072.7see .4 for simple possible solutionHNDYMN::MCCARTHYA Quinn Martin ProductionMon Feb 10 1997 05:598
>>    ->What can he do?

Continue the line of questioning in the UCX conference.  I would think 
for 3.n systems, fixing a header file would be the right thing to do and 
those fixes should come from the UCX group - or at least directed from the UCX
engineering team and not from the C++ team.

bjm