10.5 Messages 2000 Thru 2499

(2000) * attribute/specifier has a misplaced keyword (*) (Parser)

An attribute token has been used in a context where it was not expected.
// oops -- ’base’ is a token which has specific meaning
void __interrupt(irq(base)) isr(void)

(2001) * attribute/specifier has a misplaced parenthesis (Parser)

The parentheses used in this attribute construct are not correctly formed. Check to ensure that you do not have extra brackets and that they are in the correct position.
void __interrupt(irq((TMR0)) isr(void) // oops -- one too many ’(’s

(2002) __interrupt attribute/specifier has conflicting priority-levels (Parser)

More than one priority has been assigned to an interrupt function definition.
//oops -- is it meant to be low or high priority?

void __interrupt(irq(TMR0), high_priority, low_priority) tc0Int(void)

(2003) * attribute/specifier has a duplicate keyword (*) (Parser)

The same token has been used more than once in this attribute. Check to ensure that one of these was not meant to be something else.
//oops -- using high_priority twice has no special meaning

void __interrupt(irq(TMR0), high_priority, high_priority) tc0Int(void)

(2004) __interrupt attribute/specifier has an empty “irq” list (Parser)

The irq() argument to the __interrupt() specifier takes a comma-separated list of interrupt vector numbers or symbols. At least one value or symbol must be present to link this function to the interrupt source.
//oops -- irq() does not indicate the interrupt source

void __interrupt(irq(),high_priority) tc0Int(void)

(2005) __interrupt attribute/specifier has an empty “base” list (Parser)

The base() argument to the __interrupt() specifier is optional, but when used it must take a comma-separated list of interrupt vector table addresses. At least one address must be present to position the vector table. If you do not specify the base address with an ISR, its vector will be located in an interrupt vector table located at an address equal to the reset value of the IVTBASE register.
//oops -- base() was used but did not indicate a vector table address

void __interrupt(irq(TMR0), base()) tc0Int(void)

(2006) __interrupt attribute/specifier has a duplicate “irq” (*) (Parser)

An irq() argument to the __interrupt() specifier has been used more than once.
//oops -- is one of those sources wrong?

void __interrupt(irq(TMR0,TMR0)) tc0Int(void)

(2007) __interrupt attribute/specifier has a duplicate “base” (*) (Parser)

The same base() argument to the __interrupt() specifier has been used more than once.
//oops -- is one of those base addresses wrong?

void __interrupt(irq(TMR0), base(0x100,0x100)) tc0Int(void)

(2008) unknown “irq” (*) in __interrupt attribute/specifier (Parser)

The interrupt symbol or number used with the irq() argument to the __interrupt() specifier does not correspond with an interrupt source on this device.
//oops -- what interrupt source is TODO?

void __interrupt(irq(TODO),high_priority) tc0Int(void)

(2009) * attribute/specifier has a misplaced number (*) (Parser)

A numerical value appears in an attribute where it is not expected.
//oops -- this specifier requires specific argument, not a number
void __interrupt(0) isr(void)

(2010) __interrupt attribute/specifier contains a misplaced interrupt source name (*)
 (Parser)

An interrupt source name can only be used as an argument to irq().
//oops -- base() needs a vector table address

void __interrupt(irq(TMR0), base(TMR0)) tc0Int(void)

(2011) __interrupt attribute/specifier has a base (*) not supported by this device (Parser)

The address specified with the base() argument to the __interrupt() specifier is not valid for the target device. It cannot, for example, be lower than the reset value of the IVTBASE register.
//oops -- the base() address is too low

void __interrupt(irq(TMR0), base(0x00)) tc0Int(void)

(2012) * attribute/specifier is only applicable to functions (Parser)

The __interrupt() specifier has been used with something that is not a function.
// oops -- foobar is an int, not an ISR

__interrupt(irq(TMR0)) int foobar;

(2013) argument “*” used by “*” attribute/specifier not supported by this device (Parser)

The argument of the indicated specifier is not valid for the target device.
// oops -- base() can’t be used with a device that does not

// support vectored interrupts

void __interrupt(base(0x100)) myMidrangeISR(void)

(2014) interrupt vector table @ 0x* already has a default ISR “*” (Code Generator)

You can indicate only one default interrupt function for any vector location not specified in a vector table. If you have specified this twice, check to make sure that you have specified the correct base() address for each default.
void __interrupt(irq(default), base(0x100)) tc0Int(void) { ...

void __interrupt(irq(default), base(0x100)) tc1Int(void) { ...
// oops -- did you mean to use different different base() addresses?

(2015) interrupt vector table @ 0x* already has an ISR (*) to service IRQ * (*)
 (Parser or Code Generator)

You have specified more than one interrupt function to handle a particular interrupt source in the same vector table.
void __interrupt(irq(TMR0), base(0x100)) tc0Int(void) { ...

void __interrupt(irq(TMR0), base(0x100)) tc1Int(void) { ...
// oops -- did you mean to use different different base() addresses?

(2016) interrupt function “*” does not service any interrupt sources (Code Generator)

You have defined an interrupt function but did not indicate which interrupt source this function should service. Use the irq() argument to indicate the source or sources.
//oops -- what interrupt does this service?

void __interrupt(low_priority, base(0x100)) tc0Int(void)

(2017) config programming has disabled multi-vectors, “irq” in __interrupt attribute/specifier is ignored (Code Generator)

An interrupt function has used the irq() argument to specify an interrupt source, but the vector table has been disabled via the configuration bits. Either re-enable vectored interrupts or use the priority keyword in the __interrupt() specifier to indicate the interrupt source.
#pragma config MVECEN=0

void __interrupt(irq(TMR0), base(0x100)) tc0Int(void)

// oops -- you cannot disable the vector table then allocate interrupt

// functions a vector source using irq()

(2018) interrupt vector table @ 0x* has multiple functions (* and *) defined at interrupt level * (Code Generator)

The program for a device operating in legacy mode has specified a vector table that contains more than one function at the same interrupt priority-level in the same table. In this mode, there can be at most one interrupt function for each priority level in each vector table.
#pragma config MVECEN=0

void __interrupt(high_priority) tc0Int(void) {...

void __interrupt(high_priority) tc1Int(void) {...

(2019) * interrupt vector in table @ 0x* is unassigned, will be programmed with a *
 (Code Generator)

In a program for a device operating in legacy mode, an interrupt vector in the indicated vector table has not been programmed with an address. The compiler will program this vector with an address as specified by the -mundefints option.

(2020) IRQ * (*) in vector table @ 0x* is unassigned, will be programmed with the address of a * (Code Generator)

The interrupt vector in the indicated vector table has not been programmed with an address. The compiler will program this vector with an address as specified by the -mundefints option.

(2021) invalid runtime “*” sub-option argument (*) (Driver)

The argument to a sub-option specified with the --RUNTIME option is not valid.
--RUNTIME=default,+ivt:reset

Oops, the ivt suboption requires a numeric address as its argument.

(2022) runtime sub-option “ivt” specifies a base address (0x*) not supported by this device (Driver)

The address specified with the ivt sub-option is not valid for the selected target device. It cannot, for example, be lower than the reset value of the IVTBASE register.

(2023) IVT @ 0x* will be selected at startup (Code Generator)

The source code defines more than one IVT and no address was specified with the ivt sub-option to the --RUNTIME option to indicate which table should be selected at startup. The IVT with the lowest address will be selected by the compiler. It is recommended that you always specify the table address when using this option.

(2024) runtime sub-option “ivt” specifies an interrupt table (@ 0x*) that has not been defined (Driver)

The ivt sub-option to the --RUNTIME option was used to specify a IVT address, but this address has not been specified in the source code with any ISR. Check that the address in the option is correct, or check that the base() arguments to the __interrupt() specifier are specified and are correct.
--RUNTIME=+ivt:0x100

Oops -- is this the right address? Nothing in the source code uses this base address.

(2025) qualifier * on local variable “*” is not allowed and has been ignored (Parser)

Some qualifiers are not permitted with auto or local static variables. This message indicates that the indicated qualifier has been ignored with the named variable.
near int foobar; // oops -- auto variables cannot use near

(2026) variables qualified “*” are not supported for this device (Parser)

Some variable qualifiers are not permitted with some devices.
eeprom int serialNo; // oops -- can’t use eeprom with PIC18 devices

(2027) initialization of absolute variable “*” in * is not supported (Code Generator)

The variable indicated cannot be specified as absolute in the memory space.
eeprom char foobar __at(0x40) = 99; // oops - absolute can’t be eeprom

(2028) external declaration for identifier “*” doesn't indicate storage location
 (Code Generator)

The declaration for an external object (e.g., one defined in assembly code) has no storage specifiers to indicate the memory space in which it might reside. Code produced by the compiler which accesses it might fail. Use const or a bank specifier as required.
extern int tapCounter;  // oops - how does the compiler access this?

(2029) a function pointer cannot be used to hold the address of data (Parser)

A function pointer must only hold the addresses of function, not variables or objects.
int (*fp)(int);
int foobar;
fp = &foobar;  // oops - a variable’s address cannot be assigned

(2030) a data pointer cannot be used to hold the address of a function (Parser)

A data pointer (even a generic void * pointer) cannot be used to hold the address of a function.
void *gp;
int myFunc(int);
gp = foobar;  // oops - a function’s address cannot be assigned

(2033) recursively called function might clobber a static register it has allocated in expression (Code Generator)

The compiler has encountered a situation where a register is used by an expression that is defined in a function that is called recursively and that expression is part of a larger expression that requires this same function to be called. The register might be overwritten and the code may fail.
unsigned long fib_rec(unsigned long n)
{
    // the temporary result of the LHS call to fib_rec() might
    // store the result in a temp that is clobbered during the RHS
    // call to the same function
    return ((n > 1) ? (fib_rec(n-1) + fib_rec(n-2)) : n);
}

(2034) 24-bit floating-point types are not CCI compliant; use 32-bit setting for compliance
 (Parser)

The CCI does not permit the use of 24-bit floating point types. If you require compliance, use the -no-short-float and -no-short-double options, which will ensure the IEEE standard 32-bit floating-point type is used for float and double types.

(2035) use of sizeof() in preprocessor expressions is deprecated; use __SIZEOF_*__ macro to avoid this warning (Preprocessor)

The use of sizeof() in expressions that must be evaluated by the preprocess are no longer supported. Preprocessor macros defined by the compiler, such as __SIZEOF_INT__, can be used instead. This does not affect the C operator sizeof() which can be used in the usual way.
#if (sizeof(int) > 2)   // oops -- use (__SIZEOF_INT__ > 2) instead

(2036) use of @ is not compliant with CCI, use __at() instead (Parser)

The CCI does not permit the definition of absolute functions and objects that use the @ address construct. Instead, place __at(address) after the identifier in the definition.
int foobar @ 0x100;  // oops -- use __at(0x100) instead

(2037) short long integer types are not compliant with CCI (Parser)

The CCI does not permit use of the 3-byte short long type. Instead consider an equivalent long int type.
short long input;  // oops -- consider input to be long when using CCI

(2038) use of short long integer types is deprecated; use __int24 or __uint24 to avoid this warning (Parser)

The short long type specifiers has been replaced with the more portable __int24 (replacing short long) and __uint24 (replacing unsigned short long) types.
short long input; // oops -- use __int24 as the type for input

(2039) __int24 integer type is not compliant with CCI (Parser)

The CCI does not permit use of the 3-byte __int24 type. Instead use the long int type.
__int24 input;  // oops -- use a long type when using CCI

(2040) __uint24 integer type is not compliant with CCI (Parser)

The CCI does not permit use of the 3-byte __uint24 type. Instead use the unsigned long int type.
__uint24 input;  // oops -- use an unsigned long type when using CCI

(2041) missing argument after “*” (Driver)

The specified option requires an argument, but none was detected on the command line.
xc8-cc -mcpu=18f4520 -Wl,-Map main.c

Oops, the -Map option requires a map filename, e.g. -Wl,-Map=proj.map.

(2042) no target device specified; use the -mcpu option to specify a target device
 (Driver)

The driver was invoked without selecting what chip to build for. Running the driver with the -mprint-devices option will display a list of all chips that could be selected to build for.
xc8-cc main.c

Oops, use the -mcpu option to specify the device to build for.

(2043) target device was not recognized (Driver)

The top-level driver was not able to identify the family of device specified with the -mcpu option.
xc8-cc -mcpu=pic io.c

Oops, the device name must be exactly one of those shown by -mprint-devices.

(2044) unrecognized option “*” (Driver)

The option specified was not recognized by the top-level driver. The option in question will be passed further down the compiler tool chain, but this may cause errors or unexpected behavior.

(2045) could not find executable “*” (Driver)

The top-level driver was unable to locate the specified compiler tool in the usual locations. Ensure you have not moved files or directories inside the compiler install directory.

(2046) identifier length must be between * and *; using default length * (Driver)

The number of characters specified as the largest significant identifier length is illegal and the default length of 255 has been used.
-N=16

Oops, the identifier length must be no less than 31 and no greater than 255.

(2047) 24-bit floating point types are not supported when compiling in C99 (Driver)

The float and double types must be 32-bits wide when compiling for the C99 Standard. If you need 24-bit floating-point types, then you might be able to select the C90 compliant libraries (using the -mc90lib option) or you must compile for C90.
xc8-cc -mcpu=18f4520 -fshort-double main.c

Oops, you cannot use 24-bit double types with C99.

(2048) C language extension “*” is not supported and will be ignored (Driver)

The indicated language extension is not supported.
xc8-cc -mcpu=16f1937 -mext=iar main.c

Oops, that language extension is not supported.

(2049) C99 compliant libraries are currently not available for baseline or mid-range devices, or for enhanced mid-range devices using a reentrant stack; using C90 libraries (Driver)

At present, C99-compliant libraries are not available for all devices. The C90-compliant libraries can be used with these device while still building your source code to the C99 standard. Alternatively, you may choose to build to the C90 standard.

(2050) use of the -mcci option is deprecated; use -mext=cci to avoid this warning (Driver)

Always use the -mext=cci option to select the Common C Interface.

(2051) The current license does not permit the selected optimization level* (Driver)

This compiler’s license does not allow the requested compiler operating mode.
xc8-cc -mcpu=18f4520 -Os main.c

Oops, you cannot select level 's' optimizations if this compiler is unlicensed.

(2052) The current license does not permit the selected optimization level and other levels are not permitted by the NOFALLBACK option (Driver)

This compiler’s license does not allow the requested compiler operating mode. Since the --nofallback option is enabled, the compiler has produced this error and will not fall back to a lower optimization level. If you believe that you are entitled to use the requested optimizations, this error might indicate that your compiler is not be activated correctly.

(2053) function “*” is never called (Code Generator)

The specified inline function has never been called and will not generate code. This message differs to (520) in that the function specified is marked as inline. You may choose to disable this message for all inline functions, but allow message (520) to be issued for all other unused functions.

(2054) the language standard “*” is not supported; using C99 (Driver)

The language standard specified by the -std option is not supported by the compiler. The compiler will use the C99 standard instead.
xc8-cc -mcpu=12f510 -std=c11 main.c

Oops, you cannot select the C11 standard.

(2056) use of the -fmode option is deprecated; use -O to control optimizations and avoid this warning (Driver)

The compiler no longer uses both the mode and optimization selection to fully specify which optimizations are performed. All optimizations are now controllable via the optimization level, which is selectable using the compiler’s -O option. Unlicensed compilers, however, cannot use all levels.

(2057) The XC8 compiler installation appears to be corrupted. Please reinstall and try again (Driver)

The compiler has detected that something about the installation is not valid. This is most like due to compiler applications being deleted or moved.

(2058) function "*" cannot be inlined with code coverage enabled (Code Generator)

With the code coverage feature enabled, functions cannot be inlined. This advisary is just reminding you that the indicated function will not be inlined while code coverage is still in effect.

(2059) conflicting * register values found in Start Segment Address record (3) (Hexmate)

Hexmate will pass through any type 3 records in the Hex files being processed, but if there is any conflict in the values specified for the CS or IP registers in these records, it will flag this error.

(2060) CRC polynomial unspecified or set to 0 (Hexmate)

If you are calculating a CRC hash value using Hexmate and the polynomial value is zero, this warning will be triggered to indicate that you will be getting a trivial hash result. Typically this will occur if you have forgotten to set the polynomial value in the checksum option.

(2061) word width required when specifying reserve byte order hash (Hexmate)

If you are calculating a CRC reading data words in the Hex file in reverse order, you must specify a word width in bytes with Hexmate's r suboption to -CK. If you are using the compiler driver, this is specified using the revword suboption to -mchecksum.

(2062) word width must be * when specifying reserve byte order hash (Hexmate)

If you are calculating a CRC reading data words in the Hex file in reverse order, the word width can only be one of the values indicated in the message. This value is specified with Hexmate's r suboption to -CK. If you are using the compiler driver, this is specified using the revword suboption to -mchecksum.

(2063) * address must be a multiple of the word width when performing a reverse byte order hash (Hexmate)

If you are calculating a CRC reading data words in the Hex file in reverse order, the starting and ending addresses must be multiples of the word width specified in Hexmate's -CK option or the compiler's -mchecksum option.

(2064) PIC18 extended instruction cannot be used when the standard instruction set is selected (Assembler)

PIC18 assembly projects must be set up to use one of the standard or extended instructions sets. This message will be displayed if you have used an extended instruction without having enabled the extended instruction set using the -misa option.

(2065) offset out of range (Assembler)

The file register address for this extended PIC18 instruction is out of range.


clrf [200]  ; oops
; for extended instructions, the file operand must be less than, for example, 0x60

(2066) MESSG directive: * (Assembler)

This is the output message of the MESSG assembler directive.

(2067) ERROR directive: * (Assembler)

This is the output of the ERROR assembler directive.

(2068) use of the opt control "*" is deprecated; use the corresponding directive (Assembler)

The assembler controls of the form OPT CONTROL should no longer be used. Equivalent directives are available and can be formed by removing the OPT token from the control. Instead of using OPT TITLE "My great project", for example, use TITLE "My great project".

(2069) use of the radix option of the list control is deprecated; use the radix directive (Assembler)

The LIST assembler control previously allowed the input source to be specified using the r argument to the LIST option. This should no longer be used. Use the RADIX directive instead. Instead of using OPT LIST r=hex, for example, use RADIX hex.

(2070) device specified by the PROCESSOR directive conflicts with that set by the -mcpu option (Assembler)

The -mcpu driver option sets the target device being built for. The PROCESSOR directive may be used, if required, to ensure that an assembly source file is only ever built for the specified device. If there is a mismatch in the device specified by the option and the directive, this message will be displayed.

(2071) could not find record containing hash starting address 0x* (Hexmate)

Hexmate was asked to calculate a hash from data starting at an address that did not appear in the HEX file.

(2072) only SHA256 is currently supported (set width control to 256) (Hexmate)

The width suboption can only be set to 256 or -256 when selecting a SHA hash algorithm. Alternatively, the width suboption can be omitted entirely.

(2073) when compiling for C90, specifying an output file for dependencies is not supported and will be ignored (Driver)

Only the Clang front end can create a file containing dependencies.

xc8-cc -mcpu=18f4520 -MF depfile -std=c90 main.c

Oops, you cannot use the -MF option with -std=c90.

(2074) word size for byte skip with hash calculation must be * (Hexmate)

The argument to the s suboption of -CK, which indicates the size of the word in which bytes will be skipped for the purposes of calculating a hash value, is not permitted.
hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s1
Oops, the argument to s must be larger than 1.

(2075) word size required when requesting byte skip with hash calculation (Hexmate)

An argument to the s suboption of -CK is required. It represents the word width in which bytes will be skipped for the purposes of calculating a hash value.

hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s.2

Oops, a number is required after the s, for example s4.2.

(2076) number of bytes for byte skip with hash calculation must be * (Hexmate)

The number of bytes to skip within each word is illegal.

hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s4.4

Oops, the number of bytes to skip must be less than 4, the skip word width, for example s4.2.

(2077) number of bytes required when requesting byte skip with hash calculation (Hexmate)

An argument following the . in the s suboption of -CK is required. It represents the number of bytes to skip in each word for the purposes of calculating a hash value.

hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021s4.

Oops, a number is required after the . in the s argument, for example s4.2.

(2078) the number of hash bytes to which the trailing code is appended (*) must be no greater than the hash width (*) (Hexmate)

A trailing code has been requested to follow the specified number of bytes of the hash value, but this number is larger than that the entire hash.

hexmate main.hex -ck=0-ff@100+ffffg5w-2p1021t00.4

Oops, if the hash value is only 2 bytes long, asking for a trailing code to be appended after every 4 bytes makes no sense. Instead try t00.1, for example, to append the code to each byte.

(2079) the hash width (*) must be a multiple of the number of hash bytes appended with a trailing code (*) (Hexmate)

A trailing code has been requested to follow the specified number of bytes of the hash value, but the hash width is not a multiple of this number.

hexmate main.hex -ck=0-ff@100+ffffg5w-4p1021t00.3

Oops, if the hash value is 4 bytes long, asking for a trailing code to be appended after every 3 bytes makes no sense. Instead try t00.2, for example, to append the code to every two bytes of the hash.

(2080) WARN: * (Assembler)

This is a programmer-generated warning; there is an assembly directive causing a deliberate warning. Check the source code to determine if the warning should be investigated further. Consider removing the directive if it is no longer pertinent.

WARN "I have not yet confirmed that this is the correct threshold"
movlw 22
movwf threshold,c

(2081) the device architecture "*" does not match previously encountered object files "*" (Linker)

The linker was passed objects files that were built for different target devices. This is only likely to occur if you are using precompiled object files or libraries built from assembler code. Ensure all modules are built for the same device.

(2082) can't create temporary file (Driver)

The driver's attempt to create a temporary file failed. This could be due to a number of reasons, including disk space or permissions for the directory in which the system will create temporary files.

(2083) the current license does not permit the "*" feature (Driver)

A feature has been used that is not permitted by the compiler license. A PRO compiler license is required for some compiler features. Ensure that your compiler is installed correctly and has not expired if you believe that you have the appropriate license.

xc8-cc -mcpu=16f1937 -mchp-stack-usage main.c perip.c

Oops, the stack guidance feature, for example, requires a PRO compiler license to operate.

(2084) absolute object "*" has an address that lies within memory utilized by the compiler and will likely lead to code failure (Code Generator)

An absolute object (one declared using __at()) has been placed at an address that must be used by the compiler. The object will likely be corrupted by compiler generated code at runtime and lead to program failure.

int __at(0x0) myVar;  // oops - not a good address

(2085) the BANKISEL directive has no effect with the currently selected device and will be ignored (Assembler)

The BANKISEL assembler directive is required only for Baseline and Mid-range devices. It will be ignored for other devices, but check your device data sheet to ensure your code that performs indirect access of objects is valid for the selected device.

  BANKISEL myVar  ;oops - this device does not use separate indirect access bank bits 
  movwf INDF

(2086) memory for a heap has been reserved in response to the detection of calls to malloc/calloc/realloc/free function(s) (Driver)

The compiler has detected calls to the standard dynamic memory allocation functions when the auto size value was set with the -mheap option. A compiler-determined amount of memory has been reserved for the heap.

(2087) memory for the * software stack has been reserved in response to the detection of functions built for reentrancy (Driver)

The compiler has detected functions built with the reentrant (software stack) model when the auto size value was set with the -mstack option. A compiler-determined amount of memory has been reserved for the indicated stack.

(2088) fixup overflow referencing * * (0x*) into * byte* at 0x*/0x* -> 0x* (*** */0x*) (Linker)

This is the warning variant of message 1356, which might be issued if using the --fixupoverflow=warn linker option. See error message 1356 for more information.

(2089) fixup overflow storing 0x* in * byte* at 0x*/0x* -> 0x* (*** */0x*) (Linker)

This is the warning variant of message 1357, which might be issued if using the --fixupoverflow=warn linker option. See error message 1356 for more information.

(2090) fixup overflow storing 0x* in * byte* (Linker)

This is the list file warning variant of message 1357, which might be printed in the assembly list file if using the --fixupoverflow=warn linker option. See error message 1356 for more information.

(2091) fixup overflow messages have been recorded in the list file "*" (Linker)

The lstwarn argument to the --fixupoverflow was specified and fixup overflow situations were detected in the program. This advisory message is a reminder to check the assembly list file to see where fixup overflows were detected.

(2092) relocatable list file is not available; fixup overflow list file messages cannot be generated (Linker)

The lstwarn argument to the --fixupoverflow was specified and fixup overflow situations were detected in the program, but the linker is not processing any assembly list file, so the warning messages cannot be printed. The linker completes the information in the assembly list file produced by the assembler after the link step is complete. Check to ensure that a list file was requested, and that you have not explicitly used the linker's --norlf option.

(2093) number of arguments passed to function "*" does not match function's prototype (Code Generator)

This is the error variant of message 1464. A function was called with arguments, but the declaration of the function had an empty parameter list (as opposed to a parameter list of void).
int test();    // oops--this should define the parameters
...
test(12, input);
The error form of this message is printed if the function in question is not externally defined.

(2094) The selected Device Family Pack (DFP) contains features not implemented in this compiler version; consider using an alternate DFP or a more recent compiler release (Driver, Code Generator, Assembler)

The compiler has detected features in the DFP which it does not implement. This is mostly likely the result of selecting a DFP that is much more recent than the compiler. Choose an older DFP or a newer version of the compiler with the same DFP.

(2095) legacy HI-TECH support is deprecated and will be discontinued in a future release; consult the release notes for more details

A future version of MPLAB XC8 will discontinue support for legacy HI-TECH C90 source code. Consider code migration to the C99-compliant syntax and the Microchip Unified Standard Libraries. This message will be issued whenever the xc8, picc, or picc18 legacy drivers are directly executed. Note that this future change will not affect standard C90-compliant code; only legacy HI-TECH code syntax and libraries will no longer be supported.

(2096) undefined symbol "*" (*) (Linker)

This is a new-style error for a symbol that has been referenced but not defined at link time. This error could be due to a spelling error, or a failure to link an appropriate module.

(2097) undefined symbol "*" (*) (Linker)

This is a new-style warning for a symbol that has been referenced but not defined at link time. This warning could be due to a spelling error, or a failure to link an appropriate module.

(2098) indirect function call via a NULL pointer ignored (Code Generator)

This is an advisory form of message 1471. The compiler has detected a function pointer with no valid target other than NULL. That pointer has been used to call a function. The call will not be made.
int (*fp)(int, int);
result = fp(8,10); // oops--this pointer has not been initialized

(2099) legacy C90 library is deprecated and will be discontinued in a future release; consult the release notes for more details (Driver)

A future version of MPLAB XC8 will discontinue support for legacy HI-TECH C90 libraries. Consider code migration to the C99-compliant syntax and the Microchip Unified Standard Libraries. This message will be issued whenever the xc8, picc, or picc18 legacy drivers are directly executed. Note that this future change will not affect standard C90-compliant code; only legacy HI-TECH code syntax and libraries will no longer be supported.

(2100) using the C99 standard library with the selected device may result in larger code and data usage (Driver)

This message advises that the memory usage of the current project built with the C99-compliant standard library might be larger than that when built using the C90-compliant library. The C99 implementation of many functions is more robust and can consume additional resources.

(2101) duplicate "*" option (Driver)

The driver option indicated has been issued more than once on the command line, and the arguments used with each instance might differ. In such instance, typically the last option processed will be in effect, but you should check the build options to ensure they are what you intend.
xc8-cc -mcpu=18f4520 -mstack=hybrid -mstack=compiled main.c
Oops, which stack model did you intend to use?

(2102) *interrupt vector unassigned; will be programmed with a * (Code Generator)

The interrupt vector specified has not been assigned an address. It will be programmed by the compiler in the manner described.