Sorry. CHANGE. Looked right at it and typed RENAME. I believe order of statements is that CHANGE applies to what has come before. Ah. Read the fine manual. You want
CHANGE AX(AXMINUS) Right *before* the include for the old AX module: "Placement: In the job stream or input data set, the CHANGE control statement must be placed before either the module containing the external symbol to be changed, or the INCLUDE control statement specifying the module. The scope of the CHANGE statement is across the next object module, load module, or program object. However if the -IMMED option is specified, the CHANGE control statement should be placed anywhere after the module being changed, or the INCLUDE statement specifying the module." Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Steve Smith Sent: Wednesday, April 15, 2020 1:32 PM To: [email protected] Subject: Re: Linkage editor question: renaming duplicate entry points I think I'd be unlikely to get it right on the first try. I had never even heard of the "RENAME" statement, but it exists, alongside the venerable "CHANGE" statement. I don't presently have the time to sort that out. And the required order of statements is sometimes surprising. Nevertheless, I'm sure it's doable. sas On Wed, Apr 15, 2020 at 4:12 PM Charles Mills <[email protected]> wrote: > So every call to AX would instead call an entrypoint within a new module > (except for one call from within that new module, which would call the old > AX)? > > Yes, I think binder RENAME can do that. > > Code the new module to with a hard-coded entry of AX and an internal call > to > AXMINUS. No point in making that part difficult. > > Include the old AX. Follow that with RENAME AX(AXMINUS) > > Then Include the new module and everything else and link as normal. > > I think that is close at least. May require some tweaking. > > Charles > > > -----Original Message----- > From: IBM Mainframe Discussion List [mailto:[email protected]] On > Behalf Of Phil Smith III > Sent: Wednesday, April 15, 2020 12:44 PM > To: [email protected] > Subject: Linkage editor question: renaming duplicate entry points > > I have a use case that's reasonable enough that it might be supported, yet > odd enough that I'd be unsurprised if it isn't. > > > > Suppose we have a function called AX that we call. At times it would be > useful to be able to relink a program that calls AX to add a "shim"-let's > call it AXPRIME-between the program and AX. Yet we don't want to change > that > program code, just relink it (or point at a different library and make a > dynamic call to AX). > > > > Ideally, we could tell the linker "OK, load deck AXPRIME [which has entry > point AX defined]; now include deck AX but rename entry point AX in that > deck to AXMINUS". And the AXPRIME code would call AXMINUS to do what AX > usually does. > > > > The alternative-hacking AX itself-is of course possible but undesirable, > because we don't want the shim functionality to be there all the time, as > it > represents a security hole. The shim is added explicitly when needed, so > it's a "your gun, your foot" deal. > > > > Anyone know whether this is possible with IEWL or anything else? > > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > -- sas ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
