Linker Error Messages

The Watcom Linker issues three classes of messages; each message has a 4-digit number associated with it:

It's possible for a message to be issued as a warning or an error.

If a fatal error occurs, the linker terminates immediately, and no executable file is generated.

If an error occurs, the linker continues to execute so that all possible errors are issued. However, no executable file is generated since these errors do not permit a proper executable file to be generated.

If a warning occurs, the linker continues to execute. A warning message is usually informational and doesn't prevent the creation of a proper executable file. However, you should eventually correct all warnings.

The messages listed contain references to %s, %S, %a, %x, %d, and %l. They represent strings that are substituted by the Watcom Linker to make the error message more precise:

%s
represents a string. This may be a segment or group name, or the name of a linker directive or option.
%S
represents the name of a symbol.
%a
represents an address. The format of the address depends on the format of the executable file being generated.
%x
represents a hexadecimal number.
%d
represents integers in the range -32768 and 32767.
%l
represents integers in the range -2147483648 and 2147483647.

The following is a list of all warning and error messages produced by the Watcom Linker followed by a description of the message.

The messages are arranged in ascending order by message number, ignoring the first digit (which indicates the severity of the message).

A message may contain more than one reference to %s. In such a case, the description references them as %sn, where n is the occurrence of %s in the message.

To use this table of links, drop the first digit of your error message, and then look for the appropriate range:

000-009 010-019 020-029 030-039 040-049
050-059 060-069 070-079 080-089 090-099
100-109 110-119 120-129 130-139 140-149
150-159
MSG 2002 ** internal ** - %s
If this message occurs, you've found a bug in the Watcom Linker, and should contact QNX Software Systems Limited.
MSG 2008 cannot open %s : %s
An error occurred while trying to open the file %s1. The reason for the error is given by %s2. Generally this error message is issued when the Watcom Linker can't open an object file or directive file.
MSG 3009 dynamic memory exhausted
The Watcom Linker uses all available memory when linking an application. When all available memory is used, a spill file is used. Therefore, unless you're low on disk space, the Watcom Linker is always able to generate the executable file. Dynamic memory is the memory the Watcom Linker uses to build its internal data structures and symbol table. A spill file isn't used for dynamic memory.

If the Watcom Linker issues this message, it can't link your application. The following are suggestions that may help you in this situation:

  1. Concatenate all your object files into one, and specify only the resulting object file as input to the Watcom Linker. For example, you can issue the following commands:

        cat *.obj > all.tmp
        mv all.tmp all.obj
              
    

    This significantly reduces the size of the file list the Watcom Linker must maintain.

  2. Object files may contain a record that specifies the module name. This information is used by the Watcom Debugger to locate modules during a debugging session, and usually contains the full path of the source file. This can consume a significant amount of memory when many such object files are being linked. If your source is being compiled by the Watcom C or C++ compiler, you can use the nm option to set the module name to just the file name. This reduces the amount of memory required by the Watcom Linker.

    If you're using the Watcom Debugger, wd, to debug your application, you may have to use the Source Path command in the debugger's File menu so that the source corresponding to a module can be located. See the ``File Menu'' in the Debugger Environment chapter of the Watcom Debugger User's Guide.

  3. Typically, when you're compiling a program for a large code model, each module defines a different text segment. If you're compiling your application using the Watcom C or C++ compiler, you can reduce the number of text segments that the Watcom Linker has to process by specifying the nt option. The nt option allows you to specify the name of the text segment so that a group of object files define the same text segment.
