386|LINK Error Messages
Copyright (c) 1995, Phar Lap Software, Inc.
This file may not be redistributed.


Fatal error LINK.1000: Bad environment variable "variablename": setting.

Cause:	The 386|LINK environment variable contains an invalid 
switch.  An additional message displays that the problem is in the 
environment variable, instead of the command line or in a command file.

Solution:	Correct the 386|LINK environment variable.


Fatal error LINK.1010: Bad module name.

Cause:	There is a syntax error in a module name that is used in a 
-purge switch. 

Solution:	Correct spelling of the module name.


Fatal  error LINK.1020: Bad number specified on command line -- 
"number".

Cause:	A number that has been used as an argument to a command 
switch is invalid.  The number can be invalid, because it contains a 
character that is not a numeric digit or because the number is too large 
for the switch.

Solution:	Correct the number.  Hexadecimal numbers must have an h or H 
suffix (for example, 7bh).  Long numbers can be split using an 
underscore (for example, 1000_0000).


Fatal error LINK.1030: Bad symbol definition.

Cause:	A syntax error has been made in a -define or -redefine 
switch.  

Solution:	Correct the syntax error.  The correct syntax is:  

	-define name=value.


Fatal error LINK.1040: Can't handle repeated data blocks with a text 
template > 255.

Cause:	An iterative data record of an object module contains a text 
template that is longer than 255 bytes.  386|LINK does not support text 
templates longer than 255 bytes.

Solution:	Contact compiler vendor.


Fatal Error LINK.1060: Cannot create linker output file -- reason.
Fatal Error LINK.1060: Cannot create map file -- reason.
Fatal Error LINK.1060: Cannot create linker virtual memory file-- 
reason.

Cause:	386|LINK was unable to create one of it's output files.  The 
error message includes the reason why it was unable to create the file.  
Typical problems include a full disk or a write-protected disk or 
directory.

Solution:	Correct the problem.  Consult the documentation supplied 
with the host operating system.


Fatal Error LINK.1070: Cannot open command file -- reason.
Fatal Error LINK.1070: Cannot open object input file -- reason.

Cause:	386|LINK was unable to open a command file or object input 
file.  The error message includes the reason why it was unable to open 
the file.  Typical problems include an incorrect file name, a 
nonexistent file, or a directory that is inaccessible.

Solution:	Correct the problem.  Consult the documentation supplied 
with the host operating system.


Fatal error LINK.1080: Command too long -- "command".

Cause:	In a command file, a command switch, switch value, or file 
name is longer than 255 characters.

Solution:	Shorten either the command switch, the switch value or the 
file name that is longer than 255 characters.


Fatal error LINK.1090: Error accessing virtual memory file -- reason.

Cause:	386|LINK was unable to read or write its virtual memory 
file.  The error message includes the reason why it was unable to read 
or write the file.  Typical problems include a full disk or a bad 
diskette.

Solution:	Correct the problem.  Consult the documentation supplied 
with the host operating system.


Fatal error LINK.1100: Error reading from command file -- reason.
Fatal error LINK.1100: Error reading from object input file -- reason.
Fatal error LINK.1100: Error reading from output file -- reason.

Cause:	386|LINK was unable to read a command, object input, or 
output file.  The error message includes the reason it was unable to 
read the file.

Solution:	Correct the problem.  Consult the documentation supplied 
with the host operating system.


Fatal Error LINK.1110: Error writing to linker output file -- reason.
Fatal Error LINK.1110: Error writing to the map file -- reason.

Cause:	386|LINK was unable to write to the 386|LINK output and map 
files.  The error message includes the reason it was unable to write the 
file(s).  Typical problems include a full disk or a bad diskette.

Solution:	Correct the problem.  Consult the documentation supplied 
with the host operating system.


Fatal error LINK.1120: Internal system error.

Cause:	An internal failure has occurred in 386|LINK.

Solution:	Contact Lahey Computer Systems, Inc.


Fatal error LINK.1130: Internal VM file failure.

