In Using the GNU Compiler Collection (GCC)

Total Page:16

File Type:pdf, Size:1020Kb

In Using the GNU Compiler Collection (GCC) Using the GNU Compiler Collection For gcc version 8.1.0 (GCC) Richard M. Stallman and the GCC Developer Community Published by: GNU Press Website: http://www.gnupress.org a division of the General: [email protected] Free Software Foundation Orders: [email protected] 51 Franklin Street, Fifth Floor Tel 617-542-5942 Boston, MA 02110-1301 USA Fax 617-542-2652 Last printed October 2003 for GCC 3.3.1. Printed copies are available for $45 each. Copyright c 1988-2018 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 the Invariant Sections being \Funding Free Software", the Front-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled \GNU Free Documentation License". (a) The FSF's Front-Cover Text is: A GNU Manual (b) The FSF's Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. i Short Contents Introduction ::::::::::::::::::::::::::::::::::::::::::::: 1 1 Programming Languages Supported by GCC ::::::::::::::: 3 2 Language Standards Supported by GCC :::::::::::::::::: 5 3 GCC Command Options ::::::::::::::::::::::::::::::: 9 4 C Implementation-Defined Behavior :::::::::::::::::::: 429 5 C++ Implementation-Defined Behavior ::::::::::::::::: 437 6 Extensions to the C Language Family ::::::::::::::::::: 439 7 Extensions to the C++ Language :::::::::::::::::::::: 787 8 GNU Objective-C Features ::::::::::::::::::::::::::: 801 9 Binary Compatibility :::::::::::::::::::::::::::::::: 817 10 gcov|a Test Coverage Program ::::::::::::::::::::::: 821 11 gcov-tool|an Offline Gcda Profile Processing Tool ::::::: 833 12 gcov-dump|an Offline Gcda and Gcno Profile Dump Tool :: 837 13 Known Causes of Trouble with GCC :::::::::::::::::::: 839 14 Reporting Bugs ::::::::::::::::::::::::::::::::::::: 855 15 How To Get Help with GCC :::::::::::::::::::::::::: 857 16 Contributing to GCC Development ::::::::::::::::::::: 859 Funding Free Software ::::::::::::::::::::::::::::::::::: 861 The GNU Project and GNU/Linux::::::::::::::::::::::::: 863 GNU General Public License :::::::::::::::::::::::::::::: 865 GNU Free Documentation License ::::::::::::::::::::::::: 877 Contributors to GCC :::::::::::::::::::::::::::::::::::: 885 Option Index :::::::::::::::::::::::::::::::::::::::::: 903 Keyword Index ::::::::::::::::::::::::::::::::::::::::: 927 iii Table of Contents Introduction :::::::::::::::::::::::::::::::::::::::: 1 1 Programming Languages Supported by GCC ::::::::::::::::::::::::::::::::::::::::::::::::: 3 2 Language Standards Supported by GCC ::::: 5 2.1 C Language :::::::::::::::::::::::::::::::::::::::::::::::::::: 5 2.2 C++ Language :::::::::::::::::::::::::::::::::::::::::::::::: 6 2.3 Objective-C and Objective-C++ Languages :::::::::::::::::::: 7 2.4 Go Language::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.5 HSA Intermediate Language (HSAIL) :::::::::::::::::::::::::: 8 2.6 References for Other Languages :::::::::::::::::::::::::::::::: 8 3 GCC Command Options ::::::::::::::::::::::: 9 3.1 Option Summary::::::::::::::::::::::::::::::::::::::::::::::: 9 3.2 Options Controlling the Kind of Output ::::::::::::::::::::::: 29 3.3 Compiling C++ Programs :::::::::::::::::::::::::::::::::::: 34 3.4 Options Controlling C Dialect ::::::::::::::::::::::::::::::::: 35 3.5 Options Controlling C++ Dialect ::::::::::::::::::::::::::::: 42 3.6 Options Controlling Objective-C and Objective-C++ Dialects :: 55 3.7 Options to Control Diagnostic Messages Formatting ::::::::::: 59 3.8 Options to Request or Suppress Warnings ::::::::::::::::::::: 62 3.9 Options for Debugging Your Program :::::::::::::::::::::::: 108 3.10 Options That Control Optimization ::::::::::::::::::::::::: 114 3.11 Program Instrumentation Options::::::::::::::::::::::::::: 172 3.12 Options Controlling the Preprocessor:::::::::::::::::::::::: 187 3.13 Passing Options to the Assembler ::::::::::::::::::::::::::: 194 3.14 Options for Linking ::::::::::::::::::::::::::::::::::::::::: 195 3.15 Options for Directory Search :::::::::::::::::::::::::::::::: 199 3.16 Options for Code Generation Conventions ::::::::::::::::::: 202 3.17 GCC Developer Options :::::::::::::::::::::::::::::::::::: 212 3.18 Machine-Dependent Options :::::::::::::::::::::::::::::::: 228 3.18.1 AArch64 Options :::::::::::::::::::::::::::::::::::::: 228 3.18.1.1 `-march' and `-mcpu' Feature Modifiers :::::::::::: 232 3.18.2 Adapteva Epiphany Options ::::::::::::::::::::::::::: 233 3.18.3 ARC Options :::::::::::::::::::::::::::::::::::::::::: 235 3.18.4 ARM Options:::::::::::::::::::::::::::::::::::::::::: 245 3.18.5 AVR Options :::::::::::::::::::::::::::::::::::::::::: 258 3.18.5.1 EIND and Devices with More Than 128 Ki Bytes of Flash::::::::::::::::::::::::::::::::::::::::::::::::::: 262 3.18.5.2 Handling of the RAMPD, RAMPX, RAMPY and RAMPZ Special Function Registers:::::::::::::::::::::::::::::::::::::: 264 iv Using the GNU Compiler Collection (GCC) 3.18.5.3 AVR Built-in Macros:::::::::::::::::::::::::::::: 264 3.18.6 Blackfin Options ::::::::::::::::::::::::::::::::::::::: 267 3.18.7 C6X Options::::::::::::::::::::::::::::::::::::::::::: 270 3.18.8 CRIS Options:::::::::::::::::::::::::::::::::::::::::: 270 3.18.9 CR16 Options ::::::::::::::::::::::::::::::::::::::::: 272 3.18.10 Darwin Options::::::::::::::::::::::::::::::::::::::: 272 3.18.11 DEC Alpha Options :::::::::::::::::::::::::::::::::: 276 3.18.12 FR30 Options :::::::::::::::::::::::::::::::::::::::: 280 3.18.13 FT32 Options :::::::::::::::::::::::::::::::::::::::: 281 3.18.14 FRV Options ::::::::::::::::::::::::::::::::::::::::: 281 3.18.15 GNU/Linux Options :::::::::::::::::::::::::::::::::: 285 3.18.16 H8/300 Options::::::::::::::::::::::::::::::::::::::: 285 3.18.17 HPPA Options:::::::::::::::::::::::::::::::::::::::: 286 3.18.18 IA-64 Options :::::::::::::::::::::::::::::::::::::::: 289 3.18.19 LM32 Options :::::::::::::::::::::::::::::::::::::::: 292 3.18.20 M32C Options :::::::::::::::::::::::::::::::::::::::: 293 3.18.21 M32R/D Options ::::::::::::::::::::::::::::::::::::: 293 3.18.22 M680x0 Options :::::::::::::::::::::::::::::::::::::: 295 3.18.23 MCore Options ::::::::::::::::::::::::::::::::::::::: 300 3.18.24 MeP Options ::::::::::::::::::::::::::::::::::::::::: 301 3.18.25 MicroBlaze Options ::::::::::::::::::::::::::::::::::: 302 3.18.26 MIPS Options :::::::::::::::::::::::::::::::::::::::: 304 3.18.27 MMIX Options ::::::::::::::::::::::::::::::::::::::: 318 3.18.28 MN10300 Options :::::::::::::::::::::::::::::::::::: 319 3.18.29 Moxie Options :::::::::::::::::::::::::::::::::::::::: 320 3.18.30 MSP430 Options:::::::::::::::::::::::::::::::::::::: 320 3.18.31 NDS32 Options ::::::::::::::::::::::::::::::::::::::: 322 3.18.32 Nios II Options ::::::::::::::::::::::::::::::::::::::: 323 3.18.33 Nvidia PTX Options :::::::::::::::::::::::::::::::::: 328 3.18.34 PDP-11 Options :::::::::::::::::::::::::::::::::::::: 329 3.18.35 picoChip Options ::::::::::::::::::::::::::::::::::::: 330 3.18.36 PowerPC Options::::::::::::::::::::::::::::::::::::: 331 3.18.37 PowerPC SPE Options:::::::::::::::::::::::::::::::: 331 3.18.38 RISC-V Options :::::::::::::::::::::::::::::::::::::: 342 3.18.39 RL78 Options::::::::::::::::::::::::::::::::::::::::: 344 3.18.40 IBM RS/6000 and PowerPC Options :::::::::::::::::: 345 3.18.41 RX Options :::::::::::::::::::::::::::::::::::::::::: 361 3.18.42 S/390 and zSeries Options :::::::::::::::::::::::::::: 364 3.18.43 Score Options::::::::::::::::::::::::::::::::::::::::: 368 3.18.44 SH Options ::::::::::::::::::::::::::::::::::::::::::: 369 3.18.45 Solaris 2 Options ::::::::::::::::::::::::::::::::::::: 375 3.18.46 SPARC Options :::::::::::::::::::::::::::::::::::::: 375 3.18.47 SPU Options ::::::::::::::::::::::::::::::::::::::::: 381 3.18.48 Options for System V ::::::::::::::::::::::::::::::::: 383 3.18.49 TILE-Gx Options ::::::::::::::::::::::::::::::::::::: 384 3.18.50 TILEPro Options ::::::::::::::::::::::::::::::::::::: 384 3.18.51 V850 Options ::::::::::::::::::::::::::::::::::::::::: 384 3.18.52 VAX Options ::::::::::::::::::::::::::::::::::::::::: 387 v 3.18.53 Visium Options ::::::::::::::::::::::::::::::::::::::: 387 3.18.54 VMS Options ::::::::::::::::::::::::::::::::::::::::: 388 3.18.55 VxWorks Options ::::::::::::::::::::::::::::::::::::: 388 3.18.56 x86 Options :::::::::::::::::::::::::::::::::::::::::: 389 3.18.57 x86 Windows Options::::::::::::::::::::::::::::::::: 412 3.18.58 Xstormy16 Options ::::::::::::::::::::::::::::::::::: 413 3.18.59 Xtensa Options ::::::::::::::::::::::::::::::::::::::: 413 3.18.60 zSeries Options ::::::::::::::::::::::::::::::::::::::: 415 3.19 Specifying Subprocesses and the Switches to Pass to Them :: 415 3.20 Environment Variables Affecting GCC :::::::::::::::::::::: 422 3.21 Using Precompiled Headers ::::::::::::::::::::::::::::::::: 425 4 C Implementation-Defined Behavior ::::::: 429 4.1 Translation :::::::::::::::::::::::::::::::::::::::::::::::::: 429 4.2 Environment::::::::::::::::::::::::::::::::::::::::::::::::: 429 4.3 Identifiers:::::::::::::::::::::::::::::::::::::::::::::::::::: 429 4.4 Characters ::::::::::::::::::::::::::::::::::::::::::::::::::: 430 4.5 Integers:::::::::::::::::::::::::::::::::::::::::::::::::::::: 431 4.6 Floating Point :::::::::::::::::::::::::::::::::::::::::::::::
Recommended publications
  • Download the Specification
    Internationalizing and Localizing Applications in Oracle Solaris Part No: E61053 November 2020 Internationalizing and Localizing Applications in Oracle Solaris Part No: E61053 Copyright © 2014, 2020, Oracle and/or its affiliates. License Restrictions Warranty/Consequential Damages Disclaimer This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited. Warranty Disclaimer The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing. Restricted Rights Notice If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable: U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial
    [Show full text]
  • GNU Guix Cookbook Tutorials and Examples for Using the GNU Guix Functional Package Manager
    GNU Guix Cookbook Tutorials and examples for using the GNU Guix Functional Package Manager The GNU Guix Developers Copyright c 2019 Ricardo Wurmus Copyright c 2019 Efraim Flashner Copyright c 2019 Pierre Neidhardt Copyright c 2020 Oleg Pykhalov Copyright c 2020 Matthew Brooks Copyright c 2020 Marcin Karpezo Copyright c 2020 Brice Waegeneire Copyright c 2020 Andr´eBatista Copyright c 2020 Christine Lemmer-Webber Copyright c 2021 Joshua Branson 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, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License". i Table of Contents GNU Guix Cookbook ::::::::::::::::::::::::::::::: 1 1 Scheme tutorials ::::::::::::::::::::::::::::::::: 2 1.1 A Scheme Crash Course :::::::::::::::::::::::::::::::::::::::: 2 2 Packaging :::::::::::::::::::::::::::::::::::::::: 5 2.1 Packaging Tutorial:::::::::::::::::::::::::::::::::::::::::::::: 5 2.1.1 A \Hello World" package :::::::::::::::::::::::::::::::::: 5 2.1.2 Setup:::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.1.2.1 Local file ::::::::::::::::::::::::::::::::::::::::::::: 8 2.1.2.2 `GUIX_PACKAGE_PATH' ::::::::::::::::::::::::::::::::: 9 2.1.2.3 Guix channels ::::::::::::::::::::::::::::::::::::::: 10 2.1.2.4 Direct checkout hacking:::::::::::::::::::::::::::::: 10 2.1.3 Extended example ::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Using Ptxdist on Mac OS Based on Ptxdist 2012.04
    Using PTXdist on Mac OS based on PTXdist 2012.04 Bernhard Walle∗ 2012-04-20 ∗[email protected] Contents 1. Motivation 3 2. Basics 4 2.1. Getting OpenSource Software on Mac OS.........................4 2.2. Preparing the Hard Disk..................................5 2.2.1. Creating and Using a Sparse Bundle ........................6 3. Installing PTXdist7 3.1. Requirements........................................7 3.1.1. Mac OS.......................................7 3.1.2. Host compiler....................................7 3.2. GNU Tools..........................................7 3.3. Installation..........................................8 3.4. First setup..........................................9 4. Building an OSELAS.Toolchain 11 5. Building an Embedded Linux project 12 5.1. Using OSELAS.BSP-Pengutronix-Generic......................... 12 5.1.1. Getting the BSP................................... 12 5.1.2. Building FSF GCC.................................. 13 5.1.3. Building Qemu................................... 13 5.1.4. Running the System................................ 13 5.2. Using real Hardware.................................... 14 6. Limitations 15 6.1. Building UBI or JFFS2 images................................ 15 6.2. Linux kernel......................................... 15 6.3. Bootloader.......................................... 15 7. Using a Mac for Embedded Linux Development 16 7.1. Using a serial console.................................... 16 7.2. Exporting directories via NFS............................... 16 7.3. Mounting ext2 partitions.................................. 18 A. About this Document 19 B. Change History 20 Bibliography 21 2 1. Motivation PTXdist (http://www.ptxdist.org) is a great way to build Embedded Linux systems. It downloads all required components, conVgures them for cross-compilation and Vnally builds a target image and/or target packages. In addition, it provides an easy way to build a cross-toolchain for most common processors. Read [2] for a description how to use PTXdist.
    [Show full text]
  • Functional Package and Configuration Management with GNU Guix
    Functional Package and Configuration Management with GNU Guix David Thompson Wednesday, January 20th, 2016 About me GNU project volunteer GNU Guile user and contributor since 2012 GNU Guix contributor since 2013 Day job: Ruby + JavaScript web development / “DevOps” 2 Overview • Problems with application packaging and deployment • Intro to functional package and configuration management • Towards the future • How you can help 3 User autonomy and control It is becoming increasingly difficult to have control over your own computing: • GNU/Linux package managers not meeting user needs • Self-hosting web applications requires too much time and effort • Growing number of projects recommend installation via curl | sudo bash 1 or otherwise avoid using system package managers • Users unable to verify that a given binary corresponds to the source code 1http://curlpipesh.tumblr.com/ 4 User autonomy and control “Debian and other distributions are going to be that thing you run Docker on, little more.” 2 2“ownCloud and distribution packaging” http://lwn.net/Articles/670566/ 5 User autonomy and control This is very bad for desktop users and system administrators alike. We must regain control! 6 What’s wrong with Apt/Yum/Pacman/etc.? Global state (/usr) that prevents multiple versions of a package from coexisting. Non-atomic installation, removal, upgrade of software. No way to roll back. Nondeterminstic package builds and maintainer-uploaded binaries. (though this is changing!) Reliance on pre-built binaries provided by a single point of trust. Requires superuser privileges. 7 The problem is bigger Proliferation of language-specific package managers and binary bundles that complicate secure system maintenance.
    [Show full text]
  • UNIX and High-Level Language Education Using Windows Operating Systems
    UNIX and High-level Language Education Using Windows Operating Systems R. W. Skeith M. A. Thornton Department of Computer Engineering Department of Electrical and Computer Engineering University of Arkansas Mississippi State University 313 Engineering Hall ECE Dept., P. O. Box 9571 Fayetteville, AR 72701-1201 Miss. State, MS. 39762-9571 [email protected] [email protected] Abstract Entering and continuing engineering students need to learn skills in the use of high-level languages and the use of the UNIX operating system [1] including the development of shell scripts. In the past, this requirement has been very challenging to educators since it requires access to a laboratory containing (sometimes expensive) computers that are UNIX-based workstations. The widespread availability of the LINUX operating system [2] helps to alleviate this problem somewhat since the operating system is free and associated high-level language compilers are also freely available through the GNU project [3]. Unfortunately, the skills required to successfully install and use LINUX often precludes its use as a classroom tool that students can easily maintain. An alternative and free solution based on the use of a UNIX emulator that runs under Microsoft Windows operating systems is described here. INTRODUCTION Recently, several UNIX emulators that are easily installed and used under the Microsoft Operating Systems (OS) commonly referred to as “Windows” have become available [4,5,6,7]. This paper describes the authors’ experiences in using these tools in an undergraduate setting for the purpose of teaching the use of UNIX and various high-level languages such as PERL, FORTRAN, C and C++.
    [Show full text]
  • Installation and User's Guide
    GNUstep Installation and User’s Guide Version 0.6.5 February 8, 2000 Permissions Copyright (C) 1999-2000 Free Software Foundation. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. Apple™, OpenStep™, and the Apple logo are trademarks of Apple Computers, Inc. registered in the U.S. and other countries. PostScript™, Display PostScript™ and Adobe™ are trademarks of Adobe Systems Incorporated and may be registered in certain jurisdictions. Other company and product names mentioned herein might be trademarks of their respective companies. About the Free Software Foundation The Free Software Foundation (FSF) is dedicated to eliminating restrictions on copying, redistribution, understanding, and modification of computer programs. We do this by promoting the development and use of free software in all areas of computing---but most particularly, by helping to develop the GNU operating system. Many organizations distribute whatever free software happens to be available. In contrast, the Free Software Foundation concentrates on development of new free software---and on making that software into a coherent system that can eliminate the need to use proprietary software. Besides developing GNU, FSF distributes copies of GNU software and manuals for a distribution fee, and accepts tax-deductible gifts to support GNU development.
    [Show full text]
  • With GNU Guix and Free Software
    Optimized & Reproducible HPC Software Deployment ... with GNU Guix and free software Pjotr Prins1 & Ludovic Courtes` 2 FOSDEM, February 2017 1UMC Utrecht, UTHSC GeneNetwork.org 2Inria Recipe for a contemporary HPC cluster environment. #1. Start with an old & inflexible distro. #2. Add a layer of home-made “modules”. #2c. Oh, run-time linker error! #2d. Tweak build flags for user A. #2e. New versions are out, rebuild! #2f. User B unhappy cuz we upgraded. Ignore? ... #2b. Tweak the modules. #2d. Tweak build flags for user A. #2e. New versions are out, rebuild! #2f. User B unhappy cuz we upgraded. Ignore? ... #2b. Tweak the modules. #2c. Oh, run-time linker error! #2e. New versions are out, rebuild! #2f. User B unhappy cuz we upgraded. Ignore? ... #2b. Tweak the modules. #2c. Oh, run-time linker error! #2d. Tweak build flags for user A. #2f. User B unhappy cuz we upgraded. Ignore? ... #2b. Tweak the modules. #2c. Oh, run-time linker error! #2d. Tweak build flags for user A. #2e. New versions are out, rebuild! ... #2b. Tweak the modules. #2c. Oh, run-time linker error! #2d. Tweak build flags for user A. #2e. New versions are out, rebuild! #2f. User B unhappy cuz we upgraded. Ignore? #2b. Tweak the modules. #2c. Oh, run-time linker error! #2d. Tweak build flags for user A. #2e. New versions are out, rebuild! #2f. User B unhappy cuz we upgraded. Ignore? ... #3. Spice up with user-built software! Fixing HPC cluster environments. Approach #2: Give up on packaging. https://imagelayers.io/ https://www.hpcwire.com/2016/10/20/singularity-containers-easing-scientific-computing Can we eat it too? 1.
    [Show full text]
  • Objective-C Language and Gnustep Base Library Programming Manual
    Objective-C Language and GNUstep Base Library Programming Manual Francis Botto (Brainstorm) Richard Frith-Macdonald (Brainstorm) Nicola Pero (Brainstorm) Adrian Robert Copyright c 2001-2004 Free Software Foundation Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another lan- guage, under the above conditions for modified versions. i Table of Contents 1 Introduction::::::::::::::::::::::::::::::::::::: 3 1.1 What is Object-Oriented Programming? :::::::::::::::::::::::: 3 1.1.1 Some Basic OO Terminology :::::::::::::::::::::::::::::: 3 1.2 What is Objective-C? :::::::::::::::::::::::::::::::::::::::::: 5 1.3 History :::::::::::::::::::::::::::::::::::::::::::::::::::::::: 5 1.4 What is GNUstep? ::::::::::::::::::::::::::::::::::::::::::::: 6 1.4.1 GNUstep Base Library :::::::::::::::::::::::::::::::::::: 6 1.4.2 GNUstep Make Utility :::::::::::::::::::::::::::::::::::: 7 1.4.3 A Word on the Graphical Environment :::::::::::::::::::: 7 1.4.4 The GNUstep Directory Layout ::::::::::::::::::::::::::: 7 1.5 Building Your First Objective-C Program :::::::::::::::::::::: 8 2 The Objective-C Language :::::::::::::::::::
    [Show full text]
  • Cooperation in Parallel Benjamin Mako Hill
    Cooperation in Parallel A Tool for Supporting Collaborative Writing in Diverged Documents by Benjamin Mako Hill B.A., Hampshire College (2003) Submitted to the Program in Media Arts and Sciences, School of Architecture and Planning, in partial fulfillment of the requirements for the degree of Masters of Science in Media Arts and Sciences at the MASSACHUSETTS INSTITUTE OF TECHNOLOGY September 2007 c Massachusetts Institute of Technology 2007. All rights reserved. Author Program in Media Arts and Sciences August 10, 2007 Certified by Walter Bender Senior Research Scientist Program in Media Arts and Sciences Thesis Supervisor Accepted by Deb Roy Chair, Departmental Committee on Graduate Students Program in Media Arts and Sciences 2 Cooperation in Parallel A Tool for Supporting Collaborative Writing in Diverged Documents by Benjamin Mako Hill Submitted to the Program in Media Arts and Sciences, School of Architecture and Planning, on August 10, 2007, in partial fulfillment of the requirements for the degree of Masters of Science in Media Arts and Sciences Abstract This thesis builds on theory from the fields of computer supported cooperative work and com- puter supported collaborative writing and the example of work in the free and open source soft- ware development communities to describe “cooperation in parallel” — a mode of collaborative writing among parties with diverged goals and distinct documents. It examines the social and technological requirements of cooperation in parallel for writing and considers the effectiveness of existing technologies ability to address them. It then presents the design and evaluation of TextNet: a wiki for document writing that uses techniques from software development including branch creation and tracking features and introduces a text-specific interface for merging changes and representing and resolving conflicts.
    [Show full text]
  • ELF Handling for Thread-Local Storage
    ELF Handling For Thread-Local Storage Ulrich Drepper, Red Hat Inc. [email protected] Version 0.20 December 21, 2005 Based on: Intel Itanium Processorspecific Application Binary Interface, May 2001, Document Number: 245370-003 Thread-Local Storage, Version 0.68, Sun Microsystems, September 4, 2001 1 Motivation Increasing use of threads lead developers to wish for a better way of dealing with thread-local data. The POSIX thread interface defines interfaces which allow storing void * objects separate for each thread. But the interface is cumbersome to use. A key for the object has to be allocated dynamically at run-time. If the key isn’t used anymore it must be freed. While this is already a lot of work and error prone it becomes a real problem when combined with dynamically loaded code. To counter these problems it was decided to extend the programming languages to let the compiler take over the job. For C and C++ the new keyword thread can be used in variable definitions and declarations. This is not an official extension of the language but compiler writers are encouraged to implement them to support the new ABI. Variables defined and declared this way would automatically be allocated local to each thread: __thread int i; __thread struct state s; extern __thread char *p; The usefulness of this is not limited to user-programs. The run-time environment can also take advantage of it (e.g., the global variable errno must be thread-local) and compilers can perform optimizations which create non-automatic variables. Note that adding thread to the definition of an automatic variable makes no sense and is not allowed since automatic variables are always thread-local.
    [Show full text]
  • Using the GNU Compiler Collection
    Using the GNU Compiler Collection For gcc version 4.3.2 (GCC) Richard M. Stallman and the GCC Developer Community Published by: GNU Press Website: www.gnupress.org a division of the General: [email protected] Free Software Foundation Orders: [email protected] 51 Franklin Street, Fifth Floor Tel 617-542-5942 Boston, MA 02110-1301 USA Fax 617-542-2652 Last printed October 2003 for GCC 3.3.1. Printed copies are available for $45 each. Copyright c 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 2008 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.2 or any later version published by the Free Software Foundation; with the Invariant Sections being “GNU General Public License” and “Funding Free Software”, the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled “GNU Free Documentation License”. (a) The FSF’s Front-Cover Text is: A GNU Manual (b) The FSF’s Back-Cover Text is: You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development. i Short Contents Introduction ............................................. 1 1 Programming Languages Supported by GCC ............... 3 2 Language Standards Supported by GCC .................. 5 3 GCC Command Options ............................... 9 4 C Implementation-defined behavior ..................... 237 5 Extensions to the C Language Family ..................
    [Show full text]
  • Code Siblings: Technical and Legal Implications of Copying Code Between Applications
    Code siblings: technical and legal implications of copying code Between applications Daniel German, Massimiliano Di Penta, Yann -Ga ël Gu éhéneuc , and Giuliano (Giulio) Antoniol MSR 2009, Vancouver 1/17 TheThe ChallengeChallenge Code,Code, asas anyany otherother artisticartistic production,production, isis regulatedregulated byby copyrightcopyright lawlaw CompaniesCompanies ownown thethe propertyproperty ofof sourcesource codecode FreeFree andand openopen sourcesource softwaresoftware (FOSS)(FOSS) modelmodel isis differentdifferent CopyingCopying 2727 LOCLOC outout ofof 525525 KLOCKLOC resultedresulted inin aa copyrightcopyright infringementinfringement UsersUsers andand companiescompanies mustmust bebe awareaware ofof copyrightcopyright lawlaw andand ownershipownership MSR 2009, Vancouver 2/17 CodeCode HasHas PreferentialPreferential MigrationMigration FlowsFlows MSR 2009, Vancouver 3/17 LicenseLicense TypesTypes Permissive – the MIT/X11 and BSD licenses Minor constraints on the licensee Inclusion of fragments in a system under a different license BSD licensed fragments can be included in proprietary systems. CAVEAT! Multiple BSD licenses: original BSD (4-clauses BSD), the new BSD (3-clauses BSD), and the 2-clauses BSD Code licensed under the original 4-clauses BSD cannot be included inside systems licensed under the GPL Reciprocal – GNU variants Any system that includes the fragments must be licensed under the same license GPL-licensed fragments can only be included in systems licensed under the same version of the GPL
    [Show full text]