Fix-Up Overflow Caused By Extrn Statements and .Fardata

ID Number: Q30576

5.10 6.00 | 6.00

MS-DOS | OS/2

Summary:

SYMPTOMS

The following error message is generated during linking:

GOO.OBJ(goo.asm) : error L2002: fixup overflow at 0003 in segment GOO_TEXT

pos: 99 Record type: 73EE

target external 'FVAR'

More Information:

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.

Sample Code:

------------

Module 1

.model large

.stack

.data

public gvar

gvar db 31h

.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