Cause:	A consistency check made by 386|LINK has failed when 
accessing the virtual memory file.

Solution:	Contact Lahey Computer Systems, Inc.


Fatal error LINK.1140: Invalid callbufs value.

Cause:	The value given with the -callbufs switch is greater than 
64.  The total number of 1K call buffers cannot be more than 64.

Solution:	Reduce the -callbufs value to a number less than or equal to 
64.


Fatal error LINK.1150: Invalid file name -- "filename".

Cause:	A file name was given on the command line which does not 
follow the correct syntax for files.  Example:  386LINK ...XYZ

Solution:	Correct the spelling of the file name.


Fatal error LINK.1160: Invalid keyword following switch "switchname" 
-"keyword".

Cause:	A command switch, which takes a keyword as a value, has a 
keyword that is illegal for that switch.

Solution:	Correct the keyword.


Fatal error LINK.1170: Invalid nistack or istksize value.

Cause:	Interrupt stacks cannot be greater than 64K bytes.

Solution:	*	Reduce the number of stacks by changing the value of 
the -nistack switch.
	*	Reduce the size of each stack by changing the value of the 
-istksize switch.


Fatal error LINK.1180: Invalid symbol -- "symbolname".

Cause:	A symbol has been specified for a command switch that is not 
formed properly.  386|LINK accepts symbols that follow the same rules as 
386|ASM.  

Solution:	Correct the symbol.  A symbol can contain only the following 
characters: A-Z, a-z, 0-9, _ ? $ @.  The first character of a symbol 
cannot be a number.


Fatal error LINK.1190: Mindata is greater than maxdata.

Cause:	The value specified for the -mindata switch is greater than 
the value specified for the -maxdata switch.

Solution:	*	Correct the value of the -mindata switch.
	*	Correct the value of the -maxdata switch.


Fatal error LINK.1200: Minreal is greater than maxreal.

Cause:	The value specified for the -minreal switch is greater than 
the value specified for the -maxreal switch.

Solution:	*	Correct the value of the -minreal switch.
	*	Correct the value of the -maxreal switch.


Fatal error LINK.1210: Minibuf is greater than maxibuf.

Cause:	The value specified for the -minibuf switch is greater than 
the value specified for the -maxibuf switch.

Solution:	*	Correct the value of the -minibuf switch.
	*	Correct the value of the -maxibuf switch.


Fatal error LINK.1220: Missing value to command switch.

Cause:	A command switch was specified, but the value required by 
the switch was not given.  Example: 
	386LINK hello -map

Solution:	Specify a value for the switch.


Fatal error LINK.1230: No object input files were specified to be 
linked.

Cause:	386|LINK was not given any object files to be linked.  
Example:  
	386LINK -exe myprog -map myprog

Solution:	Correctly specify one or more object input files.


Fatal error LINK.1240: Out of memory.

Cause:	386|LINK has run out of memory for its internal tables while 
linking a program.

Solution:	*	Remove terminate-and-stay resident utilities (TSRs) 
and virtual disk (VDISK) simulators to free up conventional memory below 
640K for 386|LINK.
	*	Increase the amount of conventional memory on the system to 
640K bytes.


Fatal error LINK.1250: Relocatable .EXE file cannot be generated for 
8086 or 80286 target.

Cause:	An attempt has been made to output a relocatable executable 
file when the target system is an 8086 or 80286.  A relocatable .EXE 
file can be generated only for an 80386 target.

Solution:	Switch to another output file type, such as .EXE or EXP.


Fatal error LINK.1260: Segmented relocatable .EXE file not allowed.

Cause:	A relocatable executable (".REX") file can be used only with 
the flat memory model.  This error message is generated if a 
multisegment link is being done and a relocatable executable file is 
being generated by 386|LINK.

Solution:	*	Change 386|LINK output file to an "EXP" file.
	*	Change to the flat memory model.


Fatal error LINK.1270: Unexpected EOF in file "filename".

Cause:	A consistency check made by 386|LINK has failed while 
accessing the object file or library named in the error message.

