[Info-vax] IA64 assembler file in shared image - ILINK-W-NOTPMTIDX

John E. Malmberg wb8tyw at qsl.network
Sat Mar 21 22:14:20 EDT 2015


On 3/21/2015 8:03 PM, hb wrote:
> On 03/21/2015 06:20 PM, John E. Malmberg wrote:
>> On 3/21/2015 3:17 AM, hb wrote:
>>> On 03/21/2015 05:54 AM, Michael Moroney wrote:
>>>> "John E. Malmberg" <wb8tyw at qsl.network> writes:
>>> ...
>>>>> %ILINK-W-NOTPMTIDX,  section (index 0x00000000) encountered when
>>>>> trying
>>>>> to index PMT
>>>>>          module: UNIX
>>>>>          file: LCL_ROOT:[libffi.ia64-dec-vms.libs]libffi.a;1
>>>>> %ILINK-W-NOTPMTIDX,  section (index 0x00000000) encountered when
>>>>> trying
>>>>> to index PMT
>>>>>          module: UNIX
>>>>>          file: LCL_ROOT:[libffi.ia64-dec-vms.libs]libffi.a;1
>>> ...
>>>> $ help/message NOTPMTIDX
>>>>
>>>>   NOTPMTIDX,  'symbol-type' symbol (index 0x'hexadecimal-number')
>>>>               encountered when trying to index PMT
>>>>          module: 'module-name'
>>>>          file: 'file-name'
>>>>
>>>>    Facility:     ILINK, OpenVMS I64 Linker Utility
>>>>
>>>>    Explanation:  The section index is not identifiable as a valid
>>>> section index
>>>>                  by the linker.
>>>
>>> Symbol-type is not shown, here. So it is likely a local symbol causing
>>> this. Check with analyze/object/section=symtab for (local) symbols which
>>> have a shndx of 0 (analyze labels this field with "Bound to section:").
>>> For a local symbol this would mean an undefined one, which the linker
>>> has no chance to resolve (from where???). So itis a problem in the
>>> object which the linker reports.
>>
>> SYMBOL 23.
>> "OTS$MOVE" bound to section 0. (SHDR$K_SHN_UNDEF) symtab$w_st_shndx
>>
>> SYMBOL 24.
>> "ffi_closure_unix_inner"  Bound to section  0.
>>        (SHDR$K_SHN_UNDEF)           symtab$w_st_shndx
>
> ffi_closure_unix_inner and OTS$MOVE are undefined global symbols, which
> are OK. I expected an undefined local symbol in the symbol table. There
> is no such thing.
>
> But there are ltoff22x relocations, hand coded in the source, for which
> the assembler generates ldxmov relocations, for optimization. The ldxmov
> specifies a non-existing (local) symbol index. So the linker complains.
>
> If I patch the object with the correct local symbol index, the linker
> doesn't print any warning.
>
> Patching is probably not what you want to do, here. But you can make the
> two symbols used in the "ltoff22x"s global. Then the correct symbols are
> used and the linker warning is gone.

What is an ltoff22x relocation and how do I recognize it in the source?

Regards,

-John




More information about the Info-vax mailing list