Readme file for the IAR XLINK Linker V4.53J
Updated: March 18, 2002 [IJYB]
Archived: $Revision: 1.47 $
Important information
XLINK 4.53J - 2002-03-18
-
XAR, the IAR Universal Library Builder, is
now included in the XLINK package. XAR has a very simple command
line interface to construct library files from object files,
which is likely to be far more convenient than using XLIB for the
same purpose.
-
XLINK calculated the wrong value for SFE (Segment End) directives
for segments placed using far placement when the entire segment
did not fit in a single 64K page. The incorrect value was too low
by the amount of space skipped at the page boundaries.
Initialization of variables in far memory normally uses the SFE
(or equivalently, SIZEOF) directive to determine the amount of
data to set. This means that the incorrect value can result in
some bytes of initialized or zeroed variables in far memory not
being set at program start-up.
This problem was introduced in XLINK version 4.52E, released
2001-02-19.
XLINK 4.53A - 2001-06-07
XLINK 4.52A - 2000-10-20
As before, using -r or -Fdebug will produce output using the
latest version of UBROF used in any of the input files.
If you are using a debugger/emulator other than C-SPY that
reads UBROF and a compiler generating UBROF 9 (check the
documentation accompanying the compiler) and the output file
cannot be loaded, the new format version could be the
cause. In that case try using
-Fubrof8/-Fubrof7/-Fubrof6/-Fubrof5 or
contact the supplier of your debugger/emulator. Also be sure
to check the compiler release notes for any pertinent
information on this issue. As of this writing only one IAR
compiler generates UBROF 9 output.
XLIB supports UBROF 9 starting with version 3.28A.
-
Starting with version 4.52A, the Windows release of XLINK is no
longer delivered with a DOS extender. This means that XLINK will
not work in environments that do not provide the Win32 interface
(Win32 is provided in Windows 95 and later).
The same is true for XLIB, starting with version 3.28A.
XLINK 4.51D - 1998-12-01
As before, using -r or -Fdebug will produce output using the
latest version of UBROF used in any of the input files.
If you are using a debugger/emulator other than C-SPY that
reads UBROF and a compiler generating UBROF 8 (check the
documentation accompanying the compiler) and the output file
cannot be loaded, the new format version could be the
cause. In that case try using -Fubrof7/-Fubrof6/-Fubrof5 or
contact the supplier of your debugger/emulator. Also be sure
to check the compiler release notes for any pertinent
information on this issue. As of this writing only IAR
compilers capable of compiling C++ generate UBROF 8 output.
XLINK 4.51C - 1998-10-21
- XLINK can now generate ELF format output with DWARF format
debug information. See XMAN.HTM for details.
XLINK 4.51A - 1998-10-08
- Segment placement has been improved. See
XMAN.HTM for details.
XLINK 4.50C - 1998-05-14
As before, using -r or -Fdebug will produce output using the
latest version of UBROF used in any of the input files.
If you are using a debugger/emulator that reads UBROF and a
compiler generating UBROF 7 (check the documentation
accompanying the compiler) and the output file cannot be
loaded, the new format version could be the cause. In that
case try using -Fubrof6/-Fubrof5 or contact the supplier of
your debugger/emulator. Also be sure to check the compiler
release notes for any pertinent information on this issue.
XLINK 4.49I - 1997-12-22
- XLIB version 3.26S has been changed to no longer by default
process command line parameters to XLIB batch files.
When processing an XLIB batch file, XLIB used to consider a
slash ('\') followed by one or more digits to be a batch
file parameter, to be replaced with text from XLIB's command
line. This is no longer the case unless the name of the
batch file is preceded by the command line option '-p', like
this:
XLIB -p
If '-P' is used instead of '-p', the character '@' is used
instead of '\' in this processing.
XLINK 4.49A - 1997-08-18
- The IAR Universal Binary Relocatable Object Format, UBROF,
has been updated to version 6.0.0. This means that XLINK
will now output UBROF 6 files when given UBROF 6 input. The
UBROF format is used by IAR's C-SPY debugger and a number of
other debuggers/emulators. The new version of the output
format can, in addition to a number of other smaller
improvements, result in a very significant reduction in the
size of the output file.
In conjunction with this three new output formats have been
added to XLINK:
-Fubrof5 Output UBROF 5 even if any input was UBROF 6
-Fubrof6 Output UBROF 6 even if no input was UBROF 6
-Fubrof Output UBROF (a synonym for -Fdebug)
If you are using a debugger/emulator that reads UBROF and a
compiler generating UBROF 6 (check the documentation
accompanying the compiler. No compiler released as of yet
generates UBROF 6) and the output file cannot be loaded, the
new format version could be the cause. In that case try
using -Fubrof5 or contact the supplier of your
debugger/emulator. Also be sure to check the compiler
release notes for any pertinent information on this issue.
There is one feature of UBROF 6 that, if used, prevents
XLINK from being able to produce UBROF 5 output. This
feature is source file references. To get around this
problem, use embedded source (usually enabled by the
compiler command line option "-re"). See the compiler
documentation for more information.
Support for IEEE-695 is now at product status for two more
debuggers. The recommended format variant modifier settings
for these are:
6812 Noral debugger -ygvs
740 Mitsubishi debugger -ylmba
In the process of adding this support, three more format
variant modifiers were added. These are:
-yv Handle variable life times
-ys Output stack adjust records
-ya Output module locals in BB10 block
Known problems in Current Version
XLINK 4.53J - 2002-03-18
- EW10551:
[XLINK0151]
SFRs are not present in the IEEE-695 output from XLINK for code compiled
with compilers using UBROF 6 and earlier.
- EW10553:
[XLINK0145]
The ELF output produced by XLINK when no input object files
have debug info is not acceptable to the ARM debugger. Use -yn (no DWARF
debug info) in this case.
- EW10558:
[XLINK0136]
Specifying filler ranges explicitly (using -h) does not
work if any segment parts are placed using banked placement (-b).
Use packed placement (-P) instead.
- EW10554:
[XLINK0119]
When doing static overlay, XLINK fails to warn about
functions called from indirect functions and from someplace else.
This is dangerous, if, for instance, one of these is from an
interrupt function and the other from main.
- EW10555:
[XLINK0116]
Under certain circumstances XLINK can fail to place empty segments.
This will happen if the entire memory address range in which to place
the empty segments has already been taken by previous segment placements,
or by absolute code from assembler modules, but the address (not the byte)
after the range is still free.
- EW10556:
[XLINK0107]
Empty segments placed in previous segment placement commands do not
cause later segment placements ranges to split. Example: -ZEMPTY=400-4FF
-ZBAR=0-FFFF. This should place the empty segment EMPTY at address 400
and cause the range 0-FFFF to be split into 0-3FF and 400-FFFF.
- EW10557:
[XLINK0045]
Static overlay system: A function which does not appear to be called
(warning 39) still counts as a caller for warning 16 (function called
from two function trees), resulting in two warnings instead of one.
Program Corrections and Updates
XLINK 4.53J - 2002-03-18
- EW11621
Type checking for K&R functions has been weakened to eliminate
unwanted type conflict diagnostics for code compiled with newer
compilers that provide less detailed information about calls to
such functions.
- EW11616
The information about whether a function type involved in a type
conflict diagnostic was K&R or prototyped was reversed. K&R function
types were marked as prototyped, and prototyped function types were
marked as K&R.
- EW11615
ARM-ELF specifies a flag, EF_ARM_HAS_ENTRY, for keeping track
of if an image has an entry point or not. XLINK now sets this
flag for the ARM processor when outputting ARM-ELF/DWARF.
- EW11572
XLINK erroneously treated a register pair as two registers
for the M32C processor in the ELF/DWARF output format.
- XLINK/XLIB now support the U8 target.
XLINK 4.53I - 2002-02-19
- EW11520
XLINK calculated the wrong value for SFE (Segment End) directives
for segments placed using far placement when the entire segment
did not fit in a single 64K page. See Important information for
4.53I.
- EW11515
XLINK now removes worthless segment placement commands so that
it is possible to place them into unavailable memory.
XLINK 4.53H - 2002-02-15
- EW11430
There was a problem in matching null names read in from object
files using UBROF 7 or earlier with those read in from object
files using UBROF 8 or later. This could cause spurious type
conflict warnings for struct/unions with unnamed fields when
one file was compiled as C code and the other as EC++ code.
- EW11362
Linking files using UBROF version 5, compiled with the option
-rn (debug info, no source) and containing no functions caused
an internal error in XLINK when doing output in UBROF version 5.
- EW11342:
XLINK always warned for indirectly called functions doing
indirect calls when using static overlay, now the warning
is only emitted if any of those functions uses static
overlay.
- EW11236
In the module map, each segment part is supposed to get two
lines describing the general properties of the segment part.
For some segment parts the second line was missing.
- EW11144
XLINK was unable to handle local static variables and static
functions for the IEEE-695 format in UBROF 8 and later. It
erroneously claimed that those were C++ identifiers.
- EW11014:
Coff output from XLINK for the PIC18 processor was rejected by
the coff to cod converter.
- Improved conversion from UBROF version 9 to older versions.
- Improved handling of version resource.
XLINK 4.53G - 2002-01-15
- EW10952
The default extension for m32c in XLIB was ",r48" instead of ".r48".
- EW10929
The right shift operator used in UBROF relocation expressions now
has defined behavior for shift counts of 32 or more.
- EW10922
When absolute segments were placed in non sorted order in the
infiles XLINK lost track of them in the listfiles and in the
MSP430_txt format.
- Improved handling of DWARF register pairs.
XLINK 4.53F - 2001-11-30
- EW10782
Improved handling of scatter loading of common segments.
- EW10713
XLINK crashed when linking completely empty source files
with debug information.
- EW10673
XLINK crashed when outputing HTML listfiles on stdout,
outputing HTML to file works fine.
- EW10666
XLIB crashed when the file argument to -p is missing.
- EW10665
XLINK crashed when the first module read claims to be of a higher
UBROF revision than XLINK can handle.
- EW10664
Using / together with directory names containing . when relying on
the default extension caused XLINK to not use the extension and not
find the file.
- EW10552:
[XLINK0148]
When doing output in the MSP430_TXT output format, XLINK
included spurious null bytes in common segments (usually interrupt
vectors).
-
Improved debug info for SFR:s for the H8 processor.
-
XLINK/XLIB now support the EZ80 processor.
XLINK 4.53E - 2001-10-22
- XLINK208
XLINK could emit superfluous address records during some
circumstances when generating intel-extended format.
- XLINK0207
[EW10493]
XLINK calculated the wrong size for t_symdol_def1s inside
t_grp records. This resulted in t_grp records that were
larger than they claimed to be. This was triggered only
for UBROF 7 files. UBROF 6 uses t_symbol_def and UBROF 8+
uses t_symbol_def2.
- XLIB0003
[EW10270]
XLIB would try to write to write-protected memory
when setting a default extension. This caused an
access violation in some, but not all, cases.
-
Added m32c as a synonyme for mc80.
-
Added ELF/DWARF support for mc80/m32c.
XLINK 4.53D - 2001-09-21
- XLINK0205:
Generating ELF/DWARF, aomf8096, aomf80196 and mpds with debug
information for absolute segments containing local symbols would
cause XLINK to crash.
- XLINK0204:
When using the AOMF251 output format, assembler modules
with source line information could cause XLINK to crash.
- XLINK0203:
There was a bug in the experimental address space sharing
feature (-U) that could cause XLINK to crash.
- XLINK0202:
XLINK could crash when reading output from the OMCONV
converter used for the 80x96 product.
- XLINK0153:
Object data excluded through the use of empty load (-E)
still appears as zeros in many binary object formats. This
bug was fixed in 4.51S but reintroduced in 4.52A.
XLINK 4.53C - 2001-08-09
- XLINK0201:
Modules with more than one unnamed struct/union with the same
initial field names could cause XLINK to crash during type
unification.
- XLINK0200:
XLINK crashed when linking files compiled with the H8S compiler.
- XLINK0199:
When linking UBROF 5 files and producing UBROF 5 output XLINK
erroneously emitted warning 51 (some source reference debug info
was lost) and dropped all source reference debug info from the
output. This problem was introduced in XLINK 4.52J.
- XLINK0198:
XLINK crashed when reading assembler modules with absolute code
and no source debug info. This problem was Introduced in XLINK
4.52C.
- XLINK0197:
When using the SYSROF output format, assembler modules with source
line information for absolute code caused XLINK to crash.
- XLINK0196:
XLINK terminated with error e113 (Corrupt input file) when linking
modules with root static overlay segment parts when packed segment
placement (-P) was used for the segment.
- XLINK0195:
Using -e (symbol replacement) with UBROF 9 input caused XLINK to
produce corrupt output files.
- Using the -Fubrof output format caused XLINK to output a
file using the latest UBROF version known to XLINK, and not, as
documented, the latest UBROF version used in any of the input
files (like -Fdebug). This problem has existed ever since
the introduction of -Fubrof in XLINK 4.49A.
- Eliminated a cause of spurious errors (e115 - incompatible symbol
definitions) for symbols included only for debug purposes.
- Corrected a problem where XLINK sometimes excluded statement info
for inlined functions.
XLINK 4.53B - 2001-06-18
- XLINK0194:
XLINK crashed if a located variable and a command line defined
symbol had the same name.
- XLINK0193:
The fix for source statements after all function code in XLINK
4.53A could cause C-Spy to crash when reading C/EC++ object files
compiled with high size optimization.
- XLINK0192:
ASEGs in assembler modules could cause XLINK 4.53A to crash.
- Further adjustments the output when using the ELF output format to
work better with the CCS debugger from Texas Instruments for the
ARM processor.
XLINK 4.53A - 2001-06-07
Each -U command line option declares that the memory given by the
ranges on the left side of the '=' sign is the same memory as that
given by the ranges on the right side. This has the effect that,
during segment placement, anything occupying some part of either
memory will be considered to reserve the corresponding part of the
other memory as well.
The optional (segment type) that can be included
on each side of the '=' sign can be used to specify the address
space for architectures with multiple address spaces.
Example (assuming an architecture with separate code and address
spaces and that the CODE segment type corresponds to the code
address space and the DATA segment type to the data address
space):
-U(CODE)4000-5FFF=(DATA)11000-12FFF
-P(CODE)MYCODE=4000-5FFF
-P(DATA)MYCONST=11000-12FFF
The first line declares that the memory at 4000-5FFF in the
code address space are also mapped at 11000-12FFF in the data
address space.
The second line places the MYCODE segment into the memory at
4000-5FFF in the code address space. The corresponding bytes in
the data address space will also be reserved. If MYCODE occupies
the addresses 4000-473F, the range 11000-1173F in the data address
space will also be reserved.
The third line will place the MYCONST segment into what ever parts
of the 11000-12FFF memory range are not reserved. In this case it
will behave as if it were written:
"-P(DATA)MYCONST=11740-12FFF".
XLINK 4.52J - 2001-04-24
- XLINK0189:
Expressions in command line options involving more than one
operator of the same precedence without explicit parentheses were
diagnosed as syntax errors. This problem has been present since
address expressions were introduced in XLINK 4.51D.
- XLINK0188:
Zero size absolute segment parts caused XLINK to consider all
memory reserved.
- XLINK0187:
XLINK emitted illegal UBROF output when linking modules compiled
with the 'Embedded Source' option (-re/-ri) used by some compilers.
- XLINK0185:
A segment start/end reference (SFB/SFE) from a segment part that
isn't needed in a module that is needed to a segment that hasn't
been mentioned in a segment placement command caused XLINK to
crash. This could happen for the HEAP segment in some products, if
the HEAP segment was removed from the linker command file. The
problem was introduced in XLINK 4.52E.
This problem was erroneously reported as fixed in XLINK 4.52I.
XLINK 4.52I - 2001-03-30
- XLINK0186:
Using scatter loading (-Q) caused XLINK to emit corrupt output
files when using the output format XCOFF78K. The problem very
likely also affects the COFF output format.
-
Modified the output of the demo linker slightly, so that it works
with the demo debugger in the Embedded Workbench version 3.
XLINK 4.52H - 2001-03-20
- XLINK0184:
When running under the Embedded Workbench version 2, no
diagnostics were reported in the message window.
XLINK 4.52G - 2001-03-16
- XLINK0183:
The change in the handling of segment start/end references
(SFB/SFE) introduced in XLINK 4.52E could result in XLINK not
heeding the alignment requirements on stack segments.
-
XLINK no longer attempts to ignore "worthless" segment parts for
input files using version 7 or later of the IAR object format
UBROF. What segment parts are included in the final link is now
determined solely by tracing references from all ROOT segment
parts. This means that all segments having ROOT segment parts must
be given an address in a segment placement command (-Z -P -b).
NOTE: Some compiler products have shipped with unused ROOT
segment parts in the C runtime library. These will now produce an
error when linking. Removing the unused segment parts from the
library or giving them an address in a segment placement command
will make the error go away.
XLINK 4.52F - 2001-03-14
- XLINK0182:
Using -n to suppress compiler generated symbols could cause XLINK
to crash if any of the input files used C++ names.
- XLINK0181:
XLINK 4.52E reported all diagnostics (both warnings and errors) as
errors when running under Embedded Workbench 3.
- XLINK0180:
When using the output format SYMBOLIC, XLINK crashed if any input
assembler files had source debug information.
XLINK 4.52E - 2001-02-19
- XLINK0179:
Corrected a crash bug when reading source info from pre-UBROF 9
input files.
- XLINK0178:
When emitting C++ debug information in the output format ELF,
XLINK did not output correct information for static member
functions.
- XLINK0177:
When emitting C/C++ debug information in the output format ELF,
XLINK did not output the actual type of bitfields.
- XLINK0176:
When emitting C++ debug information in the output format ELF,
XLINK output the inverted value for the virtuality of class
inheritance.
- XLINK0175:
XLINK did not correctly generate the C_ICALL segment for
processors that need this. This problem was introduced in XLINK
4.52A.
- XLINK0174:
When a linker list file was requested, no memory usage summary
appeared on the console.
- XLINK0173:
XLINK inserted unneeded alignment space after segment parts when
doing far segment placement. This could, under certain
circumstances, result in an incorrect program.
- XLINK0172:
Address translation (-M) did not work for the output
format mpds-code.
- Raised the address limit for the output format mpds-code
to 16MB (from 64KB).
- Changed the handling of segment start/end references (SFB/SFE).
The old way could in rare circumstances result in unneeded segment
parts being included.
- XLINK now always places empty segments before non-empty segments
in the segment map in the linker list file.
- The digits in the memory summary are now output in groups of three
to make it easier to read.
- When using the output format ieee-695, XLINK is now far
more restrictive about when to emit warning 23 for the problem of
variables whose location varies over the course of a
function. Previously this warning was emitted for cases that are
almost certain to be harmless.
- Added two format variant modifiers for the output format
ELF. See xman.htm for more
information.
XLINK 4.52D - 2001-01-09
- XLINK0171:
Diagnostic messages from XLINK 4.52C do not appear in the
Workbench output window and are not recognized as diagnostics by
the Workbench.
-
XLINK 4.52C outputs a memory summary on the console even in the
presence of a -S (silent operation) command line option.
-
XLINK 4.52C omits extra information on the console for some
error messages. This includes the available cpus and output
formats for the unknown cpu/unknown output format errors.
XLINK 4.52C - 2000-12-20
- XLINK0170:
XLINK 4.52B does not include assembler source debug information
for code in ASEGs.
- XLINK0169:
XLINK 4.52B omits all debug information for block local variables
in its output when reading UBROF 8 input.
- XLINK0168:
XLINK 4.52B crashes when reading object files compiled with the
-rn (No source code) option.
XLINK 4.52B - 2000-12-15
- XLINK0167:
When collecting the address ranges to be checksummed, XLINK for
Solaris could sort them in an incorrect order, resulting in an
incorrect checksum being calculated.
- XLINK0166:
When using the IEEE-695 output format, C language modules compiled
with debug info and containing no functions caused XLINK to crash.
- XLINK0165:
Some syntax errors in the segment list of segment placement
commands (-Z -P) could make XLINK loop, emitting the same error
message over and over.
- The output format mpds-code mistakenly did not support
Address Translation (-M). Now it does.
- The Windows XLINK executable can now be used with IAR Embedded
Workbench 3.0.
- XLINK now outputs the memory usage summary on the console even if
a list file has been requested.
- XLINK now tries harder to use the name of a real module in the
motorola and ti7000 output formats.
- Support for UBROF 9 has been substantially improved.
XLINK 4.52A - 2000-10-20
-
Three new output formats have been added: motorola-s19,
motorola-s28 and motorola-s37. These make it
possible to specify exactly which record types should be used. See
xman.htm for more information.
-
The processor "avr" is now available as a synonym for
"a90".
-
Extended command file (-f) lookup now uses the search paths set by
-I command line options.
-
Improved the information provided for a type conflict or multiple
struct definition diagnostic. The nested reasons that the types
are different are now output in order.
-
Improved the heuristic used to find the name of the main source
file when translating file references from UBROF 6 or later to
UBROF 5 embedded source file.
-
XLINK now sorts the 'ref by' information in the linker list file,
to make output less random.
- XLINK0164:
When presented with an assembler object file produced with no
segment directive before the first code or data, XLINK sometimes
crashed.
- XLINK0161:
Linking a debug (-r to linker) build of a C/C++ program with no
C/C++ program program modules made XLINK abort with the message
'Undefined external: "main"' if the debug level (-rX to compiler)
was not 0.
- XLINK0159:
When using the static overlay system, if a program contained
recursive functions, but none of them used any parameters or
locals, the link job aborted because the symbol
"?ARG_MOVE" was undefined.
- XLINK0158:
Placing a common segment using far segment placement
(-Z(FARxxx)SEG=...) caused an internal error in XLINK.
- XLINK0150:
Using packed segment placement (-P) with a far segment type
(FARCODE, FARDATA, FARCONST), caused
XLINK to crash.
- XLINK0149:
The cross reference information in the linker list file was
incorrect for functions referenced by function pointers for
targets using the ICALL mechanism (8051, 65000, 740, 6502). This
bug was introduced in XLINK 4.51K.
- XLINK0147:
XLINK's type matching could sometimes fail to match struct types
with much circularity in the presence of typedefs. This could
cause spurious type conflict (w6) or multiple struct definition
(w35) messages. The problem only affects later compilers, which do
output typedef information for nested types.
- XLINK0144:
If the first segment placement command (-Z -P) did not
have an explicit address range, XLINK crashed.
- XLINK0140:
Placing far segments with extra space (+NNNN), which is
typically done for stack segments, caused XLINK to crash if there
was more than one segment part in the far segment.
- XLINK0139:
XLINK could get an internal error when reading object files
produced by some old assemblers. The problem is that these can mix
extern declarations and extern references in the object file. This
bug was introduced in XLINK 4.51A.
- XLINK0135:
The range error diagnostics (error 18 and warning 47) only
specified the offset into the segment part. They now also specify
which segment part the problem occurred in.
- XLINK0134:
XLINK did not produce legal output in the IEEE-695 format for
assembler modules with source debug information.
- XLINK0133:
-Q (scatter loading) placed code bytes incorrectly when used on a
code segment part with non-contiguous code bytes. These can only
be created using assembler code.
- XLINK0132:
When generating ELF output, XLINK could generate a 'Corrupt input
file' error, or possibly crash, when reading an assembler object
file allegedly containing no debug information.
XLINK 4.51T - 2000-10-06
- XLINK0163:
A change in XLINK 4.51S caused function block debug information to
be incorrect in IEEE-695 output.
- XLINK0162:
When processing UBROF 7 or later and emitting UBROF 6 or 7, XLINK
could incorrectly output a t_new_file record without an
immediately following t_src_stat record. This caused problems in
AVR Studio.
- XLINK0160:
When using banked placement (-b), if all the segment parts in a
segment didn't have the same alignment requirement, XLINK would
sometimes abort with an internal error.
XLINK 4.51S - 2000-08-18
- Support for the PIC18 processor. This includes support for COFF
output.
- As there now exists a target with both static overlay and stack based
functions, error 105 (recursion not allowed) is only emitted if any of
the involved functions actually uses any static overlay area.
- Fixed two memory overwrite bugs in the static overlay system.
- More work on the ELF output format. Among other things, two new format
variant modifiers have been added (see
XMAN.HTM for more information about these).
- Fixed a bug in type merge that could cause an internal error.
- XLINK0157:
When doing output in the AOMF251 output format, assembler modules with
public symbols but no relocatable segments could cause XLINK to
crash.
- XLINK0156:
When doing output in the AOMF251 output format, assembler modules with
debug information could cause XLINK to crash.
- XLINK0155:
When doing packed placement (-P) and segment duplication (-K), if any
parts of a segment to be duplicated was placed into the same memory range
as one that was not to be duplicated, an internal error could
result.
- XLINK0154:
When translating from UBROF version 8 to UBROF version 6 or earlier
XLINK could output a UBROF version 7 attribute record.
- XLINK0153:
Object data excluded through the use of empty load (-E) still appeared
as zeros in many binary object formats.
- XLINK0152:
Type checking could incorrectly consider types with different memory
attributes the same, causing XLINK to fail to report potentially serious
type conflicts.
XLINK 4.51R - 2000-03-21
- XLINK0146:
The fix for XLINK0143 resulted in the -y option
becoming unusable for single-output formats.
XLINK 4.51Q - 2000-03-17
- XLINK0143:
The feature whereby the format variant option -y could supply format
variant modifiers to two output formats (sometimes needed when using
-Fieee695-ie) did not work.
- XLINK0142:
XLINK incorrectly issued an error if addresses greater than 0xFFFF were
used in the output format aomf8051. When using banking, addresses up to
0xFFFFF are ok in this format.
- XLINK0141:
Address translation (-M -b# -b@) failed to translate the last address
block when this was followed by absolute code (assembler aseg).
- XLINK can now generate checksums least significant bit first as well as
most significant bit first. See XMAN.HTM for
details.
XLINK 4.51P - 2000-01-25
- XLINK0138:
Since XLINK 4.51K, some unreferenced types have been included in output
files using formats that supply type information. There is no known case
of this causing any problems, but it does make output files larger than
they need to be. In any case, it is now fixed.
- XLINK0137:
In the coff output format, line number info sections were not aligned to
even four byte boundaries, which they must be.
XLINK 4.51O/XLIB 3.27I - 1999-11-18
- XLIB0002:
XLIB could crash when doing list-object-code on an absolute (linked) input
file that was using UBROF version 5 or earlier. Fixed in XLIB 3.27I.
- XLINK0131:
When generating UBROF 8 output from assembler input files or from input
files of an earlier UBROF version, XLINK generated incorrect output. This
bug was introduced in XLINK 4.51L.
- XLINK0130:
When generating Motorola S-records (format motorola), XLINK generated
incorrect output for addresses greater than 0xFFFFFF.
- XLINK0129:
Using the ELF output format variant modifier -yn (suppress debug info)
could result in a crash.
- Error message 104 (-P: failed to fit all segments into specified ranges)
has been improved slightly. It now always reports the number of separately
placable collections of segment parts. Earlier it sometimes reported the
number of segment parts, irrespective of whether they could be placed
independently.
XLINK 4.51N - 1999-10-28
- XLINK0127:
Bytes resulting from absolutely placed segment parts were not included in
the sorted output used for some formats from version 4.51K of
XLINK.
- XLINK0127:
The special hack for swapped byte order for the PIC target could result
in spurious warning 52 (multiple definitions of byte in common segment)
messages when filler bytes (-H) was used.
- XLINK0126:
The feature introduced in XLINK 4.51K, where some output formats used
address order, resulted in incorrect output in these formats for common
segments (typically interrupt vectors) with more than one range
defined.
- XLINK0125:
When running under the WorkBench, XLINK crashed when trying to output the
exact types involved in a type conflict warning (warning 6) and no list
file was selected. This bug was introduced in XLINK 4.51M.
- It is now possible to set the level of all non-fatal diagnostic messages.
See XMAN.HTM for details.
- Diagnostic messages for command line options given in an Extended Command
Line (.xcl) file, and for syntactic problems in reading the file, now
indicate the exact position in the file of the problem. This means that
in the Embedded WorkBench it is now possible to double-click these
diagnostics and end up at the correct place in the file.
XLINK 4.51M - 1999-10-06
- XLINK0124:
When doing IEEE-695 output for the PDB debugger, XLINK generated an
incorrect alignment record for segments with alignment 4 and over.
- XLINK0123:
If an extended command line (.xcl) file ended inside a '//'-comment or
after a '*' inside a '/*'-comment, XLINK crashed.
- XLINK0122:
When an empty segment part with no public symbols, no references in or
out and no extra space allocated contained the program start address,
XLINK produced the wrong program start address.
XLINK0108 and XLINK0112 are previous problems
in the same series.
- Added the command line option -h for explicitly specifying the ranges to
be filled by -H. See XMAN.HTM for more
information.
- XLINK0121:
The feature introduced in XLINK 4.51K, where some output formats used
address order, also resulted in the disappearance of any calculated
checksum (-J) from the output using these formats.
- When printing a checksum value (-J) in the linker list file, now only the
relevant portion (1, 2 or 4 bytes) of the checksum is printed, instead of
always printing a 4 byte value.
- Added support for the 6811 and SH processors to the ELF output
format.
- Improved type output in diagnostics and the linker list file for C++
classes.
- The output of C++ symbol names in XLIB has been improved in steps,
starting with version 3.27F (released together with XLINK 4.51K).
XLINK 4.51L - 1999-09-07
- In the entry list section of the linker list file, module local symbols
are now marked 'LOCAL'.
- XLINK0120:
When trying to output the conflicting types in a type conflict warning
(warning 6) for input files using UBROF version 6 or earlier, XLINK would
get an internal error. The same thing could happen in XLIB when doing a
'list-object-code' on one of these files.
XLINK 4.51K - 1999-08-24
XLINK0112:
As a by-product of fixing XLINK0108 (not giving
an error for an some undefined but needed segment) XLINK started giving an
error for undefined segments that were truly not needed. This should now
work properly.
Some diagnostic messages now provide a little more information.
XLINK now supports UBROF version 8.0.2, which adds the T_ATTR_NAME record
type.
Support for the MS8 processor.
Minor improvements in type output in diagnostics.
The experimental feature -xo to generate a static overlay system map
(call graph) listed functions even if they were excluded from the final
output.
The Elf (ELF/DWARF) output format now supports the 68HC16 processor and a
new format variant. See XMAN.HTM for more
info.
XLINK 4.51J - 1999-05-31
- XLINK0111:
When doing checksums (-J), the last checksummed range was sometimes
omitted from the list of checksummed areas in the linker list file.
- XLINK0110:
Default file extensions for two-file output formats still did not work.
Now the second file always got the default file extension (something like
.a26) and the first file defaulted to the second file's extension. This
bug was introduced when trying to fix XLINK0106.
- XLINK0109:
When using the output format xcoff78k with the format variant modifier
-ye and an assembler file included SFR declarations, XLINK aborted with
an internal error.
- XLINK0108:
No error was given if an empty segment was not present in any segment
placement command. Normally this is OK, but when the address of such a
segment is needed, this is wrong.
- XLINK0107:
Empty segments placed in previous segment placement commands did not
cause later segment placements ranges to split. Example: -ZEMPTY=400-4FF
-ZBAR=0-FFFF. This should place the empty segment EMPTY at address 400 and
cause the range 0-FFFF to be split into 0-3FF and 400-FFFF.
- Warning 33 (-r overrides -F) is no longer emitted when running under the
Workbench.
- Improved the checking for output files overwriting other input or output
files.
- XLINK now supports COFF output files compatible with the MPLAB debugger
for the PIC processor. See XMAN.HTMXT for
more information.
XLINK 4.51I - 1999-04-22
- XLINK0106:
When using a two-file output format (like -Fdebug-motorola, which should
produce one UBROF file for C-SPY, and one Motorola hex file) and
specifying an output file name including the file extension (which is
always the case when using the WorkBench), the second output file was
given the same name as the first, and thus overwriting it. The problem was
introduced in version 4.51G.
- XLINK0105:
Absolute code in assembler modules was checked for overlap against
relocatable segments in all address spaces, not just in the code address
space.
- XLINK0104:
Using packed segment placement (-P) with no address range to indicate the
same range as the last placement command did not work if a different
segment type than that of the primary segment placement command was used,
and the second segment type indicated the same address space as the first.
Segment types CODE and CONST are like this for many targets.
- XLINK0103:
Numbers in segment placement command line options are normally specified
in hexadecimal, but numbers starting with a dot ('.') are in decimal. The
latter feature didn't work.
- When using the UBROF output format (-r, -Fdebug etc.) and
linking with no modules which contained C basic type size
information, XLINK output default sizes for all such basic
types, which is unnecessary and potentially incorrect.
- The XLINK DLL, which is used when running under the
WorkBench, no longer looks for input files in the connected
directory. This only affects files specified in the linker
command file, since the WorkBench itself always uses an
absolute path name for all files included in the
project. The connected directory is not a well-defined
entity under the WorkBench and looking for files there can
only cause problems.
- Support for the SM8500 and SM600 processors.
XLINK 4.51H - 1999-03-26
- XLINK0102:
When there is errors during linking, no object file should be produced
unless the command line option -B (forced dump) is given. This was not
always the case.
- XLINK0101:
When address translation (-M) was active, erroneous warning messages
(warning 53) could be generated while writing a linker list file.
- XLINK0100:
Address translation (-M) could cause a crash.
- XLINK0099:
When using packed segment placement (-P), XLINK sometimes generated
erroneous segment conflict errors (error 124).
XLINK 4.51G - 1999-03-17
Any number of -O command line options can be specified. Each will result
in one output file using the format `format', possibly with the variant
`variant' (as if specified in a -Y or -y command line option). If no
filename is given, the output file will get the same name as some other
output file, or the name given in a -o command line option, with the
default extension for the format. If the filename starts with a '.', it
is assumed to be an extension, and the file gets the same name as if no
name was given, only with the specified extension.
Example:
-Odebug=foo
-Omotorola=.s19
-Ointel-extended,1=abs.x
This will result in one output file named foo.dbg, using the UBROF format,
one named foo.s19, using the MOTOROLA format, and one named abs.x, using
the INTEL-EXTENDED format as if -Y1 was also given.
As before, if -r is specified, only one output file is generated, using
the UBROF format and selecting special runtime library modules for
C-SPY.
The filler bytes command line option (-H) can now take a filler string.
See XMAN.HTM for details.
Address translation (-M), which was mentioned in
XMAN.HTM for XLINK 4.51E, was not actually
enabled in the release version.
A new modifier for the -Z segment placement command line option has been
added. -Z@ will give the old segment placement behavior of placing
segments without taking into account any other use of the address ranges
given. This is basically only useful if you actually want to get segment
overlap.
Giving the command line option -@ will cause all -Z command line options
to behave as if given as -Z@. The -@ feature is to be considered
experimental and may disappear or be renamed in a future version.
XLINK0098:
When using the SYSROF format, symbols were sometimes output incorrectly,
and function debug information was incorrect for compilers using UBROF 7
or later.
XLINK0097:
Block local statics were output with the wrong address in the output
formats SYSROF, AOMF8051, AOMF8096, and the ASHLING variants.
XLINK0096:
The address space information for sam8 was incorrect, resulting in the
segment list in the linker list file being sorted in the wrong
order.
XLINK0095:
When using downwards segment placement into far memory ranges which
overlap with other placement, the linker could place segments into the
wrong part of the ranges.
XLINK0094:
When writing the output format xcoff78k, the magic number identifying the
selected processor was wrong if any of the options causing XLINK to create
an internal synthetic module was used. In particular, using filler bytes
(-H) caused this to happen.
XLINK0093:
Segment placement could under rare circumstances cause an internal
error.
XLINK0092:
Segments given extra space using the +NNNN syntax (usually stack segments)
were displayed without the extra space in the segment map in the linker
list file if the segment had no other content.
XLINK0091:
When using the output format IEEE-695, XLINK produced broken output if
there was source in include files.
XLINK0090:
When translating file references to UBROF 5 style embedded source, XLINK
failed to find the source file if there was only one source file.
XLINK 4.51F - 1999-02-01
- XLINK0089:
The warning about multiple output formats was emitted without taking into
account any -w (disable warning) options.
- XLINK0088:
Placing common segments in far memory did not work. This bug has
apparently always existed.
- XLINK0087:
Segment duplication (-K) could sometimes fail to duplicate some segments.
This bug appeared first in XLINK 4.51A.
- XLINK0086:
When using internal buffering, which is needed for the output formats
msp430_txt, xcoff78k, ieee-695, elf and simple, as well as when filler
bytes or checksums are used, if two assembler modules had contiguous
absolute parts, XLINK would write into (or over the end of) the wrong
internal buffer, which could result in crashes or wrong output.
- XLINK0085:
Segment duplication (-K) did not work correctly for common
segments.
- XLINK0084:
When segment placement was reworked in XLINK 4.51A, the special hack for
far segment placement was broken. Variable initialization no longer
worked if there was more than 64K of far data.
- For targets using runtime model attributes, a section was added to the
linker list file describing these.
- When a segment part belonging to a segment placed with packed placement
(-P) is listed in the module map in the linker list file, the original
segment name is now also listed as well as the name of the new packed
segment. Also, the invented names for packed segments are now longer and
thus slightly more informative.
- The segment list of the linker list file now includes a size
column.
- Added support for the DIP processor.
XLINK 4.51E - 1999-01-25
- The IEEE-695 output format is now supported for the 6811 processor as
well.
- XLINK0083:
In the new improved segment placement introduced in 4.51A, one byte too
much was reserved for each absolute range from an assembler module, which
could cause some code bytes to go unused if relocatable segments were
placed using a range that overlapped that used by the absolute
parts.
- XLINK0082:
When there is source code in a header file, XLINK could sometimes drop
source file change records in UBROF output, resulting in mixed up source
line debug information. This involves segment parts being garbage
collected, so can only occur with compilers/assemblers using UBROF 7 or
later.
- XLINK0080:
XLINK sometimes tried to close an object file that was already closed. The
only observed effect of this bug is under WorkBench 2.10 or earlier where
it manifests as an 'internal error in the linker' under certain
circumstances, one of which is the use of filler bytes (-H). XLINKs prior
to version 4.51A only exhibit the bug if the command line option -m is
given.
- XLINK0079:
If the first segment part in a module was located and root, XLINK
crashed.
- XLINK0078:
After warning about incompatible segment parts for a segment (warning 3),
XLINK could crash. The warning is now an error, and XLINK now assumes that
all segment parts are of the same type as the first one seen if -B (Forced
Dump) is used to proceed from the error.
- XLINK0077:
Filler bytes (-H) were under certain circumstances output for parts of
open memory ranges, which could cause checksum calculation to produce the
wrong answer.
- XLINK0076:
Some command line options were missing from the online command line
help.
- XLINK0075:
When using some two-file output formats (for example -Fdebug-motorola,
which produces one output file using the format -Fdebug and one using
-Fmotorola), the second output file didn't get the correct file
extension.
XLINK 4.51D - 1998-12-01
- Common segment contents are now checked for overlap with each other. This
primarily means that a message will now result if more than one module
defines the same interrupt vector.
- Previously, when given UBROF 6 or later input using file references and
directed to produce UBROF 5 output, where file references are not
available, XLINK aborted the link job. It now attempts to embed source
files in the output. It searches for source files in the same places it
searches for object files (first the connected directory, and then any
include paths).
- Range checks are now disabled for undefined externals.
- The type conflict warning (warning 6) now gives more information about in
what way the types do not match.
- XLINK0074:
When linking with output from the PLM converter, XLINK erroneously emitted
error 82. This problem started in XLINK version 4.49A.
- XLINK0073:
Warning 38, "There are indirect calls both from interrupts and from the
main program", could be generated when not needed. This only affects
targets using the static overlay system, ie 8051, 6502, 740.
- XLINK0072:
Bit segment placement was broken in XLINK 4.51A.
- Using SFB/SFE on a segment that did not exist could cause a crash.
- Output a maximum of 254 instead of 255 bytes at a time in UBROF output.
This ensures that the number of bytes will not be odd for word addressed
targets.
XLINK 4.51C - 1998-10-21
- Improved the sorting of segments in the Segment Map part of the list file
so that empty segments are listed before segments with content on the same
address.
- ELF/DWARF support is now at release status.
- Improved the handling of far segment placement commands in the new
segment placement scheme.
XLINK 4.51B - 1998-10-14
- XLINK0071:
XLINK 4.51A crashed under the Workbench when trying to output type
conflict information to the Messages window.
- XLINK now outputs type size information before the types in UBROF 7
or later.
- Another fix to translating UBROF 7 debug info to UBROF 6 or
earlier.
XLINK 4.51A - 1998-10-08
- Added support for the PIC and V850 processors.
- XLINK now garbage collects segment parts. When used with
compilers/assemblers that support UBROF 7 or later, this enables the
removal of functions or variables that are not actually needed. See also
XMAN.HTM for a discussion of this.
- Improved translation of UBROF 7 or later debug info to UBROF 6 or earlier
formats.
- Added skip info for the t_key_value record type.
- Preliminary support for the ELF/DWARF output format for the following
targets: 6812, V850.
- XLINK0070:
When using XLINK under the WorkBench, if a "-x" option is given in the
linker command file, but no "-l" or "-L" option is given, XLINK got an
internal error. It now acts as if a "-L" option was given.
- XLINK0069:
Packed segment placement ("-P") could crash when failing to place any
segment part into a certain range.
- XLINK0068:
For some input object files, XLINK emitted symbol definitions too late in
the UBROF file, resulting in a corrupt file.
- XLINK0067:
XLINK complained about unknown target ids (error 112) when fed object
files from old versions of the 8051, 6811, 78000 and 78300
compilers.
XLINK 4.50E - 1998-07-03
- XLINK0066:
A problem in the matching of type attributes could sometimes result in
extraneous type conflict warnings (warnings 6 & 35). Also, the diagnostic
output for type conflicts could sometimes omit the problematic type
attributes.
- XLINK0065:
Using the static overlay command line option -a (keep all function static
overlay areas non-overlapping) resulted in an internal error. The static
overlay system is used by the 740, 6502 and 8051 compilers.
- XLINK0064:
When using the checksum feature (-J), and the two's complement of the
checksum was selected for output, the one's complement of the checksum was
instead output.
- XLINK0063:
XLINK version 4.50D rejected most input files using revision 5 of the
UBROF object format (UBROF 5), mistakenly claiming that they were
corrupt.
- XLINK0062:
Some fields in the header information block of SYSROF output files were
output twice for the H8S processor.
- Some minor changes to the UBROF 7 support.
- For the A90 processor, the CONST (and NEARCONST, FARCONST and HUGECONST)
segment type is now considered to be in data space, not code
space.
- The situation reported in XLINK0047 (using +NNNN
for segments with more than one segment part) could still cause problems
under certain circumstances.
XLINK 4.50D - 1998-06-03
- Warning 14 (library module discarded) is no longer output.
- Improved UBROF 7 support.
- XLINK0061:
XLINK now filters out statements with no code at the end of functions when
using the IEEE-695 output format.
XLINK 4.50C - 1998-05-14
- XLINK0060:
File position calculations were wrong when running under the Embedded
Workbench, causing some output formats not to work. This problem was
introduced in version 4.50A.
- XLINK0059:
Due to a really stupid mistake by the XLINK maintainer, XLINK started
having problems with symbols where one is the prefix of the other in
version 4.49J. This is believed to primarily affect debug information in
the xcoff78k and ieee695 output formats but could have more far-reaching
implications.
- XLINK0058:
Each segment part in a far segment was aligned according to the maximum
alignment for the segment. This could result in misalignment when using
far initializers for near data.
- XLINK0057:
The static overlay information for recursive functions was sometimes
wrong. The static overlay system is used by the 740, 6502 and 8051
compilers.
- When reporting that it is unable to open an object file, XLINK now
reports the file name as originally given.
- As part of the support for UBROF 7, XLINK now handles the "sort by
decreasing alignment" segment attribute, which can result in less waste
primarily when allocating space for variables and their
initializers.
XLINK 4.50B - 1998-04-28
- XLINK0056:
When creating synthetic module content for the static overlay system,
XLINK could overwrite the end of some internal tables, causing Internal
Errors or worse.
- XLINK0055:
XLINK generated an incorrect module attribute (cpa) for synthetic modules,
which caused strange behavior in C-SPY for big-endian targets.
XLINK 4.50A - 1998-04-27
- XLINK now supports UBROF 7 input and output and converting between UBROF 7
and earlier versions of the UBROF format. This support is still in testing
and does not have release status.
- When specifying an open range (one giving a start address but not and end
address) to a segment placement command line option (-Z/-b/-P) the end of
the range is now set to 0xFFFFFFFE instead of 0xFFFFFFFF, since XLINK
cannot make use of the byte at 0xFFFFFFFF. The attempt to use that byte
could result in spurious error messages.
- All hexadecimal numbers in diagnostic messages should now start with the
prefix '0x'. Changed some numbers to be printed in decimal, where this
was appropriate.
- Warnings 28 (segment only partially initialized) and 29 (initialization of
data segment) now report the module(s) where the (non)initialization takes
place.
- Error 68 (external static overlay function has no global definition) has
been replaced with warning 46. The reasoning behind this is that there
are cases where it is harmless not to have a global definition. This
problem was masked by the fact that up to version 4.49C, XLINK often
failed to report error 68.
- XLINK0054:
Bit addresses higher than 0x7FFFFFFF were printed incorrectly in the list
file.
- XLINK0053:
Defining absolute static overlay functions in assembler caused an IE in
XLINK.
- XLINK0052:
Assembly modules with source information could cause an IE when using the
output format ieee-695.
- XLINK0051:
XLINK 4.49J mistakenly started stating in the list file that the output
was UBROF 7, even when the output was actually UBROF 6.
- XLINK0050:
The debug information for block local static variables was wrong in two
output formats. In ieee-695 the problem was introduced in version 4.49J.
In xcoff78k the problem has been present since time immemorial.
- XLINK0049:
Added a terminating directory delimiter to the file path of FILEDEF
records in AOMF80251 object files.
- XLINK0048:
When using an output format specifying two object files, any size limit
was not reset between the files, effectively halving the limit.
- XLINK0047:
Using +NNNN to increase the memory for a segment that has more than one
segment part did not work. The extra space was placed at the wrong place
and counted twice, which could result in segment overlap errors and
worse.
- XLINK0046:
When using an output format specifying two object files and the -H (fill)
option, an internal error resulted.
- XLINK0044:
Any backslash character ('\') in the environment variable XLINK_ENVPAR
caused XLINK to loop.
XLINK 4.49J - 1998-02-11
- XLINK now supports a new output format: aomf80251, with output according
to the Intel "Object Module Format 251 Specification" revision
1.7.
- In DOS, using '/' as a directory delimiter instead of '\' should no longer
confuse XLINK.
- XLINK0043:
No C_ICALL segment was generated when using -a# to declare indirect
calls.
- XLINK0042:
When linking no modules and using the output format xcoff78k, an internal
error occurred.
- XLINK0041:
XLINK had no way of quoting filenames with unusual characters when reading
from an xcl file. They can now be quoted the same way as in the DOS
command shell (enclosing them in double quotes).
- XLINK0040:
In the msp430_txt format, each line of binary data must be exactly 16
bytes or be followed by a new address.
- XLINK0039:
In the segment map in the listing file, headers indicating module-local
symbols weren't output properly.
- XLINK0038:
When bit segments overlapped segments with downwards allocation, the
downwards allocation segments were placed in the wrong part of the split
memory range.
XLINK 4.49I - 1997-12-22
- XLINK0037:
One of the new features in UBROF 6 (T_GRP records) wasn't actually turned
on, resulting in bigger output files.
- XLINK0036:
A problem in type matching could cause unneeded type conflict
warnings.
- XLINK0035:
The linker generated segments C_ICALL, C_RECFN, and C_FNT, used by the
8051, 740 and 6502 targets, were not duplicated when using segment
duplication (-K).
- XLINK0034:
In the output format IEEE-695 the source line information for return
statements was incorrect. Introduced the '-yr' format variant flag. See
XMAN.HTM for more information.
- XLINK0033:
Assembly modules with source information for absolute code caused an
internal error when using the output format xcoff78k.
- XLINK0032:
XLINK calculated the size of the t_seg_info record type, which is new in
UBROF 6, incorrectly. This rendered UBROF 6 files unreadable by DOS C-SPY,
and any other UBROF 6 reader that does not support that record type
directly.
- XLINK0031:
Empty bit segments could sometimes extend the range of occupied bit
memory, causing incorrect segment overlap errors or erroneous
segment placement.
- The XLIB display-options command listed the UBROF record tags with the
wrong values. Fixed in XLIB 3.26S.
XLINK 4.49H - 1997-11-14
- XLINK mistakenly considered use of -P (packed segment placement) to be
equivalent to use of banking (-b). This made it impossible to use -P with
output formats that do not support banking. Fixed.
- XLINK0030:
An Internal Error could result when using -n (no module-local symbols)
with the static overlay system.
- XLINK0029:
In IEEE-695 output the last source file reference for a function could be
to the code byte after the function. This source file reference is now
suppressed.
- XLINK0028:
When segment placement failed, -B (force output) sometimes failed to
produce a map file.
- XLINK0027:
In xcoff78k output, the path stripping format variant (-yp) didn't
work.
- -H (filler bytes) sometimes didn't fill all the holes in common
segments.
- The use of -b (banked segment placement) or -P (packed segment placement)
for debug builds with one of the output formats IEEE-695 or xcoff78k could
cause an internal error.
- The fix in 4.49F concerning error 72 and segments with no content was
insufficient. The error could still sometimes fail to appear for segments
with content.
XLINK 4.49G - 1997-10-22
- There is now support for source level assembly debugging in the xcoff78k
output format, with one known limitation. If there are several modules in
one object file, source level assembly debugging only works for the first
module in the file.
XLINK 4.49F - 1997-10-20
- XLINK0026:
A problem in the type globalization routines could cause an exception when
reading input object files.
- The attempt to silence error 72 (Segment must be defined in a segment
definition option) for segments with no content in 4.49B resulted in the
error sometimes not being generated even for segments with
content.
- When doing static overlay optimization (optionally used by the 8051, 6502
and 740 compilers) XLINK sometimes erroneously considered the function
'main' to have no callers, and thus allocated no space for its arguments
or locals.
- XLINK0025:
IEEE-695 output for the 740 processor was not enabled in the release
version.
- XLINK0024:
An overly restrictive input consistency check sometimes caused an internal
error in conjunction with the use of -n (no local symbols).
- XLINK0023:
Module-local (static) functions with debug information caused an internal
error when -n (no local symbols) was used and the output format was
ieee695.
- XLINK0022:
-P (pack segments) sometimes caused an internal error.
- XLINK0021:
Module-local (static) functions with debug information caused an internal
error when -n (no local symbols) was used and the output format was
xcoff78k.
XLINK 4.49E - 1997-10-06
- XLINK0020:
The size of the linker-generated segment C_FNT was not calculated
correctly, causing segment overlap checking and certain list file output
to be wrong. This segment is used for the 8051, 6502, 740 and 65000
processors.
- XLINK0019:
XLINK sometimes emitted warning 29 (initialization of non-prom segments)
erroneously for modules that had both absolute code and relocatable
data.
- XLINK0018:
Support for IEEE-695 output for the 6812 processor was not enabled in the
release version.
XLINK 4.49D - 1997-09-13
- 4.49C introduced a bug in the handling of multiple external references to
the same symbol with different type information.
XLINK 4.49C - 1997-09-12
- Using seg+nnnn to allocate extra memory to a segment in far memory didn't
work. This problem was introduced in 4.49A.
- Empty segments at the end of already full memory ranges were reported as
not fitting. This was also introduced in 4.49A.
- Support for cr16.
- For the static overlay system: Added a new experimental way to specify to
XLINK what indirect calls to functions are possible. It is an addition to
the "-a" command line option, and has the following syntax:
-a#(caller1,caller2,...)=>(callee1,callee2,...)
callerN and calleeN can be either the name of a function or
module:function. If only one function is wanted on either side of the =>
the parenthesis can be omitted. The meaning is that the functions callerN
can indirectly call the functions calleeN. If any -a# options are given,
they are together assumed to specify the entire picture. That is, no other
indirect calls can occur than those specified in any of the -a#
options.
Given this information, XLINK can make sure the static overlay system is
safe in the presence of indirect calls. Using -a# can also result in
significantly less memory usage for params and locals as more
opportunities for sharing are being made visible to XLINK.
The alternative of using switch statements and only direct calls, is
still to be considered far safer, and will use no more static overlay
memory. The use of -a# is very likely to be quite error-prone, and XLINK
can perform very little checking to assure that the information entered
in -a# is correct. Whereas the use of only direct calls makes the
information available to XLINK automatically and reliably.
XLINK0017:
Type matching was done for some symbols in modules that were not included
in the final link.
-xh and -xo (see 4.49A) weren't actually turned on.
Extraneous trailing blanks were output in the msp430_txt output
format.
XLINK 4.49B - 1997-08-19
- The handling of zero-sized segment parts could cause problems with the
generation of filler bytes (-H).
- Information about program entries was erroneously output on the
console.
- Error 72 (Segment must be defined in a segment definition option) is no
longer generated for segments with no content.
XLINK 4.49A - 1997-08-18
Bit segments were not handled correctly on the M16C.
The multiple union/struct definitions for the same tag warning (35) was
output even when global type check was turned off.
The SIMPLE output format has been changed slightly, so as to not output
meaningless segment type synonyms.
Copyright 2002 IAR Systems. All rights reserved.