Martial Demolins
:
mais que les fichiers qui auront ce flag, non?
Mais a priori, à peu près tous les fichiers contiendront ce flag à un endroit où un autre.
Ce que je peux faire, c'est faire encore un switch pour activer/désactiver cela. Mais je suis déjà à peu près à court de switches pour A68k.

(Ben oui, une lettre, c'est limitant...)
MISE À JOUR: J'ai implémenté le flag Unoptimizable dans A68k maintenant. Mais les fichiers objet ne sont pas compatibles avec les vieux linkers.

PpHd, si tu veux pouvoir les lire dans MakePrgm, il faut virer le MSBit des offsets source des relogements (AND avec 0x7fffffff).
Voilà le patch pour
MakePrgm:
--- object.cc_ Tue Dec 31 23:11:36 1996
+++ object.cc Tue Sep 21 04:11:22 2004
@@ -94,7 +94,7 @@
reloc[section].ofs=new int[count];
// Read in the relocation info
for (int i=0;i<count;i++)
- reloc[section].ofs[i]=ReadDWord(fp);
+ reloc[section].ofs[i]=ReadDWord(fp)&0x7fffffffl;
}
else
{
@@ -233,7 +233,7 @@
{
ROM.ref[ROM.count].type=LibRefDWord;
ROM.ref[ROM.count].func=func;
- ROM.ref[ROM.count++].ofs=ReadDWord(fp);
+ ROM.ref[ROM.count++].ofs=ReadDWord(fp)&0x7fffffffl;
}
}
else if (!strncmp(sym,"_RAM_CALL_",10))
@@ -245,7 +245,7 @@
{
RAM.ref[RAM.count].type=LibRefDWord;
RAM.ref[RAM.count].func=func;
- RAM.ref[RAM.count++].ofs=ReadDWord(fp);
+ RAM.ref[RAM.count++].ofs=ReadDWord(fp)&0x7fffffffl;
}
}
else if (!strncmp(sym,"_extraramaddr@",14))
@@ -258,7 +258,7 @@
{
RAM.ref[RAM.count].type=LibRefDWord|LibRefExtra;
RAM.ref[RAM.count].func=func;
- RAM.ref[RAM.count++].ofs=ReadDWord(fp);
+ RAM.ref[RAM.count++].ofs=ReadDWord(fp)&0x7fffffffl;
}
}
else if (strlen(sym)>=5 && sym[strlen(sym)-5]=='@') // Library reference
@@ -277,14 +277,14 @@
{
lib[libNum].ref[lib[libNum].count].type=LibRefDWord;
lib[libNum].ref[lib[libNum].count].func=func;
- lib[libNum].ref[lib[libNum].count++].ofs=ReadDWord(fp);
+ lib[libNum].ref[lib[libNum].count++].ofs=ReadDWord(fp)&0x7fffffffl;
}
}
else // Unknow Imported labels
{
printf("WARNING !!! WARNING !!! TRY TO IMPORT AN UNKNOW LABEL : %s\n", sym);
strncpy(Symbol[SymCount].name, sym, 128);
- Symbol[SymCount].ofs =ReadDWord(fp);
+ Symbol[SymCount].ofs =ReadDWord(fp)&0x7fffffffl;
SymCount++;
}
}
@@ -312,7 +312,7 @@
{
RAM.ref[RAM.count].type=LibRefWord;
RAM.ref[RAM.count].func=func;
- RAM.ref[RAM.count++].ofs=ReadDWord(fp);
+ RAM.ref[RAM.count++].ofs=ReadDWord(fp)&0x7fffffffl;
}
}
else if (!strncmp(sym,"_extraramaddr@",14))
@@ -330,7 +330,7 @@
{
RAM.ref[RAM.count].type=LibRefWord|LibRefExtra;
RAM.ref[RAM.count].func=func;
- RAM.ref[RAM.count++].ofs=ReadDWord(fp);
+ RAM.ref[RAM.count++].ofs=ReadDWord(fp)&0x7fffffffl;
}
}
else if (strlen(sym)>=5 && sym[strlen(sym)-5] == '@')// Library or linker-defined reference