Microsoft KB Archive/11172

Table of Limitations ID Number: Q11172

2.40 3.04 MS-DOS

Summary: The following is a reference table of limitations for the various versions of LINK (following the table are some footnotes):

LINKER LIMITATIONS --

=
=============================================================== | | | | | | | | | | | MAXIMUM | | | | | MAXIMUM | | NUMBER | | | | | NUMBER OF | MAXIMUM | SYMBOLS | MAXIMUM | MAXIMUM | LINKER | SYMBOL | LOADTIME | NUMBER | PER | NUMBER | NUMBER | VERSION | TABLE | RELOCATIONS | PUBLICS | MODULE | GROUPS | OVERLAYS | | | | (*) | | (**) | | ===========|========|=============|=========|=========|=========|==========| | | | | | | | 2.40 | 64K | 12,000 | 1536 | 511 | 10 | 63 | —— | | | | | | | PAS/FOR 3.2| | | | | | | ———–|——–|————-|———|———|———|———-| 2.41 | | | | | | | —— | 64K | 12,000 | 1536 | 511 | 10 | 63 | PAS/FOR 3.2| | | | | | | ———–|——–|————-|———|———|———|———-| 2.44 | | | | | | | —— | 64K | 12,000 | 1536 | 511 | 10 | 63 | MASM 1.27 | | | | | | | ———–|——–|————-|———|———|———|———-| | | | | | | | 2.45 | 64K | 12,000 | 1536 | 511 | 10 | 63 | | | | | | | | ———–|——–|————-|———|———|———|———-| | | | | | | | 2.48 | 256K | 12,000 | 1536 | 511 | 10 | 63 | | | | | | | | ———–|——–|————-|———|———|———|———-| 3.00 | | | | | | | —— | 256K | 16,384 | 7700- | 1,023 | 10 | 63 | MASM 3.00 | | | 8700 | | | | | | | | | | | ———–|——–|————-|———|———|———|———-| 3.01 | | | | | | | —— | 256K | 32,768 | 7700- | 1,023 | 19/20 | 63 | PASCAL 3.3 | | /65,536 | 8700 | | | | C 3.0 | | | | | | | ———–|——–|————-|———|———|———|———-| 3.02 | | | | | | | —— | 256K | 32,768 | 7700- | 1,023 | 19/20 | 63 | FORTRAN 3.3| | /65,536 | 8700 | | | | | | | | | | | ———–|——–|————-|———|———|———|———-| | | | | | | | 3.03 | 256K | 32,768 | 7700- | 1,023 | 19/20 | 63 | | | /65,536 | 8700 | | | | | | | | | | | ———–|——–|————-|———|———|———|———-| | | | | | | | 3.04 | 256K | 32,768 | 7700- | 1,023 | 20/21 | 63 | | | /65,536 | 8700 | | | | | | | | | | | ===========|========|=============|=========|=========|=========|==========|

=
========================================================= | MAXIMUM | MAXIMUM | MAXIMUM NO.| MAXIMUM NO.| | LINKER | NUMBER | NUMBER | GROUPDEFS | SEGMENTS | NOTES | VERSION | SEGMENTS | LIBRARIES | PER MODULE | PER MODULE | | | | | | | | ===========|==========|===========|============|============|========| | | | | | | 2.40 | 244 | 8 | 10 | 256 | | —— | | | | | | PAS/FOR 3.2| | | | | | ———–|———-|———–|————|————|——–| 2.41 | | | | | | —— | 244 | 8 | 10 | 256 | 1 | PAS/FOR 3.2| | | | | | ———–|———-|———–|————|————|——–| 2.44 | | | | | | —— | 1,000 | 8 | 10 | 254 | | MASM 1.27 | | | | | | ———–|———-|———–|————|————|——–| | | | | | | 2.45 | ? | 8 | 10 | 254 | 1 | | | | | | | ———–|———-|———–|————|————|——–| | | | | | | 2.48 | 128 DEF. | 8 | 10 | 254 | | | 1,024 | | | | | ———–|———-|———–|————|————|——–| 3.00 | | | | | | —— | 128 DEF. | 16 | 20 | 254 | 2,3,4 | MASM 3.00 | 1,024 | | | | | | | | | | | ———–|———-|———–|————|————|——–| 3.01 | | | | | | —— | 128 DEF. | 16 | 20 | 255 | 2,3,4,5| PASCAL 3.3 | 1,024 | | | | | C 3.0 | | | | | | ———–|———-|———–|————|————|——–| 3.02 | | | | | | —— | 128 DEF. | 16 | 20 | 255 | 2,3,4,5| FORTRAN 3.3| 1,024 | | | | | | | | | | | ———–|———-|———–|————|————|——–| | | | | | | 3.03 | 128 DEF. | 16 | 20 | 255 | 2,3,4,5| | 1,024 | | | | | ———–|———-|———–|————|————|——–| 3.04 | | | | | | | 128 DEF. | 16 | 20 | 255 | 2,3,4 | | 1,024 | | | | 5,6 | ===========|==========|===========|============|============|========|

The numbers given for maximum number of publics are guidelines only, and the actual limits will be somewhat more or less for any given program. For Versions 3.01 and later there is a low and a high limit for the number of groups. The linker always defines an entry for “DGROUP”. Therefore, if your program does not define this, it effectively has the lower limit.


 * 1) Versions 2.41 and 2.45 of the linkers include many problems. They are supposed to run under DOS Version 1.x. However, do not use them with DOS Version 2.0 or later.
 * 2) /OVERLAYINTERRUPT allows you to select different interrupt numbers (255 possible) for passing control to interrupts.
 * 3) /STACK can be used to reduce the stack size or to increase up to 64K (do not use this with Microsoft FORTRAN/Pascal).
 * 4) With MS-DOS, /SEGMENTS is used to adjust total number of segments in .EXE from 0 TO 1024. DEFAULT is 128. With PC-DOS, /X is used to adjust total number of segments in .EXE from 0 to 1024. Default is 256.
 * 5) The maximum number of load time relocations is 512K if you are using EXEPACK, otherwise the maximum number is 32K.
 * 6) The maximum number is 21 if one of the load time relocations is called “DGROUP”.
 * 7) The maximum stack size for all versions is one segment (65536 bytes).