Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 27 |
Nodes: | 6 (0 / 6) |
Uptime: | 41:20:38 |
Calls: | 631 |
Calls today: | 2 |
Files: | 1,187 |
D/L today: |
24 files (29,813K bytes) |
Messages: | 174,725 |
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
GNV got both ar and ld, but that does not help you.
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
Or if possible even better:
source-(compiler on Linux)->.s-(GCC AS on VMS)->.obj-(LINK on VMS)->VMS .exe
GCC AS (version 2.8) is working on VMS Alpha.
In article <108sckg$19hcn$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
There is a BFD backend for VMS on Alpha in the main binutils
branch in git, but it is not clear to me how well-tested or
generally maintained it is, nor how compatibile with the
standard VMS utilities it ever was; I suspect it existed
primarily to port GNU software to VMS.
What, exactly, are you trying to do?
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
GNV got both ar and ld, but that does not help you.
Where are the sources? Working sources certainly would help.
In article <108sckg$19hcn$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
There is a BFD backend for VMS on Alpha in the main binutils
branch in git, but it is not clear to me how well-tested or
generally maintained it is, nor how compatibile with the
standard VMS utilities it ever was; I suspect it existed
primarily to port GNU software to VMS.
What, exactly, are you trying to do?
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
That is plan B. Working binutils would be simpler because
I could use existing automated process.
Actually, ATM I getting errors during gcc build. I can use
crude workaround to go further, but I am affraid that to get
working compiler I need either working binutils or to examine
all build steps involving binutils and do equvalent work in
different way.
Or if possible even better:
source-(compiler on Linux)->.s-(GCC AS on VMS)->.obj-(LINK on VMS)->VMS .exe >>
GCC AS (version 2.8) is working on VMS Alpha.
Actually, it is possible that I will have to use
source-(compiler on Linux)->.s-(VMS assembler)>.obj...
because one of next goals is to get running compiler wich generate(d) assembly for VMS assembler and may be incompatible with GNU as. But
this means more changes to build process (= work work => not better).
On 2025-08-29, Dan Cross <cross@spitfire.i.gajendra.net> wrote:Not just AdaCore GNAT (Ada).
In article <108sckg$19hcn$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
There is a BFD backend for VMS on Alpha in the main binutils
branch in git, but it is not clear to me how well-tested or
generally maintained it is, nor how compatibile with the
standard VMS utilities it ever was; I suspect it existed
primarily to port GNU software to VMS.
AdaCore was primarily responsible for working on this as part of
GNAT. After they dropped VMS as a supported target, this code may
have gone stale.
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
GNV got both ar and ld, but that does not help you.
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
Or if possible even better:
source-(compiler on Linux)->.s-(GCC AS on VMS)->.obj-(LINK on VMS)->VMS .exe
GCC AS (version 2.8) is working on VMS Alpha.
Arne Vajhoj <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
GNV got both ar and ld, but that does not help you.
Where are the sources? Working sources certainly would help.
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
That is plan B. Working binutils would be simpler because
I could use existing automated process.
Actually, ATM I getting errors during gcc build. I can use
crude workaround to go further, but I am affraid that to get
working compiler I need either working binutils or to examine
all build steps involving binutils and do equvalent work in
different way.
I have little faith in ld producing good VMS .exe.
All the GCC ports to VMS I have seen (GCC 1.4x on VAX,
GCC 2.8.x on Alpha and GNAT 2.8.x on Alpha) have used
VMS linker. I suspect they have their reasons.
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
I strongly suspect that will not work as the VMS linker may not
have the features needed to link those .o files.
Or if possible even better:
source-(compiler on Linux)->.s-(GCC AS on VMS)->.obj-(LINK on VMS)->VMS .exe
Er, why ? If you can get the BFD library working for VMS Alpha
once again, that's the major problem sorted.
GCC AS (version 2.8) is working on VMS Alpha.
Also, what makes you think that the GNU gas of that era will still
be suitable for today's compilers ?
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
All the GCC ports to VMS I have seen (GCC 1.4x on VAX,
GCC 2.8.x on Alpha and GNAT 2.8.x on Alpha) have used
VMS linker. I suspect they have their reasons.
AdaCore started with a cross compiler on Linux.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
Also, what makes you think that the GNU gas of that era will still
be suitable for today's compilers ?
I would expect Alpha assembler to still be Alpha assembler.
The instructions are obviously the same.
And I find it unlikely that anyone has spend time the last 25
years adding advanced macros and pseudo instructions to the
Alpha assembler and the compiler.
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 1:57 PM, Simon Clubley wrote:
Also, what makes you think that the GNU gas of that era will still
be suitable for today's compilers ?
I would expect Alpha assembler to still be Alpha assembler.
And are you sure that VMS gas 2.8 will support all of the following:
https://sourceware.org/binutils/docs/as/Pseudo-Ops.html
(Those are just the current target-neutral directives).
The instructions are obviously the same.
And I find it unlikely that anyone has spend time the last 25
years adding advanced macros and pseudo instructions to the
Alpha assembler and the compiler.
That's not where the problem is. You need to think at a higher level
than that. Notice that I said today's compilers which may rely on
underlying features not present in that old VMS Alpha version of gas.
On 8/29/2025 2:11 PM, Simon Clubley wrote:
On 2025-08-29, Arne Vajhoj <arne@vajhoej.dk> wrote:
All the GCC ports to VMS I have seen (GCC 1.4x on VAX,
GCC 2.8.x on Alpha and GNAT 2.8.x on Alpha) have used
VMS linker. I suspect they have their reasons.
AdaCore started with a cross compiler on Linux.
But did they use ld on Linux or LINK on VMS?
On 2025-08-29, Arne Vajhoj <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing
from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested
will have to rely on the notes I posted at the time as I have completely >forgotten the details of any of this (and have no motivation to get back
up to speed on them because my hobbies these days are very different and >because there's no longer a proper hobbyist licence for VMS Alpha).
GNV got both ar and ld, but that does not help you.
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
I strongly suspect that will not work as the VMS linker may not
have the features needed to link those .o files.
Or if possible even better:
source-(compiler on Linux)->.s-(GCC AS on VMS)->.obj-(LINK on VMS)->VMS .exe
Er, why ? If you can get the BFD library working for VMS Alpha
once again, that's the major problem sorted.
GCC AS (version 2.8) is working on VMS Alpha.
Also, what makes you think that the GNU gas of that era will still
be suitable for today's compilers ?
If anyone still has it installed, does the really old GNAT 3.11/3.12p
use ld or the VMS linker ? I know they used gas, but what about the
final link ?
On 8/29/2025 2:44 PM, Simon Clubley wrote:
If anyone still has it installed, does the really old GNAT 3.11/3.12p
use ld or the VMS linker ? I know they used gas, but what about the
final link ?
I have Gnat 3.12p / GCC 2.8.1 installed.
I think it uses LINK.
<quote>
$ gnat make
List of available qualifiers and options
GNAT MAKE file /qualifiers (includes COMPILE /qualifiers)
gnatmake
...
/LINKER_QUALIFIERS (switches for LINK) -largs switches
...
</quote>
It mentions LINK.
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 2:44 PM, Simon Clubley wrote:
If anyone still has it installed, does the really old GNAT 3.11/3.12p
use ld or the VMS linker ? I know they used gas, but what about the
final link ?
I have Gnat 3.12p / GCC 2.8.1 installed.
I think it uses LINK.
<quote>
$ gnat make
List of available qualifiers and options
GNAT MAKE file /qualifiers (includes COMPILE /qualifiers)
gnatmake
...
/LINKER_QUALIFIERS (switches for LINK) -largs switches
...
</quote>
It mentions LINK.
Interesting thanks. Does the "ld" binary exist in whatever the binutils executables directory is ?
If it does, and you run it as a foreign command with "--help", what
output do you get ?
On 8/29/2025 3:10 PM, Simon Clubley wrote:
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 2:44 PM, Simon Clubley wrote:
If anyone still has it installed, does the really old GNAT 3.11/3.12p
use ld or the VMS linker ? I know they used gas, but what about the
final link ?
I have Gnat 3.12p / GCC 2.8.1 installed.
I think it uses LINK.
<quote>
$ gnat make
List of available qualifiers and options
GNAT MAKE file /qualifiers (includes COMPILE /qualifiers)
-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a gnatmake
-a-a-a-a ...
-a-a-a-a /LINKER_QUALIFIERS (switches for LINK)-a-a-a-a-a-a-a-a-a-a -largs switches
-a-a-a-a ...
</quote>
It mentions LINK.
Interesting thanks. Does the "ld" binary exist in whatever the binutils
executables directory is ?
If it does, and you run it as a foreign command with "--help", what
output do you get ?
Nothing with ld.
$ dir gnu:[bin]
Directory GNU:[BIN]
AS.EXE;10-a-a-a-a-a-a-a-a-a-a ASISTANT.EXE;1-a-a-a-a-a GCC.EXE;1-a-a-a-a-a-a-a-a-a-a GNAT.EXE;1
GNATBIND.EXE;1-a-a-a-a-a GNATBL.EXE;1-a-a-a-a-a-a-a GNATCHOP.EXE;2-a-a-a-a-a GNATELIM.EXE;1
GNATFIND.EXE;1-a-a-a-a-a GNATKR.EXE;1-a-a-a-a-a-a-a GNATLBR.EXE;1-a-a-a-a-a-a GNATLINK.EXE;1
GNATLS.EXE;1-a-a-a-a-a-a-a GNATMAKE.EXE;1-a-a-a-a-a GNATMEM.EXE;1-a-a-a-a-a-a GNATPREP.EXE;1
GNATPSTA.EXE;1-a-a-a-a-a GNATPSYS.EXE;1-a-a-a-a-a GNATSTUB.EXE;1-a-a-a-a-a GNATXREF.EXE;1
MAKE.EXE;260-a-a-a-a-a-a-a OPENVMS7_1-GCC.EXE;1-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a SET_EXE.COM;11
$ dir gnu:[bin]*ld*.*
%DIRECT-W-NOFILES, no files found
Dan Cross <cross@spitfire.i.gajendra.net> wrote:
In article <108sckg$19hcn$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
There is a BFD backend for VMS on Alpha in the main binutils
branch in git, but it is not clear to me how well-tested or
generally maintained it is, nor how compatibile with the
standard VMS utilities it ever was; I suspect it existed
primarily to port GNU software to VMS.
What, exactly, are you trying to do?
Well, this is part of bigger rather poorly defined project. ATM
I trying to compile gcc-15.1.
I first build binutils, then I do
../gcc-15.1.0/configure --enable-languages=c,c++ --target=alpha-dec-vms --prefix=/sklad/usr
make -j 7 > mlogg 2>&1
There were earlier problems that I resolved. I have now trouble
during linking of libgcc. Some problems went away after switch
from binutils 2.43 to binutils 2.21. But now I get the following
error:
/sklad/usr/alpha-dec-vms/bin/ld: -shared not supported
That is 'ld' from binutils 2.21 says that it does not support
'-shared'. Note that Makefile wants to create 'libgcc_s.exe',
so it knows about VMS file extentions. In other words somebody
at least tried to make it work.
If you want more details I can provide them, but the message
about '-shared' appears also when I attempt to build a
different shared image:
/sklad/usr/alpha-dec-vms/bin/ld -shared -o pop_poll.exe pop_poll.obj
so the problem can be reproduced outside of gcc build.
There were earlier problems that I resolved. I have now trouble
during linking of libgcc. Some problems went away after switch
from binutils 2.43 to binutils 2.21. But now I get the following
error:
/sklad/usr/alpha-dec-vms/bin/ld: -shared not supported
That is 'ld' from binutils 2.21 says that it does not support
'-shared'. Note that Makefile wants to create 'libgcc_s.exe',
so it knows about VMS file extentions. In other words somebody
at least tried to make it work.
If you want more details I can provide them, but the message
about '-shared' appears also when I attempt to build a
different shared image:
/sklad/usr/alpha-dec-vms/bin/ld -shared -o pop_poll.exe pop_poll.obj
so the problem can be reproduced outside of gcc build.
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing
from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested
will have to rely on the notes I posted at the time as I have completely forgotten the details of any of this (and have no motivation to get back
up to speed on them because my hobbies these days are very different and because there's no longer a proper hobbyist licence for VMS Alpha).
On 8/29/2025 1:32 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
GNV got both ar and ld, but that does not help you.
Where are the sources? Working sources certainly would help.
There are the SourceForge version of GNV and there is the
VSI version of GNV.
The SF version is here:
https://sourceforge.net/p/gnv/ld_tools/ci/default/tree/reference/ld_tools/
On 2025-08-29, Waldek Hebisch <antispam@fricas.org> wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
GNV got both ar and ld, but that does not help you.
Where are the sources? Working sources certainly would help.
Aren't they simply wrappers around the native VMS utilities ?
But are you sure you want to do it this way?
My understanding is that you want to do:
source-(compiler on Linux)->.obj->(ld on Linux)->VMS .exe
I would go for:
source-(compiler on Linux)->.obj->(LINK on VMS)->VMS .exe
That is plan B. Working binutils would be simpler because
I could use existing automated process.
Binutils worked at one time because I was able to do the whole
sequence, including generating the final C VMS executable, on Linux.
Actually, ATM I getting errors during gcc build. I can use
crude workaround to go further, but I am affraid that to get
working compiler I need either working binutils or to examine
all build steps involving binutils and do equvalent work in
different way.
That's where I gave up. I either didn't understand the required
VMS-specific build steps or there were bits missing from the public
source kits.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing
from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested
will have to rely on the notes I posted at the time as I have completely
forgotten the details of any of this (and have no motivation to get back
up to speed on them because my hobbies these days are very different and
because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
Simon Clubley <clubley@remove_me.eisner.decus.org-earth.ufp> wrote:
That's where I gave up. I either didn't understand the required
VMS-specific build steps or there were bits missing from the public
source kits.
There are missing pieces, build needs VMS header files and libraries.
If those pieces are incomplete, then configuration may go wrong
and lead to trobles later.
Currently I have fairly incomplete set of header files, so I expect
trouble due to this. OTOH libgcc seem to compile fine, so C
compiler probably will work. I worked around trouble with
shared images by configuring gcc with '--disable-shared',
suboptimal but must do for now.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing
from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested
will have to rely on the notes I posted at the time as I have completely
forgotten the details of any of this (and have no motivation to get back
up to speed on them because my hobbies these days are very different and
because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
On 2025-08-30, Waldek Hebisch <antispam@fricas.org> wrote:
Simon Clubley <clubley@remove_me.eisner.decus.org-earth.ufp> wrote:
That's where I gave up. I either didn't understand the required
VMS-specific build steps or there were bits missing from the public
source kits.
There are missing pieces, build needs VMS header files and libraries.
If those pieces are incomplete, then configuration may go wrong
and lead to trobles later.
Currently I have fairly incomplete set of header files, so I expect
trouble due to this. OTOH libgcc seem to compile fine, so C
compiler probably will work. I worked around trouble with
shared images by configuring gcc with '--disable-shared',
suboptimal but must do for now.
If you look at the links Arne posted, you will see I took across to
Linux the VMS-supplied header files inc addition to the libraries.
According to those notes, it appears I also had to write patches
for those headers.
When I talked about bits missing, I wasn't thinking about the headers
and libraries. Given that Adacore didn't start using Newlib or something similar to support VMS, that was pretty much expected.
I was thinking more about bits missing within the compiler or binutils itself, especially given the crashes I had with Fortran. I was wondering
if, for example, there are bits missing in the image initialisation
sequence, along with other similar types of missing bits.
Simon Clubley <clubley@remove_me.eisner.decus.org-earth.ufp> wrote:
When I talked about bits missing, I wasn't thinking about the headers
and libraries. Given that Adacore didn't start using Newlib or something
similar to support VMS, that was pretty much expected.
I was thinking more about bits missing within the compiler or binutils
itself, especially given the crashes I had with Fortran. I was wondering
if, for example, there are bits missing in the image initialisation
sequence, along with other similar types of missing bits.
Do you have any indications that gcc Fortran or C++ worked on VMS say 25 years ago? Presumably Ada Core cared mostly about Ada. To build Ada compiler they needed to build C compiler first. I do not know if they
ever supported on VMS gcc version recent enough to require C++ to build.
If C++ and/or Fortran was never supported, then missing pieces in runtime support are expected. Also, there may be new pieces of platform support needed by newer compiler versions, that nobody bothered to add for VMS.
C and C++ worked in 1.4x on VAX and 2.8.x on Alpha.
The first I remember. I used it pretty extensively.
The second I can demo:
Simon Clubley <clubley@remove_me.eisner.decus.org-earth.ufp> wrote:
When I talked about bits missing, I wasn't thinking about the headers
and libraries. Given that Adacore didn't start using Newlib or something
similar to support VMS, that was pretty much expected.
I was thinking more about bits missing within the compiler or binutils
itself, especially given the crashes I had with Fortran. I was wondering
if, for example, there are bits missing in the image initialisation
sequence, along with other similar types of missing bits.
Do you have any indications that gcc Fortran or C++ worked on VMS say 25 years ago? Presumably Ada Core cared mostly about Ada. To build Ada compiler they needed to build C compiler first. I do not know if they
ever supported on VMS gcc version recent enough to require C++ to build.
If C++ and/or Fortran was never supported, then missing pieces in runtime support are expected. Also, there may be new pieces of platform support needed by newer compiler versions, that nobody bothered to add for VMS.
On 2025-09-01, Waldek Hebisch <antispam@fricas.org> wrote:
Simon Clubley <clubley@remove_me.eisner.decus.org-earth.ufp> wrote:
When I talked about bits missing, I wasn't thinking about the headers
and libraries. Given that Adacore didn't start using Newlib or something >>> similar to support VMS, that was pretty much expected.
I was thinking more about bits missing within the compiler or binutils
itself, especially given the crashes I had with Fortran. I was wondering >>> if, for example, there are bits missing in the image initialisation
sequence, along with other similar types of missing bits.
Do you have any indications that gcc Fortran or C++ worked on VMS say 25
years ago? Presumably Ada Core cared mostly about Ada. To build Ada
compiler they needed to build C compiler first. I do not know if they
ever supported on VMS gcc version recent enough to require C++ to build.
If C++ and/or Fortran was never supported, then missing pieces in runtime
support are expected. Also, there may be new pieces of platform support
needed by newer compiler versions, that nobody bothered to add for VMS.
I do not know about Fortran, but C++ used to work IIRC, and Arne
appears to be confirming that as well. I cannot remember if I tried
C++ but I have a vague memory I did and had similar problems to Fortran,
but it's long enough ago that I may be wrong about that.
Arne Vajh|+j <arne@vajhoej.dk> wrote:VMS EXE is FIX 512, which is FTP binary friendly.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing >>> from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested >>> will have to rely on the notes I posted at the time as I have completely >>> forgotten the details of any of this (and have no motivation to get back >>> up to speed on them because my hobbies these days are very different and >>> because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end).
The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly bigger than typical headers. Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header. However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
On 9/2/2025 8:59 AM, Waldek Hebisch wrote:
...VMS EXE is FIX 512, which is FTP binary friendly.
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end).
The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly
bigger than typical headers.-a Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header.-a However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
VMS OBJ is VAR, which is not FTP binary friendly and FTP
text will likely fuck up the file.
I would:
* $ SET FILE/ATTR=(RFM:FIX,MRS:512) on the OBJ file on VMS
* FTP binary to Linux
* see if objdump on Linux can recognize it
VMS OBJ is VAR, which is not FTP binary friendly and FTP
text will likely fuck up the file.
Arne
On 9/2/2025 8:59 AM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:VMS EXE is FIX 512, which is FTP binary friendly.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
A decade ago, I got as far as getting a simple C program for VMS Alpha >>>> to compile and link on Linux. Anything else more complicated than that >>>> (ie: other languages) failed and I suspect that either bits were missing >>>> from the public kits or the additional steps required were not obvious. >>>>
I discussed this at length in comp.os.vms at the time. Anyone interested >>>> will have to rely on the notes I posted at the time as I have completely >>>> forgotten the details of any of this (and have no motivation to get back >>>> up to speed on them because my hobbies these days are very different and >>>> because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end).
The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly
bigger than typical headers. Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header. However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
VMS OBJ is VAR, which is not FTP binary friendly and FTP
text will likely fuck up the file.
I would:
* $ SET FILE/ATTR=(RFM:FIX,MRS:512) on the OBJ file on VMS
* FTP binary to Linux
* see if objdump on Linux can recognize it
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/2/2025 8:59 AM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:VMS EXE is FIX 512, which is FTP binary friendly.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
A decade ago, I got as far as getting a simple C program for VMS Alpha >>>>> to compile and link on Linux. Anything else more complicated than that >>>>> (ie: other languages) failed and I suspect that either bits were missing >>>>> from the public kits or the additional steps required were not obvious. >>>>>
I discussed this at length in comp.os.vms at the time. Anyone interested >>>>> will have to rely on the notes I posted at the time as I have completely >>>>> forgotten the details of any of this (and have no motivation to get back >>>>> up to speed on them because my hobbies these days are very different and >>>>> because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end).
The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly
bigger than typical headers. Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header. However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
VMS OBJ is VAR, which is not FTP binary friendly and FTP
text will likely fuck up the file.
I would:
* $ SET FILE/ATTR=(RFM:FIX,MRS:512) on the OBJ file on VMS
* FTP binary to Linux
* see if objdump on Linux can recognize it
I di this before writing my previous message. objdump from
binutils-2.21 recognizes both files produced by gas from binutils-2.21
and file transferred from VMS (after doing what you wrote). After transfering .obj file produced by binutils-2.21 from Linux to
VMS (which was tricky) ANALYZE said that it constins no
errors. Transferring was tricky, becuse transfer via scp gave
fixed 512 bytes blocks. Doing SET FILE/ATTR=RFM:VAR resulted in
null padding at the end and ANALYZE were complaining about
empty records (but no other errors). zipping .obj file, transfering
that to VMS gave streamlf file. Doing SET FILE/ATTR=RFM:VAR on
this file apparently worked. But zip treating it as text file
can potentially mangle it, so I am looking for better method.
Anyway, objdump from binutils-2.39 can not recognize .obj files
produced by gas from binutils-2.21 (which due to tests above I
believe have correct format). Also, using gas from binutils-2.39
or binutils-2.43 I get similar results. In other words,
objdump from binutils-2.21 recoginzes .obj files regardless of
source (tranferred from VMS or made by gas from any binutils).
objdump from later binutils does not recognize .obj files
from above mentioned sources.
On 9/2/25 22:37, Arne Vajh|+j wrote:
On 9/2/2025 8:59 AM, Waldek Hebisch wrote:
...VMS EXE is FIX 512, which is FTP binary friendly.
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end).
The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly
bigger than typical headers.-a Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header.-a However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
VMS OBJ is VAR, which is not FTP binary friendly and FTP
text will likely fuck up the file.
I would:
* $ SET FILE/ATTR=(RFM:FIX,MRS:512) on the OBJ file on VMS
* FTP binary to Linux
* see if objdump on Linux can recognize it
Check out with "objdump -i" if your objdump supports the VMS object
format for Alpha.
The one I installed from the distributions repository does not. You very likely have to rebuild objdump.
Changing the file attributes or zipping the object file with "-V" will preserve the internal record structure. Works for me:
VMS OBJ is VAR, which is not FTP binary friendly and FTP text will
likely fuck up the file.
On Tue, 2 Sep 2025 16:37:12 -0400, Arne Vajh|+j wrote:
VMS OBJ is VAR, which is not FTP binary friendly and FTP text will
likely fuck up the file.
No it wonrCOt. The content is still intact, if you do a binary transfer.
If you create a RFM VAR file on VMS with:
A
BB
CCC
then it is stored as:
01 00 41 00
02 00 42 42
03 00 43 43 43 00
When you do a binary FTP to Linux you end up with just 6 bytes:
41 42 42 43 43 43
With a binary FTP from VMS of a VAR file you get just the data bytes
with no structure defining bytes at all.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing
from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested
will have to rely on the notes I posted at the time as I have completely
forgotten the details of any of this (and have no motivation to get back
up to speed on them because my hobbies these days are very different and
because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
On Tue, 2 Sep 2025 20:35:54 -0400, Arne Vajh|+j wrote:
If you create a RFM VAR file on VMS with:
A
BB
CCC
then it is stored as:
01 00 41 00
02 00 42 42
03 00 43 43 43 00
When you do a binary FTP to Linux you end up with just 6 bytes:
41 42 42 43 43 43
ThatrCOs stupid.
I would describe that as a bug in the VMS FTP program.
With a binary FTP from VMS of a VAR file you get just the data bytes
with no structure defining bytes at all.
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the file as
isrCY ...
On Tue, 2 Sep 2025 20:35:54 -0400, Arne Vajh|+j wrote:
If you create a RFM VAR file on VMS with:
A
BB
CCC
then it is stored as:
01 00 41 00
02 00 42 42
03 00 43 43 43 00
When you do a binary FTP to Linux you end up with just 6 bytes:
41 42 42 43 43 43
ThatrCOs stupid. I would describe that as a bug in the VMS FTP program.
With a binary FTP from VMS of a VAR file you get just the data bytes
with no structure defining bytes at all.
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the file as
isrCY ...
On 9/2/2025 6:30 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/2/2025 8:59 AM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:VMS EXE is FIX 512, which is FTP binary friendly.
On 8/29/2025 1:57 PM, Simon Clubley wrote:
A decade ago, I got as far as getting a simple C program for VMS Alpha >>>>>> to compile and link on Linux. Anything else more complicated than that >>>>>> (ie: other languages) failed and I suspect that either bits were missing >>>>>> from the public kits or the additional steps required were not obvious. >>>>>>I did the search:
I discussed this at length in comp.os.vms at the time. Anyone interested >>>>>> will have to rely on the notes I posted at the time as I have completely >>>>>> forgotten the details of any of this (and have no motivation to get back >>>>>> up to speed on them because my hobbies these days are very different and >>>>>> because there's no longer a proper hobbyist licence for VMS Alpha). >>>>>
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ >>>>>
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ >>>>>
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end). >>>> The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly >>>> bigger than typical headers. Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header. However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
VMS OBJ is VAR, which is not FTP binary friendly and FTP
text will likely fuck up the file.
I would:
* $ SET FILE/ATTR=(RFM:FIX,MRS:512) on the OBJ file on VMS
* FTP binary to Linux
* see if objdump on Linux can recognize it
I di this before writing my previous message. objdump from
binutils-2.21 recognizes both files produced by gas from binutils-2.21
and file transferred from VMS (after doing what you wrote). After
transfering .obj file produced by binutils-2.21 from Linux to
VMS (which was tricky) ANALYZE said that it constins no
errors. Transferring was tricky, becuse transfer via scp gave
fixed 512 bytes blocks. Doing SET FILE/ATTR=RFM:VAR resulted in
null padding at the end and ANALYZE were complaining about
empty records (but no other errors). zipping .obj file, transfering
that to VMS gave streamlf file. Doing SET FILE/ATTR=RFM:VAR on
this file apparently worked. But zip treating it as text file
can potentially mangle it, so I am looking for better method.
I think I would go for:
* FTP binary from Linux to VMS
* SET FILE/ATTR=RFM:VAR on it
And if padding gives problems, then:
* SET FILE/ATTR=(EFBLK:n,FFB:m) on it
Anyway, objdump from binutils-2.39 can not recognize .obj files
produced by gas from binutils-2.21 (which due to tests above I
believe have correct format). Also, using gas from binutils-2.39
or binutils-2.43 I get similar results. In other words,
objdump from binutils-2.21 recoginzes .obj files regardless of
source (tranferred from VMS or made by gas from any binutils).
objdump from later binutils does not recognize .obj files
from above mentioned sources.
VMS Alpha support missing in newer versions??
On 9/3/2025 12:20 AM, Lawrence DrCOOliveiro wrote:
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the file >> as isrCY ...
That is the Win/*nix way of thinking.
ORG IDX and ORG REL would end up as a huge pile of useless bytes.
On 2025-09-03 06:20, Lawrence DrCOOliveiro wrote:
ThatrCOs stupid. I would describe that as a bug in the VMS FTP program.
Really? The length bytes are not actually any data in the file.
Really? The length bytes are not actually any data in the file. Same
with padding. I would say it would be a very bad bug to actually include them.
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the file as
isrCY ...
And it does. All the bytes of the file. Not all the metadata that exists outside of the data content.
On 2025-09-03 06:20, Lawrence DrCOOliveiro wrote:
On Tue, 2 Sep 2025 20:35:54 -0400, Arne Vajh|+j wrote:
If you create a RFM VAR file on VMS with:
A
BB
CCC
then it is stored as:
01 00 41 00
02 00 42 42
03 00 43 43 43 00
When you do a binary FTP to Linux you end up with just 6 bytes:
41 42 42 43 43 43
ThatrCOs stupid. I would describe that as a bug in the VMS FTP program.
Really? The length bytes are not actually any data in the file. Same
with padding. I would say it would be a very bad bug to actually include them.
With a binary FTP from VMS of a VAR file you get just the data bytes
with no structure defining bytes at all.
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the file as
isrCY ...
And it does. All the bytes of the file. Not all the metadata that exists outside of the data content.
-a Johnny
On 9/4/25 00:38, Johnny Billquist wrote:
Really? The length bytes are not actually any data in the file. Same
with padding. I would say it would be a very bad bug to actually
include them.
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the file as
isrCY ...
And it does. All the bytes of the file. Not all the metadata that
exists outside of the data content.
Although the length and padding bytes are not data, they are still bytes
of the file. What was shown indicates that only the data, not all the
bytes, were transferred. I don't think that this makes sense or is
useful. But, VMS users very likely use the (unsupported) zip and unzip utility to ensure that they get transferred what they really want/need.
On 9/4/2025 12:52 PM, hb0815 wrote:
On 9/4/25 00:38, Johnny Billquist wrote:
Really? The length bytes are not actually any data in the file. Same
with padding. I would say it would be a very bad bug to actually
include them.
And here I thought rCLbinaryrCY meant rCLtransfer all the bytes in the >>>> file as
isrCY ...
And it does. All the bytes of the file. Not all the metadata that
exists outside of the data content.
Although the length and padding bytes are not data, they are still
bytes of the file. What was shown indicates that only the data, not
all the bytes, were transferred. I don't think that this makes sense
or is useful. But, VMS users very likely use the (unsupported) zip and
unzip utility to ensure that they get transferred what they really
want/need.
Discussing binary ftp of text files is a bit odd, because it
is not expected to work.
Binary FTP from VMS to Linux loose line structure. But even
if it did transfer all bytes Linux would just see a bunch
of bytes not making any sense as lines.
But that not working is not unique for VMS-*nix. Between
Windows and *nix you can end up with text files with a
trailing CR on all lines on *nix or lines not recognized
due to missing CR in older Windows apps.
I still think the FIX odd record length is a much better
example.
It is something that could happen in real world.
The expectation would be that it could be FTP'ed
binary.
And I would say that the least surprising handling
is what FTP actually does: loose the padding zero.
It would be quite confusing to write a FIX 1 file
on VMS, binary FTP it to Linux and see those
null bytes.
But that not working is not unique for VMS-*nix. Between
Windows and *nix you can end up with text files with a
trailing CR on all lines on *nix or lines not recognized
due to missing CR in older Windows apps.
Don't consider the length/padding to be part of the file. It is simply
part of the container that is holding the bytes.
VARCR, STMLF, etc. each are different containers but would hold the same bytes. You wouldn't want the RMS header would you? Of course not.
On Thu, 4 Sep 2025 18:57:17 -0400, Arne Vajh|+j wrote:
But that not working is not unique for VMS-*nix. Between
Windows and *nix you can end up with text files with a
trailing CR on all lines on *nix or lines not recognized
due to missing CR in older Windows apps.
At least you do not lose any data. Text files are the least troublesome, because it is easy to open the file in rCLuniversal newlinerCY mode and transparently handle all the common line-ending conventions.
And not handling VMS RMS VAR, VMS RMS VFC, NOS variable length files,
NOS/VE variable length files, whatever fun stuff IBM mainframes may have etc..
On Thu, 4 Sep 2025 19:55:12 -0400, Arne Vajh|+j wrote:
And not handling VMS RMS VAR, VMS RMS VFC, NOS variable length files,
NOS/VE variable length files, whatever fun stuff IBM mainframes may have
etc..
We donrCOt care about those here. We care about VMS OBJ format, which is (or should be) easy to transfer to *nix platforms and work on there and even generate on there, not so easy to transfer back to VMS.
$ mcr []dump var.txt rb
41
42
42
43
43
43
$ mcr []dump vfc.txt rb
01
8D
41
01
8D
42
42
01
8D
43
43
43
$ mcr []dump stm.txt rb
41
42
42
43
43
43
$ mcr []dump stmlf.txt rb
41
0A
42
42
0A
43
43
43
0A
(dump.c is in an earlier post)
But it is not the use case VMS FTP was designed for.
On 9/4/2025 8:24 PM, Lawrence DrCOOliveiro wrote:
On Thu, 4 Sep 2025 19:55:12 -0400, Arne Vajh|+j wrote:
And not handling VMS RMS VAR, VMS RMS VFC, NOS variable length files,
NOS/VE variable length files, whatever fun stuff IBM mainframes may have >>> etc..
We donrCOt care about those here. We care about VMS OBJ format, which is (or >> should be) easy to transfer to *nix platforms and work on there and even
generate on there, not so easy to transfer back to VMS.
I think he got the transfer working both ways with a little
ingenuity.
On 2025-08-30, Waldek Hebisch <antispam@fricas.org> wrote:
Simon Clubley <clubley@remove_me.eisner.decus.org-earth.ufp> wrote:
That's where I gave up. I either didn't understand the required
VMS-specific build steps or there were bits missing from the public
source kits.
There are missing pieces, build needs VMS header files and libraries.
If those pieces are incomplete, then configuration may go wrong
and lead to trobles later.
Currently I have fairly incomplete set of header files, so I expect
trouble due to this. OTOH libgcc seem to compile fine, so C
compiler probably will work. I worked around trouble with
shared images by configuring gcc with '--disable-shared',
suboptimal but must do for now.
If you look at the links Arne posted, you will see I took across to
Linux the VMS-supplied header files inc addition to the libraries.
According to those notes, it appears I also had to write patches
for those headers.
When I talked about bits missing, I wasn't thinking about the headers
and libraries. Given that Adacore didn't start using Newlib or something similar to support VMS, that was pretty much expected.
I was thinking more about bits missing within the compiler or binutils itself, especially given the crashes I had with Fortran. I was wondering
if, for example, there are bits missing in the image initialisation
sequence, along with other similar types of missing bits.
On Thu, 4 Sep 2025 00:38:34 +0200, Johnny Billquist wrote:
On 2025-09-03 06:20, Lawrence DrCOOliveiro wrote:
ThatrCOs stupid. I would describe that as a bug in the VMS FTP program.
Really? The length bytes are not actually any data in the file.
Yes they are.
On Thu, 4 Sep 2025 19:55:12 -0400, Arne Vajh|+j wrote:
And not handling VMS RMS VAR, VMS RMS VFC, NOS variable length files,
NOS/VE variable length files, whatever fun stuff IBM mainframes may have
etc..
We donrCOt care about those here. We care about VMS OBJ format, which is (or should be) easy to transfer to *nix platforms and work on there and even generate on there, not so easy to transfer back to VMS.
All the trouble happens on the VMS side.
On Thu, 4 Sep 2025 20:28:24 -0400, Arne Vajh|+j wrote:
But it is not the use case VMS FTP was designed for.
If you canrCOt even properly transfer a file to another VMS system, then
what *was* it designed for?
On Thu, 4 Sep 2025 20:28:24 -0400, Arne Vajh|+j wrote:
But it is not the use case VMS FTP was designed for.
If you canrCOt even properly transfer a file to another VMS system, then
what *was* it designed for?
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/4/2025 8:24 PM, Lawrence DrCOOliveiro wrote:
On Thu, 4 Sep 2025 19:55:12 -0400, Arne Vajh|+j wrote:
And not handling VMS RMS VAR, VMS RMS VFC, NOS variable length files,
NOS/VE variable length files, whatever fun stuff IBM mainframes may have >>>> etc..
We donrCOt care about those here. We care about VMS OBJ format, which is (or
should be) easy to transfer to *nix platforms and work on there and even >>> generate on there, not so easy to transfer back to VMS.
I think he got the transfer working both ways with a little
ingenuity.
Yes, thanks to your tip I can correct attributes on files
transmitted from Linux. To transfer from VMS I can either
change attributes to fixed blocks and deal with padding
in Linux or use zip -V. I have tried
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
I was also thinking about using BACKUP (I assume that BACKUP can
correctly restore files), but I do not know if its format can be
easily decoded.
On Thu, 4 Sep 2025 17:22:35 -0400, John Reagan wrote:
Don't consider the length/padding to be part of the file. It is simply
part of the container that is holding the bytes.
Every byte in the file contents is part of the contents of the file.
VARCR, STMLF, etc. each are different containers but would hold the same
bytes. You wouldn't want the RMS header would you? Of course not.
There is no rCLRMS headerrCY in variable-length record formats.
On 9/4/2025 11:02 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I think he got the transfer working both ways with a little
ingenuity.
Yes, thanks to your tip I can correct attributes on files
transmitted from Linux. To transfer from VMS I can either
change attributes to fixed blocks and deal with padding
in Linux or use zip -V. I have tried
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
I would try with an even number for MRS. An odd number will
cause some bytes to be considered pad bytes.
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/4/2025 11:02 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I think he got the transfer working both ways with a little
ingenuity.
Yes, thanks to your tip I can correct attributes on files
transmitted from Linux. To transfer from VMS I can either
change attributes to fixed blocks and deal with padding
in Linux or use zip -V. I have tried
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
I would try with an even number for MRS. An odd number will
cause some bytes to be considered pad bytes.
Let me explain what I expected: RFM:FIX alone keeps maximal
record size unchanged, effectivly adding padding in last
record (unless length of the file happens to be be an integral
multiple of maximal record size). My expectation was that
MRS:1 will eliminate need for padding, keping file end in
the same place as it was before changing attributes.
Unfortunately, it seems that attempts to set record size are
ignored. It seems that record size is separate from mazimal
record size and despite claim in "VSI OpenVMS Record Management
Services Reference Manual":
: The maximum record size (MRS) field defines the size of all records
: in a file with fixed-length records, the maximum size of variable-length
: records, the maximum size of the data area for variable with fixed-
: length control records, and the cell size (minus overhead) for relative
: files.
setting maximal record size does not change record size: DUMP/HEADER
shows me:
Record type: Fixed
File organization: Sequential
Record attributes: <none specified>
Record size: 4056
Highest block: 54
End of file block: 52
End of file block: 52
End of file byte: 220
Bucket size: 0
Fixed control area size: 0
Maximum record size: 26332
in contradiction to the claim from reference manual.
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 1:57 PM, Simon Clubley wrote:
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 10:14 AM, Waldek Hebisch wrote:
I wonder if anybody is using GNU binutils targeting VMS. I am
trying to set up toolchain for cross-compilation (from Linux) to
Alpha VMS. Trying reasonably recent (2.43 and 2.39) binutils I
get errors suggesting serious brokennes, for example when I use
'ar' to create a library and later extract a member I get changed
file and 'objdump' says that extracted file is malformed.
I am now trying binutils 2.21 and apparently they do not have the
problem above. But I see some weirdness and apparently '-shared'
option (to create shared image) is not supported.
I suspect very few try to build VMS executables on Linux.
A decade ago, I got as far as getting a simple C program for VMS Alpha
to compile and link on Linux. Anything else more complicated than that
(ie: other languages) failed and I suspect that either bits were missing >>> from the public kits or the additional steps required were not obvious.
I discussed this at length in comp.os.vms at the time. Anyone interested >>> will have to rely on the notes I posted at the time as I have completely >>> forgotten the details of any of this (and have no motivation to get back >>> up to speed on them because my hobbies these days are very different and >>> because there's no longer a proper hobbyist licence for VMS Alpha).
I did the search:
https://groups.google.com/g/comp.os.vms/c/KN9yqM7_8PU/m/T4xwyTz5A3oJ
https://groups.google.com/g/comp.os.vms/c/S7-VwQmmOZU/m/LXQ2TrbCBAAJ
https://groups.google.com/g/comp.os.vms/c/oSNzXLKeu4o/m/8Tq5dIFaDAAJ
I looked deeper at the last message (one with 8Tq5dIFaDAAJ at the end).
The fix for PR 17512 is clearly wrong: 'struct vms_eihd' is deliberatly bigger than typical headers. Reverting this and similar fix for
PR 21813 allows objdump from binutils-2.39 to disassemble VMS shared
images with small header. However, cross binutils-2.39 can not read
VMS object files, and any attempts at linking give result like:
foo.obj: file not recognized: file format not recognized
To summarize, cross binutils-2.21 have one bug known to me: 'ar' can
not correctly extract '.obj' from a library. Apparently extracting
file looses information about record length (that probably only affects
cross ar, in native case probably RMS manages lengths).
binutils-2.39 is affected by the second issue mentioned by Simon. '--disable-plugins' option to configure is not needed to get working
objdump, but 'ar' from binutils-2.39 can not create libraries from VMS
object files even after giving '--disable-plugins' to configure. binutils-2.43.1 seem behave in similar way to binutils-2.39.
I now got to C++ problem. In fact, this may be binutils problem:
gcc generates an assember file and as from binutils-2.21 aborts on
this file. as from current binutils developement tree produces
error message instead:
pom/kompi/gcc/binu-build3/gas/as-new -o array_type_info.obj array_type_info.s array_type_info.s: Assembler messages:
array_type_info.s: Error: no entry symbol for global function '_ZN10__cxxabiv117__array_type_infoD1Ev'
The offending function is defined in the following way:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2Ev
If I delete this definition and the ony use of it the file assembles OK. AFAICS this means that _ZN10__cxxabiv117__array_type_infoD2Ev is correctly defined.
On 9/5/2025 11:43 AM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/4/2025 11:02 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I think he got the transfer working both ways with a little
ingenuity.
Yes, thanks to your tip I can correct attributes on files
transmitted from Linux. To transfer from VMS I can either
change attributes to fixed blocks and deal with padding
in Linux or use zip -V. I have tried
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
I would try with an even number for MRS. An odd number will
cause some bytes to be considered pad bytes.
Let me explain what I expected: RFM:FIX alone keeps maximal
record size unchanged, effectivly adding padding in last
record (unless length of the file happens to be be an integral
multiple of maximal record size). My expectation was that
MRS:1 will eliminate need for padding, keping file end in
the same place as it was before changing attributes.
Unfortunately, it seems that attempts to set record size are
ignored. It seems that record size is separate from mazimal
record size and despite claim in "VSI OpenVMS Record Management
Services Reference Manual":
: The maximum record size (MRS) field defines the size of all records
: in a file with fixed-length records, the maximum size of variable-length >> : records, the maximum size of the data area for variable with fixed-
: length control records, and the cell size (minus overhead) for relative
: files.
setting maximal record size does not change record size: DUMP/HEADER
shows me:
Record type: Fixed
File organization: Sequential
Record attributes: <none specified>
Record size: 4056
Highest block: 54
End of file block: 52
End of file block: 52
End of file byte: 220
Bucket size: 0
Fixed control area size: 0
Maximum record size: 26332
in contradiction to the claim from reference manual.
I was not talking about file padding but about record
padding.
I think this illustrate the issue:
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX2
$ typ z.txt
AB
CD
EF
$ set file/attr=(mrs:1) z.txt
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX2
$ set file/attr=(lrl:1) z.txt
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX1
$ typ z.txt
A
C
E
B, D and F are "lost".
And it looks like one need to set LRL instead of MRS to change the file.
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I was not talking about file padding but about record
padding.
I think this illustrate the issue:
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX2
$ typ z.txt
AB
CD
EF
$ set file/attr=(mrs:1) z.txt
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX2
$ set file/attr=(lrl:1) z.txt
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX1
$ typ z.txt
A
C
E
B, D and F are "lost".
And it looks like one need to set LRL instead of MRS to change the file.
I am not sure what this is supposed to ilustrate. I mean, I would
expect that changing record length below previous record length
and doing no other changes to attributes will lead to trouble
and while I do not undertand all details of your example, it seem
to confirm my expectation.
I would expect that having records
of length 3 and then setting length to 2 would also truncate
data in the records.
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/4/2025 11:02 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I think he got the transfer working both ways with a little
ingenuity.
Yes, thanks to your tip I can correct attributes on files
transmitted from Linux. To transfer from VMS I can either
change attributes to fixed blocks and deal with padding
in Linux or use zip -V. I have tried
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
I would try with an even number for MRS. An odd number will
cause some bytes to be considered pad bytes.
Let me explain what I expected: RFM:FIX alone keeps maximal
record size unchanged, effectivly adding padding in last
record (unless length of the file happens to be be an integral
multiple of maximal record size). My expectation was that
MRS:1 will eliminate need for padding, keping file end in
the same place as it was before changing attributes.
Unfortunately, it seems that attempts to set record size are
ignored. It seems that record size is separate from mazimal
record size and despite claim in "VSI OpenVMS Record Management
Services Reference Manual":
: The maximum record size (MRS) field defines the size of all records
: in a file with fixed-length records, the maximum size of variable-length
: records, the maximum size of the data area for variable with fixed-
: length control records, and the cell size (minus overhead) for relative
: files.
setting maximal record size does not change record size: DUMP/HEADER
shows me:
Record type: Fixed
File organization: Sequential
Record attributes: <none specified>
Record size: 4056
Highest block: 54
End of file block: 52
End of file block: 52
End of file byte: 220
Bucket size: 0
Fixed control area size: 0
Maximum record size: 26332
in contradiction to the claim from reference manual.
On 9/5/25 6:55 AM, Waldek Hebisch wrote:
I now got to C++ problem. In fact, this may be binutils problem:
gcc generates an assember file and as from binutils-2.21 aborts on
this file. as from current binutils developement tree produces
error message instead:
pom/kompi/gcc/binu-build3/gas/as-new -o array_type_info.obj array_type_info.s
array_type_info.s: Assembler messages:
array_type_info.s: Error: no entry symbol for global function '_ZN10__cxxabiv117__array_type_infoD1Ev'
The offending function is defined in the following way:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2Ev
If I delete this definition and the ony use of it the file assembles OK.
AFAICS this means that _ZN10__cxxabiv117__array_type_infoD2Ev is correctly >> defined.
Note that this symbol is 38 characters long. The native VMS toolchain traditionally limits itself to 31-character symbols and uses a checksum
to shorten symbols that are longer. The linker, the librarian, and the inertia of existing code are all things I've heard blamed for this state
of affairs.
I have no idea whether the tools you are using require or are capable of observing the 31-character limit. If some parts do and other parts
don't, that could obviously cause trouble, and of course you've got the
C++ name mangler in the mix as well.
On 2025-09-05 17:43, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/4/2025 11:02 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I think he got the transfer working both ways with a little
ingenuity.
Yes, thanks to your tip I can correct attributes on files
transmitted from Linux. To transfer from VMS I can either
change attributes to fixed blocks and deal with padding
in Linux or use zip -V. I have tried
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
I would try with an even number for MRS. An odd number will
cause some bytes to be considered pad bytes.
Let me explain what I expected: RFM:FIX alone keeps maximal
record size unchanged, effectivly adding padding in last
record (unless length of the file happens to be be an integral
multiple of maximal record size). My expectation was that
MRS:1 will eliminate need for padding, keping file end in
the same place as it was before changing attributes.
Unfortunately, it seems that attempts to set record size are
ignored. It seems that record size is separate from mazimal
record size and despite claim in "VSI OpenVMS Record Management
Services Reference Manual":
: The maximum record size (MRS) field defines the size of all records
: in a file with fixed-length records, the maximum size of variable-length >> : records, the maximum size of the data area for variable with fixed-
: length control records, and the cell size (minus overhead) for relative
: files.
setting maximal record size does not change record size: DUMP/HEADER
shows me:
Record type: Fixed
File organization: Sequential
Record attributes: <none specified>
Record size: 4056
Highest block: 54
End of file block: 52
End of file block: 52
End of file byte: 220
Bucket size: 0
Fixed control area size: 0
Maximum record size: 26332
in contradiction to the claim from reference manual.
I think you're expecting magic (if I understood you right).
Changing the
attributes of an existing file does not change the content of the file, merely how some things are interpreted at read, as well as possibly affecting further writes.
If you set a file to fixed, with a maximum record size of whatever does
not change any existing records in the file. It can cause truncation
when you write additional records, but if you by some trickery caused
larger records to exist in the file, they will not be changed.
Furthermore, you cannot dodge padding if you have records in the file.
If you specify a maximum records size of 1, you'll get padding on every record if I remember right. The one way to not have padding is to have a stream record format.
On 9/5/2025 1:40 PM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
I was not talking about file padding but about record
padding.
I think this illustrate the issue:
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX2
$ typ z.txt
AB
CD
EF
$ set file/attr=(mrs:1) z.txt
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX2
$ set file/attr=(lrl:1) z.txt
$ write sys$output f$file("z.txt","rfm"),f$file("z.txt","mrs")
FIX1
$ typ z.txt
A
C
E
B, D and F are "lost".
And it looks like one need to set LRL instead of MRS to change the file.
I am not sure what this is supposed to ilustrate. I mean, I would
expect that changing record length below previous record length
and doing no other changes to attributes will lead to trouble
and while I do not undertand all details of your example, it seem
to confirm my expectation.
It illustrates that:
$ set file/attr=(rfm:fix,lrl:oddnumber) ...
is very dangerous, because some data bytes may end up being lost due
to being considered padding.
I would expect that having records
of length 3 and then setting length to 2 would also truncate
data in the records.
$ set file/attr does not change the content of the file only the
file header meta data.
AAA
BBB
CCC
41 41 41 00
42 42 42 00
43 43 43 00
does not become:
AA
BB
CC
41 41
42 42
43 43
but:
AA
A*
BB
B*
CC
C*
41 41
41 00
42 42
42 00
43 43
43 00
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 9/5/2025 1:40 PM, Waldek Hebisch wrote:
I would expect that having records
of length 3 and then setting length to 2 would also truncate
data in the records.
$ set file/attr does not change the content of the file only the
file header meta data.
AAA
BBB
CCC
41 41 41 00
42 42 42 00
43 43 43 00
does not become:
AA
BB
CC
41 41
42 42
43 43
but:
AA
A*
BB
B*
CC
C*
41 41
41 00
42 42
42 00
43 43
43 00
I am not sure how you are getting result above. I created a
simple variable length file and I get:
$ set FILE/ATTR=LRL:2 VTST.TXT
$ type VTST.TXT
a
bcd
$ set FILE/ATTR=LRL:1 VTST.TXT
$ type VTST.TXT
a
bcd
That is 'type' is getting right records regardless of my LRL setting.
Naive program could truncate records. Slightly better one
could get records in pieces of size corresponding to
LRL (possibly creating more record on output than is present in
the input). But truncating with odd LRL setting and reading
record padding bytes with even LRL setting look like a bug
(which may remain unfixed forever due to requirement for
bug compatibility).
All indicates that GNU assembler can not handle simple symbol
equality as intended.
On Fri, 5 Sep 2025 21:32:01 -0000 (UTC), Waldek Hebisch wrote:
All indicates that GNU assembler can not handle simple symbol
equality as intended.
I tried creating a source file test.s containing just your two problem
lines:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2E
and when I try to assemble it,
gcc -c test.s
there is no error, and test.o is created OK. Trying objdump on it
objdump -t test.o
shows it has the correct symbol reference in it, albeit undefined:
test.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 *UND* 0000000000000000 _ZN10__cxxabiv117__array_type_infoD2E
So no, the issue is not with those two particular lines on their own. Something else is involved.
Also note the context: this is code for alpha-dec-vms, equivalent
construct is used on other architecures and works fine.
Well, I would prefer to avoid discussions about what is content, what is
data and what is metadata.
SET FILE/ATTR=(RFM:FIX,MRS:1)
but that does not give me expected result.
Craig A. Berry <craigberry@nospam.mac.com> wrote:
On 9/5/25 6:55 AM, Waldek Hebisch wrote:
I now got to C++ problem. In fact, this may be binutils problem:
gcc generates an assember file and as from binutils-2.21 aborts on
this file. as from current binutils developement tree produces
error message instead:
pom/kompi/gcc/binu-build3/gas/as-new -o array_type_info.obj array_type_info.s
array_type_info.s: Assembler messages:
array_type_info.s: Error: no entry symbol for global function '_ZN10__cxxabiv117__array_type_infoD1Ev'
The offending function is defined in the following way:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2Ev
If I delete this definition and the ony use of it the file assembles OK. >>> AFAICS this means that _ZN10__cxxabiv117__array_type_infoD2Ev is correctly >>> defined.
Note that this symbol is 38 characters long. The native VMS toolchain
traditionally limits itself to 31-character symbols and uses a checksum
to shorten symbols that are longer. The linker, the librarian, and the
inertia of existing code are all things I've heard blamed for this state
of affairs.
I have no idea whether the tools you are using require or are capable of
observing the 31-character limit. If some parts do and other parts
don't, that could obviously cause trouble, and of course you've got the
C++ name mangler in the mix as well.
IIUC GNU assembler internaly uses arbitrarily long names (in dynamically allocated buffers) and shortens names only on output. Anyway, I
tried shorthening names in the input file and it makes no difference.
All indicates that GNU assembler can not handle simple symbol
equality as intended. Namely relevant part of original code
including definitions of _ZN10__cxxabiv117__array_type_infoD2Ev
and _ZN10__cxxabiv117__array_type_infoD1Ev is:
.link
.align 3
_ZN10__cxxabiv117__array_type_infoD2Ev:
.pdesc _ZN10__cxxabiv117__array_type_infoD2Ev..en,stack $80.._ZNSt9type_infoD2Ev..lk:
.linkage _ZNSt9type_infoD2Ev
.end _ZN10__cxxabiv117__array_type_infoD2Ev
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2Ev
The intent is clearly that _ZN10__cxxabiv117__array_type_infoD1Ev
should be alternative name for _ZN10__cxxabiv117__array_type_infoD2Ev,
but for some reasons assembler can not handle this. AFAICS GNU
assembler for VMS believes that that given function should have
only one name. For example I tried to transform fragment above
to:
.link
.align 3
_ZN10__cxxabiv117__array_type_infoD2Ev:
.pdesc _ZN10__cxxabiv117__array_type_infoD2Ev..en,stack $80.._ZNSt9type_infoD2Ev..lk:
.linkage _ZNSt9type_infoD2Ev
.end _ZN10__cxxabiv117__array_type_infoD2Ev
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
.ent _ZN10__cxxabiv117__array_type_infoD1Ev _ZN10__cxxabiv117__array_type_infoD1Ev:
.pdesc _ZN10__cxxabiv117__array_type_infoD2Ev..en,stack
.linkage _ZNSt9type_infoD2Ev
.end _ZN10__cxxabiv117__array_type_infoD2Ev
that is I actually build second descriptor duplicating content of
descriptor for _ZN10__cxxabiv117__array_type_infoD2Ev and GNU
assembler still does not want to accept this. More precisely,
version 2.21 gives the same error message as original code,
current trunk says:
at3.s: Assembler messages:
at3.s:55: Fatal error: .pdesc doesn't match with last .ent
I do not know if VMS object format allows alternative names,
that is two symbols resolving to the same name (but I also
am not aware of any reason for such restriction), but even
if there were such restriction version with duplicate descriptor
should work around this.
On Fri, 5 Sep 2025 22:28:27 -0000 (UTC), Waldek Hebisch wrote:
Well, I would prefer to avoid discussions about what is content, what is
data and what is metadata.
If you bypass RMS and read/write the file contents directly, what you have
is rCLdatarCY.
On 9/5/2025 10:07 PM, Lawrence DrCOOliveiro wrote:
If you bypass RMS and read/write the file contents directly, what you have >> is rCLdatarCY.
Read like this:
[long-winded equivalent to fopen(-2file-+, "rb")/fread/etc omitted]
I don't think the output from this will be considered the
file content by many.
On Sat, 6 Sep 2025 19:55:43 -0400, Arne Vajh|+j wrote:
On 9/5/2025 10:07 PM, Lawrence DrCOOliveiro wrote:
If you bypass RMS and read/write the file contents directly, what you have >>> is rCLdatarCY.
Read like this:
[long-winded equivalent to fopen(-2file-+, "rb")/fread/etc omitted]
I don't think the output from this will be considered the
file content by many.
Why not?
On 9/6/2025 9:59 PM, Lawrence DrCOOliveiro wrote:
On Sat, 6 Sep 2025 19:55:43 -0400, Arne Vajh|+j wrote:
I don't think the output from this will be considered the
file content by many.
Why not?
What do you say?
$ typ var.txt
A
BB
CCC
$ r nonrms
[lots of content omitted]
...
$ typ var.txt
A
BB
CCC
$ r nonrms
-a01 00 41 00 02 00 42 42 03 00 43 43 43 00 00 00
-a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-a...
On 9/7/25 04:02, Arne Vajh|+j wrote:
...
$ typ var.txt
A
BB
CCC
$ r nonrms
-a-a01 00 41 00 02 00 42 42 03 00 43 43 43 00 00 00
-a-a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-a-a...
There are disk blocks, files and application data.
nonrms prints a disk block.
The file contents ends at FFB in EBK.
The TYPE application interprets the file contents and prints it.
But FFB and EBK are in the record attributes together
with record format etc..
From a QIO perspective a file consist of N allocated
blocks where N is a multipla of allocation size that
can be read and write.
It is also able to read when access and write when
deaccess record attributes, but QIO does not use those
itself.
RMS use record attributes. RFM to know how to interpret
records. And FFB and EBK to know where the logical EOF is.
Point being that dropping RMS and data used by
RMS does not provide a useful result.
It is all a little bit of polemic of course, because
obviously I know that Lawrence wanted to have QIO
use the record attributed, ignore some parts (RFM)
and use other parts (FFB and EBK) to emulate RMS.
The TYPE application interprets the file contents and prints it.
On Sun, 7 Sep 2025 13:31:13 +0200, hb0815 wrote:
The TYPE application interprets the file contents and prints it.
rCLInterpretationrCY of file contents is precisely what you donrCOt want in
a binary file-transfer mode.
Lawrence DrCOOliveiro <ldo@nz.invalid> wrote:
On Fri, 5 Sep 2025 21:32:01 -0000 (UTC), Waldek Hebisch wrote:
All indicates that GNU assembler can not handle simple symbol
equality as intended.
I tried creating a source file test.s containing just your two problem
lines:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2E
and when I try to assemble it,
gcc -c test.s
there is no error, and test.o is created OK. Trying objdump on it
objdump -t test.o
shows it has the correct symbol reference in it, albeit undefined:
test.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 *UND* 0000000000000000 _ZN10__cxxabiv117__array_type_infoD2E
So no, the issue is not with those two particular lines on their own.
Something else is involved.
Yes. AFAICS main issue is creating alias name for an exported
function. Internal aliases work fine. Probably data aliases too.
In article <109g1s1$3jb20$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
Lawrence D|o??Oliveiro <ldo@nz.invalid> wrote:
On Fri, 5 Sep 2025 21:32:01 -0000 (UTC), Waldek Hebisch wrote:
All indicates that GNU assembler can not handle simple symbol
equality as intended.
I tried creating a source file test.s containing just your two problem
lines:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = _ZN10__cxxabiv117__array_type_infoD2E
and when I try to assemble it,
gcc -c test.s
there is no error, and test.o is created OK. Trying objdump on it
objdump -t test.o
shows it has the correct symbol reference in it, albeit undefined:
test.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 *UND* 0000000000000000 _ZN10__cxxabiv117__array_type_infoD2E
So no, the issue is not with those two particular lines on their own.
Something else is involved.
Yes. AFAICS main issue is creating alias name for an exported
function. Internal aliases work fine. Probably data aliases too.
I caution against putting it in those terms. What you are doing
in GNU `as` when you use the `a = e` syntax is creating a symbol
called "a" from that is set to the evalue of some expression.
In this contrived example, that expression is just "e", which I
used as a stand-in for any arbitrary expression, but if taken
literally, would just be valuated to the value of some other
symbol, called "e". If "e" was not defined already, it is
assumed to be an external.
When you assemble troll's file, an object file is generated; the
results from `objdump` above show that there is a single symbol
in that object file's symbol table, one you referred to when
creating '_ZN10__cxxabiv117__array_type_infoD2E'. But note that '_ZN10__cxxabiv117__array_type_infoD2E' itself (the symbol that
you created when you assigned to it) is not in the symbol table.
However, the symbol that you created is not in the symbol table,
which is the fundamental problem.
Dan Cross <cross@spitfire.i.gajendra.net> wrote:
In article <109g1s1$3jb20$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
Lawrence D|o??Oliveiro <ldo@nz.invalid> wrote:
On Fri, 5 Sep 2025 21:32:01 -0000 (UTC), Waldek Hebisch wrote:
All indicates that GNU assembler can not handle simple symbol
equality as intended.
I tried creating a source file test.s containing just your two problem >>>> lines:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = >_ZN10__cxxabiv117__array_type_infoD2E
and when I try to assemble it,
gcc -c test.s
there is no error, and test.o is created OK. Trying objdump on it
objdump -t test.o
shows it has the correct symbol reference in it, albeit undefined:
test.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 *UND* 0000000000000000 >_ZN10__cxxabiv117__array_type_infoD2E
So no, the issue is not with those two particular lines on their own.
Something else is involved.
Yes. AFAICS main issue is creating alias name for an exported
function. Internal aliases work fine. Probably data aliases too.
I caution against putting it in those terms. What you are doing
in GNU `as` when you use the `a = e` syntax is creating a symbol
called "a" from that is set to the evalue of some expression.
In this contrived example, that expression is just "e", which I
used as a stand-in for any arbitrary expression, but if taken
literally, would just be valuated to the value of some other
symbol, called "e". If "e" was not defined already, it is
assumed to be an external.
When you assemble troll's file, an object file is generated; the
results from `objdump` above show that there is a single symbol
in that object file's symbol table, one you referred to when
creating '_ZN10__cxxabiv117__array_type_infoD2E'. But note that
'_ZN10__cxxabiv117__array_type_infoD2E' itself (the symbol that
you created when you assigned to it) is not in the symbol table.
However, the symbol that you created is not in the symbol table,
which is the fundamental problem.
Well, one issue is if needed construct is supported at all.
Other platforms have code like:
.text
.globl exp_fun
.type exp_fun, @function
exp_fun:
ret
.LFE0:
.size exp_fun, .-exp_fun
.globl alias_fun
.set alias_fun,exp_fun
Assembling this on x86 Linux gives object file exporting two symbols:
exp_fun and alias_fun. IIUC this behaviour is wanted by C++
compiler.
Alpha VMS needs more complicated function definition. And more
important: '.set alias_fun,exp_fun' causes assembler message
about wrong syntax.
In DEC assembler '=' apparently gives effect that you describe:
new name is not exported. In DEC assembler '==' apparently creates
an alias, but as a data symbol. I am not aware of DEC construct
to get effect of '.set' as in x86 Linux example above (but up
to now I did not look into macro manual). So '=' probably is
wrong syntatx, I do not know why gcc uses it.
In article <109mep8$84ft$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
Dan Cross <cross@spitfire.i.gajendra.net> wrote:
In article <109g1s1$3jb20$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
Lawrence D|a-o??Oliveiro <ldo@nz.invalid> wrote:
On Fri, 5 Sep 2025 21:32:01 -0000 (UTC), Waldek Hebisch wrote:
All indicates that GNU assembler can not handle simple symbol
equality as intended.
I tried creating a source file test.s containing just your two problem >>>>> lines:
.globl _ZN10__cxxabiv117__array_type_infoD1Ev
_ZN10__cxxabiv117__array_type_infoD1Ev = >>_ZN10__cxxabiv117__array_type_infoD2E
and when I try to assemble it,
gcc -c test.s
there is no error, and test.o is created OK. Trying objdump on it
objdump -t test.o
shows it has the correct symbol reference in it, albeit undefined:
test.o: file format elf64-x86-64
SYMBOL TABLE:
0000000000000000 *UND* 0000000000000000 >>_ZN10__cxxabiv117__array_type_infoD2E
So no, the issue is not with those two particular lines on their own. >>>>> Something else is involved.
Yes. AFAICS main issue is creating alias name for an exported >>>>function. Internal aliases work fine. Probably data aliases too.
I caution against putting it in those terms. What you are doing
in GNU `as` when you use the `a = e` syntax is creating a symbol
called "a" from that is set to the evalue of some expression.
In this contrived example, that expression is just "e", which I
used as a stand-in for any arbitrary expression, but if taken
literally, would just be valuated to the value of some other
symbol, called "e". If "e" was not defined already, it is
assumed to be an external.
When you assemble troll's file, an object file is generated; the
results from `objdump` above show that there is a single symbol
in that object file's symbol table, one you referred to when
creating '_ZN10__cxxabiv117__array_type_infoD2E'. But note that
'_ZN10__cxxabiv117__array_type_infoD2E' itself (the symbol that
you created when you assigned to it) is not in the symbol table.
However, the symbol that you created is not in the symbol table,
which is the fundamental problem.
Well, one issue is if needed construct is supported at all.
Other platforms have code like:
.text
.globl exp_fun
.type exp_fun, @function
exp_fun:
ret
.LFE0:
.size exp_fun, .-exp_fun
.globl alias_fun
.set alias_fun,exp_fun
Assembling this on x86 Linux gives object file exporting two symbols: >>exp_fun and alias_fun. IIUC this behaviour is wanted by C++
compiler.
Alpha VMS needs more complicated function definition. And more
important: '.set alias_fun,exp_fun' causes assembler message
about wrong syntax.
In DEC assembler '=' apparently gives effect that you describe:
new name is not exported. In DEC assembler '==' apparently creates
an alias, but as a data symbol. I am not aware of DEC construct
to get effect of '.set' as in x86 Linux example above (but up
to now I did not look into macro manual). So '=' probably is
wrong syntatx, I do not know why gcc uses it.
So the GNU `as` documentation says that `a = e` has the same
semamtics as `.set a, e`. Why isn't the Alpha version exporting
that symbol? I don't know off the top of my head. But it's not
specific to Alpha: my experiments were on x86. My suspcion
is that its because it is not used in the file itself.
In DEC assembler '=' apparently gives effect that you describe:
new name is not exported. In DEC assembler '==' apparently creates
an alias, but as a data symbol. I am not aware of DEC construct
to get effect of '.set' as in x86 Linux example above (but up
to now I did not look into macro manual). So '=' probably is
wrong syntatx, I do not know why gcc uses it.
On 9/5/25 6:55 AM, Waldek Hebisch wrote:
I now got to C++ problem.-a In fact, this may be binutils problem:
gcc generates an assember file and as from binutils-2.21 aborts on
this file.-a as from current binutils developement tree produces
error message instead:
pom/kompi/gcc/binu-build3/gas/as-new -o array_type_info.obj
array_type_info.s
array_type_info.s: Assembler messages:
array_type_info.s: Error: no entry symbol for global function
'_ZN10__cxxabiv117__array_type_infoD1Ev'
The offending function is defined in the following way:
-a-a-a-a-a-a-a-a .globl _ZN10__cxxabiv117__array_type_infoD1Ev
-a-a-a-a-a-a-a-a _ZN10__cxxabiv117__array_type_infoD1Ev =
_ZN10__cxxabiv117__array_type_infoD2Ev
If I delete this definition and the ony use of it the file assembles OK.
AFAICS this means that _ZN10__cxxabiv117__array_type_infoD2Ev is
correctly
defined.
Note that this symbol is 38 characters long.-a The native VMS toolchain traditionally limits itself to 31-character symbols and uses a checksum
to shorten symbols that are longer.-a The linker, the librarian, and the inertia of existing code are all things I've heard blamed for this state
of affairs.
I have no idea whether the tools you are using require or are capable of observing the 31-character limit.-a If some parts do and other parts
don't, that could obviously cause trouble, and of course you've got the
C++ name mangler in the mix as well.
If you need an open source name shortener that mimics what the DEC
compilers do, I've got one here:
<https://sourceforge.net/p/vms-ports/vmsshortsym/ci/default/tree/ vms_shorten_symbol.c>
Dan Cross <cross@spitfire.i.gajendra.net> wrote:
In article <109mep8$84ft$1@paganini.bofh.team>,
Waldek Hebisch <antispam@fricas.org> wrote:
[snip]
Well, one issue is if needed construct is supported at all.
Other platforms have code like:
.text
.globl exp_fun
.type exp_fun, @function
exp_fun:
ret
.LFE0:
.size exp_fun, .-exp_fun
.globl alias_fun
.set alias_fun,exp_fun
Assembling this on x86 Linux gives object file exporting two symbols: >>>exp_fun and alias_fun. IIUC this behaviour is wanted by C++
compiler.
Alpha VMS needs more complicated function definition. And more >>>important: '.set alias_fun,exp_fun' causes assembler message
about wrong syntax.
In DEC assembler '=' apparently gives effect that you describe:
new name is not exported. In DEC assembler '==' apparently creates
an alias, but as a data symbol. I am not aware of DEC construct
to get effect of '.set' as in x86 Linux example above (but up
to now I did not look into macro manual). So '=' probably is
wrong syntatx, I do not know why gcc uses it.
So the GNU `as` documentation says that `a = e` has the same
semamtics as `.set a, e`. Why isn't the Alpha version exporting
that symbol? I don't know off the top of my head. But it's not
specific to Alpha: my experiments were on x86. My suspcion
is that its because it is not used in the file itself.
GNU assembler has four similar constructs: .set, .eqv, = and ==.
Generically .set is claimed to be the same as =, .eqv is claimed
to be the same as ==. But on some platforms .set and = differ
and Alpha VMS seem to one of such platforms.
I tried now '==' and it is possible that this is needed: using
it I get two text symbols which resolve to the same address.
On ELF-based systems, the linker doesn't care about symbol lengthExcluding the obvious non-printing: '\0'. :-)
anymore.-a You can easily have symbols with 1000s of characters
(including non-printing ones).
The librarian can handle longer names asI don't know if that recently changed, but the ELF librarian's symbol
well, but you have to pick a max-length when creating the OLB.-a The
default may not be large enough for you.
On 8/29/2025 3:14 PM, Arne Vajh|+j wrote:
On 8/29/2025 3:10 PM, Simon Clubley wrote:
On 2025-08-29, Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 2:44 PM, Simon Clubley wrote:
If anyone still has it installed, does the really old GNAT 3.11/3.12p >>>>> use ld or the VMS linker ? I know they used gas, but what about the
final link ?
I have Gnat 3.12p / GCC 2.8.1 installed.
I think it uses LINK.
<quote>
$ gnat make
List of available qualifiers and options
GNAT MAKE file /qualifiers (includes COMPILE /qualifiers)
-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a-a gnatmake
-a-a-a-a ...
-a-a-a-a /LINKER_QUALIFIERS (switches for LINK)-a-a-a-a-a-a-a-a-a-a -largs switches
-a-a-a-a ...
</quote>
It mentions LINK.
Interesting thanks. Does the "ld" binary exist in whatever the binutils
executables directory is ?
If it does, and you run it as a foreign command with "--help", what
output do you get ?
Nothing with ld.
$ dir gnu:[bin]
Directory GNU:[BIN]
AS.EXE;10-a-a-a-a-a-a-a-a-a-a ASISTANT.EXE;1-a-a-a-a-a GCC.EXE;1-a-a-a-a-a-a-a-a-a-a GNAT.EXE;1
GNATBIND.EXE;1-a-a-a-a-a GNATBL.EXE;1-a-a-a-a-a-a-a GNATCHOP.EXE;2
GNATELIM.EXE;1
GNATFIND.EXE;1-a-a-a-a-a GNATKR.EXE;1-a-a-a-a-a-a-a GNATLBR.EXE;1
GNATLINK.EXE;1
GNATLS.EXE;1-a-a-a-a-a-a-a GNATMAKE.EXE;1-a-a-a-a-a GNATMEM.EXE;1
GNATPREP.EXE;1
GNATPSTA.EXE;1-a-a-a-a-a GNATPSYS.EXE;1-a-a-a-a-a GNATSTUB.EXE;1
GNATXREF.EXE;1
MAKE.EXE;260-a-a-a-a-a-a-a OPENVMS7_1-GCC.EXE;1
SET_EXE.COM;11
$ dir gnu:[bin]*ld*.*
%DIRECT-W-NOFILES, no files found
$ link=="XXXX"
$ link
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
-a\XXXX\
$ gnat make hello
gcc -c hello.adb
gnatbind -x hello.ali
gnatlink hello.ali
%DCL-W-IVVERB, unrecognized command verb - check validity and spelling
-a\XXXX\
gnatmake: *** link failed.
Arne
Well, this is part of bigger rather poorly defined project. ATMI am a little curious and have a ton of questions.
I trying to compile gcc-15.1. I first build binutils, then I do
../gcc-15.1.0/configure --enable-languages=c,c++ --target=alpha-dec-vms --prefix=/sklad/usr
make -j 7 > mlogg 2>&1
On 8/29/2025 1:50 PM, Waldek Hebisch wrote:
Well, this is part of bigger rather poorly defined project. ATMI am a little curious and have a ton of questions.
I trying to compile gcc-15.1. I first build binutils, then I do
../gcc-15.1.0/configure --enable-languages=c,c++ --target=alpha-dec-vms --prefix=/sklad/usr
make -j 7 > mlogg 2>&1
Maybe you can't disclose such information, but maybe you can.
You are trying to get GCC 15 on Linux x86-64 to cross-compile
to VMS Alpha.
Is this non-paid volunteer work or is it part of your job
with a commercial aspect?
Are the builtin languages (C, C++, Fortran, Ada) the final
goal or do you just need them to verify everything and then
you need to add support for another language?
If you get VMS Alpha working perfect would you then try with
VMS x86-64?
If you get cross-compilation working prefect would you try
moving compiler to run on VMS?
Arne Vajhoj <arne@vajhoej.dk> wrote:
If you get cross-compilation working prefect would you try
moving compiler to run on VMS?
ATM talking about this is premature. At some moment I will move
to different things and that probably will be before any my attempt
to natively run compilers.
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 1:50 PM, Waldek Hebisch wrote:
Well, this is part of bigger rather poorly defined project. ATMI am a little curious and have a ton of questions.
I trying to compile gcc-15.1. I first build binutils, then I do
../gcc-15.1.0/configure --enable-languages=c,c++ --target=alpha-dec-vms --prefix=/sklad/usr
make -j 7 > mlogg 2>&1
Maybe you can't disclose such information, but maybe you can.
You are trying to get GCC 15 on Linux x86-64 to cross-compile
to VMS Alpha.
Is this non-paid volunteer work or is it part of your job
with a commercial aspect?
That is hobby work.
There are other interesting stuff to try out.Are the builtin languages (C, C++, Fortran, Ada) the final
goal or do you just need them to verify everything and then
you need to add support for another language?
I want to restore another program, for that plain C would be enough.
I have no short/medium time plans to add GCC frontends beyond
what already is in GCC tree.
If you get VMS Alpha working perfect would you then try with
VMS x86-64?
Maybe. At first glance supporting VMS x86-64 should be easy as
x86-64 instruction set is supported quite well in gcc and object
file format (ELF) has very good support too. But there are
proprietary changes/extentions to the objcet format and very
little documentation about such changes (there is calling standard
document).
If you get cross-compilation working prefect would you try
moving compiler to run on VMS?
ATM talking about this is premature. At some moment I will move
to different things and that probably will be before any my attempt
to natively run compilers.
On 2025-09-12, Waldek Hebisch <antispam@fricas.org> wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
If you get cross-compilation working prefect would you try
moving compiler to run on VMS?
ATM talking about this is premature. At some moment I will move
to different things and that probably will be before any my attempt
to natively run compilers.
If I had got that far, natively run compilers wasn't a major interest
for me either.
I've a lot of hobbyist experience with embedded boards/systems
(including bringing up my own BSPs, board/MCU initialisation/startup
code, etc) and I was tending to think of VMS as just another embedded
device when doing this.
IOW, do the development and building on Linux in a rich environment
and then just push the final executables, etc, to the VMS system.
On 9/12/2025 8:03 AM, Waldek Hebisch wrote:
Arne Vajh|+j <arne@vajhoej.dk> wrote:
On 8/29/2025 1:50 PM, Waldek Hebisch wrote:
Well, this is part of bigger rather poorly defined project. ATMI am a little curious and have a ton of questions.
I trying to compile gcc-15.1. I first build binutils, then I do
../gcc-15.1.0/configure --enable-languages=c,c++ --target=alpha-dec-vms --prefix=/sklad/usr
make -j 7 > mlogg 2>&1
Maybe you can't disclose such information, but maybe you can.
You are trying to get GCC 15 on Linux x86-64 to cross-compile
to VMS Alpha.
Is this non-paid volunteer work or is it part of your job
with a commercial aspect?
That is hobby work.
So no problem releasing all changes.
Most (maybe all) will of course still be GPL.