Release
Notes

CTOOLS Release 5.0


These Release Notes describe CTOOLS Release 5.0. The notes are divided into the following sections:

Product Checklist

Item Description

  1. Maintenance and Support Information
  2. Release Notes
  3. Getting Started with the i960â Processor Development Tools
  4. i960â Processor Compiler User's Guide
  5. i960â Processor Assembler User's Guide
  6. i960â Processor Software Utilities User's Guide
  7. i960â Processor Library Supplement
  8. gdb960 User's Manual
  9. i960â Processor Tools License Guide
  10. Tape, CD-ROM or diskettes containing CTOOLS

Product Enhancements and New Features

Release 5.0 of the development tools provides support for the Hx and RP processors, implements the 80960 Application Binary Interface (ABI), and improves the program development process in several ways.

Compatibility Note for gcc960 Users

The libraries in this release have been renamed using a standard scheme described in the library manual. For compatibility with older releases of GNU/960 the installation procedure offers a compatibility option under which the libraries are installed under their older names. See your GNU/960 R4.x library manual for information on the old names.

Code generation by Release 5.0 is fully compatible with Release 4.6. Source programs compiled with Release 4.6 will be accepted by Release 5.0 without change. All environment variables and invocation options are unchanged. Object modules generated with Release 4.6 can be linked with objects created with Release 5.0.

Compatibility Note for ic960 Users

Release 5.0 is fully compatible with Release 4.6.

Source programs compiled with Release 4.6 will be accepted by Release 5.0 without change. All environment variables and invocation options continue to be supported. Object modules generated with Release 4.6 can be linked with objects created with Release 5.0.

Support for the 80960 Application Binary Interface

The 80960 Application Binary Interface (literature order number 631999) specifies the ELF and DWARF 2.0 object module formats as the new standard for 80960 object file interchange. The tools continue to generate previously supported formats. In addition, new options support generation of ELF and DWARF object modules. The notes on the compiler, assembler and linker describe the new options.

Hypertext Documentation

Release 5.0 contains on-line hypertext documentation with the invocation syntax and brief description of all the tools in the product. This documentation is installed in the html subdirectory. The hypertext is in Hyper Text Markup Language (HTML), the standard for information exchange on the World Wide Web. To view the documentation use the Open File command of a standard WWW browser such as Internet Explorer, Netscape Navigator or Mosaic and specify the file start.htm. It is located in the directory $6960BASE/html/tools.

Summary of Changes and Known Problems for Each Component

Installation Changes from Release 4.6

Compatible-Mode Library Names

GNU/960 users will notice that the runtime libraries and linker directive files in this release have been renamed using a standard scheme described in the library manual. However, the libraries and linker directive files can be installed under their old names for compatibility with older releases of GNU/960. The installation procedure prompts for the library naming convention to be used.

CD-ROM Contains Both DOS and Windows 95 Products

The CD-ROM and diskette versions of Release 5.0 contain the CTOOLS products for DOS and Windows 95 hosts. The installation script prompts for the set of tools to be installed.

CD-ROM Contains Source Code for the Tools

The DOS and Windows 95 installation instructions in the Getting Started manual state that you must contact Customer Support to obtain source code for the tools. This is not necessary. The product CD-ROM contains the source code for all the tools, though they are not accessible through the installation script. See the file readme.dos in the root directory of the CD-ROM for instructions on extracting the source code from the CD-ROM and building all the tools on DOS and Windows 95 hosts.

Changes to Tools from Release 4.6
ToolPage
Archiver (arc960 / gar960)6
Assembler (asm960 / gas960)7
Compiler (cc1) and Drivers (gcc960, ic960) 7
Converters (cof960 / objcopy, cvt960)9
Coverage Analyzer (gcov960)9
Debugger (gdb960)10
Dumper/Disassembler (dmp960 / gdmp960) 12
Examples12
Libraries12
Linker (gld960 / lnk960)14
Macro Processor (mpp960)15
Munger (gmung960)15
Name Lister (gnm960 / nam960)15
Profile Merger (gmpf960) 15
Profiling Decision Maker (gcdm960)16
Rommers (grom960, rom960)16
Section Sizer (gsize960/siz960)16
Statistical Profiler (ghist960)16
Stripper (gstrip960 / str960)16
Version Printer (gver960)16
Hypertext17


