An Infrastructure to Support Interoperability in Reverse Engineering Nicholas Kraft Clemson University, [email protected]

Total Page:16

File Type:pdf, Size:1020Kb

An Infrastructure to Support Interoperability in Reverse Engineering Nicholas Kraft Clemson University, Nkraft@Clemson.Edu Clemson University TigerPrints All Dissertations Dissertations 5-2007 An Infrastructure to Support Interoperability in Reverse Engineering Nicholas Kraft Clemson University, [email protected] Follow this and additional works at: https://tigerprints.clemson.edu/all_dissertations Part of the Computer Sciences Commons Recommended Citation Kraft, Nicholas, "An Infrastructure to Support Interoperability in Reverse Engineering" (2007). All Dissertations. 51. https://tigerprints.clemson.edu/all_dissertations/51 This Dissertation is brought to you for free and open access by the Dissertations at TigerPrints. It has been accepted for inclusion in All Dissertations by an authorized administrator of TigerPrints. For more information, please contact [email protected]. AN INFRASTRUCTURE TO SUPPORT INTEROPERABILITY IN REVERSE ENGINEERING A Dissertation Presented to the Graduate School of Clemson University In Partial Fulfillment of the Requirements for the Degree Doctor of Philosophy Computer Science by Nicholas A. Kraft May 2007 Accepted by: Dr. Brian A. Malloy, Committee Chair Dr. Harold C. Grossman Dr. James F. Power Dr. Roy P. Pargas ABSTRACT An infrastructure that supports interoperability among reverse engineering tools and other software tools is described. The three major components of the infrastruc- ture are: (1) a hierarchy of schemas for low- and middle-level program representation graphs, (2) g4re, a tool chain for reverse engineering C++ programs, and (3) a repos- itory of reverse engineering artifacts, including the previous two components, a test suite, and tools, GXL instances, and XSLT transformations for graphs at each level of the hierarchy. The results of two case studies that investigated the space and time costs incurred by the infrastructure are provided. The results of two empirical evaluations that were performed using the api module of g4re, and were focused on computation of object-oriented metrics and three-dimensional visualization of class template diagrams, respectively, are also provided. DEDICATION For C.R.K and J.H.K. ACKNOWLEDGMENTS I would like to thank my advisor, Dr. Brian Malloy, for his advice, support, and, most of all, friendship. I would also like to thank the members of my committee, especially Dr. James Power. Thanks to Dr. Jason Hallstrom for his help and friendship, and to Dr. Errol Lloyd for his advice and collaboration. Special thanks to Dr. Baker, Dr. Finkbine, Dr. Hollingsworth, Dr. Lang, and Mr. Manwani for preparing and encouraging me, and to Dr. Murali Sitaraman for bringing me to Clemson. I would also like to thank the faculty and staff of the Computer Science department, especially Dr. Grossman and Dr. Westall. A very special thanks to Jay Harris for his support, trust, friendship, and respect. Also, thanks to Ben Hoipkemier for his multiple contributions to this project, to Daniel Lowhorn for being a great teammate, to Andy Dalton and George Dowding for many late night conversations, to Tony Bowles and John Hunt for helping me survive 822, and to Jennifer and Brian for always taking care of me. Finally, I am grateful to all of my family and friends for their love and support, particularly my parents Jane and Bill, my brother Charlie, my wife Christine, my grandparents Carl and Jean, my oldest friends Chris, Jack, and Sue Robinson, my buddy Ringo, and my in-laws the Stemm family. I would also like to thank the many anonymous reviewers who read drafts of this work for providing both insightful comments, and encouraging words. I would also like to thank the College of Engineering and Science, and the Graduate School at Clemson University for the awards in recognition of my research. I am truly honored and humbled to have been the first student from the Department of Computer Science to win these awards. TABLE OF CONTENTS Page TITLE PAGE .................................. i ABSTRACT ................................... iii DEDICATION .................................. v ACKNOWLEDGMENTS ........................... vii LIST OF FIGURES .............................. xi LIST OF SOURCE LISTINGS ....................... xiii LIST OF TABLES ............................... xv 1 Introduction .................................. 1 1.1 Research Problems . 2 1.2 Dissertation Outline . 6 2 Background .................................. 9 2.1 Graph eXchange Language . 9 2.2 Program Representation Graphs . 12 2.2.1 Abstract Syntax Graph . 12 2.2.2 Call Graph . 14 2.2.3 Class Graphs . 14 2.2.4 Control Flow Graphs . 16 3 Related Work ................................. 19 3.1 Exchange Formats and Schemas . 19 3.2 Infrastructures for Reverse Engineering . 21 3.3 Evaluating Results from Reverse Engineering . 23 3.4 Linking in Reverse Engineering Tools . 24 3.5 Tools for Reverse Engineering C++ Programs . 25 3.5.1 Tools that Provide a C++ Parser . 25 3.5.2 Tools that Utilize the GCC C++ Parser . 26 3.6 Discussion . 27 4 Schemas for Low- and Middle-Level Graphs ............. 31 4.1 Hierarchy of Schemas . 31 4.2 Low-Level Schemas: Levels 0 and I . 35 4.3 Middle-Level Schemas: Levels II, III, and IV . 38 4.4 Comparing Schema Instances . 43 Table of Contents (Continued) Page 5 g4re – Tool Chain for Reverse Engineering C++ Programs .... 45 5.1 Architecture . 45 5.1.1 The ASG module . 47 5.1.2 The Schema and Serialization Modules . 48 5.1.3 The Transformation Module . 48 5.1.4 The Linking Module . 49 5.1.5 The API Module . 50 5.2 Sample Usage . 51 5.2.1 Input ............................... 51 5.2.2 Usage . 54 6 Case Studies: Realizing the Infrastructure with g4re ........ 57 6.1 TestSuite................................. 57 6.2 Case Study: Exchanging Low-Level Graphs . 59 6.2.1 Exchanging Graphs at Level 0 . 60 6.2.2 Exchanging Graphs at Level I . 65 6.2.3 Discussion . 70 6.3 Case Study: Exchanging Middle-Level Graphs . 71 6.3.1 Exchanging Graphs at Levels II, III, and IV . 71 6.3.2 Transforming GXL Graphs with XSLT . 73 6.3.3 Discussion . 78 7 Applications: Empirical Evaluation with g4re ............ 79 7.1 Application: Computing Object-Oriented Metrics . 79 7.1.1 Overview . 79 7.1.2 Related Work . 81 7.1.3 Methodology . 83 7.1.4 Case Study . 85 7.2 Application: Visualizing Class Template Diagrams . 91 7.2.1 Overview . 91 7.2.2 Related Work . 93 7.2.3 Methodology . 94 7.2.4 Case Study . 96 8 Conclusion ................................... 101 APPENDICES .................................. 107 A Acronyms and Abbreviations . 109 B Repository of Reverse Engineering Artifacts . 111 BIBLIOGRAPHY ................................ 113 x LIST OF FIGURES Figure Page 2.1 Overview of GXL Validation. The process of validating GXL instance and/or schema graphs Solid edges represent input and output. Dashed edges represent notes. .............. 11 2.2 Sample AST for struct Node. An AST for struct Node, which is defined in Source Listing 2.1. Uses of the types int and Node have not yet been resolved to their definitions. ............ 13 2.3 Sample ASG for struct Node. An ASG for struct Node, which is defined in Source Listing 2.1. Uses of the types int and Node have been resolved to their definitions. ................. 13 4.1 Hierarchy of Schemas. Schemas for program representation graphs organized by levels. Solid edges with open arrows represent input and output. Dashed edges with filled arrows represent realization. Solid edges represent the progression of informa- tion from a graphical representation at one level to a graph- ical representation at a subsequent level. Filled arrows indi- cate a single instance is needed, empty arrows indicate that a set of instances are needed. ...................... 32 4.2 Level I: CppInfo API – Templates. Excerpt from the CppInfo API schema that illustrates the key classes, aggregations, and associations related to templates. .................... 37 4.3 Level I: CppInfo API – Function Types. Excerpt from the Cp- pInfo API schema that illustrates the key classes, aggrega- tions, and associations related to function types. ........... 38 4.4 Level II: Class Diagram. Excerpt from the UML 2.0 schema that illustrates the key class-related components in a class diagram. ................................. 39 4.5 Level II: Class Diagram (continued). Excerpt from the UML 2.0 schema that illustrates the key template-related components in a class diagram. ........................... 40 4.6 Level II: Call Graph. Schema for a call graph, a graph whose nodes represent functions and function call sites, and whose edges represent function calls. ..................... 40 4.7 Level II: Control Flow Graph (CFG). Schema for a CFG, a graph whose nodes represent blocks of straight-line code, and whose edges represent flow of control between the blocks. ...... 41 List of Figures (Continued) Page 4.8 Level III: Object Relation Diagram (ORD). Schema for an ORD, a graph whose nodes represent classes, and whose edges rep- resent relationships, including polymorphic relationships, be- tween the classes. ............................ 42 4.9 Level III: Interprocedural Control Flow Graph (ICFG). Schema for an ICFG, a graph whose nodes represent blocks of straight- line code, and whose edges represent flow of control between the blocks and caller-callee relationships. ............... 42 4.10 Level IV: Class Firewall. Schema for a class firewall, a graph whose nodes represent classes, and whose edges represent testing dependencies between the classes. ............... 43 5.1 Overview of g4re. Dashed lines represent “use” dependencies. Bold text indicates an implementation artifact. Italic text indicates a third party library. .....................
Recommended publications
  • GNU/Linux AI & Alife HOWTO
    GNU/Linux AI & Alife HOWTO GNU/Linux AI & Alife HOWTO Table of Contents GNU/Linux AI & Alife HOWTO......................................................................................................................1 by John Eikenberry..................................................................................................................................1 1. Introduction..........................................................................................................................................1 2. Symbolic Systems (GOFAI)................................................................................................................1 3. Connectionism.....................................................................................................................................1 4. Evolutionary Computing......................................................................................................................1 5. Alife & Complex Systems...................................................................................................................1 6. Agents & Robotics...............................................................................................................................1 7. Statistical & Machine Learning...........................................................................................................2 8. Missing & Dead...................................................................................................................................2 1. Introduction.........................................................................................................................................2
    [Show full text]
  • Abaqus Installation and Licensing Guide
    Abaqus Installation and Licensing Guide Abaqus 6.12 Installation and Licensing Guide Abaqus ID: Printed on: Abaqus Installation and Licensing Guide Abaqus ID: Printed on: Legal Notices CAUTION: This documentation is intended for qualified users who will exercise sound engineering judgment and expertise in the use of the Abaqus Software. The Abaqus Software is inherently complex, and the examples and procedures in this documentation are not intended to be exhaustive or to apply to any particular situation. Users are cautioned to satisfy themselves as to the accuracy and results of their analyses. Dassault Systèmes and its subsidiaries, including Dassault Systèmes Simulia Corp., shall not be responsible for the accuracy or usefulness of any analysis performed using the Abaqus Software or the procedures, examples, or explanations in this documentation. Dassault Systèmes and its subsidiaries shall not be responsible for the consequences of any errors or omissions that may appear in this documentation. The Abaqus Software is available only under license from Dassault Systèmes or its subsidiary and may be used or reproduced only in accordance with the terms of such license. This documentation is subject to the terms and conditions of either the software license agreement signed by the parties, or, absent such an agreement, the then current software license agreement to which the documentation relates. Abaqus software updates are designated by Version, Release, and, if applicable, Maintenance Delivery. Releases are software updates that include enhancements and new functionality. Maintenance Deliveries are software updates that address known issues but generally do not introduce enhancements or new functionality. Abaqus Extended Functionality Releases provide early access to a subset of the new functionality that will be introduced in the next numbered Release.
    [Show full text]
  • Open Thesis Final.Pdf
    The Pennsylvania State University The Graduate School College of Communications EVALUATIO OF FOSS VIDEO GAMES I COMPARISO TO THEIR COMMERCIAL COUTERPARTS A Thesis in Media Studies By Jesse A. Clark © 2008 Jesse A. Clark Submitted in Partial Fulfillment of the Requirements for the Degree of Master of Arts August 2008 ii The thesis of Jesse A. Clark was reviewed and approved* by the following:: John Nichols Professor of Communications Associate Dean for Graduate Studies and Research Matt Jackson Associate Professor of Communications Head of Department of Telecommunications Thesis Advisor Robert Frieden Professor; Pioneers Chair in Telecommunications Ronald Bettig Associate Professor of Communications *Signatures are on file in the Graduate School. iii Abstract The topic of copyrights and copyright law is a crucial component in understanding today's media landscape. The purpose for having a copyright system as outlined in the U.S. Constitution is to provide content creators with an incentive to create. The copyright system allows revenue to be generated through sales of copies of works; thus allowing for works to be created which otherwise would not be created. Yet it is entirely possible that not all large creative projects require the same legal framework as an incentive. The so called “copyleft” movement (which will be defined and explained in depth later) offers an alternative to the industrial mode of cultural production. Superficially, “copylefted” works can be divided into two broad categories: artistic/creative works (which are often protected by “Creative Commons” licenses), and Free/Open Source Software. This thesis evaluates how open source video games compare to their commercial counterparts and discusses the reasons for any difference in overall quality.
    [Show full text]
  • Code Structure by Miklos Vajna Senior Software Engineer at Collabora Productivity 2017-10-11
    LibreOffice: Code Structure By Miklos Vajna Senior Software Engineer at Collabora Productivity 2017-10-11 @CollaboraOffice www.CollaboraOffice.com About Miklos ● From Hungary ● More blurb: http://vmiklos.hu/ ● Google Summer of Code 2010/2011 ● Rewrite of the Writer RTF import/export ● Writer developer since 2012 ● Contractor at Collabora since 2013 LibreOffice Conference 2017, Rome | Miklos Vajna 2 / 30 Thanks ● This is an updated version of Michael Meeks’ talk from last year LibreOffice Conference 2017, Rome | Miklos Vajna 3 / 30 Overview ● Code-base overview ● Internal core modules, internal leaf ● Ignoring externals ● Building / packaging: gnumake, scp2 ● Code organisation, git bits ● Keep in mind: this is a 20 years old code-base ● The quality is much better than you would expect after knowing its age ● Things continue to improve over time LibreOffice Conference 2017, Rome | Miklos Vajna 4 / 30 Module overview lowest level Internal non-leaf modules: UNO modules ● Module = toplevel dir ● make dumps-deps-png ● Each module has a README ● e.g. sal/README ● sal: at the bottom ● The system abstraction layer ● tools is an obsolete internal (more or less) duplication of this ● salhelper: wrapper code around sal, also part of the URE LibreOffice Conference 2017, Rome | Miklos Vajna 6 / 30 What is the Uno Runtime Environment (URE)? ● We’ll come to UNO in detail a bit later, but for now: ● Uno Runtime Environment ● See also JRE, Java Runtime Env. ● Belongs to the idea that UNO would be reused somewhere else ● Provides an API/ABI-stable abstraction layer for the suite URE ● Allows writing C++ extensions ● Modify carefully: ● Should not change the ABI ● ABI control via C .map files LibreOffice Conference 2017, Rome | Miklos Vajna 7 / 30 UNO modules ● store: legacy .rdb format ● registry: UNO type regisistry ● unoidl: a .idl file compiler ● cppu: C++ UNO ● Implements basic UNO types and infrastructure for C++, e.g.
    [Show full text]
  • Ubuntu Unleashed 2013 Edition: Covering 12.10 and 13.04
    Matthew Helmke with Andrew Hudson and Paul Hudson Ubuntu UNLEASHED 2013 Edition 800 East 96th Street, Indianapolis, Indiana 46240 USA Ubuntu Unleashed 2013 Edition Editor-in-Chief Copyright © 2013 by Pearson Education, Inc. Mark Taub All rights reserved. No part of this book shall be reproduced, stored in a retrieval Acquisitions Editor system, or transmitted by any means, electronic, mechanical, photocopying, record- Debra Williams ing, or otherwise, without written permission from the publisher. No patent liability is assumed with respect to the use of the information contained herein. Although every Cauley precaution has been taken in the preparation of this book, the publisher and author Development Editor assume no responsibility for errors or omissions. Nor is any liability assumed for damages resulting from the use of the information contained herein. Michael Thurston ISBN-13: 978-0-672-33624-9 Managing Editor ISBN-10: 0-672-33624-3 Kristy Hart Project Editor The Library of Congress cataloging-in-publication data is on file. Jovana Shirley Printed in the United States of America Copy Editor First Printing December 2012 Charlotte Kughen Trademarks Indexer All terms mentioned in this book that are known to be trademarks or service marks have Angie Martin been appropriately capitalized. Sams Publishing cannot attest to the accuracy of this information. Use of a term in this book should not be regarded as affecting the validity Proofreader of any trademark or service mark. Language Logistics Warning and Disclaimer Technical Editors Every effort has been made to make this book as complete and as accurate as Chris Johnston possible, but no warranty or fitness is implied.
    [Show full text]
  • Minidlna Tweaker : Aplicació Per Configurar I Previsualitzar El Servidor Minidlna Per a GNU/Linux
    MINIDLNA_TWEAKER APLICACIÓ PER A CONFIGURAR I PREVISUALITZAR EL SERVIDOR MiniDLNA PER A LINUX Treball Fi de Carrera Jordi Martínez Lloveras Enginyeria Tècnica en Telecomunicació, especialitat Telemàtica Universitat Oberta de Catalunya (UOC) Tutor acadèmic: Manel Llopart Vidal Juny 2013 MiniDLNA_tweaker, personalitza el teu servidor MiniDLNA El poder compartir una mateixa biblioteca multimèdia disponible per tota la llar i no haver d’estar movent la informació amb dispositius extraïbles o de gravació és un problema que està sent enfocat des de diferents àmbits de la programació i de l’electrònica. Un d’ells les la possibilitat d’instal·lar un servidor al ordinador d’escriptori de la llar per a poder compartir la informació que hi és a dins o que es pot anar descarregant d’Internet. L’aplicació MiniDLNA per a GNU/Linux és un servidor lleuger que compleix els estàndards DLNA/UPnP configurable a traves d’un simple arxiu de text, això la fa ideal per al propòsit esmentat de la implantació d’un servidor que ofereixi els continguts a tots els dispositius que compleixin els estàndards esmentats. Aquest treball ve a emplenar el buit existent que te aquest programari en quant a una eina gràfica que serveixi per a poder controlar d’una manera senzilla i intuïtiva aquest servidor, que al ser part d’un programari més gran destinat a altres tasques, no disposa d’aquesta eina esmentada. L’aplicació MiniDLNA_tweaker desenvolupada en aquest treball emplena aquest buit tot permetent tres aspectes bàsics relacionat amb el servidor: Configurar els seus paràmetres, controlar el seu funcionament i poder escollir la informació multimèdia que s’ofereix d’una manera molt més intuïtiva que l’existent.
    [Show full text]
  • Openbsd Gaming Resource
    OPENBSD GAMING RESOURCE A continually updated resource for playing video games on OpenBSD. Mr. Satterly Updated August 7, 2021 P11U17A3B8 III Title: OpenBSD Gaming Resource Author: Mr. Satterly Publisher: Mr. Satterly Date: Updated August 7, 2021 Copyright: Creative Commons Zero 1.0 Universal Email: [email protected] Website: https://MrSatterly.com/ Contents 1 Introduction1 2 Ways to play the games2 2.1 Base system........................ 2 2.2 Ports/Editors........................ 3 2.3 Ports/Emulators...................... 3 Arcade emulation..................... 4 Computer emulation................... 4 Game console emulation................. 4 Operating system emulation .............. 7 2.4 Ports/Games........................ 8 Game engines....................... 8 Interactive fiction..................... 9 2.5 Ports/Math......................... 10 2.6 Ports/Net.......................... 10 2.7 Ports/Shells ........................ 12 2.8 Ports/WWW ........................ 12 3 Notable games 14 3.1 Free games ........................ 14 A-I.............................. 14 J-R.............................. 22 S-Z.............................. 26 3.2 Non-free games...................... 31 4 Getting the games 33 4.1 Games............................ 33 5 Former ways to play games 37 6 What next? 38 Appendices 39 A Clones, models, and variants 39 Index 51 IV 1 Introduction I use this document to help organize my thoughts, files, and links on how to play games on OpenBSD. It helps me to remember what I have gone through while finding new games. The biggest reason to read or at least skim this document is because how can you search for something you do not know exists? I will show you ways to play games, what free and non-free games are available, and give links to help you get started on downloading them.
    [Show full text]
  • Art-Workbook-V0 84
    Intensity Frontier Common Offline Documentation: art Workbook and Users Guide Alpha Release 0.84 August 18, 2014 This version of the documentation is written for version v0_00_27 of the art-workbook code. Scientific Computing Division Future Programs and Experiments Department Scientific Software Infrastructure Group Principal Author: Rob Kutschke Editor: Anne Heavey art Developers: L. Garren, C. Green, J. Kowalkowski, M. Paterno and P. Russo 1 2 List of Chapters Detailed Table of Contents iv List of Figures xx List of Tables xxii List of Code and Output Listings xxii art Glossary xxvii I Introduction 1 1 How to Read this Documentation 2 2 Conventions Used in this Documentation 4 3 Introduction to the art Event Processing Framework 7 4 Unix Prerequisites 34 5 Site-Specific Setup Procedure 45 i 6 Get your C++ up to Speed 47 7 Using External Products in UPS 107 II Workbook 119 8 Preparation for Running the Workbook Exercises 120 9 Exercise 1: Running Pre-built art Modules 124 10 Exercise 2: Building and Running Your First Module 163 11 General Setup for Login Sessions 220 12 Keeping Up to Date with Workbook Code and Documentation 222 13 Exercise 3: Some other Member Functions of Modules 228 14 Exercise 4: A First Look at Parameter Sets 240 15 Exercise 5: Making Multiple Instances of a Module 265 16 Exercise 6: Accessing Data Products 272 17 Exercise 7: Making a Histogram 291 18 Exercise 8: Looping Over Collections 317 19 3D Event Displays 341 20 Troubleshooting 377 ii III User’s Guide 379 21 Obtaining Credentials to Access Fermilab Computing Resources 380 22 git 382 23 art Run-time and Development Environments 391 24 art Framework Parameters 399 25 Job Configuration in art: FHiCL 405 IV Appendices 424 A art Completion Codes 425 B Viewing and Printing Figure Files 428 C CLHEP 430 D Include Guards 446 V Index 448 Index 449 iii Detailed Table of Contents Detailed Table of Contents iv List of Figures xx List of Tables xxii List of Code and Output Listings xxii art Glossary xxvii I Introduction 1 1 How to Read this Documentation 2 1.1 If you are new to HEP Software..
    [Show full text]
  • Abaqus GUI Toolkit User's Guide
    Abaqus GUI Toolkit User’s Guide ABAQUS 6.14 GUI TOOLKIT USER’S GUIDE Abaqus ID: Printed on: Abaqus GUI Toolkit User’s Guide Abaqus ID: Printed on: Legal Notices CAUTION: This documentation is intended for qualified users who will exercise sound engineering judgment and expertise in the use of the Abaqus Software. The Abaqus Software is inherently complex, and the examples and procedures in this documentation are not intended to be exhaustive or to apply to any particular situation. Users are cautioned to satisfy themselves as to the accuracy and results of their analyses. Dassault Systèmes and its subsidiaries, including Dassault Systèmes Simulia Corp., shall not be responsible for the accuracy or usefulness of any analysis performed using the Abaqus Software or the procedures, examples, or explanations in this documentation. Dassault Systèmes and its subsidiaries shall not be responsible for the consequences of any errors or omissions that may appear in this documentation. The Abaqus Software is available only under license from Dassault Systèmes or its subsidiary and may be used or reproduced only in accordance with the terms of such license. This documentation is subject to the terms and conditions of either the software license agreement signed by the parties, or, absent such an agreement, the then current software license agreement to which the documentation relates. This documentation and the software described in this documentation are subject to change without prior notice. No part of this documentation may be reproduced or distributed in any form without prior written permission of Dassault Systèmes or its subsidiary. The Abaqus Software is a product of Dassault Systèmes Simulia Corp., Providence, RI, USA.
    [Show full text]
  • IT Acronyms.Docx
    List of computing and IT abbreviations /.—Slashdot 1GL—First-Generation Programming Language 1NF—First Normal Form 10B2—10BASE-2 10B5—10BASE-5 10B-F—10BASE-F 10B-FB—10BASE-FB 10B-FL—10BASE-FL 10B-FP—10BASE-FP 10B-T—10BASE-T 100B-FX—100BASE-FX 100B-T—100BASE-T 100B-TX—100BASE-TX 100BVG—100BASE-VG 286—Intel 80286 processor 2B1Q—2 Binary 1 Quaternary 2GL—Second-Generation Programming Language 2NF—Second Normal Form 3GL—Third-Generation Programming Language 3NF—Third Normal Form 386—Intel 80386 processor 1 486—Intel 80486 processor 4B5BLF—4 Byte 5 Byte Local Fiber 4GL—Fourth-Generation Programming Language 4NF—Fourth Normal Form 5GL—Fifth-Generation Programming Language 5NF—Fifth Normal Form 6NF—Sixth Normal Form 8B10BLF—8 Byte 10 Byte Local Fiber A AAT—Average Access Time AA—Anti-Aliasing AAA—Authentication Authorization, Accounting AABB—Axis Aligned Bounding Box AAC—Advanced Audio Coding AAL—ATM Adaptation Layer AALC—ATM Adaptation Layer Connection AARP—AppleTalk Address Resolution Protocol ABCL—Actor-Based Concurrent Language ABI—Application Binary Interface ABM—Asynchronous Balanced Mode ABR—Area Border Router ABR—Auto Baud-Rate detection ABR—Available Bitrate 2 ABR—Average Bitrate AC—Acoustic Coupler AC—Alternating Current ACD—Automatic Call Distributor ACE—Advanced Computing Environment ACF NCP—Advanced Communications Function—Network Control Program ACID—Atomicity Consistency Isolation Durability ACK—ACKnowledgement ACK—Amsterdam Compiler Kit ACL—Access Control List ACL—Active Current
    [Show full text]
  • Release 0.11 Todd Gamblin
    Spack Documentation Release 0.11 Todd Gamblin Feb 07, 2018 Basics 1 Feature Overview 3 1.1 Simple package installation.......................................3 1.2 Custom versions & configurations....................................3 1.3 Customize dependencies.........................................4 1.4 Non-destructive installs.........................................4 1.5 Packages can peacefully coexist.....................................4 1.6 Creating packages is easy........................................4 2 Getting Started 7 2.1 Prerequisites...............................................7 2.2 Installation................................................7 2.3 Compiler configuration..........................................9 2.4 Vendor-Specific Compiler Configuration................................ 13 2.5 System Packages............................................. 16 2.6 Utilities Configuration.......................................... 18 2.7 GPG Signing............................................... 20 2.8 Spack on Cray.............................................. 21 3 Basic Usage 25 3.1 Listing available packages........................................ 25 3.2 Installing and uninstalling........................................ 42 3.3 Seeing installed packages........................................ 44 3.4 Specs & dependencies.......................................... 46 3.5 Virtual dependencies........................................... 50 3.6 Extensions & Python support...................................... 53 3.7 Filesystem requirements........................................
    [Show full text]
  • GNAT User's Guide
    GNAT User's Guide GNAT, The GNU Ada Compiler For gcc version 4.7.4 (GCC) AdaCore Copyright c 1995-2009 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". About This Guide 1 About This Guide This guide describes the use of GNAT, a compiler and software development toolset for the full Ada programming language. It documents the features of the compiler and tools, and explains how to use them to build Ada applications. GNAT implements Ada 95 and Ada 2005, and it may also be invoked in Ada 83 compat- ibility mode. By default, GNAT assumes Ada 2005, but you can override with a compiler switch (see Section 3.2.9 [Compiling Different Versions of Ada], page 78) to explicitly specify the language version. Throughout this manual, references to \Ada" without a year suffix apply to both the Ada 95 and Ada 2005 versions of the language. What This Guide Contains This guide contains the following chapters: • Chapter 1 [Getting Started with GNAT], page 5, describes how to get started compiling and running Ada programs with the GNAT Ada programming environment. • Chapter 2 [The GNAT Compilation Model], page 13, describes the compilation model used by GNAT. • Chapter 3 [Compiling Using gcc], page 41, describes how to compile Ada programs with gcc, the Ada compiler.
    [Show full text]