home bbs files messages ]

Just a sample of the Echomail archive

COMPOSVM:

<< oldest | < older | list | newer > | newest >> ]

 Message 262,216 of 264,034 
 John Reagan to All 
 Re: Fun trick 
 08 Jan 25 12:37:44 
 
From: johnrreagan@earthlink.net

On 1/7/2025 8:58 PM, Arne Vajhøj wrote:
> During some troubleshooting over at VSI forum hb told me that
> running a shareable image will execute LIB$INITIALIZE
> functions.
>
> That made me write this:
>
> $ type lib.pas
> [inherit('sys$library:pascal$lib_routines', 'sys$library:starlet')]
> module lib(input, output);
>
> [global]
> procedure check;
>
> var
>     imgnam : varying [1024] of char;
>
> begin
>     lib$getjpi(item_code := jpi$_imagname, resultant_string :=
> imgnam.body, resultant_length := imgnam.length);
>     if index(imgnam, ']libshr.EXE') > 0 then begin
>        writeln('This is a shareable image to link against not run');
>        $exit(ss$_normal);
>     end;
> end;
>
> [global]
> procedure say;
>
> begin
>     writeln('Hi');
> end;
>
> end.
> $ type prg.pas
> program prg(input,output);
>
> [external]
> procedure say; external;
>
> begin
>     say;
> end.
> $ type trick.mar
>          .title  trick
>          .extrn  lib$initialize
>          .psect  lib$initialize long,nopic,con,gbl,noshr,noexe,nowrt
>          .address check
>          .end
> $ macro trick
> $ pas lib
> $ link/share=libshr lib + trick + sys$input/opt
> SYMBOL_VECTOR=(say=PROCEDURE)
> $
> $ define/nolog libshr sys$disk:[]libshr
> $ pas prg
> $ link prg + sys$input/opt
> libshr/share
> $
> $ run prg
> Hi
> $ run libshr
> This is a shareable image to link against not run
>
> :-)
>
> Arne
>
Pascal has an [INITIALIZE] attribute that you can put on the PROCEDURE
CHECK and the compiler should do the contribution to the LIB$INITIALIZE
PSECT.

And you should include LIB$INITIALIZE (the code module, not the data
PSECT) from STARLET when linking.  The x86 linker will do that for you,
but the Alpha and Itanium linkers do not.

--- SoupGate-DOS v1.05
 * Origin: you cannot sedate... all the things you hate (1:229/2)

<< oldest | < older | list | newer > | newest >> ]


(c) 1994,  bbs@darkrealms.ca