[Info-vax] VSI C/C++ compiler for OpenVMS expired yesterday!

Single Stage to Orbit alex.buell at munted.eu
Mon Sep 4 19:10:30 EDT 2023


On Mon, 2023-09-04 at 14:23 -0700, John Reagan wrote:
> > That makes complete sense, can't bootstrap without a working
> > toolchain. What did you use as the host to build the toolchains and
> > all the x86_64 bits for VMS jut out of interest? Is OpenVMS for x86
> > now self hosting and can it build itself? 
> 
> For the Itanium-hosted cross-compilers, I grabbed LLVM 3.4.2 (the
> last LLVM release that claims to be buildable with a C++03 compiler)
> and compiled it on OpenVMS Itanium.  Our GEM-to-LLVM converter is
> also written in C++03.
> 
> We hooked these pieces to the Itanium frontends for C and BLISS and
> they just think they are talking to GEM.  The G2L/LLVM 3.4.2, we then
> had working cross-compilers to build the OS and for bootstrap some of
> the compiler pieces (our frontends are written either in C and/or
> BLISS)   The Macro compilers is similar but used a smaller portion of
> LLVM and needed other work (think of it as the equivalent of G2L). 
> And the Macro-32 parser is written in Macro-32.
> 
> For native compilers, we initially used those cross-compilers to 
> build x86 versions of the C and BLISS frontend.  For C++, we had no
> cross-compiler (clang 3.4.2 wouldn't go thru the Itanium C++ compiler
> no matter how hard I pounded on it it).
> 
> For the building LLVM (and G2L) that were OpenVMS aware, we first
> took LLVM/clang 10.0.1 (the current version at the time) and built
> them on Linux.  We then added some OpenVMS features and again built
> those compilers on Linux (call them clang 10.0.1v).  Now use THAT
> compiler (Linux-hosted, OpenVMS-target) to build clang 10.0.1v again
> with more features. Move those objects over to an OpenVMS box.  Do
> the same thing with libcxx.  Link them all together.  libcxxabi needs
> work to layer the code which wants libunwind onto a system with 
> the LIB$CALLING standard routines.  Same concepts, different names
> (and we have some of a GPL-free libunwind inside of the LIB$
> routines).
> 
> We are now using those 1st generation native compilers to build the
> 2nd generation native compilers except for C++.  We're still doing
> the Linux thing for now as the LLVM/clang build needs things like
> CMake (which of course is written in C++ and needs to be bootstrapped
> with a C++ compiler).  Those 2nd generation compiler builds are done
> on OpenVMS x86 V9.2-1 systems on a hypervisor.  Testing is also done
> on virtual machines.
> 
> The native compilers have most of the optimization but those 1st
> generation compilers themselves are unoptimized (they are built with
> cross-compilers).  The 2nd generation native compilers are themselves
> built with optimization and generate optimized code.
> 
> As for the OS itself, the build system is a little more complex (and
> baroque) and is still being worked on.

Thank you, that was most illuminating and interesting. I'm sure it
won't be long before OpenVMS x86 becomes self-hosting and capable of
building itself. 

AMD Threadrippers (the newest ones) would be a perfect match. 

Thanks, once again. 
-- 
Tactical Nuclear Kittens




More information about the Info-vax mailing list