Fix-Up Overflow Caused By Extrn Statements and .Fardata

ID Number: Q30576

5.10

MS-DOS

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