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

Conference vaxaxp::vmsnotes

Title:VAX and Alpha VMS
Notice:This is a new VMSnotes, please read note 2.1
Moderator:VAXAXP::BERNARDO
Created:Wed Jan 22 1997
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:703
Total number of notes:3722

592.0. "LINK-E-CONFBASADR SORTSHR" by KERNEL::SMITH () Wed May 14 1997 08:45

    Hello,
    
    A cust is seeing problems with the linker which wasn't happening on 
    previous version of his OpenVMS. Can anyone shed some light as to
    why this is happening and if there is anything which can be done to
    work around this.....
    
I am comparing OpenVMS 7.1 on VAX with OpenVMS 6.1 on VAX.  I believe I   
had the problem on 7.0 and that it is not on 6.2 but I am not in a   
position to reproduce those easily.

I have just completely rebuilt the two development areas, so that all   
command and option files are identical.

In its simplest form, a link of an .EXE that works fine on 6.1 produces   
the following error on 7.1 :-

%LINK-E-CONFBASADR, conflicting base address for image SORTSHR
        base of %X000C5400 in file SYS$COMMON:[SYSLIB]ADLIBSHR.EXE;78
        conflicts with base of %X000B8A00 in file   
SYS$COMMON:[SYSLIB]ADLIBSHR.EXE;78
%LINK-E-NOIMGFIL, image file not created
%LINK-E-CONFBASADR, conflicting base address for image LIBRTL2
        base of %X000CBC00 in file SYS$COMMON:[SYSLIB]ADLIBSHR.EXE;78
        conflicts with base of %X000C3800 in file   
SYS$COMMON:[SYSLIB]ADLIBSHR.EXE;78
%LINK-E-INSVIRMEM, insufficient virtual memory for 104. pages
        for cluster SORTSHR
%LINK-E-INSVIRMEM, insufficient virtual memory for 68. pages
        for cluster LIBRTL2

The relevant part of the two maps are:-

   Cluster      Type Pages   Base Addr  Disk VBN PFC Protection and   
Paging      Global Sec. Name   Match     Majorid   Minorid
   -------      ---- -----   ---------  -------- ---   
 ---------------------      ----------------   -----     -------   -------

ADLIBSHR           2  1253    00000000          3   0 READ WRITE   COPY   
ON REF   ADLIBSHR_001     EQUAL            63   5692694
                   4    50    0009CA00       1256   0 READ WRITE   COPY   
ON REF   ADLIBSHR_002     EQUAL            63   5692694
                   3    86    000A2E00       1306   0 READ ONLY   
                 ADLIBSHR_003     EQUAL            63   5692694
                   4     1  P-000ADA00       1392   0 READ WRITE   COPY   
ON REF   ADLIBSHR_004     EQUAL            63   5692694

LIBRTL             3   264    000ADC00          2   0 READ ONLY   
                 LIBRTL_001       LESS/EQUAL        1        14
                   4    15    000CEC00          0   0 READ WRITE   DEMAND   
ZERO   LIBRTL_002       LESS/EQUAL        1        14

SORTSHR            3   101    000B8A00          2   0 READ ONLY   
                 SORTSHR_001      LESS/EQUAL        2        29
                   4     1    000C5400        103   0 READ WRITE   COPY   
ON REF   SORTSHR_002      LESS/EQUAL        2        29
                   4     1  P-000C5600        104   0 READ WRITE   COPY   
ON REF   SORTSHR_003      LESS/EQUAL        2        29
                   2     1    000C5800        105   0 READ WRITE   FIXUP   
VECTORS SORTSHR_004      LESS/EQUAL        2        29

LIBRTL2            3    66    000C3800          2   0 READ ONLY   
                 LIBRTL2_001      LESS/EQUAL        1        12
                   4     1    000CBC00         68   0 READ WRITE   COPY   
ON REF   LIBRTL2_002      LESS/EQUAL        1        12
                   2     1    000CBE00         69   0 READ WRITE   FIXUP   
VECTORS LIBRTL2_003      LESS/EQUAL        1        12

