Microsoft KB Archive/75244

= FIX: Avoid externdef or proto when Initializing Data =

Article ID: 75244

Article Last Modified on 10/29/2003

-

APPLIES TO


 * Microsoft Macro Assembler 6.0 Standard Edition

-



This article was previously published under Q75244



SYMPTOMS
When defining and initializing a data structure that contains an address defined with externdef or proto, the linker does not resolve the address correctly in the Microsoft Macro Assembler (MASM) version 6.0.



CAUSE
The example code below illustrates this problem. In the example, a function table is initialized to the address of four separate functions. The two functions defined with &quot;externdef&quot; and &quot;proto far&quot; do not cause the assembler to generate the correct EXTDEF (EXTernal DEFinition) record. As a result, the linker doesn't resolve the addresses correctly.



STATUS
Microsoft has confirmed this to be a problem in MASM version 6.0. This problem was corrected in MASM version 6.0a.



MORE INFORMATION
The following sample code can be used to demonstrate the problem.

Sample Code
; Assemble options needed: none

.MODEL large

FN   typedef  proto far PFN  typedef  far  ptr FN

ST_ST struct  1b func1   PFN    ? func2   PFN    ? func3   PFN    ? func4   PFN    ? ST_ST  ends

extern        FN_1A:FN externdef     FN_2A:FN FN_3A  proto far

DATA segment word public &quot;DATA&quot;

ST_ST   

DATA ends

_TEXT segment word public 'CODE'

FN_4A  proc    far ret FN_4A  endp

_TEXT  ends END

Additional query words: 6.00 buglist6.00 fixlist6.00a

Keywords: kbfix KB75244

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.