Getting Started
Getting Started
Getting Started
Sourcery CodeBench Lite: ARM GNU/Linux: Sourcery CodeBench Lite 2012.03-57: Getting Started
CodeSourcery, Inc. Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 CodeSourcery, Inc.
All rights reserved.
Abstract
This guide explains how to install and build applications with Sourcery CodeBench Lite, CodeSourcery's customized and validated version of the GNU Toolchain. Sourcery CodeBench Lite includes everything you need for application development, including C and C++ compilers, assemblers, linkers, and libraries. When you have nished reading this guide, you will know how to use Sourcery CodeBench from the command line.
Table of Contents
Preface ...................................................................................................................... v 1. Intended Audience ........................................................................................... vi 2. Organization ................................................................................................... vi 3. Typographical Conventions .............................................................................. vii 1. Quick Start .............................................................................................................. 1 1.1. Installation and Set-Up ................................................................................... 2 1.2. Conguring Sourcery CodeBench Lite for the Target System ................................. 2 1.3. Building Your Program ................................................................................... 2 1.4. Running and Debugging Your Program .............................................................. 2 2. Installation and Conguration ..................................................................................... 4 2.1. Terminology ................................................................................................. 5 2.2. System Requirements ..................................................................................... 5 2.3. Downloading an Installer ................................................................................. 6 2.4. Installing Sourcery CodeBench Lite .................................................................. 6 2.5. Installing Sourcery CodeBench Lite Updates ....................................................... 9 2.6. Setting up the Environment .............................................................................. 9 2.7. Uninstalling Sourcery CodeBench Lite ............................................................. 11 3. Sourcery CodeBench Lite for ARM GNU/Linux ........................................................... 13 3.1. Included Components and Features .................................................................. 14 3.2. Library Congurations .................................................................................. 14 3.3. Compiling for ARMv4T and ARMv5T Systems ................................................. 15 3.4. Target Kernel Requirements ........................................................................... 15 3.5. Target Dynamic Loader Requirements .............................................................. 15 3.6. Using Sourcery CodeBench Lite on GNU/Linux Targets ...................................... 16 3.7. Using GDB Server for Debugging ................................................................... 18 3.8. GLIBC Backtrace Support ............................................................................. 20 3.9. Using VFP Floating Point .............................................................................. 20 3.10. Fixed-Point Arithmetic ................................................................................ 21 3.11. ABI Compatibility ...................................................................................... 22 3.12. Object File Portability ................................................................................. 23 4. Using Sourcery CodeBench from the Command Line .................................................... 24 4.1. Building an Application ................................................................................. 25 4.2. Running Applications on the Target System ....................................................... 25 4.3. Running Applications from GDB .................................................................... 26 5. Sourcery CodeBench Debug Sprite ............................................................................ 27 5.1. Probing for Debug Devices ............................................................................ 28 5.2. Invoking Sourcery CodeBench Debug Sprite ..................................................... 28 5.3. Sourcery CodeBench Debug Sprite Options ...................................................... 29 5.4. Remote Debug Interface Devices ..................................................................... 30 5.5. Actel FlashPro Devices ................................................................................. 30 5.6. Debugging a Remote Board ........................................................................... 31 5.7. Supported Board Files ................................................................................... 31 5.8. Board File Syntax ........................................................................................ 32 6. Next Steps with Sourcery CodeBench ......................................................................... 36 6.1. Sourcery CodeBench Knowledge Base ............................................................. 37 6.2. Example Programs ....................................................................................... 37 6.3. Manuals for GNU Toolchain Components ......................................................... 37 A. Sourcery CodeBench Lite Release Notes .................................................................... 39 A.1. Changes in Sourcery CodeBench Lite for ARM GNU/Linux ................................ 40 B. Sourcery CodeBench Lite Licenses ........................................................................... 49 B.1. Licenses for Sourcery CodeBench Lite Components ........................................... 50
iii
B.2. Sourcery CodeBench Software License Agreement ............................................ 51 B.3. Attribution .................................................................................................. 54
iv
Preface
This preface introduces the Sourcery CodeBench Lite Getting Started guide. It explains the structure of this guide and describes the documentation conventions used.
Preface
1. Intended Audience
This guide is written for people who will install and/or use Sourcery CodeBench Lite. This guide provides a step-by-step guide to installing Sourcery CodeBench Lite and to building simple applications. Parts of this document assume that you have some familiarity with using the command-line interface.
2. Organization
This document is organized into the following chapters and appendices: Chapter 1, Quick Start This chapter includes a brief checklist to follow when installing and using Sourcery CodeBench Lite for the rst time. You may use this chapter as an abbreviated guide to the rest of this manual. This chapter describes how to download, install and congure Sourcery CodeBench Lite. This section describes the available installation options and explains how to set up your environment so that you can build applications. This chapter contains information about using Sourcery CodeBench Lite that is specic to ARM GNU/Linux targets. You should read this chapter to learn how to best use Sourcery CodeBench Lite on your target system. This chapter explains how to build applications with Sourcery CodeBench Lite using the command line. In the process of reading this chapter, you will build a simple application that you can use as a model for your own programs. This chapter describes the use of the Sourcery CodeBench Debug Sprite for remote debugging. The Sprite is provided for debugging of the Linux kernel on the target board. This chapter includes information about the debugging devices and boards supported by the Sprite for ARM GNU/Linux.
Chapter 4, Using Sourcery CodeBench from the Command Line Chapter 5, Sourcery CodeBench Debug Sprite
Chapter 6, Next Steps with Sourcery This chapter describes where you can nd additional docuCodeBench mentation and information about using Sourcery CodeBench Lite and its components. It also provides information about Sourcery CodeBench subscriptions. CodeSourcery customers with Sourcery CodeBench subscriptions receive comprehensive support for Sourcery CodeBench. Appendix A, Sourcery CodeBench Lite Release Notes This appendix contains information about changes in this release of Sourcery CodeBench Lite for ARM GNU/Linux. You should read through these notes to learn about new features and bug xes. This appendix provides information about the software licenses that apply to Sourcery CodeBench Lite. Read this appendix to understand your legal rights and obligations as a user of Sourcery CodeBench Lite.
vi
Preface
3. Typographical Conventions
The following typographical conventions are used in this guide: > command arg ... A command, typed by the user, and its output. The > character is the command prompt. The name of a program, when used in a sentence, rather than in literal input or output. Text provided to or received from a computer program. Text that should be replaced with an appropriate value when typing a command. At the end of a line in command or program examples, indicates that a long line of literal input or output continues onto the next line in the document.
command
literal placeholder
vii
Quick Start
Sourcery CodeBench Lite for ARM GNU/Linux is intended for developers working on embedded GNU/Linux applications. It may also be used for Linux kernel development and debugging, or to build a GNU/Linux distribution. Follow the steps given in this chapter to install Sourcery CodeBench Lite and build and run your rst application program. The checklist given here is not a tutorial and does not include detailed instructions for each step; however, it will help guide you to nd the instructions and reference information you need to accomplish each step. Note that this checklist is also oriented towards application debugging rather than kernel debugging. You can nd additional details about the components, libraries, and other features included in this version of Sourcery CodeBench Lite in Chapter 3, Sourcery CodeBench Lite for ARM GNU/Linux.
http://go.mentor.com/codebench/
Quick Start
Run your program on the ARM GNU/Linux target. To run a program using the included Sourcery CodeBench libraries, you must install the sysroot on the target, as previously discussed. Copy the executable for your program to the target system. The method you use for launching your program depends on how you have installed the libraries and built your program. In some cases, you may need to invoke the Sourcery CodeBench dynamic linker explicitly. Refer to Section 3.6, Using Sourcery CodeBench Lite on GNU/Linux Targets for details. Debug your program on the target using GDB server. You can use GDB server on a remote target to debug your program. When debugging a program that uses the included Sourcery CodeBench libraries, you must use the gdbserver executable included in the sysroot, and similar issues with respect to the dynamic linker as discussed previously apply. See Section 3.7, Using GDB Server for Debugging for detailed instructions. Once you have started GDB server on the target, you can connect to it from the debugger on your host system. Refer to Section 4.3, Running Applications from GDB for instructions on remote debugging from command-line GDB.
2.1. Terminology
Throughout this document, the term host system refers to the system on which you run Sourcery CodeBench while the term target system refers to the system on which the code produced by Sourcery CodeBench runs. The target system for this version of Sourcery CodeBench is arm-none-linux-gnueabi. If you are developing a workstation or server application to run on the same system that you are using to run Sourcery CodeBench, then the host and target systems are the same. On the other hand, if you are developing an application for an embedded system, then the host and target systems are probably different.
process. On Microsoft Windows hosts, the installer uses the location specied by the TEMP environment variable for these temporary les. If there is not enough free space on that volume, the installer prompts for an alternate location. On Linux hosts, the installer puts temporary les in the directory specied by the IATEMPDIR environment variable, or /tmp if that is not set.
1 2
http://go.mentor.com/codebench/ https://sourcery.mentor.com/GNUToolchain/
The graphical installer guides you through the steps to install Sourcery CodeBench Lite.
You may want to change the install directory pathname and customize the shortcut installation.
Choose Shortcut Folder. You can customize where the installer creates shortcuts for quick access to Sourcery CodeBench Lite. When the installer has nished, it asks if you want to launch a viewer for the Getting Started guide. Finally, the installer displays a summary screen to conrm a successful install before it exits.
Install Complete.
If you prefer, you can run the installer in console mode rather than using the graphical interface. To do this, invoke the installer with the -i console command-line option. For example: > /path/to/package.exe -i console
> /bin/sh ./path/to/package.bin After the installer starts, follow the on-screen dialogs to install Sourcery CodeBench Lite. For additional details on running the installer, see the discussion and screen shots in the Microsoft Windows section above. If you prefer, or if your host system does not run the X Window System, you can run the installer in console mode rather than using the graphical interface. To do this, invoke the installer with the -i console command-line option. For example: > /bin/sh ./path/to/package.bin -i console
10
directs Sourcery CodeBench Lite to use c:/cygwin/bin/cygpath as the path conversion utility. The value of CYGPATH must be an ordinary Windows path, not a Cygwin path.
11
To uninstall third-party drivers bundled with Sourcery CodeBench Lite, rst disconnect the associated hardware device. Then use Uninstall a program (Vista and newer) or Add or Remove Programs (older versions of Windows) to remove the drivers separately. Depending on the device, you may need to reboot your computer to complete the driver uninstall.
12
13
Debugging support and simulators GNU Debugger 7.2.50 Sourcery CodeBench Debug Sprite 2012.03-57 Provided for kernel debugging only. See for ARM Chapter 5, Sourcery CodeBench Debug Sprite. GDB Server Target libraries GNU C Library Linux Kernel Headers Other utilities GNU Make GNU Core Utilities N/A N/A Build support on Windows hosts. Build support on Windows hosts. 2.15 3.2.10 Separate manual included. N/A Included with GDB. See Section 3.7, Using GDB Server for Debugging.
ARMv4T - Little-Endian, Soft-Float, GLIBC Command-line option(s): Sysroot subdirectory: Dynamic linker: Notes: -march=armv4t armv4t/ lib/ld-linux.so.3 This should also be used for ARMv5T cores such as the ARM1020T.
ARMv7-A Thumb-2 - Little-Endian, Soft-Float, GLIBC Command-line option(s): Sysroot subdirectory: Dynamic linker: -mthumb -march=armv7-a thumb2/ lib/ld-linux.so.3
14
Sourcery CodeBench includes copies of run-time libraries that have been built with optimizations for different target architecture variants or other sets of build options. Each such set of libraries is referred to as a multilib. When you link a target application, Sourcery CodeBench selects the multilib matching the build options you have selected. Each multilib corresponds to a sysroot directory which contains the les that should be installed on the target system. The sysroot contains the dynamic linker used to run your applications on the target as well as the libraries. Refer to Section 3.6, Using Sourcery CodeBench Lite on GNU/Linux Targets for instructions on how to install and use these support les on your target GNU/Linux system. You can nd the sysroot directories provided with Sourcery CodeBench in the arm-none-linux-gnueabi/libc directory of your installation. In the tables below, the dynamic linker pathname is given relative to the corresponding sysroot.
https://sourcery.mentor.com/GNUToolchain/kbentry117
15
16
If you choose to overwrite your existing C library, you may not be able to boot your system. You should back up your existing system before overwriting the C library and ensure that you can restore the backup even with your system ofine. The next step is to identify the correct sysroot subdirectory in the Sourcery CodeBench Lite install directory on your host system. The sysroot you copy to the target must be the one that corresponds to the linker options you are using to build your applications. The tables in Section 3.2, Library Congurations tell you which sysroot subdirectories correspond to which sets of command-line options. From the command line, you can identify the appropriate sysroot for your program by invoking the compiler with -print-sysroot added to your other build options. This causes GCC to print the host sysroot pathname and exit. The mechanism you use for copying the sysroot to your target board depends on its hardware and software conguration. You may be able to use FTP or SSH with a server already running on your target. If your target board does not have networking congured, you may be able to copy les using an SD card or USB memory stick, or via a le transfer utility over a serial line. The instructions that come with your board may include specic suggestions. When running Sourcery CodeBench on a GNU/Linux host, as an alternative to copying les to the target system, you may be able to NFS-mount the Sourcery CodeBench Lite installation directory from your host system on the target system. It is especially convenient for debugging if you can make the sysroot pathname on the target system be identical to that on the GNU/Linux host system; refer to Section 3.7.3, Setting the Sysroot in the Debugger for further discussion of this issue. Otherwise, you must copy les from the appropriate sysroot subdirectory in the arm-none-linux-gnueabi/libc directory of your Sourcery CodeBench Lite install to the target system. In many cases, you do not need to copy all of the les in the sysroot. For example, the usr/include subdirectory contains les that are only needed if you will actually be running the compiler on your target system. You do not need these les for non-native compilers. You also do not need any .o or .a les; these are used by the compiler when linking programs, but are not needed to run programs. You should denitely copy all .so les and the executable les in usr/ bin and sbin.
17
3. Copy the executable to the target and execute it normally. Note that if you specify an incorrect path for --dynamic-linker, the common failure mode seen when running your application on the target is similar to > ./factorial ./factorial: No such file or directory or > ./factorial ./factorial: bad ELF interpreter: No such file or directory This can be quite confusing since it appears from the error message as if it is the ./factorial executable that is missing rather than the dynamic linker it references.
18
19
This causes GDB to replace all instances of the target-pathname prex in shared library pathnames reported by the target with host-pathname to get the location of the equivalent library on the host. If you have installed the sysroot in the root lesystem on the target, you can omit the set sysroot-on-target command, and use only set sysroot to specify the location on the host system. Refer to Section 3.6.1, Installing the Sysroot for more information about installing the sysroot on the target. Note that if you have installed a stripped copy of the provided libraries on the target, you should give GDB the location of an unstripped copy on the host.
20
Sourcery CodeBench Lite for ARM GNU/Linux includes libraries built with software oating point, which are compatible with VFP code compiled using the soft-oat ABI. While the compiler is capable of generating code using the VFP ABI, no compatible runtime libraries are provided in Sourcery CodeBench Lite. However, VFP hard-oat libraries built with both ABIs are available to Sourcery CodeBench Standard and Professional Edition subscribers. Note that, in addition to selecting hard/soft oat and the ABI via the -mfloat-abi option, you can also compile for a particular FPU using the -mfpu option. For example, -mfpu=neon selects VFPv3 with NEON coprocessor extensions.
21
long _Fract: One sign bit, 31 fractional bits unsigned short _Fract: 8 fractional bits unsigned _Fract: 16 fractional bits unsigned long _Fract: 32 fractional bits short _Accum: One sign bit, 7 fractional bits, 8 integral bits _Accum: One sign bit, 15 fractional bits, 16 integral bits long _Accum: One sign bit, 31 fractional bits, 32 integral bits unsigned short _Accum: 8 fractional bits, 8 integral bits unsigned _Accum: 16 fractional bits, 16 integral bits unsigned long _Accum: 32 fractional bits, 32 integral bits These values (and various other useful constants) are also dened in the header le stdfix.h for use in your programs. Note that there is currently no support for the new standard-library functions described in TR 18037, nor for the pragmas controlling precision of operations. Fixed-point extensions are not currently supported by GDB, nor are they compliant with the ARM EABI (which does not specify anything about xed-point types at present). Code using xed-point types cannot be expected to interact properly (across ABI boundaries) with code generated by other compilers for the ARM architecture.
http://infocenter.arm.com
22
ABI Addenda - ARM IHI 0045C (4 November 2009) Sourcery CodeBench currently produces DWARF version 2, rather than DWARF version 3 as specied in AADWARF.
23
24
25
26
27
Sourcery CodeBench Lite contains the Sourcery CodeBench Debug Sprite for ARM GNU/Linux. This Sprite is provided to allow debugging of programs running on a bare board. You can use the Sprite to debug a program when there is no operating system on the board, or for debugging the operating system itself. If the board is running an operating system, and you wish to debug a program running on that OS, you should use the facilities provided by the OS itself (for instance, using gdbserver). The Sprite acts as an interface between GDB and external debug devices and libraries. Refer to Section 5.2, Invoking Sourcery CodeBench Debug Sprite for information about the specic devices supported by this version of Sourcery CodeBench Lite. Note for Linux users The Debug Sprite provided with Sourcery CodeBench Lite allows remote debugging of the Linux kernel running on the target. For remote debugging of application programs, you should use gdbserver instead. See Chapter 3, Sourcery CodeBench Lite for ARM GNU/Linux for details about how to install and run gdbserver on the target. Important The Sourcery CodeBench Debug Sprite is not part of the GNU Debugger and is not free or open-source software. You may use the Sourcery CodeBench Debug Sprite only with the GNU Debugger. You may not distribute the Sourcery CodeBench Debug Sprite to any third party.
28
The device-url species the debug device to use to communicate with the board. It follows the standard format: scheme:scheme-specific-part[?device-options] Most device URL schemes also follow the regular format: scheme:[//hostname:[port]]/path[?device-options] The meanings of hostname, port, path and device-options parts depend on the scheme and are described below. The following schemes are supported in Sourcery CodeBench Lite for ARM GNU/Linux: rdi Use an RDI debugging device. Refer to Section 5.4, Remote Debug Interface Devices. Use a FlashPro debugging device. Refer to Section 5.5, Actel FlashPro Devices.
flashpro
The optional ?device-options portion is allowed in all schemes. These allow additional devicespecic options of the form name=value. Multiple options are concatenated using &. The board-file species an XML le that describes how to initialize the target board, as well as other properties of the board used by the debugger. If board-file refers to a le (via a relative or absolute pathname), it is read. Otherwise, board-file can be a board name, and the toolchain's board directory is searched for a matching le. See Section 5.7, Supported Board Files for the list of supported boards, or invoke the Sprite with the -b option to list the available board les. You can also write a custom board le; see Section 5.8, Board File Syntax for more information about the le format. Both the device-url and board-file command-line arguments are required to correctly connect the Sprite to a target board.
-i
-l [host]:port
-m
29
makes it listen for a subsequent connection. To terminate the Sprite, open a connection and send the string END\n. -q -v Do not print any messages. Print additional messages.
If any of -b, -i or -h are given, the Debug Sprite terminates after providing the information rather than waiting for a debugger connection.
rdi-config=configfile
30
software to congure the FPGA on your Cortex-M1 board, but it does not need to be running when using the Debug Sprite. Once you have set up your board using the FlashPro software, you can check that it is recognized by the Sourcery CodeBench Debug Sprite by running the following command: > arm-none-linux-gnueabi-sprite -i flashpro: [jtagclock=<n:93750-4000000>] FlashPro flashpro://usb12345/ - FlashPro Device ... If output similar to the above does not appear, your FlashPro device is not working correctly. Contact CodeSourcery for further guidance in that case.
https://sourcery.mentor.com/GNUToolchain/kbentry132
31
32
<!ELEMENT wait-until-memory-not-equal EMPTY> <!ATTLIST wait-until-memory-not-equal address CDATA #REQUIRED value CDATA #REQUIRED timeout CDATA #IMPLIED bits CDATA #IMPLIED> <!ELEMENT memory-map (memory-device)*> <!ELEMENT memory-device (property*, description?, sectors*)> <!ATTLIST memory-device address CDATA #REQUIRED size CDATA #REQUIRED type CDATA #REQUIRED device CDATA #IMPLIED> <!ELEMENT description (#PCDATA)> <!ELEMENT property (#PCDATA)> <!ATTLIST property name CDATA #REQUIRED> <!ELEMENT sectors EMPTY> <!ATTLIST sectors size CDATA #REQUIRED count CDATA #REQUIRED> <!-- Definition of default option values for each debug interface --> <!ELEMENT debuggerDefaults (debugInterface*)> <!ELEMENT debugInterface (option*)> <!ATTLIST debugInterface name CDATA #REQUIRED > <!ELEMENT option EMPTY> <!ATTLIST option name CDATA #REQUIRED defaultValue CDATA #REQUIRED > <!ENTITY % gdbtarget SYSTEM "gdb-target.dtd"> %gdbtarget; All values can be provided in decimal, hex (with a 0x prex) or octal (with a 0 prex). Addresses and memory sizes can use a K, KB, M, MB, G or GB sufx to denote a unit of memory. Times must use a ms or us sufx. The following elements are available: <board> This top-level element encapsulates the entire description of the board. It can contain <category>, <properties>, <feature>, <initialize> and <memory-map> elements. The <category> element species a '.' separated categorization of this board (e.g., Vendor.Family) to allow grouping similar boards in a tree structure.
<category>
33
<properties>
The <properties> element species specic properties of the target system. This element can occur at most once. It can contain a <description> element. It can also contain <property> elements with the following names: banked-regs The banked-regs property species that the CPU of the target board has banked registers for different processor modes (supervisor, IRQ, etc.). The has-vfp property species that the CPU of the target board has VFP registers. The system-v6-m property species that the CPU of the target board has ARMv6-M architecture system registers. The system-v7-m property species that the CPU of the target board has ARMv7-M architecture system registers. The core-family property species the ARM family of the target. The body of the <property> element may be one of arm7, arm9, arm11, and cortex. This property species the target clock frequency (in Hertz) after reset. It is used to congure ash programming algorithms.
has-vfp
system-v6-m
system-v7-m
core-family
system-clock
<initialize>
The <initialize> element denes an initialization sequence for the board, which the Sprite performs before downloading a program. It can contain <write-register>, <write-memory> and <delay> elements. This element is used to inform GDB about additional registers and peripherals available on the board. It is passed directly to GDB; see the GDB manual for further details. This element describes the memory map of the target board. It is used by GDB to determine where software breakpoints may be used and when ash programming sequences must be used. This element can occur at most once. It can contain <memory-device> elements. This element species a region of memory. It has four attributes: address, size, type and device. The address and size attributes specify the location of the memory device. The type attribute species that device as ram, rom or flash. The device attribute is required for flash regions; it species the ash device type. The <memory-device> element can contain a <description> element. This element writes a value to a control register. It has three attributes: address, value and bits. The bits attribute, specifying the bit width of the write operation, is optional; it defaults to 32.
<feature>
<memory-map>
<memory-device>
<write-register>
34
<write-memory>
This element writes a value to a memory location. It has three attributes: address, value and bits. The bits attribute is optional and defaults to 32. Bit widths of 8, 16 and 32 bits are supported. The address written to must be naturally aligned for the size of the write being done. This element introduces a delay. It has one attribute, time, which species the number of milliseconds, or microseconds to delay by. This element encapsulates a human-readable description of its enclosing element. The <property> element allows additional name/value pairs to be specied. The property name is specied in a name attribute. The property value is the body of the <property> element.
<delay>
<description>
<property>
35
36
https://sourcery.mentor.com/GNUToolchain/
37
Finally, note that every command-line utility program included with Sourcery CodeBench Lite can be invoked with a --help option. This prints a brief description of the arguments and options to the program and exits without doing further processing.
38
39
Internal compiler error. A GCC bug has been xed that caused an internal compiler error when sign extending the result of an array subscript expression with an index greater than 255. GCC version 4.6. Sourcery CodeBench Lite for ARM GNU/Linux is now based on GCC version 4.6. For more information about changes from GCC version 4.5 that was included in previous releases, see http://gcc.gnu.org/gcc-4.6/changes.html. Fix for internal compiler error. A GCC bug has been xed that caused an internal compiler error when using pointer casts in C++0x constexpr initialization expressions. ARM VFP9-S errata workaround. A compiler workaround for ARM Errata Notice GENC010704 (760019: Canceled FDIV or FSQRT can be executed twice) has been implemented. Fix for bit-eld optimization bug. A compiler bug that caused incorrect code to be generated for programs using bit-elds has been xed. GCC version 4.6.3. Sourcery CodeBench Lite for ARM GNU/Linux is now based on GCC version 4.6.3. For more information about issues that have been xed since version 4.6.1, see http://gcc.gnu.org/gcc-4.6/changes.html. Compiler crash xed. A GCC bug that occasionally caused an internal compiler error during register allocation has been xed. Map le name demangling bug x. GCC now properly passes the --demangle and --no-demangle options to the linker to control map le output. The default behavior on all hosts is now to demangle C++ names. GCC stack usage improvement. GCC now generates better code for stack allocation in some cases when compiling with -fno-strict-aliasing. ARM miscompilation x. A bug has been xed that caused miscompilation of some expressions involving the minimum or maximum idiom, such as (a > 0) ? a : 0.
40
Linker COMDAT group code size optimization. The linker supports a new option -Wl,--shared-comdat that causes it to resolve COMDAT group symbols to denitions provided by shared libraries when possible, discarding any duplicate denitions of the group in relocatable les included in the link. This optimization can produce smaller C++ executables and shared libraries at the expense of additional runtime overhead. Linker --gc-sections option bug x. A bug has been xed that caused the linker to incorrectly remove the .debug_types section when using the --gc-sections option. Linker --gc-sections bug x. A linker bug that incorrectly caused undened references to be diagnosed when the --gc-sections option is used has been xed. Binutils version 2.21. version 2.21. Sourcery CodeBench Lite for ARM GNU/Linux is now based on binutils
Assembler crash. The assembler now warns when there is line information for the *ABS* section, rather than crash. This can occur when the .offset directive is used incorrectly. Installer failure during upgrade. Some recent releases were affected by an installer bug on Windows hosts that caused installing a newer version of Sourcery CodeBench Lite into the same directory to fail with the error Sourcery CodeBench Lite for ARM GNU/Linux upgrade failed. This bug has now been xed, but the affected releases cannot be upgraded. As a workaround, uninstall the older release before installing the new version. Freescale i.MX53 QSB support. QSB board. Sourcery CodeBench Lite now supports the Freescale i.MX53
RPC library functions. GLIBC has been changed so that programs may again be built to use its RPC library functions. The ability to build programs using these functions had previously been disabled. zic bug x. A bug has been xed in GLIBC's zic command (included in the target sysroot) that caused too many transitions errors on some valid input les. EGLIBC version 2.15. Sourcery CodeBench Lite for ARM GNU/Linux now includes EGLIBC version 2.15 library which is based on GNU C Library version 2.15. For more information about changes, see http://www.eglibc.org/news#eglibc_2_15. Linux kernel headers update. Linux kernel headers update. Linux kernel headers update. Linux kernel header les have been updated to version 2.6.39. Linux kernel header les have been updated to version 3.0.1. Linux kernel header les have been updated to version 3.2.10.
Fix for crash in GDB maint print arch. A bug in the GDB command maint print arch that sometimes caused GDB to crash has been xed. C++ debugging bug x. A GDB bug has been xed that caused GDB to fail to nd enum constants in base classes when debugging C++ code. Fix for crash in GDB. A memory corruption bug in GDB has been xed that under very rare circumstances made it crash or exhibit other unpredictable behavior. On GNU/Linux hosts, this bug caused crashes with an error message similar to: *** glibc detected ***
41
arm-none-linux-gnueabi-gdb: free(): invalid next size (normal): 0x09466198 *** followed by a backtrace. GDB interrupt handling bug x. A bug in GDB has been xed that caused it to sometimes fail to interrupt lengthy single-step operations (as by a Ctrl+C when using GDB from the command line). Fix debugger remote target interruption. A bug in GDB's handling of requests to interrupt execution on a remote target has been xed that caused it to stop the target but not emit a stopped MI record. Fix GDB crash during connection to debug agent. A bug has been xed that caused GDB to crash while connecting to any debug agent through standard IO where the debug agent had detected an early error and terminated the communication. GDB internal error x. A bug has been xed that caused GDB to produce messages of the form: warning: (Internal error: pc 0x1000a0 in read in psymtab, but not in symtab.) when taking the addresses of symbols from objects added with the add-symbol-file command. Improved disassembler performance in the debugger. to use more efcient memory access on remote targets. GDB's disassembler has been improved
Fix GDB crash in debugging Thumb assembly routines. A bug in GDB has been xed that caused a crash when debugging Thumb assembly routines that switch stacks by writing the stack pointer in the function prologue. Debug Sprite option defaults. The Sourcery CodeBench Debug Sprite now uses default option values specied in board conguration les. Options included in the device URL override the default values. Changes to host operating system requirements. The minimum required Microsoft Windows OS needed to run Sourcery CodeBench Lite is now Windows XP (SP1).
42
Thumb debug information x. A compiler bug that resulted in incorrect debug information for Thumb code has been xed. The incorrect information prevented single stepping through some code. Internal compiler error with pointer casting. A compiler bug has been xed that caused internal compiler errors when accessing double-word memory locations with casted pointers under ARM mode. Unaligned access support. The compiler now generates more efcient code for accessing packed data structures and for copying small blocks of unaligned data when targeting architectures that permit unaligned word/halfword accesses. This feature can be controlled by the -munaligned-access and -mno-unaligned-access options, and is enabled by default for ARMv6 processors and above, except for ARMv6-M. Internal compiler error under Thumb mode. compiler errors when generating Thumb code. A compiler bug has been xed that caused internal
EGLIBC version 2.13. Sourcery G++ Lite for ARM GNU/Linux now includes EGLIBC version 2.13 library which is based on GNU C Library version 2.13. For more information about changes, see http://www.eglibc.org/news#eglibc_2_13.
Smaller and faster code for compound conditionals. Removal of superuous sign and zero extensions. Improved code for multiply-and-accumulate operations on ARM. Internal compiler error with NEON intrinsics. A compiler bug has been xed that caused internal compiler errors when using certain NEON intrinsics. GCC version 4.5.2. 4.5.2. Sourcery G++ Lite for ARM GNU/Linux is now based on GCC version
GCC code generation bug for casts to volatile types. A compiler bug has been xed that sometimes caused incorrect code for references to pointers to types with volatile casts. Incorrect optimization x. An optimizer bug that in rare cases caused incorrect code to be generated for complex AND and OR expressions containing redundant subexpressions has been xed. Incorrect C++ warning xed. A bug in GCC has been xed that caused spurious warnings about lambda expressions in C++ code that does not use them. GCC xes for NEON in big-endian mode. Several compiler bugs have been xed that could lead to incorrect code when using NEON in big-endian mode. The problems only manifested when using the auto-vectorizer (enabled by default at the -O3 optimization level) with the -mvectorize-with-neon-quad option.
43
GCC x for thread-local storage. A compiler optimization bug has been xed that affected accesses to thread-local storage. The bug resulted in assembler errors of the form symbol `.LPIC2' is already defined. Incorrect code for built-in comparison functions. A bug has been xed that sometimes caused GCC's built-in comparison functions, such as __builtin_isgreaterequal, to incorrectly raise exceptions when invoked on unordered oating-point arguments. C++ exception handling. A defect in the implementation of the EH-ABI specication has been xed. The defect affected the catching of pointer types in code generated by the ARM RealView compiler but using the Sourcery G++ runtime libraries. The x also retains backward compatibility with existing GCC-compiled code. GCC bug where accesses to volatile structure elds are optimized away. A bug has been xed where accesses to volatile elds of a structure were sometimes incorrectly optimized away if the structure instance was dened as non-volatile. Internal compiler error xes. Two bugs have been xed that caused compiler crashes in rare cases. The rst bug involved code with multiple comparison operations, and the second one involved char to int conversion. Thumb-2 assembler validation x. The assembler now correctly rejects Thumb-2 ADD, ADDS, SUB, and SUBS instructions that have an invalid shift operand. Previously, invalid shift values were accepted and generated unpredictable instructions. Objdump x for multiple input les. The Objdump utility did not produce correct disassembly when processing multiple input les. This has been xed. popen bug x. GLIBC's popen function no longer causes a deadlock situation when invoked from more than one thread. strstr and strcasestr bug xes. A problem has been xed that caused GLIBC's strstr and strcasestr functions to return wrong results on certain inputs. Linux kernel headers update. Linux kernel header les have been updated to version 2.6.38.
Improved GDB startup times when debugging remote targets . GDB has been enhanced to reduce the startup times when working with remote targets via GDBServer, especially when the target uses a large number of shared libraries.
44
the width that conforms to its type. This option is enabled by default to conform to the ARM EABI. Refer to the GCC manual for details. Internal compiler error xes. A bug has been xed that caused the compiler to crash on code containing a typedef alias for __builtin_va_list with option -femit-struct-debug-baseonly. This bug affected compiling the Linux kernel. A second bug has been xed that caused a crash when compiling code using C99 variable-length arrays. Additionally, a compiler crash on code using 64-bit integer multiplications with NEON vectorization enabled has also been xed. NEON narrowing-move instructions. The compiler now supports narrowing-move instructions when auto-vectorizing for NEON. Loops accessing arrays of char or short values are now more likely to be vectorized. Improved support for atomic memory builtins. The compiler support for built-in atomic memory access operations on ARMv7 targets has been improved. These builtins are documented in the GCC manual. Improved thread-local storage access. Sourcery G++ Lite now implements the TLS Descriptor access model, which provides faster access to thread-local storage from shared libraries and positionindependent executables. This GCC option, which is enabled by default, additionally requires support from the dynamic loader. Code built with older versions of Sourcery G++ continues to work with the included loader. For more information, refer to Section 3.5, Target Dynamic Loader Requirements. Linker debug information x. A bug in linker processing of debug information has been xed. The bug sometimes prevented the Sourcery G++ debugger from displaying source code if the executable was linked with the --gc-sections option. Absolute branch bug xes. A bug that caused the assembler to crash on a branch to an absolute address has been xed. Linker handling of the resulting relocations has also been improved. Previously this caused an invalid switch to ARM mode on ARMv7-M devices. VMOV instruction bug x. A bug that caused the assembler to incorrectly reject certain valid immediate operands for the VMOV instruction has been xed.
Precision improvement with vectorization enabled. The GCC auto-vectorizer no longer uses NEON oating-point instructions unless the -funsafe-math-optimizations option (implied by -ffast-math) is specied. This is because NEON hardware does not fully support the IEEE 754 standard for oating-point arithmetic. In particular, very small quantities may be ushed to zero.
https://support.codesourcery.com/GNUToolchain/kbentry1
45
Alignment attributes. A bug has been xed that caused the compiler to ignore alignment attributes of C++ static member variables where the attribute was present on the denition, but not the declaration. naked attribute semantics. The naked function attribute now also implies the noinline and noclone attributes. This xes bugs resulting from invalid optimizations of functions with this attribute. Stack corruption bug x. A bug in GCC has been xed that caused stack corruption in functions with the interrupt attribute. GCC bug x for push multiple instruction generation. A bug has been xed that caused GCC to generate incorrect push multiple instructions, causing an assembler warning register range not in ascending order. Thumb-2 internal compiler error x. A bug has been xed that caused the compiler to crash when compiling Thumb-2 code using 64-bit integer arithmetic. Compiler optimization improvements. timization improvements, including: The compiler has been enhanced with a number of op-
More efcient assignment for structures containing bitelds. Better code for initializing C++ arrays with explicit element initializers. Improved logic for eliminating/combining redundant comparisons in code with nested conditionals. Better selection of loop variables, resulting in fewer temporaries and more efcient register usage. More optimization of references to globals in position-independent code. Various Thumb code generation improvements. Better code when constant addresses are used as arguments to inline assembly statements. Better code for copying small constant strings. Improved tuning for Cortex-M4 processors. Cortex-A9 specic tuning for VFP and NEON instructions. Use of more NEON features. Preprocessor symbols for oating-point calling convention. Built-in preprocessor symbols __ARM_PCS and __ARM_PCS_VFP are now dened to indicate the current oating-point calling convention. GCC version 4.5.1. Sourcery G++ Lite for ARM GNU/Linux is now based on GCC version 4.5.1. For more information about changes from GCC version 4.4 that was included in previous releases, see http://gcc.gnu.org/gcc-4.5/changes.html. C++ locale support. The C++ standard library now includes locale support.
New -Wdouble-promotion warning option. The compiler has a new option, -Wdouble-promotion, which enables warnings about implicit promotions of float values to double. This option is useful when compiling code for processors (such as ARM Cortex-M4) that
46
have hardware support for single-precision oating-point arithmetic only, where unintentional use of double precision results in dramatically slower code. Linker bug x. A bug that caused the linker error relocation truncated to fit: R_ARM_THM_JUMP24 when linking some Thumb-2 applications has been xed. Assembler PC-relative store x. A bug that caused the assembler to reject some valid PC-relative store instructions has been xed. It now issues a warning instead for architectures where these instructions are deprecated. ARMv7-A linker bug x. A bug in the linker support for --fix-cortex-a8, which is enabled by default when linking ARMv7-A objects, has been xed. Programs affected by the bug sometimes crashed with segmentation fault or illegal instruction errors. Smaller C++ programs with -g. An assembler bug has been xed that caused unnecessary references to exception-handling routines from C++ programs when debug information is enabled. For programs that do not otherwise use exceptions, this change results in smaller code size. Additional validation in the assembler. The assembler now diagnoses an error, instead of producing an invalid object le, when directives such as .hidden are missing operands. Assembler PC-relative load x. An assembler bug that caused the assembler to reject some references to global symbols has been xed. This bug affected Thumb instructions of the form ldr r0, symbol. Strip bug x. A bug in the strip and objcopy utilities, which resulted in stripped object les that the linker could not recognize, has been xed. Binutils update. The binutils package has been updated to version 2.20.51.20100809 from the FSF trunk. This update includes numerous bug xes. More efcient process creation functions. The system and popen functions provided by GLIBC have been improved to require less memory when memory overcommit is disabled in the Linux kernel. Optimized string and memory functions. The performance of GLIBC's string and memory functions, including strstr and memmem, have been signicantly improved for large inputs. Linux kernel headers update. Linux kernel header les have been updated to version 2.6.35.2.
Improved support for debugging RealView C++ programs . GDB has been enhanced to handle some debug information contained in binaries produced by the ARM RealView compiler. Formerly, GDB sometimes crashed on programs which use C++ templates. Another bug has been xed that caused GDB to fail to place breakpoints in binaries produced by the ARM RealView compiler when the source le location for the breakpoint was specied as an absolute pathname. GDB update. The included version of GDB has been updated to 7.2.50.20100908. This update adds numerous bug xes and new features, including improved C++ language support, a new command to save breakpoints to a le, a new convenience variable $_thread that holds the number of the current thread, among many other improvements. GDB crash x. A bug has been xed that caused GDB to crash on launch if the environment variable CYGPATH is set to a program that does not exist or cannot be executed.
47
48
49
Sourcery CodeBench Debug Sprite for CodeSourcery License ARM GNU C Library Linux Kernel Headers GNU Make GNU Core Utilities GNU Lesser General Public License 2.1 http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU General Public License 2.0 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License 2.0 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU General Public License 2.0 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
The CodeSourcery License is available in Section B.2, Sourcery CodeBench Software License Agreement. Important Although some of the licenses that apply to Sourcery CodeBench Lite are free software or open source software licenses, none of these licenses impose any obligation on you to reveal the source code of applications you build with Sourcery CodeBench Lite. You can develop proprietary applications and libraries with Sourcery CodeBench Lite. Sourcery CodeBench Lite may include some third party example programs and libraries in the share/sourceryg++-arm-none-linux-gnueabi-examples subdirectory. These examples are not covered by the Sourcery CodeBench Software License Agreement. To the extent permitted by law, these examples are provided by CodeSourcery as is with no warranty of any kind, including implied warranties of merchantability or tness for a particular purpose. Your use of each example is governed by the license notice (if any) it contains.
50
2. 3.
3.2. 3.3.
3.4.
4.
License Grant to Proprietary Components of the Software. You are granted a non-exclusive, royalty-free license (a) to install and use the Mentor Graphics Proprietary Components of the Software, (b) to transmit the Mentor Graphics Proprietary Components over an internal computer network, (c) to copy the Mentor Graphics Proprietary Components for Your internal use only, and (d) to distribute the Redistributable Component(s) in binary form only and only as part of Licensee object code developed with the Software that provides substantially different functionality than the Redistributable Component(s). Restrictions. You may not: (i) copy or permit others to use the Mentor Graphics Proprietary Components of the Software, except as expressly provided above; (ii) distribute the Mentor Graphics Proprietary Components of the Software to any third party, except as expressly provided above; or (iii) reverse engineer, decompile, or disassemble the Mentor Graphics Proprietary Components of the Software, except to the extent this restriction is expressly prohibited by applicable law. 5.1.
5.
6.
Free Software or Open Source License to Certain Components of the Software. This Agreement does not limit Your rights under, or grant You rights that supersede, the license terms of any Open Source Software Component delivered to You by Mentor Graphics. Sourcery
51
CodeBench includes components provided under various different licenses. The Getting Started Guide provides an overview of which license applies to different components, and, for components subject to the Eclipse Public License, contains information on how to obtain the source code. Denitive licensing information for each free software or open source component is available in the relevant source le. 7. Mentor Graphics Trademarks. Notwithstanding any provision in a free software or open source license agreement applicable to a component of the Software that permits You to distribute such component to a third party in source or binary form, You may not use any Mentor Graphics trademark, whether registered or unregistered, including without limitation, CodeSourcery, Sourcery CodeBench, the CodeSourcery crystal ball logo, or the Sourcery CodeBench splash screen, or any confusingly similar mark, in connection with such distribution, and You may not recompile the Open Source Software Components with the --with-pkgversion or --with-bugurl conguration options that embed Mentor Graphics trademarks in the resulting binary. Term and Termination. This Agreement shall remain in effect unless terminated pursuant to this provision. Mentor Graphics may terminate this Agreement upon seven (7) days written notice of a material breach of this Agreement if such breach is not cured; provided that the unauthorized use, copying, or distribution of the Mentor Graphics Proprietary Components of the Software will be deemed a material breach that cannot be cured. Transfers. You may not transfer any rights under this Agreement without the prior written consent of Mentor Graphics, which consent shall not be unreasonably withheld. A condition to any transfer or assignment shall be that the recipient agrees to the terms of this Agreement. Any attempted transfer or assignment in violation of this provision shall be null and void.
8.
9.
10. Ownership. Mentor Graphics owns and/or has licensed the Mentor Graphics Proprietary Components of the Software and all intellectual property rights embodied therein, including copyrights and valuable trade secrets embodied in its design and coding methodology. The Mentor Graphics Proprietary Components of the Software are protected by United States copyright laws and international treaty provisions. Mentor Graphics also owns all rights, title and interest in and with respect to its trade names, domain names, trade dress, logos, trademarks, service marks, and other similar rights or interests in intellectual property. This Agreement provides You only a limited use license, and no ownership of any intellectual property. 11. Warranty Disclaimer; Limitation of Liability. MENTOR GRAPHICS AND ITS LICENSORS PROVIDE THE SOFTWARE AS-IS AND PROVIDED WITH ALL FAULTS. MENTOR GRAPHICS DOES NOT MAKE ANY WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. MENTOR GRAPHICS SPECIFICALLY DISCLAIMS THE IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, SYSTEM INTEGRATION, AND DATA ACCURACY. THERE IS NO WARRANTY OR GUARANTEE THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED, ERROR-FREE, OR VIRUS-FREE, OR THAT THE SOFTWARE WILL MEET ANY PARTICULAR CRITERIA OF PERFORMANCE, QUALITY, ACCURACY, PURPOSE, OR NEED. YOU ASSUME THE ENTIRE RISK OF SELECTION, INSTALLATION, AND USE OF THE SOFTWARE. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS AGREEMENT. NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 12. Local Law. If implied warranties may not be disclaimed under applicable law, then ANY IMPLIED WARRANTIES ARE LIMITED IN DURATION TO THE PERIOD REQUIRED BY APPLICABLE LAW.
52
13. Limitation of Liability. INDEPENDENT OF THE FORGOING PROVISIONS, IN NO EVENT AND UNDER NO LEGAL THEORY, INCLUDING WITHOUT LIMITATION, TORT, CONTRACT, OR STRICT PRODUCTS LIABILITY, SHALL MENTOR GRAPHICS BE LIABLE TO YOU OR ANY OTHER PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER MALFUNCTION, OR ANY OTHER KIND OF COMMERCIAL DAMAGE, EVEN IF MENTOR GRAPHICS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY TO THE EXTENT PROHIBITED BY APPLICABLE LAW. IN NO EVENT SHALL MENTOR GRAPHICS' LIABILITY FOR ACTUAL DAMAGES FOR ANY CAUSE WHATSOEVER, AND REGARDLESS OF THE FORM OF ACTION, EXCEED THE AMOUNT PAID BY YOU IN FEES UNDER THIS AGREEMENT DURING THE PREVIOUS ONE YEAR PERIOD. 14. Export Controls. You agree to comply with all export laws and restrictions and regulations of the United States or foreign agencies or authorities, and not to export or re-export the Software or any direct product thereof in violation of any such restrictions, laws or regulations, or without all necessary approvals. As applicable, each party shall obtain and bear all expenses relating to any necessary licenses and/or exemptions with respect to its own export of the Software from the U.S. Neither the Software nor the underlying information or technology may be electronically transmitted or otherwise exported or re-exported (i) into Cuba, Iran, Iraq, Libya, North Korea, Sudan, Syria or any other country subject to U.S. trade sanctions covering the Software, to individuals or entities controlled by such countries, or to nationals or residents of such countries other than nationals who are lawfully admitted permanent residents of countries not subject to such sanctions; or (ii) to anyone on the U.S. Treasury Department's list of Specially Designated Nationals and Blocked Persons or the U.S. Commerce Department's Table of Denial Orders. By downloading or using the Software, Licensee agrees to the foregoing and represents and warrants that it complies with these conditions. 15. U.S. Government End-Users. The Software is a commercial item, as that term is dened in 48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software and commercial computer software documentation, as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire the Software with only those rights set forth herein. 16. Licensee Outside The U.S. If You are located outside the U.S., then the following provisions shall apply: (i) Les parties aux presentes conrment leur volonte que cette convention de meme que tous les documents y compris tout avis qui siy rattache, soient rediges en langue anglaise (translation: The parties conrm that this Agreement and all related documentation is and will be in the English language.); and (ii) You are responsible for complying with any local laws in your jurisdiction which might impact your right to import, export or use the Software, and You represent that You have complied with any regulations or registration procedures required by applicable law to make this license enforceable. 17. Severability. If any provision of this Agreement is declared invalid or unenforceable, such provision shall be deemed modied to the extent necessary and possible to render it valid and enforceable. In any event, the unenforceability or invalidity of any provision shall not affect any other provision of this Agreement, and this Agreement shall continue in full force and effect, and be construed and enforced, as if such provision had not been included, or had been modied as above provided, as the case may be. 18. Arbitration. Except for actions to protect intellectual property rights and to enforce an arbitrator's decision hereunder, all disputes, controversies, or claims arising out of or relating to
53
this Agreement or a breach thereof shall be submitted to and nally resolved by arbitration under the rules of the American Arbitration Association (AAA) then in effect. There shall be one arbitrator, and such arbitrator shall be chosen by mutual agreement of the parties in accordance with AAA rules. The arbitration shall take place in Granite Bay, California, and may be conducted by telephone or online. The arbitrator shall apply the laws of the State of California, USA to all issues in dispute. The controversy or claim shall be arbitrated on an individual basis, and shall not be consolidated in any arbitration with any claim or controversy of any other party. The ndings of the arbitrator shall be nal and binding on the parties, and may be entered in any court of competent jurisdiction for enforcement. Enforcements of any award or judgment shall be governed by the United Nations Convention on the Recognition and Enforcement of Foreign Arbitral Awards. Should either party le an action contrary to this provision, the other party may recover attorney's fees and costs up to $1000.00. 19. Jurisdiction And Venue. The courts of Placer County in the State of California, USA and the nearest U.S. District Court shall be the exclusive jurisdiction and venue for all legal proceedings that are not arbitrated under this Agreement. 20. Independent Contractors. The relationship of the parties is that of independent contractor, and nothing herein shall be construed to create a partnership, joint venture, franchise, employment, or agency relationship between the parties. Licensee shall have no authority to enter into agreements of any kind on behalf of Mentor Graphics and shall not have the power or authority to bind or obligate Mentor Graphics in any manner to any third party. 21. Force Majeure. Neither Mentor Graphics nor Licensee shall be liable for damages for any delay or failure of delivery arising out of causes beyond their reasonable control and without their fault or negligence, including, but not limited to, Acts of God, acts of civil or military authority, res, riots, wars, embargoes, or communications failure. 22. Miscellaneous. This Agreement constitutes the entire understanding of the parties with respect to the subject matter of this Agreement and merges all prior communications, representations, and agreements. This Agreement may be modied only by a written agreement signed by the parties. If any provision of this Agreement is held to be unenforceable for any reason, such provision shall be reformed only to the extent necessary to make it enforceable. This Agreement shall be construed under the laws of the State of California, USA, excluding rules regarding conicts of law. The application of the United Nations Convention of Contracts for the International Sale of Goods is expressly excluded. This license is written in English, and English is its controlling language.
B.3. Attribution
This version of Sourcery CodeBench Lite may include code based on work under the following copyright and permission notices:
54
* distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */
55