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
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
Tool | Page |
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 |
Examples | 12 |
Libraries | 12 |
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 |
Hypertext | 17 |
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 architecture | Hx 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.