From: antispam@fricas.org
hb0815 wrote:
> On 9/10/25 16:13, Waldek Hebisch wrote:
>
>> By default GNU ld also wants to use 'starlet.olb' and
>> 'sys$public_vectors'. I do not know if 'starlet.olb' is a "shared
>> image library" or just static library. IIUC 'sys$public_vectors'
>> is a sharable image. So at least programs that do not use
>> 'starlet.olb' should work after linking with fake shareable
>> images. And I think that this includes a lot of code.
>
> starlet.olb is an OBJECT library.
>
> You can fake the shareable image. You only need to have the very same
> symbol vector entries in the faked image as in the real one. That
> includes all the alias entries as well has spare and private entries.
> And you need to have the identical GSMATCH.
>
> If someone links /system you also need a SYS$BASE_IMAGE.EXE. A faked one
> should do, but I admit I never tried that.
I have made a simple-minded generator of fake shared libraries.
Using fake 'DECC$SHR.exe' containing just 5 real symbols (and
hundreds of dummies to fill unused positions in symbol vector)
I managed to link on Linux a simple "Hello from VMS" program
and the program run correctly on VMS.
I still have a problem: ATM I do not know how access to variables in
shared images works. So I have bogus reference to 'C$_EXIT1'.
I have noticed that VMS linker inserts reference to 'LIB$INITIALIZE',
while with my fake libraries GNU linker does not reference this
function.
--
Waldek Hebisch
--- SoupGate-Win32 v1.05
* Origin: you cannot sedate... all the things you hate (1:229/2)
|