Solution:	Contact compiler or assembler vendor.


Fatal error LINK.1280: Unexpected EOF in virtual memory file.

Cause:	A consistency check made by 386|LINK has failed while 
accessing the virtual memory file.

Solution:	Contact Lahey Computer Systems, Inc.


Fatal error LINK.1290: Unknown command switch -- "switchname".

Cause:	A command switch was given to 386|LINK which 386|LINK does 
not understand.  Example:	
	386LINK hello -bad

Solution:	Correct the command switch name.


Fatal error LINK.1450: Command files nested too deeply.

Cause:	Command files can contain references to other command files, 
using the @cmdfile and @@cmdfile syntax.  This error occurs when an 
attempt is made to nest command files more than four levels deep, or if 
a command file includes itself by mistake.  Most likely, you have an 
infinite loop.

Solution:	Rearrange command files so that they do not nest more than 
four levels deep.


Fatal error LINK.1460: Invalid file name.

Cause:	A file name was given that does not follow the correct 
syntax for file specification.

Solution:	Correct the file specification.  Check the spelling of the 
file name.


Fatal error LINK.1470: Extra command line argument.

Cause:	386|LINK takes no positional command line arguments.  
However, one has been given to 386|LINK by mistake, probably because a 
minus sign was omitted before a command line switch.

Solution:	Correct the error on the command line and run 386|LINK 
again.


Fatal error LINK.1480: Environment variables nested too deeply.

Cause:	This error occurs if an attempt is made to nest environment 
variables more than four levels deep, or if the environment variable 
references itself by mistake.

Solution:	Correct the environment variables and rerun 386|LINK.



386|LINK Bad Object File Fatal Errors

386|LINK checks the format of all object and library files that it 
links.  If the linker comes across an object file that contains 
something with an invalid format, it stops processing and displays a 
fatal error message on the screen, including a message explaining the 
problem.  A bad object file error is usually caused by the assembler or 
compiler that generated the file.  

Here are some typical reasons why an assembler or compiler might 
generate a bad object file:

*	The original source program had errors.
*	The assembler or compiler has a bug.
*	The assembler or compiler does not follow the Intel/Microsoft 
OMF-86, Phar Lap Easy OMF-386, Microsoft 32-bit OMF, or Windows NT COFF 
standards.
Except where noted, follow these steps to correct for bad object file 
fatal errors:

1.	Rebuild the object file by recompiling or reassembling the source 
file.  Correct all errors and re-link.
2.	If the link still fails with an error free file, contact the 
compiler or assembler vendor to make sure that the product is compatible 
with 386|LINK as previously noted.  If it does not meet the standard, 
then it cannot be linked with 386|LINK.
3.	If the vendor does not follow the standards, contact Lahey 
Computer Systems, Inc.  We will attempt to resolve any compatibility 
problems with the vendor.


Fatal error LINK.2000: Bad object file -- Bad checksum in "filename".

Cause:	The checksum byte of a record has an incorrect value, and 
the sum of all of the bytes of a record do not add up to zero. 


Fatal error LINK.2010: Bad object file -- Bad data record offset in 
fix-up in "filename".

Cause:	The offset in a fix-up points past the end of a data record.


Fatal error LINK.2020: Bad object file -- Bad end record in "filename".

Cause:	An object file contains an end record with an illegal value.


Fatal error LINK.2030: Bad object file -- Bad explicit fix-up entry in 
"filename".

Cause:	An explicit fix-up contains an incorrect value.


Fatal error LINK.2040: Bad object file -- Bad index number in module 
"filename".

Cause:	An index number which refers to a segment, class, group, 
etc. is out of range.


Fatal error LINK.2050: Bad object file -- Bad fix-up thread in 
"filename".

Cause:	A fix-up thread references a nonexistent implicit fix-up.


Fatal error LINK.2060: Bad object file -- Bad frame fix-up type in 
"filename".

Cause:	The frame type number is not valid in a fix-up.


Fatal error LINK.2070: Bad object file -- Bad library file type in 
"filename".

