Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 27 |
Nodes: | 6 (0 / 6) |
Uptime: | 38:51:32 |
Calls: | 631 |
Calls today: | 2 |
Files: | 1,187 |
D/L today: |
23 files (29,781K bytes) |
Messages: | 174,060 |
Now about troubles. VMS C functions use different name at C level
and different in libraries. Moreover, while offically function is
available in "imagelib.olb", actual function is in a different library
and this library is needed for succesful linking. So, one needs
to know real name of a given function and teach gcc to use it.
As I wrote in another post I am trying to compile cress gcc
targeting Alpha VMS. In a sense I am in similar situation as
Simon. But I think I made some progress and I collected some
information.
On 9/29/25 18:17, Waldek Hebisch wrote:
Now about troubles.-a VMS C functions use different name at C level
and different in libraries.-a Moreover, while offically function is
available in "imagelib.olb", actual function is in a different library
and this library is needed for succesful linking.-a So, one needs
to know real name of a given function and teach gcc to use it.
Yes, for example, printf in the source code is changed-a to DECC$GXPRINTF
in the object module. DECC$GXPRINTF is a symbol in the shareable image library IMAGELIB.OLB. Symbols in a library must be unique. That explains
the DECC$ prefix. I don't know what the GX means or where it comes from.
I also don't know where the mapping/replacement table is.
IMAGELIB.OLB contains only the symbol and a link to the shareable image.
The actual code (and data) is in the shareable image, not in a library.
So if you link using IMAGELIB.OLB you link with DECC$SHR. At least on
Alpha, the symbol DECC$GXPRINTF is also in STARLET.OLB. By default this
OLB is not used, by default you dynamically link and not statically. Do
a link on VMS/Alpha with a map file. In the map you will only see
DECC$SHR, no STARLET.OLB and no IMAGELIB.OLB.
On 9/29/25 18:17, Waldek Hebisch wrote:
Now about troubles. VMS C functions use different name at C level
and different in libraries. Moreover, while offically function is
available in "imagelib.olb", actual function is in a different library
and this library is needed for succesful linking. So, one needs
to know real name of a given function and teach gcc to use it.
Yes, for example, printf in the source code is changed to DECC$GXPRINTF
in the object module. DECC$GXPRINTF is a symbol in the shareable image library IMAGELIB.OLB. Symbols in a library must be unique. That explains
the DECC$ prefix. I don't know what the GX means or where it comes from.
I also don't know where the mapping/replacement table is.
IMAGELIB.OLB contains only the symbol and a link to the shareable image.
The actual code (and data) is in the shareable image, not in a library.
So if you link using IMAGELIB.OLB you link with DECC$SHR. At least on
Alpha, the symbol DECC$GXPRINTF is also in STARLET.OLB. By default this
OLB is not used, by default you dynamically link and not statically.
Do
a link on VMS/Alpha with a map file. In the map you will only see
DECC$SHR, no STARLET.OLB and no IMAGELIB.OLB.
On 9/29/25 18:17, Waldek Hebisch wrote:
Now about troubles.-a VMS C functions use different name at C level
and different in libraries.-a Moreover, while offically function is
available in "imagelib.olb", actual function is in a different library
and this library is needed for succesful linking.-a So, one needs
to know real name of a given function and teach gcc to use it.
Yes, for example, printf in the source code is changed-a to DECC$GXPRINTF
in the object module. DECC$GXPRINTF is a symbol in the shareable image library IMAGELIB.OLB. Symbols in a library must be unique. That explains
the DECC$ prefix. I don't know what the GX means or where it comes from.
I also don't know where the mapping/replacement table is.
IMAGELIB.OLB contains only the symbol and a link to the shareable image.
The actual code (and data) is in the shareable image, not in a library.
So if you link using IMAGELIB.OLB you link with DECC$SHR. At least on
Alpha, the symbol DECC$GXPRINTF is also in STARLET.OLB. By default this
OLB is not used, by default you dynamically link and not statically. Do
a link on VMS/Alpha with a map file. In the map you will only see
DECC$SHR, no STARLET.OLB and no IMAGELIB.OLB.
In article <10bebe4$2m4ru$1@paganini.bofh.team>, antispam@fricas.org
(Waldek Hebisch) wrote:
As I wrote in another post I am trying to compile cress gcc
targeting Alpha VMS. In a sense I am in similar situation as
Simon. But I think I made some progress and I collected some
information.
This is excellent work. I can't make any immediate use of it, but it's
great to see it happening.
On 9/29/2025 4:48 PM, John Dallman wrote:
In article <10bebe4$2m4ru$1@paganini.bofh.team>, antispam@fricas.org
(Waldek Hebisch) wrote:
As I wrote in another post I am trying to compile cress gcc
targeting Alpha VMS.-a In a sense I am in similar situation as
Simon.-a But I think I made some progress and I collected some
information.
This is excellent work. I can't make any immediate use of it, but it's
great to see it happening.
Yes.
Very much.
VMS need people doing something with VMS today - not people
that "know" what DEC should have done 40 years ago.
Arne
On 9/29/25 3:01 PM, hb0815 wrote:
On 9/29/25 18:17, Waldek Hebisch wrote:
Now about troubles.-a VMS C functions use different name at C level
and different in libraries.-a Moreover, while offically function is
available in "imagelib.olb", actual function is in a different library
and this library is needed for succesful linking.-a So, one needs
to know real name of a given function and teach gcc to use it.
Yes, for example, printf in the source code is changed-a to
DECC$GXPRINTF in the object module. DECC$GXPRINTF is a symbol in the
shareable image library IMAGELIB.OLB. Symbols in a library must be
unique. That explains the DECC$ prefix. I don't know what the GX means
or where it comes from. I also don't know where the mapping/
replacement table is.
IMAGELIB.OLB contains only the symbol and a link to the shareable
image. The actual code (and data) is in the shareable image, not in a
library. So if you link using IMAGELIB.OLB you link with DECC$SHR. At
least on Alpha, the symbol DECC$GXPRINTF is also in STARLET.OLB. By
default this OLB is not used, by default you dynamically link and not
statically. Do a link on VMS/Alpha with a map file. In the map you
will only see DECC$SHR, no STARLET.OLB and no IMAGELIB.OLB.
Surely GXPRINTF knows how to format G_FLOAT numbers and there would be
other versions for X_FLOAT, D_FLOAT, etc.?
On 30/09/2025 00:55, Arne Vajh|+j wrote:
On 9/29/2025 4:48 PM, John Dallman wrote:
In article <10bebe4$2m4ru$1@paganini.bofh.team>, antispam@fricas.org
(Waldek Hebisch) wrote:
As I wrote in another post I am trying to compile cress gcc
targeting Alpha VMS.-a In a sense I am in similar situation as
Simon.-a But I think I made some progress and I collected some
information.
This is excellent work. I can't make any immediate use of it, but it's
great to see it happening.
Yes.
Very much.
VMS need people doing something with VMS today - not people
that "know" what DEC should have done 40 years ago.
Perhaps the OP should post a summary on the VSI forum
In fact, some symbols like C$_EXIT1 and LIB$INITIALIZE seem to come from STARLET.OLB, even when other symbols come from shared images.