LINK Warning Messages

Number LINK Warning Message

L4000 segment displacement included near offset in segment segment
  This is the warning generated by the /W option.
L4001 frame-relative fixup, frame ignored near offset in segment segment
  A reference was made relative to a segment or group that is different from the target segment of the reference.
  For example, if _id1 is defined in segment _TEXT, the instruction call DGROUP:_id1 produces this warning. The frame DGROUP is ignored, so LINK treats the call as if it were call _TEXT:_id1.
L4002 frame-relative absolute fixup near offset in segment segment
  A reference was made relative to a segment or group that was different from the target segment of the reference, and both segments are absolute (defined with AT).
  LINK assumed that the executable file will be run only under DOS.
L4004 possible fixup overflow at offset in segment segment
  A near call or jump was made to another segment that was not a member of the same group as the segment from which the call or jump was made.
  This can cause an incorrect real-mode address calculation when the distance between the paragraph address (frame number) of the segment group and the target segment is greater than 64K, even though the distance between the segment where the call or jump was actually made and the target segment is less than 64K.
L4010 invalid alignment specification
  The number specified in the /ALIGN option must be a power of 2 in the range 2–32,768.
L4011 /PACKC value exceeding 64K–36 unreliable
  The packing limit specified with the /PACKC option was in the range 65,501–65,536 bytes. Code segments with a size in this range are unreliable on some versions of the 80286 processor.
L4012 /HIGH disables /EXEPACK
  The /HIGH and /EXEPACK options cannot be used at the same time.
L4013 option : option ignored for segmented executable file
  The given option is not allowed for segmented executable programs.
L4014 option : option ignored for DOS executable file
  The given option is not allowed for DOS programs.
L4015 /CO disables /DSALLOC
  The /CO and /DSALLOC options cannot be used at the same time.
L4016 /CO disables /EXEPACK
  The /CO and /EXEPACK options cannot be used at the same time.
L4017 option : unrecognized option name; option ignored
  The given option was not a valid LINK option. LINK ignored the option specification.
  One of the following may be a cause:

An obsolete option was specified to the current version of LINK. For example, the /INCR option is obsolete in LINK version 5.30. The current options are described in the manual and in online Help. To see a list of options, run LINK with the /? option.

An old version of LINK was used. Check your path. To see the version number of LINK, run LINK with the /? option.

The name was incorrectly specified. For example, the option specification /NODEFAULTLIBSEARCH is an invalid abbreviation of the /NODEFAULTLIBRARYSEARCH option. Option names can be shortened by removing letters only from the end of the name.

L4018 missing or unrecognized application type; option option ignored
  The /PM option accepts only the keywords PM, VIO, and NOVIO.
L4020 segment : code-segment size exceeds 64K–36
  Code segments that are 65,501 through 65,536 bytes in length may be unreliable on some versions of the 80286 processor.
L4021 no stack segment
  The program did not contain a stack segment defined with the STACK combine type.
  Normally, every program should have a stack segment with the combine type specified as STACK. You can ignore this message if you have a specific reason for not defining a stack or for defining one without the STACK combine type. Linking with versions of LINK earlier than version 2.40 might cause this message since these linkers search libraries only once.
L4022 group1, group2 : groups overlap
  The given groups overlap. Since a group is assigned to a physical segment, groups cannot overlap in segmented executable files.
  Reorganize segments and group definitions so the groups do not overlap. Refer to the map file.
L4023 entry(internalname) : export internal name conflict
  The internal name of the given exported function or data item conflicted with the internal name of a previous import definition or export definition.
L4024 name : multiple definitions for export name
  The given name was exported more than once, an action that is not allowed.
L4025 modulename.entry(internalname) : import internal name conflict
  The internal name of the given imported function or data item conflicted with the internal name of a previous export or import. (The given entry is either a name or an ordinal number.)
L4026 modulename.entry(internalname) : self-imported
  The given function or data item was imported from the module being linked. This error can occur if a module tries to import a function or data item from itself or from another source (such as a DLL) that has the same name.
L4027 name : multiple definitions for import internal name
  The given internal name was imported more than once. Previous import definitions are ignored.
L4028 segment : segment already defined
  The given segment was defined more than once in a SEGMENTS statement of the module-definition (.DEF) file.
L4029 segment : DGROUP segment converted to type DATA
  The given logical segment in the group DGROUP was defined as a code segment.
  DGROUP cannot contain code segments because LINK always considers DGROUP to be a data segment. The name DGROUP is predefined as the auto-matic (or default) data segment.
  LINK converted the named segment to type DATA.
L4030 segment : segment attributes changed to conform with
automatic data segment
  The given logical segment in the group DGROUP was given sharing attributes (SHARED/NONSHARED) that differed from the automatic data attributes as declared by the DATA instance specification (SINGLE/MULTIPLE). The attributes are converted to conform to those of DGROUP.
  The name DGROUP is predefined as the automatic (or default) data segment. DGROUP cannot contain code segments because LINK always considers DGROUP to be a data segment.
L4031 segment : segment declared in more than one group
  A segment was declared to be a member of two different groups.
L4032 segment : code-group size exceeds 64K–36
  The given code group has a size in the range 65,501–65,536 bytes, a size that is unreliable on some versions of the 80286 processor.
L4033 first segment in mixed group group is a USE32 segment
  A 16-bit segment must be first in a group created with both USE16 and USE32 segments.
  LINK continued to build the executable file, but the resulting file may not run correctly.
L4034 more than 1024 overlay segments; extra put in root
  The limit on the number of segments that can go into overlays is 1024. Segments starting with the 1025th segment are assigned to the permanently resident portion of the program (the root).