Cause:	The library file to be linked is not a Microsoft library 
file or a 386|LIB library file.


Fatal error LINK.2080: Bad object file -- Data record longer than 1024 
bytes in "filename".

Cause:	A data record contains more than 1024 data bytes, which is 
illegal, since offsets in fix-up records cannot be larger than 1023.


Fatal error LINK.2090: Bad object file -- Data record offset exceeds 
segment size in "filename".

Cause:	A data record contains data bytes past the end of a segment.


Fatal error LINK.2100: Bad object file -- Fix-up record has no data 
record in "filename".

Cause:	A fix-up references a nonexistent data record.


Fatal error LINK.2110: Bad object file -- Illegal group field in 
"filename".

Cause:	A group index number is out of range.
Cause:	An attempt has been made to reference a logical name using 
an index value, and the name has not yet been defined in an LNAMES 
record.


Fatal error LINK.2120: Bad object file -- Illegal record type in 
"filename".

Cause:	The first byte of a record contains the type of the record.  
This error occurs if the type byte does not contain a valid record type 
number.


Fatal error LINK.2130: Bad object file -- Improper record length in 
"filename".

Cause:	An object record is too short to contain all the fields of 
the record, or the record contains extra bytes before the checksum byte.


Fatal error LINK.2140: Bad object file -- Incorrect fix-up record length 
in "filename".

Cause:	A fix-up record is incomplete.


Fatal error LINK.2150: Bad object file -- Logical name defined more than 
once in "filename".

Cause:	An attempt has been made to define a logical name more than 
once.


Fatal error LINK.2160: Bad object file -- Logical name used before 
defined in "filename".

Cause:	An attempt has been made to define a logical name more than 
once.


Fatal error LINK.2170: Bad object file -- Unexpected EOF in "filename".

Cause:	386|LINK read an object file and found no data.  The object 
file was not complete or did not have an end record as the last record 
of the file.


Fatal error LINK.2180: Bad object file -- Unknown file format in 
"filename".

Cause:	The object module to be linked is not an OMF-86 or Easy 
OMF-386 object module.

Solution:	This error has most likely occurred because the file to be 
linked is not an object file.


Fatal error LINK.2190: Bad object file -- Zero repeat count in iterative 
data record.

Cause:	The repeat count in an iterative data record is zero.



386|LINK Errors

If an error occurs from which the linker is able to recover, 386|LINK 
displays an error message on the screen.  The identical error message is 
written to the map file.  

This section lists all such errors that can occur in 386|LINK.  It also 
lists probable causes and possible solutions to these error conditions.  


Error LINK.3000: .EXE file is larger than 1 megabyte.

Cause:	The size of a program when linking for the 8086 has exceeded 
one megabyte in size.

Solution:	*	Make the program smaller by shrinking the size of data 
arrays or eliminating code.
	*	Investigate running the program in 80386 protected mode 
under Phar Lap's TNT DOS-Extender. In protected mode, programs are not 
limited to one megabyte in size.


Error LINK.3010: Absolute segment "segmentname" not allowed in .EXE 
file.

Cause:	An absolute segment with initialized data or code appears in 
a program, and an .EXE or EXP file is being generated by 386|LINK.  
Since an .EXE or EXP file is always relocatable, the absolute segment is 
not allowed.

Solution:	*	Remove the initialized data or code from the segment.
	*	Change the type of the segment to PUBLIC in the assembler 
SEGMENT directive.


Error LINK.3020: Attempt to put segment "segmentname" in two different 
groups.

Cause:	In different modules, a segment is defined to be a member of 
different groups.

Solution:	Change one of the group definitions so that the segment 
always appears in the same group.


Error LINK.3030: Attempt to shrink stack size.

Cause:	The value specified with the -stack switch is smaller than 
the space allocated in the program.  The size of the stack can only be 
increased, not decreased, with the -stack switch. 

Solution:	*	Increase the value specified with the -stack switch.
	*	Remove the -stack switch altogether.
	*	Decrease the amount of space allocated in the program for 
the stack.