and

   Cluster      Type Pages   Base Addr  Disk VBN PFC Protection and   
Paging      Global Sec. Name   Match     Majorid   Minorid
   -------      ---- -----   ---------  -------- ---   
 ---------------------      ----------------   -----     -------   -------

ADLIBSHR           2  1253    00000000          0   0 READ WRITE   COPY   
ON REF   ADLIBSHR_001     EQUAL            63   5657749
                   4    50    0009CA00          0   0 READ WRITE   COPY   
ON REF   ADLIBSHR_002     EQUAL            63   5657749
                   3    86    000A2E00          0   0 READ ONLY   
                 ADLIBSHR_003     EQUAL            63   5657749
                   4     1  P-000ADA00          0   0 READ WRITE   COPY   
ON REF   ADLIBSHR_004     EQUAL            63   5657749

LIBRTL             3   241    000ADC00          0   0 READ ONLY   
                 LIBRTL_001       LESS/EQUAL        1        14
                   4    15    000CBE00          0   0 READ WRITE DEMAND   
ZERO     LIBRTL_002       LESS/EQUAL        1        14
                   3     1    000CDC00          0   0 READ ONLY   
                 LIBRTL_003       LESS/EQUAL        1        14

SORTSHR            3   101    000CDE00          0   0 READ ONLY   
                 SORTSHR_001      LESS/EQUAL        2        29
                   4     1    000DA800          0   0 READ WRITE   COPY   
ON REF   SORTSHR_002      LESS/EQUAL        2        29
                   4     1  P-000DAA00          0   0 READ WRITE   COPY   
ON REF   SORTSHR_003      LESS/EQUAL        2        29
                   2     1    000DAC00          0   0 READ WRITE   FIXUP   
VECTORS SORTSHR_004      LESS/EQUAL        2        29

LIBRTL2            3    64    000DAE00          0   0 READ ONLY   
                 LIBRTL2_001      LESS/EQUAL        1        12
                   4     1    000E2E00          0   0 READ WRITE   COPY   
ON REF   LIBRTL2_002      LESS/EQUAL        1        12
                   2     1    000E3000          0   0 READ WRITE   FIXUP   
VECTORS LIBRTL2_003      LESS/EQUAL        1        12

DEFAULT_CLUSTER    0   270    000E3200          3   0 READ ONLY


Note that SORTSHR in the bad one chooses to base itself halfway up LIBRTL   
instead of behind it!

I tried various permutations of LINK parameters before I contacted you.   
 Recently, I tried heavily modifying the application to be not based, but   
I have finally had to give that up, as one particular PSECT must be based   
at low memory for the application to run properly.  I could make those   
changes again if it helped, but I now believe the answer must be simpler   
than that.

I have another application that similarly requires to be based, but this   
time the shareable module doesn't need to, it can be the one that links   
to it.  Interestingly, in this case, two things are different in the map.   
 The LINKER pulls in LBRSHR, and SORTSHR does not get given a base   
address.

   Cluster      Type Pages   Base Addr  Disk VBN PFC Protection and   
Paging      Global Sec. Name   Match     Majorid   Minorid
   -------      ---- -----   ---------  -------- ---   
 ---------------------      ----------------   -----     -------   -------

LIBRTL             3   264    00000000-R        0   0 READ ONLY   
                 LIBRTL_001       LESS/EQUAL        1        14
                   4    15    00021000-R        0   0 READ WRITE   DEMAND   
ZERO   LIBRTL_002       LESS/EQUAL        1        14

LBRSHR             1     1    00000000-R        0   0 READ ONLY   
                 LBRSHR_001       LESS/EQUAL        2         9
                   2     3    00000200-R        0   0 READ WRITE   COPY   
ON REF   LBRSHR_002       LESS/EQUAL        2         9
                   2    60    00000800-R        0   0 READ ONLY   
                 LBRSHR_003       LESS/EQUAL        2         9
                   2     1    00008000-R        0   0 READ WRITE   FIXUP   
