Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection

Total Page:16

File Type:pdf, Size:1020Kb

Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Under the Hood of the GNU Compiler Collection Morgan Deters Ron Cytron [email protected] [email protected] Programming Logic Group Distributed Object Computing Laboratory Technical University of Catalonia Washington University Barcelona, Spain St. Louis, Missouri CopyrightCopyright is is held held by by the the author/owner(s). author/owner(s). PLDIPLDI’08,’08, June June 9, 9, 2008, 2008, Tuscon, Tuscon, Arizona, Arizona, USA USA Copyright ©Copyright Deters and Ron Cytron Morgan 2005–2008 Demystifying GCC Morgan Deters and Ron Cytron Tutorial Objectives • Introduce the internals of GCC 4.3.0 (March 2008) Java and C++ front-ends Optimizations Back-end structure • How to modify, or write your own Front end • New languages, new features Middle end • Analysis, optimization Back end • Machine-specific targets • How to debug/improve GCC PLDI 2008 2 Tuscon, Arizona Tutorial Objectives 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron CC G Demystifying Introduction What is GCC? Why use GCC? What does compilation with GCC look like? PLDI 2008 3 Tuscon, Arizona 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron What is GCC ? • A compiler for multiple languages… C C++ Java Objective-C/C++ FORTRAN Ada PLDI 2008 4 Tuscon, Arizona Introduction 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron What is GCC ? • …supporting multiple targets arc arm avr bfin c4x cris crx fr30 frv h8300 i386 ia64 iq2000 m32c m32r m68hc11 m68k mcore mips mmix mn10300 mt pa pdp11 rs6000 s390 sh sparc stormy16 v850 vax xtensa TheseThese areare code code generators;generators;variantsvariants areare alsoalso supportedsupported ((e.g.e.g.powerpcpowerpc is is a a “variant”“variant” of of thethe rs6000 rs6000 code code generator) generator) PLDI 2008 5 Tuscon, Arizona Introduction 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron What GCC is not • GCC is not an assembler (see GNU binutils) a C library (see glibc) a debugger (see gdb) an IDE PLDI 2008 6 Tuscon, Arizona Introduction 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron Why use GCC as an R&D platform? • Research is immediately usable by everyone Large development community and user base GCC is a modern, practical compiler • multiple architectures, full standard languages, optimizations • debugging support • You can meet GCC halfway modular: hack some parts, rely on the others • Can incorporate bug fixes that come along minor version upgrades (e.g. 3.3.x Æ 3.4.x) – no big deal major version upgrades (e.g. 3.x Æ 4.x) – more of a pain • Need not maintain code indefinitely (if incorporated) PLDI 2008 7 Tuscon, Arizona Introduction 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron The GCC project and the GPL • Open-source GNU General Public License (GPL) • Changes made to GCC source code or associated libraries must also be GPLed • However, compiler and libraries can be used/linked against in non-GPL development YourYour improvementsimprovements toto GCCGCC mustmust bebe open-source,open-source, butbut youryour customerscustomers needneed notnot open-sourceopen-source theirtheir programsprograms toto useuse youryour stuffstuff PLDI 2008 8 Tuscon, Arizona Introduction 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron Typical structure of GCC compilation sourcesource programprogram gcc/g++/gcj assembly compiler assembly assembler linker compiler programprogram assembler linker ELFELF object object PLDI 2008 9 Tuscon, Arizona Introduction 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron Inside the compiler compiler (C, C++, Java) parser / parser / treetree semantic RTLRTL passes passes semantic optimizationsoptimizations checkerchecker targettarget arch arch gimplifiergimplifier expanderexpander instructioninstruction selection selection trees RTL PLDI 2008 10 Tuscon, Arizona Introduction 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron CC G Demystifying GCC Basics How do you build GCC? How do you navigate the source tree? PLDI 2008 11 Tuscon, Arizona 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron GCC Basics: Getting Started • Requirements to build GCC usual suite of UNIX tools (C compiler, assembler/linker, GNU Make, tar, awk, POSIX shell) • For development GNU m4 and GNU autotools (autoconf/automake/libtool) gperf bison, flex autogen, guile, gettext, perl, Texinfo, diffutils, patch, … • Obtaining GCC sources gcc.gnu.org or local mirror (see gcc.gnu.org/mirrors.html) get gcc-core package, then language add-ons • gcc-java requires gcc-g++ PLDI 2008 12 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron Source Metrics • 492 Mbytes of material downloaded to build GCC • 2.7 Gbytes after build • As of 4.3.0 Need mpfr – Multiple precision floating point arithmetic Need gmp – Multiple precision integer arithmetic Need Eclipse – for Java front-end PLDI 2008 13 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron Building GCC from sources • Configure it in a separate build directory from sources /path/to/source/directory/configure options… --prefix=install-location --enable-languages=comma-separated-language-list • To see the list of available languages: grep language= */config-lang.in --enable-checking • turns on sanity checks (especially on intermediate representation) • Build it ! Environment variables useful when debugging compiler/runtime • CFLAGS stage 1 flags (using host C compiler) • BOOT_CFLAGS stage 2 and stage 3 flags (using stage 1 GCC) • CFLAGS_FOR_TARGET flags for new GCC building target binaries • CXXFLAGS_FOR_TARGET flags for new GCC building libstdc++/others • GCJFLAGS flags for new GCC building Java runtime •‘-O0 –ggdb3’ is recommended when debugging PLDI 2008 14 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron Building GCC from sources • Build it ! continued… make bootstrap (to bootstrap) or make (to not) • bootstrap useful when compiling with non-GCC host compiler • during development, non-bootstrap is faster and also better at recompiling just those sources that have changed use make’s -j option to speed things up on MP/dual core make bootstrap-lean • cleans up between stages, uses less disk make profiledbootstrap • faster compiler produced, but need GCC host • –j unsupported • Install it ! make install PLDI 2008 15 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron Building a cross-compiler • Code generator can be built for any target runtime libraries then are built using that code generator • Since GCC outputs assembly, you actually need a full cross development toolchain Dan Kegel’s crosstool automates a GNU/Linux cross chain for popular configurations: • Linux kernel headers • GNU binutils •glibc •gcc • see kegel.com/crosstool PLDI 2008 16 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron GCC Basics: Getting Around • Other tools recommended when hacking GCC GNU Screen attach/reattach terminal sessions etags navigation to source definitions (emacs) ctags navigation to source definitions (vi) c++filt demangle C++/Java mangled symbols readelf decompose ELF files objdump object file dumper/disassembler gdb GNU debugger PLDI 2008 17 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Demystifying GCC Morgan Deters and Ron Cytron GCC Drivers • gcc, g++, gcj are drivers, not compilers They will execute (as appropriate): • compiler (cc1, cc1plus, jc1) • Java program main entry point generation (jvgenmain) • assembler (as) • linker (collect2) • Differences between drivers include active #defines, default libraries, other behavior but can use any driver for any source language PLDI 2008 18 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Copyright (c) 2005-2008 Morgan Deters and Ron Cytron June 2008 Demystifying GCC: PLDI 2008 Under the Hood of the GNU Compiler Collection Demystifying GCC Morgan Deters and Ron Cytron Most useful driver options for debugging -E preprocess, don’t compile -S compile, don’t assemble -H verbose header inclusion -save-temps save temporary files -print-search-dirs print search paths -v verbose (see what the driver does) -g include debugging symbols --help get command line help --version show full version info -dumpversion show minimal version info PLDI 2008 19 Tuscon, Arizona GCC Basics 2008年8月12日星期二 Demystifying
Recommended publications
  • Using the GNU Compiler Collection (GCC)
    Using the GNU Compiler Collection (GCC) Using the GNU Compiler Collection by Richard M. Stallman and the GCC Developer Community Last updated 23 May 2004 for GCC 3.4.6 For GCC Version 3.4.6 Published by: GNU Press Website: www.gnupress.org a division of the General: [email protected] Free Software Foundation Orders: [email protected] 59 Temple Place Suite 330 Tel 617-542-5942 Boston, MA 02111-1307 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 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 .........................
    [Show full text]
  • The GNU Configure and Build System
    The GNU configure and build system Ian Lance Taylor Copyright c 1998 Cygnus Solutions 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 con- ditions for verbatim copying, provided 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, except that this permission notice may be stated in a translation approved by the Free Software Foundation. i Table of Contents 1 Introduction ............................... 1 1.1 Goals................................................... 1 1.2 Tools ................................................... 1 1.3 History ................................................. 1 1.4 Building ................................................ 2 2 Getting Started............................ 3 2.1 Write configure.in ....................................... 4 2.2 Write Makefile.am ....................................... 6 2.3 Write acconfig.h......................................... 7 2.4 Generate files ........................................... 8 2.5 Example................................................ 8 2.5.1 First Try....................................... 9 2.5.2 Second Try.................................... 10 2.5.3 Third
    [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]
  • Gnu Libiberty September 2001 for GCC 3
    gnu libiberty September 2001 for GCC 3 Phil Edwards et al. Copyright c 2001 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 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”. i Table of Contents 1 Using ............................................ 1 2 Overview ........................................ 2 2.1 Supplemental Functions ........................................ 2 2.2 Replacement Functions ......................................... 2 2.2.1 Memory Allocation ........................................ 2 2.2.2 Exit Handlers ............................................. 2 2.2.3 Error Reporting ........................................... 2 2.3 Extensions ..................................................... 3 3 Obstacks......................................... 4 3.1 Creating Obstacks.............................................. 4 3.2 Preparing for Using Obstacks................................... 4 3.3 Allocation in an Obstack ....................................... 5 3.4 Freeing Objects in an Obstack.................................. 6 3.5 Obstack Functions and Macros ................................. 7 3.6 Growing Objects ............................................... 8 3.7 Extra Fast Growing Objects ...................................
    [Show full text]
  • Kafl: Hardware-Assisted Feedback Fuzzing for OS Kernels
    kAFL: Hardware-Assisted Feedback Fuzzing for OS Kernels Sergej Schumilo1, Cornelius Aschermann1, Robert Gawlik1, Sebastian Schinzel2, Thorsten Holz1 1Ruhr-Universität Bochum, 2Münster University of Applied Sciences Motivation IJG jpeg libjpeg-turbo libpng libtiff mozjpeg PHP Mozilla Firefox Internet Explorer PCRE sqlite OpenSSL LibreOffice poppler freetype GnuTLS GnuPG PuTTY ntpd nginx bash tcpdump JavaScriptCore pdfium ffmpeg libmatroska libarchive ImageMagick BIND QEMU lcms Adobe Flash Oracle BerkeleyDB Android libstagefright iOS ImageIO FLAC audio library libsndfile less lesspipe strings file dpkg rcs systemd-resolved libyaml Info-Zip unzip libtasn1OpenBSD pfctl NetBSD bpf man mandocIDA Pro clamav libxml2glibc clang llvmnasm ctags mutt procmail fontconfig pdksh Qt wavpack OpenSSH redis lua-cmsgpack taglib privoxy perl libxmp radare2 SleuthKit fwknop X.Org exifprobe jhead capnproto Xerces-C metacam djvulibre exiv Linux btrfs Knot DNS curl wpa_supplicant Apple Safari libde265 dnsmasq libbpg lame libwmf uudecode MuPDF imlib2 libraw libbson libsass yara W3C tidy- html5 VLC FreeBSD syscons John the Ripper screen tmux mosh UPX indent openjpeg MMIX OpenMPT rxvt dhcpcd Mozilla NSS Nettle mbed TLS Linux netlink Linux ext4 Linux xfs botan expat Adobe Reader libav libical OpenBSD kernel collectd libidn MatrixSSL jasperMaraDNS w3m Xen OpenH232 irssi cmark OpenCV Malheur gstreamer Tor gdk-pixbuf audiofilezstd lz4 stb cJSON libpcre MySQL gnulib openexr libmad ettercap lrzip freetds Asterisk ytnefraptor mpg123 exempi libgmime pev v8 sed awk make
    [Show full text]
  • Licensing Information User Manual Oracle® ILOM Firmware
    Licensing Information User Manual ® Oracle ILOM Firmware Release 4.0.x Last Updated: December 2019 Part No: E81116-07 December 2019 Licensing Information User Manual Oracle ILOM Firmware Release 4.0.x Part No: E81116-07 Copyright © 2018, 2019, Oracle and/or its affiliates. All rights reserved. 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. 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. 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 installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.
    [Show full text]
  • Open Source Used in 250350550 Series Switches 2.5.5.X
    Open Source Used In 250350550 series switches 2.5.5.x Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-211198338 Open Source Used In 250350550 series switches 2.5.5.x 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-211198338 En ce qui a trait au logiciel gratuit ou à exploitation libre figurant dans ce document, si vous avez des questions ou souhaitez recevoir une copie du code source, auquel vous avez droit en vertu des licences gratuites ou d'exploitation libre applicables (telles que licences GNU Lesser/General Public), veuillez communiquer avec nous à l'adresse external- [email protected]. Dans vos demandes, veuillez inclure le numéro de référence 78EE117C99-211198338 Contents 1.1 arp-scan 1.9-40-g69b2f70-1 1.1.1 Available under license 1.2 avahi 0.6.32 1.2.1 Available under license 1.3 BOOST C++ Library 1.58.0 1.3.1 Available under license 1.4 bzip2 1.0.6 1.4.1 Available under license 1.5 curl 7.65.3 1.5.1 Available under
    [Show full text]
  • GNU Tools for E200 Processors Release Notes
    GNU Tools for e200 processors Release Notes Copyright c 2016 Freescale Semiconductor, Inc. Copyright c 2016-2018 NXP Table of Contents 1 Release description ::::::::::::::::::::::::::::: 1 2 What's new ::::::::::::::::::::::::::::::::::::: 2 3 Migration to version 1.2:::::::::::::::::::::::: 3 3.1 Update linker script :::::::::::::::::::::::::::::::::::::::::::: 3 3.2 Change instruction names :::::::::::::::::::::::::::::::::::::: 5 3.3 e200z4 decorated storage instructions ::::::::::::::::::::::::::: 5 4 New features :::::::::::::::::::::::::::::::::::: 6 4.1 Mixed BookE and VLE code assembly and linking :::::::::::::: 6 4.2 BookE to VLE translation:::::::::::::::::::::::::::::::::::::: 6 4.3 LSP intrinsics support:::::::::::::::::::::::::::::::::::::::::: 6 4.4 SPE2 intrinsics support :::::::::::::::::::::::::::::::::::::::: 6 4.5 Generate error for e200z425 errata:::::::::::::::::::::::::::::: 8 4.6 SPR registers support in GDB client ::::::::::::::::::::::::::: 9 5 Known issues :::::::::::::::::::::::::::::::::: 12 6 Release history :::::::::::::::::::::::::::::::: 13 6.1 Version 1.0:::::::::::::::::::::::::::::::::::::::::::::::::::: 14 6.2 Version 1.1:::::::::::::::::::::::::::::::::::::::::::::::::::: 14 6.3 Version 1.1.1 :::::::::::::::::::::::::::::::::::::::::::::::::: 15 6.4 Version 1.1.2 :::::::::::::::::::::::::::::::::::::::::::::::::: 15 6.5 Version 1.1.3 :::::::::::::::::::::::::::::::::::::::::::::::::: 15 6.6 Version 1.2:::::::::::::::::::::::::::::::::::::::::::::::::::: 15 6.7 Version 171017 ::::::::::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • Red Hat Enterprise Linux 4 Red Hat Enterprise Linux 4
    Red Hat Enterprise Linux 4 Red Hat Enterprise Linux 4 Copyright © 1987, 1989, 1991-2004 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. For a copy of the GNU General Public License, see http://www.gnu.org/copyleft/gpl.html. This version is by Red Hat, Inc. Red Hat, Inc. 1801 Varsity Drive Raleigh NC 27606-2072 USA Phone: +1 919 754 3700 Phone: 888 733 4281 Fax: +1 919 754 3701 PO Box 13588 Research Triangle Park NC 27709 USA gcc(EN)-4-Print-RHI (2005-02-01) Red Hat and the Red Hat "Shadow Man" logo are registered trademarks of Red Hat, Inc. in the United States and other countries. All other trademarks referenced herein are the property of their respective owners. The GPG fingerprint of the [email protected] key is: CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E Table of Contents 1.
    [Show full text]
  • The GNU Configure and Build System
    The GNU configure and build system Ian Lance Taylor Copyright c 1998 Cygnus Solutions 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 con- ditions for verbatim copying, provided 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, except that this permission notice may be stated in a translation approved by the Free Software Foundation. Chapter 1: Introduction 1 1 Introduction This document describes the GNU configure and build systems. It describes how autoconf, automake, libtool, and make fit together. It also includes a discussion of the older Cygnus configure system. This document does not describe in detail how to use each of the tools; see the respective manuals for that. Instead, it describes which files the developer must write, which files are machine generated and how they are generated, and where certain common problems should be addressed. This document draws on several sources, including the autoconf manual by David MacKenzie (see section “autoconf overview” in Autoconf ), the automake manual by David MacKenzie and Tom Tromey (see section “automake overview” in GNU Automake), the libtool manual by Gordon Matzigkeit (see section “libtool overview” in GNU libtool), and the Cygnus configure manual by K. Richard Pixley. 1.1 Goals The GNU configure and build system has two main goals.
    [Show full text]
  • Section “Introduction” in Using the GNU Compiler Collection (GCC)
    Using the GNU Compiler Collection (GCC) Using the GNU Compiler Collection by Richard M. Stallman and the GCC Developer Community For GCC Version 4.1.2 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 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 .......................... 7 4 C Implementation-defined behavior ................. 205 5 Extensions to the C Language Family ...............
    [Show full text]
  • Free Software Notice
    Dear Customer / To Whom It May Concern, You may have received from Cisco-Linksys LLC, a wholly-owned subsidiary of Cisco Systems, Inc., certain products that contained – in part – some free software (software licensed in a way that ensures your freedom to run, copy, distribute, study, change and improve the software). Such products include the ADSL2MUE, EFG120, EFG250, NAS200, NSLU2, RV series (including RV016, RV042, RV082, RVS4000, RV0041, and RVL200), SPA400, WAG54G, WAG300N, WAP series (including WAP4400N, WAP55AG, WAP4400N, and WAP54GPE), WET54GS5, WIP300, WMA11B, WPG54G, WRE54G, WRT series (including WRT54GL, WRT54GX, WRT54GX2, WRT54GX4, WRT54GR, WRT55AGv1, WRT55AGv2, WRTP54G, WRT54GS, WRT55AG, WRT350N, and WRT300N), WRV series (including WRV200, WRV54G, WRV54G-CA, and WRVS4400N), WVC54GC, WVC54G, and Quick- VPN products. As part of these products, Cisco-Linksys LLC or its distributors may have distributed to you hardware and/or software, or made available electronic downloads, that contained a version of BINUTILS, GCC, GDB, LIBC, LIBFETISH, LIBIBERTY, PARTED, READLINE, and WGET, which are free (i.e., freedom-respecting – see http://www.gnu.org/philosophy/free-sw.html for more details) software programs developed by the Free Software Foundation, a separate not-for- profit organization without any affiliation to Cisco-Linksys LLC. If we distributed any of these free software programs to you, we want you to know that you were granted a license to that software under the terms of either the GNU General Public License or GNU Lesser General Public License (“Licenses”; copies of which are available from http://www.gnu.org/licenses/licenses.html). The Licenses allow you to freely copy, modify and redistribute that software and no other statement or documentation from us, including our End User License Agreement, places any additional restrictions on what you may do with that software.
    [Show full text]