Defining "Intersegment Short Jump" (LINK Error L2002) (29918)



The information in this article applies to:

  • Microsoft QuickBASIC 4.0, when used with:
    • the operating system: MS-DOS
  • Microsoft QuickBASIC 4.0b, when used with:
    • the operating system: MS-DOS
  • Microsoft QuickBASIC 4.5, when used with:
    • the operating system: MS-DOS
  • Microsoft BASIC Compiler for MS-DOS and OS/2 6.0
  • Microsoft BASIC Compiler for MS-DOS and OS/2 6.0b

This article was previously published under Q29918

SUMMARY

The L2002 linker error message is as follows:
"fixup overflow near <number> in frame seg <segname> target seg <segname> target offset <number>."
One possible reason for this error is that an assembler program contains an intersegment short jump or intersegment short call.

LINK.EXE can also give this error if one of your compiled Basic object modules is too large. The solution is to split the module into two or more separately compiled modules. This information applies to QuickBasic Versions 4.00, 4.00b, and 4.50 for MS-DOS, and to Basic Compiler Versions 6.00 and 6.00b for MS-DOS and OS/2.

MORE INFORMATION

During the normal execution of a program, instructions residing in the current code segment are being executed in a sequential order. A program flows sequentially from one instruction to the next by incrementing the IP register as each instruction is executed.

However, it is possible to alter this normal program flow. One method is to transfer control to instructions residing in a different segment. Referred to as an intersegment jump or intersegment transfer, it is accomplished by altering both IP and CS.

If the size of the jump is less than 64K, but still involves transferring to a different segment, then this is called an intersegment short jump.

This error is usually associated with assembly language routines. It usually doesn't occur with QuickBasic programs.

Modification Type:MinorLast Reviewed:1/9/2003
Keywords:KB29918