VECTORS LBRSHR_004       LESS/EQUAL        2         9

SORTSHR            3   101    00000000-R        0   0 READ ONLY   
                 SORTSHR_001      LESS/EQUAL        2        29
                   4     1    0000CA00-R        0   0 READ WRITE   COPY   
ON REF   SORTSHR_002      LESS/EQUAL        2        29
                   4     1  P-0000CC00-R        0   0 READ WRITE   COPY   
ON REF   SORTSHR_003      LESS/EQUAL        2        29
                   2     1    0000CE00-R        0   0 READ WRITE   FIXUP   
VECTORS SORTSHR_004      LESS/EQUAL        2        29

LIBRTL2            3    66    00000000-R        0   0 READ ONLY   
                 LIBRTL2_001      LESS/EQUAL        1        12
                   4     1    00008400-R        0   0 READ WRITE   COPY   
ON REF   LIBRTL2_002      LESS/EQUAL        1        12

 ----------
T.RTitleUserPersonal
Name
DateLines
592.1Linker command and options file ..KERNEL::SMITHWed May 14 1997 08:4644
For the shareable image...

 LINK ADLIBshr/share/NOTRACEBACK/MAP/FULL/CROSS/OPT -
,sys$system:sys.stb/select-
,sys$system:rmsdef.stb/sel-
,sys$input/opt

with ADLIBSHR.OPT looking like this...

base=0
cluster=adlib_imp0_data,0,,adlib/include=(adlib_data,adlib_rmsd)
cluster=adlib_pure_inst,,,adlib/include=-
(adlib_adlt,adlib_boot,adlib_cras,adlib_erro,adlib_init,adlib_stop,adlib_w  
ait,-
adlib_astm,adlib_acti,adlib_comp,adlib_core,adlib_disp,adlib_edit,adlib_fo  
rm,-
adlib_geto,adlib_goto,adlib_inpu,adlib_inte,adlib_letu,adlib_move,adlib_pa  
ck,-
adlib_subr,adlib_symb,adlib_tran,adlib_upac,adlib_util,adlib_zero,-
adlib_prin,adlib_alph,adlib_sort,adlib_utix,adlib_mbco,adlib_mbca,adlib_mb  
tg,-
adlib_mbtb,adlib_mbtj,adlib_mbtr,adlib_unco,adlib_vist,-
adlib_vist1,adlib_vist2,adlib_vist3,adlib_msg)
!
universal=adlib_ab_flag
universal=adlib_acti_0
universal=adlib_acti_1
universal=adlib_adlt_c
universal=adlib_adlt_d
universal=adlib_adlt_e
universal=adlib_adlt_e
etc.

And for the executable image...

LINK/MAP/full/notraceback addemo/EXECUTEABLE=addemo,adtemp/OPTIONS

with ADTEMP.OPT looking like this...

CLUSTER=VISTA_SHARE,,,SYS$SHARE:ADLIBshr/SHARE


 ----------
592.2More Info On ADLIBSHR NeededXDELTA::HOFFMANSteve, OpenVMS EngineeringWed May 14 1997 10:3912
   I'd expect this from a based shareable image such as ADLIBSHR -- recreate
   this image as position independent.  Failure to do so will provoke this
   same sort of "fun" after various OpenVMS ECO kits, and after various
   OpenVMS upgrades -- position-dependent (based; NOPIC) code is bad news.

   What we need are the link maps from ADLIBSHR, and more details around
   the design of that image, and information on whether or not this image
   can be "broken up" into position-independent code and a COMMON (which
   will be position dependent) or (better) a global section.  And on what
   problem(s) the customer was encountering when attempting to remove the
   position-dependence.
