This appendix contains the following sections:
Overview
Warnings
Error Messages
Fatal Errors
This appendix describes the messages link51 produces if erroneous situations occur. Three levels of severity are distinguished:
1. Warnings
2. Errors
3. Fatal errors
A warning indicates a situation where the linker makes assumptions how the link has to take place. This might lead to a result you do not want. The linker finishes all its tasks after generating a warning. A complete output file is produced.
Error conditions may cause the linker to terminate before the complete output file is written. If they occur in the first phase ( reading the input modules ) the only task the linker performs, is to calculate the possible link map of the segments and produce a listing file. The second pass ( writing the output file ) is omitted. If errors occur in the second pass an output file is produced. You are recommended not to use this file for further program development but fix the the errors and re-link your program.
Fatal errors are generated if the linker detects situations where it cannot continue at all. The program exits immediately.
WARNING 1 : UNRESOLVED EXTERNAL SYMBOL
SYMBOL : symbol name
MODULE : module name
A symbol is declared external without being defined public in any of the modules in the program.
WARNING 2 : REFERENCE MADE TO UNRESOLVED EXTERNAL
SYMBOL : symbol name
MODULE : module name
A symbol reference of an unresolved external is found in a fixup record. The linker created a symbol record for such a symbol but its value will be zero. Thus it is unlikely that the relocated code address gets the proper value.
WARNING 3 : ASSIGNED ADDRESS NOT COMPATIBLE WITH
ALIGNMENT
SEGMENT : segment name
The absolute address specified in one of the locating controls on the command line is not compatible with the relocation attribute of the segment ( PAGE, INPAGE or INBLOCK ). The segment start address will be the one on the command line, the relocation attribute will be overruled.
WARNING 4 : DATA SPACE MEMORY OVERLAP
FROM : byte.bit address
TO : byte.bit address
Two internal ram segments are located within the same address range.
WARNING 5 : CODE SPACE MEMORY OVERLAP
FROM : byte address
TO : byte address
Two code segments are located in the same address range.
WARNING 6 : XDATA SPACE MEMORY OVERLAP
FROM : byte address
TO : byte address
Two external data segments are located in the same address range.
WARNING 7 : MODULE NAME NOT UNIQUE
MODULE : module name(filename)
A module name in one of the archives or the plain object files occurs twice.
WARNING 10 : MAXIMUM NUMBER OF MODULES EXCEEDED (255)
OVERLAY DISABLED
If overlay is enabled the maximum number of modules in a program is 255. Each module in a library is counted as a separate one. If this number is exceeded, which is detected in the first pass, overlaying is switched off automatically. Linking proceeds normally.
WARNING 11 : CONTROL NOT SUPPORTED
CONTROL : control
A number of controls supported by the Intel assembler are not supported. See also the section Linker Implementation for more information on this subject.
WARNING 12 : CANNOT ALLOCATE MEMORY FOR COREFILE
The linker attempts to speed up intput-output actions by creating a large buffer in memory. If the allocation request for the buffer fails, this warning is displayed. If no further errors occur the output file is created normally.
WARNING 13 : MORE THAN ONE REGISTERBANK SPECIFIED
SEGMENT segm NOT OVERLAID
When using the FUNCTIONOVERLAY control, all overlayable data segments may have only one register bank specified. Otherwise the segment is treated as non-overlayable.
WARNING 14 : NO CORRESPONDING CODE SEGMENT FOUND
SEGMENT segm NOT OVERLAID
When using the FUNCTIONOVERLAY control, data segments are overlaid by using a naming convention. When no code segment is found to the data segment, the data will not be overlaid.
WARNING 15 : FUNCTIONOVERLAY AND OVERLAY CANNOT BE
USED AT THE SAME TIME
CONTROL control IGNORED
Only one control of FUNCTIONOVERLAY and OVERLAY can be supported at the same time. The last given control is ignored.
WARNING 16 : CONTROL 'GRAPH' ONLY SUPPORTED WHEN
CONTROL FUNCTIONOVERLAY IS ALSO SELECTED
Function call graphs can only be made when FUNCTIONOVERLAY is done.
WARNING 17 : FUNCTIONOVERLAY (* > *) IS IGNORED
It is of no use to specify all functions calling all other functions. The result would be that no data is overlayable with any other data.
WARNING 18 : RECURSIVE CALL FROM segm1 TO segm2
When specifying the
FUNCTIONOVERLAY control, the linker checks for recursion between code segments. When recursion
is found, the first found relation of the segments causing the recursion
is displayed.
This warning may not be ignored, because the application probably
will not run anyway. Unresolved externals may cause this warning to occur also.
WARNING 19 : ERROR IN COMMANDLINE OPTION: option
FUNCTIONOVERLAYSee the description of the option for the correct invocation syntax.
WARNING 20 : CANNOT FIND SEGMENT segment
A segment name in one of the locating controls on the command line does not exist. The segment name in the control is ignored.
ERROR 101 : SEGMENT COMBINATION ERROR
SEGMENT : segment name
MODULE : module name
A segment is declared in two modules with different memory types or relocation types. Errors of this type are detected in the first pass of the linkage process. The linker terminates after creating a list file. An output file is not made.
ERROR 102 : EXTERNAL ATTRIBUTE MISMATCH
SYMBOL : symbol name
MODULE : module name
A symbol is declared external in two or more modules. The attributes of the symbol are used in conflicting context. e.g. declared twice with a different memory type.
ERROR 103 : EXTERNAL ATTRIBUTES DO NOT MATCH PUBLIC
SYMBOL : symbol name
MODULE : module name
The attributes of an symbol declared public in one module and external in another are in conflict with each other. E.g. it is not allowed to declare a symbol as a code label in one module and use it as a data label in the other module.
ERROR 104 : MULTIPLE PUBLIC DEFINITION
SYMBOL : symbol name
MODULE : module name
A symbol is defined public in more than one module. This is not allowed. Public symbols must be unique in the entire application.
ERROR 106 : SEGMENT OVERFLOW
SEGMENT : segment name
The size of a segment is larger than the size allowed for the memory type it belongs to. This error can only occur after combining two or more partial segments into one segment. The assembler checks whether a partial segment is within its limits.
ERROR 107 : ADDRESS SPACE OVERFLOW
SPACE : memory type name
SEGMENT : segment name
The linker is unable to link the specified segment within the valid range for the memory type. Other segments used the available space for the specified memory type.
ERROR 108 : SEGMENT IN LOCATING CONTROL CANNOT BE
ALLOCATED
SEGMENT : segment name
The linker cannot find free memory space for the segment specified in a locating control on the command line ( precede, bit, data,.... ).
ERROR 109 : EMPTY RELOCATABLE SEGMENT
SEGMENT : segment name
The linker found a segment with size 0. This message is displayed only if the CHECK control is effective. Empty segments are accepted otherwise.
ERROR 110 : CANNOT FIND SEGMENT
SEGMENT : segment name
A segment name in one of the locating controls on the command line does not exist. The segment name in the control is ignored.
ERROR 111 : SPECIFIED BIT NOT ON BYTE BOUNDARY
SEGMENT : segment name
Segments in the BIT locating control that are not of the memory type bit must have a starting address that is divedable by eight. If in the BIT control this rule is violated, the error message mentioned above appears.
ERROR 112 : SEGMENT TYPE NOT LEGAL FOR COMMAND
SEGMENT : segment name
In one of the locating controls on the command line a segment is used that has a memory type not permitted for that control.
ERROR 114 : SEGMENT DOES NOT FIT
SEGMENT : segment name
A segment in one of the locating controls cannot be located at the specified address within the valid range for the memory type the segment belongs to.
ERROR 115 : INPAGE SEGMENT IS GREATER THAN 256 BYTES
SEGMENT : segment name
A segment defined with the INPAGE attribute has, after the partial segments have been combined by the linker, become greater than 256 bytes. The segment is ignored.
ERROR 116 : INBLOCK SEGMENT IS GREATER THAN 2048 BYTES
SEGMENT : segment name
After combining the partial segments, each of which have been declared with the INBLOCK attribute, the segments has become greater than 2048 bytes.
ERROR 117 : BIT ADDRESSABLE SEGMENT IS GREATER THAN 16
BYTES
SEGMENT : segment name
A bitaddressable segment is greater than the bitaddressable memory space of the 8051. The segment is ignored.
ERROR 118 : REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL : symbol name
MODULE : module name
REFERENCE : code address
A relocation record in the object file refers to an ignored symbol. The symbol is ignored because of an error reported in an earlier stage of the link process. The fixup of the code address will be wrong because the linker does not know the correct value of the symbol.
ERROR 119 : REFERENCE MADE TO ERRONEOUS SEGMENT
SYMBOL : symbol name
MODULE : module name
REFERENCE : code address
A fixup record is found referring to a segment that caused an error in a previous stage. The fixup will produce wrong code bytes at the specified location.
ERROR 121 : IMPROPER FIXUP
MODULE : module name
SEGMENT : segment name
OFFSET : code address in segment
The calculated value for a fixup of a code address exceeds the value that fits in the number of bytes that will be fixed up. E.g. the value for a one byte operand has become greater than 255; the destination of an ajmp is in a different 2K block than the jump itself.
ERROR 123 : ABSOLUTE IDATA SEGMENT DOES NOT FIT
MODULE : module name
FROM : start address
TO : end address
The absolute addresses of one of the ranges of an absolute IDATA segment is outside the valid range. The linker default of internal RAM is 7FH. If there is IDATA space above this value the RAMSIZE control must be used to inform the linker.
ERROR 126 : OVERLAY MODULE NOT FOUND
MODULE : module name
One of the module names mentioned in the OVERLAY control cannot be found in the input files.
ERROR 127 : OVERLAY DATA ADDRESS SPACE OVERFLOW
SPACE : memory space name
The linker can not locate a number of overlaid segments in internal data. After determining the possible overlay structure, the linker treats groups of overlaid segments as if they were one (greater) segment. It is possible that this 'one' segment is greater than the available memory space. However, the linker can place the individual segments in small gaps that are not yet occupied. It is advisable to run the linker with NOOVERLAY to see if this is the case.
ERROR 128 : CAN NOT ALLOCATE STUBS IN bank_name
The linker did not succeed in locating the stubs in the specified bank.
ERROR 129 : CODE REFERENCES BETWEEN DIFFERENT
BANKS, segment1 <=> segment2
The linker detected code references between different code banks, this may result in runtime errors.
FATAL ERROR 201 : INVALID COMMAND LINE SYNTAX
partial command
The command line is not in the correct syntax.
FATAL ERROR 204 : INVALID KEY WORD
partial command
The linker expected a keyword on the command line. The text found does not match one of the known keywords.
FATAL ERROR 205 : NUMERIC CONSTANT TOO LARGE
partial command
A numeric constant in the command line is outside the valid range. If a constant greater than 0FFFFH is entered the message is generated.
FATAL ERROR 206 : INVALID CONSTANT
partial command
The linker expected a constant in one of the controls on the command line. This constant is not there, or is is misspelled.
FATAL ERROR 207 : INVALID NAME
partial command
A invalid name is found on the command line.
FATAL ERROR 209 : FILE USED IN CONFLICTING CONTEXT
FILE : filename
One of the filenames on the command line or in the linker command file causes the linker to produce the same filename for one of the input files and the output file. Since this is a conflicting situation for most operating systems the error message is displayed.
FATAL ERROR 210 : I/O ERROR, INPUT FILE
ERROR : CANNOT OPEN FILE
FILE : filename
An I/O error occurred on an attempt to open an input file. The file does not exist or cannot be read.
FATAL ERROR 211 : I/O ERROR, OUTPUT FILE
FILE : filename
The output file the linker wants to produce cannot be created. Probably the file already exists and cannot be overwritten, or the filename is invalid.
FATAL ERROR 212 : I/O ERROR, LISTING FILE
FILE : filename
The listing file cannot be created.
FATAL ERROR 213 : I/O ERROR, TEMPORARY FILE
FILE : filename
The linker creates a temporary file in the current directory if OVERLAY is enabled. If this file cannot be created the error message above is displayed.
FATAL ERROR 214 : INPUT PHASE ERROR
FILE : filename
The input in the second phase differs from the input read in the first phase. Probably a file is overwritten or corrupted by the linker in the first phase.
FATAL ERROR 216 : INSUFFICIENT MEMORY
All memory that can be allocated dynamically by the linker is used. This happens only with very large applications using great number of PUBLIC and EXTERNAL symbol definitions.
FATAL ERROR 217 : NO MODULE TO BE PROCESSED
There is no module in the list of modules to be processed after reading all the input files. This is probably because there are only libraries in the input file list.
FATAL ERROR 218 : NOT AN OBJECT FILE
FILE : filename
The input file does not have the valid object code file format.
FATAL ERROR 219 : NOT AN 8051 OBJECT FILE
FILE : filename
The input file is in the object code file format but is not created by asm51.
FATAL ERROR 220 : INVALID INPUT MODULE
MODULE : module name
The input module is not in the correct object format. The linker recognized it as a valid object file ( the file header is correct ). Reading the rest of the file the contents turned out to be erroneous.
FATAL ERROR 222 : SEGMENT SPECIFIED MORE THAN ONCE
partial command
A segment name is mentioned more than once, or in conflicting context, in the locating controls on the command line.
FATAL ERROR 224 : DUPLICATE KEYWORD
partial command
A keyword in the control-part of the command line is used twice.
FATAL ERROR 226 : SEGMENT ADDRESS INVALID FOR CONTROL
partial command
In one of the locating controls an address is used that is outside the valid range off the memory type the segment belongs to.
FATAL ERROR 227 : PAGEWIDTH PARAMETER OUT OF RANGE
The value in the PAGEWIDTH control is outside the valid range (78 - 132).
FATAL ERROR 228 : RAMSIZE PARAMETER OUT OF RANGE
The value in the RAMSIZE control is outside the valid range (80H - 100H).
FATAL ERROR 229 : I/O ERROR OVERLAY FILE; FILE: name
The size of the symbol table item reference is greater than 4.
FATAL ERROR 240 : INTERNAL PROCESS ERROR
If this error appears please fill in a software problem report and send it to your TASKING representative. This error indicates a failure in the internal administration of the linker. It is not caused directly by the input program.
FATAL ERROR 242 : segment LIMIT (64K) EXCEEDED
A maximum of 64K segments is allowed.
FATAL ERROR 250 : OVERLAY FUNCTION NOT FOUND
FUNCTION : func
Given function (code segment) was given in the FUNCTIONOVERLAY control, but does not exist.
FATAL ERROR 251 : OBJECT FILE HAS WRONG VERSION
FILE file
link51 only accepts object files in the new object format; given object file has the wrong object type. Create the object file again by using the new assembler and link again.
FATAL ERROR 252 : INPUTFILE NOT IN CORRECT OMF51
FORMAT
FILE : file
One of the input files is recognized as a file in OMF51 format (either object file or object library). The administration in this file is found to be corrupt: i.e. a sumcheck is incorrect or an invalid relocation type is read.
FATAL ERROR 253 : DUPLICATE FILENAME: OUTPUT AND
COMMANDFILE
You cannot overwrite the command file. Use another name for the output file.
FATAL ERROR 255 : TOO MANY SYMBOLS, UNABLE TO CONTINUE
There is not enough memory to allocate all symbols.
FATAL ERROR 256 : NO STUB FOUND
To support code bank switching a stub segment is required.
FATAL ERROR 257 : XPAGE PARAMETER OUT OF RANGE
The page number in the
XPAGE
control is outside the valid range
(0 - 255).
FATAL ERROR 258 : STRING TOO LONG: 'string'
A string longer than 200 characters is encountered.
FATAL ERROR 300 : TOO MANY SEGMENTS
The maximum number of segments is exceeded. This number is 1250.
FATAL ERROR 301 : INPUTFILE NOT IN PROPER ARCHIVE
FORMAT
FILE : file
One of the input files is recognized as an library file. This file turns out to be an improperly organized archive. You can resynchronize the archive using the ar51 utility. See also the manual page in the Utilities chapter in this manual.
FATAL ERROR 302 : INTERNAL ERROR
ASSERTION FAILED : filename lineno
This error message indicates the linker got into an undefined state. Recovery from this state is not possible. This can be caused by a lot of reasons. The most likely one is that one of the input files is corrupted, though not that severe that it caused error number 220. If you checked this over and you still do not see what went wrong please contact your TASKING representative.
FATAL ERROR 303 : NON-BITADDRESSABLE BYTE IN FIXUP
The assembler produced a fixup record for a symbolic reference to a bitaddressable byte. After the first link phase this symbol turns out to outside the bitaddressable byte area. To fix this problem, check if you are referring to the correct external symbol. If so, locate the segment in which the symbol is contained inside the bitaddressable area either by giving it the bitaddressable attribute or by using a locating control.
FATAL ERROR 304 : FIXUP ERROR: VALUE TOO BIG FOR
RELOCATION
The linker detected a situation after calculating the value for a relocatable expression, in which this value became too big for the number of bytes reserved in the code part. This message is followed by message number 121 giving you the information you need to fix this problem.
FATAL ERROR 305 : ASSERTION FAILED
See fatal error 302.
FATAL ERROR 306 : MODULE SELECTION NOT SUPPORTED
A control was found on the command line while an input file was expected. The input filename must not contain parenthesis '('.
FATAL ERROR 307 : SHORT SEGMENT CANNOT BE LOCATED
IN
FIRST XDATA PAGE
SEGMENT : segment name
The linker cannot place given segment into the first page of XDATA memory. Other SHORT segments or absolute segments may have filled this space already.