Fix-Up Overflow Caused By Extrn Statements and .Fardata (30576)



The information in this article applies to:

  • Microsoft Macro Assembler (MASM) 5.1

This article was previously published under Q30576

SUMMARY

The following assembler modules produce a fix-up overflow error message during linking.

When linking these two modules together, the .fardata-simplified segment directive will cause a link-error fix-up overflow.

Every module with a .fardata segment is defining a different .fardata segment. The linker will keep the segments separate. Therefore, declaring the fvar variable external in module 2 generates the problem. The extrn far data item, fvar, should be declared outside the .fardata segment.

MORE INFORMATION

Module 1
.model large
.stack
.data
public gvar
.fardata
public fvar
fvar  db  55h

.code
extrn t2:proc
start: mov ax,@DATA
       mov ds,ax
       mov ax,@FARDATA
       mov es,ax

       call dword ptr t2
end start
				
Module 2
.model large
.data
extrn gvar:byte
.fardata
extrn fvar:byte

.code
    public t2
t2  proc   far
    mov bl, es:fvar
    ret FAR
t2  endp
    end
				

Modification Type:MajorLast Reviewed:10/29/2003
Keywords:kbfix KB30576