Thanks for making my point better than I did in the original post, Chris. The bottom line is if you want to know the name of the calling program, pass it rather than discover it.
The use of "redirection technology" provides numerous benefits to the sophisticated user. Primarily in support of debugging shared code and in filtering unwanted executors of dynamically hooked common system code. Without it all executions of the code by any task in the system is affected by the debugging triggers or the hook mechanism. With it, executions of the code can be filtered so only the desired task(s) act upon the debugging or hooking machinery. For example with a dynamic hook, if you don't use redirection technology and the wrong task executed the hook code you either have to hook the wrong task or abort the hook request entirely leaving the desired task unhooked. Overall redirection technology is a very good thing to have available to you. Chuck Arney Arney Computer Systems zosdebug.com -----Original Message----- From: IBM Mainframe Assembler List [mailto:[email protected]] On Behalf Of Chris Craddock Sent: Monday, July 08, 2013 5:16 PM To: [email protected] Subject: Re: Xpediter debugger tool Vs. CSVQUERY Macro (Agreeing with Dave Cole) Beyond that, the whole idea that you can rationally "know" the identity of the calling program is pretty naive. Load modules are composed of multiple sections, any of which might call any other piece of code anywhere anytime. Throw multiple modules in being called from multiple RBs in multiple tasks and it ought to become obvious that there's just no way to know reliably - and nor should you. Making implicit assumptions about your caller creates code dependencies that will remain undocumented, waiting to bite the unwary. And perfectly innocent new code can/will break at o'dark. If you want to do something special based on "who", then make it an explicit parameter, document the interface and then use it. CC Date: Mon, 8 Jul 2013 11:57:10 -0400 From: [email protected] Subject: Re: Xpediter debugger tool Vs. CSVQUERY Macro To: [email protected] Your expectation needs a change. When running under a debugger you should expect that the return point could be to the debugger's code rather than your own code. I don't know anything about Xpediter or the techniques that it employs, but this would apply to most debuggers including ours. If your code needs to know the name of your program that called it, the only accurate way would be to pass it rather than try and discover it. I just want to point out that this issue does not arise when using z/XDC. As much as possible, z/XDC changes your program's execution environment as little as possible. In particular, it does not use "redirection technology" for anything at all. IHTH, Dave Cole REPLY TO: [email protected] ColeSoft Marketing WEB PAGE: colesoft.com 736 Fox Hollow Road DESK: 540-456-8536 Afton, VA 22920 CELL: 540-456-6518 At 5/30/2013 10:48 AM, Chuck Arney wrote: If you are using the return address (R14) in your code to determine the name of the calling module, I believe it could frequently be something you did not expect when your code is running under a debugger. Debuggers often use redirection technology of one sort or another to maintain control over the code being debugged. It is a required part of the job. Your expectation needs a change. When running under a debugger you should expect that the return point could be to the debugger's code rather than your own code. I don't know anything about Xpediter or the techniques that it employs, but this would apply to most debuggers including ours. If your code needs to know the name of your program that called it, the only accurate way would be to pass it rather than try and discover it. Chuck Arney Arney Computer Systems zosdebug.com -----Original Message----- From: IBM Mainframe Assembler List [ mailto:[email protected]] On Behalf Of Alexandre Franke Sent: Wednesday, May 29, 2013 10:31 PM To: [email protected] Subject: Xpediter debugger tool Vs. CSVQUERY Macro Hello ! We have an assembler subroutine that invokes CSVQUERY macro in order to get its caller program name, but when running it under Xpediter, it doesn't work. It seems the addresses CSVQUERY look for are messed up... Does anyone know how CSVQUERY results could be changed when testing under Xpediter debugging session? Thank you, Alexandre Franke
