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.
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 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-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.
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.
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 address range. It includes
the sections .nbss
for static or non-initialized variables, and
.ndata
for initialized variables.
no input files.
The XC32 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 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.
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 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 XC32 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 --library=c99-pic30-elf
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 XC32 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 32-bit MCU devices; so it is ignored.
unrecognized -assert option ‘option.’
The -assert
option is not supported by 32-bit MCU 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.