592.3maps and cust reply ...KERNEL::SMITHWed May 14 1997 13:4341
    
    Hi, THanks for your reply, I have the maps, unfortunately they are
    extensive and the cust reply was less than favourable. Would you like
    them posted in a reply or mailed/copied somewhere ...
    
    many thanks 
    ewan
    
    ====================================================================
    
    cust reply :-
    
    I appreciate that if I re-design the application to be
    position-independent the problem will go away.  Unfortunately I have
    customers out there who might go VMS 7 before I get around to doing
    that.
    
    You (Digital) have changed something in the LINKER, or SORTSHR, or
    LIBRTL
    to make it go wrong.  If you can't narrow it down to something I can
    bypass, then I'll just have to abandon this product from the market,
    and
    blame Digital!
     
    Here are the maps...
    
    [[ ADLIBSHR.V61 : 3644 in ADLIBSHR.V61 ]][[ ADLIBSHR.V71 : 3645 in
    ADLIBSHR.V71 ]]
    Adlib is a report generator, and the application .EXEs that link to
    adlibshr 'know' about certain areas in low memory.  The product is
    based
    (no pun) on another product of ours that has been around since PDP
    days,
    and still survives using this technique.  I have successfully ported it
    to ALPHA, so I know that the problem is not insoluble, but frankly the
    income from adlib doesn't justify the work involved.
    
    PS.  The above information is price-sensitive, and therefore
    CONFIDENTIAL.
    
    
592.4CSC64::BLAYLOCKIf at first you doubt,doubt again.Thu May 15 1997 15:3918
The next experiments are then to

On V7.1, use the V6.1/2 linker.  Does the problem go away?
If it does, the issue is highly likely a change in the linker.
This also gives you a work around.

If the link still fails, on V7.1 use a copy of the V6.1 SORTSHR (or LIBRTL).
Does the issue go away?  If so, then the change is with the SORTSHR
image.  If it is a conflict with the sharables on V7.1, just link
against the V6.1 OpenVMS sharables.  Between 6.1 and 7.1, the
virtual address size of SORTSHR did not change (104 pages). For LIBRTL
it went from 257 pages to 279 pages which makes a big difference
to a based image.  Oracle has/had this problem for over a decade
because of their based images.  Other than having his customers
use the V6 LIBRTL images on V7 (private copies), then he will see
a problem with a base image with every increase in size of the
shareable images that it touches.
592.5undefined symbol AMAC_FLT_VKERNEL::SMITHTue Jun 03 1997 12:3424
    Many thanks for your replies, the cust will persevere with this and 
    in the meantime could someone pls comment on the following. 
    
    One of their applications, has been rebuilt, but when the libraries are
    shipped to a customer running VMS 6.2 the re-link on site gives the 
    following error:
    
    Undefined symbol AMAC_FLT_V referenced in PSECT ...
    
    According to the map on VMS 7.1 this symbol is in module AMAC_FLT_DATA.MAR 
    which comes from  SYS$SHARE:STARLET.OLB.  The symbol is not in the VMS 6.2
    STARLET.
    
    This  technique used to ship their products has worked for the last 15
    years. Is there anything he can do to allow them to continue to support 
    earlier VMS systems?
     
    	My understanding is that we don't or won't support backward
    compatibility between VMS versions. Is this the case. PLease correct me
    if I'm wrong.
    
    Many thanks,
    
    Ewan Smith - UK CSC
592.6/trace prevents calling AMAC_FLT_KERNEL::SMITHWed Jun 04 1997 08:459
    In the meantime, he has discovered that he can stop the linker calling
    in the AMAC_FLT_ routines by adding /trace to the link command.  
    Unfortunately, that prevents him installing the image with privileges 
    which he needs for this application.
    Is there any other of getting around this.
    
    regards
    ewan
    
592.7CSC64::BLAYLOCKIf at first you doubt,doubt again.Wed Jun 04 1997 12:5211
The base note describes a shareable image.  Shareable images cannot use
the /privileges defined with install, so there is no need to 
use this qualifier and thus the traceback information is not relavent.

I would look at the maps generated by the two link operations to 
see where the AMAC_FLT_* reference is coming from.  That is, with
/CROSS_REF in the link, what is referencing this symbol that it
is brought in.  Backwards compatiblity has never been a goal for
OpenVMS, so if you are building on V7 for V6 customers, you must use
V6 libraries and shareable images.