Error LINK.3040:	Because of overlapping data records, the .EXP file 
cannot be packed.

Cause:	The method used by 386|LINK to pack an EXP file requires 
that no data records overlap in a program.  If 386|LINK finds that a 
program has overlapping data records, it refuses to pack the file and 
outputs this error.  

Solution:	Modify the module so that it does not contain the 
overlapping data records.


Error LINK.3050: Cannot create the segment "segmentname".

Cause:	386|LINK creates segments for common symbols and a stack. 
This error is generated if the name that 386|LINK assigns to one of 
these segments is already used for a public symbol or a group.


Solution:	Rename the public symbol or group so that it does not 
conflict with the name that 386|LINK needs to use for its segments.


Error LINK.3060: Data record missing for fixup in module "modulename" -- 
fixup ignored.

Cause:	A fixup record occurs before any data record.  Since a fixup 
refers to a data record, this message is an indication of a bad object 
file.


Solution:	*	Rebuild the object file by recompiling or reassembling 
the source file.  Correct all errors and re-link.
	*	If the link still fails with an error free file, contact the 
compiler or assembler vendor to make sure that the product meets the 
Intel OMF-86 standard or the Phar Lap Easy OMF-386 standard.
	*	If the vendor does not follow the standards, contact Lahey 
Computer Systems, Inc.  We will attempt to resolve any compatibility 
problems with the vendor.


Error LINK.3070: Duplicate definition of the symbol "symbolname" in 
module "modulename".

Cause:	An attempt has been made to define a symbol more than once.

Solution:	*	Remove the extra definition of the symbol.
	*	Rename one of the two symbols to a different name.


Error LINK.3080: Fixup overflow in segment "segmentname" at offset 
offset Value is value.

Cause:	This error occurs when a value being relocated is too large 
to fit in the field in which the value must be stored.  In most cases, 
this error occurs because the distance between a public symbol and the 
reference being fixed up is too large to fit in a 16-bit relocatable 
value.

Solution:	Move the symbol definition and reference closer together or 
increase the width of the field in which the fixed up value will be 
stored.


Error LINK.3090: Group "groupname" has overflowed.
Error LINK.3090: Segment "segmentname" has overflowed.

Cause:	The size of an 8086 group has exceeded 64K bytes.

Solution:	*	Make the group smaller by shrinking the size of data 
arrays or eliminating code.
	*	Move code or data to another segment.
	*	Split the group into two groups.


Error LINK.3100: Group "groupname" overlaps segment "segmentname".
Error LINK.3100: Segment "segmentname1" overlaps segment "segmentname".

Cause:	All or part of group "groupname" (or segment "segmentname1") 
is located on top of segment "segmentname".

Solution:	Relocate either group "groupname" (or segment 
"segmentname1") or segment "segmentname" so that they do not both try to 
use the same block of memory.


Error LINK.3110: Multiple entry point records in module "modulename".

Cause:	More than one module in a program has an entry point address 
specified.

Solution:	Remove from the assembler END directive the duplicate entry 
point address.


Error LINK.3120: Multiple stack segments.

Cause:	More than one segment has been defined in a program with the 
type of STACK.

Solution:	*	Remove the duplicate definition of the stack segment.
	*	Give the same name to the different stack segments.
	*	Change the type of one of the segments to PUBLIC on SEGMENT 
directive.


Error LINK.3130: Program is larger than 4 gigabytes.

Cause:	The size of a program when linking for the 80386 has 
exceeded 4 GB in size.

Solution:	Make the program smaller by shrinking the size of data 
arrays or by eliminating code.


Error LINK.3140: Segment "c_common" has overflowed.

Cause:	The segment "c_common" is created by 386|LINK to hold common 
symbols allocated by 386|LINK.  This error occurs if a program is being 
linked for the 8086 small model, and there are more than 64K bytes of 
common symbols.

Solution:	*	Shrink the size of the data.
 	*	Switch to the large 8086 model that is not limited to 64K 
bytes of data.


