KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

Q87790: DOCERR: Incorrectly States /PACKC Is Off by Default

Article: Q87790
Product(s): Microsoft Programming Utilities
Version(s): MS-DOS:5.1,5.11,5.13,5.15,5.2; OS/2:5.1,5.11,5.13,5.15
Operating System(s): 
Keyword(s): kb16bitonly
Last Modified: 29-OCT-1999

-------------------------------------------------------------------------------
The information in this article applies to:

- Microsoft LINK for MS-DOS, versions 5.1, 5.11, 5.13, 5.15, 5.2 
- Microsoft LINK for OS/2, versions 5.1, 5.11, 5.13, 5.15 
-------------------------------------------------------------------------------

SUMMARY
=======

According to the printed and online documentation for versions of Microsoft LINK
earlier than version 5.3, the default setting for the /PACKC[ODE] linker option
switch is off. This statement is incorrect.

The documentation for LINK version 5.3 includes the following correct statement:

  Code-segment packing is on by default for segmented executable files and for
  DOS programs created with overlays or with the /TINY option.

The /NOPACKC[ODE] switch turns code-segment packing off.

MORE INFORMATION
================

To see how code packing changes the executable file, examine the map file that
LINK creates. In the two partial map files below, each logical segment has a
distinct physical segment address when the file is linked with /NOPACKCODE but
the logical segments share a physical segment when /PACKCODE is on (the default
behavior).

  Start      Length      Name
  0001:0000  0114CH      _TEXT
  0002:0000  00972H      MOD_TEXT      //  code packing off /NOPACKCODE
  0003:0000  0137DH      MOD2_TEXT
  0004:0000  0021EH      MOD3_TEXT

  Start      Length      Name
  0001:0000  00934H      _TEXT
  0001:0934  01354H      MOD_TEXT      // code packing on   (default)
  0001:1C88  00ADAH      MOD2_TEXT
  0001:2762  014ABH      MOD3_TEXT

The /PACKCODE switch is documented incorrectly in the following four locations:

- Microsoft C "Reference" manual for version 6.0, page 31

- Microsoft FORTRAN "Environment and Tools" manual for version 5.1, version 379

- Microsoft Macro Assembler (MASM) "Programmer's Guide" manual for version 6.0,
  page 354

- Microsoft QuickC for Windows (QC/Win) "Toolkit" manual for version 1.0, page
  219

Additional query words: 5.10 5.11 5.13 5.15 5.20

======================================================================
Keywords          : kb16bitonly 
Technology        : kbAudDeveloper kbZNotKeyword3 kbLINKSearch kbLINK510DOS kbLINK511DOS kbLINK513DOS kbLINK515DOS kbLINK520DOS kbLINK510OS2 kbLINK511OS2 kbLINK513OS2 kbLINK515OS2
Version           : MS-DOS:5.1,5.11,5.13,5.15,5.2; OS/2:5.1,5.11,5.13,5.15

=============================================================================

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation 1986-2002.