Archiver (arc960 / gar960)

No changes or problems are known at this time.

Assembler (asm960 / gas960 / gas960c / gas960e)

Changes from Release 4.6

Architecture Option

The assembler now supports the i960 RP architecture, via the ARP option and argument.

ELF Object Module Format Supported

The COFF assembler is invoked by the name asm960 or gas960c. The ELF assembler is invoked by the name gas960e. The compiler option -Felf selects the appropriate assembler for ELF object module generation.

Assembler .lomem Directive Supported

The assembler will use the MEMA format for any MEM format instruction that references a symbol previously declared .lomem.

Assembler .quad and .octa Directives No Longer Supported

The assembler no longer accepts the .quad and .octa directives.

Compiler (cc1) and Drivers (gcc960, ic960)

This section describes changes and known problems for the compiler drivers gcc960 and ic960, and for the cc1 compiler.

Changes from Release 4.6

New 80960 RP Architecture Support Options

The compiler supports the ARP architecture option and defines the corresponding __i960RP macro.

ELF Object Module Format Supported

The -Felf option selects code generation in ELF and DWARF 2.0 object module format.

Two-Pass Compilation Options

A new simplified two-pass compilation model is supported via the -fdb, -fprof and -gcdm compiler options. See the compiler documentation for details.

Compressed Object Code Options and Pragma

A new feature has been added for saving code space in target memory. Rarely used functions can be stored in target memory in compressed form and decompressed on the fly before execution. The gcc960 -mcave option, ic960 -Gcave option and #pragma cave have been added to control this feature. See the compiler documentation for details.

Known Problems

Duplicate and/or Missing Symbols During Program-Wide Optimization Link

When two or more source file names have the same first eight alphanumeric characters to the left of the first . ("dot") in their names, the gcdm960 optimization decision maker improperly assigns the same names to their object files in the PDB. This causes the same substitution module to be used for these source files, and multiple definitions appear for symbols exported from one of the objects and all the code from the other objects is missing.

The workaround is to make source file names unique in their first eight characters.

Using Space Optimization with Whole-program Optimization

If you use -fspace-opt with the -gcdm,subst option you may get the message:

<file>:<line>: fatal: first pass compilation of function <name> uses different options than this compilation.

In order to work around this problem add -fspace-opt to the -gcdm,subst option as follows:

-gcdm,subst=+fspace-opt+[ your other substitution options ]

Renaming Global Variables in Object Modules

If you use the gcc960 asm extension to name a global variable as in:

int var1 asm ("my_var1");

and use the b.out object format, the debug information for var1 is not correct, and you will not be able to examine var1 using the gdb960 debugger.

Invalid Command-line Options not Diagnosed

The gcc960 compiler driver does not check the command line options for validity. Invalid options are ignored without producing a warning message.

Memory References at Absolute Addresses Handled Incorrectly