Error LINK.3160: Segment "segmentname" is a common segment in module 
"modulename1" but not in module "modulename2".

Cause:	A segment has been declared as a common segment in one 
module and as a public segment in another module.

Solution:	*	Make the definition of the segment consistent between 
modules.  Either make the segment always be public or always be common.
 	*	Rename one of the segments.


Error LINK.3180: Target/frame conflict in end record.
Error LINK.3180: Target/frame conflict in segment "segmentname" at 
offset offset.

Cause:	When linking for the 80386, a relocatable value is used 
whose base is different from the segment in which the value is located.  
This type of reference is valid on the 8086 but impossible for the 
80386.

Solution:	Remove the segment override from the reference in the 
assembly language statement.


Error LINK.3190: Thread fixup not allowed in start address.

Cause:	This message indicates a bad object module.

Solution:	*	Rebuild the object file by recompiling or reassembling 
the source file.  Correct all errors and re-link.
	*	If the link still fails with an error free file, contact the 
compiler or assembler vendor to make sure that the product meets the 
Intel OMF-86 standard or the Phar Lap Easy OMF-386 standard.  If it does 
not meet the standard, then it cannot be linked with 386|LINK.
	*	If the vendor does not follow the standards, contact Lahey 
Computer Systems, Inc.  We will attempt to resolve any compatibility 
problems with the vendor.


Error LINK.3200: Undefined exported symbol "symbolname".

Cause:	A symbol being exported using the -export is not defined.

Solution:	*	Correct the spelling of the symbol in the -export 
switch.
	*	Correct the spelling of the symbol in the program.
	*	Make sure that the symbol is defined as a public symbol.
	*	 Define the symbol in the program.


Error LINK.3210: Undefined real mode break symbol -- "symbolname".

Cause:	The symbol specified with the -REALBREAK switch is not 
defined.

Solution:	*	Correct the spelling of the symbol after the 
-REALBREAK switch. 
	*	Correct the spelling of the symbol in the source file in 
which it is defined.
	*	Declare the symbol as public, using the assembler PUBLIC 
directive in the source file in which the symbol is defined.


Error LINK.3220: Undefined start symbol -- "symbolname".

Cause:	The symbol specified with the -start switch is not defined.

Solution:	*	Correct the spelling of the symbol on the -start 
switch or in the program.
	*	Make sure that symbol is a public symbol.


Error LINK.3230: Undefined symbol "symbolname" in module "modulename" at 
location value.
Error LINK.3230: Undefined symbol "symbolname" at location "value".
Error LINK.3230: Undefined symbol "symbolname" in module "modulename".

Cause:	An attempt has been made to reference an external symbol 
that has never been defined as a public symbol.

Solution:	*	Define the symbol as a public symbol using the PUBLIC 
assembler directive.
 	*	Correct the spelling when it is used and when it has been 
declared as a public symbol.
	*	Remove the external reference if it is no longer needed.


Error LINK.3240: Unknown fixup type in module "modulename" in segment 
"segmentname" at offset value -- ignored.

Cause:	An object module contains a fixup that could not be decoded 
by 386|LINK.  This error is an indication of a bad object module.

Solution:	*	Rebuild the object file by recompiling or reassembling 
the source file.  Correct all errors and re-link.
	*	If the link still fails with an error free file, contact the 
compiler or assembler vendor to make sure that the product meets the 
Intel OMF-86 standard or the Phar Lap Easy OMF-386 standard.  If it does 
not meet the standard, then it cannot be linked with 386|LINK.
	*	If the vendor does not follow the standards, contact Lahey 
Computer Systems, Inc.  We will attempt to resolve any compatibility 
problems with the vendor.


Error LINK.3250: Unknown type of entry point address in module 
"modulename" -- ignored.

Cause:	An object module contains an entry point address in an end 
object record that could not be decoded by 386|LINK.  This error is an 
indication of a bad object module.

Solution:	See Error LINK.3250 above.


Fatal error LINK.3530: First module for AUTOBIND is not 
TNT DOS-Extender.