MSG 2010,3010 I/O error processing %s : %s
An error has occurred while processing the file %s1. The cause of the error is given by %s2. This error is usually detected while reading from object and library files or writing to the spill file or executable file. For example, this error is issued if your disk is full.
MSG 2011 invalid object file attribute
The Watcom Linker encountered an object file that wasn't of the format required of an object file.
MSG 2012 invalid library file attribute
The Watcom Linker encountered a library file that wasn't of the format required of a library file.
MSG 3013 break key detected
The linking process was interrupted by the user from the keyboard.
MSG 1014 stack segment not found
The Watcom Linker identifies the stack segment by a segment defined as having the STACK attribute. This message is issued if no such segment is encountered. This usually happens if the Watcom Linker can't find the runtime libraries required to link your application.
MSG 2015 bad location specified in FIXUP
This message is issued if a bad object file is encountered.
MSG 2016 %a: absolute target invalid for self-relative relocation
This message is issued, for example, if a near call or jump is made to an external symbol that's defined using the EQU assembler directive. %a identifies the location of the near call or jump instruction.
MSG 2017 bad location specified for self-relative relocation at %a
This message is issued if a bad fixup is encountered. %a defines the location of the fixup.
MSG 2018 relocation offset at %a is out of range
This message is issued when the offset part of a relocation exceeds 64K. %a defines the location of the fixup. The error is most commonly caused by errors in coding assembly language routines.

Consider a module that references an external symbol that's defined in a segment different from the one in which the reference occurred. The module, however, specifies that the segment in which the symbol is defined is the same segment as the segment that references the symbol.

This error is most commonly caused when the EXTRN assembler directive is placed after the SEGMENT assembler directive for the segment referencing the symbol. If the segment that references the symbol is allocated far enough away from the segment that defines the symbol, the Watcom Linker issues this message.

MSG 1019 segment relocation at %a
This message is issued when a segment relocation is encountered and FORMAT DOS COM, FORMAT PHARLAP or FORMAT NOVELL has been specified. None of the above executable file formats allows segment relocation. %a identifies the location of the segment relocation.
MSG 2020 size of group %s exceeds 64k by %l bytes
The group %s has exceeded the maximum size (64k) allowed for a group by %l bytes. Usually, the group is DGROUP (the default data segment) and your application has placed too much data in this group. One of the following may solve this problem:
  1. If you're using the Watcom C or C++ compiler, you can place some of your data in a far segment by using the far keyword when defining data. You can also decrease the value of the data threshold by using the zt compiler option. Any data whose size exceeds the value of the data threshold is placed in a far segment.
  2. If you're using the Watcom FORTRAN 77 compiler, you can decrease the value of the data threshold by using the dt compiler option. Any data whose size exceeds the value of the data threshold is placed in a far segment.
MSG 2021 size of segment %s exceeds 64k by %l bytes
The segment %s has exceeded the maximum size (64k) of a segment. This usually occurs if you're linking an application that's been compiled for a small code model, and the size of the application has grown in such a way that the size of the code segment (_TEXT) has exceeded 64k. You can overlay your application, or compile it for a large code model if you can't reduce the amount of code in your application.
MSG 2022 cannot have a starting address with an imported symbol
When generating an OS/2 executable file, a symbol imported from a DLL can't be a start address. When generating a NetWare 386 executable file, a symbol imported from an NLM can't be a start address.
MSG 1023 no starting address found, using %a
The starting address defines the location where execution is to begin, and must be defined by a special module end record in one of the object files linked into your application. This message is issued if no such record is encountered, in which case a default starting address, namely %a, is used. This usually happens if the Watcom Linker can't find the runtime libraries required to link your application.
MSG 2024 missing overlay loader
This message is issued when an overlaid application is being linked and the overlay manager hasn't been encountered. This usually happens if the Watcom Linker can't find the runtime libraries required to link your application.
MSG 2025 short vector %d is out of range
This message is issued when the Watcom Linker is creating an overlaid application and OPTION SMALL is specified. Since an overlay vector contains a near call to the overlay loader followed by a near jump to the routine corresponding to the overlay vector, all code including the overlay manager and all overlay vectors must be less than 64K. This message is issued if the offset of an overlay vector from the overlay loader or the corresponding routine exceeds 64K.
MSG 2026 redefinition of reserved symbol %s
The Watcom Linker defines certain reserved symbols: _edata
_end
__OVLTAB__
__OVLSTARTVEC__
__OVLENDVEC__
__LOVLLDR__
__NOVLLDR__
__SOVLLDR__
__LOVLINIT__
__NOVLINIT__
__SOVLINIT__

