- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - OpenVMS
- >
- Re: %ILINK-E-NOT22BITS error (not resolved with /N...
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Discussions
Discussions
Forums
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-28-2009 10:31 PM
тАО07-28-2009 10:31 PM
%ILINK-E-NOT22BITS error (not resolved with /NATIVE)
I have a project originally written, compiled and linked on Alpha. I am trying to port it to Itanium and faced the subject error while linking some modules.
%ILINK-E-NOT22BITS, the short data segment has exceeded 4 MB
%ILINK-E-NOIMGFIL, image file not created
I found a branch here with discussion (http://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=605424) which addresses exactly the same issue and it has some kind of workaround тАУ to use /NATIVE option for linker. I redefined тАШlinkтАЩ command in the following way:
link :== link/NATIVE
and rebuilt the whole project from scratch. In fact it didnтАЩt help and the issue still occurs for the same images. These images are built from ~1500 modules. BTW, I have noticed that average image size on Alpha is about 100Mb. Those images which were linked successfully on Itanium are twice this size (>200Mb).
Some info on my system is below:
1) Linker version is the following:
$ cc /version
HP C V7.2-001 on OpenVMS IA64 V8.3-1H1
2) String for compiler (legacy of Alpha code):
$ show sym ccc
CCC == "CC/G_FLOAT/STAND=VAXC/DEF=VAX/NOMEMBER_AL/NOOPT"
Any input is much appreciated.
Best regards,
Dmitry Sinelnikov
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-29-2009 12:41 AM
тАО07-29-2009 12:41 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
The linker is only the messenger, the problem is too much data to be collected or created to fit in a 4MB virtual address space.
Collected are short data sections created by the compilers. Short data may be a longword for an int or smaller items. The compilers decides. Relocations, produced by the compilers, require the linker to create data. Created data are address data and function descriptors. The error code indicates the linker tries to create that data and hits the 4MB limit.
The limit of 4MB is imposed by the set of IA64 instructions, which the compiler used to create code.
That said, when linking, you can
- for shareable images, move the symbol vector out of short data:/SEGMENT=SYMBOL_VECTOR=NOSHORT
- for a test, combine readonly and writeable short data: /SEGEMENT=SHORT=WRITE
The other option is to check how much short data sections the compiler generated and, if it is much, to try to reduce that.
That may require a simple re-compile with a different external data model or may require code changes to move some of the short data into bigger ones. Unfortunately there is no compiler switch to tell what or how much the compiler should put into short data sections.
And, there is no easy way to estimate how much short data will be used based on what you have on Alpha. (The size of the image and that it is twice the size of Alpha doesn't mean anything for short data.)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-29-2009 01:11 AM
тАО07-29-2009 01:11 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-29-2009 10:33 AM
тАО07-29-2009 10:33 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
Switching to
link:==link/segment=short=write
changed error description. Now it has another 'relocation section', 'relocation type', 'relocation entry' and 'module' eventually. But in fact the issue still persists.
Talked to the code-author, he said he had the same issue with Itanium platform long time ago and it was 'cured' by splitting images into several parts. Will put the details here once he gives me some more info but it seems you are write and I have to change either linking procedure or the code structure itself.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО07-30-2009 09:49 AM
тАО07-30-2009 09:49 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-28-2009 03:27 AM
тАО08-28-2009 03:27 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
- perl script parses source code and moves all GLOBAL variables to one file to avoid duplicating it in every module
- once modules are compiled into *.olb files - another script (regular openvms batch script) extracts all RDB modules from these *.olb into one separate olb library and then compiles shareable EXE modules.
- final step is compiling necessary servers with these shareable EXE modules. As a result instead of 10 * 150Mb servers we have ~10 * 50 Mb servers + ~20 shareable EXE modules which must be installed using "$instal replace/share" expression...
Somewhat non-trivial after all... but it seems to be the only way to avoid huge code changes in a big project and make compilation process only slightly different from what is used on Alpha platform.
Hopefully it will give some hints to those who will face the same issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-28-2009 03:47 AM
тАО08-28-2009 03:47 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
And Hartmut and John, thanks for the detailed background as as always.
This has become one of the better topics ever.
Gem's like this make it worthwhile to spend some time here.
Regards,
Hein.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО09-01-2009 01:22 AM
тАО09-01-2009 01:22 AM
Re: %ILINK-E-NOT22BITS error (not resolved with /NATIVE)
OpenVMS Developer & System Manager