Re: Linking problems and support (487 Views)
Reply
Occasional Visitor
z7ql
Posts: 5
Registered: ‎09-25-2013
Message 1 of 10 (568 Views)
Accepted Solution

Linking problems and support

Hi.  I've made an sharable image and linked it with a main programm.  During to execution I've got an message 'ident mismatch with shareable image'. The shareable image and the program are compiling and linking one after another  with the same GSMATCH=ALLWAYS,0,0.  What does it means? Could it be linked with the inappropriate symbol vector?

Frequent Advisor
Maurizio De Tommaso_
Posts: 42
Registered: ‎03-11-2004
Message 2 of 10 (550 Views)

Re: Linking problems and support

$ HELP/MESSAGE SHRIDMISMAT

 

SHRIDMISMAT,  ident mismatch with shareable image

 

Facility:     SYSTEM, System Services

 

  Explanation:  The activation of a component shareable image failed; the
                calling image expected a different (and typically newer)
                version of the shareable image than the image that was
                found during the failed activation attempt. Specifically,
                the global section match (GSMATCH) value associated with the
                shareable image was found to be incompatible with the GSMATCH
                specification for the version of the shareable image against
                which the calling image was originally linked.

                This error can occur under the following conditions:

                o According to the GSMATCH value established when the
                  shareable image was built, there has been an incompatible
                  change to the shareable image.

                o An attempt was made to run an image built for a newer
                  version of the specific shareable image or a newer OpenVMS
                  version or a newer OpenVMS Engineering Change Order
                  (ECO) in an environment with an older version of the same
                  shareable image.


  User Action:  Relink the executable image against the older version of the
                shareable image, or upgrade to the newer shareable image. You
                may need to relink the executable code for the mismatched (and
                probably older) configuration, possibly specifying a different
                GSMATCH. Alternatively, you may have to upgrade the version
                or apply a patch to OpenVMS or the application to make the
                shareable image match the GSMATCH expectations of the calling
                image.

                For details about creating and maintaining shareable images
                and for information on correctly using the GSMATCH mechanisms
                of the OpenVMS Linker utility, refer to the HP OpenVMS Linker
                Utility Manual.

 

OpenVMS Documentation @ http://h71000.www7.hp.com/doc/os84_index.html

Occasional Visitor
z7ql
Posts: 5
Registered: ‎09-25-2013
Message 3 of 10 (533 Views)

Re: Linking problems and support

Thanks for the answer).
But the question is slightly about the different thing. Let me show some example. 
=======================
1.I assemble source files to .obj
cc foo1.c
cc foo2.c
cc ....

2.I link this into shareable immage
link/shareable/map foo1.obj, foo2.obj, ..., lib1.olb/library, lib2.olb/library, SYS$INPUT/OPTIONS

GSMATCH=ALWAYS,0,0

SYMBOL_VECTOR=(proc1=PROCEDURE,-
proc2=PROCEDURE,-
...,-
data1=PSECT,-
data2=PSECT)

3.define the path to the shareable image
define foo TST$USERS:[dir1.dir2...]foo.exe

4.compile the main program
cc main.c

5.linking with the shared image
link main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0
foo.exe/shareable

6.run
run main

===========

And I've got the error:

%DCL-W-ACTIMAGE, error activating image FOO
-CLI-E-IMGNAME, image file $1$DGA15245:[TST$USERS.][dir1.dir2,...]FOO.EXE
-SYSTEM-F-SHRIDMISMAT, ident mismatch with shereable image

 

So I've linked the shareable image and set GSMATCH=ALLWAYS,0,0
And I've linked the main program with GSMATCH=ALLWAYS,0,0

According to h71000.www7.hp.com/doc/83final/4548/4548pro_027.html

 

"ALWAYS Directs the image activator to unconditionally allow the image to map to the referenced shareable image:regardless of the values of the major and minor ID for the shareable image, as saved at link time in the image file, and the values of the IDs found in the actual shareable image file at activation time.Note that you must still specify values for the major ID and minor ID parameters to satisfy the requirements of the option syntax."

So the image activator should not to consider the major and minor GS numbers at all.
And I really don't know what can cause this error.

Esteemed Contributor
H.Becker
Posts: 370
Registered: ‎04-09-2009
Message 4 of 10 (527 Views)

Re: Linking problems and support

[ Edited ]

Are foo.exe and foo aka $1$DGA15245:[TST$USERS.][dir1.dir2,...]FOO.EXE really the same image?

 

If they are different: In your link command you use "foo.exe". The linker takes a foo.exe which is in your default directory, it does not take whatever you defined as "foo". Either use "foo" in the linker options or make sure "foo.exe" is identical to what you defined with "foo".

 

PS: The GSMATCH option when linking the main image has no effect. The linker always writes the GSMATCH info of the referenced shareable images, including your foo.exe, into the main image.

