14.1 Errors
Symbols
% by zero
Modulo by zero is not computable.
/ by zero
Division by zero is not computable.
A
A heap is required, but has not been specified.
A heap must be specified when using Standard C input/output functions.
Address 0x8 of filename section .reset is not within region reset.
This error indicates a problem with the linker script. Normally section
.reset
is created by the linker script and includes a single GOTO
instruction. If a linker script is included in the link as an input file, it will
augment the built-in script instead of replacing it. Then section
.reset
will be created twice, resulting in an overflow. To correct
this error, specify --script
or -T
on the link command
before the linker script file name.
Address addr of filename section secname is not within region region.
Section secname
has overflowed the
memory region to which it was assigned.
C
Cannot access symbol (name) with file register addressing. Value must be less than 8192.
name
is not located in near address
space. A read or write of name could not be resolved with the small data memory
model.
Cannot access symbol (name) at an odd address.
Instructions that operate on word-sized data require operands to be allocated at even addresses.
cannot move location counter backwards (from address1 to address2).
The location counter can be advanced but it cannot be moved backwards. An operation is attempting to move it from address1 backwards to address2.
cannot open linker script file name.
Unable to open the specified linker script file. Check the file name and/or the path.
cannot open name:
Cannot open the input file name. Check for correct spelling, extension or path.
cannot PROVIDE assignment to location counter.
The PROVIDE keyword may not be used to make an assignment to the location counter.
Cannot use relocation type reloc on a symbol (name) that is located in an executable section.
An attempt was made to use a symbol in an executable section as a data
address. To reference an executable symbol in a data context, the
psvoffset()
or tbloffset()
operator is
required.
Could not allocate data memory.
The linker could not find a way to allocate all of the sections that have been assigned to region ‘data’.
Could not allocate program memory.
The linker could not find a way to allocate all of the sections that have been assigned to region ‘program’.
Could not allocate eedata memory.
The linker could not find a way to allocate all of the sections that have been assigned to region ‘eedata’.
Could not allocate section ‘name’, because ‘ymemory,near’ is not a valid combination on this device.
The linker could not allocate section name because the combination of
section attributes [ymemory
,near
] is not valid on the
current device.
Could not allocate section secname at address addr.
An address has been specified for secname that conflicts with another section or the limit of memory.
Could not allocate section ‘section name’ it is illegal to use the last word of program memory
Using the last word of program memory is illegal and a link error will be generated if you attempt to place any code there.
D
Data region overlaps PSV window (%d bytes).
The data region address range must be less than the start address for the PSV window. This error occurs when the C compiler’s “constants in code” option is selected and more than 32K of data memory is required for program variables.
--data-init and --no-data-init options can not be used together.
--data-init
creates a special output section named
.dinit
as a template for the run-time initialization of data,
--no-data-init
does not. Only one option can be used.
__DMA_BASE is needed, but not defined (check linker script?)
__DMA_END is needed, but not defined (check linker script?)
The symbols __DMA_BASE and __DMA_END must be defined in order to allocate variables or sections in dma memory. By convention these symbols are defined in the linker script for a particular device, if that device supports dma memory.
E
EOF in comment.
An end-of-file marker (EOF) was found in a comment.
F
op forward reference of section secname.
The section name being used in the operation has not been defined yet.
G
--gc-sections and -r may not be used together.
Do not use --gc-sections
option which enables garbage
collection of unused input sections with the -r
option which generates
relocatable output.
H
--handles and --no-handles options cannot be used together.
--handles
supports far code pointers;
--no-handles
does not. Only one option can be used.
I
includes nested too deeply.
include statements should be nested no deeper than 10 levels.
Illegal value for DO instruction offset (-2, -1 or 0).
These values are not permitted.
invalid assignment to location counter.
The operation is not a valid assignment to the location counter.
invalid hex number ‘num.’
A hexadecimal number can only use the digits 0-9 and A-F (or a-f). The number is identified as a hex value by using 0x as the prefix.
invalid syntax in flags.
The region attribute flags must be w
,
x
, a
, r
, i
and/or
l
. (‘!’ is used to invert the sense of any following attributes.)
Any other letters or symbols will produce the invalid syntax error.
M
macros nested too deeply.
Macros should be nested no deeper than 10 levels.
missing argument to -m.
The emulation option (-m
) requires a name for the
emulation linker.
N
Near data space has overflowed by num bytes.
Near data space must fit within the lowest 8K address range. It
includes the sections .nbss
for static or non-initialized variables,
and .ndata
for initialized variables.
no input files.
The XC-DSC linker requires at least one object file.
non constant address expression for section secname.
The address for the specified section must be a constant expression.
nonconstant expression for name.
name
must be a constant
expression.
non constant address expression specified. Section will be allocated at the current address in the current region.
If a load address is specified for a section in the linker script using the AT (symbol) expression and “symbol” is not defined, a warning will be generated and the section will be allocated at the current address in the current region.
Not enough contiguous memory for section secname.
The linker attempted to reallocate program memory to prevent a read-only section from crossing a PSV page boundary, but a memory solution could not be found.
Not enough memory for heap (num bytes available).
There was not enough memory free to allocate the heap.
Not enough memory for stack (num bytes available).
There was not enough memory free to allocate the minimum-sized stack.
O
object name was created for the processor which is not instruction set compatible with the target processor.
An object file to be linked was created for a different processor family than the link target, and the instruction sets are not compatible.
Odd values are not permitted for a new location counter.
When a .org
or .porg
directive is
used in a code section, the new location counter must be even. This error also occurs if
an odd value is assigned to the special DOT variable.
P
--pack-data and --no-pack-data options cannot be used together.
--pack-data
fills the upper byte of each instruction
word in the data initialization template with data. --no-pack-data
does
not. Only one option can be used.
PSV section secname exceeds 32 Kbytes (actual size = num).
The constant data table may not exceed the program memory page size that is implied by the PSVPAG register which is 32 Kbytes.
R
region region is full (filename section secname).
The memory region region
is full, but
section secname
has been assigned to it.
--relax and -r may not be used together.
The option --relax
which turns relaxation on may not
be used with the -r
option which generates relocatable output.
relocation truncated to fit: PC RELATIVE BRANCH name.
The relative displacement to function name is greater than 32K instruction words. A function call to name could not be resolved with the small code memory model.
relocation truncated to fit: relocation_type name.
The relocated value of name is too large for its intended use.
S
section .handle must be allocated low in program memory.
A custom linker script has organized memory such that section
.handle
is not located within the first 32K words of program
memory.
section secname1 [startaddr1—startaddr2] overlaps section secname2 [startaddr1—startaddr2]\n”),
There is not enough region memory to place both of the specified sections or they have been assigned to addresses that result in an overlap.
-shared not supported.
The option -shared
is not supported by the XC-DSC linker.
Symbol (name) is not located in an executable section.
An attempt was made to call or branch to a symbol in a bss, data or readonly section.
syntax error.
An incorrectly formed expression or other syntax error was encountered in a linker script.
U
undefined symbol ‘_ _reset’ referenced in expression.
The library -lpic30
is required, or some other input
file that contains a start-up function. This error may result from a version or
architecture mismatch between the linker and library files.
undefined symbol ‘symbol’ referenced in expression.
The specified symbol has not been defined.
undefined reference to ‘_Ctype’.
undefined reference to ‘_Tolotab’.
undefined reference to ‘_Touptab’.
These errors indicate a version mismatch between include files and library files, or between library files and precompiled object files. Make sure that all object files to be linked have been compiled with the same version of the XC-DSC compiler. If you are using a precompiled object or library file from another vendor, request an update that is compatible with the latest version of the compiler.
undefined reference to ‘symbol.’
The specified symbol has not been defined. Either an input file has
been omitted, a library file is incomplete, a library file requires a symbol from an
earlier library, or a circular reference exists between libraries. Circular references
can be resolved with the --start-group
, --end-group
options.
unrecognized emulation mode: target Supported emulations:
The specified target is not an emulation mode supported by the linker. The list of supported emulations follows the error message.
unrecognized -a option ‘argument.’
The -a
option is not supported by DSC devices; so it is ignored.
unrecognized -assert option ‘option.’
The -assert
option is not supported by DSC devices; so it is ignored.
unrecognized option ‘option’.
The specified option is not a recognized linker option. Check the
option and its usage information with the --help
option.
op uses undefined section secname.
The section referred to in the operation is not defined.
X
X data space has overflowed by num bytes.
The address range for X data space must be less than the start of Y data space. The start of Y data space is determined by the processor used.
Y
__YDATA_BASE is needed, but not defined.
By convention, the starting address of Y data memory for a particular
device is defined in linker scripts using this name. The linker needed this information
to allocate a section with xmemory
or ymemory
attribute, but could not find it.