Re: Fun trick

Liste des GroupesRevenir à co vms 
Sujet : Re: Fun trick
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vms
Date : 13. Jan 2025, 19:45:50
Autres entêtes
Organisation : SunSITE.dk - Supporting Open source
Message-ID : <67855f5f$0$714$14726298@news.sunsite.dk>
References : 1 2 3 4 5 6
User-Agent : Mozilla Thunderbird
On 1/9/2025 8:01 AM, hb0815 wrote:
On 1/9/25 02:00, Arne Vajhøj wrote:
Hmmm.
>
It works in C, but it does not seem to work in
any other language (tested with Pascal and Fortran).
...
I assume the difference relates to user code main not being
the real program entry.
 So, make it a main entry.
 This is on Alpha. It should work on IA64 and x86. I don't have access to any of the latter systems. If this does not work on these systems, I know how to make it work, anyway.
 $ gdiff -ub lib.pas-orig lib.pas

$ gdiff -ub lib.for-orig lib.for

Also, I should have mentioned ... Your shareable with printing a message from init code can not be used as a "normal" shareable image. The message will always be printed. That's probably not what you want.
 >
 > Init code of an image is always run. For a shareable image it is run at
 > activation time, for a main image it is run at image startup time. For
 > some reasons I distinguish these two phases although others prefer to
 > say that "startup" is part of activation.
 >
 > My shareable image only prints its message if a user (accidently) runs
 > it as main image.
My Pascal code a few revisions back looked like:
    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;
Maybe not elegant, but it did check.

All this works because VMS defines a weak transfer (or entry) address. The C compiler in absence of a "main" assigns this weak transfer to the first function seen in a source module. (I admit, I initially didn't test this with other compilers; obviously FORTRAN and PASCAL do not define this). The linker keeps track of the first weak transfer it encounters and uses it as image transfer, if there is no "strong" transfer, in C no "main". This makes the shareable image "runnable".
There are probably a lot of shareable images written in C out
there where the developer has no idea that they are runnable or
what code will run.
Arne

Date Sujet#  Auteur
8 Jan 25 * Fun trick39Arne Vajhøj
8 Jan 25 +- Re: Fun trick1Lawrence D'Oliveiro
8 Jan 25 +* Re: Fun trick11John Reagan
8 Jan 25 i`* Re: Fun trick10Arne Vajhøj
8 Jan 25 i `* Re: Fun trick9John Reagan
8 Jan 25 i  +* Re: Fun trick2Arne Vajhøj
8 Jan 25 i  i`- Re: Fun trick1Arne Vajhøj
8 Jan 25 i  `* Re: Fun trick6Arne Vajhøj
14 Jan 25 i   `* Re: Fun trick5John Reagan
14 Jan 25 i    `* Re: Fun trick4Lawrence D'Oliveiro
14 Jan 25 i     `* Re: Fun trick3Arne Vajhøj
14 Jan 25 i      +- Re: Fun trick1Arne Vajhøj
15 Jan 25 i      `- Re: Fun trick1John Reagan
8 Jan 25 `* Re: Fun trick26hb0815
8 Jan 25  `* Re: Fun trick25Arne Vajhøj
8 Jan 25   `* Re: Fun trick24hb0815
9 Jan 25    `* Re: Fun trick23Arne Vajhøj
9 Jan 25     `* Re: Fun trick22hb0815
13 Jan 25      +* Re: Fun trick11Arne Vajhøj
17 Jan 25      i`* GNU diff command, was: Re: Fun trick10Simon Clubley
17 Jan 25      i `* Re: GNU diff command, was: Re: Fun trick9Craig A. Berry
17 Jan 25      i  `* Re: GNU diff command, was: Re: Fun trick8Craig A. Berry
19 Jan 25      i   `* Re: GNU diff command, was: Re: Fun trick7hb0815
21 Jan 25      i    `* Re: GNU diff command, was: Re: Fun trick6Craig A. Berry
22 Jan 25      i     `* Re: GNU diff command, was: Re: Fun trick5hb0815
22 Jan 25      i      `* Re: GNU diff command, was: Re: Fun trick4Lawrence D'Oliveiro
23 Jan 25      i       `* Re: GNU diff command, was: Re: Fun trick3Robert A. Brooks
24 Jan 25      i        `* Re: GNU diff command, was: Re: Fun trick2Simon Clubley
25 Jan 25      i         `- Re: GNU diff command, was: Re: Fun trick1Dave Froble
13 Jan 25      `* Re: Fun trick10Arne Vajhøj
13 Jan 25       `* Re: Fun trick9Lawrence D'Oliveiro
13 Jan 25        `* Re: Fun trick8Arne Vajhøj
14 Jan 25         +* Re: Fun trick6John Reagan
14 Jan 25         i`* Re: Fun trick5Arne Vajhøj
3 Feb 25         i +- Cobol (was Re: Fun trick)1Arne Vajhøj
3 Feb 25         i `* Re: Fun trick3Arne Vajhøj
3 Feb 25         i  `* Cobol (was: Re: Fun trick)2Arne Vajhøj
5 Feb 25         i   `- Re: Cobol1Arne Vajhøj
14 Jan 25         `- Re: Fun trick1Lawrence D'Oliveiro

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal