fixed a compiler bug where the native table indexes were not exported correctly for aliases. thus pure float operators would be bound to the wrong natives
removed a debug assert --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40810
This commit is contained in:
parent
f3b3ca6b22
commit
f17a61e709
@ -739,6 +739,7 @@ SC_FUNC void ffcall(symbol *sym,const char *label,int numargs)
|
|||||||
{
|
{
|
||||||
char symname[2*sNAMEMAX+16];
|
char symname[2*sNAMEMAX+16];
|
||||||
char aliasname[sNAMEMAX+1];
|
char aliasname[sNAMEMAX+1];
|
||||||
|
int wasAlias = 0;
|
||||||
|
|
||||||
assert(sym!=NULL);
|
assert(sym!=NULL);
|
||||||
assert(sym->ident==iFUNCTN);
|
assert(sym->ident==iFUNCTN);
|
||||||
@ -747,17 +748,20 @@ SC_FUNC void ffcall(symbol *sym,const char *label,int numargs)
|
|||||||
if ((sym->usage & uNATIVE)!=0) {
|
if ((sym->usage & uNATIVE)!=0) {
|
||||||
/* reserve a SYSREQ id if called for the first time */
|
/* reserve a SYSREQ id if called for the first time */
|
||||||
assert(label==NULL);
|
assert(label==NULL);
|
||||||
|
stgwrite("\tsysreq.c ");
|
||||||
if (sc_status==statWRITE && (sym->usage & uREAD)==0 && sym->addr>=0)
|
if (sc_status==statWRITE && (sym->usage & uREAD)==0 && sym->addr>=0)
|
||||||
sym->addr=ntv_funcid++;
|
sym->addr=ntv_funcid++;
|
||||||
stgwrite("\tsysreq.c ");
|
|
||||||
/* Look for an alias */
|
/* Look for an alias */
|
||||||
if (lookup_alias(aliasname, sym->name)) {
|
if (lookup_alias(aliasname, sym->name)) {
|
||||||
symbol *asym = findglb(aliasname, sGLOBAL);
|
symbol *asym = findglb(aliasname, sGLOBAL);
|
||||||
if (asym && asym->ident==iFUNCTN && ((sym->usage & uNATIVE) != 0)) {
|
if (asym && asym->ident==iFUNCTN && ((sym->usage & uNATIVE) != 0)) {
|
||||||
sym = asym;
|
sym = asym;
|
||||||
|
if (sc_status==statWRITE && (sym->usage & uREAD)==0 && sym->addr>=0) {
|
||||||
|
sym->addr=ntv_funcid++;
|
||||||
|
markusage(sym, uREAD);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert(sym->addr != 0x1d);
|
|
||||||
outval(sym->addr,FALSE);
|
outval(sym->addr,FALSE);
|
||||||
if (sc_asmfile) {
|
if (sc_asmfile) {
|
||||||
stgwrite("\t; ");
|
stgwrite("\t; ");
|
||||||
|
Loading…
Reference in New Issue
Block a user