L4036 no automatic data segment
  The application did not define a group named DGROUP.
  DGROUP has special meaning to LINK, which uses it to identify the automatic (or default) data segment used by the operating system. Most segmented execut-able applications require DGROUP.
  This warning will not be issued if DATA NONE is declared or if the executable file is a dynamic-link library.
L4037 group : both USE16 and USE32 segments in group; assuming USE32
  The given group was allocated contributions from both 16-bit segments and 32-bit segments.
L4038 program has no starting address
  The segmented executable application had no starting address. A missing starting address will usually cause the program to fail.
  High-level languages automatically specify a starting address. In a C-language program, this is provided by the main function.
  If you are writing an assembly-language program, specify a starting address with the END statement.
  DOS programs and dynamic-link libraries should never receive this message, regardless of whether they have starting addresses.
L4040 stack size ignored for /TINY
  LINK ignores stack size if the /TINY option is used and if the stack segment has been defined in front of the code segment.
L4042 cannot open old version
  The file specified in the OLD statement in the module-definition (.DEF) file could not be opened.
L4043 old version not segmented executable format
  The file specified in the OLD statement in the module-definition (.DEF) file was not a valid segmented executable file.
L4045 name of output file is filename
  LINK used the given filename for the output file.
  If the output filename is specified without an extension, LINK assumes the default extension .EXE. Creating a Quick library, DLL, or .COM file forces LINK to use a different extension. In the following cases, if either .EXE or no extension is specified, LINK assumes the appropriate extension:

/TINY option .COM  
/Q option .QLB  
LIBRARY statement .DLL  

@ERP = This warning also occurs if the name specified in the LIBRARYstatement in the module-definition (.DEF) file does not match the name specified in the exefilefield.

L4050 file not suitable for /EXEPACK; relink without
  The size of the packed load image plus packing overhead was larger than it would be for the unpacked load image. There is no advantage to packing this program.
  Remove /EXEPACK from the LINK command line. In PWB, turn off the Pack EXE File check box in the Additional Debug/Release Options dialog box under Link Options.
L4051 filename : cannot find library
  LINK could not find the given library file.
  One of the following may be a cause:

The specified file does not exist. Enter the name or full path specification of a library file.

The LIB environment variable is not set correctly. Check for incorrect directory specifications, mistyping, or a space, semicolon, or hidden character at the end of the line.

An earlier version of LINK is being run. Check the path environment variable and delete or rename earlier linkers.

L4053 VM.TMP : illegal filename; ignored
  VM.TMP appeared as an object-file name.
  Rename the file and rerun LINK.
L4054 filename : cannot find file
  LINK could not find the specified file.
  Enter a new filename, a new path specification, or both.
L4055 start address not equal to 0x100 for /TINY
  The starting address for a .COM file must be 100 hexadecimal.
  Put the following line of assembly source code in front of the code segment:

ORG 100h

L4056 /EXEPACK valid only for OS/2 and real-mode DOS; ignored
  The /EXEPACK option is incompatible with Windows programs.
L4057 stack specified for DLL; ignored
  A stack was specified for a dynamic-link library (DLL). Either the /STACK option was used on the command line or the STACKSIZE statement was used in the module-definition (.DEF) file. LINK ignored the specification and did not create a stack.
  A DLL does not have a stack.
L4058 ignoring alias for already defined symbol symbol
  The specified symbol was redefined in the program. However, it is an identifier from a C run-time library that has an alias to a new name in OLDNAMES.LIB. LINK ignored the alias for the symbol.
  This warning appears only when the /INFO option is specified.
L4067 changing default resolution for weak external symbol
from oldresolution to newresolution
  LINK found conflicting default resolutions for a weak external. It ignored the first resolution and used the second.
L4068 ignoring stack size greater than 64K
  A stack was defined with an invalid size. LINK assumed 64K.
L4069 filename truncated to filename
  A filename specification exceeded the length allowed. LINK assumed the given filename.
L4070 too many public symbols for sorting
  LINK uses the stack and all available memory in the near heap to sort public symbols for the /MAP option. This warning is issued if the number of public symbols exceeds the space available for them. In addition, the symbols are not sorted in the map file but are listed in an arbitrary order.
L4076 no segments defined
  There was no code in the program.
  This warning can occur if the file contains only resources.
L4077 symbol function not defined; ordered allocation ignored
  The given function was specified in a FUNCTIONS statement in the module-definition (.DEF) file, but the function was not defined.
L4079 symbol function already defined for ordered allocation; duplicate ignored
  The given function was specified twice in FUNCTIONS statements in the module-definition (.DEF) file.
L4080 changing substitute name for alias symbol
from oldalias to newalias
  LINK found conflicting alias names. It ignored the first alias and used the second.
L4081 cannot execute program argumentsmessage
  LINK could not run the given program (with the given arguments) for the given reason.
L4082 changing overlay assigment for segment segment from oldnumber to newnumber
  The given segment was assigned to two overlays, represented by oldnumber and newnumber. LINK assumed the newnumber overlay.
  Probably a command-line overlay specification with parentheses conflicted with an overlay specification in the module-definition (.DEF) file.
L4083 changing overlay assigment for symbol symbol from oldnumber to newnumber
  The given symbol was assigned to two overlays, represented by oldnumber and newnumber. LINK assumed the newnumber overlay.
  Probably a command-line overlay specification with parentheses conflicted with an overlay specification in the module-definition (.DEF) file.
L4084 option : argument missing; option ignored
  The given option requires an argument, but none was specified.
  For example, the following option specification causes this error:

/ONERROR

L4085 option : argument invalid; assuming argument
  The given option was specified with a numeric argument that was out of range for the option. LINK assumed the given argument.
  For example, the option specification /DYNAMIC:11000 causes the following error:

/DYNAMIC:11000 : argument invalid; assuming 10922