Page 1 of 1
x86_64 C++ regression (UDFSYM) between Build dates 07-31-2023 and 11-28-2023?
Posted: Thu Apr 04, 2024 2:49 pm
by sms
Code: Select all
Source kit:
http://antinode.info/ftp/unrar/unrar-5_9_4a_vms/unrar-5_9_4a_src.zip
My notes say that this all worked on VMS V9.2-1 with an older
compiler: clang version 10.0.1 (Build date: 07-31-2023). It still works
on IA64 VMS V8.4-2L3 with VSI C++ V7.4-006.
Now, on VMS V9.2-2, with CXX Build date: 11-28-2023 or VSI C++
V10.1-1 (Build date: 01-10-2024), the LINK fails:
%ILINK-W-NUDFSYMS, 1 undefined symbol:
%ILINK-I-UDFSYM, ERRHANDLER
%ILINK-W-USEUNDEF, undefined symbol ERRHANDLER referenced
[...]
Possibly relevant:
The compiles are done with "/names = uppercase".
The consumers all refer to "ErrHandler".
global.hpp should say: extern ErrorHandler ErrHandler;
/LIST does less than I'd've hoped. I haven't tried "-E".
My C++ expertise is (still) nil, so I don't follow it closely, and I
don't know if anything similar has been reported already.
I was looking at a newer UnRAR version (6.1.7) when I hit this. Not
the newest version (7.0.7), as newer ones seem to employ C++ 11
features.
Re: x86_64 C++ regression (UDFSYM) between Build dates 07-31-2023 and 11-28-2023?
Posted: Fri Apr 05, 2024 3:03 am
by joukj
The version I have I extracted from github in 2019.
>global.hpp should say: extern ErrorHandler ErrHandler;
on my machine global.hpp says : EXTVAR ErrorHandler ErrHandler;
If You look into the code EXTVAR is almost always defined as extern except when compiling global.cpp, where it is "blank". So global.obj should contain the definition.
Re: x86_64 C++ regression (UDFSYM) between Build dates 07-31-2023 and 11-28-2023?
Posted: Fri Apr 05, 2024 3:34 am
by sms
Code: Select all
> The version I have I extracted from github in 2019.
For an actual version, look at version.hpp, or:
pipe [run] unrar | search sys$pipe Copyright
> on my machine global.hpp says : EXTVAR ErrorHandler ErrHandler; [...]
Right. Lazy brain here.
The useful (and, I believe, accurate) info was that this stuff works
on IA64 (and Alpha), and _did_ work on x86_64 with the early compiler.
Re: x86_64 C++ regression (UDFSYM) between Build dates 07-31-2023 and 11-28-2023?
Posted: Fri Apr 05, 2024 5:59 am
by joukj
> I was looking at a newer UnRAR version (6.1.7) when I hit this. Not
>the newest version (7.0.7), as newer ones seem to employ C++ 11
>features.
You also could try this new version on x86_64, since there you can use cxx/stan=cxx11 or cxx/stan=gnu11.
My port of a recent version of poppler dor x86_64 even depends on a more recent c++ standard and works.
Re: x86_64 C++ regression (UDFSYM) between Build dates 07-31-2023 and 11-28-2023?
Posted: Fri Apr 05, 2024 2:52 pm
by sms
Code: Select all
Ah. Thanks. I normally think of /STANDARD as a dumb-down option for
the C compiler (VAXC), not a smarten-up option for anything.
Yes, with a command like:
mms /des=[.vms] /macro = "CXXOPTS=/STANDARD=CXX11"
the latest-version (7.0.7) build (on x86_64) works as expected. Right
up until the (same) LINK failure, that is.
Naturally, the new Community VMDK has the same, stale compiler:
$ show syst /noproc
OpenVMS V9.2-2 on node V922 5-APR-2024 12:39:16.13 Uptime 0 00:11:15
$ cxx /vers
VSI C++ V10.1-1
clang version 10.0.1 (git@bitbucket.org:vms_software/llvm-10.0.1.git f8c06aa3b94
6de6956aade907a641da216dbe1fd)
Build date: 01-10-2024
Target: x86_64-OpenVMS
Thread model: posix
InstalledDir: V922$DKA300:[SYS0.SYSCOMMON.][SYSEXE]
Perhaps next year (in Jerusalem?)...
[...] The level of participation in activities such as
contributing open-source software, creating wiki articles, and
providing assistance on forums has not matched the scale of the
program. [...]
It's a mystery.