The compiler incorrectly handles references to absolute addresses such as *((char*)0x1000000. If an application makes such references both above and below address 0x80000000, the compilation may terminate with an assertion failure at line 1687. Other unpredictable compilation terminations are possible, but have not been observed.

Converter for b.out, COFF and ELF (cof960 / objcopy)

Changes from Release 4.6

Relocation and Symbol Table Directives

If you objcopy a relocatable COFF, b.out, or ELF file to another OMF, objcopy keeps relocation and symbol table directives, if possible.

Converter to IEEE 695 (cvt960)

Changes from Release 4.6

Architecture Option

The cvt960 converter now supports the i960 RP architecture, via the ARP option and argument.

Coverage Analyzer (gcov960)

Known Problems

Execution Counts for a Function that Is Inlined

The reports produced by gcov960 may give misleading information about functions that are inlined. The reports may indicate that the code of the inlined function has never been executed, or may show execution counts that are unexpectedly low. This happens because the inlined code fragments are treated as part of the function they are inlined into and not as part of the original function.

Debugger (gdb960)

Changes from Release 4.6

Symbolic Debug Information in DWARF Version 2.0 Format

Symbolic debug information in DWARF Version 2.0 format is processed by the debugger. DWARF 2.0 permits better association between source and object code when higher levels of compiler optimization are enabled. See the gdb960 manual for details.

Command-line Editing

The DOS and Windows 95 versions of gdb960 now support command line recall and editing.

Watch Command

The watch command automatically assigns a hardware-assisted watchpoint if hardware resources are available. Otherwise, it assigns a software watchpoint.

Download Option

The -download option has been changed to -parallel.

Support for Function Calls

gdb960 expressions may now contain calls to functions defined in the user program (e.g., print foo(12) ).

NINDY Monitor No Longer Supported

The NINDY monitor is no longer supported. MON960 is the only supported target.

Known Problems

Long Double Type Not Fully Supported

The C type long double is implemented internally as double. Variables of long double type are stored in IEEE-extended format on the target, but when examining their values in gdb960, or when setting a new value manually, gdb960 stores them internally as type double. This is of concern only if a variable value is too large, too small, or has too much precision to be represented as a double. (Also see the following note.)

Floating-point Infinities Not Reported

From the gdb960 command line, if you assign a value to a variable with float, double, or long double type, and the value is too large, too small, or has too much precision to represent the variable's type, the variable will appear to hold a legal value and no error will be reported. The variable's value will be meaningless.

CTRL-C Disabled During Target Connect

While gdb960 is attempting to connect to a remote MON960 target it is not possible to break with CTRL-C. If the debugger cannot connect with the target for some reason (e.g., cable not physically connected) the operation will time-out after about 20 seconds, and the gdb960 prompt will return.

Jx, Hx and RP Memory-mapped Registers Must Be Read as Words

The memory-mapped registers provided by the J-series, H-series and RP processors must be read and written in 4-byte quantities. Larger or smaller accesses will be flagged as errors by gdb960 and the access will not be attempted.

Some JX, Hx and RP Memory-mapped Registers Cannot Be Read or Written

A few of the J-series, H-series and RP memory-mapped registers can not be written at all by gdb960. These are IPB0, IPB1, DAB0, DAB1 and BPCON. Attempts to modify them directly will cause an HDIL (MON960) error. These registers are modified by MON960 when a hardware breakpoint or hardware watchpoint command is used. Additionally, IPB0 and IPB1 cannot be read directly by gdb960. The value will always appear to be 0.

Absolute symbols are relocated under -pd option

For ELF/DWARF files only, when the file contains position-independent data, and when gdb960 is invoked with the -pd option, absolute symbols are erroneously relocated along with data symbols. This does not affect the runtime behavior of the program being debugged, but it makes it difficult to print or set the values of the absolute symbols.

Dumper/Disassembler (dmp960 / gdmp960)

Changes from Release 4.6

.debug_* Section Display

The new -g option displays one or more .debug_* sections in an ELF/DWARF object module.

Memory Map Display

The new -m option displays the memory map of a file.

Examples

The examples directory that used to be shipped with the CTOOLS960 product has been deleted. Examples targeted to older evaluation boards were rendered obsolete. The old profiling example has been replaced with an updated example in the compiler manual that illustrates the new user interface.

Libraries

The Hx processor is supported by the Cx libraries in this release. However, linker directive files tailored for the Hx Cyclone evaluation board have been added.

Changes from Release 4.6

Compatible-Mode Library Names for GNU/960 Users

The runtime libraries and linker directive files in this release have been renamed using a standard scheme described in the library manual. The libraries and directive files can also be installed under their older GNU/960 names if so desired. The installation script prompts for a choice of naming convention.

Floating-point Stub Library Added

A second copy of the floating-point stub library, libmstub.a, has been added. The copy is named libmstb.a.

Linker Directive Files for Hx Processor Added

New linker directive files for the Hx processor are included with this release:
cyhx.ld Linker directive file for Cyclone Hx evaluation board.
cyhxfls.ld Linker directive file for Cyclone Hx flash.

Big-endian and PIC/PID Libraries Added

Big-endian, PIC/PID versions of some libraries have been added:
crt960_e.o Initialization (start-up) library.
libcca_e.a High-level C library for Cx processor.
libepcxe.a Board library for EPCx evaluation board.
libfp_e.a US Software floating-point library.
libhca_e.a Accelerated floating-point library for Cx and Hx processors.
libhis_e.a Profiling library for ghist960.
libhjx_e.a Accelerated floating-point library for Jx processor.
libll_e.a Low-level library.
libmca_e.a Math library for Cx and Hx processors.
libmon_e.a Interface to board-specific functions in MON960.
libmstbe.a Stub math library.
libq_e.a Profiling library when no file system is available.
libqf_e.a Profiling library when a file system is available.
librom_e.a Library for supporting serially-reusable programs.

A big-endian version of the US Software floating-point library has been added:
libfp_b.a US Software floating-point library.

PIC/PID versions of some libraries have been added:
libfp_p.a US Software floating-point library.
libhca_p.a Accelerated floating-point library for Cx and Hx processors.
libmstbp.a Stub math library.
libhjx_p.a Accelerated floating-point library for Jx processor.
libhka_p.a Accelerated floating-point library for Kx and Sx processors.

Older Boards No Longer Supported

The EVA, EVCA, QT, TomCAT, and Heurikon evaluation boards and CADIC are no longer supported. All libraries and linker directive files associated with these older products have been removed.

Linker (gld960 / lnk960)

Changes from Release 4.6

Architecture Option

The linker now supports the i960 RP architecture via the ARP option and argument.

ELF Object Module Format Supported

The linker is able to process input object modules in COFF, b.out or ELF formats in the same invocation. The output object module format is selected with the -F option. Felf selects an ELF output module.

Two-Pass Compilation Option

The linker now supports a new and simplified two-pass compilation model via the -gcdm option. See the compiler and linker documentation for details.

Setting Named BSS Sections to Zero

The tools now support named .bss sections. If you use the startup (crt) files shipped with the tools, named .bss sections are set to zero automatically. If you have your own startup file, to use named .bss sections you must add a call in your initialization code to the function ___clear_named_bss_sections.

Library Search Order When RP or Hx Architecture Is Selected

If the linker is invoked with the RP or any of the Hx architecture options, the search order for a library named try, specified as -ltry, is the following:
Jx architectureHx architecture
libtry.a libtry.a
libtryja.a libtryha.a
libtryca.a libtryca.a

Known Problems

Inappropriate Error Messages When Sections Overlap

The linker emits inappropriate error messages when sections overlap. For example, in the linker directive file:

SECTIONS {
    .text 0 : {}
    .data 0x10 : {}
}

if the sum of the .text sections is greater than 0x10, but the .data section size is less than 0x10, the linker emits the following error message:

Section .data (start 16: size: 0) won't fit into defined memory.

This is misleading as it is the sum of the .text sections causing the overlap, not the size of the .data section.

Macro Processor (mpp960)

No changes or problems are known at this time.

Munger (gmung960)

No changes or problems are known at this time.

Name Lister (gnm960 / nam960)

No changes or problems are known at this time.

Profile Merger (gmpf960)

Changes from Release 4.6

Self-contained Profiles

The profile merger now supports the -spf option for generating self-contained profiles.

Profile Decision Maker (gcdm960)

Changes from Release 4.6

New Two-pass Compilation Model

The profile decision maker now supports many additional options to control the new and simplified two-pass compilation model.

Rommers (grom960, rom960)

No changes or problems are known at this time.

Section Size Printer (gsize960 / siz960)

No changes or problems are known at this time.

Statistical Profiler (ghist960)

Known Problems

Not Suitable for Use with PIC/PIC Applications

This tool is not suitable for use with PIC/PID applications. The documentation does not clearly indicate this fact.

Stripper (gstrip960 / str960)

No changes or problems are known at this time.

Version Printer (gver960)

No changes or problems are known at this time.

Hypertext

Known Problems

Decision Maker Syntax Error

The syntax for the gcdm Substitution Controls should read:

subst=arg[,arg]... and nosubst=module-set
























i960 and Intel are registered trademarks of Intel Corporation.

UNIX is a registered trademark of UNIX System Laboratories, Inc.