The file IsaFactory contains: ElfEHeader header = elfFile.getEHeader(); switch (header.machine) { case ElfEMachine.EM_386: { if (frysk.core.Build.BUILD_ARCH.equals("i686")) return LinuxIa32.isaSingleton (); else return LinuxIa32On64.isaSingleton(); } case ElfEMachine.EM_PPC: { // Assume we do not build 32-bit frysk on ppc64. if (frysk.core.Build.BUILD_ARCH.equals("powerpc64")) return LinuxPPC32On64.isaSingleton (); else return LinuxPPC.isaSingleton (); } case ElfEMachine.EM_PPC64: return LinuxPPC64.isaSingleton (); case ElfEMachine.EM_X86_64: return LinuxX8664.isaSingleton (); default: throw new TaskException("Unknown machine type " + header.machine); } instead the IsaFactory (called ElfIsa????) should contain a hash table mapping Elf.MACHINE/Elf.ENDIAN/Elf.WORDSIZE <-> a corresponding ISA object and then use that. That way, given an ISA, the corresponding Elf info can be found - see fcore; and given the Elf info the corresponding ISA can be found - see the existing code.
Fixed with revision 1.11 of IsaFactory.java and other changes.