[Info-vax] Rendez-vous autour de VMS" of January 31 2023 report

Arne Vajhøj arne at vajhoej.dk
Mon Feb 20 19:03:45 EST 2023


On 2/20/2023 5:31 PM, hb at end.of.inter.net wrote:
> On Monday, February 20, 2023 at 11:02:18 PM UTC+1, Single Stage to
> Orbit wrote:
>> On Mon, 2023-02-20 at 11:35 -0800, h... at end.of.inter.net wrote:
>>> On Monday, February 20, 2023 at 7:02:17 PM UTC+1, Single Stage
>>> to Orbit wrote:
>>>> On Mon, 2023-02-20 at 11:36 -0500, Arne Vajhøj wrote:
>>>>> %LINK-W-NUDFSYMS, 4 undefined symbols: %LINK-I-UDFSYM,
>>>>> _vt$7istream$3ios %LINK-I-UDFSYM,         _vt$7ostream$3ios 
>>>>> %LINK-I-UDFSYM,         _vt$8iostream$3ios %LINK-I-UDFSYM,
>>>>> _vt$8stdiobuf
>>>> Smells like ABI issues. It depends on what linker is being
>>>> used, I guess. Mayvbe GCC should use its linker instead of the
>>>> VMS linker.
>>> 
>>> It only shows that objects, object libraries or shareable
>>> images, which define theses symbols, are not included in the link
>>> operation.
>> 
>> Which kinda begs the question; what has it forgotten to link? These
>> are iostream routines.
> 
> Only the user/developer knows. There is no link command or map file
> posted. For linking the C example the command/symbol gcclink is used,
> whatever that is/was. But for C++, nothing is said.

More info.

$ gxx test.cpp
$ gxxlink test
%LINK-W-NUDFSYMS, 4 undefined symbols:
%LINK-I-UDFSYM,         _vt$7istream$3ios
%LINK-I-UDFSYM,         _vt$7ostream$3ios
%LINK-I-UDFSYM,         _vt$8iostream$3ios
%LINK-I-UDFSYM,         _vt$8stdiobuf
%LINK-W-USEUNDEF, undefined symbol _vt$7istream$3ios referenced
         in psect $LINK$ offset %X00000028
         in module IOSTREAM file 
DISK2:[ARNE.gcc.gcc.ALPHA-PROGIS-VMS_8_4.2_8_0]LIBSTDCXX.OLB;1
%LINK-W-USEUNDEF, undefined symbol _vt$7ostream$3ios referenced
         in psect $LINK$ offset %X000005A0
         in module IOSTREAM file 
DISK2:[ARNE.gcc.gcc.ALPHA-PROGIS-VMS_8_4.2_8_0]LIBSTDCXX.OLB;1
%LINK-W-USEUNDEF, undefined symbol _vt$8iostream$3ios referenced
         in psect $LINK$ offset %X00000748
         in module IOSTREAM file 
DISK2:[ARNE.gcc.gcc.ALPHA-PROGIS-VMS_8_4.2_8_0]LIBSTDCXX.OLB;1
%LINK-W-USEUNDEF, undefined symbol _vt$8stdiobuf referenced
         in psect $LINK$ offset %X00000030
         in module STDSTRBUFS file 
DISK2:[ARNE.gcc.gcc.ALPHA-PROGIS-VMS_8_4.2_8_0]LIBSTDCXX.OLB;1

gxx is:
   $GNU_ROOT:[BIN]GCC.EXE/PLUS

gxxlink is:

$    link/exe=TEST gnu_cc_library:crtbegin.obj, -
                                      DISK2:[ARNE]TEST.obj;, -
                                      gnu_cc_library:libstdcxx.olb/lib, -
                                      gnu_cc_library:libiostream.olb/lib, -
                                      gnu_cc_library:libio.olb/lib, -
                                      gnu_cc_library:libgccplus.olb/lib, -
                                      gnu_cc_library:libgcc.olb/lib, -
                                      gnu_cc_library:crtend.obj, -
                                      sys$library:vaxcrtl.olb/lib, -
                                      gnu_cc_library:gxx_main.obj

That COM file is from 1998.

I have added libiostream and libio as part of troubleshooting now.

These missing symbols are nowhere to be found:

$ pipe libr/obj/list/name gnu_cc_library:libstdcxx.olb | search 
sys$input vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched
$ pipe libr/obj/list/name gnu_cc_library:libiostream.olb | search 
sys$input vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched
$ pipe libr/obj/list/name gnu_cc_library:libio.olb | search sys$input 
vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched
$ pipe libr/obj/list/name gnu_cc_library:libgccplus.olb | search 
sys$input vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched
$ pipe libr/obj/list/name gnu_cc_library:libgcc.olb | search sys$input 
vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched
$ sear sys$library:*.olb vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched
$ sear sys$library:*.exe vt$8stdiobuf
%SEARCH-I-NOMATCHES, no strings matched

But as I said then:
* maybe it has never worked - I do not remember what worked 25 years ago
* maybe it broke due to newer VMS version
* maybe it broke due to something else

The reference to sys$library:vaxcrtl.olb look highly suspicious.
But 1998 is a long time ago.

Arne







More information about the Info-vax mailing list