Cause:	The first .EXE file that is bound into a Phar Lap protected-
mode executable must either be the GOTNT.EXE stub loader or the bindable 
version of the TNT DOS-Extender (TNTB.EXE).  This error message 
indicates that an attempt has been made to bind in some other type of 
program in front of a protected-mode executable such as the 386|VMM 
driver.

Solution:	Make sure that you have specified the correct real-mode 
programs to be bound into a protected-mode executable, and verify that 
the programs are specified in the correct order.


Fatal error LINK.3540: Cannot AUTOBIND obsolete 386|DOS-Extender.

Cause:	An attempt has been made to bind a version earlier than 3.0 
of the file RUN386B.EXE into a protected-mode executable.

Solution:	Verify that your RUN386B.EXE is up to date.


Fatal error LINK.3550: Cannot AUTOBIND Old style .EXP or .REX file.

Cause:	An attempt has been made to bind the file RUN386B.EXE to a 
.REX file.  386|LINK doesn't support this feature.

Solution:	Relink the program as a protected-mode .EXE file instead of 
as a .REX file, or don't bind a real-mode stub to a .REX file.


Fatal error LINK.3580: Cannot AUTOBIND corrupted TNT DOS-Extender.

Cause:	The file TNTB.EXE has been corrupted on disk.

Solution:	Reinstall the TNT DOS-Extender Run-Time Kit (RTK) in order 
to replace the corrupted TNTB.EXE file with an uncorrupted copy of 
TNTB.EXE.



386|LINK Warnings

This section contains the warning messages that 386|LINK displays when 
it encounters a condition that is not optimum.  Processing continues and 
the warning message prints in the map file.

Warning LINK.4000:	Cannot process all of the debug information in 
module "modulename"

Cause:	When translating CodeView-style debugging information to 
Intel style debugging information, 386|LINK encountered a type 
definition that it could not decode.  386|LINK translates the unknown 
type definition to null and continues processing.  If the -fullwarn 
switch has been specified, 386|LINK outputs an additional message with 
the number of the type definition not decoded. 

Solution:	Contact Lahey Computer Systems, Inc or the compiler vendor.


Warning LINK.4010: Initial SS:SP, DS or ES value ignored in module 
"modulename".

Cause:	The Intel ASM86 assembler allows the SS, SP, DS and ES 
registers to be initialized with the END directive.  386|LINK does not 
support this feature.

Solution:	*	To initialize the SS:SP registers, make sure that the 
stack segment has the STACK attribute.
	*	To initialize the DS and ES registers, add instructions to 
the start-up to explicitly set these registers.


Warning LINK.4020: No stack segment.

Cause:	No stack was allocated for the program, either by declaring 
a stack segment or by allocating one with the -stack switch.

Solution:	*	This warning can be ignored if the program sets up its 
own stack at run-time.  Note, however, TNT DOS-Extender requires a stack 
for any program run under it.
	*	Allocate a stack by declaring a segment whose type is STACK.
	*	Allocate a stack using the -stack switch.


Warning LINK.4030: Overlapping data record in module "modulename" at 
offset value of segment "segmentname".

Cause:	Two data records contain data bytes that overlap in 386|LINK 
output file.

Solution:	Usually, this warning is caused by two different object 
modules initializing a common block.  To correct the problem, make sure 
that the common block is initialized only once.  The warning is also 
caused by the assembler ORG directive being misused to back up the 
program counter, in which case, new code overwrites existing code.  To 
correct the problem, fix the ORG statement that causes the problem not 
to back up the program counter.


Warning LINK.4040: Putting segment "segmentname" of module "modulename" 
into group "groupname".

Cause:  	A segment is defined to be a member of a group by one object 
module.  A second object module also contains the same segment, but the 
second module does not have the segment as a member of the group.  
386|LINK automatically puts the segment in the group no matter what.  If 
the -fullwarn switch is turned on, 386|LINK outputs this warning message 
that it is placing the segment into the group.

Solution:	*	Make sure that the segment is placed in the group in 
the module.
	*	Remove the -fullwarn switch from the link.