The following symbols are defined only if you're using overlays:

__OVLTAB__
__OVLSTARTVEC__
__OVLENDVEC__
__LOVLLDR__
__NOVLLDR__
__SOVLLDR__
__LOVLINIT__
__NOVLINIT__
__SOVLINIT__

The symbols _edata and _end are defined only if the DOSSEG option is specified. Your application must not attempt to define these symbols. %s identifies the reserved symbol.

MSG 1027 redefinition of %S ignored
The symbol %S has been defined by more that one module; the first definition is used. This is only a warning message. Note that if a symbol is defined more than once and its address is the same in both cases, no warning is issued. This prevents the warning message from being issued when linking FORTRAN 77 modules that contain common blocks.
MSG 1028 %S is an undefined reference
The symbol %S has been referenced but not defined. Check that the spelling of the symbol is consistent. If you wish the linker to ignore undefined references, use the UNDEFSOK option.
MSG 2029 premature end of file encountered
This error is issued while processing object files and object modules from libraries, and is caused if the end of the file or module is reached before the module end record is encountered. The probable cause is a truncated object file.
MSG 2030 multiple starting addresses found
The starting address defines the location where execution is to begin, and is defined by a module end record in a particular object file. This message is issued if more than one object file contains a module end record that defines a starting address.
MSG 2031 segment %s is in group %s and group %s
The segment %s1 has been defined to be in group %s2 in one module, and in group %s3 in another module. A segment can only belong to one group.
MSG 1032 record (type 0x%x) not processed
An object record type not supported by the Watcom Linker has been encountered. This message is issued when linking object modules created by other compilers or assemblers that create object files with records that the Watcom Linker doesn't support.
MSG 2033,3033 directive error near '%s'
A syntax error occurred while the Watcom Linker was processing directives. %s specifies where the error occurred.
MSG 2034 %a cannot have an offset with an imported symbol
An imported symbol is one that was specified in an IMPORT directive. For example, under OS/2 imported symbols are defined in DLLs. References to imported symbols must always have an offset value of 0. If DosWrite is an imported symbol, then referencing DosWrite+2 is illegal. %a defines the location of the illegal reference.
MSG 1038 DEBUG directive appears after object files
This message is issued if the first DEBUG directive appears after a FILE directive. A common error is to specify a DEBUG directive after the FILE directives, in which case no debugging information for those object files is generated in the executable file.
MSG 2039 ALIGNMENT value too small
The value specified in the ALIGNMENT option refers to the alignment of segments in the executable file. Segments in the executable file are pointed to by a segment table. An entry in the segment table contains a 16-bit value that's a multiple of the alignment value. Together they form the offset of the segment from the start of the segment table. The smaller the alignment, the bigger the value required in the segment table to point to the segment. If this value exceeds 64k, then a larger alignment value is required to decrease the size that goes in the segment table.
MSG 2040 ordinal in IMPORT directive not valid
The specified ordinal in the IMPORT directive is incorrect (for example, -1). An ordinal number must be in the range 0 to 65535.
MSG 2041 ordinal in EXPORT directive not valid
The specified ordinal in the EXPORT directive is incorrect (for example, -1). An ordinal number must be in the range 0 to 65535.
MSG 2042 too many IOPL words in EXPORT directive
The maximum number of IOPL words is 63.
MSG 1043 duplicate exported ordinal
This message is issued for ordinal numbers specified in an EXPORT directive for symbols belonging to OS/2 DLLs. This message is issued if an ordinal number is assigned to two different symbols. A warning is issued, and the Watcom Linker assigns an unused ordinal number to the symbol that caused the warning.
MSG 1044,2044 exported symbol %s not found
This message is issued when generating OS/2 DLLs and NetWare 386 NLMs. An attempt has been made to define an entry point into a DLL or NLM that doesn't exist.
MSG 1045 segment attribute defined more than once
A segment appearing in a SEGMENT directive has been given conflicting or duplicate attributes.
MSG 1046 segment name %s not found
The segment name specified in a SEGMENT directive hasn't been defined.
MSG 1047 class name %s not found
The class name specified in a SEGMENT directive hasn't been defined.
MSG 1048 inconsistent attributes for automatic data segment
This message is issued for OS/2 executable files. Two conflicting attributes were specified for the automatic data segment. For example, LOADONCALL and PRELOAD are conflicting attributes. Only the first attribute is used.
MSG 2049 invalid STUB file
The stub file isn't a valid executable file. The stub file is only used for OS/2 executable files.
MSG 1050 invalid DLL specified in OLDLIBRARY option
The OS/2 DLL specified in an OLDLIBRARY option isn't a valid dynamic link library.
MSG 2051 STUB file name same as executable file name
When generating an OS/2 executable file, the stub file name must not be same as the executable file name.
MSG 2052 relocation at %a not in the same segment
This message is only issued for protected-mode applications. A relative fixup must relocate to the same segment. %a defines the location of the fixup.
MSG 2053 %a: cannot reach a DLL with a relative relocation
A reference to a symbol in an OS/2 DLL must not be relative. %a defines the location of the reference.
MSG 1054 debugging information incompatible: using line numbers only
An attempt has been made to link an object file with out-of-date debugging information.
MSG 2055 %a: frame must be the same as the target in protected mode
Each relocation consists of three components:
  • the location being relocated
  • the target (or address being referenced)
  • the frame (the segment to which the target is adjusted)

