Craig A. Berry wrote:
The new mro.c file in blead currently causes the following compilation grief on VMS:

XS(XS_mro_get_global_sub_generation);
^
%CC-W-LONGEXTERN, The external identifier name exceeds 31 characters; truncated to "XS_MRO_GET_GLOBAL_SUB_GENERATIO".
at line number 694 in file D0:[CRAIG.perl]mro.c;1

XS(XS_mro_invalidate_all_method_caches);
^
%CC-W-LONGEXTERN, The external identifier name exceeds 31 characters; truncated to "XS_MRO_INVALIDATE_ALL_METHOD_CA".
at line number 695 in file D0:[CRAIG.perl]mro.c;1

Normally XS symbols are shortened by a VMS-only name mangler when
processed by xsubpp, but here we are bypassing that process.  By far
the easiest thing to do would be to simply shorten them manually as
in the attached patch, but will that break anything that's already
out there?  I don't see anything in the core that calls these from C.

It may be time to teach the dynamic loader routine to understand the name mangler that has long been built into DEC/HP C compilers. That would make another VMSism invisible to most of Perl when the C complier is set to automatically CRC shorten names.

After this is done, I do no know if backwards binary compatibility is needed.

The DEC/HP C name mangling algorithm has been published on comp.os.vms by someone in the compiler group.

I have found that for building most open source projects on VMS, I need to use /NAMES=(AS-IS,SHORTENED) which preserves case, and uses a CRC algorithm to generate unique shortened names.

The generic algorithm would require that the routine that calls LIB$FIND_IMAGE_SYMBOL to first try to find the symbol as-is, and then in uppercase if less than 31 characters. If over 31 characters, try first exact case CRC shortened, and then uppercase CRC shortened.

The CRC shortening works on VAX/ALPHA/I64.

If someone resurrects GCC on VMS, something probably needs to be done there.

I requested an that the dlsym() routine in the CRTL be updated to handle names mangled by the C compiler, and for a LIB$ routine to assist programmers. I do not know if or when those enhancements will show up.

-John
[EMAIL PROTECTED]
Personal Opinion Only


Reply via email to