ID Number: Q78627
3.60 3.61 3.64 3.65 3.69 5.10 5.13 | 5.01 5.10 5.13
MS-DOS | OS/2
buglist3.65 buglist3.69 buglist5.01 buglist5.10 buglist5.13
Summary:
PROBLEM ID: LNK9111001
SYMPTOMS
When a label corresponds to an absolute address and is defined in a
USE32 segment, LINK generates the wrong offset for this label.
Incorrect data will be accessed through this label.
STATUS
Microsoft has confirmed this to be a problem in LINK versions 3.60,
3.61, 3.64, 3.65, 3.69, 5.01, 5.1, and 5.13. We are researching this
problem and will post new information here as it becomes available.
More Information:
A label can represent an absolute address of XXXX:YYYY by placing it
in a segment with combine type "at XXXX" and after an org directive
"org YYYY".
The following sample code demonstrates the problem. The first listing
was generated by MASM. Note that the offset of Vector is 20h, as it
should be. The second listing is from CodeView. Note that the offset
of Vector is 28h, which is incorrect.
Sample Code
-----------
; Assemble options needed: none
.model small,c
.386
0000 Zero segment use32 at 0
org 32
0020 Vector label dword
0020 Zero ends
0000 .code
assume es:Zero
0000 start:
0000 67& 66| 26: A3 mov [Vector], eax
00000020 R
end start
; CodeView listing
1: .model small,c
2: .386
3:
4: Zero segment use32 at 0
5: org 32
6:
7: Vector label dword
8:
9: Zero ends
10:
11: .code
12:
13: assume es:Zero
14:
15: start:
16:
17: mov [Vector], eax
6A8F:0000 676626A32800000MOV DWord Ptr ES:[00000028],EAX
18:
19: end start
Additional reference words: 5.10