In protected mode, the segment of the target must be the same as the frame. %a defines the location of the fixup.

MSG 2056 cannot find library member %s(%s)
Library member %s2 in library file %s1 couldn't be found. This message is issued if the library file couldn't be found, or the library file didn't contain the specified member.
MSG 3057 executable format has been established
This message is issued if there is more than one FORMAT directive.
MSG 1058 %s option not valid for %s executable
The option %s1 can only be specified if an executable file whose format is %s2 is being generated.
MSG 1059,2059 value for %s too large
The value specified for option %s exceeds its limit.
MSG 1060 value for %s incorrect
The value specified for option %s isn't in the allowable range.
MSG 1061 multiple values specified for REALBREAK
The REALBREAK option can only be specified once.
MSG 1062 DLL COMENT record invalid when not in OS2
A DLL COMENT record contains information for symbols that are defined in Dynamic Link Libraries. This message is issued if a reference to a DLL is encountered, and the executable file format isn't OS2.
MSG 2063 invalid relocation for flat memory model at %a
A segment relocation in the flat memory model was encountered. %a defines the location of the fixup.
MSG 2064 cannot combine 32-bit segments with 16-bit segments
A 16-bit segment and a 32-bit segment have been encountered. Mixing object files created by a 286 compiler and object files created by a 386 compiler is the most probable cause of this error.
MSG 2065 REALBREAK symbol %s not found
The symbol specified in the REALBREAK option hasn't been defined.
MSG 2066 invalid relative relocation type for an import at %a
This message is issued only if a NetWare 386 executable file is being generated. An imported symbol is one that was specified in an IMPORT directive. Any reference to an imported symbol must not refer to the segment of the imported symbol. %a defines the location of the reference.
MSG 2067 %a: cannot relocate between code and data in Novell formats
This message is issued only if a NetWare 386 executable file is being generated. Segment relocation isn't permitted. %a defines the location of the fixup.
MSG 2068 absolute segment fixup not valid in protected mode
A reference to an absolute location isn't allowed in protected mode. A protected-mode application is one that's being generated for OS/2, FlashTek's DOS extender, Phar Lap's 386|DOS-Extender, Tenberry Software's DOS/4G or DOS/4GW DOS extender, or Novell's NetWare 386 operating system. An absolute location is most commonly defined by the EQU assembler directive.
MSG 1069 unload CHECK procedure not found
The symbol specified in the CHECK option hasn't been defined.
MSG 2070 START procedure not found
The symbol specified in the START option hasn't been defined. The default START symbol is _Prelude.
MSG 2071 EXIT procedure not found
The symbol specified in the EXIT option hasn't been defined. The default STOP symbol is _Stop.
MSG 1072 SECTION directive not allowed in root
SECTION directives must appear between a BEGIN directive and its corresponding END directive.
MSG 2073 bad Novell file format specified
An invalid NetWare 386 executable file format was specified. Valid formats are NLM, DSK, NAM and LAN.
MSG 2074 circular alias found for %s
An attempt was made to circularly define the symbol name specified in an ALIAS directive. For example:

    ALIAS foo1=foo2, foo2=foo1
      
