FIX: Avoid externdef or proto when Initializing DataLast reviewed: September 16, 1997Article ID: Q75244 |
6.00 | 6.00
MS-DOS | OS/2
kbtool kbfixlist kbbuglist
The information in this article applies to:
SYMPTOMSWhen 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.
CAUSEThe 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 "externdef" and "proto far" do not cause the assembler to generate the correct EXTDEF (EXTernal DEFinition) record. As a result, the linker doesn't resolve the addresses correctly.
STATUSMicrosoft has confirmed this to be a problem in MASM version 6.0. This problem was corrected in MASM version 6.0a.
MORE INFORMATIONThe 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 farDATA segment word public "DATA"
ST_ST <FN_1A, \ FN_2A, \ ; This doesn't work. FN_3A, \ ; This doesn't work either. FN_4A>DATA ends _TEXT segment word public 'CODE'
FN_4A proc far ret FN_4A endp _TEXT ends END |
Additional reference words: 6.00 buglist6.00 fixlist6.00a
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |