
HP OpenVMS Migrating an Application from OpenVMS VAX to OpenVMS I64 May 2006 This manual describes how to create an HP OpenVMS Industry Standard 64 for Integrity Servers (I64) version of an OpenVMS VAX application. Revision/Update Information: This is a new manual. Software Version: OpenVMS I64 Version 8.2 and higher OpenVMS VAX Version 6.1 and higher Hewlett-Packard Company Palo Alto, California © Copyright 2006 Hewlett-Packard Development Company, L.P. Confidential computer software. Valid license from HP required for possession, use or copying. Consistent with FAR 12.211 and 12.212, Commercial Computer Software, Computer Software Documentation, and Technical Data for Commercial Items are licensed to the U.S. Government under vendor’s standard commercial license. The information contained herein is subject to change without notice. The only warranties for HP products and services are set forth in the express warranty statements accompanying such products and services. Nothing herein should be construed as constituting an additional warranty. HP shall not be liable for technical or editorial errors or omissions contained herein. Intel and Itanium are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries. UNIX is a registered trademark of The Open Group. This document was prepared using DECdocument, Version 3.3-1b. Contents Preface ............................................................ ix 1 Overview of the Migration Process 1.1 Compatibility of VAX and I64 Systems ........................... 1–1 1.2 User-Written Device Drivers . ................................ 1–3 1.3 Migration Process . ........................................ 1–4 1.4 Migration Paths ............................................. 1–4 1.5 Migration Support from HP .................................... 1–5 1.5.1 Migration Assessment Service ............................... 1–6 1.5.2 Application Migration Detailed Analysis and Design Service . ....... 1–6 1.5.3 System Migration Detailed Analysis and Design Service ........... 1–6 1.5.4 Application Migration Service ............................... 1–6 1.5.5 System Migration Service . ................................ 1–6 2 Selecting a Migration Method 2.1 Taking Inventory ............................................ 2–1 2.2 How to Select a Migration Method ............................... 2–2 2.3 Which Migration Methods are Possible? . ....................... 2–3 2.4 Deciding Whether to Recompile or Translate ....................... 2–5 2.4.1 Translating Your Application ................................ 2–8 2.4.2 Combining Native and Translated Images ...................... 2–8 2.5 Coding Practices That Affect Recompilation . ....................... 2–9 2.5.1 VAX MACRO Assembly Language ............................ 2–10 2.5.2 Privileged Code . ........................................ 2–10 2.5.3 Features Specific to the VAX Architecture ...................... 2–11 2.6 Identifying Dependencies on the VAX Architecture in Your Application . 2–11 2.6.1 Data Alignment . ........................................ 2–11 2.6.2 Floating-Point Arithmetic . ................................ 2–12 2.6.3 Data Types .............................................. 2–13 2.6.4 Shared Access to Data ..................................... 2–14 2.6.5 Page Size Considerations . ................................ 2–15 2.6.6 Order of Read/Write Operations on Multiprocessor Systems . ....... 2–16 2.6.7 Explicit Reliance on the VAX Procedure Calling Standard . ....... 2–16 2.6.8 Explicit Reliance on VAX Exception-Handling Mechanisms . ....... 2–17 2.6.8.1 Establishing a Dynamic Condition Handler . ............... 2–17 2.6.8.2 Accessing Data in the Signal and Mechanism Arrays . ....... 2–18 2.6.9 Modification of the VAX AST Parameter List .................... 2–18 2.6.10 Explicit Dependency on the Form and Behavior of VAX Instructions ............................................. 2–18 2.6.11 Generation of VAX Instructions at Run Time .................... 2–19 2.7 Identifying Incompatibilities Between VAX and I64 Systems ........... 2–19 iii 3 Migrating Your Application 3.1 Setting Up the Migration Environment ........................... 3–1 3.1.1 Hardware . ............................................ 3–1 3.1.2 Software ................................................ 3–2 3.2 Converting Your Application ................................... 3–3 3.2.1 Recompiling and Relinking ................................. 3–3 3.2.1.1 Native I64 Compilers ................................... 3–3 3.2.1.2 VAX MACRO–32 Compiler for OpenVMS I64 ................ 3–4 3.2.1.3 I64 Development Tools .................................. 3–5 3.2.2 Translating . ............................................ 3–6 3.3 Analyzing System Crashes . .................................... 3–6 3.3.1 System Dump Analyzer ................................... 3–6 3.3.2 Crash Log Utility Extractor ................................. 3–7 3.4 Testing Applications on VAX for Baseline Information ................ 3–7 3.5 Testing the Migrated Application ................................ 3–8 3.5.1 VAX Tests Ported to I64 .................................... 3–8 3.5.2 New I64 Tests ........................................... 3–8 3.5.3 Uncovering Latent Bugs ................................... 3–8 3.6 Integrating the Migrated Application into a Software System .......... 3–9 3.7 Modifying Certain Types of Code ................................ 3–9 3.7.1 Conditionalized Code . .................................... 3–9 3.7.1.1 MACRO Sources . .................................... 3–9 3.7.1.2 BLISS Sources ........................................ 3–10 3.7.1.3 C Sources ............................................ 3–10 3.7.1.4 Existing Conditionalized Code ............................ 3–11 3.7.2 System Services with VAX Architecture Dependencies . ........... 3–11 3.7.2.1 SYS$GOTO_UNWIND .................................. 3–12 3.7.2.2 SYS$LKWSET and SYS$LKWSET_64 . ................... 3–12 3.7.3 Code with Other Dependencies on the VAX Architecture ........... 3–12 3.7.3.1 Initialized Overlaid Program Sections . ................... 3–12 3.7.3.2 Condition Handler Use of SS$_HPARITH ................... 3–12 3.7.3.3 Mechanism Array Data Structure ......................... 3–12 3.7.3.4 Reliance on VAX Object File Format ....................... 3–12 3.7.4 Code That Uses Floating-Point Data Types . ................... 3–13 3.7.4.1 LIB$WAIT Problem and Solution .......................... 3–14 3.7.5 Incorrect Command Table Declaration ......................... 3–15 3.7.6 Code That Uses Threads ................................... 3–15 3.7.6.1 Thread Routines cma_delay and cma_time_get_expiration . 3–16 3.7.7 Code with Unaligned Data .................................. 3–17 3.7.8 Code That Relies on the OpenVMS VAX Calling Standard ......... 3–18 3.7.9 Privileged Code .......................................... 3–18 3.7.9.1 Use of SYS$LKWSET and SYS$LKWSET_64 ................ 3–18 3.7.9.2 Use of SYS$LCKPAG and SYS$LCKPAG_64 ................. 3–19 3.7.9.3 Terminal Drivers . .................................... 3–19 3.7.9.4 Protected Image Sections ................................ 3–19 4 Overview of Recompiling and Relinking 4.1 Compiling Applications on VAX With Current Compiler Version ........ 4–1 4.2 Recompiling Your Application with Native I64 Compilers . ........... 4–2 4.3 Relinking Your Application on an I64 System . ................... 4–2 4.4 Compatibility Between the Mathematics Libraries Available on VAX and I64 Systems ................................................ 4–6 4.5 Determining the Host Architecture . ............................ 4–6 iv 5 Adapting Applications to a Larger Page Size 5.1 Overview . ................................................ 5–1 5.1.1 Compatibility Features .................................... 5–1 5.1.2 Summary of Memory Management Routines with Potential Page-Size Dependencies ............................................ 5–2 5.2 Examining Memory Allocation Routines . ....................... 5–6 5.2.1 Allocating Memory in Expanded Virtual Address Space ........... 5–6 5.2.2 Allocating Memory in Existing Virtual Address Space ............. 5–8 5.2.3 Deleting Virtual Memory . ................................ 5–9 5.3 Examining Memory Mapping Routines ........................... 5–10 5.3.1 Mapping into Expanded Virtual Address Space . ............... 5–10 5.3.2 Mapping a Single Page to a Specific Location ................... 5–12 5.3.3 Mapping into a Defined Address Range . ....................... 5–13 5.3.4 Mapping from an Offset into a Section File ..................... 5–19 5.4 Obtaining the Page Size at Run Time ............................ 5–20 5.5 Locking Memory in the Working Set ............................. 5–21 6 Preserving the Integrity of Shared Data 6.1 Overview . ................................................ 6–1 6.1.1 VAX Architectural Features That Guarantee Atomicity ............ 6–1 6.1.2 Intel Itanium Compatibility Features . ....................... 6–2 6.2 Uncovering Atomicity Assumptions in Your Application .............. 6–3 6.2.1 Protecting Explicitly Shared Data ............................ 6–4 6.2.2 Protecting Unintentionally Shared Data ....................... 6–8 6.3 Synchronizing Read/Write Operations ............................ 6–9 6.4 Ensuring Atomicity in Translated Images . ....................... 6–10 7 Checking the Portability of Application Data Declarations 7.1 Overview . ...............................................
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages162 Page
-
File Size-