| Title: | C++ |
| Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) |
| Moderator: | DECCXX::AMARTIN |
| Created: | Fri Nov 06 1987 |
| Last Modified: | Thu Jun 05 1997 |
| Last Successful Update: | Fri Jun 06 1997 |
| Number of topics: | 3604 |
| Total number of notes: | 18242 |
My customer is attempting to link a program compiled on a
6.2 system. He has followed the advice about creating the
old syslib in the release notes but it seems that the image
still insists on linking against decc$shr and cma$tis_shr.
Can someone explain why this is? It seems to defeat the
purpose of this workaround. I haven't got a Vax running 5.5-2
without the rtl components installed so I can't check this.
thanks in advance
Simon
POLAR_$show log sys$share
"SYS$SHARE" = "SYS$SYSDEVICE:[OLD_SYSLIB]" (LNM$SYSTEM_TABLE)
= "SYS$SYSROOT:[SYSLIB]"
POLAR_$show log sys$library
"SYS$LIBRARY" = "SYS$SYSDEVICE:[OLD_SYSLIB]" (LNM$SYSTEM_TABLE)
= "SYS$SYSROOT:[SYSLIB]"
POLAR_$!
POLAR_$!
POLAR_$!
POLAR_$dir sys$sysdevice:[old_syslib]/date/size
Directory SYS$SYSDEVICE:[OLD_SYSLIB]
CMA$LIB_SHR.EXE;2 23 8-JUL-1992 01:12:58.50
CMA$OPEN_LIB_SHR.EXE;1
8 17-OCT-1991 13:34:16.04
CMA$OPEN_RTL.EXE;2 24 8-JUL-1992 01:05:30.71
CMA$RTL.EXE;2 235 8-JUL-1992 01:05:11.59
SMGSHR.EXE;2 229 8-JUL-1992 00:50:59.28
VAXCRTL.EXE;2 209 8-JUL-1992 00:54:11.78
VAXCRTLG.EXE;2 209 8-JUL-1992 00:55:08.20
type test.cxx
// This is the section 1 - program 1.
void main()
{
}
POLAR>> cxx test
POLAR>> link test/map
POLAR>>
POLAR>> anal/image test.exe
Analyze Image 28-FEB-1997 15:30:25.90 Page 1
POLAR$DKA300:[CXXCOMP]TEST.EXE;12
IMAGE HEADER
Fixed Header Information
image format major id: 02, minor id: 05
header block count: 1
image type: executable (IHD$K_EXE)
I/O channel count: default
I/O page count: default
linker flags:
(0) IHD$V_LNKDEBUG 0
(1) IHD$V_LNKNOTFR 0
(2) IHD$V_NOP0BUFS 0
(3) IHD$V_PICIMG 1
(4) IHD$V_P0IMAGE 0
(5) IHD$V_DBGDMT 1
(6) IHD$V_INISHR 0
(7) IHD$V_IHSLONG 1
Image Activation Information
first transfer address: %X'7FFEDF68'
second transfer address: %X'00000200'
third transfer address: %X'00000000'
Global Symbol Table & Debug Symbol Table Information
debug symbol table VBN: 4, block count: 1
global symbol table VBN: 0, record count: 0
debug module/psect table VBN: 0, byte count: 0
Image Identification Information
image name: "TEST"
image file identification: "V1.0"
link date/time: 28-FEB-1997 15:30:00.68
linker identification: "05-13"
Patch Information
There are no patches at this time.
Image Section Descriptors (ISD)
....skip this section for brevity........
IMAGE ACTIVATOR FIXUP SECTION
Fixed Information
Flags:
(0) IAF$V_SHR 0
shareable image count: 5
extra image count: 0
Shareable Image List
0) this image
1) "DECC$SHR"
2) "MTHRTL"
3) "LIBRTL"
4) "CMA$TIS_SHR"
G^ Reference Fixups
2 references to image 1:
00000528 00000000
Protection Change Fixups (relative to %X'00000200')
address: %X'00000200', page count: 1
protection: PRT$C_UREW
| T.R | Title | User | Personal Name | Date | Lines |
|---|---|---|---|---|---|
| 3496.1 | TLE::D_SMITH | Duane Smith -- DEC C RTL | Tue Mar 18 1997 10:06 | 29 | |
The problem is in the C library components placed into the
SYS$SYSDEVICE:[OLD_SYSLIB] area. The components VAXCRTL.EXE
VAXCRTLG.EXE are the VAX C runtime library shareable images,
not the DEC C runtime library shareable images. When compiling
with the C++ compiler, it makes references to DEC C runtime
library global symbols.
When linking the resultant object file, it resolves those globals
from the DECC$SHR.EXE shareable image whose symbols are included
in IMAGELIB.OLB on the V6.2 system.
The DECC$SHR.EXE image was not distributed with OpenVMS V5.5-2 but
instead was made available via the CRT (C Run Time) kit. The CRT
kit is distributed as part of the DEC C and C++ compiler kits.
What the user needs to do is unpack the CRT kit saveset into the
SYS$SYSDEVICE:[OLD_SYSLIB] area being used in the link process.
Perhaps a command such as:
$ BACKUP/SELECT=*.EXE AACRT060.A/SAVE SYS$SYSDEVICE:[OLD_SYSLIB]*.*;
Note that linking against these shareable images implies that the CRT
kit is also found on the target machine that will run the application.
Redistribution of the CRT kit may be required.
Duane
| |||||