MSG 2075 expecting an END directive
A BEGIN directive is missing its corresponding END directive.
MSG 1076 %s option multiply specified
The option %s can only be specified once.
MSG 1080 file %s is a 32-bit object file
A 32-bit attribute was encountered while generating a 16-bit executable file format.
MSG 2082 invalid record type 0x%x
An object record type not recognized by the Watcom Linker has been encountered. This message is issued when linking object modules created by other compilers or assemblers that create object files with records that the Watcom Linker doesn't recognize.
MSG 2083 cannot reference address %a from frame %x
The offset of a referenced symbol is greater than 64k from the location referring to it.
MSG 2084 target offset exceeds 64K at %a
The computed offset for a symbol exceeds 64k. %a defines the location of the fixup.
MSG 2086 invalid starting address for .COM file
The value of the segment of the starting address for a DOS COM file, as specified in the map file, must be 0.
MSG 1087 stack segment ignored in .COM file
A stack segment must not be defined when generating a DOS COM file. Only a single physical segment is allowed in a DOS COM file. The stack is allocated from the high end of the physical segment. That is, the initial value of SP is hexadecimal fffe.
MSG 3088 virtual memory exhausted
This message is similar to the ``dynamic memory exhausted'' message. The Watcom Linker has run out of memory trying to keep track of virtual memory blocks. Virtual memory blocks are allocated from expanded memory, extended memory and the spill file.
MSG 2089 program too large for a .COM file
The total size of a DOS COM program must not exceed 64K. That is, the total amount of code and data must be less than 64K since only a single physical segment is allowed in a DOS COM file. You must decrease the size of your program or generate a DOS EXE file.
MSG 1090 redefinition of %s by %s ignored
The symbol %s1 has been redefined by module %s2. This message is issued when the size specified in the NAMELEN option has caused two symbols to map to the same symbol. For example, if the symbols routine1 and routine2 are encountered, and OPTION NAMELEN=7 is specified, then this message is issued, since the first seven characters of the two symbols are identical.
MSG 2091 group %s is in more than one overlay
A group that spans more than one section has been detected.
MSG 2092 NEWSEGMENT directive appears before object files
The NEWSEGMENT option must appear after a FILE directive.
MSG 2093 cannot open %s
This message is issued when the Watcom Linker is unable to open a file and is unable to determine the cause.
MSG 2094 i/o error processing %s
This message is issued when the Watcom Linker has encountered an I/O error while processing the file, and is unable to determine the cause. This message may be issued when reading from object and library files, or writing to the executable and spill file.
MSG 1095 debugging information too large.
This message is only issued when linking an application that has been compiled with version 9.0 of the compiler or earlier. Later versions of the compiler have removed this limit.
MSG 3096 incompatible types of debugging information found
The Watcom Linker has encountered more than one class of debugging information in the object files it's processing (for example, Codeview and WATCOM).
MSG 3097 too many library modules
This message is similar to the ``dynamic memory exhausted'' message. This message is issued when the DISTRIBUTE option is specified. The Watcom Linker has run out of memory trying to keep track of the relationship between object modules extracted from libraries and the overlays they should be placed in.
MSG 1098 Phar Lap offset option must be a multiple of 4K
The value specified with the OFFSET option must be a multiple of 4096.
MSG 2099 symbol name too long: %s
The maximum size (approximately 2048) of a symbol has been exceeded. Reduce the size of the symbol to avoid this error.
MSG 1101 cannot use both option verbose and a trace directive
The VERBOSE option can't be used in conjunction with the SYMTRACE and MODTRACE directives.
MSG 1102 object file %s not found for tracing
A SYMTRACE or MODTRACE directive contained an object file (namely %s) that couldn't be found.
MSG 1103 library module %s(%s) not found for tracing
A SYMTRACE or MODTRACE directive contained an object module (namely module %s1 in library %s2 ) that couldn't be found.
MSG 1105 cannot reserve %l bytes of extra overlay space
The value specified with the AREA option results in an executable file that requires more than 1 megabyte of memory to execute.
MSG 1107 undefined system name: %s
The name %s was referenced in a SYSTEM directive, but never defined by a system block definition.
MSG 1108 system %s defined more than once
The name %s has appeared in a system definition block more than once.
MSG 3109 system block %s too large
The largest size of a system definition block is 4K. This message is issued if the total amount of text specified in the system definition block exceeds this limit.
MSG 1110 library members not allowed in libfile
Only object files are allowed in a LIBFILE directive. This message is issued if a module from a library file is specified in a LIBFILE directive.
MSG 1111 error in default system block
The default system block definition (system name 286 for 16-bit applications and system name 386 for 32-bit applications) contains a directive error. The system name 286 or 386 is automatically referenced by the linker when the format of the executable can't be determined (that is, no FORMAT directive has been specified).
MSG 3114 environment name specified incorrectly
This message is specified if the environment variable isn't properly enclosed between two percent (%) characters.
MSG 1115 environment name %s not found
The environment variable %s hasn't been defined in the environment space.
MSG 1116 overlay area must be at least %l bytes
This message is issued if the size of the largest overlay exceeds the size of the overlay area specified by the AREA option.
MSG 1117 segment number too high for a movable entry point
The segment number of a moveable segment must not exceed 255. Reduce the number of segments or use the PACKCODE option.
MSG 1118 heap size too large
This message is issued if the size of the heap, stack and the default data segment (group DGROUP) exceeds 64K.
MSG 2119 wlib import statement incorrect
The EXPORT directive allows you to specify a library command file. This command file is scanned for any librarian commands that create import library entries. An invalid command was detected.
MSG 2120 application too large to run under DOS
This message is issued if the size of the DOS application exceeds 1M.
MSG 1121 '%s' has already been exported
The linker has detected an attempt to export a symbol more than once.

