I don't really know why, but the file was changed.

This commit is contained in:
ceriel 1986-10-20 09:35:51 +00:00
parent e0926981a4
commit 8ffde3c86a

View file

@ -158,7 +158,19 @@ addrelo(relo, names, sects, valu_out)
register ushort index = NLocals; register ushort index = NLocals;
register long valu = *valu_out; register long valu = *valu_out;
if (ISUNDEFINED(local) || ISCOMMON(local)) { if ((local->on_type & S_SCT)) {
register int sectindex = (local->on_type & S_TYP) - S_MIN;
if (refers_zero(valu, relo, sects[sectindex].os_flen)) {
valu -= sects[sectindex].os_flen;
valu += outsect[sectindex].os_flen;
valu += relorig[sectindex].org_zero;
} else {
valu += relorig[sectindex].org_flen;
}
valu += outsect[sectindex].os_base;
index += NGlobals + sectindex;
} else {
register struct outname *name; register struct outname *name;
extern int hash(); extern int hash();
extern struct outname *searchname(); extern struct outname *searchname();
@ -174,20 +186,6 @@ addrelo(relo, names, sects, valu_out)
valu += name->on_valu; valu += name->on_valu;
index += NGlobals + (name->on_type & S_TYP) - S_MIN; index += NGlobals + (name->on_type & S_TYP) - S_MIN;
} }
} else {
register int sectindex = (local->on_type & S_TYP) - S_MIN;
if (!(local->on_type & S_SCT))
fatal("bad relocation index");
if (refers_zero(valu, relo, sects[sectindex].os_flen)) {
valu -= sects[sectindex].os_flen;
valu += outsect[sectindex].os_flen;
valu += relorig[sectindex].org_zero;
} else {
valu += relorig[sectindex].org_flen;
}
valu += outsect[sectindex].os_base;
index += NGlobals + sectindex;
} }
*valu_out = valu; *valu_out = valu;
return index; return index;