Using and Porting the GNU Compiler Collection

Total Page:16

File Type:pdf, Size:1020Kb

Using and Porting the GNU Compiler Collection Using and Porting the GNU Compiler Collection Richard M. Stallman Last updated 14 June 2001 for gcc-3.0 Copyright c 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. For GCC Version 3.0 Published by the Free Software Foundation 59 Temple Place - Suite 330 Boston, MA 02111-1307, USA Last printed April, 1998. Printed copies are available for $50 each. ISBN 1-882114-37-X Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being “GNU General Public License”, 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. Short Contents Introduction......................................... 1 1 Compile C, C++, Objective C, Fortran, Java ............... 3 2 Language Standards Supported by GCC .................. 5 3 GCC Command Options ............................. 7 4 Installing GNU CC ............................... 111 5 Extensions to the C Language Family .................. 121 6 Extensions to the C++ Language ...................... 165 7 GNU Objective-C runtime features .................... 175 8 gcov: a Test Coverage Program ...................... 181 9 Known Causes of Trouble with GCC ................... 187 10 Reporting Bugs.................................. 203 11 How To Get Help with GCC ......................... 209 12 Contributing to GCC Development .................... 211 13 Using GCC on VMS .............................. 213 14 Makefile Targets ................................. 217 15 GCC and Portability .............................. 219 16 Interfacing to GCC Output ......................... 221 17 Passes and Files of the Compiler ...................... 223 18 Trees: The intermediate representation used by the C and C++ front-ends...................................... 229 19 RTL Representation .............................. 255 20 Machine Descriptions .............................. 291 21 Target Description Macros .......................... 349 22 The Configuration File............................. 453 23 Makefile Fragments ............................... 457 Funding Free Software ................................ 459 Linux and the GNU Project ............................ 461 GNU GENERAL PUBLIC LICENSE ...................... 463 GNU Free Documentation License ........................ 469 Contributors to GCC ................................. 475 Option Index ...................................... 481 Index ............................................ 493 Table of Contents Introduction ..................................... 1 1 Compile C, C++, Objective C, Fortran, Java .... 3 2 Language Standards Supported by GCC ....... 5 3 GCC Command Options ...................... 7 3.1 Option Summary ............................................ 7 3.2 Options Controlling the Kind of Output...................... 10 3.3 Compiling C++ Programs ................................... 12 3.4 Options Controlling C Dialect ............................... 12 3.5 Options Controlling C++ Dialect ............................. 16 3.6 Options Controlling Objective-C Dialect ..................... 21 3.7 Options to Control Diagnostic Messages Formatting........... 21 3.8 Options to Request or Suppress Warnings .................... 22 3.9 Options for Debugging Your Program or GCC ................ 32 3.10 Options That Control Optimization......................... 38 3.11 Options Controlling the Preprocessor ....................... 46 3.12 Passing Options to the Assembler........................... 49 3.13 Options for Linking........................................ 49 3.14 Options for Directory Search ............................... 51 3.15 Specifying subprocesses and the switches to pass to them ..... 52 3.16 Specifying Target Machine and Compiler Version ............ 57 3.17 Hardware Models and Configurations ....................... 58 3.17.1 M680x0 Options .................................. 59 3.17.2 M68hc1x Options ................................. 61 3.17.3 VAX Options..................................... 61 3.17.4 SPARC Options .................................. 61 3.17.5 Convex Options .................................. 64 3.17.6 AMD29K Options ................................ 65 3.17.7 ARM Options .................................... 66 3.17.8 MN10200 Options ................................ 70 3.17.9 MN10300 Options ................................ 70 3.17.10 M32R/D Options ................................ 71 3.17.11 M88K Options .................................. 72 3.17.12 IBM RS/6000 and PowerPC Options .............. 74 3.17.13 IBM RT Options ................................ 80 3.17.14 MIPS Options ................................... 80 3.17.15 Intel 386 Options ................................ 84 3.17.16 HPPA Options .................................. 87 3.17.17 Intel 960 Options ................................ 88 3.17.18 DEC Alpha Options ............................. 90 3.17.19 Clipper Options ................................. 93 3.17.20 H8/300 Options ................................. 93 3.17.21 SH Options ..................................... 93 3.17.22 Options for System V ............................ 94 3.17.23 TMS320C3x/C4x Options ........................ 94 3.17.24 V850 Options ................................... 96 3.17.25 ARC Options.................................... 97 3.17.26 NS32K Options.................................. 97 3.17.27 AVR Options.................................... 99 3.17.28 MCore Options .................................. 99 3.17.29 IA-64 Options .................................. 100 3.17.30 D30V Options .................................. 101 3.18 Options for Code Generation Conventions .................. 102 3.19 Environment Variables Affecting GCC ..................... 107 3.20 Running Protoize ........................................ 108 4 Installing GNU CC ......................... 111 4.1 Files Created by configure ................................ 112 4.2 Configurations Supported by GNU CC ...................... 113 4.3 Building and Installing a Cross-Compiler .................... 114 4.3.1 Steps of Cross-Compilation ........................ 114 4.3.2 Configuring a Cross-Compiler...................... 114 4.3.3 Tools and Libraries for a Cross-Compiler ........... 115 4.3.4 Cross-Compilers and Header Files .................. 116 4.3.5 Actually Building the Cross-Compiler .............. 116 4.4 Installing GNU CC on VMS................................ 117 4.5 collect2 ................................................. 119 4.6 Standard Header File Directories ........................... 120 5 Extensions to the C Language Family ........ 121 5.1 Statements and Declarations in Expressions ................. 121 5.2 Locally Declared Labels.................................... 122 5.3 Labels as Values .......................................... 122 5.4 Nested Functions .......................................... 123 5.5 Constructing Function Calls................................ 125 5.6 Naming an Expression’s Type .............................. 126 5.7 Referring to a Type with typeof ........................... 126 5.8 Generalized Lvalues ....................................... 127 5.9 Conditionals with Omitted Operands ....................... 128 5.10 Double-Word Integers .................................... 128 5.11 Complex Numbers........................................ 129 5.12 Hex Floats............................................... 129 5.13 Arrays of Length Zero .................................... 129 5.14 Arrays of Variable Length................................. 131 5.15 Macros with a Variable Number of Arguments. ............. 132 5.16 Slightly Looser Rules for Escaped Newlines................. 132 5.17 String Literals with Embedded Newlines ................... 132 5.18 Non-Lvalue Arrays May Have Subscripts ................... 133 5.19 Arithmetic on void- and Function-Pointers................. 133 5.20 Non-Constant Initializers ................................. 133 5.21 Compound Literals ....................................... 133 5.22 Designated Initializers .................................... 134 5.23 Case Ranges ............................................. 135 5.24 Cast to a Union Type .................................... 135 5.25 Mixed Declarations and Code ............................. 136 5.26 Declaring Attributes of Functions.......................... 136 5.27 Attribute Syntax ......................................... 142 5.28 Prototypes and Old-Style Function Definitions.............. 144 5.29 C++ Style Comments ..................................... 145 5.30 Dollar Signs in Identifier Names ........................... 145 5.31 The Character hESCi in Constants .......................... 145 5.32 Inquiring on Alignment of Types or Variables............... 145 5.33 Specifying Attributes of Variables ......................... 146 5.34 Specifying Attributes of Types ............................ 149 5.35 An Inline Function is As Fast As a Macro .................. 151 5.36 Assembler Instructions with C Expression Operands .......
Recommended publications
  • Compiling Sandboxes: Formally Verified Software Fault Isolation
    Compiling Sandboxes: Formally Verified Software Fault Isolation Frédéric Besson1[0000−0001−6815−0652], Sandrine Blazy1[0000−0002−0189−0223], Alexandre Dang1, Thomas Jensen1, and Pierre Wilke2[0000−0001−9681−644X] 1 Inria, Univ Rennes, CNRS, IRISA 2 CentraleSupélec, Inria, Univ Rennes, CNRS, IRISA Abstract. Software Fault Isolation (SFI) is a security-enhancing pro- gram transformation for instrumenting an untrusted binary module so that it runs inside a dedicated isolated address space, called a sandbox. To ensure that the untrusted module cannot escape its sandbox, existing approaches such as Google’s Native Client rely on a binary verifier to check that all memory accesses are within the sandbox. Instead of rely- ing on a posteriori verification, we design, implement and prove correct a program instrumentation phase as part of the formally verified com- piler CompCert that enforces a sandboxing security property a priori. This eliminates the need for a binary verifier and, instead, leverages the soundness proof of the compiler to prove the security of the sandbox- ing transformation. The technical contributions are a novel sandboxing transformation that has a well-defined C semantics and which supports arbitrary function pointers, and a formally verified C compiler that im- plements SFI. Experiments show that our formally verified technique is a competitive way of implementing SFI. 1 Introduction Isolating programs with various levels of trustworthiness is a fundamental se- curity concern, be it on a cloud computing platform running untrusted code provided by customers, or in a web browser running untrusted code coming from different origins. In these contexts, it is of the utmost importance to pro- vide adequate isolation mechanisms so that a faulty or malicious computation cannot compromise the host or neighbouring computations.
    [Show full text]
  • Working with System Frameworks in Python and Objective-C
    Working with System Frameworks in Python and Objective-C by James Barclay Feedback :) j.mp/psumac2015-62 2 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Dude, Where’s My Source Code? CODE https://github.com/futureimperfect/psu-pyobjc-demo https://github.com/futureimperfect/PSUDemo SLIDES https://github.com/futureimperfect/slides 3 Agenda 1. What are system frameworks, and why should you care? 2. Brief overview of the frameworks, classes, and APIs that will be demonstrated. 3. Demo 1: PyObjC 4. Demo 2: Objective-C 5. Wrap up and questions. 4 What’s a System Framework? …and why should you care? (OS X) system frameworks provide interfaces you need to write software for the Mac. Many of these are useful for Mac admins creating: • scripts • GUI applications • command-line tools Learning about system frameworks will teach you more about OS X, which will probably make you a better admin. 5 Frameworks, Classes, and APIs oh my! Cocoa CoreFoundation • Foundation • CFPreferences - NSFileManager CoreGraphics - NSTask • Quartz - NSURLSession - NSUserDefaults • AppKit - NSApplication 6 CoreFoundation CoreFoundation is a C framework that knows about Objective-C objects. Some parts of CoreFoundation are written in Objective-C. • Other parts are written in C. CoreFoundation uses the CF class prefix, and it provides CFString, CFDictionary, CFPreferences, and the like. Some Objective-C objects are really CF types behind the scenes.
    [Show full text]
  • Object Oriented Programming
    No. 52 March-A pril'1990 $3.95 T H E M TEe H CAL J 0 URN A L COPIA Object Oriented Programming First it was BASIC, then it was structures, now it's objects. C++ afi<;ionados feel, of course, that objects are so powerful, so encompassing that anything could be so defined. I hope they're not placing bets, because if they are, money's no object. C++ 2.0 page 8 An objective view of the newest C++. Training A Neural Network Now that you have a neural network what do you do with it? Part two of a fascinating series. Debugging C page 21 Pointers Using MEM Keep C fro111 (C)rashing your system. An AT Keyboard Interface Use an AT keyboard with your latest project. And More ... Understanding Logic Families EPROM Programming Speeding Up Your AT Keyboard ((CHAOS MADE TO ORDER~ Explore the Magnificent and Infinite World of Fractals with FRAC LS™ AN ELECTRONIC KALEIDOSCOPE OF NATURES GEOMETRYTM With FracTools, you can modify and play with any of the included images, or easily create new ones by marking a region in an existing image or entering the coordinates directly. Filter out areas of the display, change colors in any area, and animate the fractal to create gorgeous and mesmerizing images. Special effects include Strobe, Kaleidoscope, Stained Glass, Horizontal, Vertical and Diagonal Panning, and Mouse Movies. The most spectacular application is the creation of self-running Slide Shows. Include any PCX file from any of the popular "paint" programs. FracTools also includes a Slide Show Programming Language, to bring a higher degree of control to your shows.
    [Show full text]
  • Red Hat Enterprise Linux 6 Developer Guide
    Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Dave Brolley William Cohen Roland Grunberg Aldy Hernandez Karsten Hopp Jakub Jelinek Developer Guide Jeff Johnston Benjamin Kosnik Aleksander Kurtakov Chris Moller Phil Muldoon Andrew Overholt Charley Wang Kent Sebastian Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Edition 0 Author Dave Brolley [email protected] Author William Cohen [email protected] Author Roland Grunberg [email protected] Author Aldy Hernandez [email protected] Author Karsten Hopp [email protected] Author Jakub Jelinek [email protected] Author Jeff Johnston [email protected] Author Benjamin Kosnik [email protected] Author Aleksander Kurtakov [email protected] Author Chris Moller [email protected] Author Phil Muldoon [email protected] Author Andrew Overholt [email protected] Author Charley Wang [email protected] Author Kent Sebastian [email protected] Editor Don Domingo [email protected] Editor Jacquelynn East [email protected] Copyright © 2010 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
    [Show full text]
  • Using Restricted Transactional Memory to Build a Scalable In-Memory Database
    Using Restricted Transactional Memory to Build a Scalable In-Memory Database Zhaoguo Wang†, Hao Qian‡, Jinyang Li§, Haibo Chen‡ † School of Computer Science, Fudan University ‡ Institute of Parallel and Distributed Systems, Shanghai Jiao Tong University § Department of Computer Science, New York University Abstract However, the correctness of the resulting code is complex to reason about and relies on the processor’s (increasingly The recent availability of Intel Haswell processors marks the complex) memory model. transition of hardware transactional memory from research Recently, Intel has shipped its 4th-generation Haswell toys to mainstream reality. DBX is an in-memory database processor with support for Hardware Transactional Mem- that uses Intel’s restricted transactional memory (RTM) to ory [16]. This opens up a third possibility to scaling multi- achieve high performance and good scalability across multi- core software. Instead of relying on fine-grained locking core machines. The main limitation (and also key to practi- and atomic operations, one can synchronize using hardware cality) of RTM is its constrained working set size: an RTM transactions, which offer a programming model that is ar- region that reads or writes too much data will always be guably even more straightforward than mutual exclusion. aborted. The design of DBX addresses this challenge in sev- The promise is that the resulting implementation is much eral ways. First, DBX builds a database transaction layer on simpler and easier-to-understand while still retaining the top of an underlying shared-memory store. The two layers performance benefits of fine-grained locking. use separate RTM regions to synchronize shared memory Does hardware transactional memory actually deliver its access.
    [Show full text]
  • Schedule 14A Employee Slides Supertex Sunnyvale
    UNITED STATES SECURITIES AND EXCHANGE COMMISSION Washington, D.C. 20549 SCHEDULE 14A Proxy Statement Pursuant to Section 14(a) of the Securities Exchange Act of 1934 Filed by the Registrant Filed by a Party other than the Registrant Check the appropriate box: Preliminary Proxy Statement Confidential, for Use of the Commission Only (as permitted by Rule 14a-6(e)(2)) Definitive Proxy Statement Definitive Additional Materials Soliciting Material Pursuant to §240.14a-12 Supertex, Inc. (Name of Registrant as Specified In Its Charter) Microchip Technology Incorporated (Name of Person(s) Filing Proxy Statement, if other than the Registrant) Payment of Filing Fee (Check the appropriate box): No fee required. Fee computed on table below per Exchange Act Rules 14a-6(i)(1) and 0-11. (1) Title of each class of securities to which transaction applies: (2) Aggregate number of securities to which transaction applies: (3) Per unit price or other underlying value of transaction computed pursuant to Exchange Act Rule 0-11 (set forth the amount on which the filing fee is calculated and state how it was determined): (4) Proposed maximum aggregate value of transaction: (5) Total fee paid: Fee paid previously with preliminary materials. Check box if any part of the fee is offset as provided by Exchange Act Rule 0-11(a)(2) and identify the filing for which the offsetting fee was paid previously. Identify the previous filing by registration statement number, or the Form or Schedule and the date of its filing. (1) Amount Previously Paid: (2) Form, Schedule or Registration Statement No.: (3) Filing Party: (4) Date Filed: Filed by Microchip Technology Incorporated Pursuant to Rule 14a-12 of the Securities Exchange Act of 1934 Subject Company: Supertex, Inc.
    [Show full text]
  • 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]
  • Extending the UHC LLVM Backend: Adding Support for Accurate Garbage Collection
    Extending the UHC LLVM backend: Adding support for accurate garbage collection Paul van der Ende MSc Thesis October 18, 2010 INF/SCR-09-59 Daily Supervisors: Center for Software Technology dr. A. Dijkstra Dept. of Information and Computing Sciences drs. J.D. Fokker Utrecht University Utrecht, the Netherlands Second Supervisor: prof. dr. S.D. Swierstra Abstract The Utrecht Haskell Compiler has an LLVM backend for whole program analyse mode. This backend pre- viously used the Boehm-Weiser library for heap allocation and conservative garbage collection. Recently an accurate garbage collector for the UHC compiler has been developed. We wanted this new garbage collection library to work with the LLVM backend. But since this new collector is accurate, it needs cooperation with the LLVM backend. Functionality needs to be added to find the set of root references and traversing all live references. To find the root set, the bytecode interpreter backend currently uses static stack maps. This is where the problem arises. The LLVM compiler is known to do various aggressive transformations. These optimizations might change the stack layout described by the static stack map. So to avoid this problem we wanted to use the shadow-stack provided by the LLVM framework. This is a dynamic structure maintained on the stack to safely find the garbage collection roots. We expect that the shadow-stack approach comes with a runtime overhead for maintaining this information dynamically on the stack. So we did measure the impact of this method. We also measured the performance improvement of the new garbage collection method used and compare it with the other UHC backends.
    [Show full text]
  • Winappdbg Documentation Release 1.6
    WinAppDbg Documentation Release 1.6 Mario Vilas Aug 28, 2019 Contents 1 Introduction 1 2 Programming Guide 3 i ii CHAPTER 1 Introduction The WinAppDbg python module allows developers to quickly code instrumentation scripts in Python under a Win- dows environment. It uses ctypes to wrap many Win32 API calls related to debugging, and provides a powerful abstraction layer to manipulate threads, libraries and processes, attach your script as a debugger, trace execution, hook API calls, handle events in your debugee and set breakpoints of different kinds (code, hardware and memory). Additionally it has no native code at all, making it easier to maintain or modify than other debuggers on Windows. The intended audience are QA engineers and software security auditors wishing to test or fuzz Windows applications with quickly coded Python scripts. Several ready to use tools are shipped and can be used for this purposes. Current features also include disassembling x86/x64 native code, debugging multiple processes simultaneously and produce a detailed log of application crashes, useful for fuzzing and automated testing. Here is a list of software projects that use WinAppDbg in alphabetical order: • Heappie! is a heap analysis tool geared towards exploit writing. It allows you to visualize the heap layout during the heap spray or heap massaging stage in your exploits. The original version uses vtrace but here’s a patch to use WinAppDbg instead. The patch also adds 64 bit support. • PyPeElf is an open source GUI executable file analyzer for Windows and Linux released under the BSD license. • python-haystack is a heap analysis framework, focused on classic C structure matching.
    [Show full text]
  • Bringing GNU Emacs to Native Code
    Bringing GNU Emacs to Native Code Andrea Corallo Luca Nassi Nicola Manca [email protected] [email protected] [email protected] CNR-SPIN Genoa, Italy ABSTRACT such a long-standing project. Although this makes it didactic, some Emacs Lisp (Elisp) is the Lisp dialect used by the Emacs text editor limitations prevent the current implementation of Emacs Lisp to family. GNU Emacs can currently execute Elisp code either inter- be appealing for broader use. In this context, performance issues preted or byte-interpreted after it has been compiled to byte-code. represent the main bottleneck, which can be broken down in three In this work we discuss the implementation of an optimizing com- main sub-problems: piler approach for Elisp targeting native code. The native compiler • lack of true multi-threading support, employs the byte-compiler’s internal representation as input and • garbage collection speed, exploits libgccjit to achieve code generation using the GNU Com- • code execution speed. piler Collection (GCC) infrastructure. Generated executables are From now on we will focus on the last of these issues, which con- stored as binary files and can be loaded and unloaded dynamically. stitutes the topic of this work. Most of the functionality of the compiler is written in Elisp itself, The current implementation traditionally approaches the prob- including several optimization passes, paired with a C back-end lem of code execution speed in two ways: to interface with the GNU Emacs core and libgccjit. Though still a work in progress, our implementation is able to bootstrap a func- • Implementing a large number of performance-sensitive prim- tional Emacs and compile all lexically scoped Elisp files, including itive functions (also known as subr) in C.
    [Show full text]
  • Improving Memory Management Security for C and C++
    Improving memory management security for C and C++ Yves Younan, Wouter Joosen, Frank Piessens, Hans Van den Eynden DistriNet, Katholieke Universiteit Leuven, Belgium Abstract Memory managers are an important part of any modern language: they are used to dynamically allocate memory for use in the program. Many managers exist and depending on the operating system and language. However, two major types of managers can be identified: manual memory allocators and garbage collectors. In the case of manual memory allocators, the programmer must manually release memory back to the system when it is no longer needed. Problems can occur when a programmer forgets to release it (memory leaks), releases it twice or keeps using freed memory. These problems are solved in garbage collectors. However, both manual memory allocators and garbage collectors store management information for the memory they manage. Often, this management information is stored where a buffer overflow could allow an attacker to overwrite this information, providing a reliable way to achieve code execution when exploiting these vulnerabilities. In this paper we describe several vulnerabilities for C and C++ and how these could be exploited by modifying the management information of a representative manual memory allocator and a garbage collector. Afterwards, we present an approach that, when applied to memory managers, will protect against these attack vectors. We implemented our approach by modifying an existing widely used memory allocator. Benchmarks show that this implementation has a negligible, sometimes even beneficial, impact on performance. 1 Introduction Security has become an important concern for all computer users. Worms and hackers are a part of every day internet life.
    [Show full text]
  • Ethereal Developer's Guide Draft 0.0.2 (15684) for Ethereal 0.10.11
    Ethereal Developer's Guide Draft 0.0.2 (15684) for Ethereal 0.10.11 Ulf Lamping, Ethereal Developer's Guide: Draft 0.0.2 (15684) for Ethere- al 0.10.11 by Ulf Lamping Copyright © 2004-2005 Ulf Lamping Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or any later version published by the Free Software Foundation. All logos and trademarks in this document are property of their respective owner. Table of Contents Preface .............................................................................................................................. vii 1. Foreword ............................................................................................................... vii 2. Who should read this document? ............................................................................... viii 3. Acknowledgements ................................................................................................... ix 4. About this document .................................................................................................. x 5. Where to get the latest copy of this document? ............................................................... xi 6. Providing feedback about this document ...................................................................... xii I. Ethereal Build Environment ................................................................................................14 1. Introduction .............................................................................................................15
    [Show full text]