Warning LINK.4050: Register variable(s) ignored in module "modulename".

Cause:	The Intel object file formats for the 80386 do not support 
register variables for symbolic debugging.  If register variables appear 
in a program and 386|LINK is producing debugging information, then this 
error is output.

Solution:	*	While debugging a program, compile the program without 
register variables.
	*	If the debugger understands the Phar Lap extensions to Intel 
OMF for register variables, then specify the -regvars switch when 
linking.


Warning LINK.4060: Switch "switchname" ignored for non-EXP linker output 
file.

Cause:	The following switches are used to specify TNT DOS-Extender 
parameters:  -minreal, -maxreal, -callbufs, -minibuf, -maxibuf, 
-nistack, -istksize.  Since EXP files are the only type of file that can 
store these TNT DOS-Extender parameters, this error message is output if 
any of the above switches are specified for a 386|LINK output file which 
is not an EXP file.

Solution:	1)	Change the type of 386|LINK output file to an EXP 
file.
	2)	Remove the offending switches.


Warning LINK.4070: Library file "filename" does not exist, so it will be 
created.

Cause:	The librarian was instructed to add object modules to a 
library file that does not exist.  When this occurs, 386|LIB 
automatically creates the library and then adds the specified modules to 
it.

Solution:	Since this is a warning error, it can be ignored.  To avoid 
the warning, use the -CREATE option to create the library from the 
object modules instead.


Warning LINK.4080: Module "modulename" not found -- delete ignored.

Cause:	An attempt was made to delete a module which is not present 
in the library.

Solution:	Check the spelling of the module name against the names of 
the modules in the library.


Warning LINK.4090: Module "modulename" not found -- extract ignored.

Cause:	An attempt was made to extract a module which is not present 
in the library.

Solution:	Check the spelling of the module name against the names of 
the modules in the library.


Warning LINK.4100: Module "modulename" not found -- module was added, 
not replaced.

Cause:	An attempt was made to replace a module which is not present 
in the library.

Solution:	Since this is a warning error, it can be ignored.  
Otherwise, check the spelling of the module name against the names of 
the modules in the library.


Warning LINK.4150: Switch "switchname" not used.

Cause:	The identified class, group, or segment could not be found, 
and therefore a switch that was to be applied was not used.  The switch 
that could not be used is identified by "switchname". 
	The following switches can produce this warning:

-ALIAS	-LIMIT	-PURGE	-SELECTOR
-ALIGN	-LOCATE	-RECLASS	
-ATTRIBUTE	-OFFSET	-RENAME	
-GROUP	-ORDER	-ROMINIT

Solution:	1)	Correct the spelling of the class, group, or segment 
in the switch or in the program.
	2)	Remove the switch if it is no longer necessary, e.g., if it 
applies to a segment that no longer exists.



386|LINK Information Messages


Info LINK.5000: Virtual memory file created.

Cause:	When 386|LINK runs out of memory for its internal tables 
during a link, it begins swapping its tables to disk.  This message 
indicates that 386|LINK has begun swapping to disk.  386|LINK is slower 
to link programs when it has to swap to disk.

Solution:	Use 386LINK, not 386LINKR.


Info LINK.5010:  Error in [switch "xxx"] of environment variable "yyy".

Cause:	The purpose of this message is to indicate that the error 
occurred inside an environment variable and not on the command line.  
The message specifies the name of the switch where the error occurred 
and in what environment variable the error occurred.

Solution:	Correct the switches.


Info LINK.5020: Error in configuration string (xxx).

Cause:	This message appears when there is an error inside the 
configuration string of 386|LINK.  The message is used to indicate that 
the error occurred in the configuration string and not on the command 
line.

Solution:	Correct the configuration string.


Info 386.5030: Error in switch "xxx" on line xxx of file "yyy".

Cause:	This message appears when there is an error in a command 
file.  The message gives the line number and the name of the file where 
the error occurred.  The message also indicates which switch was 
specified incorrectly.

Solution:	Fix the command file error and run the utility again.