For example, a name that appears in more than one EXPORT directive causes this message to be issued. Also, if you have declared a symbol as an export in your source, and have also specified the same symbol in an EXPORT directive, this message is issued.

This message is only a warning.

MSG 3122 no FILE directives found
This message is issued if no FILE directive has been specified. In other words, you have specified no object files to link.
MSG 3123 OS/2 offset option must be a multiple of 64K
The value specified with the OFFSET option for 32-bit OS/2 must be a multiple of 64K.
MSG 1124 lazy reference for %S has different default resolutions
A lazy external reference is one that has two resolutions: a preferred one and a default one that's used if the preferred one isn't found. In this case, the linker has found two lazy references that have the same preferred resolution but different default resolutions.
MSG 1125 multiple aliases found for %S
The linker has found a name that has been aliased to two different symbols.
MSG 1126 INT 15 interrupt may be incorrect
An error was reported while the linker was trying to access extended memory. The interrupt 15 vector (used to access extended memory) has been corrupted during the linking process.
MSG 3126
This error has two different meanings, as indicated by the associated message:
too many EMS requests queued
An error was reported while the linker was trying to access expanded memory. The error message is issued if too many applications are simultaneously making extended memory requests.
EMS physical mapping corrupted
A serious problem has occurred while trying to access expanded memory. The EMS frame has been corrupted. This can be caused by a TSR that's using the EMS frame for other reasons.
MSG 2127 cannot export absolute symbol %S
An attempt was made to export a symbol defined with an absolute address. It isn't possible to export a symbol with an absolute address using the EXPORT directive.
MSG 3128 directive error near beginning of input
The linker detected an error at the start of the command line.
MSG 3129 address information too large
The linker has encountered a segment that appears in more than 11000 object files. An empty segment doesn't affect this limit.
MSG 1130 %s is an invalid shared nlm file
The NLM specified in a SHAREDNLM option isn't valid.
MSG 3131 cannot open spill file: file already exists
All 26 of the linker's possible spill file names are in use. Spill files can accumulate when linking on a multi-tasking system, and the directory in which the spill file is created is identical for each invocation of the linker.
MSG 2132 curly brace delimited list incorrect
A list delimited by curly braces isn't correct. The most likely cause is a missing right brace.
MSG 1133 no realbreak specified for 16-bit code
While generating a Phar Lap executable file, both 16-bit and 32-bit code were linked together, and no REALBREAK option has been specified. A warning message is issued, since this may be a potential problem.
MSG 1134 %s is an invalid message file
The file specified in a MESSAGE option for NetWare 386 executable files is invalid.
MSG 3135 need exactly 1 overlay area with dynamic overlay manager
Only a single overlay area is supported by the dynamic overlay manager.
MSG 1136 relocation to a read/write data segment found at %a
The RWRELOCCHECK option has been specified, and the linker has detected a segment relocation to a read/write data segment.
MSG 3137 too many errors encountered
This message is issued when the number of error messages issued by the linker exceeds the number specified by the MAXERRORS option.
MSG 3138 invalid filename '%s'
The linker performs a simple filename validation whenever a filename is specified to the linker. For example, a directory specification isn't a valid filename.
MSG 3139 cannot have both 16-bit and 32-bit object files
It's impossible to mix 16-bit code and 32-bit code in the same executable when generating a QNX executable file.
MSG 1140 invalid message number
An invalid message number has been specified in a DISABLE directive.
MSG 1141 virtual function table record for %s mismatched
This is a consistency check by the linker to ensure that the Watcom C++ compiler hasn't generated incorrect virtual function information. Contact QNX Software Systems Limited if this message is issued.
MSG 1143 not enough memory to sort map file symbols
There wasn't enough memory for the linker to sort the symbols in the Memory Map portion of the map file. This only occurs when the GLOBAL sort option is specified.
MSG 1145 %S is both pure virtual and non-pure virtual
A function has been declared both as pure and non-pure virtual.
MSG 2146 %s is an invalid object file
Something was encountered in the object that can't be processed by the linker.
MSG 3147 Ambiguous format specified
Not enough of the FORMAT directive attributes were specified to enable the linker to determine the executable file format. For example, the directive

FORMAT OS2

generates this message.
MSG 1148 Invalid segment type specified
The segment type must be one of CODE or DATA.
MSG 1149 Only one debugging format can be specified
The debugging format must be one of WATCOM (default), Codeview, or Dwarf. You can't specify additional debugging formats.
MSG 1150 file %s has code for a different processor
An object file has been encountered that contains code compiled for a different processor (for example, an Intel application and an Alpha object file).
MSG 2151 big endian code not supported
Big endian code isn't supported by the linker.
MSG 2152 no dictionary found
No symbol search dictionary was found in a library that the linker attempted to process.
MSG 2153 cannot execute %s : %s
An attempt by the linker to spawn another application failed. The application is specified by %s1 and the reason for the failure is specified by %s2.
MSG 2154 relocation at %a to an improperly aligned target
Some relocations in Alpha executables require that the object be aligned on a 4-byte boundary.