Hello,

I´ve been dealing with some linking errors while trying to build AMODE64
ICSF-aware programs.

Documentation clearly states that jsut referring to CSF.SCSFMOD0 on the DD
SYSLIB should be enough as seen in
http://publib.boulder.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.csfb400/lnkcal.htm
.

But following the documentation I was getting this all the time:

 IEW2469E 9907 THE ATTRIBUTES OF A REFERENCE TO CSNFKRC FROM SECTION GenChav#C
          DO NOT MATCH THE ATTRIBUTES OF THE TARGET SYMBOL. REASON  2
 IEW2469E 9907 THE ATTRIBUTES OF A REFERENCE TO CSNFKRC FROM SECTION GenChav#C
          DO NOT MATCH THE ATTRIBUTES OF THE TARGET SYMBOL. REASON  2
FSUM3065 The LINKEDIT step ended with return code 8.

A load module was save but was corrupted, with broken references to the CSF
functions I was referring to. Listing the CSF.SCSFMOD0 library I could
clearly see the module was there. Also, the reason code showed in the linker
error message seemed to say that found a target module for my program call,
but it was incompatible:

IEW2469E THE ATTRIBUTES OF A REFERENCE TO symbol-name DO NOT MATCH THE
ATTRIBUTES OF THE TARGET SYMBOL. REASON reason.

Explanation: The interface attributes as indicated by the signatures stored
in the ESDs and RLDs do not match. Either the reference was resolved to an
incorrect module (which contained a symbol of the same name as the desired
module) or there was an error in the source code. The possible values of the
reason field are:

   1. The ESD signature fields of the reference and target do not match.

   2. The xplink attributes of the reference and target do not match. 

So, I had no idea if this was some sort of documentation error from IBM or
if the z/OS team here screwed up during the s.o. upgrade. But I kept
researching and found several references of AMODE64 compile/linking in the
PKCS#11 implementation from IBM (PKCS#11 is an standard library call, it is
pretty much a wrapper, so instead of calling the CSNxxxxx ICSF calls, you
call them using another naming scheme just for portability purposes, easing
cross platform development).

There I found about SYS1.SIEALNKE and SYS1.SIEASID(CSFDLL64). 

First, SYS1.SIEALNKE, a library with CSF calls compiled in AMODE64 with a
CSFDLL64 member, so I did refer to in on my linker job SYSLIB . 

Second, SYS1.SIEASID(CSFDLL64), is a "sidedeck" with a mapping scheme of 64
functions available in the target module for linking, this goes on the
SYSLIN DD of my linker job...

Just to note that CSF.SCSFMOD0 was ripped off from the SYSLIB.

After that, tried new compile/link and it worked like a charm. Also, my
caller AMODE64 app was able to call the ICSF function without issues.

I am leaving this here if anyone struggles with the same problem and if any
IBMer is seeing this, it would be nice to investigate more about the issue
and maybe update the ICS Programming Guide manual, because the linkng
instructions there do not work for AMODE64...

My z/OS here is 1.11.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to