Wie kann ich die ausführbare Datei ohne bestimmte CPU-Flags ausführen?

300
bbc

Ich möchte das Verhalten eines Linux ELF ausführbare Datei auf einem Prozessor testen, die nicht einige CPU - Flags wie hat aesund sse2einen Prozessor gegeben, die diese Flags hat. Was ist der einfachste Weg, das Fehlen bestimmter Flaggen nachzuahmen?

Ich gehe davon aus, dass ich im schlimmsten Fall eine virtuelle Maschine hochfahren kann, die einen realen Prozessor emuliert, der diese Flags nicht hat, aber vielleicht gibt es einen einfacheren und allgemeineren Weg. Das wäre zum Beispiel für die kontinuierliche Integration nützlich.

1
Bei der Virtualisierung können Sie normalerweise nicht die Art der CPU auswählen. Am einfachsten wäre es, Compile-Flags zu verwenden. Seth vor 6 Jahren 0
Einige Virtualisierungsplattformen wie Qemu ermöglichen dies tatsächlich. In Bezug auf die Kompilierungsflags sind sie hier außerhalb des Gültigkeitsbereichs, da der Punkt dafür sorgt, dass sich dieselbe Binärdatei auf verschiedenen Prozessoren gut verhält. bbc vor 6 Jahren 0
Interessant zu wissen. Du hast also schon eine Lösung (qemu)? Trotzdem müssen Sie berücksichtigen, dass die tatsächliche Emulation anderer Architekturen Auswirkungen auf die Leistung haben wird. Genau wie die Belichtung von Features. Was interessiert Sie eigentlich am Testen? Warum erwarten Sie, dass sich das Programm anders verhält? Seth vor 6 Jahren 0
Ich habe leider keine Lösung zur Hand. Mein Programm sollte AES-Anweisungen verwenden, falls verfügbar, und auf eine Softwareimplementierung zurückgreifen. Das entsprechende Flag ist "aes" (zum Beispiel in / proc / cpuinfo unter Linux). bbc vor 6 Jahren 0
Der [AES-Befehlssatz] (https://en.wikipedia.org/wiki/AES_instruction_set) geht auf das Jahr 2008 zurück. Die ersten CPUs, die es unterstützen, scheinen im Jahr 2010 zu sein. Wenn Sie kein qemu einrichten und keine Compile-Flags verwenden möchten, ist es am einfachsten, ein älteres System zu finden. Wenn Sie für jeden Fall separate Pfade haben, testen Sie sie einfach separat und gehen davon aus, dass Sie Works überprüfen (schließlich erkennt es, dass die Erweiterung verfügbar ist). Es kann auch möglich sein, etwas mit seccomp zu machen, aber ich bin mir wirklich nicht sicher, ob Arbeiten / tatsächlich möglich sind, aber es lohnt sich vielleicht, wenn man sich mehr mit syscall fokussiert Seth vor 6 Jahren 0

0 Antworten auf die Frage