Debugging tools
Debugging tools
The z/OS operating system licenced to Winsopia under the ICA includes diagnostic and error-correction (“debugging”) tools which facilitate in depth analysis of software as it executes on an IBM mainframe. In addition, there are commercially available tools which perform similar debugging functions.
Such tools include the LIST option within the compiler, which, if specified, will cause the compiler to emit a document known as a compiler listing, which contains information about the compilation of a given source file, such as an assembly code representation of the machine instructions that the compiler would generate for the program, and the options that were passed to the compiler.
Likewise, an assembler listing can produce assembler language source statements and a pseudo-assembly listing from the object code. The reference to pseudo-assembly reflects the fact that the original assembly code is shown but: (i) any comments in the original assembly program will be lost (because they do not form part of the executable content of the program and are discarded during assembly); and (ii) macro expansions created during assembly will not be reversed. IBM documentation states that the assembler language source file and listing can be used for purposes such as program understanding, debugging, and recovery of lost source code.
A “dump” can be used to assist in resolving a problem. If an error occurs during the execution of a program, the DUMP command can be used to display the storage contents in memory at the time of the error, such as which program was executing, where the error occurred and a code for the error. Typically, the information is shown as a hexadecimal representation of the data on the left and a character interpretation on the right of the display.
A “trace” records the processing or flow of a program or transaction as it executes, including network communications, memory content and the interactions between programs and transactions. The trace is saved in memory or exported to an external dataset such as General Tracing Facility (“GTF”). Interactive Problem Control System (“IPCS”), included as part of z/OS, can be used to format, display and analyse traces and dumps.
Other stand-alone products were installed on the Winsopia mainframe that have the capability to disassemble object code, including Colesoft z/XDC. Colesoft z/XDC is a commercially available debugging tool that enables a breakpoint to be set at a specific point in a load module, stopping execution and transferring control to the XDC program. It allows the user to step through the code and examine the execution of each instruction, view data areas and registers, disassemble object code and display dumps of memory in assembler language.
A common feature of the debugging tools available for use with z/OS is that they open a window into the internal implementation of the functions specified in application programs. By analysing the information produced by listings, dumps, traces and other tools, it is possible to deconstruct, not just the input and output of an application program, but also the code inserted at various stages in the process and the sequence of specific steps and instructions forming the internal logic of the operating system.
Mr Swanson agreed in cross-examination that IBM encourages the use of such tools by customers for testing and debugging their programs. Mr Stephens’ evidence was that disassembly of IBM code by debugging tools could be used when resolving problems, such as diagnosing and fixing errors, but that it was rare for customers to do so directly. This is borne out by a cursory read of the published debugging guides. The IBM documentation for using the z/OS DUMP command indicates that it is used at IBM’s request, when the IBM customer service providers are involved in diagnosing and solving a problem; and the IBM documentation for tracing states that the CTRACE facilities are primarily used by IBM service personnel for diagnosing problems.
Mr Swanson and Mr Stephens agreed that it was possible for some of the debugging tools to be used to step through the internal operation of the code, beyond legitimate error diagnosis and correction. It is clear from the documentary evidence recorded in the IBM Corp support portal, that there were limited instances of express or tacit permission given by IBM for a customer to carry out disassembly when seeking help in fixing faults but there was no evidence that this was a widespread practice.
Notwithstanding the fact that the debugging tools could be used for purposes other than error diagnosis and correction, this does not imply permission for such purposes by IBM. It may be legitimate for a person to buy tools, such as screwdrivers, hammers and angle grinders, intended for DIY purposes, from a hardware centre; but that does not implicitly entitle the purchaser to use them to break into the hardware centre or steal a motorcycle in the street.
The limitations on legitimate use of debugging tools are illustrated by the z/OS HLASM Toolkit guide, which includes the following warning about copyright:
“When you use this utility you must be aware of and respect the intellectual property rights of others. You are not authorized to use this utility to disassemble, copy, or create assembly listings or disassembled Assembler Language source code in violation of any contractual or other legal obligation. You are authorized to use this utility only for object code for which you have verified you have the right to perform disassembly.”
It follows that the availability and use of debugging tools, including those distributed by IBM, does not of itself assist in answering the question whether the specific use of tools by Winsopia in this case was prohibited expressly or implicitly by the ICA. It is necessary to consider the details of each allegation in turn to determine whether Winsopia’s activities fell within permitted use on a proper construction of the ICA.
- Heading
- Mrs Justice O’Farrell
- Section II - Background to the dispute
- The SDM
- Hercules
- Neon litigation
- Formation of LzLabs and Winsopia
- The ICA
- SDM development and the clean room procedures
- Launch of the SDM
- Project Eiger
- Further development of the SDM
- Audit request and termination
- Section III - The proceedings
- The Issues
- The factual witnesses
- Section IV - Construction of the ICA
- Approach to construction of the ICA
- Scope of licence
- The ICA Programs
- Customer applications
- Licensed Program Specifications
- Independent software vendors (ISVs)
- Debugging tools
- Restrictions on use of ICA Programs
- Legislative framework
- Berne Convention
- TRIPS
- WIPO
- Software Directive
- Copyright, Designs and Patents Act 1988 (CDPA)
- Applicable legal principles
- Conclusions on ICA
- Section V - Alleged breaches of the ICA
- Disassembly, decompilation and translation
- Item 2: Load Module Decompiler (“the LMD”) (Paragraph 11.2 of the Technical Particulars)
- Item 3: CICS Control Blocks Document (Paragraph 11.3 of the Technical Particulars)
- Item 4: EXEC DLI (Paragraphs 27.18 & 28.19 of RRRAPOC)
- Item 5: IBM Binder Software (Paragraph 11.4 of the Technical Particulars)
- Compiler listings – summary of the dispute
- Item 6: IGZCIVL COBOL runtime module (Paragraph 11.6 of the Technical Particulars)
- Item 7: CICS Translators (Paragraph 20.1-2 of the Technical Particulars)
- Item 8: Floating point rounding rules (Paragraph 20.3 of the Technical Particulars)
- Item 9: IBM PL/1 compiler (Paragraph 20.4 of the Technical Particulars & Paragraph 27 of the POC)
- Item 10: XML Parse statements (Paragraphs 33-38 of the Technical Particulars)
- Item 11: COBOL initialisation, branching and I/O declaratives (Paragraphs 27.4&27.5 RRRAPOC)
- Item 12: PL/I Condition handling (Paragraphs 27.10-27.12 of RRRAPOC)
- Reverse engineering through the systematic use of traces, dumps, slip traps, packet sniffing and other debugging tools techniques – summary of the dispute
- Item 13: CICS-to-CICS communications (Paragraph 28.1 of the Technical Particulars)
- Item 14: AMBLIST analysis of CICS Stubs (Paragraph 28.2 of the Technical Particulars)
- Item 15: Colesoft z/XDC and COBOL initialisation (Paragraph 28.3 of the Technical Particulars)
- Item 16: XDC and IMS (Paragraph 28.4 of the Technical Particulars)
- Additional examples
- Item 17: SLIP Traps and CICS (Paragraph 28.5 of the Technical Particulars)
- Item 18: SLIP Traps and COBOL (Paragraph 28.6 of the Technical Particulars)
- Macros and Copybooks - introduction
- Macros (Paragraphs 32.1-32.9 of the Technical Particulars) – summary of the dispute
- Item 19: DR-3246 (Paragraph 32.1 of the Technical Particulars)
- Item 20: DR-10237 (Paragraph 32.2 of the Technical Particulars)
- Item 21: DR-2753 (Paragraph 32.3 of the Technical Particulars)
- Item 22: DR-2771 (Paragraph 32.4 of the Technical Particulars)
- Item 23: DR-2796 (Paragraph 32.5 of the Technical Particulars)
- Item 24: DR-3280 (Paragraph 32.6 of the Technical Particulars)
- Item 25: DR-4281 (Paragraph 32.7 of the Technical Particulars)
- Item 26: DR-4322 (Paragraph 32.8 of the Technical Particulars)
- Item 27: DR-0847 (Paragraph 32.9 of the Technical Particulars)
- Macros - discussion
- Copybooks (Paragraphs 2.1.1.3 and 32.10-32.12 of the Technical Particulars) – nature of the dispute
- Item 28: DR-715 (Paragraph 32.10 of the Technical Particulars)
- Item 29: DR-753 (Paragraph 32.11 of the Technical Particulars)
- Item 30: DR-756 (Paragraph 2.1.1.3 of the Technical Particulars)
- Copybooks - discussion
- Transferring “unscrubbed” materials
- Item 31:Epiphany
- Item 32: Db2 Catalog table metadata
- Item 33: DSS dump
- Item 34: Kednos
- Item 35: CSECTs deliberately omitted from scrubbing
- Items 36 and 42: Unscrubbed CSECTs
- Items 37 and 40: IMS PROCLIB & DLIBATCH
- Item 38: DFHEI1 module
- Item 39: IGZXANE
- Item 41: IGZXNE3N
- Item 43: CEEBETBL, CEEBLLST, IBMPINPL & CEESG*
- Item 44: DR-4617
- Item 45: DR-171
- Item 46: Scrubbing failures
- Item 47: @@TRGLOC CSECT
- Item 48: PARMLIB & PROCLIB
- Use outside Enterprise and beyond Designated Machine
- Item 49: Brad Taylor (Paragraph 44.2 of the Technical Particulars)
- Item 50: Winsopia Pizzabox (Paragraph 44.5 of the Technical Particulars)
- Item 51: Justin Bendich (Paragraph 44.6 of the Technical Particulars)
- Conclusions on technical breaches
- Section VI - Wrongful procurement of breach
- Applicable legal principles
- LzLabs
- LzLabs UK
- Claims against the directors
- Mr Moores
- Summary on unlawful procurement
- Section VII - Unlawful means conspiracy
- Applicable legal principles
- Knowledge of unlawfulness
- Summary on unlawful means conspiracy
- Section VIII – Audit and Termination
- Validity of audit request
- Validity of termination
- Section IX - Limitation
- Contractual limitation
- Statutory Limitation
- Deliberate concealment
- Finding - section 32(1)(b)
- Finding - Section 32(2)
- Actual or constructive knowledge – legal principles
- Date of knowledge issues
- ICA 2013
- Mr Knight - 2017
- Mr Anzani - 2018
- Conclusions
![HT-2021-000363 - [2025] EWHC 532 (TCC)](https://backend.juristeca.com/files/emisores/logo_yJUntHA.png)