Occasional Visitor
z7ql
Posts: 5
Registered: ‎09-25-2013
Message 5 of 10 (517 Views)

Re: Linking problems and support

To ensure in the identical of images I've done the experiment.

1. Starting new session to discard the "define foo  $1$DGA15245:[TST$USERS.][dir1.dir2,...]FOO.EXE" effect.

 

2. Cleaning the build directory (TST$USERS:[RDEV.TRUNK.VMS.BUILD])

 

3. Set default [.RDEV.TRUNK.VMS.BUILD]

 

4.compiling the main program

    cc/include=[.-.include]  [.-.src]main.c

 

5.Attempt to link main program
link/debug/map main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0

FOO/shareable

 

As expected the linker can not find foo.exe:

%LINK-F-OPENIN, error opening TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO.EXE

 

6. define FOO TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO

 

7.Attempt to link main program
link/debug/map main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0
FOO/shareable

 

Result is the same:

As expected the linker can not find foo.exe:

%LINK-F-OPENIN, error opening TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO.EXE

 

8.Creating shareable image

cc/include=[.-.include]  [.-.src]foo.c

cc/include=[.-.include]  [.-.src]foo1.c

cc/include=[.-.include]  [.-.src]foo2.c

 

link/sheareable foo.obj, foo1.obj, foo2.obj, lib1.olb/library, lib2.olb/library, SYS$INPUT/OPT
SYMBOL_VECTOR=(proc1=PROCEDURE,-

proc2=PROCEDURE,-
...,-
data1=DATA)

 

9.Attempt to link main program

link/debug/map main.obj, SYS$INPUT/OPT
GSMATCH=ALWAYS,0,0
FOO/shareable

 

Successfully)

 

10 To ensure that the image is registrated in system

INSTALL
INSTALL> LIST FOO

 

DISK$IBSLIVE:<TST$USERS.RDEV.TRUNK.VMS.BUILD>.EXE

FOO;2 Open Shared Lnkbl

 

Is It a magic? 'Dir' command gives only FOO.EXE;1 in the TST$USERS:[RDEV.TRUNK.VMS.BUILD], but not FOO;2

 

11 Running the program gives the same error

 

PS. I've tryed to use 'INSTALL ADD FOO/SHAREABLE' to build in it in the system. May be it is the main issue.

So

1. What can I do to be sure that I defenitly rollback the INSTALL ADD afterwards.

2. How to check this.

 

Occasional Visitor
z7ql
Posts: 5
Registered: ‎09-25-2013
Message 6 of 10 (511 Views)

Re: Linking problems and support

went to read install utility manual.)

Occasional Visitor
z7ql
Posts: 5
Registered: ‎09-25-2013
Message 7 of 10 (503 Views)

Re: Linking problems and support

So the maine trouble was: system has an installed shareable image and an activator takes it instead  of mine. I do not know how it can takes unexisting image with the number ;2 instead of ;1.

 

The solution is:

set PROCESS/PRIVILEGIES-CMKRNL
INSTALL DELETE FOO

 

I am gratitude for a help, guys. Thanks for everyone. Topic Closed.

Frequent Advisor
Maurizio De Tommaso_
Posts: 42
Registered: ‎03-11-2004
Message 8 of 10 (492 Views)

Re: Linking problems and support

The Install utility (INSTALL) creates known file entries to improve the performance of executable and shareable images, especially those that run frequently, run concurrently with several processes, or allow images to run in a

privileged context.

 

The Install REPLACE command updates a known file to the latest, or to a specified version found in the specified directory, or in another directory if the file-spec parameter uses a search list. If you specify no qualifiers, the new image retains the same attributes as the old one. Requires the CMKRNL privilege. Also requires the SYSGBL privilege to create

system global sections and the PRMGBL privilege to create permanent global sections.

 

 

Esteemed Contributor
H.Becker
Posts: 370
Registered: ‎04-09-2009
Message 9 of 10 (490 Views)

Re: Linking problems and support

If you want the image activator to use your version of foo instead of the installed one, define the logical foo pointing to the image file name plus version, like: define FOO TST$USERS:[RDEV.TRUNK.VMS.BUILD]FOO.EXE;

Esteemed Contributor
H.Becker
Posts: 370
Registered: ‎04-09-2009
Message 10 of 10 (487 Views)

Re: Linking problems and support

> Is It a magic? 'Dir' command gives only FOO.EXE;1 in the TST$USERS:[RDEV.TRUNK.VMS.BUILD], but not FOO;2

 

No magic. As long as the image is installed, you can not completely delete it. But you can and you obviously did use DELETE to deletei it from the directory, so it no longer shows with a DIR command. The image file is completely gone after you REMOVE it from the installed images (and the image is no longer used by any other currently running image).

 

The opinions expressed above are the personal opinions of the authors, not of HP. By using this site, you accept the Terms of Use and Rules of Participation.