Как запустить исполняемый файл без определенных флагов процессора?

248
bbc

Я хотел бы, чтобы проверить поведение исполняемого файла Linux ELF на процессоре, который не имеет некоторые флаги процессора, такие как aesи sse2данные процессор, который имеет эти флаги. Какой самый простой способ подражать отсутствию определенных флагов?

Я предполагаю, что в худшем случае я могу раскрутить виртуальную машину, эмулирующую процессор реального мира, у которого нет этих флагов, но, возможно, есть более простой и более общий способ. Это было бы полезно, например, для непрерывной интеграции.

1
При виртуализации вы обычно не можете выбрать тип процессора. Проще всего было бы использовать флаги компиляции. Seth 6 лет назад 0
На самом деле, некоторые платформы виртуализации, такие как qemu, позволяют вам это делать. Что касается флагов компиляции, они здесь выходят за рамки, поскольку дело в том, чтобы убедиться, что один и тот же двоичный файл хорошо работает на разных процессорах. bbc 6 лет назад 0
Интересно знать. Таким образом, у вас уже есть решение (QEMU)? Но даже при этом вы должны будете принять во внимание, что фактическая эмуляция других архитектур будет влиять на производительность. Так же, как раскрытие возможностей. Что вы на самом деле заинтересованы в тестировании? Почему вы ожидаете, что программа будет вести себя по-другому? Seth 6 лет назад 0
У меня нет решения под рукой, к сожалению. Моя программа должна использовать инструкции AES, если таковые имеются, а в противном случае использовать программную реализацию. Соответствующим флагом является `aes` (например, в / proc / cpuinfo в Linux). bbc 6 лет назад 0
[Набор инструкций AES] (https://en.wikipedia.org/wiki/AES_instruction_set) восходит к 2008 году с первыми процессорами, поддерживающими его в 2010 году. Если вы не хотите настраивать qemu и не хотите использовать флаги компиляции, проще всего найти более старую систему. Если у вас есть отдельные пути для каждого случая, просто протестируйте их отдельно и предположите, что вы проверяете работает (в конце концов, это работает, чтобы обнаружить, что расширение доступно). Также возможно сделать что-то с seccomp, но я действительно не уверен, что это работает / действительно будет возможно, но это может стоить взглянуть, хотя больше внимания уделено системному вызову. Seth 6 лет назад 0

0 ответов на вопрос

Похожие вопросы